]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mshv: release mutex on region invalidation failure
authorAnirudh Rayabharam (Microsoft) <anirudh@anirudhrb.com>
Tue, 16 Dec 2025 14:20:30 +0000 (14:20 +0000)
committerWei Liu <wei.liu@kernel.org>
Thu, 18 Dec 2025 20:00:10 +0000 (20:00 +0000)
In the region invalidation failure path in
mshv_region_interval_invalidate(), the region mutex is not released. Fix
it by releasing the mutex in the failure path.

Signed-off-by: Anirudh Rayabharam (Microsoft) <anirudh@anirudhrb.com>
Fixes: b9a66cd5ccbb ("mshv: Add support for movable memory regions")
Acked-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Reviewed-by: Roman Kisel <vdso@mailbox.org>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/mshv_regions.c

index 8abf80129f9bd5d0bd3336d88a23ee2aa7d6f16f..30bacba6aec3908fd4f78563394c1fe4ff7ac5df 100644 (file)
@@ -511,7 +511,7 @@ static bool mshv_region_interval_invalidate(struct mmu_interval_notifier *mni,
        ret = mshv_region_remap_pages(region, HV_MAP_GPA_NO_ACCESS,
                                      page_offset, page_count);
        if (ret)
-               goto out_fail;
+               goto out_unlock;
 
        mshv_region_invalidate_pages(region, page_offset, page_count);
 
@@ -519,6 +519,8 @@ static bool mshv_region_interval_invalidate(struct mmu_interval_notifier *mni,
 
        return true;
 
+out_unlock:
+       mutex_unlock(&region->mutex);
 out_fail:
        WARN_ONCE(ret,
                  "Failed to invalidate region %#llx-%#llx (range %#lx-%#lx, event: %u, pages %#llx-%#llx, mm: %#llx): %d\n",