diff options
author | Mateusz Guzik <mguzik@redhat.com> | 2016-06-05 23:14:14 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-06-07 22:07:09 -0400 |
commit | 1607f09c226d1378439c411baaaa020042750338 (patch) | |
tree | 664e5239468f2bc978c6b8c6f2fb64904c20f7e9 /fs/binfmt_elf.c | |
parent | a01e718f7241c53f564402f7acff373eed5bd166 (diff) | |
download | linux-1607f09c226d1378439c411baaaa020042750338.tar.gz linux-1607f09c226d1378439c411baaaa020042750338.tar.bz2 linux-1607f09c226d1378439c411baaaa020042750338.zip |
coredump: fix dumping through pipes
The offset in the core file used to be tracked with ->written field of
the coredump_params structure. The field was retired in favour of
file->f_pos.
However, ->f_pos is not maintained for pipes which leads to breakage.
Restore explicit tracking of the offset in coredump_params. Introduce
->pos field for this purpose since ->written was already reused.
Fixes: a00839395103 ("get rid of coredump_params->written").
Reported-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Mateusz Guzik <mguzik@redhat.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/binfmt_elf.c')
-rw-r--r-- | fs/binfmt_elf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index e158b22ef32f..a7a28110dc80 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -2275,7 +2275,7 @@ static int elf_core_dump(struct coredump_params *cprm) goto end_coredump; /* Align to page */ - if (!dump_skip(cprm, dataoff - cprm->file->f_pos)) + if (!dump_skip(cprm, dataoff - cprm->pos)) goto end_coredump; for (i = 0, vma = first_vma(current, gate_vma); vma != NULL; |