public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] ia64: Order of operations bug in PT_LOAD segment reader
@ 2008-10-08  6:49 Simon Horman
  2008-10-08  7:56 ` Andreas Schwab
  2008-10-21 16:52 ` Jay Lan
  0 siblings, 2 replies; 7+ messages in thread
From: Simon Horman @ 2008-10-08  6:49 UTC (permalink / raw)
  To: linux-ia64, kexec; +Cc: Jay Lan, Bernhard Walle, Luck, Tony

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2008-10-23  0:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-08  6:49 [patch] ia64: Order of operations bug in PT_LOAD segment reader Simon Horman
2008-10-08  7:56 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox