linux-stable/net/smc
D. Wythe 9bb7237cc7 net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server
commit 4940a1fdf3 upstream.

The problem of SMC_CLC_DECL_ERR_REGRMB on the server is very clear.
Based on the fact that whether a new SMC connection can be accepted or
not depends on not only the limit of conn nums, but also the available
entries of rtoken. Since the rtoken release is trigger by peer, while
the conn nums is decrease by local, tons of thing can happen in this
time difference.

This only thing that needs to be mentioned is that now all connection
creations are completely protected by smc_server_lgr_pending lock, it's
enough to check only the available entries in rtokens_used_mask.

Fixes: cd6851f303 ("smc: remote memory buffers (RMBs)")
Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-03-08 19:09:33 +01:00
..
af_smc.c net/smc: fix connection leak 2022-03-08 19:09:33 +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: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01:00
smc_cdc.c net/smc: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01:00
smc_cdc.h net/smc: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01: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: Keep smc_close_final rc during active close 2021-12-08 09:03:26 +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 unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server 2022-03-08 19:09:33 +01:00
smc_core.h net/smc: don't send CDC/LLC message if link not ready 2022-01-05 12:40:31 +01: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 kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01:00
smc_ib.h net/smc: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01: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: don't send CDC/LLC message if link not ready 2022-01-05 12:40:31 +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: Use a mutex for locking "struct smc_pnettable" 2022-03-02 11:42:51 +01:00
smc_pnet.h net/smc: Use a mutex for locking "struct smc_pnettable" 2022-03-02 11:42:51 +01: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: improved fix wait on already cleared link 2022-01-05 12:40:31 +01:00
smc_tx.h
smc_wr.c net/smc: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01:00
smc_wr.h net/smc: fix kernel panic caused by race of smc_sock 2022-01-05 12:40:31 +01:00