summaryrefslogtreecommitdiff
path: root/drivers/most
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2026-01-16 17:29:50 +0100
committerSasha Levin <sashal@kernel.org>2026-03-04 07:21:36 -0500
commitf1ba620f9e8d7291f80c0554e4b820f5fb30e819 (patch)
tree887f19ec9c9a8bb7eb2b1f73fa7fd9ab924e1551 /drivers/most
parentc954666a0707966400f81de65b79de1fd96ada25 (diff)
most: core: fix leak on early registration failure
[ Upstream commit 2c198c272f9c9213b0fdf6b4a879f445c574f416 ] A recent commit fixed a resource leak on early registration failures but for some reason left out the first error path which still leaks the resources associated with the interface. Fix up also the first error path so that the interface is always released on errors. Fixes: 1f4c9d8a1021 ("most: core: fix resource leak in most_register_interface error paths") Fixes: 723de0f9171e ("staging: most: remove device from interface structure") Cc: Christian Gromm <christian.gromm@microchip.com> Cc: Navaneeth K <knavaneeth786@gmail.com> Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://patch.msgid.link/20260116162950.21578-1-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/most')
-rw-r--r--drivers/most/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/most/core.c b/drivers/most/core.c
index 6277e6702ca8..40d63e38fef5 100644
--- a/drivers/most/core.c
+++ b/drivers/most/core.c
@@ -1282,12 +1282,17 @@ int most_register_interface(struct most_interface *iface)
int id;
struct most_channel *c;
- if (!iface || !iface->enqueue || !iface->configure ||
- !iface->poison_channel || (iface->num_channels > MAX_CHANNELS))
+ if (!iface)
return -EINVAL;
device_initialize(iface->dev);
+ if (!iface->enqueue || !iface->configure || !iface->poison_channel ||
+ (iface->num_channels > MAX_CHANNELS)) {
+ put_device(iface->dev);
+ return -EINVAL;
+ }
+
id = ida_alloc(&mdev_id, GFP_KERNEL);
if (id < 0) {
dev_err(iface->dev, "Failed to allocate device ID\n");