Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r6a4e972 rae75e2e3  
    9292                }
    9393               
    94                 rc = vfs_lookup_internal(mp, L_MP, &mp_res, NULL);
     94                rc = vfs_lookup_internal(mp, L_DIRECTORY, &mp_res, NULL);
    9595                if (rc != EOK) {
    9696                        /* The lookup failed for some reason. */
     
    459459         * Lookup the mounted root and instantiate it.
    460460         */
    461         rc = vfs_lookup_internal(mp, L_ROOT, &mr_res, NULL);
     461        rc = vfs_lookup_internal(mp, L_NONE, &mr_res, NULL);
    462462        if (rc != EOK) {
    463463                fibril_rwlock_write_unlock(&namespace_rwlock);
     
    521521                 */
    522522
    523                 rc = vfs_lookup_internal(mp, L_MP, &mp_res, NULL);
     523                /*
     524                 * The L_NOCROSS_LAST_MP flag is essential if we really want to
     525                 * lookup the mount point and not the mounted root.
     526                 */
     527                rc = vfs_lookup_internal(mp, L_NOCROSS_LAST_MP, &mp_res, NULL);
    524528                free(mp);
    525529                if (rc != EOK) {
     
    538542
    539543                phone = vfs_grab_phone(mp_node->fs_handle);
    540                 rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->dev_handle,
    541                     mp_node->index);
     544                rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->fs_handle,
     545                    mp_node->dev_handle);
    542546                vfs_release_phone(phone);
    543547                if (rc != EOK) {
     
    591595        /*
    592596         * Make sure that we are called with exactly one of L_FILE and
    593          * L_DIRECTORY. Make sure that the user does not pass L_OPEN,
    594          * L_ROOT or L_MP.
     597         * L_DIRECTORY. Make sure that the user does not pass L_OPEN or
     598         * L_NOCROSS_LAST_MP.
    595599         */
    596600        if (((lflag & (L_FILE | L_DIRECTORY)) == 0) ||
    597601            ((lflag & (L_FILE | L_DIRECTORY)) == (L_FILE | L_DIRECTORY)) ||
    598             (lflag & (L_OPEN | L_ROOT | L_MP))) {
     602            (lflag & L_OPEN) || (lflag & L_NOCROSS_LAST_MP)) {
    599603                ipc_answer_0(rid, EINVAL);
    600604                return;
Note: See TracChangeset for help on using the changeset viewer.