summaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorViet Hoang Tran <hoang.tran@uclouvain.be>2019-04-15 11:54:55 +0200
committerAlexei Starovoitov <ast@kernel.org>2019-04-17 04:24:20 +0200
commit725721a6506eea53bfde81a34e91a06d6162c216 (patch)
treede84ddb9807311eae13b1fe9cf1c6da32eed66c6 /net/core
parentselftests: bpf: add VRF test cases to lwt_ip_encap test. (diff)
downloadlinux-725721a6506eea53bfde81a34e91a06d6162c216.tar.xz
linux-725721a6506eea53bfde81a34e91a06d6162c216.zip
bpf: allow clearing all sock_ops callback flags
The helper function bpf_sock_ops_cb_flags_set() can be used to both set and clear the sock_ops callback flags. However, its current behavior is not consistent. BPF program may clear a flag if more than one were set, or replace a flag with another one, but cannot clear all flags. This patch also updates the documentation to clarify the ability to clear flags of this helper function. Signed-off-by: Hoang Tran <hoang.tran@uclouvain.be> Acked-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/filter.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/core/filter.c b/net/core/filter.c
index bd1f51907b83..1833926a63fc 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -4437,8 +4437,7 @@ BPF_CALL_2(bpf_sock_ops_cb_flags_set, struct bpf_sock_ops_kern *, bpf_sock,
if (!IS_ENABLED(CONFIG_INET) || !sk_fullsock(sk))
return -EINVAL;
- if (val)
- tcp_sk(sk)->bpf_sock_ops_cb_flags = val;
+ tcp_sk(sk)->bpf_sock_ops_cb_flags = val;
return argval & (~BPF_SOCK_OPS_ALL_CB_FLAGS);
}