From: Ian Abbott Date: Thu, 4 Apr 2013 13:58:57 +0000 (+0100) Subject: staging: comedi: put module _after_ detach X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=dcd7b8bd63cb81c5b973bf86510ca3c80bbbd162;p=openwrt%2Fstaging%2Fblogic.git staging: comedi: put module _after_ detach On failure of the call to the low-level comedi device driver's `->attach()` handler from `__comedi_device_attach()`, reverse the current ordering of the calls to `module_put()` and `comedi_device_detach()` because `__comedi_device_detach()` will call code in the module being put. Signed-off-by: Ian Abbott Reviewed-by: H Hartley Sweeten Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c index 73727a73bd34..6f232b8128c0 100644 --- a/drivers/staging/comedi/drivers.c +++ b/drivers/staging/comedi/drivers.c @@ -396,8 +396,8 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it) dev->driver = driv; ret = driv->attach(dev, it); if (ret < 0) { - module_put(dev->driver->module); __comedi_device_detach(dev); + module_put(dev->driver->module); return ret; } ret = comedi_device_postconfig(dev);