summaryrefslogtreecommitdiff
path: root/rust/zerocopy-derive/derive/git@git.tavy.me:linux.git
diff options
context:
space:
mode:
authorKarl Mehltretter <kmehltretter@gmail.com>2026-07-19 14:11:40 +0200
committerLinus Walleij <linusw@kernel.org>2026-07-25 11:17:23 +0200
commit015b5bcbcb622b32317642be91a7f79aa5413649 (patch)
treeb074969498f973c851332a140c55c6b6ccde35fd /rust/zerocopy-derive/derive/git@git.tavy.me:linux.git
parentb2b5eb68835d75e3444829a4af8c293f59bf2396 (diff)
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. Fixes: be4c60b563ed ("pinctrl: devicetree: Avoid taking direct reference to device name string") Cc: stable@vger.kernel.org Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
Diffstat (limited to 'rust/zerocopy-derive/derive/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions