Messages in this thread Patch in this message | | | Date | Mon, 28 Jan 2013 19:24:53 +0100 | From | Oleg Nesterov <> | Subject | [PATCH 2/5] uprobes: Introduce trace_uprobe->enabled |
| |
probe_event_enable/disable() check tu->consumer != NULL to avoid the wrong uprobe_register/unregister().
We are going to kill uprobe_trace_consumer, so we add the explicit trace_uprobe->enabled member which can be used instead.
This is the temporary change to simplify the next patch, the new member will go away after cleanups.
Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- kernel/trace/trace_uprobe.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index f49ccf9..c430d01 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c @@ -46,6 +46,7 @@ struct trace_uprobe { struct list_head list; struct ftrace_event_class class; struct ftrace_event_call call; + bool enabled; struct uprobe_trace_consumer *consumer; struct trace_uprobe_filter filter; struct inode *inode; @@ -647,7 +648,7 @@ static int probe_event_enable(struct trace_uprobe *tu, int flag) struct uprobe_trace_consumer *utc; int ret = 0; - if (tu->consumer) + if (tu->enabled) return -EINTR; utc = kzalloc(sizeof(struct uprobe_trace_consumer), GFP_KERNEL); @@ -665,6 +666,8 @@ static int probe_event_enable(struct trace_uprobe *tu, int flag) tu->consumer = NULL; tu->flags &= ~flag; kfree(utc); + } else { + tu->enabled = true; } return ret; @@ -672,11 +675,12 @@ static int probe_event_enable(struct trace_uprobe *tu, int flag) static void probe_event_disable(struct trace_uprobe *tu, int flag) { - if (!tu->consumer) + if (!tu->enabled) return; uprobe_unregister(tu->inode, tu->offset, &tu->consumer->cons); tu->flags &= ~flag; + tu->enabled = false; kfree(tu->consumer); tu->consumer = NULL; } -- 1.5.5.1
| |