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

Commit 4d27f326 authored by Al Viro's avatar Al Viro
Browse files

fold put_filp() into fput()



Just check FMODE_OPENED in __fput() and be done with that...

Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent f5d11409
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -192,6 +192,9 @@ static void __fput(struct file *file)
	struct vfsmount *mnt = file->f_path.mnt;
	struct inode *inode = file->f_inode;

	if (unlikely(!(file->f_mode & FMODE_OPENED)))
		goto out;

	might_sleep();

	fsnotify_close(file);
@@ -221,12 +224,10 @@ static void __fput(struct file *file)
		put_write_access(inode);
		__mnt_drop_write(mnt);
	}
	file->f_path.dentry = NULL;
	file->f_path.mnt = NULL;
	file->f_inode = NULL;
	file_free(file);
	dput(dentry);
	mntput(mnt);
out:
	file_free(file);
}

static LLIST_HEAD(delayed_fput_list);
@@ -301,12 +302,6 @@ void __fput_sync(struct file *file)

EXPORT_SYMBOL(fput);

void put_filp(struct file *file)
{
	if (atomic_long_dec_and_test(&file->f_count))
		file_free(file);
}

void __init files_init(void)
{
	filp_cachep = kmem_cache_create("filp", sizeof(struct file), 0,
+2 −2
Original line number Diff line number Diff line
@@ -3531,7 +3531,7 @@ static struct file *path_openat(struct nameidata *nd,

	s = path_init(nd, flags);
	if (IS_ERR(s)) {
		put_filp(file);
		fput(file);
		return ERR_CAST(s);
	}
	while (!(error = link_path_walk(s, nd)) &&
@@ -3547,7 +3547,7 @@ static struct file *path_openat(struct nameidata *nd,
out2:
	if (!(opened & FILE_OPENED)) {
		BUG_ON(!error);
		put_filp(file);
		fput(file);
	}
	if (unlikely(error)) {
		if (error == -EOPENSTALE) {
+3 −8
Original line number Diff line number Diff line
@@ -921,17 +921,12 @@ struct file *dentry_open(const struct path *path, int flags,
	f = alloc_empty_file(flags, cred);
	if (!IS_ERR(f)) {
		error = vfs_open(path, f);
		if (!error) {
			/* from now on we need fput() to dispose of f */
		if (!error)
			error = open_check_o_direct(f);
		if (error) {
			fput(f);
			f = ERR_PTR(error);
		}
		} else { 
			put_filp(f);
			f = ERR_PTR(error);
		}
	}
	return f;
}
+0 −1
Original line number Diff line number Diff line
@@ -78,7 +78,6 @@ extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);
extern int replace_fd(unsigned fd, struct file *file, unsigned flags);
extern void set_close_on_exec(unsigned int fd, int flag);
extern bool get_close_on_exec(unsigned int fd);
extern void put_filp(struct file *);
extern int get_unused_fd_flags(unsigned flags);
extern void put_unused_fd(unsigned int fd);