Message ID | 20210917083406.75602-1-jasowang@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | afd92d82c9d715fb97565408755acad81573591a |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] virtio-net: fix pages leaking when building skb in big mode | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | fail | 1 blamed authors not CCed: davem@davemloft.net; 2 maintainers not CCed: kuba@kernel.org davem@davemloft.net |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 10 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
On Fri, 17 Sep 2021 16:34:06 +0800, Jason Wang <jasowang@redhat.com> wrote: > We try to use build_skb() if we had sufficient tailroom. But we forget > to release the unused pages chained via private in big mode which will > leak pages. Fixing this by release the pages after building the skb in > big mode. > > Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > Fixes: fb32856b16ad ("virtio-net: page_to_skb() use build_skb when there's sufficient tailroom") > Signed-off-by: Jason Wang <jasowang@redhat.com> LGTM Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Thanks. > --- > drivers/net/virtio_net.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 271d38c1d9f8..79bd2585ec6b 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -423,6 +423,10 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, > > skb_reserve(skb, p - buf); > skb_put(skb, len); > + > + page = (struct page *)page->private; > + if (page) > + give_pages(rq, page); > goto ok; > } > > -- > 2.25.1 >
Hello: This patch was applied to netdev/net.git (refs/heads/master): On Fri, 17 Sep 2021 16:34:06 +0800 you wrote: > We try to use build_skb() if we had sufficient tailroom. But we forget > to release the unused pages chained via private in big mode which will > leak pages. Fixing this by release the pages after building the skb in > big mode. > > Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > Fixes: fb32856b16ad ("virtio-net: page_to_skb() use build_skb when there's sufficient tailroom") > Signed-off-by: Jason Wang <jasowang@redhat.com> > > [...] Here is the summary with links: - [net] virtio-net: fix pages leaking when building skb in big mode https://git.kernel.org/netdev/net/c/afd92d82c9d7 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 271d38c1d9f8..79bd2585ec6b 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -423,6 +423,10 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, skb_reserve(skb, p - buf); skb_put(skb, len); + + page = (struct page *)page->private; + if (page) + give_pages(rq, page); goto ok; }
We try to use build_skb() if we had sufficient tailroom. But we forget to release the unused pages chained via private in big mode which will leak pages. Fixing this by release the pages after building the skb in big mode. Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Fixes: fb32856b16ad ("virtio-net: page_to_skb() use build_skb when there's sufficient tailroom") Signed-off-by: Jason Wang <jasowang@redhat.com> --- drivers/net/virtio_net.c | 4 ++++ 1 file changed, 4 insertions(+)