diff --git a/.pick_status.json b/.pick_status.json index 6de85e3e1b0..c5685bd4007 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4354,7 +4354,7 @@ "description": "venus: fix unexpected ring alive status expire upon owner thread switch", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index 7b7a1f16f35..038cd130211 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -144,6 +144,10 @@ vn_watchdog_acquire(struct vn_watchdog *watchdog, bool alive) mtx_trylock(&watchdog->mutex) == thrd_success) { /* register as the only waiting thread that monitors the ring. */ watchdog->tid = tid; + /* Always set alive to true for new watchdog owner because the + * last owner might have just unset the alive bit before release. + */ + alive = true; } if (tid != watchdog->tid)