Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97b7702c authored by David Howells's avatar David Howells Committed by James Morris
Browse files

CRED: Wrap task credential accesses in the Coda 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: default avatarDavid Howells <dhowells@redhat.com>
Reviewed-by: default avatarJames Morris <jmorris@namei.org>
Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
Cc: Jan Harkes <jaharkes@cs.cmu.edu>
Cc: codalist@coda.cs.cmu.edu
Signed-off-by: default avatarJames Morris <jmorris@namei.org>
parent a001e5b5
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -32,8 +32,8 @@ void coda_cache_enter(struct inode *inode, int mask)
	struct coda_inode_info *cii = ITOC(inode);
	struct coda_inode_info *cii = ITOC(inode);


	cii->c_cached_epoch = atomic_read(&permission_epoch);
	cii->c_cached_epoch = atomic_read(&permission_epoch);
	if (cii->c_uid != current->fsuid) {
	if (cii->c_uid != current_fsuid()) {
                cii->c_uid = current->fsuid;
		cii->c_uid = current_fsuid();
                cii->c_cached_perm = mask;
                cii->c_cached_perm = mask;
        } else
        } else
                cii->c_cached_perm |= mask;
                cii->c_cached_perm |= mask;
@@ -60,7 +60,7 @@ int coda_cache_check(struct inode *inode, int mask)
        int hit;
        int hit;
	
	
        hit = (mask & cii->c_cached_perm) == mask &&
        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);
		cii->c_cached_epoch == atomic_read(&permission_epoch);


        return hit;
        return hit;
+1 −1
Original line number Original line Diff line number Diff line
@@ -52,7 +52,7 @@ static void *alloc_upcall(int opcode, int size)
        inp->ih.opcode = opcode;
        inp->ih.opcode = opcode;
	inp->ih.pid = current->pid;
	inp->ih.pid = current->pid;
	inp->ih.pgid = task_pgrp_nr(current);
	inp->ih.pgid = task_pgrp_nr(current);
	inp->ih.uid = current->fsuid;
	inp->ih.uid = current_fsuid();


	return (void*)inp;
	return (void*)inp;
}
}