net/smc: Don't call clcsock shutdown twice when smc shutdown
authorTony Lu <tonylu@linux.alibaba.com>
Fri, 26 Nov 2021 02:41:35 +0000 (10:41 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 26 Nov 2021 19:23:35 +0000 (11:23 -0800)
commitbacb6c1e47691cda4a95056c21b5487fb7199fcc
tree0e0d9c47c1eafcfa67e0717c1172184bf2f42482
parent01d9cc2dea3fde3bad6d27f464eff463496e2b00
net/smc: Don't call clcsock shutdown twice when smc shutdown

When applications call shutdown() with SHUT_RDWR in userspace,
smc_close_active() calls kernel_sock_shutdown(), and it is called
twice in smc_shutdown().

This fixes this by checking sk_state before do clcsock shutdown, and
avoids missing the application's call of smc_shutdown().

Link: https://lore.kernel.org/linux-s390/1f67548e-cbf6-0dce-82b5-10288a4583bd@linux.ibm.com/
Fixes: 606a63c9783a ("net/smc: Ensure the active closing peer first closes clcsock")
Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
Acked-by: Karsten Graul <kgraul@linux.ibm.com>
Link: https://lore.kernel.org/r/20211126024134.45693-1-tonylu@linux.alibaba.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/smc/af_smc.c