aboutsummaryrefslogtreecommitdiffstats
path: root/lib/vsprintf.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-01-03 14:46:17 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-03 14:46:17 -0500
commitd97106ab53f812910a62d18afb9dbe882819c1ba (patch)
treeedd1a2c287b7d98ee7b62e7ea6457c8a10abe016 /lib/vsprintf.c
parent3bfacef412b4bc993a8992217e50f1245f2fd3a6 (diff)
Make %p print '(null)' for NULL pointers
Before, when we only ever printed out the pointer value itself, a NULL pointer would never cause issues and might as well be printed out as just its numeric value. However, with the extended %p formats, especially %pR, we might validly want to print out resources for debugging. And sometimes they don't even exist, and the resource pointer is just NULL. Print it out as such, rather than oopsing. This is a more generic version of a patch done by Trent Piepho (catching all %p cases rather than just %pR, and using "(null)" instead of "[NULL]" to match glibc). Requested-by: Trent Piepho <xyzzy@speakeasy.org> Acked-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r--lib/vsprintf.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 3b777025d876..98d632277ca8 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -661,6 +661,9 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
661 */ 661 */
662static char *pointer(const char *fmt, char *buf, char *end, void *ptr, int field_width, int precision, int flags) 662static char *pointer(const char *fmt, char *buf, char *end, void *ptr, int field_width, int precision, int flags)
663{ 663{
664 if (!ptr)
665 return string(buf, end, "(null)", field_width, precision, flags);
666
664 switch (*fmt) { 667 switch (*fmt) {
665 case 'F': 668 case 'F':
666 ptr = dereference_function_descriptor(ptr); 669 ptr = dereference_function_descriptor(ptr);