diff options
| author | Jakub Kicinski <[email protected]> | 2024-03-29 22:03:14 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2024-03-29 22:03:14 +0000 |
| commit | 9494dc0b0860e5ca28a5cd5586cca3e171609fee (patch) | |
| tree | b8f7952bdc3936448e9ee4da907745b2f9c1a7f8 /net/unix/af_unix.c | |
| parent | Merge branch 'address-remaining-wtautological-constant-out-of-range-compare' (diff) | |
| parent | net: add sk_wake_async_rcu() helper (diff) | |
| download | kernel-9494dc0b0860e5ca28a5cd5586cca3e171609fee.tar.gz kernel-9494dc0b0860e5ca28a5cd5586cca3e171609fee.zip | |
Merge branch 'udp-small-changes-on-receive-path'
Eric Dumazet says:
====================
udp: small changes on receive path
This series is based on an observation I made in UDP receive path.
The sock_def_readable() costs are pretty high, especially when
epoll is used to generate EPOLLIN events.
First patch annotates races on sk->sk_rcvbuf reads.
Second patch replaces an atomic_add_return()
with a less expensive atomic_add()
Third patch avoids calling sock_def_readable() when possible.
Fourth patch adds sk_wake_async_rcu() to get better inlining
and code generation.
====================
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 27ca50ab1cd1..533fb682c954 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -546,7 +546,7 @@ static void unix_write_space(struct sock *sk) if (skwq_has_sleeper(wq)) wake_up_interruptible_sync_poll(&wq->wait, EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND); - sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); + sk_wake_async_rcu(sk, SOCK_WAKE_SPACE, POLL_OUT); } rcu_read_unlock(); } |
