summaryrefslogtreecommitdiff
path: root/common.py
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2019-06-06 22:17:06 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-06-26 09:42:49 -0700
commitbde2f6398d71e51793bb8bee79e18e90416bdd2a (patch)
treef90174eb29aba9c406ce095409614f3116c21010 /common.py
parent4c43f9c667fb84e8c54decc218e5fdeec1e0bab5 (diff)
downloadmesa-bde2f6398d71e51793bb8bee79e18e90416bdd2a.tar.gz
egl/x11: calloc dri2_surf so it's properly zeroed
Commit 2282ec0a refactored drawable creation across various platforms into a new dri2_create_drawable helper function. The GBM code in platform_drm.c code passed in dri2_surf->gbm_surf as the loaderPrivate, while most other backends passed in dri2_surf directly. To try and handle this, the patch checked if dri2_surf->gbm_surf was non-NULL, and if so, presumed that the caller is the DRM platform and we should use the dri2_surf->gbm_surf pointer. This worked for most platforms, which calloc their dri2_surf structure, zeroing the data. Unfortunately, platform_x11.c used malloc, leaving most of the dri2_surf as garbage. In particular, dri2_surf->gbm_surf was often non-NULL, causing dri2_create_drawable to try and use it, passing a garbage pointer to the createNewDrawable hook, usually leading to a SIGBUS or SIGSEGV when trying to dereference that bad pointer. Since most callers calloc the data, make platform_x11.c follow suit. Fixes crashes with i915_dri.so when running dEQP-GLES2. Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de> Reviewed-by: Tapani Pälli <tapani.palli@intel.com> (cherry picked from commit 4e3297f7d4d87618bf896ac503e1f036a7b6befb)
Diffstat (limited to 'common.py')
0 files changed, 0 insertions, 0 deletions