Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Mark syscall helpers as sleepable bpf_sys_bpf() executes the bpf(2) syscall body, which can take mutexes, allocate with GFP_KERNEL, and wait for an RCU grace period. bpf_sys_close() reaches close_fd() and filp_close(), which can sleep as well. Both helpers are limited to BPF_PROG_TYPE_SYSCALL, whose main program is sleepable. That does not make every callback sleepable: a syscall program can register a bpf_timer callback, and the verifier checks that callback in a non-sleepable context while retaining the syscall helper set. Without .might_sleep on the prototypes, such a callback can invoke bpf_sys_bpf() from hrtimer softirq context and trigger a scheduling-while-atomic failure. bpf_sys_close() is exposed through the same missing context check. Set .might_sleep on both prototypes so the existing helper-context check rejects them from timer callbacks and other atomic regions. Calls from the sleepable main body remain valid.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
79a7f8bdb159d9914b58740f3d31d602a6e4aca8 to < 9496d857205e60241034b798d7745ff8830ba599affected79a7f8bdb159d9914b58740f3d31d602a6e4aca8 to < d8cfe9f71d302970ae393616960f2b3021d2b3b0affected79a7f8bdb159d9914b58740f3d31d602a6e4aca8 to < 65f636322ac402add6046c68e9ece77b9ffd71c9affected79a7f8bdb159d9914b58740f3d31d602a6e4aca8 to < 3408e98f06ce06ea6a58ca6c39da9c23f0029c06affected79a7f8bdb159d9914b58740f3d31d602a6e4aca8 to < d05524794240b52fdc3b6c1220dd05505715824daffected
Linux Linux
Default version status: affected
5.14affected0 to < 5.14unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.57 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/9496d857205e60241034b798d7745ff8830ba599 ↗
- https://git.kernel.org/stable/c/d8cfe9f71d302970ae393616960f2b3021d2b3b0 ↗
- https://git.kernel.org/stable/c/65f636322ac402add6046c68e9ece77b9ffd71c9 ↗
- https://git.kernel.org/stable/c/3408e98f06ce06ea6a58ca6c39da9c23f0029c06 ↗
- https://git.kernel.org/stable/c/d05524794240b52fdc3b6c1220dd05505715824d ↗