[+cc Kuppuswamy, Jonathan, Ilpo, Dave - you have reviewed most of the recent aer.c changes, so adding you here]
Hi all, Adding the reviewers who have been active in drivers/pci/pcie/aer.c, as this series has not had review feedback since v1 (3 Aug). Short summary: ghes_handle_aer() hands a ghes_estatus_pool allocation to aer_recover_queue(), which returns void, so ownership sits with the AER code. Two paths drop it without freeing - kfifo overflow in aer_recover_queue(), and a dequeued record with no matching pci_dev in aer_recover_work_func(). Under a sustained error storm this drains the pool, which then breaks GHES hardware error reporting system-wide. v4 adds the Fixes: e2abc47a5a1a tag and Cc: stable that earlier revisions were missing, and is rebased onto v7.3-rc3+ (applies cleanly to pci/next as well). Review feedback very welcome - happy to respin in whatever shape you prefer. One open design question I would specifically like an opinion on: patch 1 frees the buffer inside aer_recover_queue(), which bakes the ghes_estatus_pool ownership assumption into an exported symbol. The alternative is to make aer_recover_queue() return int and let ghes_handle_aer() free its own allocation. I went with the former because aer_recover_work_func() already frees unconditionally to the pool, but I am happy to switch if you consider the exported-API contract cleaner. Thanks, Priyank
