diff options
| -rw-r--r-- | arch/x86/events/intel/bts.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c index 16076eb34699..141e07b06216 100644 --- a/arch/x86/events/intel/bts.c +++ b/arch/x86/events/intel/bts.c | |||
| @@ -546,9 +546,6 @@ static int bts_event_init(struct perf_event *event) | |||
| 546 | if (event->attr.type != bts_pmu.type) | 546 | if (event->attr.type != bts_pmu.type) |
| 547 | return -ENOENT; | 547 | return -ENOENT; |
| 548 | 548 | ||
| 549 | if (x86_add_exclusive(x86_lbr_exclusive_bts)) | ||
| 550 | return -EBUSY; | ||
| 551 | |||
| 552 | /* | 549 | /* |
| 553 | * BTS leaks kernel addresses even when CPL0 tracing is | 550 | * BTS leaks kernel addresses even when CPL0 tracing is |
| 554 | * disabled, so disallow intel_bts driver for unprivileged | 551 | * disabled, so disallow intel_bts driver for unprivileged |
| @@ -562,6 +559,9 @@ static int bts_event_init(struct perf_event *event) | |||
| 562 | !capable(CAP_SYS_ADMIN)) | 559 | !capable(CAP_SYS_ADMIN)) |
| 563 | return -EACCES; | 560 | return -EACCES; |
| 564 | 561 | ||
| 562 | if (x86_add_exclusive(x86_lbr_exclusive_bts)) | ||
| 563 | return -EBUSY; | ||
| 564 | |||
| 565 | ret = x86_reserve_hardware(); | 565 | ret = x86_reserve_hardware(); |
| 566 | if (ret) { | 566 | if (ret) { |
| 567 | x86_del_exclusive(x86_lbr_exclusive_bts); | 567 | x86_del_exclusive(x86_lbr_exclusive_bts); |
