]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tty: xilinx_uartps: Check clk_enable return value
authorShubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Fri, 29 Jul 2022 11:47:42 +0000 (17:17 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Aug 2022 11:25:03 +0000 (13:25 +0200)
If clocks are not enabled the register access may hang the system.
Check for the clock enable return value and bail out if not enabled.

Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Link: https://lore.kernel.org/r/20220729114748.18332-2-shubhrajyoti.datta@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/xilinx_uartps.c

index 9e01fe6c0ab8c217b1d4ec3015b38639feb62e82..51fd09e14edad28ffb6434a6417514a80ab95f35 100644 (file)
@@ -1329,12 +1329,20 @@ static int cdns_uart_resume(struct device *device)
        unsigned long flags;
        u32 ctrl_reg;
        int may_wake;
+       int ret;
 
        may_wake = device_may_wakeup(device);
 
        if (console_suspend_enabled && uart_console(port) && !may_wake) {
-               clk_enable(cdns_uart->pclk);
-               clk_enable(cdns_uart->uartclk);
+               ret = clk_enable(cdns_uart->pclk);
+               if (ret)
+                       return ret;
+
+               ret = clk_enable(cdns_uart->uartclk);
+               if (ret) {
+                       clk_disable(cdns_uart->pclk);
+                       return ret;
+               }
 
                spin_lock_irqsave(&port->lock, flags);