diff mbox series

[bpf-next,v2] bpf: fix a (false) compiler warning

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

Commit Message

Peter Oskolkov Jan. 16, 2019, 6:43 p.m. UTC
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(-)

--

Comments

Martin KaFai Lau Jan. 16, 2019, 9:17 p.m. UTC | #1
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>
Daniel Borkmann Jan. 17, 2019, 9:41 a.m. UTC | #2
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 mbox series

Patch

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;