All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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.