Blob Blame History Raw
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Fri, 17 Nov 2017 18:56:50 +0100
Subject: pci/switchtec: sync with current patch
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git
Git-commit: 569d4d6750b746fa0ea817ce625b823652cb8e6f
Patch-mainline: Queued in subsystem maintainer repository
References: SLE Realtime Extension

Add a READ_ONCE() as Logan as for and more importantly initialize
->cmd_done in one place where I missed it earlier.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
 drivers/pci/switch/switchtec.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/drivers/pci/switch/switchtec.c
+++ b/drivers/pci/switch/switchtec.c
@@ -443,6 +443,7 @@ static void mrpc_complete_cmd(struct swi
 		      stuser->read_len);
 
 out:
+	stuser->cmd_done = true;
 	wake_up_interruptible(&stuser->cmd_comp);
 	list_del_init(&stuser->list);
 	stuser_put(stuser);
@@ -713,7 +714,7 @@ static ssize_t switchtec_dev_read(struct
 	mutex_unlock(&stdev->mrpc_mutex);
 
 	if (filp->f_flags & O_NONBLOCK) {
-		if (!stuser->cmd_done)
+		if (!READ_ONCE(stuser->cmd_done))
 			return -EAGAIN;
 	} else {
 		rc = wait_event_interruptible(stuser->cmd_comp,
@@ -773,7 +774,7 @@ static unsigned int switchtec_dev_poll(s
 
 	mutex_unlock(&stdev->mrpc_mutex);
 
-	if (stuser->cmd_done)
+	if (READ_ONCE(stuser->cmd_done))
 		ret |= POLLIN | POLLRDNORM;
 
 	if (stuser->event_cnt != atomic_read(&stdev->event_cnt))