linux-uconsole/net/smc
Karsten Graul ea438df46e net/smc: receive pending data after RCV_SHUTDOWN
[ Upstream commit 107529e31a ]

smc_rx_recvmsg() first checks if data is available, and then if
RCV_SHUTDOWN is set. There is a race when smc_cdc_msg_recv_action() runs
in between these 2 checks, receives data and sets RCV_SHUTDOWN.
In that case smc_rx_recvmsg() would return from receive without to
process the available data.
Fix that with a final check for data available if RCV_SHUTDOWN is set.
Move the check for data into a function and call it twice.
And use the existing helper smc_rx_data_available().

Fixes: 952310ccf2 ("smc: receive data from RMBE")
Reviewed-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-27 14:51:18 +01:00
..
af_smc.c net/smc: do not schedule tx_work in SMC_CLOSED state 2019-08-09 17:52:32 +02:00
Kconfig net/smc: remove Kconfig warning 2017-07-29 11:22:58 -07:00
Makefile net/smc: add base infrastructure for SMC-D and ISM 2018-06-30 20:42:25 +09:00
smc.h net/smc: fix smc_poll in SMC_INIT state 2019-03-19 13:12:41 +01:00
smc_cdc.c net/smc: fix byte_order for rx_curs_confirmed 2019-12-05 09:21:09 +01:00
smc_cdc.h net/smc: fix byte_order for rx_curs_confirmed 2019-12-05 09:21:09 +01:00
smc_clc.c net/smc: fix sizeof to int comparison 2018-09-18 20:11:43 -07:00
smc_clc.h net/smc: provide fallback reason code 2018-07-25 22:25:53 -07:00
smc_close.c net/smc: enable fallback for connection abort in state INIT 2018-09-18 20:11:43 -07:00
smc_close.h net/smc: replace sock_put worker by socket refcounting 2018-01-26 10:41:56 -05:00
smc_core.c net/smc: prevent races between smc_lgr_terminate() and smc_conn_free() 2019-12-05 09:21:08 +01:00
smc_core.h net/smc: improve delete link processing 2018-07-25 22:25:53 -07:00
smc_diag.c net/smc: original socket family in inet_sock_diag 2020-01-27 14:50:20 +01:00
smc_ib.c RDMA/smc: Replace ib_query_gid with rdma_get_gid_attr 2018-08-17 16:45:51 -06:00
smc_ib.h net/smc: use correct vlan gid of RoCE device 2018-07-25 22:25:53 -07:00
smc_ism.c net/smc: send response to test link signal 2018-08-10 14:38:43 -07:00
smc_ism.h net/smc: add base infrastructure for SMC-D and ISM 2018-06-30 20:42:25 +09:00
smc_llc.c net/smc: improve delete link processing 2018-07-25 22:25:53 -07:00
smc_llc.h net/smc: improve delete link processing 2018-07-25 22:25:53 -07:00
smc_pnet.c smc: generic netlink family should be __ro_after_init 2018-09-20 07:49:55 -07:00
smc_pnet.h net/smc: use correct vlan gid of RoCE device 2018-07-25 22:25:53 -07:00
smc_rx.c net/smc: receive pending data after RCV_SHUTDOWN 2020-01-27 14:51:18 +01:00
smc_rx.h smc: add support for splice() 2018-05-04 11:45:06 -04:00
smc_tx.c net/smc: do not wait under send_lock 2019-12-17 20:35:33 +01:00
smc_tx.h net/smc: eliminate cursor read and write calls 2018-07-23 10:57:14 -07:00
smc_wr.c net/smc: use after free fix in smc_wr_tx_put_slot() 2019-12-13 08:51:34 +01:00
smc_wr.h net/smc: Simplify ib_post_(send|recv|srq_recv)() calls 2018-07-24 16:06:37 -06:00