]> xenbits.xensource.com Git - people/pauldu/xenvif.git/commitdiff
Re-synchronize util.h with XENBUS and use __toupper()
authorPaul Durrant <paul.durrant@citrix.com>
Thu, 10 Dec 2015 11:17:05 +0000 (11:17 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 10 Dec 2015 11:17:05 +0000 (11:17 +0000)
A recent patch introduced __tolower() and __toupper() into util.h as
replacements for tolower() and toupper() respectively as the latter do
a hidden conversion to Unicode which make then unsafe at any IRQL other
than PASSIVE_LEVEL.
This patch imports util.h from XENBUS and fixes other code to be compatible.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
13 files changed:
src/xenvif/bus.c
src/xenvif/fdo.c
src/xenvif/frontend.c
src/xenvif/link.c
src/xenvif/mac.c
src/xenvif/pdo.c
src/xenvif/receiver.c
src/xenvif/registry.c
src/xenvif/settings.c
src/xenvif/thread.c
src/xenvif/transmitter.c
src/xenvif/util.h
src/xenvif/vif.c

index 9190535ccda92883eaa387ea68db51892d8bada8..d3796e33a12b693e2d9459015ce249d76817425b 100644 (file)
@@ -53,7 +53,7 @@ __BusAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, BUS_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, BUS_TAG);
 }
 
 static FORCEINLINE VOID
index 82c3fd29fbddacd11fa62a12bde346c2ae513228..dae1ad8de6bac2f14f41ce9ffbd779c3c01a7bca 100644 (file)
@@ -112,7 +112,7 @@ __FdoAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, FDO_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, FDO_POOL);
 }
 
 static FORCEINLINE VOID
@@ -857,7 +857,7 @@ __FdoMultiSzToUpcaseAnsi(
             if (Buffer[Index] == '\0')
                 break;
         } else {
-            Buffer[Index] = (CHAR)toupper(Buffer[Index]);
+            Buffer[Index] = __toupper(Buffer[Index]);
             Index++;
         }
     }
index a43a53448908d5f5eafa913c65d4a4200a65d3a5..9500a584bdc55e4e369ca8e1e23a2a98fc3ccbaa 100644 (file)
@@ -126,7 +126,7 @@ __FrontendAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, FRONTEND_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, FRONTEND_POOL);
 }
 
 static FORCEINLINE VOID
index 516115931127e9a47a5110574ccea0aa176ffe8c..a9b75b37cba3d4fd187db8e3176733c71e7423d2 100644 (file)
@@ -45,7 +45,7 @@ __LinkAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, LINK_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, LINK_TAG);
 }
 
 static FORCEINLINE VOID
index 0a771a42d7a37c55a146a3fa61efb28241cdad4e..3d04670034dfc967e079e76e444943f412edd5ba 100644 (file)
@@ -73,7 +73,7 @@ __MacAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_MAC_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, XENVIF_MAC_TAG);
 }
 
 static FORCEINLINE VOID
index 07cf23a44f99414d4e05612c9f1213d80b859b51..bda8925bcc3cfeb5ca640e48ec04b305b3a0359c 100644 (file)
@@ -100,7 +100,7 @@ __PdoAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, PDO_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, PDO_POOL);
 }
 
 static FORCEINLINE VOID
index 53f322fff4f73047b9856a0f70b4e8f3c53167a4..d3073e1bca600af56351f613a30c2763913931b1 100644 (file)
@@ -145,7 +145,7 @@ __ReceiverAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_RECEIVER_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, XENVIF_RECEIVER_TAG);
 }
 
 static FORCEINLINE VOID
index 23b948bab1b43c11715ae48012e4d1abb11ffb7b..9a7472b48fac5ed043302e27a5bb4845e3746706 100644 (file)
@@ -45,7 +45,7 @@ __RegistryAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, REGISTRY_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, REGISTRY_POOL);
 }
 
 static FORCEINLINE VOID
index 3ce47711b920a887af944daa49d9fb57b1e7dc1f..5cb99840cd5bdfcb9e6054d28c0c910366d42f8b 100644 (file)
@@ -45,7 +45,7 @@ __SettingsAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, SETTINGS_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, SETTINGS_TAG);
 }
 
 static FORCEINLINE VOID
index 2fa0c1cdaefec34360881d815ec2fbdc6c812a1a..1357473417410bf9e91166636af4adbd23c7066e 100644 (file)
@@ -52,7 +52,7 @@ __ThreadAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, THREAD_POOL);
+    return __AllocatePoolWithTag(NonPagedPool, Length, THREAD_POOL);
 }
 
 static FORCEINLINE VOID
index f01fc40a2873972c7e212213af8904c3cee783ea..a8b0162833a895dce5236cf0f8f16027ea501b3e 100644 (file)
@@ -232,7 +232,7 @@ __TransmitterAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_TRANSMITTER_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, XENVIF_TRANSMITTER_TAG);
 }
 
 static FORCEINLINE VOID
