freebsd/nfsv4: Fix misaligned 64bit user dirent write

This commit is contained in:
Chris Johns
2022-06-20 12:44:41 +10:00
parent 26963fa0cd
commit c56a34f547

View File

@@ -3205,10 +3205,23 @@ nfsrpc_readdir(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep,
} else { } else {
dp->d_fileno = nfsva.na_fileid; dp->d_fileno = nfsva.na_fileid;
} }
#ifndef __rtems__
*tl2++ = cookiep->nfsuquad[0] = cookie.lval[0] = *tl2++ = cookiep->nfsuquad[0] = cookie.lval[0] =
ncookie.lval[0]; ncookie.lval[0];
#else /* __rtems__ */
memcpy(tl2, &ncookie.lval[0], sizeof(*tl2));
tl2++;
cookiep->nfsuquad[0] = cookie.lval[0] =
ncookie.lval[0];
#endif /* __rtems__ */
#ifndef __rtems__
*tl2 = cookiep->nfsuquad[1] = cookie.lval[1] = *tl2 = cookiep->nfsuquad[1] = cookie.lval[1] =
ncookie.lval[1]; ncookie.lval[1];
#else /* __rtems__ */
memcpy(tl2, &ncookie.lval[1], sizeof(*tl2));
cookiep->nfsuquad[1] = cookie.lval[1] =
ncookie.lval[1];
#endif /* __rtems__ */
} }
more_dirs = fxdr_unsigned(int, *tl); more_dirs = fxdr_unsigned(int, *tl);
} }