diff options
Diffstat (limited to 'xpp/xbus-core.c')
-rw-r--r-- | xpp/xbus-core.c | 5 |
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; } |