linux-stable/net/smc
Guo DaXing 12ceb52f2c net/smc: Fix loop in smc_listen
[ Upstream commit 9ebb0c4b27 ]

The kernel_listen function in smc_listen will fail when all the available
ports are occupied.  At this point smc->clcsock->sk->sk_data_ready has
been changed to smc_clcsock_data_ready.  When we call smc_listen again,
now both smc->clcsock->sk->sk_data_ready and smc->clcsk_data_ready point
to the smc_clcsock_data_ready function.

The smc_clcsock_data_ready() function calls lsmc->clcsk_data_ready which
now points to itself resulting in an infinite loop.

This patch restores smc->clcsock->sk->sk_data_ready with the old value.

Fixes: a60a2b1e0a ("net/smc: reduce active tcp_listen workers")
Signed-off-by: Guo DaXing <guodaxing@huawei.com>
Acked-by: Tony Lu <tonylu@linux.alibaba.com>
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-12-01 09:19:07 +01:00
..
af_smc.c net/smc: Fix loop in smc_listen 2021-12-01 09:19:07 +01:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
smc.h net/smc: introduce CLC first contact extension 2020-09-28 15:19:03 -07:00
smc_cdc.c net/smc: use separate work queues for different worker types 2020-09-10 15:24:27 -07:00
smc_cdc.h net/smc: pre-fetch send buffer outside of send_lock 2020-05-30 18:12:25 -07:00
smc_clc.c net/smc: add missing error check in smc_clc_prfx_set() 2021-09-30 10:11:02 +02:00
smc_clc.h net/smc: Replace zero-length array with flexible-array member 2020-10-30 16:57:42 -05:00
smc_close.c net/smc: Ensure the active closing peer first closes clcsock 2021-12-01 09:19:05 +01:00
smc_close.h net/smc: remove close abort worker 2019-10-22 11:23:44 -07:00
smc_core.c net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() 2021-12-01 09:19:07 +01:00
smc_core.h net/smc: fix wait on already cleared link 2021-08-18 08:59:10 +02:00
smc_diag.c net/smc: use the retry mechanism for netlink messages 2020-09-10 15:24:27 -07:00
smc_ib.c net/smc: fix direct access to ib_gid_addr->ndev in smc_ib_determine_gid() 2020-11-19 10:59:19 -08:00
smc_ib.h net/smc: protect smc ib device initialization 2020-07-19 15:30:22 -07:00
smc_ism.c net/smc: remove device from smcd_dev_list after failed device_add() 2021-06-03 09:00:48 +02:00
smc_ism.h net/smc: introduce CHID callback for ISM devices 2020-09-28 15:19:03 -07:00
smc_llc.c net/smc: Fix smc_link->llc_testlink_time overflow 2021-11-18 14:03:44 +01:00
smc_llc.h net/smc: move add link processing for new device into llc layer 2020-07-19 15:30:22 -07:00
smc_netns.h net/smc: introduce list of pnetids for Ethernet devices 2020-09-28 15:19:03 -07:00
smc_pnet.c net/smc: determine proposed ISM devices 2020-09-28 15:19:03 -07:00
smc_pnet.h net/smc: determine proposed ISM devices 2020-09-28 15:19:03 -07:00
smc_rx.c fs: make the pipe_buf_operations ->confirm operation optional 2020-05-20 12:11:26 -04:00
smc_rx.h
smc_tx.c net/smc: fix wait on already cleared link 2021-08-18 08:59:10 +02: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: fix wait on already cleared link 2021-08-18 08:59:10 +02:00
smc_wr.h net/smc: wait for departure of an IB message 2020-05-04 10:54:39 -07:00