From: sashiko-bot@kernel.org
To: wei.fang@oss.nxp.com
Cc: Frank.Li@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH v3 net-next 01/15] net: enetc: add trusted VF support
Date: Tue, 01 Sep 2026 03:23:58 +0000 [thread overview]
Message-ID: <20260901032358.B913A1F00A3D@smtp.kernel.org> (raw)
In-Reply-To: <20260831025441.635045-2-wei.fang@oss.nxp.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The patch breaks standard Linux SR-IOV semantics by unconditionally preventing untrusted VFs from setting their MAC addresses, and preventing trusted VFs from overriding administratively set MAC addresses.
--
commit d231761f64378426562111f6fe937bf009f559c2
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
net: enetc: add trusted VF support
Some mailbox messages require a higher privilege level to be executed
on behalf of the requesting VF. Introduce a trusted VF flag
(ENETC_VF_FLAG_TRUSTED) and wire up the ndo_set_vf_trust callback via
enetc_pf_set_vf_trust(), which is shared between the enetc and enetc4
PF drivers.
> 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.
> +
> 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.
> - return FIELD_PREP(ENETC_PF_MSG_CLASS_ID,
> - ENETC_MSG_CLASS_ID_CMD_NOT_PERMITTED);
> + pf_msg = FIELD_PREP(ENETC_PF_MSG_CLASS_ID,
> + ENETC_MSG_CLASS_ID_CMD_NOT_PERMITTED);
> + goto vf_state_unlock;
> }
>
> enetc_set_si_hw_addr(pf, vf_id + 1, addr);
> +
> +vf_state_unlock:
> mutex_unlock(&vf_state->lock);
>
> - return ENETC_PF_MSG_SUCCESS;
> + return pf_msg;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260831025441.635045-1-wei.fang@oss.nxp.com?part=1
next prev parent reply other threads:[~2026-09-01 3:23 UTC|newest]
Thread overview: 47+ 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
2026-09-01 3:23 ` sashiko-bot [this message]
2026-09-01 6:13 ` Wei Fang (OSS)
2026-09-03 23:44 ` netdev-bot+sashiko
2026-09-04 6:29 ` Wei Fang
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
2026-09-01 3:23 ` sashiko-bot
2026-09-01 6:46 ` Wei Fang (OSS)
2026-09-03 23:44 ` netdev-bot+sashiko
2026-09-04 7:16 ` Wei Fang
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-09-04 7:52 ` Wei Fang
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
2026-09-01 3:23 ` sashiko-bot
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-09-04 8:40 ` Wei Fang
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-09-04 9:05 ` Wei Fang
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-09-04 9:53 ` Wei Fang
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-01 3:23 ` sashiko-bot
2026-09-03 23:44 ` netdev-bot+sashiko
2026-09-04 10:47 ` Wei Fang
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=20260901032358.B913A1F00A3D@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wei.fang@oss.nxp.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