diff options
author | David S. Miller <davem@davemloft.net> | 2009-12-10 02:57:24 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-10 02:57:24 -0500 |
commit | 936cf251787be41833afe2a1e44fbd5fb2adbdb6 (patch) | |
tree | d6252bfd62d14db5e135d6e1680083d5b4261870 /arch/sparc | |
parent | 08a036d583409e3517e3d15b7478d029b25f2cf2 (diff) |
sparc: Validate that kprobe address is 4-byte aligned.
Otherwise it isn't a valid instruction address.
This is the sparc equivalent of commit
b46b3d70c9c017d7c4ec49f7f3ffd0af5a622277 (kprobes: Checks probe
address is instruction boudary on x86)
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/kprobes.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sparc/kernel/kprobes.c b/arch/sparc/kernel/kprobes.c index 3bc6527c95af..6716584e48ab 100644 --- a/arch/sparc/kernel/kprobes.c +++ b/arch/sparc/kernel/kprobes.c | |||
@@ -46,6 +46,9 @@ struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | |||
46 | 46 | ||
47 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 47 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
48 | { | 48 | { |
49 | if ((unsigned long) p->addr & 0x3UL) | ||
50 | return -EILSEQ; | ||
51 | |||
49 | p->ainsn.insn[0] = *p->addr; | 52 | p->ainsn.insn[0] = *p->addr; |
50 | flushi(&p->ainsn.insn[0]); | 53 | flushi(&p->ainsn.insn[0]); |
51 | 54 | ||