Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 825f9692 authored by Al Viro's avatar Al Viro
Browse files

switched inotify_init1() to alloc_file()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4b42af81
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -659,12 +659,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)) {
@@ -679,24 +673,25 @@ 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;
	atomic_inc(&user->inotify_devs);

	filp = alloc_file(inotify_mnt, dget(inotify_mnt->mnt_root),
			  FMODE_READ, &inotify_fops);
	if (!filp)
		goto Enfile;

	filp->f_flags = O_RDONLY | (flags & O_NONBLOCK);
	filp->private_data = group;

	atomic_inc(&user->inotify_devs);

	fd_install(fd, filp);

	return fd;

Enfile:
	ret = -ENFILE;
	atomic_dec(&user->inotify_devs);
out_free_uid:
	free_uid(user);
	put_filp(filp);
out_put_fd:
	put_unused_fd(fd);
	return ret;
}