On Wed, Nov 04, 2020 at 07:06:44PM -0800, Kuppuswamy, Sathyanarayanan wrote: > On 10/31/20 3:01 AM, Saheed Olayemi Bolarinwa wrote: > > From: "Saheed O. Bolarinwa" <refactormyself@xxxxxxxxx> > > > > In the dpc_process_error() path, the error source ID is obtained > > but not stored inside the aer_err_info object. So aer_print_error() > > is not aware of the error source if it gets called. > > > > Use the obtained valued to initialise info->id > Is it useful for DPC case ? I don't think we set info->error_dev_num for > DPC case right ? > > if (info->id && info->error_dev_num > 1 && info->id == id) > 726 pci_err(dev, " Error of this Agent is reported first\n"); It's true that we only assign to info->error_dev_num in aer.c. That looks like another defect. We're passing "info" to aer_print_error() when both info->id and info->error_dev_num are stack junk. > > Signed-off-by: Saheed O. Bolarinwa <refactormyself@xxxxxxxxx> > > --- > > drivers/pci/pcie/dpc.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c > > index e05aba86a317..9f8698812939 100644 > > --- a/drivers/pci/pcie/dpc.c > > +++ b/drivers/pci/pcie/dpc.c > > @@ -223,6 +223,7 @@ void dpc_process_error(struct pci_dev *pdev) > > else if (reason == 0 && > > dpc_get_aer_uncorrect_severity(pdev, &info) && > > aer_get_device_error_info(pdev, &info)) { > > + info.id = source; > > aer_print_error(pdev, &info); > > pci_aer_clear_nonfatal_status(pdev); > > pci_aer_clear_fatal_status(pdev); > > > > -- > Sathyanarayanan Kuppuswamy > Linux Kernel Developer