lkml.org 
[lkml]   [2009]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 3/6] inotify: use alloc_file instead of doing it internally
    Date
    inotify basically duplicates everything from alloc-file and init-file.  Use
    the generic vfs functions instead.

    Signed-off-by: Eric Paris <eparis@redhat.com>
    ---

    fs/notify/inotify/inotify_user.c | 23 +++++++++--------------
    1 files changed, 9 insertions(+), 14 deletions(-)

    diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
    index c40894a..3e03803 100644
    --- a/fs/notify/inotify/inotify_user.c
    +++ b/fs/notify/inotify/inotify_user.c
    @@ -725,6 +725,7 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
    struct fsnotify_group *group;
    struct user_struct *user;
    struct file *filp;
    + struct dentry *dentry;
    int fd, ret;

    /* Check the IN_* constants for consistency. */
    @@ -738,12 +739,6 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
    if (fd < 0)
    return fd;

    - filp = get_empty_filp();
    - if (!filp) {
    - ret = -ENFILE;
    - goto out_put_fd;
    - }
    -
    user = get_current_user();
    if (unlikely(atomic_read(&user->inotify_devs) >=
    inotify_max_user_instances)) {
    @@ -758,11 +753,12 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
    goto out_free_uid;
    }

    - filp->f_op = &inotify_fops;
    - filp->f_path.mnt = mntget(inotify_mnt);
    - filp->f_path.dentry = dget(inotify_mnt->mnt_root);
    - filp->f_mapping = filp->f_path.dentry->d_inode->i_mapping;
    - filp->f_mode = FMODE_READ;
    + dentry = dget(inotify_mnt->mnt_root);
    + filp = alloc_file(inotify_mnt, dentry, FMODE_READ, &inotify_fops);
    + if (!filp) {
    + ret = -ENFILE;
    + goto out_dput;
    + }
    filp->f_flags = O_RDONLY | (flags & O_NONBLOCK);
    filp->private_data = group;

    @@ -771,11 +767,10 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
    fd_install(fd, filp);

    return fd;
    -
    +out_dput:
    + dput(dentry);
    out_free_uid:
    free_uid(user);
    - put_filp(filp);
    -out_put_fd:
    put_unused_fd(fd);
    return ret;
    }


    \
     
     \ /
      Last update: 2009-12-03 21:03    [W:3.302 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site