diff mbox series

[net,1/1] net/smc: fix smc_poll in SMC_INIT state

Message ID 20190221115654.3889-1-ubraun@linux.ibm.com
State Accepted
Delegated to: David Miller
Headers show
Series [net,1/1] net/smc: fix smc_poll in SMC_INIT state | expand

Commit Message

Ursula Braun Feb. 21, 2019, 11:56 a.m. UTC
smc_poll() returns with mask bit EPOLLPRI if the connection urg_state
is SMC_URG_VALID. Since SMC_URG_VALID is zero, smc_poll signals
EPOLLPRI errorneously if called in state SMC_INIT before the connection
is created, for instance in a non-blocking connect scenario.

This patch switches to non-zero values for the urg states.

Reviewed-by: Karsten Graul <kgraul@linux.ibm.com>
Fixes: de8474eb9d50 ("net/smc: urgent data support")
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
---
 net/smc/smc.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

David Miller Feb. 21, 2019, 6:20 p.m. UTC | #1
From: Ursula Braun <ubraun@linux.ibm.com>
Date: Thu, 21 Feb 2019 12:56:54 +0100

> smc_poll() returns with mask bit EPOLLPRI if the connection urg_state
> is SMC_URG_VALID. Since SMC_URG_VALID is zero, smc_poll signals
> EPOLLPRI errorneously if called in state SMC_INIT before the connection
> is created, for instance in a non-blocking connect scenario.
> 
> This patch switches to non-zero values for the urg states.
> 
> Reviewed-by: Karsten Graul <kgraul@linux.ibm.com>
> Fixes: de8474eb9d50 ("net/smc: urgent data support")
> Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>

Applied and queued up for -stable.
diff mbox series

Patch

diff --git a/net/smc/smc.h b/net/smc/smc.h
index 5721416d0605..adbdf195eb08 100644
--- a/net/smc/smc.h
+++ b/net/smc/smc.h
@@ -113,9 +113,9 @@  struct smc_host_cdc_msg {		/* Connection Data Control message */
 } __aligned(8);
 
 enum smc_urg_state {
-	SMC_URG_VALID,			/* data present */
-	SMC_URG_NOTYET,			/* data pending */
-	SMC_URG_READ			/* data was already read */
+	SMC_URG_VALID	= 1,			/* data present */
+	SMC_URG_NOTYET	= 2,			/* data pending */
+	SMC_URG_READ	= 3,			/* data was already read */
 };
 
 struct smc_connection {