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).