forked from mirrors/linux
		
	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
					
				
					 6 changed files with 15 additions and 25 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
|  | @ -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; | ||||
| } | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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; | ||||
| } | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Al Viro
						Al Viro