forked from Minki/linux
whack-a-mole: constifying struct path *
-----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQqUNBr3gm4hGXdBJlZ7Krx/gZQ6wUCYzxmRQAKCRBZ7Krx/gZQ 6+/kAQD2xyf+i4zOYVBr1NB3qBbhVS1zrni1NbC/kT3dJPgTvwEA7z7eqwnrN4zg scKFP8a3yPoaQBfs4do5PolhuSr2ngA= =NBI+ -----END PGP SIGNATURE----- Merge tag 'pull-path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull vfs constification updates from Al Viro: "whack-a-mole: constifying struct path *" * tag 'pull-path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: ecryptfs: constify path spufs: constify path nd_jump_link(): constify path audit_init_parent(): constify path __io_setxattr(): constify path do_proc_readlink(): constify path overlayfs: constify path fs/notify: constify path may_linkat(): constify path do_sys_name_to_handle(): constify path ->getprocattr(): attribute name is const char *, TYVM...
This commit is contained in:
commit
4c0ed7d8d6
@ -275,7 +275,7 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int spufs_context_open(struct path *path)
|
static int spufs_context_open(const struct path *path)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct file *filp;
|
struct file *filp;
|
||||||
@ -491,7 +491,7 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int spufs_gang_open(struct path *path)
|
static int spufs_gang_open(const struct path *path)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct file *filp;
|
struct file *filp;
|
||||||
@ -536,7 +536,7 @@ static int spufs_create_gang(struct inode *inode,
|
|||||||
|
|
||||||
static struct file_system_type spufs_type;
|
static struct file_system_type spufs_type;
|
||||||
|
|
||||||
long spufs_create(struct path *path, struct dentry *dentry,
|
long spufs_create(const struct path *path, struct dentry *dentry,
|
||||||
unsigned int flags, umode_t mode, struct file *filp)
|
unsigned int flags, umode_t mode, struct file *filp)
|
||||||
{
|
{
|
||||||
struct inode *dir = d_inode(path->dentry);
|
struct inode *dir = d_inode(path->dentry);
|
||||||
|
@ -232,7 +232,7 @@ extern const struct spufs_tree_descr spufs_dir_debug_contents[];
|
|||||||
extern struct spufs_calls spufs_calls;
|
extern struct spufs_calls spufs_calls;
|
||||||
struct coredump_params;
|
struct coredump_params;
|
||||||
long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *status);
|
long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *status);
|
||||||
long spufs_create(struct path *nd, struct dentry *dentry, unsigned int flags,
|
long spufs_create(const struct path *nd, struct dentry *dentry, unsigned int flags,
|
||||||
umode_t mode, struct file *filp);
|
umode_t mode, struct file *filp);
|
||||||
/* ELF coredump callbacks for writing SPU ELF notes */
|
/* ELF coredump callbacks for writing SPU ELF notes */
|
||||||
extern int spufs_coredump_extra_notes_size(void);
|
extern int spufs_coredump_extra_notes_size(void);
|
||||||
|
@ -506,7 +506,7 @@ ecryptfs_dentry_to_lower(struct dentry *dentry)
|
|||||||
return ((struct ecryptfs_dentry_info *)dentry->d_fsdata)->lower_path.dentry;
|
return ((struct ecryptfs_dentry_info *)dentry->d_fsdata)->lower_path.dentry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct path *
|
static inline const struct path *
|
||||||
ecryptfs_dentry_to_lower_path(struct dentry *dentry)
|
ecryptfs_dentry_to_lower_path(struct dentry *dentry)
|
||||||
{
|
{
|
||||||
return &((struct ecryptfs_dentry_info *)dentry->d_fsdata)->lower_path;
|
return &((struct ecryptfs_dentry_info *)dentry->d_fsdata)->lower_path;
|
||||||
|
@ -33,7 +33,7 @@ static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb,
|
|||||||
struct iov_iter *to)
|
struct iov_iter *to)
|
||||||
{
|
{
|
||||||
ssize_t rc;
|
ssize_t rc;
|
||||||
struct path *path;
|
const struct path *path;
|
||||||
struct file *file = iocb->ki_filp;
|
struct file *file = iocb->ki_filp;
|
||||||
|
|
||||||
rc = generic_file_read_iter(iocb, to);
|
rc = generic_file_read_iter(iocb, to);
|
||||||
|
@ -317,7 +317,7 @@ static int ecryptfs_i_size_read(struct dentry *dentry, struct inode *inode)
|
|||||||
static struct dentry *ecryptfs_lookup_interpose(struct dentry *dentry,
|
static struct dentry *ecryptfs_lookup_interpose(struct dentry *dentry,
|
||||||
struct dentry *lower_dentry)
|
struct dentry *lower_dentry)
|
||||||
{
|
{
|
||||||
struct path *path = ecryptfs_dentry_to_lower_path(dentry->d_parent);
|
const struct path *path = ecryptfs_dentry_to_lower_path(dentry->d_parent);
|
||||||
struct inode *inode, *lower_inode;
|
struct inode *inode, *lower_inode;
|
||||||
struct ecryptfs_dentry_info *dentry_info;
|
struct ecryptfs_dentry_info *dentry_info;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -105,7 +105,7 @@ static int ecryptfs_init_lower_file(struct dentry *dentry,
|
|||||||
struct file **lower_file)
|
struct file **lower_file)
|
||||||
{
|
{
|
||||||
const struct cred *cred = current_cred();
|
const struct cred *cred = current_cred();
|
||||||
struct path *path = ecryptfs_dentry_to_lower_path(dentry);
|
const struct path *path = ecryptfs_dentry_to_lower_path(dentry);
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = ecryptfs_privileged_open(lower_file, path->dentry, path->mnt,
|
rc = ecryptfs_privileged_open(lower_file, path->dentry, path->mnt,
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "mount.h"
|
#include "mount.h"
|
||||||
|
|
||||||
static long do_sys_name_to_handle(struct path *path,
|
static long do_sys_name_to_handle(const struct path *path,
|
||||||
struct file_handle __user *ufh,
|
struct file_handle __user *ufh,
|
||||||
int __user *mnt_id)
|
int __user *mnt_id)
|
||||||
{
|
{
|
||||||
|
@ -63,7 +63,7 @@ extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
|
|||||||
const char *, unsigned int, struct path *);
|
const char *, unsigned int, struct path *);
|
||||||
int do_rmdir(int dfd, struct filename *name);
|
int do_rmdir(int dfd, struct filename *name);
|
||||||
int do_unlinkat(int dfd, struct filename *name);
|
int do_unlinkat(int dfd, struct filename *name);
|
||||||
int may_linkat(struct user_namespace *mnt_userns, struct path *link);
|
int may_linkat(struct user_namespace *mnt_userns, const struct path *link);
|
||||||
int do_renameat2(int olddfd, struct filename *oldname, int newdfd,
|
int do_renameat2(int olddfd, struct filename *oldname, int newdfd,
|
||||||
struct filename *newname, unsigned int flags);
|
struct filename *newname, unsigned int flags);
|
||||||
int do_mkdirat(int dfd, struct filename *name, umode_t mode);
|
int do_mkdirat(int dfd, struct filename *name, umode_t mode);
|
||||||
|
@ -986,7 +986,7 @@ static int nd_jump_root(struct nameidata *nd)
|
|||||||
* Helper to directly jump to a known parsed path from ->get_link,
|
* Helper to directly jump to a known parsed path from ->get_link,
|
||||||
* caller must have taken a reference to path beforehand.
|
* caller must have taken a reference to path beforehand.
|
||||||
*/
|
*/
|
||||||
int nd_jump_link(struct path *path)
|
int nd_jump_link(const struct path *path)
|
||||||
{
|
{
|
||||||
int error = -ELOOP;
|
int error = -ELOOP;
|
||||||
struct nameidata *nd = current->nameidata;
|
struct nameidata *nd = current->nameidata;
|
||||||
@ -1178,7 +1178,7 @@ static bool safe_hardlink_source(struct user_namespace *mnt_userns,
|
|||||||
*
|
*
|
||||||
* Returns 0 if successful, -ve on error.
|
* Returns 0 if successful, -ve on error.
|
||||||
*/
|
*/
|
||||||
int may_linkat(struct user_namespace *mnt_userns, struct path *link)
|
int may_linkat(struct user_namespace *mnt_userns, const struct path *link)
|
||||||
{
|
{
|
||||||
struct inode *inode = link->dentry->d_inode;
|
struct inode *inode = link->dentry->d_inode;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include "fanotify.h"
|
#include "fanotify.h"
|
||||||
|
|
||||||
static bool fanotify_path_equal(struct path *p1, struct path *p2)
|
static bool fanotify_path_equal(const struct path *p1, const struct path *p2)
|
||||||
{
|
{
|
||||||
return p1->mnt == p2->mnt && p1->dentry == p2->dentry;
|
return p1->mnt == p2->mnt && p1->dentry == p2->dentry;
|
||||||
}
|
}
|
||||||
|
@ -458,7 +458,7 @@ static inline bool fanotify_event_has_path(struct fanotify_event *event)
|
|||||||
event->type == FANOTIFY_EVENT_TYPE_PATH_PERM;
|
event->type == FANOTIFY_EVENT_TYPE_PATH_PERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct path *fanotify_event_path(struct fanotify_event *event)
|
static inline const struct path *fanotify_event_path(struct fanotify_event *event)
|
||||||
{
|
{
|
||||||
if (event->type == FANOTIFY_EVENT_TYPE_PATH)
|
if (event->type == FANOTIFY_EVENT_TYPE_PATH)
|
||||||
return &FANOTIFY_PE(event)->path;
|
return &FANOTIFY_PE(event)->path;
|
||||||
|
@ -249,7 +249,7 @@ out:
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int create_fd(struct fsnotify_group *group, struct path *path,
|
static int create_fd(struct fsnotify_group *group, const struct path *path,
|
||||||
struct file **file)
|
struct file **file)
|
||||||
{
|
{
|
||||||
int client_fd;
|
int client_fd;
|
||||||
@ -619,7 +619,7 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
|
|||||||
char __user *buf, size_t count)
|
char __user *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct fanotify_event_metadata metadata;
|
struct fanotify_event_metadata metadata;
|
||||||
struct path *path = fanotify_event_path(event);
|
const struct path *path = fanotify_event_path(event);
|
||||||
struct fanotify_info *info = fanotify_event_info(event);
|
struct fanotify_info *info = fanotify_event_info(event);
|
||||||
unsigned int info_mode = FAN_GROUP_FLAG(group, FANOTIFY_INFO_MODES);
|
unsigned int info_mode = FAN_GROUP_FLAG(group, FANOTIFY_INFO_MODES);
|
||||||
unsigned int pidfd_mode = info_mode & FAN_REPORT_PIDFD;
|
unsigned int pidfd_mode = info_mode & FAN_REPORT_PIDFD;
|
||||||
@ -1553,7 +1553,7 @@ static int fanotify_test_fid(struct dentry *dentry)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int fanotify_events_supported(struct fsnotify_group *group,
|
static int fanotify_events_supported(struct fsnotify_group *group,
|
||||||
struct path *path, __u64 mask,
|
const struct path *path, __u64 mask,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS;
|
unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS;
|
||||||
|
@ -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 @@ out:
|
|||||||
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;
|
||||||
|
@ -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);
|
||||||
|
@ -588,7 +588,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;
|
||||||
@ -610,7 +610,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;
|
||||||
|
|
||||||
@ -685,7 +685,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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -264,7 +264,7 @@ static bool 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 bool ovl_fill_plain(struct dir_context *ctx, const char *name,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 @@ out_unlock:
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 bool 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;
|
||||||
|
@ -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;
|
||||||
@ -1366,7 +1366,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;
|
||||||
@ -1495,7 +1495,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 = { };
|
||||||
@ -1538,7 +1538,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
@ -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 @@ err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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;
|
||||||
|
@ -1761,7 +1761,7 @@ out:
|
|||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_proc_readlink(struct path *path, char __user *buffer, int buflen)
|
static int do_proc_readlink(const struct path *path, char __user *buffer, int buflen)
|
||||||
{
|
{
|
||||||
char *tmp = kmalloc(PATH_MAX, GFP_KERNEL);
|
char *tmp = kmalloc(PATH_MAX, GFP_KERNEL);
|
||||||
char *pathname;
|
char *pathname;
|
||||||
@ -2728,7 +2728,7 @@ static ssize_t proc_pid_attr_read(struct file * file, char __user * buf,
|
|||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
|
|
||||||
length = security_getprocattr(task, PROC_I(inode)->op.lsm,
|
length = security_getprocattr(task, PROC_I(inode)->op.lsm,
|
||||||
(char*)file->f_path.dentry->d_name.name,
|
file->f_path.dentry->d_name.name,
|
||||||
&p);
|
&p);
|
||||||
put_task_struct(task);
|
put_task_struct(task);
|
||||||
if (length > 0)
|
if (length > 0)
|
||||||
|
@ -254,7 +254,7 @@ LSM_HOOK(int, 0, sem_semop, struct kern_ipc_perm *perm, struct sembuf *sops,
|
|||||||
LSM_HOOK(int, 0, netlink_send, struct sock *sk, struct sk_buff *skb)
|
LSM_HOOK(int, 0, netlink_send, struct sock *sk, struct sk_buff *skb)
|
||||||
LSM_HOOK(void, LSM_RET_VOID, d_instantiate, struct dentry *dentry,
|
LSM_HOOK(void, LSM_RET_VOID, d_instantiate, struct dentry *dentry,
|
||||||
struct inode *inode)
|
struct inode *inode)
|
||||||
LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, char *name,
|
LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, const char *name,
|
||||||
char **value)
|
char **value)
|
||||||
LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t size)
|
LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t size)
|
||||||
LSM_HOOK(int, 0, ismaclabel, const char *name)
|
LSM_HOOK(int, 0, ismaclabel, const char *name)
|
||||||
|
@ -83,7 +83,7 @@ extern int follow_up(struct path *);
|
|||||||
extern struct dentry *lock_rename(struct dentry *, struct dentry *);
|
extern struct dentry *lock_rename(struct dentry *, struct dentry *);
|
||||||
extern void unlock_rename(struct dentry *, struct dentry *);
|
extern void unlock_rename(struct dentry *, struct dentry *);
|
||||||
|
|
||||||
extern int __must_check nd_jump_link(struct path *path);
|
extern int __must_check nd_jump_link(const struct path *path);
|
||||||
|
|
||||||
static inline void nd_terminate_link(void *name, size_t len, size_t maxlen)
|
static inline void nd_terminate_link(void *name, size_t len, size_t maxlen)
|
||||||
{
|
{
|
||||||
|
@ -462,7 +462,7 @@ int security_sem_semctl(struct kern_ipc_perm *sma, int cmd);
|
|||||||
int security_sem_semop(struct kern_ipc_perm *sma, struct sembuf *sops,
|
int security_sem_semop(struct kern_ipc_perm *sma, struct sembuf *sops,
|
||||||
unsigned nsops, int alter);
|
unsigned nsops, int alter);
|
||||||
void security_d_instantiate(struct dentry *dentry, struct inode *inode);
|
void security_d_instantiate(struct dentry *dentry, struct inode *inode);
|
||||||
int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
|
int security_getprocattr(struct task_struct *p, const char *lsm, const char *name,
|
||||||
char **value);
|
char **value);
|
||||||
int security_setprocattr(const char *lsm, const char *name, void *value,
|
int security_setprocattr(const char *lsm, const char *name, void *value,
|
||||||
size_t size);
|
size_t size);
|
||||||
@ -1307,7 +1307,7 @@ static inline void security_d_instantiate(struct dentry *dentry,
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
static inline int security_getprocattr(struct task_struct *p, const char *lsm,
|
static inline int security_getprocattr(struct task_struct *p, const char *lsm,
|
||||||
char *name, char **value)
|
const char *name, char **value)
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ int io_fsetxattr_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int __io_setxattr(struct io_kiocb *req, unsigned int issue_flags,
|
static int __io_setxattr(struct io_kiocb *req, unsigned int issue_flags,
|
||||||
struct path *path)
|
const struct path *path)
|
||||||
{
|
{
|
||||||
struct io_xattr *ix = io_kiocb_to_cmd(req, struct io_xattr);
|
struct io_xattr *ix = io_kiocb_to_cmd(req, struct io_xattr);
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -133,7 +133,7 @@ int audit_watch_compare(struct audit_watch *watch, unsigned long ino, dev_t dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize a parent watch entry. */
|
/* Initialize a parent watch entry. */
|
||||||
static struct audit_parent *audit_init_parent(struct path *path)
|
static struct audit_parent *audit_init_parent(const struct path *path)
|
||||||
{
|
{
|
||||||
struct inode *inode = d_backing_inode(path->dentry);
|
struct inode *inode = d_backing_inode(path->dentry);
|
||||||
struct audit_parent *parent;
|
struct audit_parent *parent;
|
||||||
|
@ -614,7 +614,7 @@ static int apparmor_sb_pivotroot(const struct path *old_path,
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int apparmor_getprocattr(struct task_struct *task, char *name,
|
static int apparmor_getprocattr(struct task_struct *task, const char *name,
|
||||||
char **value)
|
char **value)
|
||||||
{
|
{
|
||||||
int error = -ENOENT;
|
int error = -ENOENT;
|
||||||
|
@ -2062,8 +2062,8 @@ void security_d_instantiate(struct dentry *dentry, struct inode *inode)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(security_d_instantiate);
|
EXPORT_SYMBOL(security_d_instantiate);
|
||||||
|
|
||||||
int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
|
int security_getprocattr(struct task_struct *p, const char *lsm,
|
||||||
char **value)
|
const char *name, char **value)
|
||||||
{
|
{
|
||||||
struct security_hook_list *hp;
|
struct security_hook_list *hp;
|
||||||
|
|
||||||
|
@ -6330,7 +6330,7 @@ static void selinux_d_instantiate(struct dentry *dentry, struct inode *inode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int selinux_getprocattr(struct task_struct *p,
|
static int selinux_getprocattr(struct task_struct *p,
|
||||||
char *name, char **value)
|
const char *name, char **value)
|
||||||
{
|
{
|
||||||
const struct task_security_struct *__tsec;
|
const struct task_security_struct *__tsec;
|
||||||
u32 sid;
|
u32 sid;
|
||||||
|
@ -3493,7 +3493,7 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
|
|||||||
*
|
*
|
||||||
* Returns the length of the smack label or an error code
|
* Returns the length of the smack label or an error code
|
||||||
*/
|
*/
|
||||||
static int smack_getprocattr(struct task_struct *p, char *name, char **value)
|
static int smack_getprocattr(struct task_struct *p, const char *name, char **value)
|
||||||
{
|
{
|
||||||
struct smack_known *skp = smk_of_task_struct_obj(p);
|
struct smack_known *skp = smk_of_task_struct_obj(p);
|
||||||
char *cp;
|
char *cp;
|
||||||
|
Loading…
Reference in New Issue
Block a user