bpf: Fix passing zero to PTR_ERR() in bpf_btf_printf_prepare
authorWang Qing <wangqing@vivo.com>
Sat, 7 Nov 2020 07:45:44 +0000 (15:45 +0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 9 Nov 2020 21:37:19 +0000 (22:37 +0100)
There is a bug when passing zero to PTR_ERR() and return.
Fix the smatch error.

Fixes: c4d0bfb45068 ("bpf: Add bpf_snprintf_btf helper")
Signed-off-by: Wang Qing <wangqing@vivo.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/1604735144-686-1-git-send-email-wangqing@vivo.com
kernel/trace/bpf_trace.c

index 4517c8b..5113fd4 100644 (file)
@@ -1198,7 +1198,7 @@ static int bpf_btf_printf_prepare(struct btf_ptr *ptr, u32 btf_ptr_size,
        *btf = bpf_get_btf_vmlinux();
 
        if (IS_ERR_OR_NULL(*btf))
-               return PTR_ERR(*btf);
+               return IS_ERR(*btf) ? PTR_ERR(*btf) : -EINVAL;
 
        if (ptr->type_id > 0)
                *btf_id = ptr->type_id;