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))