overlayfs: constify path

Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2022-08-04 13:11:15 -04:00
parent d5bf88895f
commit 2d3430875a
8 changed files with 40 additions and 40 deletions

View File

@ -44,7 +44,7 @@ static bool ovl_must_copy_xattr(const char *name)
!strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN); !strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN);
} }
int ovl_copy_xattr(struct super_block *sb, struct path *oldpath, struct dentry *new) int ovl_copy_xattr(struct super_block *sb, const struct path *oldpath, struct dentry *new)
{ {
struct dentry *old = oldpath->dentry; struct dentry *old = oldpath->dentry;
ssize_t list_size, size, value_size = 0; ssize_t list_size, size, value_size = 0;
@ -132,8 +132,8 @@ int ovl_copy_xattr(struct super_block *sb, struct path *oldpath, struct dentry *
return error; return error;
} }
static int ovl_copy_fileattr(struct inode *inode, struct path *old, static int ovl_copy_fileattr(struct inode *inode, const struct path *old,
struct path *new) const struct path *new)
{ {
struct fileattr oldfa = { .flags_valid = true }; struct fileattr oldfa = { .flags_valid = true };
struct fileattr newfa = { .flags_valid = true }; struct fileattr newfa = { .flags_valid = true };
@ -193,8 +193,8 @@ static int ovl_copy_fileattr(struct inode *inode, struct path *old,
return ovl_real_fileattr_set(new, &newfa); return ovl_real_fileattr_set(new, &newfa);
} }
static int ovl_copy_up_data(struct ovl_fs *ofs, struct path *old, static int ovl_copy_up_data(struct ovl_fs *ofs, const struct path *old,
struct path *new, loff_t len) const struct path *new, loff_t len)
{ {
struct file *old_file; struct file *old_file;
struct file *new_file; struct file *new_file;
@ -872,7 +872,7 @@ static bool ovl_need_meta_copy_up(struct dentry *dentry, umode_t mode,
return true; return true;
} }
static ssize_t ovl_getxattr_value(struct path *path, char *name, char **value) static ssize_t ovl_getxattr_value(const struct path *path, char *name, char **value)
{ {
ssize_t res; ssize_t res;
char *buf; char *buf;

View File

@ -38,7 +38,7 @@ static char ovl_whatisit(struct inode *inode, struct inode *realinode)
#define OVL_OPEN_FLAGS (O_NOATIME | FMODE_NONOTIFY) #define OVL_OPEN_FLAGS (O_NOATIME | FMODE_NONOTIFY)
static struct file *ovl_open_realfile(const struct file *file, static struct file *ovl_open_realfile(const struct file *file,
struct path *realpath) const struct path *realpath)
{ {
struct inode *realinode = d_inode(realpath->dentry); struct inode *realinode = d_inode(realpath->dentry);
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);

View File

@ -585,7 +585,7 @@ static int ovl_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
* Introducing security_inode_fileattr_get/set() hooks would solve this issue * Introducing security_inode_fileattr_get/set() hooks would solve this issue
* properly. * properly.
*/ */
static int ovl_security_fileattr(struct path *realpath, struct fileattr *fa, static int ovl_security_fileattr(const struct path *realpath, struct fileattr *fa,
bool set) bool set)
{ {
struct file *file; struct file *file;
@ -607,7 +607,7 @@ static int ovl_security_fileattr(struct path *realpath, struct fileattr *fa,
return err; return err;
} }
int ovl_real_fileattr_set(struct path *realpath, struct fileattr *fa) int ovl_real_fileattr_set(const struct path *realpath, struct fileattr *fa)
{ {
int err; int err;
@ -682,7 +682,7 @@ static void ovl_fileattr_prot_flags(struct inode *inode, struct fileattr *fa)
} }
} }
int ovl_real_fileattr_get(struct path *realpath, struct fileattr *fa) int ovl_real_fileattr_get(const struct path *realpath, struct fileattr *fa)
{ {
int err; int err;

View File

@ -26,7 +26,7 @@ struct ovl_lookup_data {
bool metacopy; bool metacopy;
}; };
static int ovl_check_redirect(struct path *path, struct ovl_lookup_data *d, static int ovl_check_redirect(const struct path *path, struct ovl_lookup_data *d,
size_t prelen, const char *post) size_t prelen, const char *post)
{ {
int res; int res;
@ -194,7 +194,7 @@ struct dentry *ovl_decode_real_fh(struct ovl_fs *ofs, struct ovl_fh *fh,
return real; return real;
} }
static bool ovl_is_opaquedir(struct ovl_fs *ofs, struct path *path) static bool ovl_is_opaquedir(struct ovl_fs *ofs, const struct path *path)
{ {
return ovl_path_check_dir_xattr(ofs, path, OVL_XATTR_OPAQUE); return ovl_path_check_dir_xattr(ofs, path, OVL_XATTR_OPAQUE);
} }

View File

@ -208,7 +208,7 @@ static inline int ovl_do_symlink(struct ovl_fs *ofs,
return err; return err;
} }
static inline ssize_t ovl_do_getxattr(struct path *path, const char *name, static inline ssize_t ovl_do_getxattr(const struct path *path, const char *name,
void *value, size_t size) void *value, size_t size)
{ {
int err, len; int err, len;
@ -238,7 +238,7 @@ static inline ssize_t ovl_getxattr_upper(struct ovl_fs *ofs,
} }
static inline ssize_t ovl_path_getxattr(struct ovl_fs *ofs, static inline ssize_t ovl_path_getxattr(struct ovl_fs *ofs,
struct path *path, const struct path *path,
enum ovl_xattr ox, void *value, enum ovl_xattr ox, void *value,
size_t size) size_t size)
{ {
@ -401,13 +401,13 @@ void ovl_inode_update(struct inode *inode, struct dentry *upperdentry);
void ovl_dir_modified(struct dentry *dentry, bool impurity); void ovl_dir_modified(struct dentry *dentry, bool impurity);
u64 ovl_dentry_version_get(struct dentry *dentry); u64 ovl_dentry_version_get(struct dentry *dentry);
bool ovl_is_whiteout(struct dentry *dentry); bool ovl_is_whiteout(struct dentry *dentry);
struct file *ovl_path_open(struct path *path, int flags); struct file *ovl_path_open(const struct path *path, int flags);
int ovl_copy_up_start(struct dentry *dentry, int flags); int ovl_copy_up_start(struct dentry *dentry, int flags);
void ovl_copy_up_end(struct dentry *dentry); void ovl_copy_up_end(struct dentry *dentry);
bool ovl_already_copied_up(struct dentry *dentry, int flags); bool ovl_already_copied_up(struct dentry *dentry, int flags);
bool ovl_path_check_dir_xattr(struct ovl_fs *ofs, struct path *path, bool ovl_path_check_dir_xattr(struct ovl_fs *ofs, const struct path *path,
enum ovl_xattr ox); enum ovl_xattr ox);
bool ovl_path_check_origin_xattr(struct ovl_fs *ofs, struct path *path); bool ovl_path_check_origin_xattr(struct ovl_fs *ofs, const struct path *path);
static inline bool ovl_check_origin_xattr(struct ovl_fs *ofs, static inline bool ovl_check_origin_xattr(struct ovl_fs *ofs,
struct dentry *upperdentry) struct dentry *upperdentry)
@ -430,9 +430,9 @@ bool ovl_need_index(struct dentry *dentry);
int ovl_nlink_start(struct dentry *dentry); int ovl_nlink_start(struct dentry *dentry);
void ovl_nlink_end(struct dentry *dentry); void ovl_nlink_end(struct dentry *dentry);
int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir); int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir);
int ovl_check_metacopy_xattr(struct ovl_fs *ofs, struct path *path); int ovl_check_metacopy_xattr(struct ovl_fs *ofs, const struct path *path);
bool ovl_is_metacopy_dentry(struct dentry *dentry); bool ovl_is_metacopy_dentry(struct dentry *dentry);
char *ovl_get_redirect_xattr(struct ovl_fs *ofs, struct path *path, int padding); char *ovl_get_redirect_xattr(struct ovl_fs *ofs, const struct path *path, int padding);
int ovl_sync_status(struct ovl_fs *ofs); int ovl_sync_status(struct ovl_fs *ofs);
static inline void ovl_set_flag(unsigned long flag, struct inode *inode) static inline void ovl_set_flag(unsigned long flag, struct inode *inode)
@ -556,7 +556,7 @@ void ovl_cleanup_whiteouts(struct ovl_fs *ofs, struct dentry *upper,
struct list_head *list); struct list_head *list);
void ovl_cache_free(struct list_head *list); void ovl_cache_free(struct list_head *list);
void ovl_dir_cache_free(struct inode *inode); void ovl_dir_cache_free(struct inode *inode);
int ovl_check_d_type_supported(struct path *realpath); int ovl_check_d_type_supported(const struct path *realpath);
int ovl_workdir_cleanup(struct ovl_fs *ofs, struct inode *dir, int ovl_workdir_cleanup(struct ovl_fs *ofs, struct inode *dir,
struct vfsmount *mnt, struct dentry *dentry, int level); struct vfsmount *mnt, struct dentry *dentry, int level);
int ovl_indexdir_cleanup(struct ovl_fs *ofs); int ovl_indexdir_cleanup(struct ovl_fs *ofs);
@ -673,8 +673,8 @@ struct dentry *ovl_create_temp(struct ovl_fs *ofs, struct dentry *workdir,
extern const struct file_operations ovl_file_operations; extern const struct file_operations ovl_file_operations;
int __init ovl_aio_request_cache_init(void); int __init ovl_aio_request_cache_init(void);
void ovl_aio_request_cache_destroy(void); void ovl_aio_request_cache_destroy(void);
int ovl_real_fileattr_get(struct path *realpath, struct fileattr *fa); int ovl_real_fileattr_get(const struct path *realpath, struct fileattr *fa);
int ovl_real_fileattr_set(struct path *realpath, struct fileattr *fa); int ovl_real_fileattr_set(const struct path *realpath, struct fileattr *fa);
int ovl_fileattr_get(struct dentry *dentry, struct fileattr *fa); int ovl_fileattr_get(struct dentry *dentry, struct fileattr *fa);
int ovl_fileattr_set(struct user_namespace *mnt_userns, int ovl_fileattr_set(struct user_namespace *mnt_userns,
struct dentry *dentry, struct fileattr *fa); struct dentry *dentry, struct fileattr *fa);
@ -683,7 +683,7 @@ int ovl_fileattr_set(struct user_namespace *mnt_userns,
int ovl_copy_up(struct dentry *dentry); int ovl_copy_up(struct dentry *dentry);
int ovl_copy_up_with_data(struct dentry *dentry); int ovl_copy_up_with_data(struct dentry *dentry);
int ovl_maybe_copy_up(struct dentry *dentry, int flags); int ovl_maybe_copy_up(struct dentry *dentry, int flags);
int ovl_copy_xattr(struct super_block *sb, struct path *path, struct dentry *new); int ovl_copy_xattr(struct super_block *sb, const struct path *path, struct dentry *new);
int ovl_set_attr(struct ovl_fs *ofs, struct dentry *upper, struct kstat *stat); int ovl_set_attr(struct ovl_fs *ofs, struct dentry *upper, struct kstat *stat);
struct ovl_fh *ovl_encode_real_fh(struct ovl_fs *ofs, struct dentry *real, struct ovl_fh *ovl_encode_real_fh(struct ovl_fs *ofs, struct dentry *real,
bool is_upper); bool is_upper);

View File

@ -264,7 +264,7 @@ static int ovl_fill_merge(struct dir_context *ctx, const char *name,
return ovl_fill_lowest(rdd, name, namelen, offset, ino, d_type); return ovl_fill_lowest(rdd, name, namelen, offset, ino, d_type);
} }
static int ovl_check_whiteouts(struct path *path, struct ovl_readdir_data *rdd) static int ovl_check_whiteouts(const struct path *path, struct ovl_readdir_data *rdd)
{ {
int err; int err;
struct ovl_cache_entry *p; struct ovl_cache_entry *p;
@ -291,7 +291,7 @@ static int ovl_check_whiteouts(struct path *path, struct ovl_readdir_data *rdd)
return err; return err;
} }
static inline int ovl_dir_read(struct path *realpath, static inline int ovl_dir_read(const struct path *realpath,
struct ovl_readdir_data *rdd) struct ovl_readdir_data *rdd)
{ {
struct file *realfile; struct file *realfile;
@ -455,7 +455,7 @@ static u64 ovl_remap_lower_ino(u64 ino, int xinobits, int fsid,
* copy up origin, call vfs_getattr() on the overlay entry to make * copy up origin, call vfs_getattr() on the overlay entry to make
* sure that d_ino will be consistent with st_ino from stat(2). * sure that d_ino will be consistent with st_ino from stat(2).
*/ */
static int ovl_cache_update_ino(struct path *path, struct ovl_cache_entry *p) static int ovl_cache_update_ino(const struct path *path, struct ovl_cache_entry *p)
{ {
struct dentry *dir = path->dentry; struct dentry *dir = path->dentry;
@ -547,7 +547,7 @@ static int ovl_fill_plain(struct dir_context *ctx, const char *name,
return 0; return 0;
} }
static int ovl_dir_read_impure(struct path *path, struct list_head *list, static int ovl_dir_read_impure(const struct path *path, struct list_head *list,
struct rb_root *root) struct rb_root *root)
{ {
int err; int err;
@ -592,7 +592,7 @@ static int ovl_dir_read_impure(struct path *path, struct list_head *list,
return 0; return 0;
} }
static struct ovl_dir_cache *ovl_cache_get_impure(struct path *path) static struct ovl_dir_cache *ovl_cache_get_impure(const struct path *path)
{ {
int res; int res;
struct dentry *dentry = path->dentry; struct dentry *dentry = path->dentry;
@ -834,7 +834,7 @@ static loff_t ovl_dir_llseek(struct file *file, loff_t offset, int origin)
} }
static struct file *ovl_dir_open_realfile(const struct file *file, static struct file *ovl_dir_open_realfile(const struct file *file,
struct path *realpath) const struct path *realpath)
{ {
struct file *res; struct file *res;
const struct cred *old_cred; const struct cred *old_cred;
@ -1048,7 +1048,7 @@ static int ovl_check_d_type(struct dir_context *ctx, const char *name,
* Returns 1 if d_type is supported, 0 not supported/unknown. Negative values * Returns 1 if d_type is supported, 0 not supported/unknown. Negative values
* if error is encountered. * if error is encountered.
*/ */
int ovl_check_d_type_supported(struct path *realpath) int ovl_check_d_type_supported(const struct path *realpath)
{ {
int err; int err;
struct ovl_readdir_data rdd = { struct ovl_readdir_data rdd = {
@ -1065,7 +1065,7 @@ int ovl_check_d_type_supported(struct path *realpath)
#define OVL_INCOMPATDIR_NAME "incompat" #define OVL_INCOMPATDIR_NAME "incompat"
static int ovl_workdir_cleanup_recurse(struct ovl_fs *ofs, struct path *path, static int ovl_workdir_cleanup_recurse(struct ovl_fs *ofs, const struct path *path,
int level) int level)
{ {
int err; int err;

View File

@ -908,7 +908,7 @@ static int ovl_mount_dir(const char *name, struct path *path)
return err; return err;
} }
static int ovl_check_namelen(struct path *path, struct ovl_fs *ofs, static int ovl_check_namelen(const struct path *path, struct ovl_fs *ofs,
const char *name) const char *name)
{ {
struct kstatfs statfs; struct kstatfs statfs;
@ -1353,7 +1353,7 @@ static int ovl_create_volatile_dirty(struct ovl_fs *ofs)
} }
static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs, static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
struct path *workpath) const struct path *workpath)
{ {
struct vfsmount *mnt = ovl_upper_mnt(ofs); struct vfsmount *mnt = ovl_upper_mnt(ofs);
struct dentry *temp, *workdir; struct dentry *temp, *workdir;
@ -1482,7 +1482,7 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
} }
static int ovl_get_workdir(struct super_block *sb, struct ovl_fs *ofs, static int ovl_get_workdir(struct super_block *sb, struct ovl_fs *ofs,
struct path *upperpath) const struct path *upperpath)
{ {
int err; int err;
struct path workpath = { }; struct path workpath = { };
@ -1525,7 +1525,7 @@ static int ovl_get_workdir(struct super_block *sb, struct ovl_fs *ofs,
} }
static int ovl_get_indexdir(struct super_block *sb, struct ovl_fs *ofs, static int ovl_get_indexdir(struct super_block *sb, struct ovl_fs *ofs,
struct ovl_entry *oe, struct path *upperpath) struct ovl_entry *oe, const struct path *upperpath)
{ {
struct vfsmount *mnt = ovl_upper_mnt(ofs); struct vfsmount *mnt = ovl_upper_mnt(ofs);
struct dentry *indexdir; struct dentry *indexdir;

View File

@ -490,7 +490,7 @@ bool ovl_is_whiteout(struct dentry *dentry)
return inode && IS_WHITEOUT(inode); return inode && IS_WHITEOUT(inode);
} }
struct file *ovl_path_open(struct path *path, int flags) struct file *ovl_path_open(const struct path *path, int flags)
{ {
struct inode *inode = d_inode(path->dentry); struct inode *inode = d_inode(path->dentry);
struct user_namespace *real_mnt_userns = mnt_user_ns(path->mnt); struct user_namespace *real_mnt_userns = mnt_user_ns(path->mnt);
@ -578,7 +578,7 @@ void ovl_copy_up_end(struct dentry *dentry)
ovl_inode_unlock(d_inode(dentry)); ovl_inode_unlock(d_inode(dentry));
} }
bool ovl_path_check_origin_xattr(struct ovl_fs *ofs, struct path *path) bool ovl_path_check_origin_xattr(struct ovl_fs *ofs, const struct path *path)
{ {
int res; int res;
@ -591,7 +591,7 @@ bool ovl_path_check_origin_xattr(struct ovl_fs *ofs, struct path *path)
return false; return false;
} }
bool ovl_path_check_dir_xattr(struct ovl_fs *ofs, struct path *path, bool ovl_path_check_dir_xattr(struct ovl_fs *ofs, const struct path *path,
enum ovl_xattr ox) enum ovl_xattr ox)
{ {
int res; int res;
@ -971,7 +971,7 @@ int ovl_lock_rename_workdir(struct dentry *workdir, struct dentry *upperdir)
} }
/* err < 0, 0 if no metacopy xattr, 1 if metacopy xattr found */ /* err < 0, 0 if no metacopy xattr, 1 if metacopy xattr found */
int ovl_check_metacopy_xattr(struct ovl_fs *ofs, struct path *path) int ovl_check_metacopy_xattr(struct ovl_fs *ofs, const struct path *path)
{ {
int res; int res;
@ -1015,7 +1015,7 @@ bool ovl_is_metacopy_dentry(struct dentry *dentry)
return (oe->numlower > 1); return (oe->numlower > 1);
} }
char *ovl_get_redirect_xattr(struct ovl_fs *ofs, struct path *path, int padding) char *ovl_get_redirect_xattr(struct ovl_fs *ofs, const struct path *path, int padding)
{ {
int res; int res;
char *s, *next, *buf = NULL; char *s, *next, *buf = NULL;