diff --git a/servers/vfs/path.c b/servers/vfs/path.c index 05706f7b8..1d2f65299 100644 --- a/servers/vfs/path.c +++ b/servers/vfs/path.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include "fproc.h" #include "vmnt.h" @@ -43,6 +44,8 @@ int flags; struct vmnt *vmp; struct node_details res; + assert(dirp); + /* Get a free vnode */ if((new_vp = get_free_vnode()) == NIL_VNODE) return(NIL_VNODE); @@ -238,7 +241,7 @@ node_details_t *node; dir_vp = 0; /* Start node is now the mounted partition's root node */ for (vmp = &vmnt[0]; vmp != &vmnt[NR_MNTS]; ++vmp) { - if (vmp->m_dev != NO_DEV) { + if (vmp->m_dev != NO_DEV && vmp->m_mounted_on) { if (vmp->m_mounted_on->v_inode_nr == res.inode_nr && vmp->m_mounted_on->v_fs_e == res.fs_e) { dir_vp = vmp->m_root_node; @@ -246,10 +249,7 @@ node_details_t *node; } } } - - if (!dir_vp) { - panic("VFS lookup: can't find mounted partition"); - } + assert(dir_vp); } else { /* Climbing up mount */ /* Find the vmnt that represents the partition on