Unverified Commit d56e0ddb authored by Amir Goldstein's avatar Amir Goldstein Committed by Christian Brauner
Browse files

fs: rename {vfs,kernel}_tmpfile_open()



Overlayfs and cachefiles use vfs_open_tmpfile() to open a tmpfile
without accounting for nr_files.

Rename this helper to kernel_tmpfile_open() to better reflect this
helper is used for kernel internal users.

Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Message-Id: <20230615112229.2143178-2-amir73il@gmail.com>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent f1fcbaa1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -451,7 +451,7 @@ struct file *cachefiles_create_tmpfile(struct cachefiles_object *object)

	ret = cachefiles_inject_write_error();
	if (ret == 0) {
		file = vfs_tmpfile_open(&nop_mnt_idmap, &parentpath, S_IFREG,
		file = kernel_tmpfile_open(&nop_mnt_idmap, &parentpath, S_IFREG,
					   O_RDWR | O_LARGEFILE | O_DIRECT,
					   cache->cache_cred);
		ret = PTR_ERR_OR_ZERO(file);
+13 −11
Original line number Diff line number Diff line
@@ -3703,7 +3703,7 @@ static int vfs_tmpfile(struct mnt_idmap *idmap,
}

/**
 * vfs_tmpfile_open - open a tmpfile for kernel internal use
 * kernel_tmpfile_open - open a tmpfile for kernel internal use
 * @idmap:	idmap of the mount the inode was found from
 * @parentpath:	path of the base directory
 * @mode:	mode of the new tmpfile
@@ -3714,24 +3714,26 @@ static int vfs_tmpfile(struct mnt_idmap *idmap,
 * hence this is only for kernel internal use, and must not be installed into
 * file tables or such.
 */
struct file *vfs_tmpfile_open(struct mnt_idmap *idmap,
struct file *kernel_tmpfile_open(struct mnt_idmap *idmap,
				 const struct path *parentpath,
			  umode_t mode, int open_flag, const struct cred *cred)
				 umode_t mode, int open_flag,
				 const struct cred *cred)
{
	struct file *file;
	int error;

	file = alloc_empty_file_noaccount(open_flag, cred);
	if (!IS_ERR(file)) {
	if (IS_ERR(file))
		return file;

	error = vfs_tmpfile(idmap, parentpath, file, mode);
	if (error) {
		fput(file);
		file = ERR_PTR(error);
	}
	}
	return file;
}
EXPORT_SYMBOL(vfs_tmpfile_open);
EXPORT_SYMBOL(kernel_tmpfile_open);

static int do_tmpfile(struct nameidata *nd, unsigned flags,
		const struct open_flags *op,
+3 −2
Original line number Diff line number Diff line
@@ -329,8 +329,9 @@ static inline struct file *ovl_do_tmpfile(struct ovl_fs *ofs,
					  struct dentry *dentry, umode_t mode)
{
	struct path path = { .mnt = ovl_upper_mnt(ofs), .dentry = dentry };
	struct file *file = vfs_tmpfile_open(ovl_upper_mnt_idmap(ofs), &path, mode,
					O_LARGEFILE | O_WRONLY, current_cred());
	struct file *file = kernel_tmpfile_open(ovl_upper_mnt_idmap(ofs), &path,
						mode, O_LARGEFILE | O_WRONLY,
						current_cred());
	int err = PTR_ERR_OR_ZERO(file);

	pr_debug("tmpfile(%pd2, 0%o) = %i\n", dentry, mode, err);
+4 −3
Original line number Diff line number Diff line
@@ -1672,9 +1672,10 @@ static inline int vfs_whiteout(struct mnt_idmap *idmap,
			 WHITEOUT_DEV);
}

struct file *vfs_tmpfile_open(struct mnt_idmap *idmap,
struct file *kernel_tmpfile_open(struct mnt_idmap *idmap,
				 const struct path *parentpath,
			umode_t mode, int open_flag, const struct cred *cred);
				 umode_t mode, int open_flag,
				 const struct cred *cred);

int vfs_mkobj(struct dentry *, umode_t,
		int (*f)(struct dentry *, umode_t, void *),