diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/drm_fops.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_info.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_ioctl.c | 4 |
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); |