Commit b1360baf51 for qemu.org

commit b1360baf5171622b4de1d8366d49d25493fa1f4b
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date:   Mon Sep 7 14:50:12 2026 +0400

    qga/vss-win32: check GetLastError() after FindNextVolumeW failure

    FindNextVolumeW returning FALSE can mean either normal end of
    enumeration (ERROR_NO_MORE_FILES) or an actual error. The code
    treated both cases as end-of-list, silently skipping any remaining
    volumes on a real failure.

    Distinguish the two by checking GetLastError().

    Fixes: b39297aedfab ("qemu-ga: Add Windows VSS provider and requester as DLL")
    Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
    Link: https://lore.kernel.org/qemu-devel/20260907-qga-v1-14-86456ad356e2@redhat.com
    Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>

diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp
index b3daa060ac..f14c47f9f7 100644
--- a/qga/vss-win32/requester.cpp
+++ b/qga/vss-win32/requester.cpp
@@ -461,6 +461,13 @@ void requester_freeze(int *num_vols, void *mountpoints, ErrorSet *errset)
             }
             if (!FindNextVolumeW(volume, short_volume_name,
                                  ARRAYSIZE(short_volume_name))) {
+                DWORD err = GetLastError();
+                if (err != ERROR_NO_MORE_FILES) {
+                    err_set(errset, err,
+                            "failed to find next volume");
+                    FindVolumeClose(volume);
+                    goto out;
+                }
                 FindVolumeClose(volume);
                 break;
             }