[Libva] [PATCH] drm: remove va_drm_is_authenticated check
Xiang, Haihao
haihao.xiang at intel.com
Thu Nov 17 15:38:22 UTC 2016
>From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Emil
>Velikov
>Sent: Tuesday, November 15, 2016 11:24 PM
>To: libva at lists.freedesktop.org
>Cc: Daniel Vetter <daniel.vetter at ffwll.ch>; David Herrmann
><dh.herrmann at gmail.com>
>Subject: [Libva] [PATCH] drm: remove va_drm_is_authenticated check
>
>If we do not use a render node we must authenticate.
It is not true. A root or master user can access /dev/dri/card0 without authentication in drm.
va_drm_is_authenticated() is used to check for this cases.
> Doing the extra
>GetClient calls/ioctls does not help much, so don't bother.
>
>Cc: David Herrmann <dh.herrmann at gmail.com>
>Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>---
>David, Daniel, I believe things are perfectly reasonable on kernel side.
>If not please shout.
>---
> va/drm/va_drm.c | 8 ++------
> va/drm/va_drm_auth.c | 35 -----------------------------------
> va/drm/va_drm_auth.h | 4 ----
> 3 files changed, 2 insertions(+), 45 deletions(-)
>
>diff --git a/va/drm/va_drm.c b/va/drm/va_drm.c
>index 08071cf..59e33fa 100644
>--- a/va/drm/va_drm.c
>+++ b/va/drm/va_drm.c
>@@ -74,12 +74,8 @@ va_DisplayContextGetDriverName(
> if (ret < 0)
> return VA_STATUS_ERROR_OPERATION_FAILED;
>
>- if (!va_drm_is_authenticated(drm_state->fd)) {
>- if (!va_drm_authenticate(drm_state->fd, magic))
>- return VA_STATUS_ERROR_OPERATION_FAILED;
>- if (!va_drm_is_authenticated(drm_state->fd))
>- return VA_STATUS_ERROR_OPERATION_FAILED;
>- }
>+ if (!va_drm_authenticate(drm_state->fd, magic))
>+ return VA_STATUS_ERROR_OPERATION_FAILED;
> }
>
> drm_state->auth_type = VA_DRM_AUTH_CUSTOM;
>diff --git a/va/drm/va_drm_auth.c b/va/drm/va_drm_auth.c
>index 53794d3..592381d 100644
>--- a/va/drm/va_drm_auth.c
>+++ b/va/drm/va_drm_auth.c
>@@ -28,41 +28,6 @@
> #include "va_drm_auth.h"
> #include "va_drm_auth_x11.h"
>
>-#if defined __linux__
>-# include <sys/syscall.h>
>-#endif
>-
>-/* Checks whether the thread id is the current thread */
>-static bool
>-is_local_tid(pid_t tid)
>-{
>-#if defined __linux__
>- /* On Linux systems, drmGetClient() would return the thread ID
>- instead of the actual process ID */
>- return syscall(SYS_gettid) == tid;
>-#else
>- return false;
>-#endif
>-}
>-
>-/* Checks whether DRM connection is authenticated */
>-bool
>-va_drm_is_authenticated(int fd)
>-{
>- pid_t client_pid;
>- int i, auth, pid, uid;
>- unsigned long magic, iocs;
>- bool is_authenticated = false;
>-
>- client_pid = getpid();
>- for (i = 0; !is_authenticated; i++) {
>- if (drmGetClient(fd, i, &auth, &pid, &uid, &magic, &iocs) != 0)
>- break;
>- is_authenticated = auth && (pid == client_pid || is_local_tid(pid));
>- }
>- return is_authenticated;
>-}
>-
> /* Try to authenticate the DRM connection with the supplied magic id */
> bool
> va_drm_authenticate(int fd, uint32_t magic)
>diff --git a/va/drm/va_drm_auth.h b/va/drm/va_drm_auth.h
>index 1aa6989..a8ca794 100644
>--- a/va/drm/va_drm_auth.h
>+++ b/va/drm/va_drm_auth.h
>@@ -30,10 +30,6 @@
>
> DLL_HIDDEN
> bool
>-va_drm_is_authenticated(int fd);
>-
>-DLL_HIDDEN
>-bool
> va_drm_authenticate(int fd, uint32_t magic);
>
> #endif /* VA_DRM_AUTH_H */
>--
>2.10.2
>
>_______________________________________________
>Libva mailing list
>Libva at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/libva
More information about the Libva
mailing list