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

Reply via email to