diff options
author | Paolo Abeni <pabeni@redhat.com> | 2021-03-30 18:43:54 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-03-30 13:57:28 -0700 |
commit | 9adc89af724f12a03b47099cd943ed54e877cd59 (patch) | |
tree | 6bf5372364c7c76a17132f6df8b55ad2b1afdd9d /drivers/net | |
parent | ae81feb7338c89cee4e6aa0424bdab2ce2b52da2 (diff) | |
download | linux-stable-9adc89af724f12a03b47099cd943ed54e877cd59.tar.gz linux-stable-9adc89af724f12a03b47099cd943ed54e877cd59.tar.bz2 linux-stable-9adc89af724f12a03b47099cd943ed54e877cd59.zip |
net: let skb_orphan_partial wake-up waiters.
Currently the mentioned helper can end-up freeing the socket wmem
without waking-up any processes waiting for more write memory.
If the partially orphaned skb is attached to an UDP (or raw) socket,
the lack of wake-up can hang the user-space.
Even for TCP sockets not calling the sk destructor could have bad
effects on TSQ.
Address the issue using skb_orphan to release the sk wmem before
setting the new sock_efree destructor. Additionally bundle the
whole ownership update in a new helper, so that later other
potential users could avoid duplicate code.
v1 -> v2:
- use skb_orphan() instead of sort of open coding it (Eric)
- provide an helper for the ownership change (Eric)
Fixes: f6ba8d33cfbb ("netem: fix skb_orphan_partial()")
Suggested-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
0 files changed, 0 insertions, 0 deletions