diff options
Diffstat (limited to 'fs/coredump.c')
| -rw-r--r-- | fs/coredump.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/fs/coredump.c b/fs/coredump.c index e3ad709a4232..0b2528fb640e 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -73,10 +73,15 @@ static int expand_corename(struct core_name *cn, int size)  static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg)  {  	int free, need; +	va_list arg_copy;  again:  	free = cn->size - cn->used; -	need = vsnprintf(cn->corename + cn->used, free, fmt, arg); + +	va_copy(arg_copy, arg); +	need = vsnprintf(cn->corename + cn->used, free, fmt, arg_copy); +	va_end(arg_copy); +  	if (need < free) {  		cn->used += need;  		return 0; |