diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2012-05-29 09:39:12 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-06-13 16:52:14 -0400 |
commit | 1e69d64a28cf3cabd095ada3a49f081c97f997dd (patch) | |
tree | 9397a64345565c5b3a41f81fb3977723f005a923 /drivers/misc | |
parent | a44cab4aff7e72e7052521121fd8ceca51351534 (diff) |
misc: mei: fix stalled read
This bug caused severe connectivity issue in the LMS application
(LMS is described in Documentation/misc-devices/mei/mei.txt)
The bug was introduced in patch:
commit 1ccb7b6249f9bc50678e2a383084ed0a34cc9239
staging/mei: propagate error codes up in the write flow
The patch has reverted the return value logic of some fo function but
the conditional in _mei_irq_thread_read function was not swapped
making read always entering the error path
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/mei/interrupt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c index 93936f1b75eb..23f5463d4cae 100644 --- a/drivers/misc/mei/interrupt.c +++ b/drivers/misc/mei/interrupt.c | |||
@@ -835,7 +835,7 @@ static int _mei_irq_thread_read(struct mei_device *dev, s32 *slots, | |||
835 | struct mei_cl *cl, | 835 | struct mei_cl *cl, |
836 | struct mei_io_list *cmpl_list) | 836 | struct mei_io_list *cmpl_list) |
837 | { | 837 | { |
838 | if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) + | 838 | if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) + |
839 | sizeof(struct hbm_flow_control))) { | 839 | sizeof(struct hbm_flow_control))) { |
840 | /* return the cancel routine */ | 840 | /* return the cancel routine */ |
841 | list_del(&cb_pos->cb_list); | 841 | list_del(&cb_pos->cb_list); |