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