diff options
| -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; |
