diff options
| author | Zijun Hu <quic_zijuhu@quicinc.com> | 2024-07-27 16:34:01 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-12-14 19:54:00 +0100 |
| commit | fc1f391a71a3ee88291e205cffd673fe24d99266 (patch) | |
| tree | 6f2f12f7f952b5e5e3d977144c06c931387cd1e1 /drivers/base | |
| parent | d5a63a0bc860c441c4e5dcf28ec8036c9d3b2463 (diff) | |
| download | linux-fc1f391a71a3ee88291e205cffd673fe24d99266.tar.gz linux-fc1f391a71a3ee88291e205cffd673fe24d99266.tar.bz2 linux-fc1f391a71a3ee88291e205cffd673fe24d99266.zip | |
driver core: bus: Fix double free in driver API bus_register()
commit bfa54a793ba77ef696755b66f3ac4ed00c7d1248 upstream.
For bus_register(), any error which happens after kset_register() will
cause that @priv are freed twice, fixed by setting @priv with NULL after
the first free.
Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
Link: https://lore.kernel.org/r/20240727-bus_register_fix-v1-1-fed8dd0dba7a@quicinc.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
[ Brennan : Backport requires bus->p = NULL instead of priv = NULL ]
Signed-off-by: Brennan Lamoreaux <brennan.lamoreaux@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/bus.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 339a9edcde5f..941532ddfdc6 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -853,6 +853,8 @@ bus_devices_fail: bus_remove_file(bus, &bus_attr_uevent); bus_uevent_fail: kset_unregister(&bus->p->subsys); + /* Above kset_unregister() will kfree @bus->p */ + bus->p = NULL; out: kfree(bus->p); bus->p = NULL; |
