Description
In the Linux kernel, the following vulnerability has been resolved: mfd: sm501: Fix reference leak on failed device registration When platform_device_register() fails in sm501_register_device(), the embedded struct device in pdev has already been initialized by device_initialize(), but the failure path only reports the error and returns without dropping the device reference for the current platform device: sm501_register_device() -> platform_device_register(pdev) -> device_initialize(&pdev->dev) -> setup_pdev_dma_masks(pdev) -> platform_device_add(pdev) This leads to a reference leak when platform_device_register() fails. Fix this by calling platform_device_put() before returning the error. The issue was identified by a static analysis tool I developed and confirmed by manual review.
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
b6d6454fdb66f3829af8b92ab06825b6060fdf7e to < bbb1ecaed4ed7680e63d3a0f143f03de32de5d6eaffectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < e2dac91380a10e9e8d5883fb73ce9d9b390a629caffectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < 0baf9d43a7b7b43df2900bd8656e75b725028b6eaffectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < a3e340d506c1036a747fb0972aebf1063f7ef30eaffectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < 760a1029692f1d788dc11aa636a3bf432e58b240affectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < 16a42c88c4667fa0bd944e438a667e059551f1f1affectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < 2ff8156fd500d54c61430b6834137fd0a07047ceaffectedb6d6454fdb66f3829af8b92ab06825b6060fdf7e to < 8c2f0b42fc252e1bf1c7746447091a468e784ca1affected
Linux Linux
Default version status: affected
2.6.21affected0 to < 2.6.21unaffected5.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/bbb1ecaed4ed7680e63d3a0f143f03de32de5d6e ↗
- https://git.kernel.org/stable/c/e2dac91380a10e9e8d5883fb73ce9d9b390a629c ↗
- https://git.kernel.org/stable/c/0baf9d43a7b7b43df2900bd8656e75b725028b6e ↗
- https://git.kernel.org/stable/c/a3e340d506c1036a747fb0972aebf1063f7ef30e ↗
- https://git.kernel.org/stable/c/760a1029692f1d788dc11aa636a3bf432e58b240 ↗
- https://git.kernel.org/stable/c/16a42c88c4667fa0bd944e438a667e059551f1f1 ↗
- https://git.kernel.org/stable/c/2ff8156fd500d54c61430b6834137fd0a07047ce ↗
- https://git.kernel.org/stable/c/8c2f0b42fc252e1bf1c7746447091a468e784ca1 ↗