diff options
Diffstat (limited to 'lib/vsprintf.c')
| -rw-r--r-- | lib/vsprintf.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 8e75003d62f6..38e612e66da5 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -891,9 +891,15 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,  	case 'U':  		return uuid_string(buf, end, ptr, spec, fmt);  	case 'V': -		return buf + vsnprintf(buf, end > buf ? end - buf : 0, -				       ((struct va_format *)ptr)->fmt, -				       *(((struct va_format *)ptr)->va)); +		{ +			va_list va; + +			va_copy(va, *((struct va_format *)ptr)->va); +			buf += vsnprintf(buf, end > buf ? end - buf : 0, +					 ((struct va_format *)ptr)->fmt, va); +			va_end(va); +			return buf; +		}  	case 'K':  		/*  		 * %pK cannot be used in IRQ context because its test  | 
