Merge "target: init: Fix battery detection for PMI632"
diff --git a/dev/fbcon/fbcon.c b/dev/fbcon/fbcon.c
index adc5e29..c9d0df6 100644
--- a/dev/fbcon/fbcon.c
+++ b/dev/fbcon/fbcon.c
@@ -21,7 +21,7 @@
  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
@@ -183,8 +183,13 @@
 	unsigned i, j;
 	uint32_t bg_color, check_color, tmp_color, tmp1_color;
 	char *pixels;
-	unsigned count = config->width * (FONT_HEIGHT * (y_end - y_start) - 1);
+	unsigned count;
 
+	/* ignore anything that happens before fbcon is initialized */
+	if (!config)
+		return;
+
+	count = config->width * (FONT_HEIGHT * (y_end - y_start) - 1);
 	pixels = config->base;
 	pixels += y_start * ((config->bpp / 8) * FONT_HEIGHT * config->width);
 
@@ -221,6 +226,10 @@
 	unsigned total_x, total_y;
 	unsigned bytes_per_bpp;
 
+	/* ignore anything that happens before fbcon is initialized */
+	if (!config)
+		return;
+
 	if (config->update_start)
 		config->update_start();
 	if (config->update_done)
@@ -235,9 +244,17 @@
 /* TODO: Take stride into account */
 static void fbcon_scroll_up(void)
 {
-	unsigned short *dst = config->base;
-	unsigned short *src = dst + (config->width * FONT_HEIGHT);
-	unsigned count = config->width * (config->height - FONT_HEIGHT);
+	unsigned short *dst = NULL;
+	unsigned short *src = NULL;
+	unsigned count = 0;
+
+	/* ignore anything that happens before fbcon is initialized */
+	if (!config)
+		return;
+
+	dst = config->base;
+	src = dst + (config->width * FONT_HEIGHT);
+	count = config->width * (config->height - FONT_HEIGHT);
 
 	while(count--) {
 		*dst++ = *src++;
@@ -257,6 +274,10 @@
 	uint32_t line_color, tmp_color;
 	int i, j;
 
+	/* ignore anything that happens before fbcon is initialized */
+	if (!config)
+		return;
+
 	/* set line's color via diffrent type */
 	line_color = fb_color_formats[type].fg;
 
@@ -291,10 +312,17 @@
 void fbcon_clear(void)
 {
 	unsigned long i = 0, j = 0;
-	unsigned char *pixels = config->base;
-	unsigned count = config->width * config->height;
+	unsigned char *pixels = NULL;
+	unsigned count;
 	uint32_t bg_color;
 
+	/* ignore anything that happens before fbcon is initialized */
+	if (!config)
+		return;
+
+	pixels = config->base;
+	count =  config->width * config->height;
+
 	fbcon_set_colors(FBCON_COMMON_MSG);
 	for (i = 0; i < count; i++) {
 		bg_color = BGCOLOR;
diff --git a/platform/msm_shared/display_menu.c b/platform/msm_shared/display_menu.c
index 391e5ff..8b74c9a 100644
--- a/platform/msm_shared/display_menu.c
+++ b/platform/msm_shared/display_menu.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
@@ -201,14 +201,10 @@
 			for (i = 0; i < diff; i++) {
 				strlcat(str_target, " ", max_x);
 			}
-			strlcat(str_target, str, max_x);
-			return str_target;
-		} else {
-			free(str_target);
-			return str;
 		}
+		strlcat(str_target, str, max_x);
 	}
-	return str;
+	return str_target;
 }
 
 /* msg_lock need to be holded when call this function. */