Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7525aa21 authored by Ke Zhang's avatar Ke Zhang Committed by Greg Kroah-Hartman
Browse files

serial: arc_uart: fix of_iomap leak in `arc_serial_probe`



[ Upstream commit 8ab5fc55d7f65d58a3c3aeadf11bdf60267cd2bd ]

Smatch reports:

drivers/tty/serial/arc_uart.c:631 arc_serial_probe() warn:
'port->membase' from of_iomap() not released on lines: 631.

In arc_serial_probe(), if uart_add_one_port() fails,
port->membase is not released, which would cause a resource leak.

To fix this, I replace of_iomap with devm_platform_ioremap_resource.

Fixes: 8dbe1d5e ("serial/arc: inline the probe helper")
Signed-off-by: default avatarKe Zhang <m202171830@hust.edu.cn>
Reviewed-by: default avatarDongliang Mu <dzm91@hust.edu.cn>
Link: https://lore.kernel.org/r/20230428031636.44642-1-m202171830@hust.edu.cn


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 5a903090
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -613,10 +613,11 @@ static int arc_serial_probe(struct platform_device *pdev)
	}
	uart->baud = val;

	port->membase = of_iomap(np, 0);
	if (!port->membase)
	port->membase = devm_platform_ioremap_resource(pdev, 0);
	if (IS_ERR(port->membase)) {
		/* No point of dev_err since UART itself is hosed here */
		return -ENXIO;
		return PTR_ERR(port->membase);
	}

	port->irq = irq_of_parse_and_map(np, 0);