1
0
Fork 0
alistair23-linux/net/smc
Ursula Braun 90e0e78bfa net/smc: add fallback check to connect()
commit 86434744fe upstream.

FASTOPEN setsockopt() or sendmsg() may switch the SMC socket to fallback
mode. Once fallback mode is active, the native TCP socket functions are
called. Nevertheless there is a small race window, when FASTOPEN
setsockopt/sendmsg runs in parallel to a connect(), and switch the
socket into fallback mode before connect() takes the sock lock.
Make sure the SMC-specific connect setup is omitted in this case.

This way a syzbot-reported refcount problem is fixed, triggered by
different threads running non-blocking connect() and FASTOPEN_KEY
setsockopt.

Reported-by: syzbot+96d3f9ff6a86d37e44c8@syzkaller.appspotmail.com
Fixes: 6d6dd528d5 ("net/smc: fix refcount non-blocking connect() -part 2")
Signed-off-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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-01-04 19:18:37 +01:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
af_smc.c net/smc: add fallback check to connect() 2020-01-04 19:18:37 +01:00
smc.h net/smc: nonblocking connect rework 2019-04-12 10:50:56 -07:00
smc_cdc.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-02-15 12:38:38 -08:00
smc_cdc.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-02-15 12:38:38 -08:00
smc_clc.c net: use new in_dev_ifa iterators 2019-06-02 18:06:26 -07:00
smc_clc.h net/smc: improve smc_conn_create reason codes 2019-04-12 10:50:56 -07:00
smc_close.c net/smc: wait for pending work before clcsock release_sock 2019-04-11 11:04:08 -07:00
smc_close.h net/smc: wait for pending work before clcsock release_sock 2019-04-11 11:04:08 -07:00
smc_core.c net/smc: increase device refcount for added link group 2019-12-31 16:43:53 +01:00
smc_core.h net/smc: improve smc_conn_create reason codes 2019-04-12 10:50:56 -07:00
smc_diag.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
smc_ib.c net/smc: Use rdma_read_gid_l2_fields to L2 fields 2019-05-03 11:10:03 -03:00
smc_ib.h net/smc: rework pnet table 2019-02-21 10:34:37 -08:00
smc_ism.c net/smc: fix a NULL pointer dereference 2019-04-11 11:04:08 -07:00
smc_ism.h net/smc: add SMC-D shutdown signal 2018-11-21 16:14:56 -08:00
smc_llc.c net/smc: preallocated memory for rdma work requests 2019-02-04 09:11:19 -08:00
smc_llc.h net/smc: add infrastructure to send delete rkey messages 2018-11-23 17:20:32 -08:00
smc_netns.h net/smc: add pnet table namespace support 2019-02-21 10:34:37 -08:00
smc_pnet.c net/smc: fix ethernet interface refcounting 2019-11-06 17:44:32 -08:00
smc_pnet.h net/smc: consolidate function parameters 2019-04-12 10:50:56 -07:00
smc_rx.c net/smc: receive pending data after RCV_SHUTDOWN 2019-10-10 19:08:41 -07:00
smc_rx.h smc: add support for splice() 2018-05-04 11:45:06 -04:00
smc_tx.c net/smc: make sure EPOLLOUT is raised 2019-08-20 12:25:14 -07: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: preallocated memory for rdma work requests 2019-02-04 09:11:19 -08:00
smc_wr.h net/smc: preallocated memory for rdma work requests 2019-02-04 09:11:19 -08:00