diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c index 1ac18daa424fd928a5a3e59f0dcdd3ee4bea0dd9..f27a7e9f3c417312607f3452ccba4c64b80f99a7 100644 --- a/kernel/perf_counter.c +++ b/kernel/perf_counter.c @@ -1934,7 +1934,8 @@ __perf_counter_exit_task(struct task_struct *child, } } - kfree(child_counter); + if (!child_counter->filp || !atomic_long_read(&child_counter->filp->f_count)) + kfree(child_counter); } /*