diff options
author | Chris Johns <chrisj@rtems.org> | 2022-06-20 12:44:41 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2022-06-20 13:04:11 +1000 |
commit | c56a34f54767decf3e398651c30bea9ebbd9572a (patch) | |
tree | 442fd2039a571f7155685bc821a03c3629476011 | |
parent | nfs01: Fix warnings (diff) | |
download | rtems-libbsd-c56a34f54767decf3e398651c30bea9ebbd9572a.tar.bz2 |
freebsd/nfsv4: Fix misaligned 64bit user dirent write
-rw-r--r-- | freebsd/sys/fs/nfsclient/nfs_clrpcops.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/freebsd/sys/fs/nfsclient/nfs_clrpcops.c b/freebsd/sys/fs/nfsclient/nfs_clrpcops.c index e3101f76..53e4a525 100644 --- a/freebsd/sys/fs/nfsclient/nfs_clrpcops.c +++ b/freebsd/sys/fs/nfsclient/nfs_clrpcops.c @@ -3205,10 +3205,23 @@ nfsrpc_readdir(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep, } else { dp->d_fileno = nfsva.na_fileid; } +#ifndef __rtems__ *tl2++ = cookiep->nfsuquad[0] = cookie.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] = 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); } |