lkml.org 
[lkml]   [2011]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v5 3.1.0-rc4-tip 1/26] uprobes: Auxillary routines to insert, find, delete uprobes
    * Peter Zijlstra <peterz@infradead.org> [2011-09-26 13:18:38]:

    > On Tue, 2011-09-20 at 16:42 +0100, Stefan Hajnoczi wrote:
    > > On Tue, Sep 20, 2011 at 05:29:49PM +0530, Srikar Dronamraju wrote:
    > > > +static void delete_uprobe(struct uprobe *uprobe)
    > > > +{
    > > > + unsigned long flags;
    > > > +
    > > > + spin_lock_irqsave(&uprobes_treelock, flags);
    > > > + rb_erase(&uprobe->rb_node, &uprobes_tree);
    > > > + spin_unlock_irqrestore(&uprobes_treelock, flags);
    > > > + put_uprobe(uprobe);
    > > > + iput(uprobe->inode);
    > >
    > > Use-after-free when put_uprobe() kfrees() the uprobe?
    >
    > I suspect the caller still has one, and this was the reference for being
    > part of the tree. But yes, that could do with a comment.
    >

    Yes, the caller has a reference, However I went ahead and changed the
    order of the last two statements.

    > The comment near atomic_set() in __insert_uprobe() isn't too clear
    > either. /* get access + drop ref */, would naively seem +1 -1 = 0,
    > instead of +1 +1 = 2.
    >

    Okay, Have modified the comment to /* get access + creation ref */

    --
    Thanks and Regards
    Srikar


    \
     
     \ /
      Last update: 2011-09-26 14:17    [W:0.050 / U:58.924 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site