bpf: Limit the number of kprobes when attaching program to multiple kprobes
authorHou Tao <houtao1@huawei.com>
Fri, 15 Dec 2023 10:07:05 +0000 (18:07 +0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 15 Dec 2023 21:54:55 +0000 (22:54 +0100)
commitd6d1e6c17cab2dcb7b8530c599f00e7de906d380
tree8ec04ed42b761af3105deb4660c8ca566664e2ca
parent8b2efe51ba85ca83460941672afac6fca4199df6
bpf: Limit the number of kprobes when attaching program to multiple kprobes

An abnormally big cnt may also be assigned to kprobe_multi.cnt when
attaching multiple kprobes. It will trigger the following warning in
kvmalloc_node():

if (unlikely(size > INT_MAX)) {
    WARN_ON_ONCE(!(flags & __GFP_NOWARN));
    return NULL;
}

Fix the warning by limiting the maximal number of kprobes in
bpf_kprobe_multi_link_attach(). If the number of kprobes is greater than
MAX_KPROBE_MULTI_CNT, the attachment will fail and return -E2BIG.

Fixes: 0dcac2725406 ("bpf: Add multi kprobe link")
Signed-off-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20231215100708.2265609-3-houtao@huaweicloud.com
kernel/trace/bpf_trace.c