Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-6476 lnet: avoid race during acceptor thread termination
[fs/lustre-release.git]
/
lnet
/
lnet
/
acceptor.c
diff --git
a/lnet/lnet/acceptor.c
b/lnet/lnet/acceptor.c
index
a0c0783
..
3585d20
100644
(file)
--- a/
lnet/lnet/acceptor.c
+++ b/
lnet/lnet/acceptor.c
@@
-507,11
+507,17
@@
lnet_acceptor_start(void)
void
lnet_acceptor_stop(void)
{
void
lnet_acceptor_stop(void)
{
+ struct sock *sk;
+
if (lnet_acceptor_state.pta_shutdown) /* not running */
return;
lnet_acceptor_state.pta_shutdown = 1;
if (lnet_acceptor_state.pta_shutdown) /* not running */
return;
lnet_acceptor_state.pta_shutdown = 1;
- wake_up_all(sk_sleep(lnet_acceptor_state.pta_sock->sk));
+
+ sk = lnet_acceptor_state.pta_sock->sk;
+
+ /* awake any sleepers using safe method */
+ sk->sk_state_change(sk);
/* block until acceptor signals exit */
wait_for_completion(&lnet_acceptor_state.pta_signal);
/* block until acceptor signals exit */
wait_for_completion(&lnet_acceptor_state.pta_signal);