new file mode 100644
@@ -0,0 +1,38 @@
+When running glibc tests under user mode NFS, tst-syslog was causing a hang. The
+hang was traced to unfsd exitting with a buffer overflow being detected.
+
+This was traced down to mksocket() where we'd see:
+
+socket path '/media/build/poky/build/build-st-2118464/tmp/work/x86-64-v3-poky-linux/glibc-testsuite/2.42+git/build-x86_64-poky-linux/testroot.root/dev/log' is too long at 141 vs 108
+
+There is a length check in mknod_args() but obj may not be setup at this point by
+cat_name() since the functions can be executed out of order according to C.
+
+To avoid this, make the order explict. This means the length is checked and we
+avoid the buffer overflow. This will likely cause the glibc test to fail however
+it won't hang, which is a win.
+
+Upstream-Status: Pending
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
+
+diff --git a/nfs.c b/nfs.c
+index 3e92f87..784089a 100644
+--- a/nfs.c
++++ b/nfs.c
+@@ -776,9 +776,11 @@ MKNOD3res *nfsproc3_mknod_3_svc(MKNOD3args * argp, struct svc_req * rqstp)
+
+ PREP(path, argp->where.dir);
+ pre = get_pre_cached();
+- result.status =
+- join3(cat_name(path, argp->where.name, obj),
+- mknod_args(argp->what, obj, &new_mode, &dev), exports_rw());
++ result.status = cat_name(path, argp->where.name, obj);
++ if (result.status == NFS3_OK)
++ result.status = mknod_args(argp->what, obj, &new_mode, &dev);
++ if (result.status == NFS3_OK)
++ result.status = exports_rw();
+
+ cluster_create(obj, rqstp, &result.status);
+
@@ -18,6 +18,7 @@ SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https;branch=master \
file://0001-locate.c-Include-attr.h.patch \
file://0001-fix-building-on-macOS.patch \
file://0001-attr-fix-utime-for-symlink.patch \
+ file://fixrace.patch \
"
SRCREV = "c8f2d2cd4529955419bad0e163f88d47ff176b8d"
UPSTREAM_CHECK_GITTAGREGEX = "unfs3\-(?P<pver>\d+(\.\d+)+)"