Message ID | 20201031100121.21391-1-refactormyself@gmail.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | [RFC] PCI/DPC: Fix info->id initialization in dpc_process_error() | expand |
On 10/31/20 3:01 AM, Saheed Olayemi Bolarinwa wrote: > From: "Saheed O. Bolarinwa" <refactormyself@gmail.com> > > 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"); > > Signed-off-by: Saheed O. Bolarinwa <refactormyself@gmail.com> > --- > 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); >
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@gmail.com> > > > > 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@gmail.com> > > --- > > 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
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);