summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2012-09-30 18:21:09 +0200
committerOleg Nesterov <oleg@redhat.com>2012-10-07 21:19:41 +0200
commita5f658b71bc622b731961ea3addcf146ed3c599f (patch)
tree52ebe6fb29ef955cee71ded01154d89d77577410 /kernel
parentuprobes/x86: Only rep+nop can be emulated correctly (diff)
downloadlinux-a5f658b71bc622b731961ea3addcf146ed3c599f.tar.xz
linux-a5f658b71bc622b731961ea3addcf146ed3c599f.zip
uprobes: Don't return success if alloc_uprobe() fails
If alloc_uprobe() fails uprobe_register() should return ENOMEM, not 0. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/events/uprobes.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 6136854da6c6..588a5575d64c 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -813,7 +813,9 @@ int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *
mutex_lock(uprobes_hash(inode));
uprobe = alloc_uprobe(inode, offset);
- if (uprobe && !consumer_add(uprobe, uc)) {
+ if (!uprobe) {
+ ret = -ENOMEM;
+ } else if (!consumer_add(uprobe, uc)) {
ret = __uprobe_register(uprobe);
if (ret) {
uprobe->consumers = NULL;