From: Simon Horman <horms@verge.net.au>
To: linux-ia64@vger.kernel.org, kexec@lists.infradead.org
Cc: Jay Lan <jlan@sgi.com>, Bernhard Walle <bwalle@suse.de>,
"Luck, Tony" <tony.luck@intel.com>
Subject: [patch] ia64: Order of operations bug in PT_LOAD segment reader
Date: Wed, 08 Oct 2008 06:49:41 +0000 [thread overview]
Message-ID: <20081008064940.GA11893@verge.net.au> (raw)
This bug was discovered by Jay Lan and he also proposed this fix, however
thee is some discussion about what if any related changes should be made at
the same time.
The bug comes about because the break statment was never executed because
the if clause would bever be true because the if clause will never be true
because & has higher precedence than !=.
My position on this is that with the if logic fixed, as per this patch, the
break statment and the rest of the while() loop makes sense and should work
as intended.
As I understand it, Jay's position is that the code should be simplified,
after all it never worked as intended.
There is a related kernel bug that lead Jay to discover this problem.
The kernel bug has been resolved by Tony Luck and was
included in Linus's tree between 2.6.27-rc8 and 2.6.27-rc9 as
"[IA64] Put the space for cpu0 per-cpu area into .data section".
Now that the kernel bug is out of the way, I am providing this patch to
continue discussion on what to do on the kexec-tools side of things. I do
not intend to apply this patch until there is some conclusion in the
discussion between Jay and myself.
Cc: Jay Lan <jlan@sgi.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Index: kexec-tools/kexec/arch/ia64/crashdump-ia64.c
=================================--- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c 2008-10-08 17:31:42.000000000 +1100
+++ kexec-tools/kexec/arch/ia64/crashdump-ia64.c 2008-10-08 17:32:08.000000000 +1100
@@ -91,7 +91,7 @@ static void add_loaded_segments_info(str
if (phdr->p_type != PT_LOAD)
break;
if (loaded_segments[loaded_segments_num].end !- phdr->p_paddr & ~(ELF_PAGE_SIZE-1))
+ (phdr->p_paddr & ~(ELF_PAGE_SIZE-1)))
break;
loaded_segments[loaded_segments_num].end + (phdr->p_memsz + ELF_PAGE_SIZE - 1) &
--
Simon Horman
VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
H: www.vergenet.net/~horms/ W: www.valinux.co.jp/en
next reply other threads:[~2008-10-08 6:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-08 6:49 Simon Horman [this message]
2008-10-08 7:56 ` [patch] ia64: Order of operations bug in PT_LOAD segment reader Andreas Schwab
2008-10-08 22:09 ` Simon Horman
2008-10-21 16:52 ` Jay Lan
2008-10-22 23:25 ` Simon Horman
2008-10-22 23:47 ` Jay Lan
2008-10-23 0:01 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081008064940.GA11893@verge.net.au \
--to=horms@verge.net.au \
--cc=bwalle@suse.de \
--cc=jlan@sgi.com \
--cc=kexec@lists.infradead.org \
--cc=linux-ia64@vger.kernel.org \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox