Commit cdcf116d authored by Al Viro's avatar Al Viro

switch security_path_chmod() to struct path *

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent d8c9584e
...@@ -456,7 +456,7 @@ static int chmod_common(struct path *path, umode_t mode) ...@@ -456,7 +456,7 @@ static int chmod_common(struct path *path, umode_t mode)
if (error) if (error)
return error; return error;
mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex);
error = security_path_chmod(path->dentry, path->mnt, mode); error = security_path_chmod(path, mode);
if (error) if (error)
goto out_unlock; goto out_unlock;
newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
......
...@@ -1435,8 +1435,7 @@ struct security_operations { ...@@ -1435,8 +1435,7 @@ struct security_operations {
struct dentry *new_dentry); struct dentry *new_dentry);
int (*path_rename) (struct path *old_dir, struct dentry *old_dentry, int (*path_rename) (struct path *old_dir, struct dentry *old_dentry,
struct path *new_dir, struct dentry *new_dentry); struct path *new_dir, struct dentry *new_dentry);
int (*path_chmod) (struct dentry *dentry, struct vfsmount *mnt, int (*path_chmod) (struct path *path, umode_t mode);
umode_t mode);
int (*path_chown) (struct path *path, uid_t uid, gid_t gid); int (*path_chown) (struct path *path, uid_t uid, gid_t gid);
int (*path_chroot) (struct path *path); int (*path_chroot) (struct path *path);
#endif #endif
...@@ -2866,8 +2865,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, ...@@ -2866,8 +2865,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
struct dentry *new_dentry); struct dentry *new_dentry);
int security_path_rename(struct path *old_dir, struct dentry *old_dentry, int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
struct path *new_dir, struct dentry *new_dentry); struct path *new_dir, struct dentry *new_dentry);
int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, int security_path_chmod(struct path *path, umode_t mode);
umode_t mode);
int security_path_chown(struct path *path, uid_t uid, gid_t gid); int security_path_chown(struct path *path, uid_t uid, gid_t gid);
int security_path_chroot(struct path *path); int security_path_chroot(struct path *path);
#else /* CONFIG_SECURITY_PATH */ #else /* CONFIG_SECURITY_PATH */
...@@ -2919,9 +2917,7 @@ static inline int security_path_rename(struct path *old_dir, ...@@ -2919,9 +2917,7 @@ static inline int security_path_rename(struct path *old_dir,
return 0; return 0;
} }
static inline int security_path_chmod(struct dentry *dentry, static inline int security_path_chmod(struct path *path, umode_t mode)
struct vfsmount *mnt,
umode_t mode)
{ {
return 0; return 0;
} }
......
...@@ -344,13 +344,12 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry, ...@@ -344,13 +344,12 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry,
return error; return error;
} }
static int apparmor_path_chmod(struct dentry *dentry, struct vfsmount *mnt, static int apparmor_path_chmod(struct path *path, umode_t mode)
umode_t mode)
{ {
if (!mediated_filesystem(dentry->d_inode)) if (!mediated_filesystem(path->dentry->d_inode))
return 0; return 0;
return common_perm_mnt_dentry(OP_CHMOD, mnt, dentry, AA_MAY_CHMOD); return common_perm_mnt_dentry(OP_CHMOD, path->mnt, path->dentry, AA_MAY_CHMOD);
} }
static int apparmor_path_chown(struct path *path, uid_t uid, gid_t gid) static int apparmor_path_chown(struct path *path, uid_t uid, gid_t gid)
......
...@@ -279,8 +279,7 @@ static int cap_path_truncate(struct path *path) ...@@ -279,8 +279,7 @@ static int cap_path_truncate(struct path *path)
return 0; return 0;
} }
static int cap_path_chmod(struct dentry *dentry, struct vfsmount *mnt, static int cap_path_chmod(struct path *path, umode_t mode)
umode_t mode)
{ {
return 0; return 0;
} }
......
...@@ -454,12 +454,11 @@ int security_path_truncate(struct path *path) ...@@ -454,12 +454,11 @@ int security_path_truncate(struct path *path)
return security_ops->path_truncate(path); return security_ops->path_truncate(path);
} }
int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, int security_path_chmod(struct path *path, umode_t mode)
umode_t mode)
{ {
if (unlikely(IS_PRIVATE(dentry->d_inode))) if (unlikely(IS_PRIVATE(path->dentry->d_inode)))
return 0; return 0;
return security_ops->path_chmod(dentry, mnt, mode); return security_ops->path_chmod(path, mode);
} }
int security_path_chown(struct path *path, uid_t uid, gid_t gid) int security_path_chown(struct path *path, uid_t uid, gid_t gid)
......
...@@ -353,17 +353,14 @@ static int tomoyo_file_ioctl(struct file *file, unsigned int cmd, ...@@ -353,17 +353,14 @@ static int tomoyo_file_ioctl(struct file *file, unsigned int cmd,
/** /**
* tomoyo_path_chmod - Target for security_path_chmod(). * tomoyo_path_chmod - Target for security_path_chmod().
* *
* @dentry: Pointer to "struct dentry". * @path: Pointer to "struct path".
* @mnt: Pointer to "struct vfsmount".
* @mode: DAC permission mode. * @mode: DAC permission mode.
* *
* Returns 0 on success, negative value otherwise. * Returns 0 on success, negative value otherwise.
*/ */
static int tomoyo_path_chmod(struct dentry *dentry, struct vfsmount *mnt, static int tomoyo_path_chmod(struct path *path, umode_t mode)
umode_t mode)
{ {
struct path path = { mnt, dentry }; return tomoyo_path_number_perm(TOMOYO_TYPE_CHMOD, path,
return tomoyo_path_number_perm(TOMOYO_TYPE_CHMOD, &path,
mode & S_IALLUGO); mode & S_IALLUGO);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment