Browse Source

drm: Make DRM_IOCTL_GET_CLIENT return EINVAL when it can't find client #idx.

Fixes the getclient test and dritest -c.

Signed-off-by: Dave Airlie <airlied@linux.ie>
Eric Anholt 17 years ago
parent
commit
b018fcdaa5
1 changed files with 11 additions and 14 deletions
  1. 11 14
      drivers/char/drm/drm_ioctl.c

+ 11 - 14
drivers/char/drm/drm_ioctl.c

@@ -235,25 +235,22 @@ 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;
 }
 
 /**