Messages in this thread | | | From | Vasily Averin <> | Subject | [PATCH NET v4 0/7] skbuff: introduce skb_expand_head() | Date | Fri, 6 Aug 2021 10:49:47 +0300 |
| |
currently if skb does not have enough headroom skb_realloc_headrom is called. It is not optimal because it creates new skb.
this patch set introduces new helper skb_expand_head() Unlike skb_realloc_headroom, it does not allocate a new skb if possible; copies skb->sk on new skb when as needed and frees original skb in case of failures.
This helps to simplify ip[6]_finish_output2(), ip6_xmit() and few other functions in vrf, ax25 and bpf.
There are few other cases where this helper can be used but it requires an additional investigations.
v4 changes: - fixed null pointer dereference in vrf patch reported by Julian Wiedmann
v3 changes: - ax25 compilation warning fixed - v5.14-rc4 rebase - now it does not depend on non-committed pathces
v2 changes: - helper's name was changed to skb_expand_head - fixed few mistakes inside skb_expand_head(): skb_set_owner_w should set sk on nskb kfree was replaced by kfree_skb() improved warning message - added minor refactoring in changed functions in vrf and bpf patches - removed kfree_skb() in ax25_rt_build_path caller ax25_ip_xmit
Vasily Averin (7): skbuff: introduce skb_expand_head() ipv6: use skb_expand_head in ip6_finish_output2 ipv6: use skb_expand_head in ip6_xmit ipv4: use skb_expand_head in ip_finish_output2 vrf: use skb_expand_head in vrf_finish_output ax25: use skb_expand_head bpf: use skb_expand_head in bpf_out_neigh_v4/6
drivers/net/vrf.c | 23 ++++++--------- include/linux/skbuff.h | 1 + net/ax25/ax25_ip.c | 4 +-- net/ax25/ax25_out.c | 13 ++------- net/ax25/ax25_route.c | 13 ++------- net/core/filter.c | 27 ++++------------- net/core/skbuff.c | 42 +++++++++++++++++++++++++++ net/ipv4/ip_output.c | 13 ++------- net/ipv6/ip6_output.c | 78 +++++++++++++++++--------------------------------- 9 files changed, 92 insertions(+), 122 deletions(-)
-- 1.8.3.1
| |