The XENVIF_RECEIVER_PACKET structure contains an embedded MDL so that
multi-fragment packets can be properly chained together. However this
structure should not be passed to __FreePages() as:
a) It appears to create problems with system PTE tracking
b) It results in memory corruption now that __FreePages() calls
ExFreePool()
This patch therefore extends the packet structure with a pointer to the
original system MDL such that it can be passed to __FreePages() when the
packet destructor is called.
The patch also bypasses some calls to MmGetSystemAddressForMdlSafe() since
we can ASSERT that the MDL is already mapped to a system address.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>