Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/nfs/nfs_serv.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/nfs/nfs_serv.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.88 retrieving revision 1.89 diff -u -p -r1.88 -r1.89 --- src/sys/nfs/nfs_serv.c 2004/04/21 01:05:42 1.88 +++ src/sys/nfs/nfs_serv.c 2004/05/31 08:47:08 1.89 @@ -1,4 +1,4 @@ -/* $NetBSD: nfs_serv.c,v 1.88 2004/04/21 01:05:42 christos Exp $ */ +/* $NetBSD: nfs_serv.c,v 1.89 2004/05/31 08:47:08 yamt Exp $ */ /* * Copyright (c) 1989, 1993 @@ -55,7 +55,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.88 2004/04/21 01:05:42 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.89 2004/05/31 08:47:08 yamt Exp $"); #include #include @@ -1477,8 +1477,12 @@ nfsrv_create(nfsd, slp, procp, mrq) if (exclusive_flag) { exclusive_flag = 0; VATTR_NULL(&va); - memcpy((caddr_t)&va.va_atime, cverf, - NFSX_V3CREATEVERF); + /* + * XXX + * assuming NFSX_V3CREATEVERF + * == sizeof(nfstime3) + */ + fxdr_nfsv3time(cverf, &va.va_atime); error = VOP_SETATTR(nd.ni_vp, &va, cred, procp); } @@ -1546,9 +1550,16 @@ nfsrv_create(nfsd, slp, procp, mrq) vput(vp); } if (v3) { - if (exclusive_flag && !error && - memcmp(cverf, (caddr_t)&va.va_atime, NFSX_V3CREATEVERF)) - error = EEXIST; + if (exclusive_flag && !error) { + /* + * XXX assuming NFSX_V3CREATEVERF == sizeof(nfstime3) + */ + char oldverf[NFSX_V3CREATEVERF]; + + txdr_nfsv3time(&va.va_atime, oldverf); + if (memcmp(cverf, oldverf, NFSX_V3CREATEVERF)) + error = EEXIST; + } diraft_ret = VOP_GETATTR(dirp, &diraft, cred, procp); vrele(dirp); }