WSL2-Linux-Kernel/net/smc
Wen Gu 56d99e81ec net/smc: Fix hung_task when removing SMC-R devices
A hung_task is observed when removing SMC-R devices. Suppose that
a link group has two active links(lnk_A, lnk_B) associated with two
different SMC-R devices(dev_A, dev_B). When dev_A is removed, the
link group will be removed from smc_lgr_list and added into
lgr_linkdown_list. lnk_A will be cleared and smcibdev(A)->lnk_cnt
will reach to zero. However, when dev_B is removed then, the link
group can't be found in smc_lgr_list and lnk_B won't be cleared,
making smcibdev->lnk_cnt never reaches zero, which causes a hung_task.

This patch fixes this issue by restoring the implementation of
smc_smcr_terminate_all() to what it was before commit 349d43127d
("net/smc: fix kernel panic caused by race of smc_sock"). The original
implementation also satisfies the intention that make sure QP destroy
earlier than CQ destroy because we will always wait for smcibdev->lnk_cnt
reaches zero, which guarantees QP has been destroyed.

Fixes: 349d43127d ("net/smc: fix kernel panic caused by race of smc_sock")
Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2022-01-16 12:30:28 +00:00
..
Kconfig
Makefile
af_smc.c net/smc: Introduce a new conn->lgr validity check helper 2022-01-13 13:14:53 +00:00
smc.h net/smc: Resolve the race between link group access and termination 2022-01-13 12:55:40 +00:00
smc_cdc.c net/smc: Introduce a new conn->lgr validity check helper 2022-01-13 13:14:53 +00:00
smc_cdc.h
smc_clc.c net/smc: Introduce a new conn->lgr validity check helper 2022-01-13 13:14:53 +00:00
smc_clc.h
smc_close.c
smc_close.h
smc_core.c net/smc: Fix hung_task when removing SMC-R devices 2022-01-16 12:30:28 +00:00
smc_core.h net/smc: Resolve the race between SMC-R link access and clear 2022-01-13 13:14:53 +00:00
smc_diag.c net/smc: Introduce a new conn->lgr validity check helper 2022-01-13 13:14:53 +00:00
smc_ib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-12-31 14:35:40 +00:00
smc_ib.h net/smc: Introduce net namespace support for linkgroup 2022-01-02 12:07:39 +00:00
smc_ism.c
smc_ism.h
smc_llc.c net/smc: Print net namespace in log 2022-01-02 12:07:39 +00:00
smc_llc.h
smc_netlink.c
smc_netlink.h
smc_netns.h
smc_pnet.c net/smc: fix possible NULL deref in smc_pnet_add_eth() 2022-01-12 14:45:29 +00:00
smc_pnet.h
smc_rx.c
smc_rx.h
smc_stats.c
smc_stats.h
smc_tracepoint.c
smc_tracepoint.h net/smc: Add net namespace for tracepoints 2022-01-02 12:07:39 +00:00
smc_tx.c
smc_tx.h
smc_wr.c
smc_wr.h net/smc: Remove unused function declaration 2022-01-15 22:57:21 +00:00