CRED: Wrap task credential accesses in the IA64 arch
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: Tony Luck <tony.luck@intel.com> Cc: linux-ia64@vger.kernel.org Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
		
							parent
							
								
									92a77aac98
								
							
						
					
					
						commit
						ef81ee9855
					
				| @ -158,7 +158,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr) | ||||
| 	ia64_mlogbuf_dump(); | ||||
| 	printk(KERN_ERR "OS_MCA: process [cpu %d, pid: %d, uid: %d, " | ||||
| 		"iip: %p, psr: 0x%lx,paddr: 0x%lx](%s) encounters MCA.\n", | ||||
| 		raw_smp_processor_id(), current->pid, current->uid, | ||||
| 	       raw_smp_processor_id(), current->pid, current_uid(), | ||||
| 		iip, ipsr, paddr, current->comm); | ||||
| 
 | ||||
| 	spin_lock(&mca_bh_lock); | ||||
|  | ||||
| @ -2220,8 +2220,8 @@ pfm_alloc_file(pfm_context_t *ctx) | ||||
| 	DPRINT(("new inode ino=%ld @%p\n", inode->i_ino, inode)); | ||||
| 
 | ||||
| 	inode->i_mode = S_IFCHR|S_IRUGO; | ||||
| 	inode->i_uid  = current->fsuid; | ||||
| 	inode->i_gid  = current->fsgid; | ||||
| 	inode->i_uid  = current_fsuid(); | ||||
| 	inode->i_gid  = current_fsgid(); | ||||
| 
 | ||||
| 	sprintf(name, "[%lu]", inode->i_ino); | ||||
| 	this.name = name; | ||||
| @ -2399,22 +2399,25 @@ error_kmem: | ||||
| static int | ||||
| pfm_bad_permissions(struct task_struct *task) | ||||
| { | ||||
| 	uid_t uid = current_uid(); | ||||
| 	gid_t gid = current_gid(); | ||||
| 
 | ||||
| 	/* inspired by ptrace_attach() */ | ||||
| 	DPRINT(("cur: uid=%d gid=%d task: euid=%d suid=%d uid=%d egid=%d sgid=%d\n", | ||||
| 		current->uid, | ||||
| 		current->gid, | ||||
| 		uid, | ||||
| 		gid, | ||||
| 		task->euid, | ||||
| 		task->suid, | ||||
| 		task->uid, | ||||
| 		task->egid, | ||||
| 		task->sgid)); | ||||
| 
 | ||||
| 	return ((current->uid != task->euid) | ||||
| 	    || (current->uid != task->suid) | ||||
| 	    || (current->uid != task->uid) | ||||
| 	    || (current->gid != task->egid) | ||||
| 	    || (current->gid != task->sgid) | ||||
| 	    || (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE); | ||||
| 	return (uid != task->euid) | ||||
| 	    || (uid != task->suid) | ||||
| 	    || (uid != task->uid) | ||||
| 	    || (gid != task->egid) | ||||
| 	    || (gid != task->sgid) | ||||
| 	    || (gid != task->gid)) && !capable(CAP_SYS_PTRACE); | ||||
| } | ||||
| 
 | ||||
| static int | ||||
|  | ||||
| @ -229,7 +229,7 @@ ia64_rt_sigreturn (struct sigscratch *scr) | ||||
| 	si.si_errno = 0; | ||||
| 	si.si_code = SI_KERNEL; | ||||
| 	si.si_pid = task_pid_vnr(current); | ||||
| 	si.si_uid = current->uid; | ||||
| 	si.si_uid = current_uid(); | ||||
| 	si.si_addr = sc; | ||||
| 	force_sig_info(SIGSEGV, &si, current); | ||||
| 	return retval; | ||||
| @ -326,7 +326,7 @@ force_sigsegv_info (int sig, void __user *addr) | ||||
| 	si.si_errno = 0; | ||||
| 	si.si_code = SI_KERNEL; | ||||
| 	si.si_pid = task_pid_vnr(current); | ||||
| 	si.si_uid = current->uid; | ||||
| 	si.si_uid = current_uid(); | ||||
| 	si.si_addr = addr; | ||||
| 	force_sig_info(SIGSEGV, &si, current); | ||||
| 	return 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user