This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [RFC][Patch 1/4] kprobe fast unregistration
- From: fche at redhat dot com (Frank Ch. Eigler)
- To: "Keshavamurthy, Anil S" <anil dot s dot keshavamurthy at intel dot com>
- Cc: "Stone, Joshua I" <joshua dot i dot stone at intel dot com>, Masami Hiramatsu <masami dot hiramatsu dot pt at hitachi dot com>, Ananth N Mavinakayanahalli <ananth at in dot ibm dot com>, Prasanna S Panchamukhi <prasanna at in dot ibm dot com>, linux-kernel <linux-kernel at vger dot kernel dot org>, SystemTAP <systemtap at sources dot redhat dot com>, Satoshi Oshima <soshima at redhat dot com>, Hideo Aoki <haoki at redhat dot com>, Yumiko Sugita <yumiko dot sugita dot yf at hitachi dot com>, hch at infradead dot org
- Date: 25 Mar 2007 22:29:51 -0400
- Subject: Re: [RFC][Patch 1/4] kprobe fast unregistration
- References: <20070323180527.GA13728@bambi.jf.intel.com> <16D5B9AB904B0B46B22A27002EE3A8C82793BB@scsmsx415.amr.corp.intel.com> <20070323182248.GA32364@redhat.com> <20070323190127.GA13974@bambi.jf.intel.com>
Hi -
"Keshavamurthy, Anil S" <anil.s.keshavamurthy@intel.com> writes:
> [...]
> > Really? What possible problems can occur? The worst that occurs
> > to me is that if someone forgets to call the commit function, the
> > kprobes will still be disabled, but memory won't be recycled for a
> > while. [...]
>
> Yes, Have you looked at the code?
A little, but we were talking more about the interface than the
implementation.
> If someone forgets to call the commit function, the kprobe will be
> disabled and yes the memory won't be recycled but the worst problem
> is that if the probe is on a module function then that module can't
> be unloaded at all [...]
I believe there is already a kprobes patch in the queue for
enumerating active probes in some /proc file. Should a module be
locked into memory for such a reason, finding the culprit should not
be difficult.
> Hence, my suggestion would be to call them as disable_kprobe()
> (instead of unregister_kprobes_fast() which is confusing and error
> prone) and also to provide an opposite function to reenable_kprobe()
> and finally provide unregister_disabled_kprobes() which is
> essentially the same as commit_kprobes().
One problem with this idea is that if the unregister_fast()=disable()
is to become reversible, then the renamed commit_kprobes() will no
longer be indempotent. There can no longer be a single system-wide
deferred-kprobe-cleanup list, since individual kprobes clients might
want to reinstate their probes in the future.
> > Would it be possible to allay even that concern with an automated
> > deferred/periodic commit?
> >
> I would recomand that users call unregister_disabled_kprobes() explictly.
But this would solve both problems (memory leaks and outstanding
reference counts on modules). In this variant,
unregister_kprobes_fast could replace unregister_kprobes outright, and
the (builtin deferred) commit function would need not be exported.
- FChE