thunderbolt: Fix memory leak in margining_port_remove()
authorYaxiong Tian <tianyaxiong@kylinos.cn>
Wed, 22 Nov 2023 08:02:43 +0000 (16:02 +0800)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 27 Nov 2023 10:45:47 +0000 (12:45 +0200)
The dentry returned by debugfs_lookup() needs to be released by calling
dput() which is missing in margining_port_remove(). Fix this by calling
debugfs_lookup_and_remove() that combines both and avoids the memory leak.

Fixes: d0f1e0c2a699 ("thunderbolt: Add support for receiver lane margining")
Cc: stable@vger.kernel.org
Signed-off-by: Yaxiong Tian <tianyaxiong@kylinos.cn>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/debugfs.c

index c9ddd49138d8223e913c99f1a463880840473620..e324cd899719371a1c0248b3e2ea0e75d9df6197 100644 (file)
@@ -959,7 +959,7 @@ static void margining_port_remove(struct tb_port *port)
        snprintf(dir_name, sizeof(dir_name), "port%d", port->port);
        parent = debugfs_lookup(dir_name, port->sw->debugfs_dir);
        if (parent)
-               debugfs_remove_recursive(debugfs_lookup("margining", parent));
+               debugfs_lookup_and_remove("margining", parent);
 
        kfree(port->usb4->margining);
        port->usb4->margining = NULL;