diff options
Diffstat (limited to 'arch/powerpc/kernel/hw_breakpoint.c')
-rw-r--r-- | arch/powerpc/kernel/hw_breakpoint.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c index a949bdfc9623..f0b47d1a6b0e 100644 --- a/arch/powerpc/kernel/hw_breakpoint.c +++ b/arch/powerpc/kernel/hw_breakpoint.c | |||
@@ -176,7 +176,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp) | |||
176 | length_max = 512 ; /* 64 doublewords */ | 176 | length_max = 512 ; /* 64 doublewords */ |
177 | /* DAWR region can't cross 512 boundary */ | 177 | /* DAWR region can't cross 512 boundary */ |
178 | if ((bp->attr.bp_addr >> 10) != | 178 | if ((bp->attr.bp_addr >> 10) != |
179 | ((bp->attr.bp_addr + bp->attr.bp_len) >> 10)) | 179 | ((bp->attr.bp_addr + bp->attr.bp_len - 1) >> 10)) |
180 | return -EINVAL; | 180 | return -EINVAL; |
181 | } | 181 | } |
182 | if (info->len > | 182 | if (info->len > |
@@ -250,6 +250,7 @@ int __kprobes hw_breakpoint_handler(struct die_args *args) | |||
250 | * we still need to single-step the instruction, but we don't | 250 | * we still need to single-step the instruction, but we don't |
251 | * generate an event. | 251 | * generate an event. |
252 | */ | 252 | */ |
253 | info->type &= ~HW_BRK_TYPE_EXTRANEOUS_IRQ; | ||
253 | if (!((bp->attr.bp_addr <= dar) && | 254 | if (!((bp->attr.bp_addr <= dar) && |
254 | (dar - bp->attr.bp_addr < bp->attr.bp_len))) | 255 | (dar - bp->attr.bp_addr < bp->attr.bp_len))) |
255 | info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; | 256 | info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; |