diff options
| -rw-r--r-- | fs/open.c | 2 | ||||
| -rw-r--r-- | include/linux/security.h | 10 | ||||
| -rw-r--r-- | security/apparmor/lsm.c | 7 | ||||
| -rw-r--r-- | security/capability.c | 3 | ||||
| -rw-r--r-- | security/security.c | 7 | ||||
| -rw-r--r-- | security/tomoyo/tomoyo.c | 11 | 
6 files changed, 15 insertions, 25 deletions
diff --git a/fs/open.c b/fs/open.c index 2659f596f4c..77becc04114 100644 --- a/fs/open.c +++ b/fs/open.c @@ -456,7 +456,7 @@ static int chmod_common(struct path *path, umode_t mode)  	if (error)  		return error;  	mutex_lock(&inode->i_mutex); -	error = security_path_chmod(path->dentry, path->mnt, mode); +	error = security_path_chmod(path, mode);  	if (error)  		goto out_unlock;  	newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); diff --git a/include/linux/security.h b/include/linux/security.h index 535721cc374..4298d2dbafa 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -1435,8 +1435,7 @@ struct security_operations {  			  struct dentry *new_dentry);  	int (*path_rename) (struct path *old_dir, struct dentry *old_dentry,  			    struct path *new_dir, struct dentry *new_dentry); -	int (*path_chmod) (struct dentry *dentry, struct vfsmount *mnt, -			   umode_t mode); +	int (*path_chmod) (struct path *path, umode_t mode);  	int (*path_chown) (struct path *path, uid_t uid, gid_t gid);  	int (*path_chroot) (struct path *path);  #endif @@ -2866,8 +2865,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,  		       struct dentry *new_dentry);  int security_path_rename(struct path *old_dir, struct dentry *old_dentry,  			 struct path *new_dir, struct dentry *new_dentry); -int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, -			umode_t mode); +int security_path_chmod(struct path *path, umode_t mode);  int security_path_chown(struct path *path, uid_t uid, gid_t gid);  int security_path_chroot(struct path *path);  #else	/* CONFIG_SECURITY_PATH */ @@ -2919,9 +2917,7 @@ static inline int security_path_rename(struct path *old_dir,  	return 0;  } -static inline int security_path_chmod(struct dentry *dentry, -				      struct vfsmount *mnt, -				      umode_t mode) +static inline int security_path_chmod(struct path *path, umode_t mode)  {  	return 0;  } diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index c0a399ec1df..2c0a0ff4139 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -344,13 +344,12 @@ static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry,  	return error;  } -static int apparmor_path_chmod(struct dentry *dentry, struct vfsmount *mnt, -			       umode_t mode) +static int apparmor_path_chmod(struct path *path, umode_t mode)  { -	if (!mediated_filesystem(dentry->d_inode)) +	if (!mediated_filesystem(path->dentry->d_inode))  		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) diff --git a/security/capability.c b/security/capability.c index 156816d451b..3b5883b7179 100644 --- a/security/capability.c +++ b/security/capability.c @@ -279,8 +279,7 @@ static int cap_path_truncate(struct path *path)  	return 0;  } -static int cap_path_chmod(struct dentry *dentry, struct vfsmount *mnt, -			  umode_t mode) +static int cap_path_chmod(struct path *path, umode_t mode)  {  	return 0;  } diff --git a/security/security.c b/security/security.c index 151152de1a0..214502c772a 100644 --- a/security/security.c +++ b/security/security.c @@ -454,12 +454,11 @@ int security_path_truncate(struct path *path)  	return security_ops->path_truncate(path);  } -int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, -			umode_t mode) +int security_path_chmod(struct path *path, umode_t mode)  { -	if (unlikely(IS_PRIVATE(dentry->d_inode))) +	if (unlikely(IS_PRIVATE(path->dentry->d_inode)))  		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) diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c index 75c956a51e7..620d37c159a 100644 --- a/security/tomoyo/tomoyo.c +++ b/security/tomoyo/tomoyo.c @@ -353,17 +353,14 @@ static int tomoyo_file_ioctl(struct file *file, unsigned int cmd,  /**   * tomoyo_path_chmod - Target for security_path_chmod().   * - * @dentry: Pointer to "struct dentry". - * @mnt:    Pointer to "struct vfsmount". - * @mode:   DAC permission mode. + * @path: Pointer to "struct path". + * @mode: DAC permission mode.   *   * Returns 0 on success, negative value otherwise.   */ -static int tomoyo_path_chmod(struct dentry *dentry, struct vfsmount *mnt, -			     umode_t mode) +static int tomoyo_path_chmod(struct path *path, 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);  }  |