From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752580AbbETG6g (ORCPT ); Wed, 20 May 2015 02:58:36 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:52518 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751152AbbETG6d (ORCPT ); Wed, 20 May 2015 02:58:33 -0400 Date: Wed, 20 May 2015 08:58:23 +0200 From: Peter Zijlstra To: Alexei Starovoitov Cc: Ingo Molnar , Arnaldo Carvalho de Melo , Wang Nan , lizefan@huawei.com, pi3orama@163.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH tip] perf/events/core: fix race in bpf program unregister Message-ID: <20150520065823.GJ3644@twins.programming.kicks-ass.net> References: <1431717321-28772-1-git-send-email-ast@plumgrid.com> <555C1B29.1070404@plumgrid.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <555C1B29.1070404@plumgrid.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 19, 2015 at 10:27:05PM -0700, Alexei Starovoitov wrote: > On 5/15/15 12:15 PM, Alexei Starovoitov wrote: > >there is a race between perf_event_free_bpf_prog() and free_trace_kprobe(): > > > >__free_event() > > event->destroy(event) > > tp_perf_event_destroy() > > perf_trace_destroy() > > perf_trace_event_unreg() > > > >which is dropping event->tp_event->perf_refcount and allows to proceed in: > > > >unregister_trace_kprobe() > > unregister_kprobe_event() > > trace_remove_event_call() > > probe_remove_event_call() > >free_trace_kprobe() > > > >while __free_event does: > >call_rcu(&event->rcu_head, free_event_rcu); > > free_event_rcu() > > perf_event_free_bpf_prog() > > > >To fix the race simply move perf_event_free_bpf_prog() before > >event->destroy(), since event->tp_event is still valid at that point. > > > >Note, perf_trace_destroy() is not racing with trace_remove_event_call() > >since they both grab event_mutex. > > > >Fixes: 2541517c32be ("tracing, perf: Implement BPF programs attached to kprobes") > >Reported-by: Wang Nan > >Signed-off-by: Alexei Starovoitov > > ping. > This is needed in 4.1. Thanks, queued for perf/urgent.