|
Takashi Iwai |
5361d5 |
From 8ab5fc55d7f65d58a3c3aeadf11bdf60267cd2bd Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
5361d5 |
From: Ke Zhang <m202171830@hust.edu.cn>
|
|
Takashi Iwai |
5361d5 |
Date: Fri, 28 Apr 2023 11:16:36 +0800
|
|
Takashi Iwai |
5361d5 |
Subject: [PATCH] serial: arc_uart: fix of_iomap leak in `arc_serial_probe`
|
|
Takashi Iwai |
5361d5 |
Git-commit: 8ab5fc55d7f65d58a3c3aeadf11bdf60267cd2bd
|
|
Takashi Iwai |
5361d5 |
Patch-mainline: 6.4-rc3
|
|
Takashi Iwai |
5361d5 |
References: git-fixes
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
Smatch reports:
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
drivers/tty/serial/arc_uart.c:631 arc_serial_probe() warn:
|
|
Takashi Iwai |
5361d5 |
'port->membase' from of_iomap() not released on lines: 631.
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
In arc_serial_probe(), if uart_add_one_port() fails,
|
|
Takashi Iwai |
5361d5 |
port->membase is not released, which would cause a resource leak.
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
To fix this, I replace of_iomap with devm_platform_ioremap_resource.
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
Fixes: 8dbe1d5e09a7 ("serial/arc: inline the probe helper")
|
|
Takashi Iwai |
5361d5 |
Signed-off-by: Ke Zhang <m202171830@hust.edu.cn>
|
|
Takashi Iwai |
5361d5 |
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
|
|
Takashi Iwai |
5361d5 |
Link: https://lore.kernel.org/r/20230428031636.44642-1-m202171830@hust.edu.cn
|
|
Takashi Iwai |
5361d5 |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Takashi Iwai |
5361d5 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
---
|
|
Takashi Iwai |
5361d5 |
drivers/tty/serial/arc_uart.c | 7 ++++---
|
|
Takashi Iwai |
5361d5 |
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c
|
|
Takashi Iwai |
5361d5 |
index 59e25f2b6632..4b2512eef577 100644
|
|
Takashi Iwai |
5361d5 |
--- a/drivers/tty/serial/arc_uart.c
|
|
Takashi Iwai |
5361d5 |
+++ b/drivers/tty/serial/arc_uart.c
|
|
Takashi Iwai |
5361d5 |
@@ -606,10 +606,11 @@ static int arc_serial_probe(struct platform_device *pdev)
|
|
Takashi Iwai |
5361d5 |
}
|
|
Takashi Iwai |
5361d5 |
uart->baud = val;
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
- port->membase = of_iomap(np, 0);
|
|
Takashi Iwai |
5361d5 |
- if (!port->membase)
|
|
Takashi Iwai |
5361d5 |
+ port->membase = devm_platform_ioremap_resource(pdev, 0);
|
|
Takashi Iwai |
5361d5 |
+ if (IS_ERR(port->membase)) {
|
|
Takashi Iwai |
5361d5 |
/* No point of dev_err since UART itself is hosed here */
|
|
Takashi Iwai |
5361d5 |
- return -ENXIO;
|
|
Takashi Iwai |
5361d5 |
+ return PTR_ERR(port->membase);
|
|
Takashi Iwai |
5361d5 |
+ }
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
port->irq = irq_of_parse_and_map(np, 0);
|
|
Takashi Iwai |
5361d5 |
|
|
Takashi Iwai |
5361d5 |
--
|
|
Takashi Iwai |
5361d5 |
2.35.3
|
|
Takashi Iwai |
5361d5 |
|