lib/vsprintf: Less restrictive hashed pointer printing
Commitad67b74d24("printk: hash addresses printed with %p") and Commitef0010a309("vsprintf: don't use 'restricted_pointer()' when not restricting") effectively removed the ability to display kernel addresses in the kernel log. While this may be a useful feature in production builds, it is undesirable when trying to debug. %px is not a possible alternative, because it is unable to differentiate between a debug and production build. Change-Id: I139fae7b8488936d214efdd2b5b807fa1c005467 Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
This commit is contained in:
@@ -146,6 +146,15 @@ config DYNAMIC_DEBUG
|
||||
See Documentation/admin-guide/dynamic-debug-howto.rst for additional
|
||||
information.
|
||||
|
||||
config DEBUG_CONSOLE_UNHASHED_POINTERS
|
||||
bool "Display unhashed kernel pointers"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
Pointers %p and %pK are normally hashed prior to being displayed to
|
||||
prevent leaking kernel addresses. On debug builds, always print
|
||||
actual pointer values, ignoring the kptr_restrict setting.
|
||||
Not to be enabled on production builds.
|
||||
|
||||
endmenu # "printk and dmesg options"
|
||||
|
||||
menu "Compile-time checks and compiler options"
|
||||
|
||||
@@ -1940,7 +1940,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
return buf;
|
||||
}
|
||||
case 'K':
|
||||
if (!kptr_restrict)
|
||||
if (!kptr_restrict ||
|
||||
IS_ENABLED(CONFIG_DEBUG_CONSOLE_UNHASHED_POINTERS))
|
||||
break;
|
||||
return restricted_pointer(buf, end, ptr, spec);
|
||||
case 'N':
|
||||
@@ -1972,6 +1973,9 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
return pointer_string(buf, end, ptr, spec);
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_DEBUG_CONSOLE_UNHASHED_POINTERS))
|
||||
return pointer_string(buf, end, ptr, spec);
|
||||
|
||||
/* default is to _not_ leak addresses, hash before printing */
|
||||
return ptr_to_id(buf, end, ptr, spec);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user