From: Michael Kelley <[email protected]> Sent: Thursday, September 3, 2026 
9:07 AM
> 
> When a Hyper-V netvsc device is shutdown, the GPADLs for the device's
> large send and receive buffers are torn down. If the teardown fails,
> Hyper-V retain access to the buffers and may continue to read or write
> them. Consequently the buffers should be leaked after such an error.
> 
> Leaking the buffers used to work correctly, but was broken by a
> commit applied in the 4.16 kernel. This patch series restores the
> correct leaking behavior.
> 
> Because the large buffers are allocated with wrapper functions
> that allow allocations larger than MAX_ORDER_NR_PAGES, leaking the
> memory is not as simple as setting the memory pointer to NULL so
> vfree() or kfree() does nothing. Patch 1 introduces a new
> vmbus_leak_buffer() function that causes vmbus_free_buffer() to
> properly leak the buffers. Then Patch 2 uses this function in
> the netvsc driver.
> 
> Michael Kelley (2):
>   Drivers: hv: Add vmbus_leak_buffer()
>   hv_netvsc: Leak send/recv buffers if GPADL teardown fails
> 
>  drivers/hv/channel.c        | 26 ++++++++++++++++++++++++++
>  drivers/net/hyperv/netvsc.c |  6 ++++++
>  include/linux/hyperv.h      |  4 ++++
>  3 files changed, 36 insertions(+)
> 
> --
> 2.25.1
> 

I will be posting a v2 of this patch set that fixes an additional
bug in vmbus_teardown_gpadl() that Sashiko pointed out.
That fix is necessary for the full "leak on failure" scenario
to work correctly.

Michael


Reply via email to