thunderbolt: Fix memory leak in margining_port_remove()
authorYaxiong Tian <tianyaxiong@kylinos.cn>
Wed, 22 Nov 2023 08:02:43 +0000 (16:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Jan 2024 12:42:46 +0000 (12:42 +0000)
commit ac43c9122e4287bbdbe91e980fc2528acb72cc1e upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/thunderbolt/debugfs.c

index c9ddd49..e324cd8 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;