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: 8dbe1d5e09
("serial/arc: inline the probe helper")
Signed-off-by: Ke Zhang <m202171830@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
Link: https://lore.kernel.org/r/20230428031636.44642-1-m202171830@hust.edu.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e7fd68abbb
commit
153017561d
@ -609,10 +609,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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user