diff for duplicates of <48FFBB87.6020608@sgi.com> diff --git a/a/1.txt b/N1/1.txt index 06d3991..becbfac 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -34,8 +34,7 @@ Simon Horman wrote: >> 1) The if-statement below has never proved the correctness of >> its intent because the 'break' statement never got executed >> due to a logic error. ->> if (loaded_segments[loaded_segments_num].end != ->> (phdr->p_paddr & ~(ELF_PAGE_SIZE-1))) +>> if (loaded_segments[loaded_segments_num].end !>> (phdr->p_paddr & ~(ELF_PAGE_SIZE-1))) >> break; >> 2) With your patch in my testing, the kdump kernel boot hung >> even earlier in a PAL_CALL that was not returned to the kernel. @@ -84,12 +83,10 @@ jay > 1 file changed, 8 insertions(+), 7 deletions(-) > > Index: kexec-tools/kexec/arch/ia64/crashdump-ia64.c -> =================================================================== -> --- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c 2008-09-19 14:33:07.593344017 -0700 +> =================================> --- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c 2008-09-19 14:33:07.593344017 -0700 > +++ kexec-tools/kexec/arch/ia64/crashdump-ia64.c 2008-09-19 17:39:03.732928237 -0700 > @@ -86,19 +86,20 @@ static void add_loaded_segments_info(str -> loaded_segments[loaded_segments_num].end = -> loaded_segments[loaded_segments_num].start; +> loaded_segments[loaded_segments_num].end > loaded_segments[loaded_segments_num].start; > > + /* Consolidate consecutive PL_LOAD segments into one. > + * The end addr of the last PL_LOAD segment, calculated by @@ -100,14 +97,11 @@ jay > phdr = &ehdr->e_phdr[i]; > if (phdr->p_type != PT_LOAD) > break; -> - if (loaded_segments[loaded_segments_num].end != -> - phdr->p_paddr & ~(ELF_PAGE_SIZE-1)) +> - if (loaded_segments[loaded_segments_num].end !> - phdr->p_paddr & ~(ELF_PAGE_SIZE-1)) > - break; -> - loaded_segments[loaded_segments_num].end += -> - (phdr->p_memsz + ELF_PAGE_SIZE - 1) & +> - loaded_segments[loaded_segments_num].end +> - (phdr->p_memsz + ELF_PAGE_SIZE - 1) & > - ~(ELF_PAGE_SIZE - 1); -> + loaded_segments[loaded_segments_num].end = -> + (phdr->p_paddr + phdr->p_memsz + +> + loaded_segments[loaded_segments_num].end > + (phdr->p_paddr + phdr->p_memsz + > + ELF_PAGE_SIZE - 1) & ~(ELF_PAGE_SIZE - 1); > i++; > } @@ -115,10 +109,4 @@ jay > loaded_segments_num++; > } > } -> - - -_______________________________________________ -kexec mailing list -kexec@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/kexec +> diff --git a/a/content_digest b/N1/content_digest index 61a248b..fc49e39 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,7 +3,7 @@ "ref\020081022232519.GC5247@verge.net.au\0" "From\0Jay Lan <jlan@sgi.com>\0" "Subject\0Re: [patch] ia64: Order of operations bug in PT_LOAD segment reader\0" - "Date\0Wed, 22 Oct 2008 16:47:19 -0700\0" + "Date\0Wed, 22 Oct 2008 23:47:19 +0000\0" "To\0Simon Horman <horms@verge.net.au>\0" "Cc\0kexec@lists.infradead.org" Bernhard Walle <bwalle@suse.de> @@ -48,8 +48,7 @@ ">> 1) The if-statement below has never proved the correctness of\n" ">> its intent because the 'break' statement never got executed\n" ">> due to a logic error.\n" - ">> \t\tif (loaded_segments[loaded_segments_num].end !=\n" - ">> \t\t\t(phdr->p_paddr & ~(ELF_PAGE_SIZE-1)))\n" + ">> \t\tif (loaded_segments[loaded_segments_num].end !>> \t\t\t(phdr->p_paddr & ~(ELF_PAGE_SIZE-1)))\n" ">> \t\t\tbreak;\n" ">> 2) With your patch in my testing, the kdump kernel boot hung\n" ">> even earlier in a PAL_CALL that was not returned to the kernel.\n" @@ -98,12 +97,10 @@ "> 1 file changed, 8 insertions(+), 7 deletions(-)\n" "> \n" "> Index: kexec-tools/kexec/arch/ia64/crashdump-ia64.c\n" - "> ===================================================================\n" - "> --- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c\t2008-09-19 14:33:07.593344017 -0700\n" + "> =================================> --- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c\t2008-09-19 14:33:07.593344017 -0700\n" "> +++ kexec-tools/kexec/arch/ia64/crashdump-ia64.c\t2008-09-19 17:39:03.732928237 -0700\n" "> @@ -86,19 +86,20 @@ static void add_loaded_segments_info(str\n" - "> loaded_segments[loaded_segments_num].end =\n" - "> \t\t\tloaded_segments[loaded_segments_num].start;\n" + "> loaded_segments[loaded_segments_num].end > \t\t\tloaded_segments[loaded_segments_num].start;\n" "> \n" "> +\t\t/* Consolidate consecutive PL_LOAD segments into one.\n" "> +\t\t * The end addr of the last PL_LOAD segment, calculated by\n" @@ -114,14 +111,11 @@ "> \t\t\tphdr = &ehdr->e_phdr[i];\n" "> \t if (phdr->p_type != PT_LOAD)\n" "> \t break;\n" - "> -\t\t\tif (loaded_segments[loaded_segments_num].end !=\n" - "> -\t\t\t\tphdr->p_paddr & ~(ELF_PAGE_SIZE-1))\n" + "> -\t\t\tif (loaded_segments[loaded_segments_num].end !> -\t\t\t\tphdr->p_paddr & ~(ELF_PAGE_SIZE-1))\n" "> -\t\t\t\tbreak;\n" - "> -\t\t\tloaded_segments[loaded_segments_num].end +=\n" - "> -\t\t\t\t(phdr->p_memsz + ELF_PAGE_SIZE - 1) &\n" + "> -\t\t\tloaded_segments[loaded_segments_num].end +> -\t\t\t\t(phdr->p_memsz + ELF_PAGE_SIZE - 1) &\n" "> -\t\t\t\t~(ELF_PAGE_SIZE - 1);\n" - "> +\t\t\tloaded_segments[loaded_segments_num].end =\n" - "> +\t\t\t\t(phdr->p_paddr + phdr->p_memsz +\n" + "> +\t\t\tloaded_segments[loaded_segments_num].end > +\t\t\t\t(phdr->p_paddr + phdr->p_memsz +\n" "> +\t\t\t\tELF_PAGE_SIZE - 1) & ~(ELF_PAGE_SIZE - 1);\n" "> \t\t\ti++;\n" "> \t\t}\n" @@ -129,12 +123,6 @@ "> \t\tloaded_segments_num++;\n" "> \t}\n" "> }\n" - "> \n" - "\n" - "\n" - "_______________________________________________\n" - "kexec mailing list\n" - "kexec@lists.infradead.org\n" - http://lists.infradead.org/mailman/listinfo/kexec + > -bc2112f02ad6225ad741a9868abe86f47add52794cb8614109afd8676080149d +4ceb7eab1a1b3f92787764233f4d31a0fb6d905dbf8cd7fec63e6c9477f8d452
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.