summary refs log tree commit diff
path: root/kernel
diff options
context:
space:
mode:
authorStanislav Fomichev <sdf@google.com>2019-04-25 14:37:23 -0700
committerDaniel Borkmann <daniel@iogearbox.net>2019-04-25 23:49:06 +0200
commit118c8e9ae629d35fa9b3d27a7b9d59298b1b4183 (patch)
tree7ac43c744fec6cdd282557b4c56d30141dba3161 /kernel
parentead442a0f9aaecb4df3eb4055d1e2568b4fc0ae6 (diff)
downloadlinux-118c8e9ae629d35fa9b3d27a7b9d59298b1b4183.tar.gz
bpf: support BPF_PROG_QUERY for BPF_FLOW_DISSECTOR attach_type
target_fd is target namespace. If there is a flow dissector BPF program
attached to that namespace, its (single) id is returned.

v5:
* drop net ref right after rcu unlock (Daniel Borkmann)

v4:
* add missing put_net (Jann Horn)

v3:
* add missing inline to skb_flow_dissector_prog_query static def
  (kbuild test robot <lkp@intel.com>)

v2:
* don't sleep in rcu critical section (Jakub Kicinski)
* check input prog_cnt (exit early)

Cc: Jann Horn <jannh@google.com>
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/bpf/syscall.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 92c9b8a32b50..b0de49598341 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -2009,6 +2009,8 @@ static int bpf_prog_query(const union bpf_attr *attr,
 		break;
 	case BPF_LIRC_MODE2:
 		return lirc_prog_query(attr, uattr);
+	case BPF_FLOW_DISSECTOR:
+		return skb_flow_dissector_prog_query(attr, uattr);
 	default:
 		return -EINVAL;
 	}