diff --git a/sys/fs/nfsclient/nfs_clvnops.c.alloc b/sys/fs/nfsclient/nfs_clvnops.c --- a/sys/fs/nfsclient/nfs_clvnops.c.alloc +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3731,7 +3731,7 @@ if ((uint64_t)alen > nfs_maxalloclen) alen = nfs_maxalloclen; error = nfsrpc_allocate(vp, *ap->a_offset, alen, - &nfsva, &attrflag, td->td_ucred, td, NULL); + &nfsva, &attrflag, ap->a_cred, td, NULL); } if (error == 0) { *ap->a_offset += alen; diff --git a/sys/fs/nfsserver/nfs_nfsdport.c.alloc b/sys/fs/nfsserver/nfs_nfsdport.c --- a/sys/fs/nfsserver/nfs_nfsdport.c.alloc +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -6608,7 +6608,7 @@ olen = len; NFSD_DEBUG(4, "nfsvno_allocate: at VOP_ALLOCATE %jd %jd\n", (intmax_t)off, (intmax_t)len); - error = VOP_ALLOCATE(vp, &off, &len); + error = VOP_ALLOCATE(vp, &off, &len, IO_SYNC, cred); NFSD_DEBUG(4, "nfsvno_allocate: aft VOP_ALLOCATE %jd %jd %d\n", (intmax_t)off, (intmax_t)len, error); if (error == 0 && len > 0 && olen > len) diff --git a/sys/kern/vfs_default.c.alloc b/sys/kern/vfs_default.c --- a/sys/kern/vfs_default.c.alloc +++ b/sys/kern/vfs_default.c @@ -963,7 +963,7 @@ len = *ap->a_len; offset = *ap->a_offset; - error = VOP_GETATTR(vp, vap, td->td_ucred); + error = VOP_GETATTR(vp, vap, ap->a_cred); if (error != 0) goto out; fsize = vap->va_size; @@ -1000,12 +1000,12 @@ */ VATTR_NULL(vap); vap->va_size = offset + len; - error = VOP_SETATTR(vp, vap, td->td_ucred); + error = VOP_SETATTR(vp, vap, ap->a_cred); if (error != 0) goto out; VATTR_NULL(vap); vap->va_size = fsize; - error = VOP_SETATTR(vp, vap, td->td_ucred); + error = VOP_SETATTR(vp, vap, ap->a_cred); if (error != 0) goto out; } @@ -1031,7 +1031,7 @@ auio.uio_segflg = UIO_SYSSPACE; auio.uio_rw = UIO_READ; auio.uio_td = td; - error = VOP_READ(vp, &auio, 0, td->td_ucred); + error = VOP_READ(vp, &auio, ap->a_ioflag, ap->a_cred); if (error != 0) break; if (auio.uio_resid > 0) { @@ -1052,7 +1052,7 @@ auio.uio_rw = UIO_WRITE; auio.uio_td = td; - error = VOP_WRITE(vp, &auio, 0, td->td_ucred); + error = VOP_WRITE(vp, &auio, ap->a_ioflag, ap->a_cred); if (error != 0) break; diff --git a/sys/kern/vfs_vnops.c.alloc b/sys/kern/vfs_vnops.c --- a/sys/kern/vfs_vnops.c.alloc +++ b/sys/kern/vfs_vnops.c @@ -3471,7 +3471,8 @@ error = mac_vnode_check_write(td->td_ucred, fp->f_cred, vp); if (error == 0) #endif - error = VOP_ALLOCATE(vp, &offset, &len); + error = VOP_ALLOCATE(vp, &offset, &len, 0, + td->td_ucred); VOP_UNLOCK(vp); vn_finished_write(mp); diff --git a/sys/kern/vnode_if.src.alloc b/sys/kern/vnode_if.src --- a/sys/kern/vnode_if.src.alloc +++ b/sys/kern/vnode_if.src @@ -703,6 +703,8 @@ IN struct vnode *vp; INOUT off_t *offset; INOUT off_t *len; + IN int ioflag; + IN struct ucred *cred; };