| Subject | Re: [PATCH v7 3.2-rc2 3/30] uprobes: register/unregister probes. | From | Peter Zijlstra <> | Date | Wed, 23 Nov 2011 17:27:05 +0100 |
| |
On Fri, 2011-11-18 at 16:37 +0530, Srikar Dronamraju wrote: > +void unregister_uprobe(struct inode *inode, loff_t offset, > + struct uprobe_consumer *consumer) > +{ > + struct uprobe *uprobe = NULL; > + > + inode = igrab(inode); > + if (!inode || !consumer) > + goto unreg_out;
Why do you take a reference on the inode here? Surely inode is already made stable by whoever calls us?
> + uprobe = find_uprobe(inode, offset); > + if (!uprobe) > + goto unreg_out; > + > + mutex_lock(uprobes_hash(inode)); > + if (!del_consumer(uprobe, consumer)) { > + mutex_unlock(uprobes_hash(inode)); > + goto unreg_out; > + } > + > + if (!uprobe->consumers) > + __unregister_uprobe(inode, offset, uprobe); > + > + mutex_unlock(uprobes_hash(inode)); > + > +unreg_out: > + if (uprobe) > + put_uprobe(uprobe); > + if (inode) > + iput(inode); > +}
|