|
@@ -491,7 +491,7 @@ static struct uprobe *alloc_uprobe(struct inode *inode, loff_t offset)
|
|
|
if (!uprobe)
|
|
|
return NULL;
|
|
|
|
|
|
- uprobe->inode = igrab(inode);
|
|
|
+ uprobe->inode = inode;
|
|
|
uprobe->offset = offset;
|
|
|
init_rwsem(&uprobe->register_rwsem);
|
|
|
init_rwsem(&uprobe->consumer_rwsem);
|
|
@@ -502,7 +502,6 @@ static struct uprobe *alloc_uprobe(struct inode *inode, loff_t offset)
|
|
|
if (cur_uprobe) {
|
|
|
kfree(uprobe);
|
|
|
uprobe = cur_uprobe;
|
|
|
- iput(inode);
|
|
|
}
|
|
|
|
|
|
return uprobe;
|
|
@@ -701,7 +700,6 @@ static void delete_uprobe(struct uprobe *uprobe)
|
|
|
rb_erase(&uprobe->rb_node, &uprobes_tree);
|
|
|
spin_unlock(&uprobes_treelock);
|
|
|
RB_CLEAR_NODE(&uprobe->rb_node); /* for uprobe_is_active() */
|
|
|
- iput(uprobe->inode);
|
|
|
put_uprobe(uprobe);
|
|
|
}
|
|
|
|
|
@@ -873,7 +871,8 @@ static void __uprobe_unregister(struct uprobe *uprobe, struct uprobe_consumer *u
|
|
|
* tuple). Creation refcount stops uprobe_unregister from freeing the
|
|
|
* @uprobe even before the register operation is complete. Creation
|
|
|
* refcount is released when the last @uc for the @uprobe
|
|
|
- * unregisters.
|
|
|
+ * unregisters. Caller of uprobe_register() is required to keep @inode
|
|
|
+ * (and the containing mount) referenced.
|
|
|
*
|
|
|
* Return errno if it cannot successully install probes
|
|
|
* else return 0 (success)
|