Re: [PATCH v8 16/20] PCI/AER: Convert aer_get_device_error_info(), aer_print_error() to index

Bjorn Helgaas
2025-05-23T16:12:45Z

On Fri, May 23, 2025 at 02:13:52PM +0300, Ilpo Järvinen wrote:
> On Thu, 22 May 2025, Bjorn Helgaas wrote:
>
> > From: Bjorn Helgaas <bhelgaas@google.com>
> >
> > Previously aer_get_device_error_info() and aer_print_error() took a pointer
> > to struct aer_err_info and a pointer to a pci_dev. Typically the pci_dev
> > was one of the elements of the aer_err_info.dev[] array (DPC was an
> > exception, where the dev[] array was unused).

> > -void aer_print_error(struct pci_dev *dev, struct aer_err_info *info)
> > +void aer_print_error(struct aer_err_info *info, int i)
> > {
> > - int layer, agent;
> > - int id = pci_dev_id(dev);
> > + struct pci_dev *dev;
> > + int layer, agent, id;
> > const char *level = info->level;
> >
> > + if (i >= AER_MAX_MULTI_ERR_DEVICES)
> > + return;
>
> Are these OoB checks actually indication of a logic error in the caller
> side which would perhaps warrant using
> if (WARN_ON_ONCE(i >= AER_MAX_MULTI_ERR_DEVICES))
> ?

Good idea, thanks! I hope we can someday get rid of this info->dev[]
array and the headaches associated with it.