CRED: Wrap task credential accesses in the Coda filesystem
authorDavid Howells <dhowells@redhat.com>
Thu, 13 Nov 2008 23:38:48 +0000 (10:38 +1100)
committerJames Morris <jmorris@namei.org>
Thu, 13 Nov 2008 23:38:48 +0000 (10:38 +1100)
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: Jan Harkes <jaharkes@cs.cmu.edu>
Cc: codalist@coda.cs.cmu.edu
Signed-off-by: James Morris <jmorris@namei.org>
fs/coda/cache.c
fs/coda/upcall.c

index 8a23703..a5bf577 100644 (file)
@@ -32,8 +32,8 @@ void coda_cache_enter(struct inode *inode, int mask)
        struct coda_inode_info *cii = ITOC(inode);
 
        cii->c_cached_epoch = atomic_read(&permission_epoch);
-       if (cii->c_uid != current->fsuid) {
-                cii->c_uid = current->fsuid;
+       if (cii->c_uid != current_fsuid()) {
+               cii->c_uid = current_fsuid();
                 cii->c_cached_perm = mask;
         } else
                 cii->c_cached_perm |= mask;
@@ -60,7 +60,7 @@ int coda_cache_check(struct inode *inode, int mask)
         int hit;
        
         hit = (mask & cii->c_cached_perm) == mask &&
-               cii->c_uid == current->fsuid &&
+               cii->c_uid == current_fsuid() &&
                cii->c_cached_epoch == atomic_read(&permission_epoch);
 
         return hit;
index ce432bc..c274d94 100644 (file)
@@ -52,7 +52,7 @@ static void *alloc_upcall(int opcode, int size)
         inp->ih.opcode = opcode;
        inp->ih.pid = current->pid;
        inp->ih.pgid = task_pgrp_nr(current);
-       inp->ih.uid = current->fsuid;
+       inp->ih.uid = current_fsuid();
 
        return (void*)inp;
 }