On Tue, 31 Oct 2023, Lee Jones wrote: > From: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> > > commit 6c2f421174273de8f83cde4286d1c076d43a2d35 upstream. > > Several core drivers and buses expect that driver_override is a > dynamically allocated memory thus later they can kfree() it. > > However such assumption is not documented, there were in the past and > there are already users setting it to a string literal. This leads to > kfree() of static memory during device release (e.g. in error paths or > during unbind): > > kernel BUG at ../mm/slub.c:3960! > Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM > ... > (kfree) from [<c058da50>] (platform_device_release+0x88/0xb4) > (platform_device_release) from [<c0585be0>] (device_release+0x2c/0x90) > (device_release) from [<c0a69050>] (kobject_put+0xec/0x20c) > (kobject_put) from [<c0f2f120>] (exynos5_clk_probe+0x154/0x18c) > (exynos5_clk_probe) from [<c058de70>] (platform_drv_probe+0x6c/0xa4) > (platform_drv_probe) from [<c058b7ac>] (really_probe+0x280/0x414) > (really_probe) from [<c058baf4>] (driver_probe_device+0x78/0x1c4) > (driver_probe_device) from [<c0589854>] (bus_for_each_drv+0x74/0xb8) > (bus_for_each_drv) from [<c058b48c>] (__device_attach+0xd4/0x16c) > (__device_attach) from [<c058a638>] (bus_probe_device+0x88/0x90) > (bus_probe_device) from [<c05871fc>] (device_add+0x3dc/0x62c) > (device_add) from [<c075ff10>] (of_platform_device_create_pdata+0x94/0xbc) > (of_platform_device_create_pdata) from [<c07600ec>] (of_platform_bus_create+0x1a8/0x4fc) > (of_platform_bus_create) from [<c0760150>] (of_platform_bus_create+0x20c/0x4fc) > (of_platform_bus_create) from [<c07605f0>] (of_platform_populate+0x84/0x118) > (of_platform_populate) from [<c0f3c964>] (of_platform_default_populate_init+0xa0/0xb8) > (of_platform_default_populate_init) from [<c01031f8>] (do_one_initcall+0x8c/0x404) > > Provide a helper which clearly documents the usage of driver_override. > This will allow later to reuse the helper and reduce the amount of > duplicated code. > > Convert the platform driver to use a new helper and make the > driver_override field const char (it is not modified by the core). > > Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> > Link: https://lore.kernel.org/r/20220419113435.246203-2-krzysztof.kozlowski@xxxxxxxxxx > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Lee Jones <lee@xxxxxxxxxx> > Change-Id: Ic3c1fefbb9bf1a27f7adcca5bf0405e02d2f7775 Disregard this set please! I'm pre-coffee and operated in the wrong kernel directory with the incorrect `commit-msg` enabled. -- Lee Jones [李琼斯]