]> xenbits.xensource.com Git - pvdrivers/win/xenvbd.git/commitdiff
Insertion into head of austere heap misses setting reverse link
authorPaul Durrant <paul.durrant@citrix.com>
Fri, 30 Jan 2015 13:44:42 +0000 (13:44 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Fri, 30 Jan 2015 13:49:31 +0000 (13:49 +0000)
The heap is maintained as a doubly linked list of objects but both
__AllocSmall() and __FreeSmall() are missing setup of the reverse link when
a new object is inserted at the head. This patch adds the necessary fix.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Reported-by: Gregory Jacklin <jackling@amazon.com>
src/xencrsh/austere.c

index c242006113c6128ff5df0a6e7246b6da99dcf257..6851475802b304727d2ad9cdb3a2484ed5f40967 100644 (file)
@@ -262,6 +262,7 @@ __AllocSmall(
             SubHeap->Next->Prev = SubHeap->Prev;
         SubHeap->Prev = NULL;
         SubHeap->Next = AustereHeap.HeadSubHeap;
+        AustereHeap.HeadSubHeap->Prev = SubHeap;
         AustereHeap.HeadSubHeap = SubHeap;
     }
     return Res;
@@ -327,6 +328,7 @@ __FreeSmall(
             SubHeap->Next->Prev = SubHeap->Prev;
         SubHeap->Prev = NULL;
         SubHeap->Next = AustereHeap.HeadSubHeap;
+        AustereHeap.HeadSubHeap->Prev = SubHeap;
         AustereHeap.HeadSubHeap = SubHeap;
     }
 }