]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
most: core: fix leak on early registration failure
authorJohan Hovold <johan@kernel.org>
Fri, 16 Jan 2026 16:29:50 +0000 (17:29 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Jan 2026 14:53:30 +0000 (15:53 +0100)
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>
drivers/most/core.c

index 6277e6702ca8cd6343d716c362279e02897add71..40d63e38fef544f16735a4f7a28f2d8edf4ac2f3 100644 (file)
@@ -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");