LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [patch] s390 kprobes: Align probe address
@ 2007-03-22  1:09 David Wilder
  0 siblings, 0 replies; only message in thread
From: David Wilder @ 2007-03-22  1:09 UTC (permalink / raw)
  To: linux-kernel, akpm, schwidefsky

[-- Attachment #1: Type: text/plain, Size: 89 bytes --]

[This patch applies to both linux and mm trees.  Please send comments 
off list, thanks]

[-- Attachment #2: s390_swap_instruction_align.patch --]
[-- Type: text/x-patch, Size: 1121 bytes --]

Running a probe on s390 with a probe address that is not 4 byte aligned
results in a Kernel BUG.  The problem is that the stura instruction used
by swap_instruction requires the destination address to be 4 byte aligned.
As stura only writes 4 bytes, aligning to the next 4 byte aligned address
results in the breakpoint instruction being stored past the probe address.
The fix is to align the address backward (to the previous 4 byte aligned
address) and writing the two byte breakpoint instruction in the appropriate
bytes.

Signed-off-by: David Wilder <dwilder@us.ibm.com>
------------------------
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
index 8af549e..993f353 100644
--- a/arch/s390/kernel/kprobes.c
+++ b/arch/s390/kernel/kprobes.c
@@ -167,7 +167,7 @@ static int __kprobes swap_instruction(vo
 	 * shall not cross any page boundaries (vmalloc area!) when writing
 	 * the new instruction.
 	 */
-	addr = (u32 *)ALIGN((unsigned long)args->ptr, 4);
+	addr = (u32 *)((unsigned long)args->ptr & -4UL);
 	if ((unsigned long)args->ptr & 2)
 		instr = ((*addr) & 0xffff0000) | args->new;
 	else

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-03-22  0:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-22  1:09 [patch] s390 kprobes: Align probe address David Wilder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).