OSDN Git Service

bpf: Fix missing -EFAULT return on user log buf error in btf_parse()
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 6 Apr 2023 23:41:54 +0000 (16:41 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 11 Apr 2023 16:05:43 +0000 (18:05 +0200)
btf_parse() is missing -EFAULT error return if log->ubuf was NULL-ed out
due to error while copying data into user-provided buffer. Add it, but
handle a special case of BPF_LOG_KERNEL in which log->ubuf is always NULL.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/bpf/20230406234205.323208-9-andrii@kernel.org
kernel/bpf/btf.c

index 20a05b8..6372c14 100644 (file)
@@ -5598,6 +5598,10 @@ static struct btf *btf_parse(bpfptr_t btf_data, u32 btf_data_size,
                err = -ENOSPC;
                goto errout_meta;
        }
+       if (log->level && log->level != BPF_LOG_KERNEL && !log->ubuf) {
+               err = -EFAULT;
+               goto errout_meta;
+       }
 
        btf_verifier_env_free(env);
        refcount_set(&btf->refcnt, 1);