[PATCH] bpf: verifier: avoid fall-through warnings

Subsystems: bpf [core], bpf [general] (safe dynamic programs and tools), the rest

STALE2608d

5 messages, 2 authors, 2019-06-11 · open the first message on its own page

[PATCH] bpf: verifier: avoid fall-through warnings

From: Gustavo A. R. Silva <hidden>
Date: 2019-06-11 13:28:17

In preparation to enabling -Wimplicit-fallthrough, this patch silences
the following warning:

kernel/bpf/verifier.c: In function ‘check_return_code’:
kernel/bpf/verifier.c:5509:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
      ^
kernel/bpf/verifier.c:5512:2: note: here
  case BPF_PROG_TYPE_CGROUP_SKB:
  ^~~~

Warning level 3 was used: -Wimplicit-fallthrough=3

Notice that it's much clearer to explicitly add breaks in each case
(that actually contains some code), rather than letting the code to
fall through.

This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.

Signed-off-by: Gustavo A. R. Silva <redacted>
---
 kernel/bpf/verifier.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1e9d10b32984..e9fc28991548 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5509,11 +5509,13 @@ static int check_return_code(struct bpf_verifier_env *env)
 		if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
 		    env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG)
 			range = tnum_range(1, 1);
+		break;
 	case BPF_PROG_TYPE_CGROUP_SKB:
 		if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) {
 			range = tnum_range(0, 3);
 			enforce_attach_type_range = tnum_range(2, 3);
 		}
+		break;
 	case BPF_PROG_TYPE_CGROUP_SOCK:
 	case BPF_PROG_TYPE_SOCK_OPS:
 	case BPF_PROG_TYPE_CGROUP_DEVICE:
-- 
2.21.0

Re: [PATCH] bpf: verifier: avoid fall-through warnings

From: Andrii Nakryiko <hidden>
Date: 2019-06-11 17:23:08

On Tue, Jun 11, 2019 at 7:05 AM Gustavo A. R. Silva
[off-list ref] wrote:
In preparation to enabling -Wimplicit-fallthrough, this patch silences
the following warning:
Your patch doesn't apply cleanly to neither bpf nor bpf-next tree.
Could you please rebase and re-submit? Please also include which tree
(probably bpf-next) you are designating this patch to in subject
prefix.
quoted hunk
kernel/bpf/verifier.c: In function ‘check_return_code’:
kernel/bpf/verifier.c:5509:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
      ^
kernel/bpf/verifier.c:5512:2: note: here
  case BPF_PROG_TYPE_CGROUP_SKB:
  ^~~~

Warning level 3 was used: -Wimplicit-fallthrough=3

Notice that it's much clearer to explicitly add breaks in each case
(that actually contains some code), rather than letting the code to
fall through.

This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.

Signed-off-by: Gustavo A. R. Silva <redacted>
---
 kernel/bpf/verifier.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1e9d10b32984..e9fc28991548 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5509,11 +5509,13 @@ static int check_return_code(struct bpf_verifier_env *env)
                if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
                    env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG)
                        range = tnum_range(1, 1);
+               break;
        case BPF_PROG_TYPE_CGROUP_SKB:
                if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) {
                        range = tnum_range(0, 3);
                        enforce_attach_type_range = tnum_range(2, 3);
                }
+               break;
        case BPF_PROG_TYPE_CGROUP_SOCK:
        case BPF_PROG_TYPE_SOCK_OPS:
        case BPF_PROG_TYPE_CGROUP_DEVICE:
--
2.21.0

Re: [PATCH] bpf: verifier: avoid fall-through warnings

From: Gustavo A. R. Silva <hidden>
Date: 2019-06-11 17:48:21


On 6/11/19 12:22 PM, Andrii Nakryiko wrote:
On Tue, Jun 11, 2019 at 7:05 AM Gustavo A. R. Silva
[off-list ref] wrote:
quoted
In preparation to enabling -Wimplicit-fallthrough, this patch silences
the following warning:
Your patch doesn't apply cleanly to neither bpf nor bpf-next tree.
Could you please rebase and re-submit? Please also include which tree
(probably bpf-next) you are designating this patch to in subject
prefix.
This patch applies cleanly to linux-next (tag next-20190611).

--
Gustavo
quoted
kernel/bpf/verifier.c: In function ‘check_return_code’:
kernel/bpf/verifier.c:5509:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
      ^
kernel/bpf/verifier.c:5512:2: note: here
  case BPF_PROG_TYPE_CGROUP_SKB:
  ^~~~

Warning level 3 was used: -Wimplicit-fallthrough=3

Notice that it's much clearer to explicitly add breaks in each case
(that actually contains some code), rather than letting the code to
fall through.

This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.

Signed-off-by: Gustavo A. R. Silva <redacted>
---
 kernel/bpf/verifier.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1e9d10b32984..e9fc28991548 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5509,11 +5509,13 @@ static int check_return_code(struct bpf_verifier_env *env)
                if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
                    env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG)
                        range = tnum_range(1, 1);
+               break;
        case BPF_PROG_TYPE_CGROUP_SKB:
                if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) {
                        range = tnum_range(0, 3);
                        enforce_attach_type_range = tnum_range(2, 3);
                }
