diff options
author | Lorenz Bauer <lmb@cloudflare.com> | 2021-03-26 19:05:01 +0300 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2021-04-02 00:33:48 +0300 |
commit | d37300ed182131f1757895a62e556332857417e5 (patch) | |
tree | d1db694c30c7e6d5af91eb3a5b6897bb869cd924 /kernel/bpf/inode.c | |
parent | 25fc94b2f02d832fa8e29419699dcc20b0b05c6a (diff) | |
download | linux-d37300ed182131f1757895a62e556332857417e5.tar.xz |
bpf: program: Refuse non-O_RDWR flags in BPF_OBJ_GET
As for bpf_link, refuse creating a non-O_RDWR fd. Since program fds
currently don't allow modifications this is a precaution, not a
straight up bug fix.
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20210326160501.46234-2-lmb@cloudflare.com
Diffstat (limited to 'kernel/bpf/inode.c')
-rw-r--r-- | kernel/bpf/inode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/bpf/inode.c b/kernel/bpf/inode.c index dc56237d6960..d2de2abec35b 100644 --- a/kernel/bpf/inode.c +++ b/kernel/bpf/inode.c @@ -543,7 +543,7 @@ int bpf_obj_get_user(const char __user *pathname, int flags) return PTR_ERR(raw); if (type == BPF_TYPE_PROG) - ret = bpf_prog_new_fd(raw); + ret = (f_flags != O_RDWR) ? -EINVAL : bpf_prog_new_fd(raw); else if (type == BPF_TYPE_MAP) ret = bpf_map_new_fd(raw, f_flags); else if (type == BPF_TYPE_LINK) |