]> xenbits.xensource.com Git - pvdrivers/win/xennet.git/commit
Fix low resources packet leak
authorPaul Durrant <paul.durrant@citrix.com>
Wed, 8 Feb 2017 10:47:06 +0000 (10:47 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 9 Feb 2017 16:47:39 +0000 (16:47 +0000)
commit92885c70c810231ad95a1c7e06da09fd1415421a
tree05701b2dd3be63811bd4affd7dfa198565052fd4
parentf6ea05f89b414c631802b75a4c0178a3ceaa6750
Fix low resources packet leak

When the low resources limit is hit then the NDIS_RECEIVE_FLAGS_RESOURCES
is passed to NdisMIndicateReceiveNetBufferLists(), which means that the
calling code can assume the NET_BUFFER_LIST is immediately released.
The code therefore attempts to immediately release the chain of
NET_BUFFER_LIST, but because __IndicateReceiveNetBufferLists() segmented
the chain, only the first one is actually released. This leads to a
resource leak which also prevents XENVIF from shutting down correctly
(waiting for the leaked packets to be returned).

This patch fixes the issue by handling the release of individual
NET_BUFFER_LISTs directly in __IndicateReceiveNetBufferLists(), if the
NDIS_RECEIVE_FLAGS_RESOURCES is set.

Reported-by: Martin Cerveny <martin@c-home.cz>
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Tested-by: Martin Cerveny <martin@c-home.cz>
src/xennet/receiver.c