From: Kenneth Graunke Date: Sun, 26 May 2019 19:58:42 +0000 (-0700) Subject: iris: Fix lock/unlock mismatch for non-LLC coherent BO allocation. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5fc11fd98853282b68e5f0a7bce23deb5a3d6beb;p=mesa.git iris: Fix lock/unlock mismatch for non-LLC coherent BO allocation. The goto jumped over the mtx_lock, but proceeded to hit the mtx_unlock. We can simply set the bucket to NULL and it will skip the cache without goto, and without messing up locking. Reviewed-by: Caio Marcelo de Oliveira Filho --- diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 2d960574705..d89351043df 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -380,15 +380,12 @@ bo_alloc_internal(struct iris_bufmgr *bufmgr, if (flags & BO_ALLOC_ZEROED) zeroed = true; - if ((flags & BO_ALLOC_COHERENT) && !bufmgr->has_llc) { - bo_size = MAX2(ALIGN(size, page_size), page_size); - bucket = NULL; - goto skip_cache; - } - /* Round the allocated size up to a power of two number of pages. */ bucket = bucket_for_size(bufmgr, size); + if ((flags & BO_ALLOC_COHERENT) && !bufmgr->has_llc) + bucket = NULL; + /* If we don't have caching at this size, don't actually round the * allocation up. */ @@ -444,7 +441,6 @@ retry: bo->gtt_offset = 0ull; } } else { -skip_cache: bo = bo_calloc(); if (!bo) goto err;