Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933148Ab3GLNJy (ORCPT ); Fri, 12 Jul 2013 09:09:54 -0400 Received: from mail7.hitachi.co.jp ([133.145.228.42]:54319 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932910Ab3GLNJx (ORCPT ); Fri, 12 Jul 2013 09:09:53 -0400 Message-ID: <51E0001E.3050108@hitachi.com> Date: Fri, 12 Jul 2013 22:09:50 +0900 From: Masami Hiramatsu Organization: Hitachi, Ltd., Japan User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 MIME-Version: 1.0 To: Steven Rostedt Cc: linux-kernel@vger.kernel.org, Oleg Nesterov , "zhangwei(Jovi)" , Jiri Olsa , Peter Zijlstra , Arnaldo Carvalho de Melo , Srikar Dronamraju , Frederic Weisbecker , Ingo Molnar , Andrew Morton Subject: Re: [RFC][PATCH 0/4] tracing/kprobes/uprobes: Fix race between opening probe event files and deleting probe References: <20130704033347.807661713@goodmis.org> In-Reply-To: <20130704033347.807661713@goodmis.org> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2159 Lines: 61 (2013/07/04 12:33), Steven Rostedt wrote: > Currently there exists a race with deleting a kprobe or uprobe and > a user opening the probe event file or using perf events. > > The problem stems from not being able to take the probe_lock from the > unregister code because we may have the event_mutex at the time, and > the event mutex may be taken with the probe_lock held. > > To solve this, the events get a ref count (using the flags field), where > when an event file is opened, the ftrace_event_call ref count increments. > Then this is checked under event_mutex and if set, the unregistering > of the probe will fail. > > Here's a test that shows how things break: > > # cd /sys/kernel/debug/tracing > # echo 'p:sigprocmask sigprocmask' > kprobe_events || exit -1 > # enable_probe() { > sleep 10 > echo 1 > } > # file=events/kprobes/sigprocmask/enable > # enable_probe > $file & > > kprobe_events > > The above will corrupt the kprobe system, as the write to the enable > file will happen after the kprobe was deleted. > > Trying to create the probe again fails: > > # echo 'p:sigprocmask sigprocmask' > kprobe_events > # cat kprobe_events > p:kprobes/sigprocmask sigprocmask > # ls events/kprobes/ > enable filter > > After applying these patches, the "> kprobe_events" fails due to the > event being busy. > > Masami, please review these patches and give your ack. Steve, Oleg, could you also take a look on my additional 2 patches too? I think both this series and my patches are required for fixing most of the problem. (what we need is a patch to ensure finishing all running uprobe handlers at disabling it *if needed*) Thank you, -- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/