[Mesa-dev] [Mesa-stable] [PATCH] egl/x11: authenticate before doing chipset id ioctls

Mark Kettenis mark.kettenis at xs4all.nl
Tue Apr 26 10:26:30 UTC 2016


> From: Matt Turner <mattst88 at gmail.com>
> Date: Mon, 25 Apr 2016 14:37:56 -0700
> 
> On Tue, Apr 19, 2016 at 10:48 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> > On 19 April 2016 at 03:29, Jonathan Gray <jsg at jsg.id.au> wrote:
> >> For systems without udev or sysfs that use drm ioctls in the loader
> >> drm authentication must take place earlier or the loader will fail
> >> "MESA-LOADER: failed to get param for i915".
> >>
> >> Patch from Mark Kettenis.
> >>
> >> Cc: "11.2 11.1" <mesa-stable at lists.freedesktop.org>
> >> Signed-off-by: Mark Kettenis <kettenis at openbsd.org>
> >> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> > Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
> >
> > I'll push this by end of tomorrow, unless we hear any objections.
> 
> This patch added the following warning:
> 
> ../../../mesa/src/egl/drivers/dri2/platform_x11.c:1140:4: warning:
> initialization from incompatible pointer type
>     .authenticate = dri2_x11_authenticate,
>     ^
> ../../../mesa/src/egl/drivers/dri2/platform_x11.c:1140:4: warning:
> (near initialization for ‘dri2_x11_display_vtbl.authenticate’)
> 
> I presume because the first parameter's type changed.

Ouch.  Completely missed that that function was used in the vtbl.  How
does the fix below look?


Index: mesa/src/egl/drivers/dri2/platform_x11.c
===================================================================
RCS file: /cvs/xenocara/lib/mesa/src/egl/drivers/dri2/platform_x11.c,v
retrieving revision 1.2
diff -u -p -r1.2 platform_x11.c
--- mesa/src/egl/drivers/dri2/platform_x11.c	20 Apr 2016 12:23:56 -0000	1.2
+++ mesa/src/egl/drivers/dri2/platform_x11.c	26 Apr 2016 10:25:56 -0000
@@ -537,7 +537,7 @@ dri2_x11_flush_front_buffer(__DRIdrawabl
 }
 
 static int
-dri2_x11_authenticate(struct dri2_egl_display *dri2_dpy, uint32_t id)
+dri2_x11_do_authenticate(struct dri2_egl_display *dri2_dpy, uint32_t id)
 {
    xcb_dri2_authenticate_reply_t *authenticate;
    xcb_dri2_authenticate_cookie_t authenticate_cookie;
@@ -577,7 +577,7 @@ dri2_x11_local_authenticate(struct dri2_
       return EGL_FALSE;
    }
    
-   if (dri2_x11_authenticate(dri2_dpy, magic) < 0) {
+   if (dri2_x11_do_authenticate(dri2_dpy, magic) < 0) {
       _eglLog(_EGL_WARNING, "DRI2: failed to authenticate");
       return EGL_FALSE;
    }
@@ -704,6 +704,14 @@ dri2_x11_connect(struct dri2_egl_display
    free(connect);
 
    return EGL_TRUE;
+}
+
+static int
+dri2_x11_authenticate(_EGLDisplay *disp, uint32_t id)
+{
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
+
+   return dri2_x11_do_authenticate(dri2_dpy, id);
 }
 
 static EGLBoolean


More information about the mesa-dev mailing list