Skip to content

Commit

Permalink
sock: dedup sock_def_write_space wmem_alloc checks
Browse files Browse the repository at this point in the history
Except for minor rounding differences the first ->sk_wmem_alloc test in
sock_def_write_space() is a hand coded version of sock_writeable().
Replace it with the helper, and also kill the following if duplicating
the check.

Signed-off-by: Pavel Begunkov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
isilence authored and davem330 committed May 1, 2022
1 parent 0ed99ec commit 14bfee9
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions net/core/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -3191,15 +3191,14 @@ static void sock_def_write_space(struct sock *sk)
/* Do not wake up a writer until he can make "significant"
* progress. --DaveM
*/
if ((refcount_read(&sk->sk_wmem_alloc) << 1) <= READ_ONCE(sk->sk_sndbuf)) {
if (sock_writeable(sk)) {
wq = rcu_dereference(sk->sk_wq);
if (skwq_has_sleeper(wq))
wake_up_interruptible_sync_poll(&wq->wait, EPOLLOUT |
EPOLLWRNORM | EPOLLWRBAND);

/* Should agree with poll, otherwise some programs break */
if (sock_writeable(sk))
sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
}

rcu_read_unlock();
Expand Down

0 comments on commit 14bfee9

Please sign in to comment.