Jonathan Gray wrote: > On Sat, Jun 24, 2017 at 11:20:00AM +1000, Jonathan Gray wrote: > > 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); > > missed the other macro > > ifdef HAVE_VALGRIND > #define VG(x) x > #else > #define VG(x) > #endif
wow, this looks stupid. valgrind says we're using uninitialized memory. so we'll initialize it... but only when using valgrind??? it's not like it magically gets initialized when valgrind isn't running. i wonder what other bugs are in close proximity to that macro. > > ok jsg@ > > > > > > > > > > > > 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); > > > > > > > > >