diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-03 18:46:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-03 18:46:37 -0400 |
commit | 39059cceeda478cd040d521b9541d1113035c908 (patch) | |
tree | 56adf04d6766a4346160aacd709468e5b2f1b879 /arch/powerpc | |
parent | b01b7dc2832a1a286ae84ffa3e940ce9f8e352c2 (diff) | |
parent | c2cdf6aba0dfcfb54be646ab630c1bccd180e890 (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/macio: Fix probing of macio devices by using the right of match table
agp/uninorth: Fix oops caused by flushing too much
powerpc/pasemi: Update MAINTAINERS file
powerpc/cell: Fix integer constant warning
powerpc/kprobes: Remove resume_execution() in kprobes
powerpc/macio: Don't dereference pointer before null check
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/include/asm/macio.h | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 14 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/iommu.c | 2 |
3 files changed, 3 insertions, 17 deletions
diff --git a/arch/powerpc/include/asm/macio.h b/arch/powerpc/include/asm/macio.h index 19a661b4cb98..675e159b5ef4 100644 --- a/arch/powerpc/include/asm/macio.h +++ b/arch/powerpc/include/asm/macio.h | |||
@@ -123,10 +123,6 @@ static inline struct pci_dev *macio_get_pci_dev(struct macio_dev *mdev) | |||
123 | */ | 123 | */ |
124 | struct macio_driver | 124 | struct macio_driver |
125 | { | 125 | { |
126 | char *name; | ||
127 | struct of_device_id *match_table; | ||
128 | struct module *owner; | ||
129 | |||
130 | int (*probe)(struct macio_dev* dev, const struct of_device_id *match); | 126 | int (*probe)(struct macio_dev* dev, const struct of_device_id *match); |
131 | int (*remove)(struct macio_dev* dev); | 127 | int (*remove)(struct macio_dev* dev); |
132 | 128 | ||
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index c533525ca56a..bc47352deb1f 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -378,17 +378,6 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p, | |||
378 | * single-stepped a copy of the instruction. The address of this | 378 | * single-stepped a copy of the instruction. The address of this |
379 | * copy is p->ainsn.insn. | 379 | * copy is p->ainsn.insn. |
380 | */ | 380 | */ |
381 | static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs) | ||
382 | { | ||
383 | int ret; | ||
384 | unsigned int insn = *p->ainsn.insn; | ||
385 | |||
386 | regs->nip = (unsigned long)p->addr; | ||
387 | ret = emulate_step(regs, insn); | ||
388 | if (ret == 0) | ||
389 | regs->nip = (unsigned long)p->addr + 4; | ||
390 | } | ||
391 | |||
392 | static int __kprobes post_kprobe_handler(struct pt_regs *regs) | 381 | static int __kprobes post_kprobe_handler(struct pt_regs *regs) |
393 | { | 382 | { |
394 | struct kprobe *cur = kprobe_running(); | 383 | struct kprobe *cur = kprobe_running(); |
@@ -406,7 +395,8 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs) | |||
406 | cur->post_handler(cur, regs, 0); | 395 | cur->post_handler(cur, regs, 0); |
407 | } | 396 | } |
408 | 397 | ||
409 | resume_execution(cur, regs); | 398 | /* Adjust nip to after the single-stepped instruction */ |
399 | regs->nip = (unsigned long)cur->addr + 4; | ||
410 | regs->msr |= kcb->kprobe_saved_msr; | 400 | regs->msr |= kcb->kprobe_saved_msr; |
411 | 401 | ||
412 | /*Restore back the original saved kprobes variables and continue. */ | 402 | /*Restore back the original saved kprobes variables and continue. */ |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index 22667a09d40e..4326b737d913 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -1066,7 +1066,7 @@ static int __init cell_iommu_fixed_mapping_init(void) | |||
1066 | fbase = _ALIGN_UP(fbase, 1 << IO_SEGMENT_SHIFT); | 1066 | fbase = _ALIGN_UP(fbase, 1 << IO_SEGMENT_SHIFT); |
1067 | fsize = lmb_phys_mem_size(); | 1067 | fsize = lmb_phys_mem_size(); |
1068 | 1068 | ||
1069 | if ((fbase + fsize) <= 0x800000000) | 1069 | if ((fbase + fsize) <= 0x800000000ul) |
1070 | hbase = 0; /* use the device tree window */ | 1070 | hbase = 0; /* use the device tree window */ |
1071 | else { | 1071 | else { |
1072 | /* If we're over 32 GB we need to cheat. We can't map all of | 1072 | /* If we're over 32 GB we need to cheat. We can't map all of |