>From: Libva [mailto:[email protected]] On Behalf Of Emil >Velikov >Sent: Tuesday, November 15, 2016 11:24 PM >To: [email protected] >Cc: Daniel Vetter <[email protected]>; David Herrmann ><[email protected]> >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 <[email protected]> >Cc: Daniel Vetter <[email protected]> >Signed-off-by: Emil Velikov <[email protected]> >--- >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 >[email protected] >https://lists.freedesktop.org/mailman/listinfo/libva _______________________________________________ Libva mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libva
