Description
In the Linux kernel, the following vulnerability has been resolved: firmware: arm_scmi: Fix SCMI device destroy lifetimes scmi_child_dev_find() drops the reference returned by device_find_child() before returning the scmi_device pointer. A concurrent unregister can then release the device while the destroy path is still using the returned pointer. Make the lookup helper return the device_find_child() reference and keep it until scmi_device_destroy() has finished unregistering the child. Also split device_unregister() in __scmi_device_destroy() so the SCMI bus ID is not made reusable until after device_del() has removed the old scmi_dev.N name from sysfs. This avoids a new SCMI device reusing the same ID while the old device is still registered. The final device release callback is also a possible cleanup path when SCMI children are deleted by driver core recursion rather than __scmi_device_destroy(). Release the SCMI bus ID from a common helper used by destroy, register-failure and final-release paths, and clear scmi_dev->id after freeing it so the final release cannot free the same ID again.
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
2fbf6c9695ad9f05e7e5c166bf43fac7cb3276b3 to < d8ecdceeb90cd2c265b222a7b65487faf68fea73affected969d8beaa2e374387bf9aa5602ef84fc50bb48d8 to < 916e27f71a80f6d77c48d1a1a5782d6d5ef9017caffected9ca67840c0ddf3f39407339624cef824a4f27599 to < a60bc2df2d323cc1342f0cf95563cae266801e20affected9ca67840c0ddf3f39407339624cef824a4f27599 to < c59b3393df1348a12308aaabd5fbc58ed6b21cf5affected9ca67840c0ddf3f39407339624cef824a4f27599 to < 6abe8fe36b29ff51d1a42c2f338972883f4751a5affected91ff1e9652fb9beb0174267d6bb38243dff211bbaffectedff4273d47da81b95ed9396110bcbd1b7b7470fe8affected8a8a3547d5c4960da053df49c75bf623827a25daaffected6.6.90 to < 6.6.160affected6.12.28 to < 6.12.114affected5.15.182 to < 5.16affected6.1.138 to < 6.2affected6.14.6 to < 6.15affected
Linux Linux
Default version status: affected
6.15affected0 to < 6.15unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.57 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d8ecdceeb90cd2c265b222a7b65487faf68fea73 ↗
- https://git.kernel.org/stable/c/916e27f71a80f6d77c48d1a1a5782d6d5ef9017c ↗
- https://git.kernel.org/stable/c/a60bc2df2d323cc1342f0cf95563cae266801e20 ↗
- https://git.kernel.org/stable/c/c59b3393df1348a12308aaabd5fbc58ed6b21cf5 ↗
- https://git.kernel.org/stable/c/6abe8fe36b29ff51d1a42c2f338972883f4751a5 ↗