diff --git a/Kernel/Makefile b/Kernel/Makefile
index 8649d501b4e1f4c753981c55914f33e2da4cf741..ec925729a95feea9affd989f48116624f8f99870 100644
--- a/Kernel/Makefile
+++ b/Kernel/Makefile
@@ -62,7 +62,7 @@ apidoc:
 $(BIN): $(OBJ) $(MODS) arch/$(ARCHDIR)/link.ld Makefile
 	@echo --- LD -o $(BIN)
 	@$(LD) $(LDFLAGS) -o $(BIN) $(OBJ) $(MODS) -Map ../Map.$(ARCH).txt
-	$(DISASM) $(BIN) > $(BIN).dsm
+	$(DISASM) -S $(BIN) > $(BIN).dsm
 	@wc -l $(SRCFILES) include/*.h > LineCounts.$(ARCH).txt
 	@echo BUILD_NUM = $$(( $(BUILD_NUM) + 1 )) > Makefile.BuildNum.$(ARCH)
 	@$(STRIP) $(BIN)
diff --git a/Kernel/vfs/open.c b/Kernel/vfs/open.c
index 0bca8cac3c5b75fc9610c353b9a9aa37cbc6e450..cc546f48b0af834ac8005cb58a79da8e81462802 100644
--- a/Kernel/vfs/open.c
+++ b/Kernel/vfs/open.c
@@ -397,6 +397,17 @@ tVFS_Node *VFS_ParsePath(const char *Path, char **TruePath)
 		retLength += nextSlash + 1;
 	}
 	
+	if( !curNode->FindDir ) {
+		if(curNode->Close)	curNode->Close(curNode);
+		if(TruePath) {
+			free(*TruePath);
+			*TruePath = NULL;
+		}
+		Log("FindDir fail on '%s'", Path);
+		LEAVE('n');
+		return NULL;
+	}
+	
 	// Get last node
 	LOG("VFS_ParsePath: FindDir(%p, '%s')", curNode, &Path[ofs]);
 	tmpNode = curNode->FindDir(curNode, &Path[ofs]);
diff --git a/Modules/Filesystems/FAT/fat.c b/Modules/Filesystems/FAT/fat.c
index 5d1c7f5367653a4e6620d5e457c5798308fb36dc..a63bac016e2ba22b5794f90e06fde35a0e9b9dca 100644
--- a/Modules/Filesystems/FAT/fat.c
+++ b/Modules/Filesystems/FAT/fat.c
@@ -941,6 +941,7 @@ tVFS_Node *FAT_int_CreateNode(tVFS_Node *Parent, fat_filetable *Entry, int Pos)
 	tFAT_VolInfo	*disk = Parent->ImplPtr;
 	
 	ENTER("pParent pFT", Parent, Entry);
+	LOG("disk = %p\n", disk);
 	
 	memset(&node, 0, sizeof(tVFS_Node));