mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
thunderbolt: Fix memory leak in margining
commitacec726473upstream. Memory for the usb4->margining needs to be relased for the upstream port of the router as well, even though the debugfs directory gets released with the router device removal. Fix this. Fixes:d0f1e0c2a6("thunderbolt: Add support for receiver lane margining") Cc: stable@vger.kernel.org Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f2326d046a
commit
f390095bbd
@@ -942,7 +942,8 @@ 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);
|
||||
debugfs_remove_recursive(debugfs_lookup("margining", parent));
|
||||
if (parent)
|
||||
debugfs_remove_recursive(debugfs_lookup("margining", parent));
|
||||
|
||||
kfree(port->usb4->margining);
|
||||
port->usb4->margining = NULL;
|
||||
@@ -967,19 +968,18 @@ static void margining_switch_init(struct tb_switch *sw)
|
||||
|
||||
static void margining_switch_remove(struct tb_switch *sw)
|
||||
{
|
||||
struct tb_port *upstream, *downstream;
|
||||
struct tb_switch *parent_sw;
|
||||
struct tb_port *downstream;
|
||||
u64 route = tb_route(sw);
|
||||
|
||||
if (!route)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Upstream is removed with the router itself but we need to
|
||||
* remove the downstream port margining directory.
|
||||
*/
|
||||
upstream = tb_upstream_port(sw);
|
||||
parent_sw = tb_switch_parent(sw);
|
||||
downstream = tb_port_at(route, parent_sw);
|
||||
|
||||
margining_port_remove(upstream);
|
||||
margining_port_remove(downstream);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user