lkml.org 
[lkml]   [2006]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [take25 6/6] kevent: Pipe notifications.
    Date
    On Tuesday 21 November 2006 17:29, Evgeniy Polyakov wrote:
    > Pipe notifications.

    > +int kevent_pipe_enqueue(struct kevent *k)
    > +{
    > + struct file *pipe;
    > + int err = -EBADF;
    > + struct inode *inode;
    > +
    > + pipe = fget(k->event.id.raw[0]);
    > + if (!pipe)
    > + goto err_out_exit;
    > +
    > + inode = igrab(pipe->f_dentry->d_inode);
    > + if (!inode)
    > + goto err_out_fput;
    > +

    Well...

    How can you be sure 'pipe/inode' really refers to a pipe/fifo here ?

    Hint : i_pipe <> NULL is not sufficient because i_pipe, i_bdev, i_cdev share
    the same location. (check pipe_info() in fs/splice.c)

    So I guess you need :

    err = -EINVAL;
    if (!S_ISFIFO(inode->i_mode))
    goto err_out_iput;



    Eric
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-11-22 12:23    [W:0.031 / U:29.136 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site