summaryrefslogtreecommitdiff
path: root/net/smc/smc_close.h
diff options
context:
space:
mode:
authorKarsten Graul <kgraul@linux.ibm.com>2019-04-11 11:17:30 +0200
committerDavid S. Miller <davem@davemloft.net>2019-04-11 11:04:08 -0700
commitfd57770dd198f5b2ddd5b9e6bf282cf98d63adb9 (patch)
tree37e08bc918b40df3a79e4fc28ba16f8a2821d2c4 /net/smc/smc_close.h
parent988dc4a9a3b66be75b30405a5494faf0dc7cffb6 (diff)
net/smc: wait for pending work before clcsock release_sock
When the clcsock is already released using sock_release() and a pending smc_listen_work accesses the clcsock than that will fail. Solve this by canceling and waiting for the work to complete first. Because the work holds the sock_lock it must make sure that the lock is not hold before the new helper smc_clcsock_release() is invoked. And before the smc_listen_work starts working check if the parent listen socket is still valid, otherwise stop the work early. Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_close.h')
-rw-r--r--net/smc/smc_close.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/smc/smc_close.h b/net/smc/smc_close.h
index 19eb6a211c23..e0e3b5df25d2 100644
--- a/net/smc/smc_close.h
+++ b/net/smc/smc_close.h
@@ -23,5 +23,6 @@ void smc_close_wake_tx_prepared(struct smc_sock *smc);
int smc_close_active(struct smc_sock *smc);
int smc_close_shutdown_write(struct smc_sock *smc);
void smc_close_init(struct smc_sock *smc);
+void smc_clcsock_release(struct smc_sock *smc);
#endif /* SMC_CLOSE_H */