[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Allocate Xen kexec/kdump elfnote sections of the correct size.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1170339337 0 # Node ID 0a4cbad6752c4740b2b823581e3a61aa9ad53a64 # Parent f45de0fe8a15cd6f335f378e3038b84fa3c7050d Allocate Xen kexec/kdump elfnote sections of the correct size. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/common/kexec.c | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-) diff -r f45de0fe8a15 -r 0a4cbad6752c xen/common/kexec.c --- a/xen/common/kexec.c Thu Feb 01 13:44:35 2007 +0000 +++ b/xen/common/kexec.c Thu Feb 01 14:15:37 2007 +0000 @@ -131,10 +131,18 @@ __initcall(register_crashdump_trigger); static void setup_note(Elf_Note *n, const char *name, int type, int descsz) { - strlcpy(ELFNOTE_NAME(n), name, INT_MAX); - n->namesz = strlen(name); + int l = strlen(name) + 1; + strlcpy(ELFNOTE_NAME(n), name, l); + n->namesz = l; n->descsz = descsz; n->type = type; +} + +static int sizeof_note(const char *name, int descsz) +{ + return (sizeof(Elf_Note) + + ELFNOTE_ALIGN(sizeof(name)) + + ELFNOTE_ALIGN(descsz)); } #define kexec_get(x) kexec_get_##x @@ -162,16 +170,17 @@ static int kexec_get(cpu)(xen_kexec_rang static int kexec_get(cpu)(xen_kexec_range_t *range) { int nr = range->nr; - int nr_bytes = sizeof(Elf_Note) * 2 - + ELFNOTE_ALIGN(sizeof(ELF_Prstatus)) - + ELFNOTE_ALIGN(sizeof(crash_xen_core_t)); + int nr_bytes = 0; if ( nr < 0 || nr >= num_present_cpus() ) return -EINVAL; + nr_bytes += sizeof_note("CORE", sizeof(ELF_Prstatus)); + nr_bytes += sizeof_note("Xen", sizeof(crash_xen_core_t)); + /* The Xen info note is included in CPU0's range. */ if ( nr == 0 ) - nr_bytes += sizeof(Elf_Note) + ELFNOTE_ALIGN(sizeof(crash_xen_info_t)); + nr_bytes += sizeof_note("Xen", sizeof(crash_xen_info_t)); if ( per_cpu(crash_notes, nr) == NULL ) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |