diff --git a/kernel/perf_event.c b/kernel/perf_event.c index 2a060be3b07fb98075cf995ce0c292af2c924b83..45b7aec55458f5d966b09c209856c3b87fb92037 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c @@ -2933,7 +2933,7 @@ static void perf_output_put_handle(struct perf_output_handle *handle) */ if (!local_dec_and_test(&data->nest)) - return; + goto out; /* * Publish the known good head. Rely on the full barrier implied @@ -2954,6 +2954,7 @@ static void perf_output_put_handle(struct perf_output_handle *handle) if (handle->wakeup != local_read(&data->wakeup)) perf_output_wakeup(handle); + out: preempt_enable(); }