lib/vsprintf.c: fix handling of %zd when using ssize_t
Documentation/printk-formats.txt says to use %zd for a ssize_t argument and some drivers do. Unfortunately this prints a positive number for negative values eg: tpm_tis 70030000.tpm_tis: tpm_transmit: tpm_send: error 4294967234 Add a case to va_args a ssize_t type if the interpretation should be signed. Tested on PPC32. Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2fa72c8fa5
commit
ef12496022
|
@ -1485,7 +1485,10 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
|
|||
num = va_arg(args, long);
|
||||
break;
|
||||
case FORMAT_TYPE_SIZE_T:
|
||||
num = va_arg(args, size_t);
|
||||
if (spec.flags & SIGN)
|
||||
num = va_arg(args, ssize_t);
|
||||
else
|
||||
num = va_arg(args, size_t);
|
||||
break;
|
||||
case FORMAT_TYPE_PTRDIFF:
|
||||
num = va_arg(args, ptrdiff_t);
|
||||
|
|
Loading…
Reference in New Issue