mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-27 23:25:13 -04:00
bpf: Clear buf on error in __bpf_get_task_stack
Both bpf_get_task_stack and bpf_get_task_stack_sleepable helpers that use __bpf_get_task_stack have buf defined as ARG_PTR_TO_UNINIT_MEM argument and we should initialize the buf on every return path. Adding missing buf memset for __bpf_get_task_stack fail paths. This provides deterministic buffer contents, which is useful when the buffer is used directly as a map key. Fixes:06ab134ce8("bpf: Refcount task stack in bpf_get_task_stack") Fixes:b992f01e66("bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack()") Reported-by: Sashiko <sashiko-bot@kernel.org> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20260803210149.296496-10-jolsa@kernel.org
This commit is contained in:
committed by
Andrii Nakryiko
parent
58cfc2201d
commit
f5d242825c
@@ -884,14 +884,17 @@ static long __bpf_get_task_stack(struct task_struct *task, void *buf, u32 size,
|
||||
struct pt_regs *regs;
|
||||
long res = -EINVAL;
|
||||
|
||||
if (!try_get_task_stack(task))
|
||||
if (!try_get_task_stack(task)) {
|
||||
memset(buf, 0, size);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
regs = task_pt_regs(task);
|
||||
if (regs)
|
||||
res = __bpf_get_stack(regs, task, buf, size, flags, may_fault);
|
||||
else
|
||||
memset(buf, 0, size);
|
||||
put_task_stack(task);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user