aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/events/hw_breakpoint.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/events/hw_breakpoint.c')
-rw-r--r--kernel/events/hw_breakpoint.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/kernel/events/hw_breakpoint.c b/kernel/events/hw_breakpoint.c
index b3814fce5ecb..d6b56180827c 100644
--- a/kernel/events/hw_breakpoint.c
+++ b/kernel/events/hw_breakpoint.c
@@ -509,6 +509,8 @@ modify_user_hw_breakpoint_check(struct perf_event *bp, struct perf_event_attr *a
509 */ 509 */
510int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *attr) 510int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *attr)
511{ 511{
512 int err;
513
512 /* 514 /*
513 * modify_user_hw_breakpoint can be invoked with IRQs disabled and hence it 515 * modify_user_hw_breakpoint can be invoked with IRQs disabled and hence it
514 * will not be possible to raise IPIs that invoke __perf_event_disable. 516 * will not be possible to raise IPIs that invoke __perf_event_disable.
@@ -520,15 +522,12 @@ int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *att
520 else 522 else
521 perf_event_disable(bp); 523 perf_event_disable(bp);
522 524
523 if (!attr->disabled) { 525 err = modify_user_hw_breakpoint_check(bp, attr, false);
524 int err = modify_user_hw_breakpoint_check(bp, attr, false);
525 526
526 if (err) 527 if (!bp->attr.disabled)
527 return err;
528 perf_event_enable(bp); 528 perf_event_enable(bp);
529 bp->attr.disabled = 0; 529
530 } 530 return err;
531 return 0;
532} 531}
533EXPORT_SYMBOL_GPL(modify_user_hw_breakpoint); 532EXPORT_SYMBOL_GPL(modify_user_hw_breakpoint);
534 533