OSDN Git Service

linux: Make DRM_IOCTL_GET_CLIENT return EINVAL when it can't find client #idx.
authorEric Anholt <eric@anholt.net>
Mon, 23 Jul 2007 22:11:12 +0000 (15:11 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 23 Jul 2007 22:11:12 +0000 (15:11 -0700)
Fixes the getclient test and dritest -c.

linux-core/drm_ioctl.c

index f3f757d..9d52fd8 100644 (file)
@@ -229,26 +229,23 @@ int drm_getclient(struct drm_device *dev, void *data,
 
        idx = client->idx;
        mutex_lock(&dev->struct_mutex);
-       
-       if (list_empty(&dev->filelist)) {
-               mutex_unlock(&dev->struct_mutex);
-               return -EINVAL;
-       }
 
        i = 0;
        list_for_each_entry(pt, &dev->filelist, lhead) {
-               if (i++ >= idx)
-                       break;
+               if (i++ >= idx) {
+                       client->auth = pt->authenticated;
+                       client->pid = pt->pid;
+                       client->uid = pt->uid;
+                       client->magic = pt->magic;
+                       client->iocs = pt->ioctl_count;
+                       mutex_unlock(&dev->struct_mutex);
+
+                       return 0;
+               }
        }
-
-       client->auth = pt->authenticated;
-       client->pid = pt->pid;
-       client->uid = pt->uid;
-       client->magic = pt->magic;
-       client->iocs = pt->ioctl_count;
        mutex_unlock(&dev->struct_mutex);
 
-       return 0;
+       return -EINVAL;
 }
 
 /**