Message ID | 20190116184301.218106-1-posk@google.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next,v2] bpf: fix a (false) compiler warning | expand |
On Wed, Jan 16, 2019 at 10:43:01AM -0800, Peter Oskolkov wrote: > 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 compiler is wrong here, the patch makes sure > that prev_offset is always initialized, just to silence the warning. > > v2: fix a spelling error in the commit message. > > Signed-off-by: Peter Oskolkov <posk@google.com> Acked-by: Martin KaFai Lau <kafai@fb.com>
On 01/16/2019 07:43 PM, Peter Oskolkov wrote: > 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 compiler is wrong here, the patch makes sure > that prev_offset is always initialized, just to silence the warning. > > v2: fix a spelling error in the commit message. > > Signed-off-by: Peter Oskolkov <posk@google.com> Applied, thanks!
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;
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 compiler is wrong here, the patch makes sure that prev_offset is always initialized, just to silence the warning. v2: fix a spelling error in the commit message. Signed-off-by: Peter Oskolkov <posk@google.com> --- kernel/bpf/verifier.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --