Linux: netconsole: take target_cleanup_list_lock in drop_netconsole_target()
What fixes it
- 84592ee22f7d1583ce33aa733411ff36c7a1c44cLinuxCVE List
- 91aeb87f052367a5a2743cc93777dfb4386f2f14LinuxCVE 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:
netconsole: take target_cleanup_list_lock in drop_netconsole_target()
drop_netconsole_target() unlinks the target while only holding target_list_lock. However, when the underlying interface has been unregistered, netconsole_netdev_event() moves the target from target_list to target_cleanup_list, and netconsole_process_cleanups_core() walks that list under target_cleanup_list_lock only.
If a user removes the configfs target at the same time the cleanup worker is iterating target_cleanup_list, list_del() can corrupt the list because the two paths take disjoint locks while operating on the same list node.
Acquire target_cleanup_list_lock around the list_del() so the unlink is serialised against netconsole_process_cleanups_core() regardless of which list the target currently belongs to. The state transition that downgrades STATE_DEACTIVATED to STATE_DISABLED is left intact and is performed under the same combined locking, preserving the existing ordering with resume_target().
Text from CVE List
Affected versions 8
- Linuxaffected: 97714695ef904a4bdba75ca2f339215c0ae2b1fa before 84592ee22f7d1583ce33aa733411ff36c7a1c44cCVE List
- Linuxaffected: 97714695ef904a4bdba75ca2f339215c0ae2b1fa before fe8e6c0a2f28bdab14cdf7eff4dd9755d3793007CVE List
- Linuxaffected: 97714695ef904a4bdba75ca2f339215c0ae2b1fa before 91aeb87f052367a5a2743cc93777dfb4386f2f14CVE List
- Linuxaffected: 6.12CVE List
- Linuxunaffected: all versions before 6.12CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List