summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorPu Lehui <pulehui@huawei.com>2026-07-24 16:33:08 +0800
committerHuacai Chen <chenhuacai@loongson.cn>2026-07-24 16:33:08 +0800
commit47e20d4b3da97ef3881d1e55e43545c22424f3fc (patch)
tree5d585d6c34051d468601158cccb6603cbc758485 /arch
parentdacd348b8a993373576fe2ee2d8b114740ba57a6 (diff)
downloadlinux-next-47e20d4b3da97ef3881d1e55e43545c22424f3fc.tar.gz
linux-next-47e20d4b3da97ef3881d1e55e43545c22424f3fc.zip
LoongArch: BPF: Fix memory leak in bpf_jit_free()
When bpf_int_jit_compile() is called for subprograms, it returns early during the first pass (!prog->is_func || extra_pass is false), keeping ctx->offset alive for the subsequent extra pass. If JIT compilation fails for a later subprogram, the BPF core aborts and calls bpf_jit_free() to clean up the first subprogram. However, bpf_jit_free() fails to free jit_data->ctx.offset, which causes a memory leak of the JIT context offsets array. So fix this by adding the missing kvfree(jit_data->ctx.offset) in bpf_jit_free(). Reported-by: Sashiko <sashiko-bot@kernel.org> Fixes: 4ab17e762b34 ("LoongArch: BPF: Use BPF prog pack allocator") Acked-by: Tiezhu Yang <yangtiezhu@loongson.cn> Signed-off-by: Pu Lehui <pulehui@huawei.com> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch')
-rw-r--r--arch/loongarch/net/bpf_jit.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c
index c91d474faba7..29c281bef28e 100644
--- a/arch/loongarch/net/bpf_jit.c
+++ b/arch/loongarch/net/bpf_jit.c
@@ -2361,6 +2361,7 @@ void bpf_jit_free(struct bpf_prog *prog)
*/
if (jit_data) {
bpf_jit_binary_pack_finalize(jit_data->ro_header, jit_data->header);
+ kvfree(jit_data->ctx.offset);
kfree(jit_data);
}
hdr = bpf_jit_binary_pack_hdr(prog);