[REVIEW][PATCH 12/15] userns: Convert drm to use kuid and kgid and struct pid where appropriate
On Thu, Sep 13, 2012 at 12:14 PM, Eric W. Biederman wrote: > Dave Airlie writes: > >>> 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. >>> >> >> Hi Eric, >> >> I'm fine with this seems okay, do you want me to merge it via >> drm-next? > > My plan is to merge it via my user namespace tree. And since you have > responed positively I will add your acked-by. There are some nice > synergies when I get all of the changes in one tree. > > If for some reason you want to carry this in your drm tree we can work > something out. > > In this case I expect the change isn't big enough to worry about. No all fine by me, for formality sake: Acked-by: Dave Airlie
[REVIEW][PATCH 12/15] 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. > Hi Eric, I'm fine with this seems okay, do you want me to merge it via drm-next? Dave. > Cc: David Airlie > Cc: dri-devel at lists.freedesktop.org > Acked-by: Serge Hallyn > Signed-off-by: Eric W. Biederman > --- > drivers/gpu/drm/drm_fops.c |3 ++- > drivers/gpu/drm/drm_info.c |5 +++-- > drivers/gpu/drm/drm_ioctl.c |4 ++-- > include/drm/drmP.h |4 ++-- > init/Kconfig|1 - > 5 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c > index 5062eec..433d2fa 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, > 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(_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(_priv->prime); > > + put_pid(file_priv->pid); > kfree(file_priv); > > /* > diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c > index 8928edb..eb0af39 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) > 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(>struct_mutex); > return 0; > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index 64a62c6..39a4383 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, > list_for_each_entry(pt, >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(>struct_mutex); > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index d6b67bb..9bc5c6a 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -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; > diff --git a/init/Kconfig b/init/Kconfig > index d849ba2..2a388e5 100644 > --- a/init/Kconfig > +++ b/init/Kconfig > @@ -930,7 +930,6 @@ config UIDGID_CONVERTED > depends on FS_POSIX_ACL = n > depends on QUOTA = n > depends on QUOTACTL = n > - depends on DRM = n > > # Networking > depends on NET_9P = n > -- > 1.7.5.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
Re: [REVIEW][PATCH 12/15] userns: Convert drm to use kuid and kgid and struct pid where appropriate
Dave Airlie airl...@gmail.com writes: 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. Hi Eric, I'm fine with this seems okay, do you want me to merge it via drm-next? My plan is to merge it via my user namespace tree. And since you have responed positively I will add your acked-by. There are some nice synergies when I get all of the changes in one tree. If for some reason you want to carry this in your drm tree we can work something out. In this case I expect the change isn't big enough to worry about. Eric ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[REVIEW][PATCH 12/15] userns: Convert drm to use kuid and kgid and struct pid where appropriate
Dave Airlie writes: >> 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. >> > > Hi Eric, > > I'm fine with this seems okay, do you want me to merge it via > drm-next? My plan is to merge it via my user namespace tree. And since you have responed positively I will add your acked-by. There are some nice synergies when I get all of the changes in one tree. If for some reason you want to carry this in your drm tree we can work something out. In this case I expect the change isn't big enough to worry about. Eric
Re: [REVIEW][PATCH 12/15] 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. Hi Eric, I'm fine with this seems okay, do you want me to merge it via drm-next? Dave. Cc: David Airlie airl...@linux.ie Cc: dri-devel@lists.freedesktop.org Acked-by: Serge Hallyn serge.hal...@canonical.com Signed-off-by: Eric W. Biederman ebied...@xmission.com --- drivers/gpu/drm/drm_fops.c |3 ++- drivers/gpu/drm/drm_info.c |5 +++-- drivers/gpu/drm/drm_ioctl.c |4 ++-- include/drm/drmP.h |4 ++-- init/Kconfig|1 - 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index 5062eec..433d2fa 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, 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); /* diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c index 8928edb..eb0af39 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) 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; diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 64a62c6..39a4383 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, 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); diff --git a/include/drm/drmP.h b/include/drm/drmP.h index d6b67bb..9bc5c6a 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -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; diff --git a/init/Kconfig b/init/Kconfig index d849ba2..2a388e5 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -930,7 +930,6 @@ config UIDGID_CONVERTED depends on FS_POSIX_ACL = n depends on QUOTA = n depends on QUOTACTL = n - depends on DRM = n # Networking depends on NET_9P = n -- 1.7.5.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [REVIEW][PATCH 12/15] userns: Convert drm to use kuid and kgid and struct pid where appropriate
On Thu, Sep 13, 2012 at 12:14 PM, Eric W. Biederman ebied...@xmission.com wrote: Dave Airlie airl...@gmail.com writes: 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. Hi Eric, I'm fine with this seems okay, do you want me to merge it via drm-next? My plan is to merge it via my user namespace tree. And since you have responed positively I will add your acked-by. There are some nice synergies when I get all of the changes in one tree. If for some reason you want to carry this in your drm tree we can work something out. In this case I expect the change isn't big enough to worry about. No all fine by me, for formality sake: Acked-by: Dave Airlie airl...@redhat.com ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[REVIEW][PATCH 12/15] 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: David Airlie airl...@linux.ie Cc: dri-devel@lists.freedesktop.org Acked-by: Serge Hallyn serge.hal...@canonical.com Signed-off-by: Eric W. Biederman ebied...@xmission.com --- drivers/gpu/drm/drm_fops.c |3 ++- drivers/gpu/drm/drm_info.c |5 +++-- drivers/gpu/drm/drm_ioctl.c |4 ++-- include/drm/drmP.h |4 ++-- init/Kconfig|1 - 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index 5062eec..433d2fa 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, 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); /* diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c index 8928edb..eb0af39 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) 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; diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 64a62c6..39a4383 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, 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); diff --git a/include/drm/drmP.h b/include/drm/drmP.h index d6b67bb..9bc5c6a 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -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; diff --git a/init/Kconfig b/init/Kconfig index d849ba2..2a388e5 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -930,7 +930,6 @@ config UIDGID_CONVERTED depends on FS_POSIX_ACL = n depends on QUOTA = n depends on QUOTACTL = n - depends on DRM = n # Networking depends on NET_9P = n -- 1.7.5.4 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[REVIEW][PATCH 12/15] 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: David Airlie Cc: dri-devel at lists.freedesktop.org Acked-by: Serge Hallyn Signed-off-by: Eric W. Biederman --- drivers/gpu/drm/drm_fops.c |3 ++- drivers/gpu/drm/drm_info.c |5 +++-- drivers/gpu/drm/drm_ioctl.c |4 ++-- include/drm/drmP.h |4 ++-- init/Kconfig|1 - 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index 5062eec..433d2fa 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, 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(_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(_priv->prime); + put_pid(file_priv->pid); kfree(file_priv); /* diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c index 8928edb..eb0af39 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) 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(>struct_mutex); return 0; diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 64a62c6..39a4383 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, list_for_each_entry(pt, >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(>struct_mutex); diff --git a/include/drm/drmP.h b/include/drm/drmP.h index d6b67bb..9bc5c6a 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -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; diff --git a/init/Kconfig b/init/Kconfig index d849ba2..2a388e5 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -930,7 +930,6 @@ config UIDGID_CONVERTED depends on FS_POSIX_ACL = n depends on QUOTA = n depends on QUOTACTL = n - depends on DRM = n # Networking depends on NET_9P = n -- 1.7.5.4