summaryrefslogtreecommitdiff
path: root/xpp/xbus-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/xbus-core.c')
-rw-r--r--xpp/xbus-core.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xpp/xbus-core.c b/xpp/xbus-core.c
index 3b9d507..5e96147 100644
--- a/xpp/xbus-core.c
+++ b/xpp/xbus-core.c
@@ -313,6 +313,10 @@ static int xbus_poll(void *data)
int xpd_num;
xbus_t *xbus = data;
+ if(!down_read_trylock(&xbus->in_use)) {
+ ERR("%s is being removed...\n", xbus->busname);
+ return -EBUSY;
+ }
spin_lock_irqsave(&xbus->lock, flags);
DBG("%s\n", xbus->busname);
@@ -398,6 +402,7 @@ static int xbus_poll(void *data)
card_detected(card_desc);
}
complete_all(&xbus->xpds_initialized);
+ up_read(&xbus->in_use);
return 0;
}