Re: [PATCH net] net: enetc: fix potential divide-by-zero when num_vsi is zero

From: Maxime Chevallier

Date: Wed Jun 24 2026 - 15:55:20 EST


Hi,

On 6/24/26 09:27, wei.fang@xxxxxxxxxxx wrote:
> From: Wei Fang <wei.fang@xxxxxxx>
>
> For i.MX94 series, all the standalone ENETCs do not support SR-IOV, so
> pf->caps.num_vsi is zero. This leads to a divide-by-zero in
> enetc4_default_rings_allocation() when distributing rings among PF and
> VFs.
>
> Division by zero is undefined behavior in C. On ARM64, the UDIV/SDIV
> instructions silently return zero rather than raising an exception, so
> the issue does not cause a visible crash. However, relying on this
> behavior is incorrect and poses a cross-platform compatibility risk.
>
> Add an explicit check for num_vsi == 0 and return early after the PF's
> rings have been configured.
>
> Fixes: 2d673b0e2f8d ("net: enetc: add standalone ENETC support for i.MX94")
> Signed-off-by: Wei Fang <wei.fang@xxxxxxx>
> ---
> drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
> index 4e771f852358..437a15bbb47b 100644
> --- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
> +++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
> @@ -322,6 +322,9 @@ static void enetc4_default_rings_allocation(struct enetc_pf *pf)
> val = enetc4_psicfgr0_val_construct(false, num_tx_bdr, num_rx_bdr);
> enetc_port_wr(hw, ENETC4_PSICFGR0(0), val);
>
> + if (!pf->caps.num_vsi)
> + return;
> +
> num_rx_bdr = pf->caps.num_rx_bdr - num_rx_bdr;
> rx_rem = num_rx_bdr % pf->caps.num_vsi;
> num_rx_bdr = num_rx_bdr / pf->caps.num_vsi;

Reviewed-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx>

Maxime