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);
>
>