diff --git a/[refs] b/[refs] index 7ef375a3a4c2..a5435d7a6102 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4ca7da6e8234c864c8694237c26e4d574b9fd00a +refs/heads/master: a649a6754d246d5b5447f74b86ed4b947e5f5446 diff --git a/trunk/drivers/staging/comedi/comedi_fops.c b/trunk/drivers/staging/comedi/comedi_fops.c index f2bfa0efcf74..70b2034116fc 100644 --- a/trunk/drivers/staging/comedi/comedi_fops.c +++ b/trunk/drivers/staging/comedi/comedi_fops.c @@ -2256,10 +2256,20 @@ static void comedi_device_init(struct comedi_device *dev) static void comedi_device_cleanup(struct comedi_device *dev) { + struct module *driver_module = NULL; + if (dev == NULL) return; mutex_lock(&dev->mutex); + if (dev->attached) + driver_module = dev->driver->module; comedi_device_detach(dev); + while (dev->use_count > 0) { + if (driver_module) + module_put(driver_module); + module_put(THIS_MODULE); + dev->use_count--; + } mutex_unlock(&dev->mutex); mutex_destroy(&dev->mutex); }