summary refs log tree commit diff
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2012-05-29 16:39:12 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-06-13 13:52:14 -0700
commit1e69d64a28cf3cabd095ada3a49f081c97f997dd (patch)
tree9397a64345565c5b3a41f81fb3977723f005a923
parenta44cab4aff7e72e7052521121fd8ceca51351534 (diff)
downloadlinux-1e69d64a28cf3cabd095ada3a49f081c97f997dd.tar.gz
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>
-rw-r--r--drivers/misc/mei/interrupt.c2
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,
 			struct mei_cl *cl,
 			struct mei_io_list *cmpl_list)
 {
-	if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) +
+	if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) +
 			sizeof(struct hbm_flow_control))) {
 		/* return the cancel routine */
 		list_del(&cb_pos->cb_list);