From be9e7b5da26c4329b8b6e2cc5b71d19022d0801d Mon Sep 17 00:00:00 2001
From: Jerry Lee <jerrylee@broadcom.com>
Date: Tue, 18 Aug 2015 18:54:25 -0700
Subject: [PATCH] Fix for wrong sequence call, set_fs

    b/23286899
    Save previous value first and then change to KERNEL_DS address limit

Change-Id: I4e375319d68ba880b302fc5db5a5f548612cec7e
Signed-off-by: Jerry Lee <jerrylee@broadcom.com>
---
 drivers/net/wireless/bcmdhd/dhd_linux.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c
index 6e89f07fb3a9..23978f458775 100644
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -4615,8 +4615,11 @@ dhd_init_logstrs_array(dhd_event_log_t *temp)
 		return BCME_OK;
 	}
 	kflags = in_atomic() ? GFP_ATOMIC : GFP_KERNEL;
-	set_fs(KERNEL_DS);
+
+	/* Save previous address limit first and then change to KERNEL_DS address limit */
 	fs = get_fs();
+	set_fs(KERNEL_DS);
+
 	filep = filp_open(logstrs_path, O_RDONLY, 0);
 	if (IS_ERR(filep)) {
 		DHD_ERROR(("Failed to open the file logstrs.bin in %s, %s\n",  __FUNCTION__, logstrs_path));
@@ -4730,7 +4733,10 @@ fail:
 	}
 	if (!IS_ERR(filep))
 		filp_close(filep, NULL);
+
+	/* Restore previous address limit */
 	set_fs(fs);
+
 	temp->fmts = NULL;
 	return -1;
 }
-- 
GitLab