summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
diff options
context:
space:
mode:
authorWill Deacon <will@kernel.org>2019-10-02 14:42:06 +0200
committerLinus Walleij <linus.walleij@linaro.org>2019-10-03 14:50:16 +0200
commitbe4c60b563edee3712d392aaeb0943a768df7023 (patch)
treeac614e11eb968b58841fe4c887d13f2d5fe5fba7 /drivers/pinctrl/ti/pinctrl-ti-iodelay.c
parentpinctrl: at91-pio4: implement .get_multiple and .set_multiple (diff)
downloadlinux-be4c60b563edee3712d392aaeb0943a768df7023.tar.xz
linux-be4c60b563edee3712d392aaeb0943a768df7023.zip
pinctrl: devicetree: Avoid taking direct reference to device name string
When populating the pinctrl mapping table entries for a device, the 'dev_name' field for each entry is initialised to point directly at the string returned by 'dev_name()' for the device and subsequently used by 'create_pinctrl()' when looking up the mappings for the device being probed. This is unreliable in the presence of calls to 'dev_set_name()', which may reallocate the device name string leaving the pinctrl mappings with a dangling reference. This then leads to a use-after-free every time the name is dereferenced by a device probe: | BUG: KASAN: invalid-access in strcmp+0x20/0x64 | Read of size 1 at addr 13ffffc153494b00 by task modprobe/590 | Pointer tag: [13], memory tag: [fe] | | Call trace: | __kasan_report+0x16c/0x1dc | kasan_report+0x10/0x18 | check_memory_region | __hwasan_load1_noabort+0x4c/0x54 | strcmp+0x20/0x64 | create_pinctrl+0x18c/0x7f4 | pinctrl_get+0x90/0x114 | devm_pinctrl_get+0x44/0x98 | pinctrl_bind_pins+0x5c/0x450 | really_probe+0x1c8/0x9a4 | driver_probe_device+0x120/0x1d8 Follow the example of sysfs, and duplicate the device name string before stashing it away in the pinctrl mapping entries. Cc: Linus Walleij <linus.walleij@linaro.org> Reported-by: Elena Petrova <lenaptr@google.com> Tested-by: Elena Petrova <lenaptr@google.com> Signed-off-by: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20191002124206.22928-1-will@kernel.org Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/ti/pinctrl-ti-iodelay.c')
0 files changed, 0 insertions, 0 deletions