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) | |||
73 | static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg) | 73 | static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg) |
74 | { | 74 | { |
75 | int free, need; | 75 | int free, need; |
76 | va_list arg_copy; | ||
76 | 77 | ||
77 | again: | 78 | again: |
78 | free = cn->size - cn->used; | 79 | free = cn->size - cn->used; |
79 | need = vsnprintf(cn->corename + cn->used, free, fmt, arg); | 80 | |
81 | va_copy(arg_copy, arg); | ||
82 | need = vsnprintf(cn->corename + cn->used, free, fmt, arg_copy); | ||
83 | va_end(arg_copy); | ||
84 | |||
80 | if (need < free) { | 85 | if (need < free) { |
81 | cn->used += need; | 86 | cn->used += need; |
82 | return 0; | 87 | return 0; |