Description
In the Linux kernel, the following vulnerability has been resolved: staging: nvec: fix use-after-free in nvec_rx_completed() In nvec_rx_completed(), when an incomplete RX transfer is detected, nvec_msg_free() is called to return the message back to the pool by clearing its 'used' atomic flag. Immediately after this, the code accesses nvec->rx->data[0] to check the message type. Since nvec_msg_free() marks the pool slot as available via atomic_set(), any concurrent or subsequent call to nvec_msg_alloc() could claim that same slot and overwrite its data[] array. Reading nvec->rx->data[0] after freeing the message is therefore a use-after-free. Fix this by saving the message type byte before calling nvec_msg_free(), then using the saved value for the battery quirk check.
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
d6bdcf2e1019351cbc176e963b7756766bdd8721 to < 6b2ea886ebdae44a2394029844a4e78f58e1587daffectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < a37625c7b688fcf68a54263528eccbabfd7fa17aaffectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < 9f7fe4165a1f1014bdadc8e744c0fd3c2d8c0b89affectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < 08626fcfe12308ca3f8b22c538ba7dee0b2dce7aaffectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < f19a5bc059051143c489dd6f79a0f9c3bfd13aeaaffectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < bb3d592c7d6c4ec8ac6640c690ca13298e7e8e90affectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < 5de04caa46b635e180cecbd164e333eca535db94affectedd6bdcf2e1019351cbc176e963b7756766bdd8721 to < 26813881181deb3a32fbb59eadb2599cbe8423f6affected
Linux Linux
Default version status: affected
3.2affected0 to < 3.2unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/6b2ea886ebdae44a2394029844a4e78f58e1587d ↗
- https://git.kernel.org/stable/c/a37625c7b688fcf68a54263528eccbabfd7fa17a ↗
- https://git.kernel.org/stable/c/9f7fe4165a1f1014bdadc8e744c0fd3c2d8c0b89 ↗
- https://git.kernel.org/stable/c/08626fcfe12308ca3f8b22c538ba7dee0b2dce7a ↗
- https://git.kernel.org/stable/c/f19a5bc059051143c489dd6f79a0f9c3bfd13aea ↗
- https://git.kernel.org/stable/c/bb3d592c7d6c4ec8ac6640c690ca13298e7e8e90 ↗
- https://git.kernel.org/stable/c/5de04caa46b635e180cecbd164e333eca535db94 ↗
- https://git.kernel.org/stable/c/26813881181deb3a32fbb59eadb2599cbe8423f6 ↗