forked from Minki/linux
switched inotify_init1() to alloc_file()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
4b42af81f0
commit
825f9692fb
@ -659,12 +659,6 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
|
|||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
filp = get_empty_filp();
|
|
||||||
if (!filp) {
|
|
||||||
ret = -ENFILE;
|
|
||||||
goto out_put_fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
user = get_current_user();
|
user = get_current_user();
|
||||||
if (unlikely(atomic_read(&user->inotify_devs) >=
|
if (unlikely(atomic_read(&user->inotify_devs) >=
|
||||||
inotify_max_user_instances)) {
|
inotify_max_user_instances)) {
|
||||||
@ -679,24 +673,25 @@ SYSCALL_DEFINE1(inotify_init1, int, flags)
|
|||||||
goto out_free_uid;
|
goto out_free_uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
filp->f_op = &inotify_fops;
|
atomic_inc(&user->inotify_devs);
|
||||||
filp->f_path.mnt = mntget(inotify_mnt);
|
|
||||||
filp->f_path.dentry = dget(inotify_mnt->mnt_root);
|
filp = alloc_file(inotify_mnt, dget(inotify_mnt->mnt_root),
|
||||||
filp->f_mapping = filp->f_path.dentry->d_inode->i_mapping;
|
FMODE_READ, &inotify_fops);
|
||||||
filp->f_mode = FMODE_READ;
|
if (!filp)
|
||||||
|
goto Enfile;
|
||||||
|
|
||||||
filp->f_flags = O_RDONLY | (flags & O_NONBLOCK);
|
filp->f_flags = O_RDONLY | (flags & O_NONBLOCK);
|
||||||
filp->private_data = group;
|
filp->private_data = group;
|
||||||
|
|
||||||
atomic_inc(&user->inotify_devs);
|
|
||||||
|
|
||||||
fd_install(fd, filp);
|
fd_install(fd, filp);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
|
Enfile:
|
||||||
|
ret = -ENFILE;
|
||||||
|
atomic_dec(&user->inotify_devs);
|
||||||
out_free_uid:
|
out_free_uid:
|
||||||
free_uid(user);
|
free_uid(user);
|
||||||
put_filp(filp);
|
|
||||||
out_put_fd:
|
|
||||||
put_unused_fd(fd);
|
put_unused_fd(fd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user