From: Jonathan Lemon jonathan.lemon@gmail.com
mainline inclusion from mainline-v5.12-rc1-dontuse commit 70c4316749f6 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I4CVS3 CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
----------------------------------------------------------------------
RX zerocopy fragment pages which are not allocated from the system page pool require special handling. Give the callback in skb_zcopy_clear() a chance to process them first.
Signed-off-by: Jonathan Lemon jonathan.lemon@gmail.com Signed-off-by: Jakub Kicinski kuba@kernel.org Reviewed-by: Yongxin Li liyongxin1@huawei.com Signed-off-by: Junxin Chen chenjunxin1@huawei.com Signed-off-by: Zheng Zengkai zhengzengkai@huawei.com --- net/core/skbuff.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 825e6b988003..91661352dca8 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -614,13 +614,14 @@ static void skb_release_data(struct sk_buff *skb) &shinfo->dataref)) return;
+ skb_zcopy_clear(skb, true); + for (i = 0; i < shinfo->nr_frags; i++) __skb_frag_unref(&shinfo->frags[i]);
if (shinfo->frag_list) kfree_skb_list(shinfo->frag_list);
- skb_zcopy_clear(skb, true); skb_free_head(skb); }