Message ID | 20231030091256.2915394-1-shaojijie@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8ffbd1669ed1d58939d6e878dffaa2f60bf961a4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: page_pool: add missing free_percpu when page_pool_init fail | expand |
On 2023/10/30 17:12, Jijie Shao wrote: > From: Jian Shen <shenjian15@huawei.com> > > When ptr_ring_init() returns failure in page_pool_init(), free_percpu() > is not called to free pool->recycle_stats, which may cause memory > leak. LGTM. Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com> > > Fixes: ad6fa1e1ab1b ("page_pool: Add recycle stats") > Signed-off-by: Jian Shen <shenjian15@huawei.com> > Signed-off-by: Jijie Shao <shaojijie@huawei.com> > --- > net/core/page_pool.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/net/core/page_pool.c b/net/core/page_pool.c > index 77cb75e63aca..31f923e7b5c4 100644 > --- a/net/core/page_pool.c > +++ b/net/core/page_pool.c > @@ -221,8 +221,12 @@ static int page_pool_init(struct page_pool *pool, > return -ENOMEM; > #endif > > - if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) > + if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) { > +#ifdef CONFIG_PAGE_POOL_STATS > + free_percpu(pool->recycle_stats); > +#endif > return -ENOMEM; > + } > > atomic_set(&pool->pages_state_release_cnt, 0); > >
Mon, Oct 30, 2023 at 10:12:56AM CET, shaojijie@huawei.com wrote: >From: Jian Shen <shenjian15@huawei.com> > >When ptr_ring_init() returns failure in page_pool_init(), free_percpu() >is not called to free pool->recycle_stats, which may cause memory >leak. Would be nice to see the use of imperative mood in the patch description too, not only patch subject. Nevertheless, fix looks fine: Reviewed-by: Jiri Pirko <jiri@nvidia.com>
On Mon, 30 Oct, 2023, 18:02 Jiri Pirko, <jiri@resnulli.us> wrote: > Mon, Oct 30, 2023 at 10:12:56AM CET, shaojijie@huawei.com wrote: > >From: Jian Shen <shenjian15@huawei.com> > > > >When ptr_ring_init() returns failure in page_pool_init(), free_percpu() > >is not called to free pool->recycle_stats, which may cause memory > >leak. > > Would be nice to see the use of imperative mood in the patch description > too, not only patch subject. Nevertheless, fix looks fine: > > Reviewed-by: Jiri Pirko <jiri@nvidia.com> > > Reviewed-by: Somnath Kotur > <somnath.kotur@broadcom.com >
On Mon, 30 Oct 2023 at 11:17, Jijie Shao <shaojijie@huawei.com> wrote: > > From: Jian Shen <shenjian15@huawei.com> > > When ptr_ring_init() returns failure in page_pool_init(), free_percpu() > is not called to free pool->recycle_stats, which may cause memory > leak. > > Fixes: ad6fa1e1ab1b ("page_pool: Add recycle stats") > Signed-off-by: Jian Shen <shenjian15@huawei.com> > Signed-off-by: Jijie Shao <shaojijie@huawei.com> > --- > net/core/page_pool.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/net/core/page_pool.c b/net/core/page_pool.c > index 77cb75e63aca..31f923e7b5c4 100644 > --- a/net/core/page_pool.c > +++ b/net/core/page_pool.c > @@ -221,8 +221,12 @@ static int page_pool_init(struct page_pool *pool, > return -ENOMEM; > #endif > > - if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) > + if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) { > +#ifdef CONFIG_PAGE_POOL_STATS > + free_percpu(pool->recycle_stats); > +#endif > return -ENOMEM; > + } > > atomic_set(&pool->pages_state_release_cnt, 0); > > -- > 2.30.0 > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Hello: This patch was applied to netdev/net.git (main) by Paolo Abeni <pabeni@redhat.com>: On Mon, 30 Oct 2023 17:12:56 +0800 you wrote: > From: Jian Shen <shenjian15@huawei.com> > > When ptr_ring_init() returns failure in page_pool_init(), free_percpu() > is not called to free pool->recycle_stats, which may cause memory > leak. > > Fixes: ad6fa1e1ab1b ("page_pool: Add recycle stats") > Signed-off-by: Jian Shen <shenjian15@huawei.com> > Signed-off-by: Jijie Shao <shaojijie@huawei.com> > > [...] Here is the summary with links: - [net] net: page_pool: add missing free_percpu when page_pool_init fail https://git.kernel.org/netdev/net/c/8ffbd1669ed1 You are awesome, thank you!
diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 77cb75e63aca..31f923e7b5c4 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -221,8 +221,12 @@ static int page_pool_init(struct page_pool *pool, return -ENOMEM; #endif - if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) + if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) { +#ifdef CONFIG_PAGE_POOL_STATS + free_percpu(pool->recycle_stats); +#endif return -ENOMEM; + } atomic_set(&pool->pages_state_release_cnt, 0);