diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-02-18 03:26:36 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-22 10:19:31 -0800 |
commit | eaefd1105bc431ef329599e307a07f2a36ae7872 (patch) | |
tree | 658eeed417654c8f6015d4d5f957f5a1b5e9521f /net/sctp/socket.c | |
parent | 04cfa852ff8dab923640500ee850d19e75bacabc (diff) | |
download | talos-op-linux-eaefd1105bc431ef329599e307a07f2a36ae7872.tar.gz talos-op-linux-eaefd1105bc431ef329599e307a07f2a36ae7872.zip |
net: add __rcu annotations to sk_wq and wq
Add proper RCU annotations/verbs to sk_wq and wq members
Fix __sctp_write_space() sk_sleep() abuse (and sock->wq access)
Fix sunrpc sk_sleep() abuse too
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r-- | net/sctp/socket.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 8e02550ff3e8..b53b2ebbb198 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -6102,15 +6102,16 @@ static void __sctp_write_space(struct sctp_association *asoc) wake_up_interruptible(&asoc->wait); if (sctp_writeable(sk)) { - if (sk_sleep(sk) && waitqueue_active(sk_sleep(sk))) - wake_up_interruptible(sk_sleep(sk)); + wait_queue_head_t *wq = sk_sleep(sk); + + if (wq && waitqueue_active(wq)) + wake_up_interruptible(wq); /* Note that we try to include the Async I/O support * here by modeling from the current TCP/UDP code. * We have not tested with it yet. */ - if (sock->wq->fasync_list && - !(sk->sk_shutdown & SEND_SHUTDOWN)) + if (!(sk->sk_shutdown & SEND_SHUTDOWN)) sock_wake_async(sock, SOCK_WAKE_SPACE, POLL_OUT); } |