diff options
author | Oleg Nesterov <oleg@redhat.com> | 2012-11-21 11:32:30 -0500 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2013-02-08 11:47:02 -0500 |
commit | fe20d71f25400cccc8bffef865f79250be7dbc81 (patch) | |
tree | 97b5f757780ebf67359867c9493c4860b0cb4477 | |
parent | f0744af7d0fde190674064c54e2ff60b34ac71fe (diff) |
uprobes: Kill uprobe_consumer->filter()
uprobe_consumer->filter() is pointless in its current form, kill it.
We will add it back, but with the different signature/semantics. Perhaps
we will even re-introduce the callsite in handler_chain(), but not to
just skip uc->handler().
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
-rw-r--r-- | include/linux/uprobes.h | 5 | ||||
-rw-r--r-- | kernel/events/uprobes.c | 6 | ||||
-rw-r--r-- | kernel/trace/trace_uprobe.c | 1 |
3 files changed, 2 insertions, 10 deletions
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index 4f628a6fc5b4..83742b91ff73 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h | |||
@@ -37,11 +37,6 @@ struct inode; | |||
37 | 37 | ||
38 | struct uprobe_consumer { | 38 | struct uprobe_consumer { |
39 | int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs); | 39 | int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs); |
40 | /* | ||
41 | * filter is optional; If a filter exists, handler is run | ||
42 | * if and only if filter returns true. | ||
43 | */ | ||
44 | bool (*filter)(struct uprobe_consumer *self, struct task_struct *task); | ||
45 | 40 | ||
46 | struct uprobe_consumer *next; | 41 | struct uprobe_consumer *next; |
47 | }; | 42 | }; |
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index a39d8163b713..5cbebac27c01 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c | |||
@@ -477,10 +477,8 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs) | |||
477 | return; | 477 | return; |
478 | 478 | ||
479 | down_read(&uprobe->consumer_rwsem); | 479 | down_read(&uprobe->consumer_rwsem); |
480 | for (uc = uprobe->consumers; uc; uc = uc->next) { | 480 | for (uc = uprobe->consumers; uc; uc = uc->next) |
481 | if (!uc->filter || uc->filter(uc, current)) | 481 | uc->handler(uc, regs); |
482 | uc->handler(uc, regs); | ||
483 | } | ||
484 | up_read(&uprobe->consumer_rwsem); | 482 | up_read(&uprobe->consumer_rwsem); |
485 | } | 483 | } |
486 | 484 | ||
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index 87b6db4ccbc5..e668024773d4 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c | |||
@@ -550,7 +550,6 @@ static int probe_event_enable(struct trace_uprobe *tu, int flag) | |||
550 | return -EINTR; | 550 | return -EINTR; |
551 | 551 | ||
552 | utc->cons.handler = uprobe_dispatcher; | 552 | utc->cons.handler = uprobe_dispatcher; |
553 | utc->cons.filter = NULL; | ||
554 | ret = uprobe_register(tu->inode, tu->offset, &utc->cons); | 553 | ret = uprobe_register(tu->inode, tu->offset, &utc->cons); |
555 | if (ret) { | 554 | if (ret) { |
556 | kfree(utc); | 555 | kfree(utc); |