summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2022-06-20 12:44:41 +1000
committerChris Johns <chrisj@rtems.org>2022-06-20 13:04:11 +1000
commitc56a34f54767decf3e398651c30bea9ebbd9572a (patch)
tree442fd2039a571f7155685bc821a03c3629476011
parentnfs01: Fix warnings (diff)
downloadrtems-libbsd-c56a34f54767decf3e398651c30bea9ebbd9572a.tar.bz2
freebsd/nfsv4: Fix misaligned 64bit user dirent write
-rw-r--r--freebsd/sys/fs/nfsclient/nfs_clrpcops.c13
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);
}