• Daniel Borkmann's avatar
    bpf: fix bpf_prog_array_copy_to_user warning from perf event prog query · 9c481b90
    Daniel Borkmann authored
    syzkaller tried to perform a prog query in perf_event_query_prog_array()
    where struct perf_event_query_bpf had an ids_len of 1,073,741,353 and
    thus causing a warning due to failed kcalloc() allocation out of the
    bpf_prog_array_copy_to_user() helper. Given we cannot attach more than
    64 programs to a perf event, there's no point in allowing huge ids_len.
    Therefore, allow a buffer that would fix the maximum number of ids and
    also add a __GFP_NOWARN to the temporary ids buffer.
    
    Fixes: f371b304 ("bpf/tracing: allow user space to query prog array on the same tp")
    Fixes: 0911287c ("bpf: fix bpf_prog_array_copy_to_user() issues")
    Reported-by: syzbot+cab5816b0edbabf598b3@syzkaller.appspotmail.com
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    9c481b90
bpf_trace.c 23.3 KB