]> git.baikalelectronics.ru Git - kernel.git/commit
net/smc: wait for pending work before clcsock release_sock
authorKarsten Graul <kgraul@linux.ibm.com>
Thu, 11 Apr 2019 09:17:30 +0000 (11:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Apr 2019 18:04:08 +0000 (11:04 -0700)
commit3f4f8566aeea2fcc0eee82c54cb81ea69ba48b2e
tree37e08bc918b40df3a79e4fc28ba16f8a2821d2c4
parentaf1eeb5afec0646481e7c69db582bf2e57582ea0
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>
net/smc/af_smc.c
net/smc/smc_close.c
net/smc/smc_close.h