bpf: Simplify logging-related error conditions handling
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 6 Apr 2023 23:41:56 +0000 (16:41 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 11 Apr 2023 16:05:43 +0000 (18:05 +0200)
Move log->level == 0 check into bpf_vlog_truncated() instead of doing it
explicitly. Also remove unnecessary goto in kernel/bpf/verifier.c.

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-11-andrii@kernel.org
kernel/bpf/btf.c
kernel/bpf/log.c
kernel/bpf/verifier.c

index 6372c14..5aa540e 100644 (file)
@@ -5594,7 +5594,7 @@ static struct btf *btf_parse(bpfptr_t btf_data, u32 btf_data_size,
        }
 
        bpf_vlog_finalize(log);
-       if (log->level && bpf_vlog_truncated(log)) {
+       if (bpf_vlog_truncated(log)) {
                err = -ENOSPC;
                goto errout_meta;
        }
index d99a50f..c778f3b 100644 (file)
@@ -169,7 +169,9 @@ static int bpf_vlog_reverse_ubuf(struct bpf_verifier_log *log, int start, int en
 
 bool bpf_vlog_truncated(const struct bpf_verifier_log *log)
 {
-       if (log->level & BPF_LOG_FIXED)
+       if (!log->level)
+               return false;
+       else if (log->level & BPF_LOG_FIXED)
                return bpf_log_used(log) >= log->len_total - 1;
        else
                return log->start_pos > 0;
index 0323149..a98cbc0 100644 (file)
@@ -18861,12 +18861,10 @@ skip_full_check:
        env->prog->aux->verified_insns = env->insn_processed;
 
        bpf_vlog_finalize(log);
-       if (log->level && bpf_vlog_truncated(log))
+       if (bpf_vlog_truncated(log))
                ret = -ENOSPC;
-       if (log->level && log->level != BPF_LOG_KERNEL && !log->ubuf) {
+       if (log->level && log->level != BPF_LOG_KERNEL && !log->ubuf)
                ret = -EFAULT;
-               goto err_release_maps;
-       }
 
        if (ret)
                goto err_release_maps;