diff options
Diffstat (limited to 'kernel/hw_breakpoint.c')
-rw-r--r-- | kernel/hw_breakpoint.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/hw_breakpoint.c b/kernel/hw_breakpoint.c index c16662268d75..06d372fc026d 100644 --- a/kernel/hw_breakpoint.c +++ b/kernel/hw_breakpoint.c | |||
@@ -267,7 +267,16 @@ int __register_perf_hw_breakpoint(struct perf_event *bp) | |||
267 | if (ret) | 267 | if (ret) |
268 | return ret; | 268 | return ret; |
269 | 269 | ||
270 | if (!bp->attr.disabled) | 270 | /* |
271 | * Ptrace breakpoints can be temporary perf events only | ||
272 | * meant to reserve a slot. In this case, it is created disabled and | ||
273 | * we don't want to check the params right now (as we put a null addr) | ||
274 | * But perf tools create events as disabled and we want to check | ||
275 | * the params for them. | ||
276 | * This is a quick hack that will be removed soon, once we remove | ||
277 | * the tmp breakpoints from ptrace | ||
278 | */ | ||
279 | if (!bp->attr.disabled || bp->callback == perf_bp_event) | ||
271 | ret = arch_validate_hwbkpt_settings(bp, bp->ctx->task); | 280 | ret = arch_validate_hwbkpt_settings(bp, bp->ctx->task); |
272 | 281 | ||
273 | return ret; | 282 | return ret; |