Re: [PATCH bpf-next 2/2] bpf: Call the missed kfree() when there is no special field in btf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 12, 2024 at 09:28:45AM +0800, Hou Tao wrote:
> From: Hou Tao <houtao1@xxxxxxxxxx>
> 
> Call the missed kfree() in btf_parse_struct_metas() when there is no
> special field in btf, otherwise will get the following kmemleak report:
> 
> unreferenced object 0xffff888101033620 (size 8):
>   comm "test_progs", pid 604, jiffies 4295127011
>   ......
>   backtrace (crc e77dc444):
>     [<00000000186f90f3>] kmemleak_alloc+0x4b/0x80
>     [<00000000ac8e9c4d>] __kmalloc_cache_noprof+0x2a1/0x310
>     [<00000000d99d68d6>] btf_new_fd+0x72d/0xe90
>     [<00000000f010b7f8>] __sys_bpf+0xec3/0x2410
>     [<00000000e077ed6f>] __x64_sys_bpf+0x1f/0x30
>     [<00000000a12f9e55>] x64_sys_call+0x199/0x9f0
>     [<00000000f3029ea6>] do_syscall_64+0x3b/0xc0
>     [<000000005640913a>] entry_SYSCALL_64_after_hwframe+0x4b/0x53
> 
> Fixes: 7a851ecb1806 ("bpf: Search for kptrs in prog BTF structs")
> Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx>
> ---
>  kernel/bpf/btf.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
> index 59b4f7265761..31eae516f701 100644
> --- a/kernel/bpf/btf.c
> +++ b/kernel/bpf/btf.c
> @@ -5572,8 +5572,10 @@ btf_parse_struct_metas(struct bpf_verifier_log *log, struct btf *btf)
>  		aof->ids[aof->cnt++] = i;
>  	}

I was wondering we could get away without the initial kmalloc and
let the first krealoc do the first allocation, but it might need
some other extra checks, so not sure it's worth it

in any case this lgtm

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

jirka

>  
> -	if (!aof->cnt)
> +	if (!aof->cnt) {
> +		kfree(aof);
>  		return NULL;
> +	}
>  	sort(&aof->ids, aof->cnt, sizeof(aof->ids[0]), btf_id_cmp_func, NULL);
>  
>  	for (i = 1; i < n; i++) {
> -- 
> 2.29.2
> 




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux