On Sun, Aug 30, 2026 at 08:28:28PM +0000, Priyank Rathod wrote:
When an AER error occurs, candidate error-source devices are identified
and recorded into e_info->dev[] via add_error_device(), which increments
each device's reference count with pci_dev_get().
If is_error_source() matches a device purely by Requester/Completer ID
match (e_info->id == pci_dev_id(dev)), the device is added to e_info->dev[]
even if it lacks the AER extended capability (dev->aer_cap == 0).
Later, during aer_process_err_devices(), aer_get_device_error_info()
returns 0 when dev->aer_cap is 0 (or if no active error status is read),
causing aer_process_err_devices() to skip handle_error_source().
Previously, handle_error_source() was responsible for calling
pci_dev_put(dev). When handle_error_source() was skipped, pci_dev_put()
was never invoked, permanently leaking the struct pci_dev reference.
The problem is real and the fix looks fine...
Fixes: 1ab4a3c80508 ("PCI/AER: Stop ruling out unbound devices as error source")
... but the Fixes tag seems to be a hallucination.
Thanks,
Lukas