From 57fb738bde7c4242924da5d74dd5f43785a4b907 Mon Sep 17 00:00:00 2001 From: Jiamin Ma <jiamin.ma@amlogic.com> Date: Wed, 20 Sep 2017 14:54:31 +0800 Subject: [PATCH] uart: fix NULL pointer deferencing in suspend/resume PD#151229: driver defect clean up #235 #236 Change-Id: I59acc448a4ece1f385d0b6d602721d34ce60e02c Signed-off-by: Jiamin Ma <jiamin.ma@amlogic.com> --- drivers/amlogic/uart/meson_uart.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/amlogic/uart/meson_uart.c b/drivers/amlogic/uart/meson_uart.c index a691d4d36e9b02..9f5c2de0c35929 100644 --- a/drivers/amlogic/uart/meson_uart.c +++ b/drivers/amlogic/uart/meson_uart.c @@ -1150,12 +1150,15 @@ static int meson_uart_resume(struct platform_device *pdev) u32 val; port = platform_get_drvdata(pdev); - if (port) { - if (port->line == 0) - return 0; - uart_resume_port(&meson_uart_driver, port); + if (!port) { + dev_err(&pdev->dev, "port is NULL"); + return 0; } + if (port->line == 0) + return 0; + uart_resume_port(&meson_uart_driver, port); + val = readl(port->membase + AML_UART_CONTROL); if (!(val & AML_UART_TWO_WIRE_EN)) { val &= ~(0x1 << 31); @@ -1172,11 +1175,15 @@ static int meson_uart_suspend(struct platform_device *pdev, u32 val; port = platform_get_drvdata(pdev); - if (port) { - if (port->line == 0) - return 0; - uart_suspend_port(&meson_uart_driver, port); + if (!port) { + dev_err(&pdev->dev, "port is NULL"); + return 0; } + + if (port->line == 0) + return 0; + uart_suspend_port(&meson_uart_driver, port); + val = readl(port->membase + AML_UART_CONTROL); /* if rts/cts is open, pull up rts pin * when in suspend