From: Jakub Kicinski <kuba@kernel.org>
To: devnull+satishkh.cisco.com@kernel.org
Cc: Jakub Kicinski <kuba@kernel.org>,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
pabeni@redhat.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
20260401-enic-sriov-v2-prep-v4-0-d5834b2ef1b9@cisco.com,
satishkh@cisco.com
Subject: Re: [PATCH net-next v4 03/10] enic: add admin RQ buffer management
Date: Mon, 13 Apr 2026 17:21:25 -0700 [thread overview]
Message-ID: <20260414002125.3734260-1-kuba@kernel.org> (raw)
In-Reply-To: <20260411-enic-sriov-v2-admin-channel-v2-v4-3-f052326c2a57@cisco.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
---
enic: add admin RQ buffer management
This commit adds buffer management for the enic driver's admin receive queue,
allocating DMA buffers on open and draining them on close.
> diff --git a/drivers/net/ethernet/cisco/enic/enic_admin.c b/drivers/net/ethernet/cisco/enic/enic_admin.c
> index d1abe6a50095d..a8fcd5f116d17 100644
> --- a/drivers/net/ethernet/cisco/enic/enic_admin.c
> +++ b/drivers/net/ethernet/cisco/enic/enic_admin.c
[ ... ]
> @@ -151,6 +212,7 @@ int enic_admin_channel_open(struct enic *enic)
> vnic_wq_disable(&enic->admin_wq);
> vnic_rq_disable(&enic->admin_rq);
> enic_admin_qp_type_set(enic, 0);
> + enic_admin_rq_drain(enic);
> enic_admin_free_resources(enic);
> return err;
> }
Could this sequence allow the hardware to DMA into freed memory?
Here and in enic_admin_channel_close() below, vnic_rq_disable() is called
before enic_admin_qp_type_set(enic, 0), meaning the firmware might still be
actively routing admin messages to the queue.
Additionally, the return value of vnic_rq_disable() is ignored. If the disable
operation fails or times out, the hardware queue will remain active.
Then enic_admin_rq_drain() unconditionally unmaps the DMA addresses and frees
the buffers. If the queue is still active, incoming messages could be written
directly into the freed memory.
Would it be safer to stop the source of the messages first, and verify the
queue is successfully disabled before freeing the buffers?
[ ... ]
> @@ -166,7 +228,7 @@ void enic_admin_channel_close(struct enic *enic)
> enic_admin_qp_type_set(enic, 0);
>
> vnic_wq_clean(&enic->admin_wq, enic_admin_wq_buf_clean);
> - vnic_rq_clean(&enic->admin_rq, enic_admin_rq_buf_clean);
> + enic_admin_rq_drain(enic);
> vnic_cq_clean(&enic->admin_cq[0]);
> vnic_cq_clean(&enic->admin_cq[1]);
> vnic_intr_clean(&enic->admin_intr);
next prev parent reply other threads:[~2026-04-14 0:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-12 5:06 [PATCH net-next v4 00/10] enic: SR-IOV V2 admin channel and MBOX protocol Satish Kharat via B4 Relay
2026-04-12 5:06 ` [PATCH net-next v4 01/10] enic: verify firmware supports V2 SR-IOV at probe time Satish Kharat via B4 Relay
2026-04-12 5:06 ` [PATCH net-next v4 02/10] enic: add admin channel open and close for SR-IOV Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 03/10] enic: add admin RQ buffer management Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski [this message]
2026-04-12 5:06 ` [PATCH net-next v4 04/10] enic: add admin CQ service with MSI-X interrupt and NAPI polling Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 05/10] enic: define MBOX message types and header structures Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 06/10] enic: add MBOX core send and receive for admin channel Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 07/10] enic: add MBOX PF handlers for VF register and capability Satish Kharat via B4 Relay
2026-04-14 0:21 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 08/10] enic: add MBOX VF handlers for capability, register and link state Satish Kharat via B4 Relay
2026-04-14 0:22 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 09/10] enic: wire V2 SR-IOV enable with admin channel and MBOX Satish Kharat via B4 Relay
2026-04-14 0:22 ` Jakub Kicinski
2026-04-12 5:06 ` [PATCH net-next v4 10/10] enic: add V2 VF probe with admin channel and PF registration Satish Kharat via B4 Relay
2026-04-14 0:22 ` Jakub Kicinski
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=20260414002125.3734260-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=20260401-enic-sriov-v2-prep-v4-0-d5834b2ef1b9@cisco.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=devnull+satishkh.cisco.com@kernel.org \
--cc=edumazet@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=satishkh@cisco.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox