SyS_perf_event_open() calls get_online_cpus() and eventually invokes swevent_hlist_get() which does it again. All callchains leading to swevent_hlist_get() originate from SyS_perf_event_open() so the extra protection is redundant. Remove it. Signed-off-by: Thomas Gleixner Cc: Peter Zijlstra --- kernel/events/core.c | 5 ----- 1 file changed, 5 deletions(-) --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7592,7 +7592,6 @@ static int swevent_hlist_get(void) { int err, cpu, failed_cpu; - get_online_cpus(); for_each_possible_cpu(cpu) { err = swevent_hlist_get_cpu(cpu); if (err) { @@ -7600,8 +7599,6 @@ static int swevent_hlist_get(void) goto fail; } } - put_online_cpus(); - return 0; fail: for_each_possible_cpu(cpu) { @@ -7609,8 +7606,6 @@ static int swevent_hlist_get(void) break; swevent_hlist_put_cpu(cpu); } - - put_online_cpus(); return err; }