mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-14 22:00:28 +01:00
winsys/svga: fix error path when kernel is not able to create surface
If for some reason kernel is not able to create surface, when no buffer was provided the function vmw_svga_winsys_surface_create should return NULL. This patch fixes the issue where the code was not following the clean up path in case of error, which used to cause SIGSEGV. Reviewed-by: Sinclair Yeh <syeh@vmware.com>
This commit is contained in:
parent
75be43ed33
commit
8de0452ec4
1 changed files with 18 additions and 15 deletions
|
|
@ -200,22 +200,25 @@ vmw_svga_winsys_surface_create(struct svga_winsys_screen *sws,
|
|||
surface->buf ? NULL :
|
||||
&desc.region);
|
||||
|
||||
if (surface->sid == SVGA3D_INVALID_ID && surface->buf) {
|
||||
|
||||
/*
|
||||
* Kernel refused to allocate a surface for us.
|
||||
* Perhaps something was wrong with our buffer?
|
||||
* This is really a guard against future new size requirements
|
||||
* on the backing buffers.
|
||||
*/
|
||||
vmw_svga_winsys_buffer_destroy(sws, surface->buf);
|
||||
surface->buf = NULL;
|
||||
surface->sid = vmw_ioctl_gb_surface_create(vws, flags, format, usage,
|
||||
size, numLayers,
|
||||
numMipLevels, sampleCount,
|
||||
0, &desc.region);
|
||||
if (surface->sid == SVGA3D_INVALID_ID)
|
||||
if (surface->sid == SVGA3D_INVALID_ID) {
|
||||
if (surface->buf == NULL) {
|
||||
goto no_sid;
|
||||
} else {
|
||||
/*
|
||||
* Kernel refused to allocate a surface for us.
|
||||
* Perhaps something was wrong with our buffer?
|
||||
* This is really a guard against future new size requirements
|
||||
* on the backing buffers.
|
||||
*/
|
||||
vmw_svga_winsys_buffer_destroy(sws, surface->buf);
|
||||
surface->buf = NULL;
|
||||
surface->sid = vmw_ioctl_gb_surface_create(vws, flags, format, usage,
|
||||
size, numLayers,
|
||||
numMipLevels, sampleCount,
|
||||
0, &desc.region);
|
||||
if (surface->sid == SVGA3D_INVALID_ID)
|
||||
goto no_sid;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue