ANDROID: Revert "bpf: program: Refuse non-O_RDWR flags in BPF_OBJ_GET"

This reverts commit d37300ed18.

This breaks Android userspace which expects to be able to
fetch programs with just read permissions.

See: https://cs.android.com/android/platform/superproject/+/master:frameworks/libs/net/common/native/bpf_syscall_wrappers/include/BpfSyscallWrappers.h;drc=7005c764be23d31fa1d69e826b4a2f6689a8c81e;l=124

Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Greg Kroah-Hartman <gregkh@google.com>
Cc: Lorenz Bauer <lmb@cloudflare.com>
Fixes: d37300ed18 ("bpf: program: Refuse non-O_RDWR flags in BPF_OBJ_GET")
Signed-off-by: Maciej Żenczykowski <maze@google.com>

Reason for revert:
  This reverts commit 9f16040d22
  which breaks Android userspace.
  See: https://patchwork.kernel.org/project/netdevbpf/patch/20210618105526.265003-1-zenczykowski@gmail.com/

Test: TreeHugger
  manual inspection of netd's traffic controller startup suceeding
Change-Id: I1b8f0d7f8b6fbad69b51503ebe18cec2ac14aef0
Signed-off-by: Maciej Żenczykowski <maze@google.com>
This commit is contained in:
Maciej Żenczykowski
2021-06-18 10:43:17 +00:00
parent 80af3825b7
commit 1f3d36b19a
+1 -1
View File
@@ -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 = (f_flags != O_RDWR) ? -EINVAL : bpf_prog_new_fd(raw);
ret = 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)