freedreno/drm: Fix zombie BO import harder
Fixes: 6ac133c646 ("freedreno/drm: Fix race in zombie import")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26506>
This commit is contained in:
parent
3c10b70ee8
commit
f2e3285d8e
1 changed files with 9 additions and 0 deletions
|
|
@ -64,6 +64,15 @@ lookup_bo(struct hash_table *tbl, uint32_t key)
|
|||
* checking for refcnt==0 (ie. 1 after p_atomic_inc_return).
|
||||
*/
|
||||
if (p_atomic_inc_return(&bo->refcnt) == 1) {
|
||||
/* Restore the zombified reference count, so if another thread
|
||||
* that ends up calling lookup_bo() gets the table_lock before
|
||||
* the thread deleting the bo does, it doesn't mistakenly see
|
||||
* that the BO is live.
|
||||
*
|
||||
* We are holding the table_lock here so we can't be racing
|
||||
* with another caller of lookup_bo()
|
||||
*/
|
||||
p_atomic_dec(&bo->refcnt);
|
||||
return &zombie;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue