[rtems-libbsd commit] freebsd/nfsv4: Fix misaligned 64bit user dirent write

Chris Johns chrisj at rtems.org
Mon Jun 20 02:57:50 UTC 2022


Module:    rtems-libbsd
Branch:    6-freebsd-12
Commit:    c56a34f54767decf3e398651c30bea9ebbd9572a
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=c56a34f54767decf3e398651c30bea9ebbd9572a

Author:    Chris Johns <chrisj at rtems.org>
Date:      Mon Jun 20 12:44:41 2022 +1000

freebsd/nfsv4: Fix misaligned 64bit user dirent write

---

 freebsd/sys/fs/nfsclient/nfs_clrpcops.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

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);
 		}



More information about the vc mailing list