|
@@ -1882,7 +1882,6 @@ static int elf_core_dump(struct coredump_params *cprm)
|
|
|
struct vm_area_struct *vma, *gate_vma;
|
|
|
struct elfhdr *elf = NULL;
|
|
|
loff_t offset = 0, dataoff, foffset;
|
|
|
- unsigned long mm_flags;
|
|
|
struct elf_note_info info;
|
|
|
struct elf_phdr *phdr4note = NULL;
|
|
|
struct elf_shdr *shdr4extnum = NULL;
|
|
@@ -1957,14 +1956,7 @@ static int elf_core_dump(struct coredump_params *cprm)
|
|
|
|
|
|
dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
|
|
|
|
|
|
- /*
|
|
|
- * We must use the same mm->flags while dumping core to avoid
|
|
|
- * inconsistency between the program headers and bodies, otherwise an
|
|
|
- * unusable core file can be generated.
|
|
|
- */
|
|
|
- mm_flags = current->mm->flags;
|
|
|
-
|
|
|
- offset += elf_core_vma_data_size(gate_vma, mm_flags);
|
|
|
+ offset += elf_core_vma_data_size(gate_vma, cprm->mm_flags);
|
|
|
offset += elf_core_extra_data_size();
|
|
|
e_shoff = offset;
|
|
|
|
|
@@ -1995,7 +1987,7 @@ static int elf_core_dump(struct coredump_params *cprm)
|
|
|
phdr.p_offset = offset;
|
|
|
phdr.p_vaddr = vma->vm_start;
|
|
|
phdr.p_paddr = 0;
|
|
|
- phdr.p_filesz = vma_dump_size(vma, mm_flags);
|
|
|
+ phdr.p_filesz = vma_dump_size(vma, cprm->mm_flags);
|
|
|
phdr.p_memsz = vma->vm_end - vma->vm_start;
|
|
|
offset += phdr.p_filesz;
|
|
|
phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
|
|
@@ -2030,7 +2022,7 @@ static int elf_core_dump(struct coredump_params *cprm)
|
|
|
unsigned long addr;
|
|
|
unsigned long end;
|
|
|
|
|
|
- end = vma->vm_start + vma_dump_size(vma, mm_flags);
|
|
|
+ end = vma->vm_start + vma_dump_size(vma, cprm->mm_flags);
|
|
|
|
|
|
for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
|
|
|
struct page *page;
|