diff options
author | David Howells <dhowells@redhat.com> | 2008-11-13 18:39:04 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2008-11-13 18:39:04 -0500 |
commit | 82ab8deda7fef36f067ccdeacc3b3caefc970f89 (patch) | |
tree | 377b34ca519b489574945ab4e56172c4412a4423 | |
parent | a5f773a65928a10eb5e5534fe6da6b427ac5b646 (diff) |
CRED: Wrap task credential accesses in the XFS filesystem
Wrap access to task credentials so that they can be separated more easily from
the task_struct during the introduction of COW creds.
Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().
Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more
sense to use RCU directly rather than a convenient wrapper; these will be
addressed by later patches.
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: James Morris <jmorris@namei.org>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Cc: xfs@oss.sgi.com
Signed-off-by: James Morris <jmorris@namei.org>
-rw-r--r-- | fs/xfs/linux-2.6/xfs_cred.h | 2 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_ioctl.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_acl.c | 6 |
3 files changed, 5 insertions, 5 deletions
diff --git a/fs/xfs/linux-2.6/xfs_cred.h b/fs/xfs/linux-2.6/xfs_cred.h index 652721ce0ea5..293043a5573a 100644 --- a/fs/xfs/linux-2.6/xfs_cred.h +++ b/fs/xfs/linux-2.6/xfs_cred.h | |||
@@ -24,7 +24,7 @@ | |||
24 | * Credentials | 24 | * Credentials |
25 | */ | 25 | */ |
26 | typedef struct cred { | 26 | typedef struct cred { |
27 | /* EMPTY */ | 27 | /* EMPTY */ |
28 | } cred_t; | 28 | } cred_t; |
29 | 29 | ||
30 | extern struct cred *sys_cred; | 30 | extern struct cred *sys_cred; |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index d3438c72dcaf..67c72aec97e6 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
@@ -1007,7 +1007,7 @@ xfs_ioctl_setattr( | |||
1007 | * to the file owner ID, except in cases where the | 1007 | * to the file owner ID, except in cases where the |
1008 | * CAP_FSETID capability is applicable. | 1008 | * CAP_FSETID capability is applicable. |
1009 | */ | 1009 | */ |
1010 | if (current->fsuid != ip->i_d.di_uid && !capable(CAP_FOWNER)) { | 1010 | if (current_fsuid() != ip->i_d.di_uid && !capable(CAP_FOWNER)) { |
1011 | code = XFS_ERROR(EPERM); | 1011 | code = XFS_ERROR(EPERM); |
1012 | goto error_return; | 1012 | goto error_return; |
1013 | } | 1013 | } |
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index b2f639a1416f..91d69338d3b2 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c | |||
@@ -366,7 +366,7 @@ xfs_acl_allow_set( | |||
366 | return ENOTDIR; | 366 | return ENOTDIR; |
367 | if (vp->i_sb->s_flags & MS_RDONLY) | 367 | if (vp->i_sb->s_flags & MS_RDONLY) |
368 | return EROFS; | 368 | return EROFS; |
369 | if (XFS_I(vp)->i_d.di_uid != current->fsuid && !capable(CAP_FOWNER)) | 369 | if (XFS_I(vp)->i_d.di_uid != current_fsuid() && !capable(CAP_FOWNER)) |
370 | return EPERM; | 370 | return EPERM; |
371 | return 0; | 371 | return 0; |
372 | } | 372 | } |
@@ -413,13 +413,13 @@ xfs_acl_access( | |||
413 | switch (fap->acl_entry[i].ae_tag) { | 413 | switch (fap->acl_entry[i].ae_tag) { |
414 | case ACL_USER_OBJ: | 414 | case ACL_USER_OBJ: |
415 | seen_userobj = 1; | 415 | seen_userobj = 1; |
416 | if (fuid != current->fsuid) | 416 | if (fuid != current_fsuid()) |
417 | continue; | 417 | continue; |
418 | matched.ae_tag = ACL_USER_OBJ; | 418 | matched.ae_tag = ACL_USER_OBJ; |
419 | matched.ae_perm = allows; | 419 | matched.ae_perm = allows; |
420 | break; | 420 | break; |
421 | case ACL_USER: | 421 | case ACL_USER: |
422 | if (fap->acl_entry[i].ae_id != current->fsuid) | 422 | if (fap->acl_entry[i].ae_id != current_fsuid()) |
423 | continue; | 423 | continue; |
424 | matched.ae_tag = ACL_USER; | 424 | matched.ae_tag = ACL_USER; |
425 | matched.ae_perm = allows; | 425 | matched.ae_perm = allows; |