Thread (4 messages) 4 messages, 4 authors, 2024-09-03

Re: [PATCH net v5] bpf, net: Fix a potential race in do_sock_getsockopt()

From: Stanislav Fomichev <sdf@fomichev.me>
Date: 2024-08-31 03:29:06
Also in: bpf, linux-arm-kernel, linux-mediatek, lkml

On 08/30, Tze-nan Wu wrote:
There's a potential race when `cgroup_bpf_enabled(CGROUP_GETSOCKOPT)` is
false during the execution of `BPF_CGROUP_GETSOCKOPT_MAX_OPTLEN`, but
becomes true when `BPF_CGROUP_RUN_PROG_GETSOCKOPT` is called.
This inconsistency can lead to `BPF_CGROUP_RUN_PROG_GETSOCKOPT` receiving
an "-EFAULT" from `__cgroup_bpf_run_filter_getsockopt(max_optlen=0)`.
Scenario shown as below:

           `process A`                      `process B`
           -----------                      ------------
  BPF_CGROUP_GETSOCKOPT_MAX_OPTLEN
                                            enable CGROUP_GETSOCKOPT
  BPF_CGROUP_RUN_PROG_GETSOCKOPT (-EFAULT)

To resolve this, remove the `BPF_CGROUP_GETSOCKOPT_MAX_OPTLEN` macro and
directly uses `copy_from_sockptr` to ensure that `max_optlen` is always 
set before `BPF_CGROUP_RUN_PROG_GETSOCKOPT` is invoked.

Fixes: 0d01da6afc54 ("bpf: implement getsockopt and setsockopt hooks")
Co-developed-by: Yanghui Li <redacted>
Signed-off-by: Yanghui Li <redacted>
Co-developed-by: Cheng-Jui Wang <redacted>
Signed-off-by: Cheng-Jui Wang <redacted>
Signed-off-by: Tze-nan Wu <redacted>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help