From: Long Li <longli@microsoft.com>
To: dev@dpdk.org
Cc: stephen@networkplumber.org, longli@microsoft.com,
weh@microsoft.com, stable@dpdk.org
Subject: [PATCH v4 0/6] net/netvsc: bug fixes and runtime queue reconfiguration
Date: Tue, 3 Mar 2026 12:54:03 -0800 [thread overview]
Message-ID: <20260303205411.325585-1-longli@microsoft.com> (raw)
This series fixes several resource management bugs in the netvsc PMD and
adds support for runtime queue count reconfiguration.
Patches 1-5 are bug fixes:
1. Subchannel leak on device removal — subchannels allocated during
configure are never closed in uninit.
2. Double-free of primary Rx queue — hn_dev_free_queues() already
frees hv->primary, then uninit frees it again.
3. Init error path leaks — hv->primary and hv->channels[0] not freed
on failure after allocation.
4. Event callback leak — device event callback not unregistered when
rxfilter or vf_start fails in hn_dev_start().
5. MTU change path leaks — missing chimney bitmap teardown/rebuild,
rxbuf_info leak, stale subchannel pointers, and VMBus channel
close before free.
Patch 6 adds runtime queue count reconfiguration via port
stop/configure/start, with full NVS/RNDIS session teardown and reinit
when the queue count changes.
Tested:
- Queue reconfig: 4→2→8 queues, all transitions successful
- MTU changes: 1500→4000→8000 with rxd/txd=2048, no crashes
- TX pps: 15.5M (1500B), 6.1M (4000B), 3.1M (8000B)
- RX pps: 7.6M (1500B), 2.7M (4000B), 1.4M (8000B)
v4:
- Patch 5 (MTU change): NULL out closed subchannel pointers
(hv->channels[i] = NULL) and reset hv->num_queues = 1 after closing
secondary channels to prevent stale pointer use-after-free
- Patch 5 (MTU change): reassign hv->primary->chan after reopening
channel so it points to the new channel, not the freed one
v3:
- Split into 6 patches: 5 bug fixes (patches 1-5) + 1 feature (patch 6)
- New patch 2: fix double-free of primary Rx queue on uninit
- New patch 3: fix resource leak in init error path
- New patch 4: fix event callback leak on rxfilter/vf_start failure
- New patch 5: fix resource leaks in MTU change path (chimney bitmap,
rxbuf_info leak, missing VMBus chan close before free)
- Patch 6 (reconfig): fix subchan_cleanup to call hn_rndis_conf_offload
so device retains offload config on partial failure
- Patch 6 (reconfig): fix recovery path to set hv->primary->chan after
re-opening channel, preventing use-after-free of stale pointer
- Patch 6 (reconfig): add hn_chim_init in recovery path to rebuild
chimney bitmap after successful recovery
- Fix Fixes tag on patch 5 to point to correct MTU support commit
v2:
- Split subchannel leak fix into separate patch with Fixes tag (patch 1)
- Fix reinit_failed recovery: re-map device before chan_open when device
is unmapped to prevent undefined behavior on unmapped ring buffers
- Move hn_rndis_conf_offload() to after reinit block so offload config
targets the final RNDIS session instead of being lost on teardown
- Use write lock in hn_vf_tx/rx_queue_release() to prevent race with
concurrent fast-path readers holding read lock
- Reset RSS indirection table to queue 0 in subchan_cleanup error path
- Fix multi-line comment style to follow DPDK convention
Long Li (6):
net/netvsc: fix subchannel leak on device removal
net/netvsc: fix double-free of primary Rx queue on uninit
net/netvsc: fix resource leak in init error path
net/netvsc: fix event callback leak on rxfilter failure
net/netvsc: fix resource leaks in MTU change path
net/netvsc: support runtime queue count reconfiguration
drivers/net/netvsc/hn_ethdev.c | 249 ++++++++++++++++++++++++++++++---
drivers/net/netvsc/hn_vf.c | 16 ++-
2 files changed, 239 insertions(+), 26 deletions(-)
--
2.43.0
next reply other threads:[~2026-03-03 20:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-03 20:54 Long Li [this message]
2026-03-03 20:54 ` [PATCH v4 1/6] net/netvsc: fix subchannel leak on device removal Long Li
2026-03-03 20:54 ` [PATCH v4 2/6] net/netvsc: fix double-free of primary Rx queue on uninit Long Li
2026-03-03 20:54 ` [PATCH v4 3/6] net/netvsc: fix resource leak in init error path Long Li
2026-03-03 20:54 ` [PATCH v4 4/6] net/netvsc: fix event callback leak on rxfilter failure Long Li
2026-03-03 20:54 ` [PATCH v4 5/6] net/netvsc: fix resource leaks in MTU change path Long Li
2026-03-03 20:54 ` [PATCH v4 6/6] net/netvsc: support runtime queue count reconfiguration Long Li
2026-03-03 22:16 ` [PATCH v4 0/6] net/netvsc: bug fixes and runtime queue reconfiguration Stephen Hemminger
2026-03-03 22:30 ` [EXTERNAL] " Long Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260303205411.325585-1-longli@microsoft.com \
--to=longli@microsoft.com \
--cc=dev@dpdk.org \
--cc=stable@dpdk.org \
--cc=stephen@networkplumber.org \
--cc=weh@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.