An older GCC compiler complains:

kernel/bpf/verifier.c: In function 'bpf_check':
kernel/bpf/verifier.c:4***:13: error: 'prev_offset' may be used uninitialized
      in this function [-Werror=maybe-uninitialized]
   } else if (krecord[i].insn_offset <= prev_offset) {
             ^
kernel/bpf/verifier.c:4***:38: note: 'prev_offset' was declared here
  u32 i, nfuncs, urec_size, min_size, prev_offset;

Although the comiler is wrong here, the patch makes sure
that prev_offset is always initialized, just to silence the warning.

Signed-off-by: Peter Oskolkov <p...@google.com>
---
 kernel/bpf/verifier.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 56674a7c3778..ce87198ecd01 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -4997,13 +4997,14 @@ static int check_btf_func(struct bpf_verifier_env *env,
                          const union bpf_attr *attr,
                          union bpf_attr __user *uattr)
 {
-       u32 i, nfuncs, urec_size, min_size, prev_offset;
+       u32 i, nfuncs, urec_size, min_size;
        u32 krec_size = sizeof(struct bpf_func_info);
        struct bpf_func_info *krecord;
        const struct btf_type *type;
        struct bpf_prog *prog;
        const struct btf *btf;
        void __user *urecord;
+       u32 prev_offset = 0;
        int ret = 0;
 
        nfuncs = attr->func_info_cnt;
-- 

Reply via email to