release the dnode lock after EACCESS in path walk
[lunaix-os.git] / lunaix-os / kernel / fs / path_walk.c
index 7b49219edbad435fd1c9892676be55d110e2bf68..246e90327cc3219af3f03d418c0fba366dc4aea6 100644 (file)
@@ -95,6 +95,7 @@ __vfs_walk(struct v_dnode* start,
 
         if (!check_allow_execute(current_inode)) {
             errno = EACCESS;
+            unlock_dnode(current_level);
             goto error;
         }
 
@@ -106,6 +107,7 @@ __vfs_walk(struct v_dnode* start,
 
             if (!dnode) {
                 errno = ENOMEM;
+                unlock_dnode(current_level);
                 goto error;
             }