Description
In the Linux kernel, the following vulnerability has been resolved: pinctrl: devicetree: don't free uninitialized dev_name on error path dt_remember_or_free_map() duplicates dev_name for each map entry. If kstrdup_const() fails, dt_free_map() frees dev_name in all num_maps entries, including entries that have not been initialized. Some pinctrl drivers, including pinctrl-imx, allocate the map with kmalloc() and leave dev_name for the core to initialize. The untouched entries therefore contain uninitialized data which is passed to kfree_const(). Reproduced on qemu's mcimx6ul-evk (pinctrl-imx) with failslab injection while binding the pinctrl-consuming device, under KASAN: BUG: KASAN: double-free in dt_free_map+0x34/0xa4 Free of addr c425a900 by task init/1 kfree from dt_free_map+0x34/0xa4 dt_free_map from dt_remember_or_free_map+0x184/0x198 dt_remember_or_free_map from pinctrl_dt_to_map+0x33c/0x4c8 pinctrl_dt_to_map from create_pinctrl+0x9c/0x5c0 Initialize all dev_name fields to NULL before duplicating the device name, making the full-map cleanup safe after a partial failure.
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
be4c60b563edee3712d392aaeb0943a768df7023 to < e3cfb22bad363bebcfd55d909e12d499cb8c5490affectedbe4c60b563edee3712d392aaeb0943a768df7023 to < 1586423da2739a80871ef6240016fcb9c7339bfbaffectedbe4c60b563edee3712d392aaeb0943a768df7023 to < dec5f0a8080502908dec5e35597c7ae07d533a3baffectedbe4c60b563edee3712d392aaeb0943a768df7023 to < 929f6396baade89999ec8a1281232c101cbc727daffectedbe4c60b563edee3712d392aaeb0943a768df7023 to < 321fe3584a8298386938130d138191aa35040b75affectedbe4c60b563edee3712d392aaeb0943a768df7023 to < ad0ad3c228b6f76fde10f32047e0ec5fbc109dc8affectedbe4c60b563edee3712d392aaeb0943a768df7023 to < 9d00a5ac7cd3d32ae61140f4b8a62f136de84e7daffectedbe4c60b563edee3712d392aaeb0943a768df7023 to < 015b5bcbcb622b32317642be91a7f79aa5413649affected03f69244302d7954f42f528ea2d45903ebbf59f3affected77440c3a37203e3f4667d06e37f76ef3968d2d8caffected679c4f27b8958b65bb51d1c3dfdbf3befe4a33a3affectedf88ac1330779c5bfdd79f7d7f7d4d3343c782f92affectedf739a699db7d5a5cf39ca3ce2c84e4fe4a8f4c5daffected4.4.244 to < 4.5affected4.9.244 to < 4.10affected4.14.161 to < 4.15affected4.19.92 to < 4.20affected5.4.7 to < 5.5affected
Linux Linux
Default version status: affected
5.5affected0 to < 5.5unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.151 to ≤ 6.6.*unaffected6.12.103 to ≤ 6.12.*unaffected6.18.44 to ≤ 6.18.*unaffected7.1.8 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e3cfb22bad363bebcfd55d909e12d499cb8c5490 ↗
- https://git.kernel.org/stable/c/1586423da2739a80871ef6240016fcb9c7339bfb ↗
- https://git.kernel.org/stable/c/dec5f0a8080502908dec5e35597c7ae07d533a3b ↗
- https://git.kernel.org/stable/c/929f6396baade89999ec8a1281232c101cbc727d ↗
- https://git.kernel.org/stable/c/321fe3584a8298386938130d138191aa35040b75 ↗
- https://git.kernel.org/stable/c/ad0ad3c228b6f76fde10f32047e0ec5fbc109dc8 ↗
- https://git.kernel.org/stable/c/9d00a5ac7cd3d32ae61140f4b8a62f136de84e7d ↗
- https://git.kernel.org/stable/c/015b5bcbcb622b32317642be91a7f79aa5413649 ↗