diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2011-12-08 10:51:53 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-01-06 23:16:53 -0500 |
| commit | cdcf116d44e78c7216ba9f8be9af1cdfca7af728 (patch) | |
| tree | 2417cfd3e06ac5e2468585e8f00d580242cb5571 | |
| parent | d8c9584ea2a92879f471fd3a2be3af6c534fb035 (diff) | |
switch security_path_chmod() to struct path *
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -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
| @@ -456,7 +456,7 @@ static int chmod_common(struct path *path, umode_t mode) | |||
| 456 | if (error) | 456 | if (error) |
| 457 | return error; | 457 | return error; |
| 458 | mutex_lock(&inode->i_mutex); | 458 | mutex_lock(&inode->i_mutex); |
| 459 | error = security_path_chmod(path->dentry, path->mnt, mode); | 459 | error = security_path_chmod(path, mode); |
| 460 | if (error) | 460 | if (error) |
| 461 | goto out_unlock; | 461 | goto out_unlock; |
| 462 | newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); | 462 | newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO); |
diff --git a/include/linux/security.h b/include/linux/security.h index 535721cc374a..4298d2dbafa3 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -1435,8 +1435,7 @@ struct security_operations { | |||
| 1435 | struct dentry *new_dentry); | 1435 | struct dentry *new_dentry); |
| 1436 | int (*path_rename) (struct path *old_dir, struct dentry *old_dentry, | 1436 | int (*path_rename) (struct path *old_dir, struct dentry *old_dentry, |
| 1437 | struct path *new_dir, struct dentry *new_dentry); | 1437 | struct path *new_dir, struct dentry *new_dentry); |
| 1438 | int (*path_chmod) (struct dentry *dentry, struct vfsmount *mnt, | 1438 | int (*path_chmod) (struct path *path, umode_t mode); |
| 1439 | umode_t mode); | ||
| 1440 | int (*path_chown) (struct path *path, uid_t uid, gid_t gid); | 1439 | int (*path_chown) (struct path *path, uid_t uid, gid_t gid); |
| 1441 | int (*path_chroot) (struct path *path); | 1440 | int (*path_chroot) (struct path *path); |
| 1442 | #endif | 1441 | #endif |
| @@ -2866,8 +2865,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, | |||
| 2866 | struct dentry *new_dentry); | 2865 | struct dentry *new_dentry); |
| 2867 | int security_path_rename(struct path *old_dir, struct dentry *old_dentry, | 2866 | int security_path_rename(struct path *old_dir, struct dentry *old_dentry, |
| 2868 | struct path *new_dir, struct dentry *new_dentry); | 2867 | struct path *new_dir, struct dentry *new_dentry); |
| 2869 | int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, | 2868 | int security_path_chmod(struct path *path, umode_t mode); |
| 2870 | umode_t mode); | ||
| 2871 | int security_path_chown(struct path *path, uid_t uid, gid_t gid); | 2869 | int security_path_chown(struct path *path, uid_t uid, gid_t gid); |
| 2872 | int security_path_chroot(struct path *path); | 2870 | int security_path_chroot(struct path *path); |
| 2873 | #else /* CONFIG_SECURITY_PATH */ | 2871 | #else /* CONFIG_SECURITY_PATH */ |
| @@ -2919,9 +2917,7 @@ static inline int security_path_rename(struct path *old_dir, | |||
| 2919 | return 0; | 2917 | return 0; |
| 2920 | } | 2918 | } |
| 2921 | 2919 | ||
| 2922 | static inline int security_path_chmod(struct dentry *dentry, | 2920 | static inline int security_path_chmod(struct path *path, umode_t mode) |
| 2923 | struct vfsmount *mnt, | ||
| 2924 | umode_t mode) | ||
| 2925 | { | 2921 | { |
| 2926 | return 0; | 2922 | return 0; |
| 2927 | } | 2923 | } |
diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index c0a399ec1df9..2c0a0ff41399 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, | |||
| 344 | return error; | 344 | return error; |
| 345 | } | 345 | } |
| 346 | 346 | ||
| 347 | static int apparmor_path_chmod(struct dentry *dentry, struct vfsmount *mnt, | 347 | static int apparmor_path_chmod(struct path *path, umode_t mode) |
| 348 | umode_t mode) | ||
| 349 | { | 348 | { |
| 350 | if (!mediated_filesystem(dentry->d_inode)) | 349 | if (!mediated_filesystem(path->dentry->d_inode)) |
| 351 | return 0; | 350 | return 0; |
| 352 | 351 | ||
| 353 | return common_perm_mnt_dentry(OP_CHMOD, mnt, dentry, AA_MAY_CHMOD); | 352 | return common_perm_mnt_dentry(OP_CHMOD, path->mnt, path->dentry, AA_MAY_CHMOD); |
| 354 | } | 353 | } |
| 355 | 354 | ||
| 356 | static int apparmor_path_chown(struct path *path, uid_t uid, gid_t gid) | 355 | 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 156816d451ba..3b5883b7179f 100644 --- a/security/capability.c +++ b/security/capability.c | |||
| @@ -279,8 +279,7 @@ static int cap_path_truncate(struct path *path) | |||
| 279 | return 0; | 279 | return 0; |
| 280 | } | 280 | } |
| 281 | 281 | ||
| 282 | static int cap_path_chmod(struct dentry *dentry, struct vfsmount *mnt, | 282 | static int cap_path_chmod(struct path *path, umode_t mode) |
| 283 | umode_t mode) | ||
| 284 | { | 283 | { |
| 285 | return 0; | 284 | return 0; |
| 286 | } | 285 | } |
diff --git a/security/security.c b/security/security.c index 151152de1a0a..214502c772ab 100644 --- a/security/security.c +++ b/security/security.c | |||
| @@ -454,12 +454,11 @@ int security_path_truncate(struct path *path) | |||
| 454 | return security_ops->path_truncate(path); | 454 | return security_ops->path_truncate(path); |
| 455 | } | 455 | } |
| 456 | 456 | ||
| 457 | int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, | 457 | int security_path_chmod(struct path *path, umode_t mode) |
| 458 | umode_t mode) | ||
| 459 | { | 458 | { |
| 460 | if (unlikely(IS_PRIVATE(dentry->d_inode))) | 459 | if (unlikely(IS_PRIVATE(path->dentry->d_inode))) |
| 461 | return 0; | 460 | return 0; |
| 462 | return security_ops->path_chmod(dentry, mnt, mode); | 461 | return security_ops->path_chmod(path, mode); |
| 463 | } | 462 | } |
| 464 | 463 | ||
| 465 | int security_path_chown(struct path *path, uid_t uid, gid_t gid) | 464 | 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 75c956a51e75..620d37c159a3 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, | |||
| 353 | /** | 353 | /** |
| 354 | * tomoyo_path_chmod - Target for security_path_chmod(). | 354 | * tomoyo_path_chmod - Target for security_path_chmod(). |
| 355 | * | 355 | * |
| 356 | * @dentry: Pointer to "struct dentry". | 356 | * @path: Pointer to "struct path". |
| 357 | * @mnt: Pointer to "struct vfsmount". | 357 | * @mode: DAC permission mode. |
| 358 | * @mode: DAC permission mode. | ||
| 359 | * | 358 | * |
| 360 | * Returns 0 on success, negative value otherwise. | 359 | * Returns 0 on success, negative value otherwise. |
| 361 | */ | 360 | */ |
| 362 | static int tomoyo_path_chmod(struct dentry *dentry, struct vfsmount *mnt, | 361 | static int tomoyo_path_chmod(struct path *path, umode_t mode) |
| 363 | umode_t mode) | ||
| 364 | { | 362 | { |
| 365 | struct path path = { mnt, dentry }; | 363 | return tomoyo_path_number_perm(TOMOYO_TYPE_CHMOD, path, |
| 366 | return tomoyo_path_number_perm(TOMOYO_TYPE_CHMOD, &path, | ||
| 367 | mode & S_IALLUGO); | 364 | mode & S_IALLUGO); |
| 368 | } | 365 | } |
| 369 | 366 | ||
