[Libva] [PATCH] drm: improve check for authentication.
Gwenole Beauchesne
gb.devel at gmail.com
Mon Jul 15 09:30:11 PDT 2013
Hi,
I will push the following patch tomorrow.
On Linux systems, the drmGetClient() function would return the thread ID
instead of the actual process ID.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
---
va/drm/va_drm_auth.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/va/drm/va_drm_auth.c b/va/drm/va_drm_auth.c
index 59aecaf..53794d3 100644
--- a/va/drm/va_drm_auth.c
+++ b/va/drm/va_drm_auth.c
@@ -28,6 +28,23 @@
#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)
@@ -41,7 +58,7 @@ va_drm_is_authenticated(int fd)
for (i = 0; !is_authenticated; i++) {
if (drmGetClient(fd, i, &auth, &pid, &uid, &magic, &iocs) != 0)
break;
- is_authenticated = auth && pid == client_pid;
+ is_authenticated = auth && (pid == client_pid || is_local_tid(pid));
}
return is_authenticated;
}
--
1.7.9.5
More information about the Libva
mailing list