diff options
Diffstat (limited to 'sys/fs')
-rw-r--r-- | sys/fs/coda/coda_namecache.c | 3 | ||||
-rw-r--r-- | sys/fs/specfs/spec_vnops.c | 9 | ||||
-rw-r--r-- | sys/fs/unionfs/union_vfsops.c | 3 |
3 files changed, 6 insertions, 9 deletions
diff --git a/sys/fs/coda/coda_namecache.c b/sys/fs/coda/coda_namecache.c index 9dfaf19..29da91a 100644 --- a/sys/fs/coda/coda_namecache.c +++ b/sys/fs/coda/coda_namecache.c @@ -274,11 +274,10 @@ coda_nc_enter(dcp, name, namelen, cred, cp) */ vref(CTOV(cp)); vref(CTOV(dcp)); - crhold(cred); cncp->dcp = dcp; cncp->cp = cp; cncp->namelen = namelen; - cncp->cred = cred; + cncp->cred = crhold(cred); bcopy(name, cncp->name, (unsigned)namelen); diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c index 24edc69..94b6c18 100644 --- a/sys/fs/specfs/spec_vnops.c +++ b/sys/fs/specfs/spec_vnops.c @@ -720,11 +720,10 @@ spec_getpages(ap) bp->b_iodone = spec_getpages_iodone; /* B_PHYS is not set, but it is nice to fill this in. */ - bp->b_rcred = bp->b_wcred = curthread->td_proc->p_ucred; - if (bp->b_rcred != NOCRED) - crhold(bp->b_rcred); - if (bp->b_wcred != NOCRED) - crhold(bp->b_wcred); + KASSERT(bp->b_rcred == NOCRED, ("leaking read ucred")); + KASSERT(bp->b_wcred == NOCRED, ("leaking write ucred")); + bp->b_rcred = crhold(curthread->td_proc->p_ucred); + bp->b_wcred = crhold(curthread->td_proc->p_ucred); bp->b_blkno = blkno; bp->b_lblkno = blkno; pbgetvp(ap->a_vp, bp); diff --git a/sys/fs/unionfs/union_vfsops.c b/sys/fs/unionfs/union_vfsops.c index 7f616cb..53c5ae6 100644 --- a/sys/fs/unionfs/union_vfsops.c +++ b/sys/fs/unionfs/union_vfsops.c @@ -223,8 +223,7 @@ union_mount(mp, path, data, ndp, td) goto bad; } - um->um_cred = td->td_proc->p_ucred; - crhold(um->um_cred); + um->um_cred = crhold(td->td_proc->p_ucred); um->um_cmode = UN_DIRMODE &~ td->td_proc->p_fd->fd_cmask; /* |