Sfoglia il codice sorgente

mei: drop read complete queue emptiness check

In the course of the read flow we want to wait for read completion only
if the read queue is empty.
However the calling list_empty(&cl->rd_completed) is a duplication as the
same check was performed by mei_cl_read_cb() and the waiting is skipped
if it returns not NULL.

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>
Alexander Usyskin 9 anni fa
parent
commit
1eb5bd4d83
2 ha cambiato i file con 4 aggiunte e 2 eliminazioni
  1. 2 1
      drivers/misc/mei/bus.c
  2. 2 1
      drivers/misc/mei/main.c

+ 2 - 1
drivers/misc/mei/bus.c

@@ -126,7 +126,8 @@ ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length)
 		goto out;
 		goto out;
 
 
 	/* wait on event only if there is no other waiter */
 	/* wait on event only if there is no other waiter */
-	if (list_empty(&cl->rd_completed) && !waitqueue_active(&cl->rx_wait)) {
+	/* synchronized under device mutex */
+	if (!waitqueue_active(&cl->rx_wait)) {
 
 
 		mutex_unlock(&bus->device_lock);
 		mutex_unlock(&bus->device_lock);
 
 

+ 2 - 1
drivers/misc/mei/main.c

@@ -183,7 +183,8 @@ static ssize_t mei_read(struct file *file, char __user *ubuf,
 		goto out;
 		goto out;
 	}
 	}
 
 
-	if (list_empty(&cl->rd_completed) && !waitqueue_active(&cl->rx_wait)) {
+	/* synchronized under device mutex */
+	if (!waitqueue_active(&cl->rx_wait)) {
 		if (file->f_flags & O_NONBLOCK) {
 		if (file->f_flags & O_NONBLOCK) {
 			rets = -EAGAIN;
 			rets = -EAGAIN;
 			goto out;
 			goto out;