svn commit: r278956 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Wed Feb 18 13:37:29 UTC 2015
Author: mjg
Date: Wed Feb 18 13:37:28 2015
New Revision: 278956
URL: https://svnweb.freebsd.org/changeset/base/278956
Log:
filedesc: obtain a stable copy of credentials in fget_unlocked
This was broken in r278930.
While here tidy up fget_mmap to use fdp from local var instead of obtaining
the same pointer from td.
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Wed Feb 18 13:07:26 2015 (r278955)
+++ head/sys/kern/kern_descrip.c Wed Feb 18 13:37:28 2015 (r278956)
@@ -2337,7 +2337,7 @@ fget_unlocked(struct filedesc *fdp, int
u_int count;
#ifdef CAPABILITIES
seq_t seq;
- cap_rights_t *haverights;
+ cap_rights_t haverights;
int error;
#endif
@@ -2356,7 +2356,7 @@ fget_unlocked(struct filedesc *fdp, int
#ifdef CAPABILITIES
seq = seq_read(fd_seq(fdt, fd));
fde = &fdt->fdt_ofiles[fd];
- haverights = cap_rights_fde(fde);
+ haverights = *cap_rights_fde(fde);
fp = fde->fde_file;
if (!seq_consistent(fd_seq(fdt, fd), seq)) {
cpu_spinwait();
@@ -2369,7 +2369,7 @@ fget_unlocked(struct filedesc *fdp, int
return (EBADF);
#ifdef CAPABILITIES
if (needrightsp != NULL) {
- error = cap_check(haverights, needrightsp);
+ error = cap_check(&haverights, needrightsp);
if (error != 0)
return (error);
}
@@ -2505,7 +2505,7 @@ fget_mmap(struct thread *td, int fd, cap
*/
if (maxprotp != NULL)
*maxprotp = cap_rights_to_vmprot(cap_rights(fdp, fd));
- if (!fd_modified(td->td_proc->p_fd, fd, seq))
+ if (!fd_modified(fdp, fd, seq))
break;
fdrop(*fpp, td);
}
More information about the svn-src-all
mailing list