lkml.org 
[lkml]   [2011]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v7 3.2-rc2 3/30] uprobes: register/unregister probes.
    From
    Date
    On Fri, 2011-11-18 at 16:37 +0530, Srikar Dronamraju wrote:
    > +int register_uprobe(struct inode *inode, loff_t offset,
    > + struct uprobe_consumer *consumer)
    > +{
    > + struct uprobe *uprobe;
    > + int ret = -EINVAL;
    > +
    > + if (!consumer || consumer->next)
    > + return ret;
    > +
    > + inode = igrab(inode);

    So why are you dealing with !consumer but not with !inode? and why does
    it make sense to allow !consumer at all?

    > + if (!inode)
    > + return ret;
    > +
    > + if (offset > i_size_read(inode))
    > + goto reg_out;
    > +
    > + ret = 0;
    > + mutex_lock(uprobes_hash(inode));
    > + uprobe = alloc_uprobe(inode, offset);
    > + if (uprobe && !add_consumer(uprobe, consumer)) {
    > + ret = __register_uprobe(inode, offset, uprobe);
    > + if (ret) {
    > + uprobe->consumers = NULL;
    > + __unregister_uprobe(inode, offset, uprobe);
    > + }
    > + }
    > +
    > + mutex_unlock(uprobes_hash(inode));
    > + put_uprobe(uprobe);
    > +
    > +reg_out:
    > + iput(inode);
    > + return ret;
    > +}

    So if this function returns an error the caller is responsible for
    cleaning up consumer, otherwise we take responsibility.


    \
     
     \ /
      Last update: 2011-11-23 17:25    [W:0.046 / U:0.484 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site