From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2993240AbcBSOvH (ORCPT ); Fri, 19 Feb 2016 09:51:07 -0500 Received: from bombadil.infradead.org ([198.137.202.9]:43705 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1427613AbcBSOuU (ORCPT ); Fri, 19 Feb 2016 09:50:20 -0500 Message-Id: <20160219144131.916353211@infradead.org> User-Agent: quilt/0.61-1 Date: Fri, 19 Feb 2016 15:37:45 +0100 From: Peter Zijlstra To: peterz@infradead.org, mingo@kernel.org, alexander.shishkin@linux.intel.com, eranian@google.com Cc: linux-kernel@vger.kernel.org, vince@deater.net, dvyukov@google.com, andi@firstfloor.org, jolsa@redhat.com, sasha.levin@oracle.com, oleg@redhat.com Subject: [RFC][PATCH 2/7] perf: Do not double free References: <20160219143743.692339502@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline; filename=peterz-perf-more-fixes-2.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In case of: err_file: fput(event_file), we'll end up calling perf_release() which in turn will free the event. Do not then free the event _again_. Signed-off-by: Peter Zijlstra (Intel) --- kernel/events/core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8520,7 +8520,12 @@ SYSCALL_DEFINE5(perf_event_open, perf_unpin_context(ctx); put_ctx(ctx); err_alloc: - free_event(event); + /* + * If event_file is set, the fput() above will have called ->release() + * and that will take care of freeing the event. + */ + if (!event_file) + free_event(event); err_cpus: put_online_cpus(); err_task: