mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-21 05:40:42 +01:00
winsys/amdgpu: avoid potential segfault in amdgpu_bo_map()
cs can be NULL when it comes from r600_buffer_map_sync_with_rings() to avoid doing the same checks. It was checked for write mappings but not for read mappings. Cc: "17.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
0a2dcd3a8a
commit
af303abcdb
1 changed files with 10 additions and 7 deletions
|
|
@ -254,14 +254,17 @@ static void *amdgpu_bo_map(struct pb_buffer *buf,
|
|||
* (neither one is changing it).
|
||||
*
|
||||
* Only check whether the buffer is being used for write. */
|
||||
if (cs && amdgpu_bo_is_referenced_by_cs_with_usage(cs, bo,
|
||||
RADEON_USAGE_WRITE)) {
|
||||
cs->flush_cs(cs->flush_data, 0, NULL);
|
||||
} else {
|
||||
/* Try to avoid busy-waiting in amdgpu_bo_wait. */
|
||||
if (p_atomic_read(&bo->num_active_ioctls))
|
||||
amdgpu_cs_sync_flush(rcs);
|
||||
if (cs) {
|
||||
if (amdgpu_bo_is_referenced_by_cs_with_usage(cs, bo,
|
||||
RADEON_USAGE_WRITE)) {
|
||||
cs->flush_cs(cs->flush_data, 0, NULL);
|
||||
} else {
|
||||
/* Try to avoid busy-waiting in amdgpu_bo_wait. */
|
||||
if (p_atomic_read(&bo->num_active_ioctls))
|
||||
amdgpu_cs_sync_flush(rcs);
|
||||
}
|
||||
}
|
||||
|
||||
amdgpu_bo_wait((struct pb_buffer*)bo, PIPE_TIMEOUT_INFINITE,
|
||||
RADEON_USAGE_WRITE);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue