> > +static u32 netc_get_buffer_pool_num(struct netc_switch *priv)
> > +{
> > +   /* The BPCAPR register is a read only register, the hardware
> > +    * guarantees that the BPCAPR_NUM_BP field will not be 0.
> > +    */
> > +   return netc_base_rd(&priv->regs, NETC_BPCAPR) & BPCAPR_NUM_BP;
> > +}
> [ ... ]
> > +static void netc_ipv_to_buffer_pool_mapping(struct netc_switch *priv)
> > +{
> > +   int bp_per_port = priv->num_bp / priv->info->num_ports;
> > +   int q = NETC_IPV_NUM / bp_per_port;
> > +   int r = NETC_IPV_NUM % bp_per_port;
> 
> If the hardware register read in netc_get_buffer_pool_num() returns a value
> smaller than priv->info->num_ports (for instance, during a bus error or
> reset state), bp_per_port will evaluate to 0.
> 
> Can this lead to a division by zero panic here?
> 
> Should priv->num_bp be validated against the number of ports before
> performing this calculation to ensure the driver fails gracefully if the
> hardware returns an unexpected value?

If the hardware is so unstable and prone to such malfunctions, that would
be terrible, but I believe it won't. The AI ​​review is being a bit too 
nitpicky.
Anyway, I will ll add this check to avoid AI review warnings.

Reply via email to