Browse Source

qcacmn: Avoid stack trace when PANIC_ON_BUG is off

PANIC_ON_BUG controls whether QDF_BUG panics the system on a failed
assertion. This config flag should be disabled for all end user
production builds. However, when PANIC_ON_BUG is disabled, QDF_BUG will
still print the call stack that resulted in the failed assertion. This
call stack can leak sensitive kernel address information, and should not
be printed for end user production builds.

When PANIC_ON_BUG is disabled, avoid printing the current stack trace to
dmesg.

Change-Id: I8c83d3690c606f8ffa91cf931e45543ed6e6437a
CRs-Fixed: 2186096
Dustin Brown 7 years ago
parent
commit
2d237dde74
1 changed files with 7 additions and 16 deletions
  1. 7 16
      qdf/linux/src/i_qdf_trace.h

+ 7 - 16
qdf/linux/src/i_qdf_trace.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -117,29 +117,20 @@ static inline void qdf_trace_msg(QDF_MODULE_ID module, QDF_TRACE_LEVEL level,
 #endif
 
 #ifdef PANIC_ON_BUG
-
-#define QDF_BUG(_condition) \
-	do { \
-		if (!(_condition)) { \
-			pr_err("QDF BUG in %s Line %d\n", \
-			       __func__, __LINE__); \
-			BUG_ON(1); \
-		} \
-	} while (0)
-
+#define __qdf_do_bug() BUG_ON(1)
 #else
+#define __qdf_do_bug()
+#endif
 
 #define QDF_BUG(_condition) \
 	do { \
 		if (!(_condition)) { \
-			pr_err("QDF BUG in %s Line %d\n", \
-			       __func__, __LINE__); \
-			WARN_ON(1); \
+			pr_err("QDF BUG in %s Line %d: Failed assertion '" \
+			       #_condition "'\n", __func__, __LINE__); \
+			__qdf_do_bug();\
 		} \
 	} while (0)
 
-#endif
-
 #ifdef KSYM_SYMBOL_LEN
 #define __QDF_SYMBOL_LEN KSYM_SYMBOL_LEN
 #else