mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
When adf_dev_up() partially completes and then fails, the IRQ
handlers registered during adf_isr_resource_alloc() are not detached
before the MSI-X vectors are released.
Since the device is enabled with pcim_enable_device(), calling
pci_alloc_irq_vectors() internally registers pcim_msi_release() as a
devres action. On probe failure, devres runs pcim_msi_release() which
calls pci_free_irq_vectors(), tearing down the MSI-X vectors while IRQ
handlers (for example 'qat0-bundle0') are still attached. This causes
remove_proc_entry() warnings:
[ 22.163964] remove_proc_entry: removing non-empty directory 'irq/143', leaking at least 'qat0-bundle0'
Moving the devm_add_action_or_reset() before adf_dev_up() does not solve
the problem since devres runs in LIFO order and pcim_msi_release(),
registered later inside adf_dev_up(), would still fire before
adf_device_down().
Fix by calling adf_dev_down() explicitly when adf_dev_up() fails, to
properly free IRQ handlers before devres releases the MSI-X vectors.
Fixes:
|
||
|---|---|---|
| .. | ||
| qat_4xxx | ||
| qat_6xxx | ||
| qat_420xx | ||
| qat_c3xxx | ||
| qat_c3xxxvf | ||
| qat_c62x | ||
| qat_c62xvf | ||
| qat_common | ||
| qat_dh895xcc | ||
| qat_dh895xccvf | ||
| Kconfig | ||
| Makefile | ||