net: add sk_wake_async_rcu() helper
[sfrench/cifs-2.6.git] / net / core / sock.c
index 0963689a59506ac3309ad9a86d06b729948ad357..5ed411231fc7bebefcd1fc268607392a73f1f106 100644 (file)
@@ -3338,7 +3338,7 @@ static void sock_def_error_report(struct sock *sk)
        wq = rcu_dereference(sk->sk_wq);
        if (skwq_has_sleeper(wq))
                wake_up_interruptible_poll(&wq->wait, EPOLLERR);
-       sk_wake_async(sk, SOCK_WAKE_IO, POLL_ERR);
+       sk_wake_async_rcu(sk, SOCK_WAKE_IO, POLL_ERR);
        rcu_read_unlock();
 }
 
@@ -3353,7 +3353,7 @@ void sock_def_readable(struct sock *sk)
        if (skwq_has_sleeper(wq))
                wake_up_interruptible_sync_poll(&wq->wait, EPOLLIN | EPOLLPRI |
                                                EPOLLRDNORM | EPOLLRDBAND);
-       sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
+       sk_wake_async_rcu(sk, SOCK_WAKE_WAITD, POLL_IN);
        rcu_read_unlock();
 }
 
@@ -3373,7 +3373,7 @@ static void sock_def_write_space(struct sock *sk)
                                                EPOLLWRNORM | EPOLLWRBAND);
 
                /* Should agree with poll, otherwise some programs break */
-               sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
+               sk_wake_async_rcu(sk, SOCK_WAKE_SPACE, POLL_OUT);
        }
 
        rcu_read_unlock();
@@ -3398,7 +3398,7 @@ static void sock_def_write_space_wfree(struct sock *sk)
                                                EPOLLWRNORM | EPOLLWRBAND);
 
                /* Should agree with poll, otherwise some programs break */
-               sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
+               sk_wake_async_rcu(sk, SOCK_WAKE_SPACE, POLL_OUT);
        }
 }