Commit:     b70842df77615309d76bcdd63bd289993e0844f2
Parent:     afbc1e994ddcf3b6fe2dc928ee8dc31a5d0c3118
Author:     David Wilder <[EMAIL PROTECTED]>
AuthorDate: Mon Mar 26 20:42:40 2007 +0200
Committer:  Heiko Carstens <[EMAIL PROTECTED]>
CommitDate: Mon Mar 26 20:43:46 2007 +0200

    [S390] kprobes: Align probe address.
    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
    Cc: Martin Schwidefsky <[EMAIL PROTECTED]>
    Signed-off-by: David Wilder <[EMAIL PROTECTED]>
    Signed-off-by: Heiko Carstens <[EMAIL PROTECTED]>
 arch/s390/kernel/kprobes.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

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(void *aref)
         * 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;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to