For surface created by eglCreatePbufferSurface with attrib_list is NULL
or empty, the width/height info is 0. Then in the next eglMakeCurrent
call, it will try to allocate the buffer with the 0 width/height, then
call surf_fill_state_s with 0 width/height, so the isl_extent3d returned
by isl_get_image_alignment is (0, 0, 0), and the unreachable code will
cause process crash with:
"stack corruption detected (-fstack-protector)".
As the width is 0, it causes row_pitch_B is 0 in isl_calc_row_pitch.
And it leads to iris_resource_configure_main return fail. Update code
to return fail to avoid the crash.
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17621>
goto fail;
}
- UNUSED const bool isl_surf_created_successfully =
+ const bool isl_surf_created_successfully =
iris_resource_configure_main(screen, res, templ, modifier, 0);
- assert(isl_surf_created_successfully);
+ if (!isl_surf_created_successfully)
+ goto fail;
if (!iris_resource_configure_aux(screen, res, false))
goto fail;