index 5fec1169dfca3a3a26cb91bc54973d90c40750d6..6d140b0a1cf6fa627587071ea0b7f062af55b611 100644 (file)
@@ -29,8 +29,8 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _UTIL_H
-#define _UTIL_H
+#ifndef _XENVIF_UTIL_H
+#define _XENVIF_UTIL_H
 
 #include <ntddk.h>
 
@@ -138,85 +138,32 @@ __InterlockedSubtract(
     return New;
 }
 
-typedef struct _NON_PAGED_BUFFER_HEADER {
-    SIZE_T  Length;
-    ULONG   Tag;
-} NON_PAGED_BUFFER_HEADER, *PNON_PAGED_BUFFER_HEADER;
-
-typedef struct _NON_PAGED_BUFFER_TRAILER {
-    ULONG   Tag;
-} NON_PAGED_BUFFER_TRAILER, *PNON_PAGED_BUFFER_TRAILER;
-
 static FORCEINLINE PVOID
-__AllocateNonPagedPoolWithTag(
-    IN  SIZE_T                  Length,
-    IN  ULONG                   Tag
+__AllocatePoolWithTag(
+    IN  POOL_TYPE   PoolType,
+    IN  SIZE_T      NumberOfBytes,
+    IN  ULONG       Tag
     )
 {
-    PUCHAR                      Buffer;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
+    PUCHAR          Buffer;
 
-    ASSERT(Length != 0);
+    __analysis_assume(PoolType == NonPagedPool ||
+                      PoolType == PagedPool);
 
-    Buffer = ExAllocatePoolWithTag(NonPagedPool,
-                                   sizeof (NON_PAGED_BUFFER_HEADER) +
-                                   Length +
-                                   sizeof (NON_PAGED_BUFFER_TRAILER),
-                                   Tag);
+    Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
     if (Buffer == NULL)
-        goto done;
-
-    RtlZeroMemory(Buffer,
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER));
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    Header->Length = Length;
-    Header->Tag = Tag;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    Trailer->Tag = Tag;
+        return NULL;
 
-done:
+    RtlZeroMemory(Buffer, NumberOfBytes);
     return Buffer;
 }
 
 static FORCEINLINE VOID
 __FreePoolWithTag(
-    IN  PVOID                   _Buffer,
-    IN  ULONG                   Tag
+    IN  PVOID   Buffer,
+    IN  ULONG   Tag
     )
 {
-    PUCHAR                      Buffer = _Buffer;
-    SIZE_T                      Length;
-    PNON_PAGED_BUFFER_HEADER    Header;
-    PNON_PAGED_BUFFER_TRAILER   Trailer;
-
-    ASSERT(Buffer != NULL);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Header = (PNON_PAGED_BUFFER_HEADER)Buffer;
-    ASSERT3U(Tag, ==, Header->Tag);
-    Length = Header->Length;
-
-    Buffer += sizeof (NON_PAGED_BUFFER_HEADER);
-
-    Trailer = (PNON_PAGED_BUFFER_TRAILER)(Buffer + Length);
-    ASSERT3U(Tag, ==, Trailer->Tag);
-
-    Buffer -= sizeof (NON_PAGED_BUFFER_HEADER);
-
-    RtlFillMemory(Buffer,
-                  sizeof (NON_PAGED_BUFFER_HEADER) +
-                  Length +
-                  sizeof (NON_PAGED_BUFFER_TRAILER),
-                  0xAA);
-
     ExFreePoolWithTag(Buffer, Tag);
 }
 
@@ -340,4 +287,26 @@ __strtok_r(
     return Token;
 }
 
-#endif  // _UTIL_H
+static FORCEINLINE CHAR
+__toupper(
+    IN  CHAR    Character
+    )
+{
+    if (Character < 'a' || Character > 'z')
+        return Character;
+
+    return 'A' + Character - 'a';
+}
+
+static FORCEINLINE CHAR
+__tolower(
+    IN  CHAR    Character
+    )
+{
+    if (Character < 'A' || Character > 'Z')
+        return Character;
+
+    return 'a' + Character - 'A';
+}
+
+#endif  // _XENVIF_UTIL_H
index 76365d237b757c6f6ea707a9e119c8ba8152d19a..cd8aafc83fbf0c10341934761d6c1995bae887c0 100644 (file)
@@ -64,7 +64,7 @@ __VifAllocate(
     IN  ULONG   Length
     )
 {
-    return __AllocateNonPagedPoolWithTag(Length, XENVIF_VIF_TAG);
+    return __AllocatePoolWithTag(NonPagedPool, Length, XENVIF_VIF_TAG);
 }
 
 static FORCEINLINE VOID