Zero Frontend->MaxQueues after calling RingDestroy, as RingDestroy will
query this value to free each BlkifRing, which will decrement an
unsigned value below 0.
Also adds an ASSERT to detect if FrontendGetMaxQueues returns 0.
Signed-off-by: Owen Smith <owen.smith@citrix.com>
Test that Index != 0 rather than > 0, since it is an unsigned quantity.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Frontend->Page83.Data = NULL;
Frontend->Page83.Size = 0;
- Frontend->MaxQueues = 0;
-
ThreadAlert(Frontend->BackendThread);
ThreadJoin(Frontend->BackendThread);
Frontend->BackendThread = NULL;
RingDestroy(Frontend->Ring);
Frontend->Ring = NULL;
+ Frontend->MaxQueues = 0;
+
ASSERT3P(Frontend->BackendPath, ==, NULL);
ASSERT3P(Frontend->BackendWatch, ==, NULL);
ULONG Index;
Index = FrontendGetMaxQueues(Ring->Frontend);
+ ASSERT3U(Index, !=, 0);
- while (--Index > 0) {
+ while (--Index != 0) {
PXENVBD_BLKIF_RING BlkifRing = Ring->Ring[Index];
Ring->Ring[Index] = NULL;