From 8f029e767b603dc13eb235c9ae0e223451c113ce Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Tue, 1 Dec 2015 17:24:53 -0800 Subject: [PATCH] diag: Remove null pointer dereference from diag_md_session_close Remove reference to session_info after handle is closed. Store the peripheral masks in a local variable before closing the session. Use stored value instead of closed session_info handle. CRs-fixed: 930676 Change-Id: I08179b100926883f0cb84e0de35cc356e9cc9a03 Signed-off-by: Chris Lew --- drivers/char/diag/diagchar_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/char/diag/diagchar_core.c b/drivers/char/diag/diagchar_core.c index e502bc7f8ff4..22529d2d9b98 100644 --- a/drivers/char/diag/diagchar_core.c +++ b/drivers/char/diag/diagchar_core.c @@ -372,6 +372,7 @@ fail: static void diag_close_logging_process(const int pid) { int i; + int session_peripheral_mask; struct diag_md_session_t *session_info = NULL; struct diag_logging_mode_param_t params; @@ -379,9 +380,10 @@ static void diag_close_logging_process(const int pid) if (!session_info) return; + session_peripheral_mask = session_info->peripheral_mask; diag_md_session_close(session_info); for (i = 0; i < NUM_MD_SESSIONS; i++) - if (MD_PERIPHERAL_MASK(i) & session_info->peripheral_mask) + if (MD_PERIPHERAL_MASK(i) & session_peripheral_mask) diag_mux_close_peripheral(DIAG_LOCAL_PROC, i); params.req_mode = USB_MODE;