Commit b5dc99d59d for qemu.org

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

    qga/vss-win32: return an interface pointer for IID_IUnknown

    CQGAVssProvider implements three COM interfaces, each with its own
    IUnknown base subobject. Returning the complete object address for
    IID_IUnknown relies on IVssSoftwareSnapshotProvider remaining the first
    base class.

    Return the IVssSoftwareSnapshotProvider subobject instead. This selects
    the canonical IUnknown identity without relying on the complete-object
    layout.

    Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
    Reviewed-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
    Link: https://lore.kernel.org/qemu-devel/20260907-qga-v1-8-86456ad356e2@redhat.com
    Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>

diff --git a/qga/vss-win32/provider.cpp b/qga/vss-win32/provider.cpp
index 377571b948..44c3c74bd2 100644
--- a/qga/vss-win32/provider.cpp
+++ b/qga/vss-win32/provider.cpp
@@ -212,7 +212,8 @@ CQGAVssProvider::~CQGAVssProvider()
 STDMETHODIMP CQGAVssProvider::QueryInterface(REFIID riid, void **ppObj)
 {
     if (riid == IID_IUnknown) {
-        *ppObj = static_cast<void*>(this);
+        *ppObj = static_cast<void*>(
+            static_cast<IVssSoftwareSnapshotProvider*>(this));
         AddRef();
         return S_OK;
     }