forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kdump: use vmlinux_build_id to simplify
We can use the vmlinux_build_id array here now instead of open coding it. This mostly consolidates code. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: Jessica Yu <[email protected]> Cc: Evan Green <[email protected]> Cc: Hsin-Yi Wang <[email protected]> Cc: Dave Young <[email protected]> Cc: Baoquan He <[email protected]> Cc: Vivek Goyal <[email protected]> Cc: Andy Shevchenko <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Catalin Marinas <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Konstantin Khlebnikov <[email protected]> Cc: Matthew Wilcox <[email protected]> Cc: Petr Mladek <[email protected]> Cc: Rasmus Villemoes <[email protected]> Cc: Sasha Levin <[email protected]> Cc: Sergey Senozhatsky <[email protected]> Cc: Steven Rostedt <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Will Deacon <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
- Loading branch information
Showing
4 changed files
with
10 additions
and
56 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,7 @@ | |
* Copyright (C) 2002-2004 Eric Biederman <[email protected]> | ||
*/ | ||
|
||
#include <linux/buildid.h> | ||
#include <linux/crash_core.h> | ||
#include <linux/utsname.h> | ||
#include <linux/vmalloc.h> | ||
|
@@ -378,53 +379,6 @@ phys_addr_t __weak paddr_vmcoreinfo_note(void) | |
} | ||
EXPORT_SYMBOL(paddr_vmcoreinfo_note); | ||
|
||
#define NOTES_SIZE (&__stop_notes - &__start_notes) | ||
#define BUILD_ID_MAX SHA1_DIGEST_SIZE | ||
#define NT_GNU_BUILD_ID 3 | ||
|
||
struct elf_note_section { | ||
struct elf_note n_hdr; | ||
u8 n_data[]; | ||
}; | ||
|
||
/* | ||
* Add build ID from .notes section as generated by the GNU ld(1) | ||
* or LLVM lld(1) --build-id option. | ||
*/ | ||
static void add_build_id_vmcoreinfo(void) | ||
{ | ||
char build_id[BUILD_ID_MAX * 2 + 1]; | ||
int n_remain = NOTES_SIZE; | ||
|
||
while (n_remain >= sizeof(struct elf_note)) { | ||
const struct elf_note_section *note_sec = | ||
&__start_notes + NOTES_SIZE - n_remain; | ||
const u32 n_namesz = note_sec->n_hdr.n_namesz; | ||
|
||
if (note_sec->n_hdr.n_type == NT_GNU_BUILD_ID && | ||
n_namesz != 0 && | ||
!strcmp((char *)¬e_sec->n_data[0], "GNU")) { | ||
if (note_sec->n_hdr.n_descsz <= BUILD_ID_MAX) { | ||
const u32 n_descsz = note_sec->n_hdr.n_descsz; | ||
const u8 *s = ¬e_sec->n_data[n_namesz]; | ||
|
||
s = PTR_ALIGN(s, 4); | ||
bin2hex(build_id, s, n_descsz); | ||
build_id[2 * n_descsz] = '\0'; | ||
VMCOREINFO_BUILD_ID(build_id); | ||
return; | ||
} | ||
pr_warn("Build ID is too large to include in vmcoreinfo: %u > %u\n", | ||
note_sec->n_hdr.n_descsz, | ||
BUILD_ID_MAX); | ||
return; | ||
} | ||
n_remain -= sizeof(struct elf_note) + | ||
ALIGN(note_sec->n_hdr.n_namesz, 4) + | ||
ALIGN(note_sec->n_hdr.n_descsz, 4); | ||
} | ||
} | ||
|
||
static int __init crash_save_vmcoreinfo_init(void) | ||
{ | ||
vmcoreinfo_data = (unsigned char *)get_zeroed_page(GFP_KERNEL); | ||
|
@@ -443,7 +397,7 @@ static int __init crash_save_vmcoreinfo_init(void) | |
} | ||
|
||
VMCOREINFO_OSRELEASE(init_uts_ns.name.release); | ||
add_build_id_vmcoreinfo(); | ||
VMCOREINFO_BUILD_ID(); | ||
VMCOREINFO_PAGESIZE(PAGE_SIZE); | ||
|
||
VMCOREINFO_SYMBOL(init_uts_ns); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters