diff options
Diffstat (limited to 'fs/coredump.c')
-rw-r--r-- | fs/coredump.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/coredump.c b/fs/coredump.c index 38a7ab87e10a..281b768000e6 100644 --- a/fs/coredump.c +++ b/fs/coredump.c | |||
@@ -794,6 +794,7 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr) | |||
794 | return 0; | 794 | return 0; |
795 | file->f_pos = pos; | 795 | file->f_pos = pos; |
796 | cprm->written += n; | 796 | cprm->written += n; |
797 | cprm->pos += n; | ||
797 | nr -= n; | 798 | nr -= n; |
798 | } | 799 | } |
799 | return 1; | 800 | return 1; |
@@ -808,6 +809,7 @@ int dump_skip(struct coredump_params *cprm, size_t nr) | |||
808 | if (dump_interrupted() || | 809 | if (dump_interrupted() || |
809 | file->f_op->llseek(file, nr, SEEK_CUR) < 0) | 810 | file->f_op->llseek(file, nr, SEEK_CUR) < 0) |
810 | return 0; | 811 | return 0; |
812 | cprm->pos += nr; | ||
811 | return 1; | 813 | return 1; |
812 | } else { | 814 | } else { |
813 | while (nr > PAGE_SIZE) { | 815 | while (nr > PAGE_SIZE) { |
@@ -822,7 +824,7 @@ EXPORT_SYMBOL(dump_skip); | |||
822 | 824 | ||
823 | int dump_align(struct coredump_params *cprm, int align) | 825 | int dump_align(struct coredump_params *cprm, int align) |
824 | { | 826 | { |
825 | unsigned mod = cprm->file->f_pos & (align - 1); | 827 | unsigned mod = cprm->pos & (align - 1); |
826 | if (align & (align - 1)) | 828 | if (align & (align - 1)) |
827 | return 0; | 829 | return 0; |
828 | return mod ? dump_skip(cprm, align - mod) : 1; | 830 | return mod ? dump_skip(cprm, align - mod) : 1; |