mei: bus: cancel and disable callback after release call
A driver on the mei bus may rely on the availability of the receive callback during driver remove() call, e.g. mei_wdt. Move callbacks dismantling after the remove() call to unblock that scenario. Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1274a690f6
commit
9ecb839f16
|
@ -665,6 +665,10 @@ static int mei_cl_device_remove(struct device *dev)
|
|||
if (!cldev || !dev->driver)
|
||||
return 0;
|
||||
|
||||
cldrv = to_mei_cl_driver(dev->driver);
|
||||
if (cldrv->remove)
|
||||
ret = cldrv->remove(cldev);
|
||||
|
||||
if (cldev->rx_cb) {
|
||||
cancel_work_sync(&cldev->rx_work);
|
||||
cldev->rx_cb = NULL;
|
||||
|
@ -674,10 +678,6 @@ static int mei_cl_device_remove(struct device *dev)
|
|||
cldev->notif_cb = NULL;
|
||||
}
|
||||
|
||||
cldrv = to_mei_cl_driver(dev->driver);
|
||||
if (cldrv->remove)
|
||||
ret = cldrv->remove(cldev);
|
||||
|
||||
module_put(THIS_MODULE);
|
||||
dev->driver = NULL;
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue