On Sat, Jun 24, 2017 at 03:00:19AM +0200, Mark Kettenis wrote: > The code doesn't fully initialize the structure, which was extended to > include a flags member at some point. Since the pending inteldrm > update uses that flags member, the DRM_IOCTL_I915_GEM_MMAP ioctl > starts randomly failing because the flags member contains stack > garbage. The diff below fixes this. > > Upstream has fixed this in a different way that is unfortunately > incompatible with the way we do ioctls on OpenBSD. > > ok?
Isn't this already initialised by the VG_CLEAR? #define VG_CLEAR(s) VG(memset(&s, 0, sizeof(s))) 6017 retry: 6018 VG_CLEAR(mmap_arg); 6019 mmap_arg.handle = bo->handle; 6020 mmap_arg.offset = 0; 6021 mmap_arg.size = bytes(bo); > > > Index: driver/xf86-video-intel/src/sna/kgem.c > =================================================================== > RCS file: /cvs/xenocara/driver/xf86-video-intel/src/sna/kgem.c,v > retrieving revision 1.4 > diff -u -p -r1.4 kgem.c > --- driver/xf86-video-intel/src/sna/kgem.c 12 Apr 2015 19:42:06 -0000 > 1.4 > +++ driver/xf86-video-intel/src/sna/kgem.c 24 Jun 2017 00:56:02 -0000 > @@ -6019,6 +6019,7 @@ retry: > mmap_arg.handle = bo->handle; > mmap_arg.offset = 0; > mmap_arg.size = bytes(bo); > + mmap_arg.flags = 0; > if ((err = do_ioctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg))) { > assert(err != EINVAL); > >