diff options
| author | Victoria Votokina <Victoria.Votokina@kaspersky.com> | 2025-10-10 13:52:41 +0300 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-10-29 14:09:01 +0100 |
| commit | 7d851f746067b8ee5bac9c262f326ace0a6ea253 (patch) | |
| tree | 743b82d2789a033af9fded049e9d7235fe9b016e /drivers/most | |
| parent | f93a84ffb884d761a9d4e869ba29c238711e81f1 (diff) | |
| download | linux-7d851f746067b8ee5bac9c262f326ace0a6ea253.tar.gz linux-7d851f746067b8ee5bac9c262f326ace0a6ea253.tar.bz2 linux-7d851f746067b8ee5bac9c262f326ace0a6ea253.zip | |
most: usb: hdm_probe: Fix calling put_device() before device initialization
commit a8cc9e5fcb0e2eef21513a4fec888f5712cb8162 upstream.
The early error path in hdm_probe() can jump to err_free_mdev before
&mdev->dev has been initialized with device_initialize(). Calling
put_device(&mdev->dev) there triggers a device core WARN and ends up
invoking kref_put(&kobj->kref, kobject_release) on an uninitialized
kobject.
In this path the private struct was only kmalloc'ed and the intended
release is effectively kfree(mdev) anyway, so free it directly instead
of calling put_device() on an uninitialized device.
This removes the WARNING and fixes the pre-initialization error path.
Fixes: 97a6f772f36b ("drivers: most: add USB adapter driver")
Cc: stable <stable@kernel.org>
Signed-off-by: Victoria Votokina <Victoria.Votokina@kaspersky.com>
Link: https://patch.msgid.link/20251010105241.4087114-3-Victoria.Votokina@kaspersky.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/most')
| -rw-r--r-- | drivers/most/most_usb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/most/most_usb.c b/drivers/most/most_usb.c index cafe36145f1c..988e33f27970 100644 --- a/drivers/most/most_usb.c +++ b/drivers/most/most_usb.c @@ -1097,7 +1097,7 @@ err_free_cap: err_free_conf: kfree(mdev->conf); err_free_mdev: - put_device(&mdev->dev); + kfree(mdev); return ret; } |
