Linux: rust_binder: reschedule node refcount update on thread exit
What fixes it
- 71cbad138969edecef01b28dff87d91b56db538dLinuxCVE List
- 2a74ccd1bcc170e66525f34e9de8652b57e2cf3dLinuxCVE 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:
rust_binder: reschedule node refcount update on thread exit
When a thread exits via BINDER_THREAD_EXIT, its pending work items are cancelled. If a thread exits while holding a pending node refcount increment (e.g. pushed as deferred work to that thread), the refcount increment was previously dropped because Node::cancel() and NodeWrapper::cancel() were no-ops.
Dropping the refcount update leaves the node's delivery state and count state desynchronized, and userspace will not receive the notification, which can cause the node to never be freed from the process's nodes tree when all external references are dropped.
Fix this by implementing DeliverToRead::cancel() for Node and NodeWrapper to move the pending refcount update to the process's work queue on thread exit so another thread can deliver it to userspace.
Text from CVE List
Affected versions 8
- Linuxaffected: eafedbc7c050c44744fbdf80bdf3315e860b7513 before 71cbad138969edecef01b28dff87d91b56db538dCVE List
- Linuxaffected: eafedbc7c050c44744fbdf80bdf3315e860b7513 before fb0f8dfc5a030ed3d60a1d03acdc99c90ee99fc1CVE List
- Linuxaffected: eafedbc7c050c44744fbdf80bdf3315e860b7513 before 2a74ccd1bcc170e66525f34e9de8652b57e2cf3dCVE List
- Linuxaffected: 6.18CVE List
- Linuxunaffected: all versions before 6.18CVE List
- Linuxunaffected: 6.18.57 through 6.18.*CVE List
- Linuxunaffected: 7.2.11 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List