Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

David Howells and committed by
James Morris
82ab8ded a5f773a6

+5 -5
+1 -1
fs/xfs/linux-2.6/xfs_cred.h
··· 24 24 * Credentials 25 25 */ 26 26 typedef struct cred { 27 - /* EMPTY */ 27 + /* EMPTY */ 28 28 } cred_t; 29 29 30 30 extern struct cred *sys_cred;
+1 -1
fs/xfs/linux-2.6/xfs_ioctl.c
··· 1007 1007 * to the file owner ID, except in cases where the 1008 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 1011 code = XFS_ERROR(EPERM); 1012 1012 goto error_return; 1013 1013 }
+3 -3
fs/xfs/xfs_acl.c
··· 366 366 return ENOTDIR; 367 367 if (vp->i_sb->s_flags & MS_RDONLY) 368 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 370 return EPERM; 371 371 return 0; 372 372 } ··· 413 413 switch (fap->acl_entry[i].ae_tag) { 414 414 case ACL_USER_OBJ: 415 415 seen_userobj = 1; 416 - if (fuid != current->fsuid) 416 + if (fuid != current_fsuid()) 417 417 continue; 418 418 matched.ae_tag = ACL_USER_OBJ; 419 419 matched.ae_perm = allows; 420 420 break; 421 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 423 continue; 424 424 matched.ae_tag = ACL_USER; 425 425 matched.ae_perm = allows;