virgl: Don't destroy resource while it's in use.
authorLepton Wu <lepton@chromium.org>
Fri, 19 Mar 2021 06:05:19 +0000 (23:05 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 19 Mar 2021 18:58:01 +0000 (18:58 +0000)
commitc54fb6ef3d81b5c1e88c6d4ae2ea5d534cb18c8c
tree05e7d0567b7bb593490afbabeb011e5a8465a7ba
parentbf549e4c881acb110f0a22a9df4cd1625750b4a7
virgl: Don't destroy resource while it's in use.

This is the race condition: thread 1 check reference count of resource
and then find out out it's zero and then it begin to destroy it. Around
the same time, thread 2 gets the lock and get the resource from the hash
table and plan to use it. Then this resource gets destroyed while it's
still in use.

Signed-off-by: Lepton Wu <lepton@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9701>
src/gallium/winsys/virgl/drm/virgl_drm_winsys.c