serial: pic32: fix missing clk_disable_unprepare() on error in pic32_uart_startup()
authorYang Yingliang <yangyingliang@huawei.com>
Wed, 25 May 2022 02:12:04 +0000 (10:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Jun 2022 11:33:28 +0000 (13:33 +0200)
Fix the missing clk_disable_unprepare() before return
from pic32_uart_startup() in the error handling case.

Fixes: 157b9394709e ("serial: pic32_uart: Add PIC32 UART driver")
Reported-by: Hulk Robot <hulkci@huawei.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20220525021204.2407631-1-yangyingliang@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/pic32_uart.c

index b399aac530fe6bd7dce7dd30060c844f55f84797..f418f1de66b35c9a8c11dd83c9ebcde01cb90394 100644 (file)
@@ -503,7 +503,7 @@ static int pic32_uart_startup(struct uart_port *port)
        if (!sport->irq_fault_name) {
                dev_err(port->dev, "%s: kasprintf err!", __func__);
                ret = -ENOMEM;
-               goto out_done;
+               goto out_disable_clk;
        }
        irq_set_status_flags(sport->irq_fault, IRQ_NOAUTOEN);
        ret = request_irq(sport->irq_fault, pic32_uart_fault_interrupt,
@@ -579,6 +579,8 @@ out_r:
 out_f:
        free_irq(sport->irq_fault, port);
        kfree(sport->irq_fault_name);
+out_disable_clk:
+       clk_disable_unprepare(sport->clk);
 out_done:
        return ret;
 }