]> xenbits.xensource.com Git - people/pauldu/xenbus.git/commitdiff
Re-try AuxKlibQueryModuleInformation() if buffer was too small
authorPaul Durrant <paul.durrant@citrix.com>
Thu, 1 May 2014 08:21:51 +0000 (09:21 +0100)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 1 May 2014 08:24:19 +0000 (09:24 +0100)
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
src/xen/module.c

index 2a708257f806a14119402f1e5785e50e332a37ea..775ea5f094320de8986c1b1d30ead67511b98205 100644 (file)
@@ -467,6 +467,7 @@ ModuleInitialize(
     if (BufferSize == 0)
         goto fail3;
 
+again:
     Count = BufferSize / sizeof (AUX_MODULE_EXTENDED_INFO);
     QueryInfo = __ModuleAllocate(sizeof (AUX_MODULE_EXTENDED_INFO) * Count);
 
@@ -477,8 +478,13 @@ ModuleInitialize(
     status = AuxKlibQueryModuleInformation(&BufferSize,
                                            sizeof (AUX_MODULE_EXTENDED_INFO),
                                            QueryInfo);
-    if (!NT_SUCCESS(status))
-        goto fail5;
+    if (!NT_SUCCESS(status)) {
+        if (status != STATUS_BUFFER_TOO_SMALL)
+            goto fail5;
+
+        __ModuleFree(QueryInfo);
+        goto again;
+    }
 
     InitializeListHead(&Context->List);
     Context->Cursor = &Context->List;