Messages in this thread Patch in this message | | | Date | Sun, 13 Sep 2009 15:37:13 +0530 | From | Ananth N Mavinakayanahalli <> | Subject | [BUGFIX] kprobes: prevent re-registration of the same kprobe |
| |
On Fri, Sep 11, 2009 at 05:12:54AM +0200, Frederic Weisbecker wrote: > On Thu, Sep 10, 2009 at 07:53:30PM -0400, Masami Hiramatsu wrote:
...
> Is it possible to have two kprobes having the exact same > properties? (pointing to the same address, having the same > probe handlers, etc...)
Yes, this is possible with two *different* kprobes. However, we have a bug with the current code where there is insufficient scaffolding to prevent re-registration of the same kprobe. Here is a patch...
--- Prevent re-registration of the same kprobe. Current code allows this, albeit with disastrous consequences. Its not a common case, but should be flagged nonetheless.
Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> --- kernel/kprobes.c | 3 +++ 1 file changed, 3 insertions(+)
Index: ptrace-10sep/kernel/kprobes.c =================================================================== --- ptrace-10sep.orig/kernel/kprobes.c +++ ptrace-10sep/kernel/kprobes.c @@ -589,6 +589,9 @@ static int __kprobes register_aggr_kprob int ret = 0; struct kprobe *ap = old_p; + if (old_p == p) + /* Attempt to re-register the same kprobe.. fail */ + return -EINVAL; if (old_p->pre_handler != aggr_pre_handler) { /* If old_p is not an aggr_probe, create new aggr_kprobe. */ ap = kzalloc(sizeof(struct kprobe), GFP_KERNEL);
| |