|
@@ -428,6 +428,20 @@ static void *nt_vmcoreinfo(void *ptr)
|
|
return nt_init_name(ptr, 0, vmcoreinfo, size, "VMCOREINFO");
|
|
return nt_init_name(ptr, 0, vmcoreinfo, size, "VMCOREINFO");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Initialize final note (needed for /proc/vmcore code)
|
|
|
|
+ */
|
|
|
|
+static void *nt_final(void *ptr)
|
|
|
|
+{
|
|
|
|
+ Elf64_Nhdr *note;
|
|
|
|
+
|
|
|
|
+ note = (Elf64_Nhdr *) ptr;
|
|
|
|
+ note->n_namesz = 0;
|
|
|
|
+ note->n_descsz = 0;
|
|
|
|
+ note->n_type = 0;
|
|
|
|
+ return PTR_ADD(ptr, sizeof(Elf64_Nhdr));
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Initialize ELF header (new kernel)
|
|
* Initialize ELF header (new kernel)
|
|
*/
|
|
*/
|
|
@@ -515,6 +529,7 @@ static void *notes_init(Elf64_Phdr *phdr, void *ptr, u64 notes_offset)
|
|
if (sa->prefix != 0)
|
|
if (sa->prefix != 0)
|
|
ptr = fill_cpu_elf_notes(ptr, cpu++, sa);
|
|
ptr = fill_cpu_elf_notes(ptr, cpu++, sa);
|
|
ptr = nt_vmcoreinfo(ptr);
|
|
ptr = nt_vmcoreinfo(ptr);
|
|
|
|
+ ptr = nt_final(ptr);
|
|
memset(phdr, 0, sizeof(*phdr));
|
|
memset(phdr, 0, sizeof(*phdr));
|
|
phdr->p_type = PT_NOTE;
|
|
phdr->p_type = PT_NOTE;
|
|
phdr->p_offset = notes_offset;
|
|
phdr->p_offset = notes_offset;
|