Linux: bpf: Cancel special fields when recycling rhtab elements
What fixes it
- 28fde1356dbc35e20a9f22a5ee65af09698fdf92LinuxCVE List
- 65cc95eba9e8b46312cac38c227473605a4b996aLinuxCVE 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: Cancel special fields when recycling rhtab elements
rhtab_map_update_existing() and rhtab_delete_elem() call bpf_obj_free_fields() when replacing or deleting a value. These map operations can run from BPF programs in NMI context, where releasing a referenced kptr or another complex field is not generally safe.
Array and hash maps avoid that problem by cancelling only the asynchronous fields which can be stopped safely in the caller context. Other ownership state remains attached to the allocation until its memory allocator destructor performs the final cleanup.
Use bpf_obj_cancel_fields() for the corresponding rhtab paths as well. This cancels timers, workqueues, and task work while allowing rhtab_mem_dtor() to release referenced kptrs when the allocation is eventually destroyed.
[ kkd: Rebased, used direct helper calls, and rewrote the commit log ]
Text from CVE List
Affected versions 6
- Linuxaffected: 6905f8601298ecd2d1932a4b4849bf265201118e before 28fde1356dbc35e20a9f22a5ee65af09698fdf92CVE List
- Linuxaffected: 6905f8601298ecd2d1932a4b4849bf265201118e before 65cc95eba9e8b46312cac38c227473605a4b996aCVE List
- Linuxaffected: 7.2CVE List
- Linuxunaffected: all versions before 7.2CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List