mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-09 04:38:07 +07:00
switch security_path_chmod() to struct path *
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d8c9584ea2
commit
cdcf116d44
@ -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 {
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
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,
|
|||||||
/**
|
/**
|
||||||
* 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user