return -EINVAL;
        }
 
-       mutex_unlock(&dev->struct_mutex);
-
        request->handle = NULL;
        list_for_each_entry(_entry, &dev->maplist, head) {
                if (_entry->map == map) {
                        break;
                }
        }
+
+       mutex_unlock(&dev->struct_mutex);
+
        if (request->handle == NULL)
                return -EINVAL;
 
 
        DRM_IOCTL_DEF(DRM_IOCTL_GET_UNIQUE, drm_getunique, 0),
        DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, 0),
        DRM_IOCTL_DEF(DRM_IOCTL_IRQ_BUSID, drm_irq_by_busid, DRM_MASTER|DRM_ROOT_ONLY),
-       DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_getmap, 0),
-       DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, 0),
-       DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, 0),
+       DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_getmap, DRM_UNLOCKED),
+       DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, DRM_UNLOCKED),
+       DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, DRM_UNLOCKED),
        DRM_IOCTL_DEF(DRM_IOCTL_GET_CAP, drm_getcap, DRM_UNLOCKED),
        DRM_IOCTL_DEF(DRM_IOCTL_SET_VERSION, drm_setversion, DRM_MASTER),
 
 
        int i;
 
        idx = map->offset;
-
-       mutex_lock(&dev->struct_mutex);
-       if (idx < 0) {
-               mutex_unlock(&dev->struct_mutex);
+       if (idx < 0)
                return -EINVAL;
-       }
 
        i = 0;
+       mutex_lock(&dev->struct_mutex);
        list_for_each(list, &dev->maplist) {
                if (i == idx) {
                        r_list = list_entry(list, struct drm_map_list, head);
        int i;
 
        idx = client->idx;
-       mutex_lock(&dev->struct_mutex);
-
        i = 0;
+
+       mutex_lock(&dev->struct_mutex);
        list_for_each_entry(pt, &dev->filelist, lhead) {
                if (i++ >= idx) {
                        client->auth = pt->authenticated;
 
        memset(stats, 0, sizeof(*stats));
 
-       mutex_lock(&dev->struct_mutex);
-
        for (i = 0; i < dev->counters; i++) {
                if (dev->types[i] == _DRM_STAT_LOCK)
                        stats->data[i].value =
 
        stats->count = dev->counters;
 
-       mutex_unlock(&dev->struct_mutex);
-
        return 0;
 }