mei: fix device reset on mei_cl_irq_read_msg allocation failure
authorTomas Winkler <tomas.winkler@intel.com>
Tue, 10 Feb 2015 08:39:36 +0000 (10:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Mar 2015 03:36:59 +0000 (19:36 -0800)
On memory allocation failure mei_cl_irq_read_msg will
return with error that will cause device reset.
Instead we should propagate error to caller and
just clean the read queues.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/bus.c
drivers/misc/mei/interrupt.c
drivers/misc/mei/main.c
drivers/misc/mei/mei_dev.h

index be767f4..025626f 100644 (file)
@@ -322,10 +322,16 @@ ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length)
                goto out;
        }
 
+       if (cb->status) {
+               rets = cb->status;
+               goto free;
+       }
+
        r_length = min_t(size_t, length, cb->buf_idx);
        memcpy(buf, cb->response_buffer.data, r_length);
        rets = r_length;
 
+free:
        mei_io_cb_free(cb);
        cl->reading_state = MEI_IDLE;
        cl->read_cb = NULL;
Simple merge
Simple merge
Simple merge