|
@@ -521,17 +521,15 @@ int mei_cldev_enable(struct mei_cl_device *cldev)
|
|
|
|
|
|
cl = cldev->cl;
|
|
|
|
|
|
+ mutex_lock(&bus->device_lock);
|
|
|
if (cl->state == MEI_FILE_UNINITIALIZED) {
|
|
|
- mutex_lock(&bus->device_lock);
|
|
|
ret = mei_cl_link(cl);
|
|
|
- mutex_unlock(&bus->device_lock);
|
|
|
if (ret)
|
|
|
- return ret;
|
|
|
+ goto out;
|
|
|
/* update pointers */
|
|
|
cl->cldev = cldev;
|
|
|
}
|
|
|
|
|
|
- mutex_lock(&bus->device_lock);
|
|
|
if (mei_cl_is_connected(cl)) {
|
|
|
ret = 0;
|
|
|
goto out;
|
|
@@ -875,12 +873,13 @@ static void mei_cl_bus_dev_release(struct device *dev)
|
|
|
|
|
|
mei_me_cl_put(cldev->me_cl);
|
|
|
mei_dev_bus_put(cldev->bus);
|
|
|
+ mei_cl_unlink(cldev->cl);
|
|
|
kfree(cldev->cl);
|
|
|
kfree(cldev);
|
|
|
}
|
|
|
|
|
|
static const struct device_type mei_cl_device_type = {
|
|
|
- .release = mei_cl_bus_dev_release,
|
|
|
+ .release = mei_cl_bus_dev_release,
|
|
|
};
|
|
|
|
|
|
/**
|