Linux: bpf: Reject resilient lock operations in rbtree callbacks
What fixes it
- 71930202a0a0c49f0a3b45b41907a074cb780266LinuxCVE List
- 7b7b8b5960102566bd625ae829d1f330c5b5d104LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
bpf: Reject resilient lock operations in rbtree callbacks
__bpf_rbtree_add() keeps parent and link pointers live across calls to the program-supplied comparison callback. The verifier therefore requires the root's lock to remain held throughout the callback.
The helper path enforces this rule for bpf_spin_lock() and bpf_spin_unlock(), but the resilient lock kfunc argument path does not. Since resilient locks may protect BPF rbtree roots, a callback can release the root lock and let another CPU remove and free the node referenced by the in-progress tree walk. The walk then resumes using freed pointers.
Reject resilient lock kfuncs in an rbtree comparison callback, matching the existing policy for the spin lock helpers. Resilient-lock-protected trees remain valid when their comparison callbacks leave lock state alone.
Text from CVE List
Affected versions 8
- Linuxaffected: 0de2046137f976e7302d43ac01d9894d07ac1fff before cc2e065ed206aecd9b94564779244f3ffb26e356CVE List
- Linuxaffected: 0de2046137f976e7302d43ac01d9894d07ac1fff before 71930202a0a0c49f0a3b45b41907a074cb780266CVE List
- Linuxaffected: 0de2046137f976e7302d43ac01d9894d07ac1fff before 7b7b8b5960102566bd625ae829d1f330c5b5d104CVE List
- Linuxaffected: 6.15CVE List
- Linuxunaffected: all versions before 6.15CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List