]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vfs/vfs_xattr.c
xnu-792.6.70.tar.gz
[apple/xnu.git] / bsd / vfs / vfs_xattr.c
index 7ecca5261c7dcf0b861f7ba20d242cb825030bf4..9653ba143fe2b5f0f7868f4db24ede98da97f3fe 100644 (file)
@@ -1331,8 +1331,9 @@ lookup:
 
        if (fileflags & O_CREAT) {
                nd.ni_cnd.cn_nameiop = CREATE;
-               nd.ni_cnd.cn_flags |= LOCKPARENT;
-
+               if (dvp != vp) {
+                       nd.ni_cnd.cn_flags |= LOCKPARENT;
+               }
                if ( (error = namei(&nd))) {
                        nd.ni_dvp = NULLVP;
                        error = ENOATTR;
@@ -1378,8 +1379,9 @@ lookup:
                                xvp = nd.ni_vp;
                }
                nameidone(&nd);
-               vnode_put(dvp);  /* drop iocount from LOCKPARENT request above */
-               
+               if (dvp != vp) {
+                       vnode_put(dvp);  /* drop iocount from LOCKPARENT request above */
+               }
                if (error)
                        goto out;
        } else {