|
@@ -891,9 +891,15 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
|
case 'U':
|
|
case 'U':
|
|
return uuid_string(buf, end, ptr, spec, fmt);
|
|
return uuid_string(buf, end, ptr, spec, fmt);
|
|
case 'V':
|
|
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':
|
|
case 'K':
|
|
/*
|
|
/*
|
|
* %pK cannot be used in IRQ context because its test
|
|
* %pK cannot be used in IRQ context because its test
|