Message ID | 20231231103057.35837-9-hdegoede@redhat.com |
---|---|
State | Accepted |
Commit | ba68b88da0a2e6d72ac92738dbad0a1934e2283d |
Headers | show |
Series | media: atomisp: NULL pointer deref + missing firmware fixes | expand |
On Sun, Dec 31, 2023 at 12:31 PM Hans de Goede <hdegoede@redhat.com> wrote: ... > -Add missing devm_free_irq(), atomisp_uninitialize_modules() and > pci_free_irq_vectors() calls The devm_*_free() is usually a signal about something either tricky or wrong. Please, split this part and/or explain better why devm_free_irq() has to be called explicitly.
diff --git a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c index 336c5a895ecc..f3bd2c03dea5 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c +++ b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c @@ -1524,11 +1524,10 @@ static void atomisp_pci_remove(struct pci_dev *pdev) { struct atomisp_device *isp = pci_get_drvdata(pdev); - dev_info(&pdev->dev, "Removing atomisp driver\n"); - atomisp_drvfs_exit(); ia_css_unload_firmware(); + devm_free_irq(&pdev->dev, pdev->irq, isp); hmm_cleanup(); pm_runtime_forbid(&pdev->dev); @@ -1536,8 +1535,10 @@ static void atomisp_pci_remove(struct pci_dev *pdev) dev_pm_domain_set(&pdev->dev, NULL); cpu_latency_qos_remove_request(&isp->pm_qos); - atomisp_msi_irq_uninit(isp); atomisp_unregister_entities(isp); + atomisp_uninitialize_modules(isp); + atomisp_msi_irq_uninit(isp); + pci_free_irq_vectors(pdev); } static const struct pci_device_id atomisp_pci_tbl[] = {
Fix atomisp_pci_remove(): -Remove uninformative "Removing atomisp driver" log message -Add missing devm_free_irq(), atomisp_uninitialize_modules() and pci_free_irq_vectors() calls -Move atomisp_msi_irq_uninit() down so that the remove() order is an exact mirror of the probe() order Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/staging/media/atomisp/pci/atomisp_v4l2.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)