mei: bus: check if the device is enabled before data transfer
The bus data transfer interface was missing the check if the device is in enabled state, this may lead to stack corruption during link reset. Cc: <stable@vger.kernel.org> #4.0 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>
Cette révision appartient à :

révisé par
Greg Kroah-Hartman

Parent
850f8940a6
révision
15c13dfcad
@@ -53,6 +53,11 @@ ssize_t __mei_cl_send(struct mei_cl *cl, u8 *buf, size_t length,
|
||||
bus = cl->dev;
|
||||
|
||||
mutex_lock(&bus->device_lock);
|
||||
if (bus->dev_state != MEI_DEV_ENABLED) {
|
||||
rets = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!mei_cl_is_connected(cl)) {
|
||||
rets = -ENODEV;
|
||||
goto out;
|
||||
@@ -109,6 +114,10 @@ ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length)
|
||||
bus = cl->dev;
|
||||
|
||||
mutex_lock(&bus->device_lock);
|
||||
if (bus->dev_state != MEI_DEV_ENABLED) {
|
||||
rets = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cb = mei_cl_read_cb(cl, NULL);
|
||||
if (cb)
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur