aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/drm_fops.c3
-rw-r--r--drivers/gpu/drm/drm_info.c5
-rw-r--r--drivers/gpu/drm/drm_ioctl.c4
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 5062eec673f1..433d2fad1fe6 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -251,7 +251,7 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
251 filp->private_data = priv; 251 filp->private_data = priv;
252 priv->filp = filp; 252 priv->filp = filp;
253 priv->uid = current_euid(); 253 priv->uid = current_euid();
254 priv->pid = task_pid_nr(current); 254 priv->pid = get_pid(task_pid(current));
255 priv->minor = idr_find(&drm_minors_idr, minor_id); 255 priv->minor = idr_find(&drm_minors_idr, minor_id);
256 priv->ioctl_count = 0; 256 priv->ioctl_count = 0;
257 /* for compatibility root is always authenticated */ 257 /* for compatibility root is always authenticated */
@@ -524,6 +524,7 @@ int drm_release(struct inode *inode, struct file *filp)
524 if (drm_core_check_feature(dev, DRIVER_PRIME)) 524 if (drm_core_check_feature(dev, DRIVER_PRIME))
525 drm_prime_destroy_file_private(&file_priv->prime); 525 drm_prime_destroy_file_private(&file_priv->prime);
526 526
527 put_pid(file_priv->pid);
527 kfree(file_priv); 528 kfree(file_priv);
528 529
529 /* ======================================================== 530 /* ========================================================
diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
index 8928edbb94c7..eb0af393e6e2 100644
--- a/drivers/gpu/drm/drm_info.c
+++ b/drivers/gpu/drm/drm_info.c
@@ -191,8 +191,9 @@ int drm_clients_info(struct seq_file *m, void *data)
191 seq_printf(m, "%c %3d %5d %5d %10u %10lu\n", 191 seq_printf(m, "%c %3d %5d %5d %10u %10lu\n",
192 priv->authenticated ? 'y' : 'n', 192 priv->authenticated ? 'y' : 'n',
193 priv->minor->index, 193 priv->minor->index,
194 priv->pid, 194 pid_vnr(priv->pid),
195 priv->uid, priv->magic, priv->ioctl_count); 195 from_kuid_munged(seq_user_ns(m), priv->uid),
196 priv->magic, priv->ioctl_count);
196 } 197 }
197 mutex_unlock(&dev->struct_mutex); 198 mutex_unlock(&dev->struct_mutex);
198 return 0; 199 return 0;
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index 64a62c697313..39a43834cef9 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -215,8 +215,8 @@ int drm_getclient(struct drm_device *dev, void *data,
215 list_for_each_entry(pt, &dev->filelist, lhead) { 215 list_for_each_entry(pt, &dev->filelist, lhead) {
216 if (i++ >= idx) { 216 if (i++ >= idx) {
217 client->auth = pt->authenticated; 217 client->auth = pt->authenticated;
218 client->pid = pt->pid; 218 client->pid = pid_vnr(pt->pid);
219 client->uid = pt->uid; 219 client->uid = from_kuid_munged(current_user_ns(), pt->uid);
220 client->magic = pt->magic; 220 client->magic = pt->magic;
221 client->iocs = pt->ioctl_count; 221 client->iocs = pt->ioctl_count;
222 mutex_unlock(&dev->struct_mutex); 222 mutex_unlock(&dev->struct_mutex);