+               break;
        case BPF_PROG_TYPE_CGROUP_SOCK:
        case BPF_PROG_TYPE_SOCK_OPS:
        case BPF_PROG_TYPE_CGROUP_DEVICE:
--
2.21.0

Re: [PATCH] bpf: verifier: avoid fall-through warnings

From: Gustavo A. R. Silva <hidden>
Date: 2019-06-11 17:41:40


On 6/11/19 12:27 PM, Gustavo A. R. Silva wrote:

On 6/11/19 12:22 PM, Andrii Nakryiko wrote:
quoted
On Tue, Jun 11, 2019 at 7:05 AM Gustavo A. R. Silva
[off-list ref] wrote:
quoted
In preparation to enabling -Wimplicit-fallthrough, this patch silences
the following warning:
Your patch doesn't apply cleanly to neither bpf nor bpf-next tree.
Could you please rebase and re-submit? Please also include which tree
(probably bpf-next) you are designating this patch to in subject
prefix.
This patch applies cleanly to linux-next (tag next-20190611).
It seems that this commit hasn't been merged into bpf/bpf-next yet:

983695fa676568fc0fe5ddd995c7267aabc24632

--
Gustavo
quoted
quoted
kernel/bpf/verifier.c: In function ‘check_return_code’:
kernel/bpf/verifier.c:5509:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
      ^
kernel/bpf/verifier.c:5512:2: note: here
  case BPF_PROG_TYPE_CGROUP_SKB:
  ^~~~

Warning level 3 was used: -Wimplicit-fallthrough=3

Notice that it's much clearer to explicitly add breaks in each case
(that actually contains some code), rather than letting the code to
fall through.

This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.

Signed-off-by: Gustavo A. R. Silva <redacted>
---
 kernel/bpf/verifier.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1e9d10b32984..e9fc28991548 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5509,11 +5509,13 @@ static int check_return_code(struct bpf_verifier_env *env)
                if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
                    env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG)
                        range = tnum_range(1, 1);
+               break;
        case BPF_PROG_TYPE_CGROUP_SKB:
                if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) {
                        range = tnum_range(0, 3);
                        enforce_attach_type_range = tnum_range(2, 3);
                }
+               break;
        case BPF_PROG_TYPE_CGROUP_SOCK:
        case BPF_PROG_TYPE_SOCK_OPS:
        case BPF_PROG_TYPE_CGROUP_DEVICE:
--
2.21.0

Re: [PATCH] bpf: verifier: avoid fall-through warnings

From: Andrii Nakryiko <hidden>
Date: 2019-06-11 18:08:12

On Tue, Jun 11, 2019 at 10:41 AM Gustavo A. R. Silva
[off-list ref] wrote:


On 6/11/19 12:27 PM, Gustavo A. R. Silva wrote:
quoted

On 6/11/19 12:22 PM, Andrii Nakryiko wrote:
quoted
On Tue, Jun 11, 2019 at 7:05 AM Gustavo A. R. Silva
[off-list ref] wrote:
quoted
In preparation to enabling -Wimplicit-fallthrough, this patch silences
the following warning:
Your patch doesn't apply cleanly to neither bpf nor bpf-next tree.
Could you please rebase and re-submit? Please also include which tree
(probably bpf-next) you are designating this patch to in subject
prefix.
This patch applies cleanly to linux-next (tag next-20190611).
It seems that this commit hasn't been merged into bpf/bpf-next yet:

983695fa676568fc0fe5ddd995c7267aabc24632

--
Gustavo
quoted
quoted
quoted
kernel/bpf/verifier.c: In function ‘check_return_code’:
kernel/bpf/verifier.c:5509:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
      ^
kernel/bpf/verifier.c:5512:2: note: here
  case BPF_PROG_TYPE_CGROUP_SKB:
  ^~~~

Warning level 3 was used: -Wimplicit-fallthrough=3

Notice that it's much clearer to explicitly add breaks in each case
(that actually contains some code), rather than letting the code to
fall through.

This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.

Signed-off-by: Gustavo A. R. Silva <redacted>
---
 kernel/bpf/verifier.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 1e9d10b32984..e9fc28991548 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5509,11 +5509,13 @@ static int check_return_code(struct bpf_verifier_env *env)
                if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG ||
                    env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG)
                        range = tnum_range(1, 1);
+               break;
So this part is in bpf tree only...
quoted
quoted
quoted
        case BPF_PROG_TYPE_CGROUP_SKB:
                if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) {
                        range = tnum_range(0, 3);
                        enforce_attach_type_range = tnum_range(2, 3);
                }
+               break;
... while this one is in bpf-next only.

Maybe just split this into two separate patches, one targeting bpf
tree and another for bpf-next tree? Unless you are willing to wait
till bpf is merged into bpf-next.
quoted
quoted
quoted
        case BPF_PROG_TYPE_CGROUP_SOCK:
        case BPF_PROG_TYPE_SOCK_OPS:
        case BPF_PROG_TYPE_CGROUP_DEVICE:
--
2.21.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help