diff options
author | 2021-01-06 14:18:35 -0800 | |
---|---|---|
committer | 2021-01-07 16:06:37 -0800 | |
commit | 236a6b1cd585a408139550201343f3f16f9324b9 (patch) | |
tree | 08c7270f5e085ddc04a2b6adb4342cbfc70e09dd /net/core | |
parent | skbuff: Add skb parameter to the ubuf zerocopy callback (diff) | |
download | wireguard-linux-236a6b1cd585a408139550201343f3f16f9324b9.tar.xz wireguard-linux-236a6b1cd585a408139550201343f3f16f9324b9.zip |
skbuff: Call sock_zerocopy_put_abort from skb_zcopy_put_abort
The sock_zerocopy_put_abort function contains logic which is
specific to the current zerocopy implementation. Add a wrapper
which checks the callback and dispatches apppropriately.
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/skbuff.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 89130b21d9f0..5b9cd528d6a6 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1254,15 +1254,13 @@ EXPORT_SYMBOL_GPL(sock_zerocopy_callback); void sock_zerocopy_put_abort(struct ubuf_info *uarg, bool have_uref) { - if (uarg) { - struct sock *sk = skb_from_uarg(uarg)->sk; + struct sock *sk = skb_from_uarg(uarg)->sk; - atomic_dec(&sk->sk_zckey); - uarg->len--; + atomic_dec(&sk->sk_zckey); + uarg->len--; - if (have_uref) - skb_zcopy_put(uarg); - } + if (have_uref) + sock_zerocopy_callback(NULL, uarg, true); } EXPORT_SYMBOL_GPL(sock_zerocopy_put_abort); |