8250_men_mcb: fix error handling in read_uarts_available_from_reg()
authorYang Yingliang <yangyingliang@huawei.com>
Fri, 28 Jul 2023 08:57:23 +0000 (16:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 30 Jul 2023 11:52:52 +0000 (13:52 +0200)
If ioremap() fails, it returns NULL pointer, not ERR_PTR(), fix the
return value check and call release_mem_region() to release resource.

Fixes: c563831ba879 ("8250_men_mcb: Make UART config auto configurable")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20230728085723.3195044-1-yangyingliang@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_men_mcb.c

index c3143ff..5f30119 100644 (file)
@@ -94,8 +94,11 @@ static int read_uarts_available_from_register(struct resource *mem_res,
 
        mem = ioremap(mem_res->start + MEN_Z025_REGISTER_OFFSET,
                      MEM_UART_REGISTER_SIZE);
-       if (IS_ERR(mem))
+       if (!mem) {
+               release_mem_region(mem_res->start + MEN_Z025_REGISTER_OFFSET,
+                                  MEM_UART_REGISTER_SIZE);
                return -ENOMEM;
+       }
 
        reg_value = MEN_READ_REGISTER(mem);