From: "Wei Fang (OSS)" <wei.fang@oss.nxp.com>
To: "sashiko-reviews@lists.linux.dev" <sashiko-reviews@lists.linux.dev>
Cc: "Frank.Li@kernel.org" <Frank.Li@kernel.org>,
"imx@lists.linux.dev" <imx@lists.linux.dev>,
Netdev <netdev@vger.kernel.org>
Subject: RE: [PATCH v3 net-next 01/15] net: enetc: add trusted VF support
Date: Tue, 1 Sep 2026 06:13:55 +0000 [thread overview]
Message-ID: <GV2PR04MB11739CFEDBA3DD0B0522D15EC88A82@GV2PR04MB11739.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20260901032358.B913A1F00A3D@smtp.kernel.org>
> > diff --git a/drivers/net/ethernet/freescale/enetc/enetc_msg.c
> b/drivers/net/ethernet/freescale/enetc/enetc_msg.c
> > index edc1277bb5860..78114ab3e4820 100644
> > --- a/drivers/net/ethernet/freescale/enetc/enetc_msg.c
> > +++ b/drivers/net/ethernet/freescale/enetc/enetc_msg.c
> [ ... ]
> > @@ -61,31 +63,49 @@ static u16
> enetc_msg_set_vf_primary_mac_addr(struct enetc_pf *pf, int vf_id,
> > struct enetc_vf_state *vf_state = &pf->vf_state[vf_id];
> > struct enetc_msg_mac_exact_filter *msg = vf_msg;
> > struct device *dev = &pf->si->pdev->dev;
> > + u16 pf_msg = ENETC_PF_MSG_SUCCESS;
> > char *addr = msg->mac[0].addr;
> >
> > + mutex_lock(&vf_state->lock);
> > +
> > + /* Untrusted VFs cannot set their MAC addresses by the mailbox
> > + * messages.
> > + */
> > + if (!(vf_state->flags & ENETC_VF_FLAG_TRUSTED)) {
> > + pf_msg = ENETC_PF_MSG_PERM_DENY;
> > + goto vf_state_unlock;
> > + }
>
> [Severity: High]
> Does this code break standard Linux SR-IOV semantics?
>
> By unconditionally returning ENETC_PF_MSG_PERM_DENY for untrusted VFs,
> VMs and
> container frameworks that rely on the standard behavior may fail to initialize
> networking. Specifically, untrusted VMs that generate and set their own MAC
> (when the host has not enforced one) will receive a permission denied response
> and fail. Standard drivers typically allow untrusted VFs to set their MAC if
> no administrative MAC was assigned by the host.
This is a false positive. The PF allocates the MAC address for each VF by default.
The VF can get the MAC address from its SIPMAR0/1 registers. So untrusted VF
still can use the network.
The current patch just prevents the untrusted VF from setting its own MAC
address through the mailbox channel.
>
> > +
> > if (!is_valid_ether_addr(addr)) {
> > dev_err_ratelimited(dev, "VF%d attempted to set invalid MAC\n",
> > vf_id);
> > - return (FIELD_PREP(ENETC_PF_MSG_CLASS_ID,
> > - ENETC_MSG_CLASS_ID_MAC_FILTER) |
> > - FIELD_PREP(ENETC_PF_MSG_CLASS_CODE,
> > - ENETC_MF_CLASS_CODE_INVALID_MAC));
> > + pf_msg = FIELD_PREP(ENETC_PF_MSG_CLASS_ID,
> > + ENETC_MSG_CLASS_ID_MAC_FILTER) |
> > + FIELD_PREP(ENETC_PF_MSG_CLASS_CODE,
> > + ENETC_MF_CLASS_CODE_INVALID_MAC);
> > + goto vf_state_unlock;
> > }
> >
> > - mutex_lock(&vf_state->lock);
> > + /* PF has higher privileges. If PF has already modified the MAC
> > + * address for VF through .ndo_set_vf_mac() interface, VF is not
> > + * allowed to set its MAC address via mailbox messages, even if
> > + * it is trusted.
> > + */
> > if (vf_state->flags & ENETC_VF_FLAG_PF_SET_MAC) {
> > - mutex_unlock(&vf_state->lock);
> > dev_err_ratelimited(dev,
> > "VF%d attempted to override PF set MAC\n",
> > vf_id);
>
> [Severity: High]
> Is this restriction defeating the established kernel purpose of the VF_TRUST
> flag?
>
> If a VF is trusted, standard SR-IOV semantics typically allow it to override
> administrative restrictions like a host-assigned MAC address. This block
> prevents even trusted VFs from overriding a PF-assigned MAC address, causing
> a trusted VF to fail with a command not permitted error if it tries to change
> a host-assigned MAC.
This is also a false positive. This part is inherited from LS1028A, and is not
introduced by this patch. This patch simply adds some comments explaining
the intention behind doing so. For trusted VFs, the PF still has the highest
privileges. If a user assigns an address to a VF via the ndo_set_vf_mac()
interface, even a trusted VF cannot overwrite the MAC address set by the PF.
next prev parent reply other threads:[~2026-09-01 6:13 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 2:54 [PATCH v3 net-next 00/15] net: enetc: SR-IOV improvements and ENETC v4 VF support wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 01/15] net: enetc: add trusted " wei.fang
[not found] ` <20260901032358.B913A1F00A3D@smtp.kernel.org>
2026-09-01 6:13 ` Wei Fang (OSS) [this message]
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 02/15] net: enetc: move msg_task and msg_int_name to struct enetc_si wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 03/15] net: enetc: add link status message support to PF driver wei.fang
2026-08-31 12:00 ` Andrew Lunn
2026-09-01 2:31 ` Wei Fang
2026-09-01 3:05 ` Andrew Lunn
2026-09-01 3:40 ` Wei Fang
[not found] ` <20260901032359.788A11F00A3E@smtp.kernel.org>
2026-09-01 6:46 ` Wei Fang (OSS)
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 04/15] net: enetc: add link speed " wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 05/15] net: enetc: use enetc_set_si_hw_addr() to set VF MAC address wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 06/15] net: enetc: relocate enetc_pf_set_vf_mac() for common PF support wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 07/15] net: enetc: add .ndo_set_vf_mac() to the enetc v4 driver wei.fang
[not found] ` <20260901032358.067311F000E9@smtp.kernel.org>
2026-09-01 6:59 ` Wei Fang (OSS)
2026-08-31 2:54 ` [PATCH v3 net-next 08/15] net: enetc: move mac_filter from struct enetc_pf to struct enetc_si wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 09/15] net: enetc: add MAC address filtering support for VFs of ENETC v4 wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 10/15] net: enetc: simplify and rename PSIIER enable/disable helpers wei.fang
2026-08-31 2:54 ` [PATCH v3 net-next 11/15] net: enetc: restore VF MAC promiscuous mode after FLR for ENETC v4 wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 12/15] net: enetc: add VF support for i.MX94 and i.MX95 wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 13/15] net: enetc: implement ndo_set_rx_mode_async for ENETC v4 VF wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 14/15] net: enetc: add PSI-to-VSI link status notification support for VF wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-08-31 2:54 ` [PATCH v3 net-next 15/15] net: enetc: add ndo_get_vf_config() support wei.fang
2026-09-03 23:44 ` netdev-bot+sashiko
2026-09-03 2:56 ` [PATCH v3 net-next 00/15] net: enetc: SR-IOV improvements and ENETC v4 VF support Jakub Kicinski
2026-09-03 3:24 ` Wei Fang (OSS)
2026-09-03 23:22 ` Jakub Kicinski
2026-09-04 2:02 ` Wei Fang
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=GV2PR04MB11739CFEDBA3DD0B0522D15EC88A82@GV2PR04MB11739.eurprd04.prod.outlook.com \
--to=wei.fang@oss.nxp.com \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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