mirror of https://gitee.com/openkylin/linux.git
userns: Convert drm to use kuid and kgid and struct pid where appropriate
Blink Blink this had not been converted to use struct pid ages ago? - On drm open capture the openers kuid and struct pid. - On drm close release the kuid and struct pid - When reporting the uid and pid convert the kuid and struct pid into values in the appropriate namespace. Cc: dri-devel@lists.freedesktop.org Acked-by: Dave Airlie <airlied@redhat.com> Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
1efdb69b0b
commit
5fce5e0bbd
|
@ -251,7 +251,7 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
|
|||
filp->private_data = priv;
|
||||
priv->filp = filp;
|
||||
priv->uid = current_euid();
|
||||
priv->pid = task_pid_nr(current);
|
||||
priv->pid = get_pid(task_pid(current));
|
||||
priv->minor = idr_find(&drm_minors_idr, minor_id);
|
||||
priv->ioctl_count = 0;
|
||||
/* for compatibility root is always authenticated */
|
||||
|
@ -524,6 +524,7 @@ int drm_release(struct inode *inode, struct file *filp)
|
|||
if (drm_core_check_feature(dev, DRIVER_PRIME))
|
||||
drm_prime_destroy_file_private(&file_priv->prime);
|
||||
|
||||
put_pid(file_priv->pid);
|
||||
kfree(file_priv);
|
||||
|
||||
/* ========================================================
|
||||
|
|
|
@ -191,8 +191,9 @@ int drm_clients_info(struct seq_file *m, void *data)
|
|||
seq_printf(m, "%c %3d %5d %5d %10u %10lu\n",
|
||||
priv->authenticated ? 'y' : 'n',
|
||||
priv->minor->index,
|
||||
priv->pid,
|
||||
priv->uid, priv->magic, priv->ioctl_count);
|
||||
pid_vnr(priv->pid),
|
||||
from_kuid_munged(seq_user_ns(m), priv->uid),
|
||||
priv->magic, priv->ioctl_count);
|
||||
}
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
return 0;
|
||||
|
|
|
@ -215,8 +215,8 @@ int drm_getclient(struct drm_device *dev, void *data,
|
|||
list_for_each_entry(pt, &dev->filelist, lhead) {
|
||||
if (i++ >= idx) {
|
||||
client->auth = pt->authenticated;
|
||||
client->pid = pt->pid;
|
||||
client->uid = pt->uid;
|
||||
client->pid = pid_vnr(pt->pid);
|
||||
client->uid = from_kuid_munged(current_user_ns(), pt->uid);
|
||||
client->magic = pt->magic;
|
||||
client->iocs = pt->ioctl_count;
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
|
|
@ -426,8 +426,8 @@ struct drm_prime_file_private {
|
|||
/** File private data */
|
||||
struct drm_file {
|
||||
int authenticated;
|
||||
pid_t pid;
|
||||
uid_t uid;
|
||||
struct pid *pid;
|
||||
kuid_t uid;
|
||||
drm_magic_t magic;
|
||||
unsigned long ioctl_count;
|
||||
struct list_head lhead;
|
||||
|
|
|
@ -936,7 +936,6 @@ config UIDGID_CONVERTED
|
|||
depends on QUOTA = n
|
||||
depends on QUOTACTL = n
|
||||
depends on BSD_PROCESS_ACCT = n
|
||||
depends on DRM = n
|
||||
|
||||
# Networking
|
||||
depends on NET_9P = n
|
||||
|
|
Loading…
Reference in New Issue