Skip to content

Commit

Permalink
nfp: Fix memory leak in nfp_cpp_area_cache_add()
Browse files Browse the repository at this point in the history
commit c56c96303e9289cc34716b1179597b6f470833de upstream.

In line 800 (Roynas-Android-Playground#1), nfp_cpp_area_alloc() allocates and initializes a
CPP area structure. But in line 807 (Roynas-Android-Playground#2), when the cache is allocated
failed, this CPP area structure is not freed, which will result in
memory leak.

We can fix it by freeing the CPP area when the cache is allocated
failed (Roynas-Android-Playground#2).

792 int nfp_cpp_area_cache_add(struct nfp_cpp *cpp, size_t size)
793 {
794 	struct nfp_cpp_area_cache *cache;
795 	struct nfp_cpp_area *area;

800	area = nfp_cpp_area_alloc(cpp, NFP_CPP_ID(7, NFP_CPP_ACTION_RW, 0),
801 				  0, size);
	// Roynas-Android-Playground#1: allocates and initializes

802 	if (!area)
803 		return -ENOMEM;

805 	cache = kzalloc(sizeof(*cache), GFP_KERNEL);
806 	if (!cache)
807 		return -ENOMEM; // Roynas-Android-Playground#2: missing free

817	return 0;
818 }

Fixes: 4cb584e ("nfp: add CPP access core")
Signed-off-by: Jianglei Nie <niejianglei2021@163.com>
Acked-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20211209061511.122535-1-niejianglei2021@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jianglei Nie authored and ratatouille100 committed Dec 18, 2023
1 parent 418c173 commit 293f9d1
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c
Original file line number Diff line number Diff line change
Expand Up @@ -787,8 +787,10 @@ int nfp_cpp_area_cache_add(struct nfp_cpp *cpp, size_t size)
return -ENOMEM;

cache = kzalloc(sizeof(*cache), GFP_KERNEL);
if (!cache)
if (!cache) {
nfp_cpp_area_free(area);
return -ENOMEM;
}

cache->id = 0;
cache->addr = 0;
Expand Down

0 comments on commit 293f9d1

Please sign in to comment.