Takashi Iwai 638ca3
From 2203436a4d24302871617373a7eb21bc17e38762 Mon Sep 17 00:00:00 2001
Takashi Iwai 638ca3
From: Zheyu Ma <zheyuma97@gmail.com>
Takashi Iwai 638ca3
Date: Sun, 10 Apr 2022 08:44:09 +0100
Takashi Iwai 638ca3
Subject: [PATCH] media: cx25821: Fix the warning when removing the module
Takashi Iwai 638ca3
Git-commit: 2203436a4d24302871617373a7eb21bc17e38762
Takashi Iwai 638ca3
Patch-mainline: v5.19-rc1
Takashi Iwai 638ca3
References: git-fixes
Takashi Iwai 638ca3
Takashi Iwai 638ca3
When removing the module, we will get the following warning:
Takashi Iwai 638ca3
Takashi Iwai 638ca3
[   14.746697] remove_proc_entry: removing non-empty directory 'irq/21', leaking at least 'cx25821[1]'
Takashi Iwai 638ca3
[   14.747449] WARNING: CPU: 4 PID: 368 at fs/proc/generic.c:717 remove_proc_entry+0x389/0x3f0
Takashi Iwai 638ca3
[   14.751611] RIP: 0010:remove_proc_entry+0x389/0x3f0
Takashi Iwai 638ca3
[   14.759589] Call Trace:
Takashi Iwai 638ca3
[   14.759792]  <TASK>
Takashi Iwai 638ca3
[   14.759975]  unregister_irq_proc+0x14c/0x170
Takashi Iwai 638ca3
[   14.760340]  irq_free_descs+0x94/0xe0
Takashi Iwai 638ca3
[   14.760640]  mp_unmap_irq+0xb6/0x100
Takashi Iwai 638ca3
[   14.760937]  acpi_unregister_gsi_ioapic+0x27/0x40
Takashi Iwai 638ca3
[   14.761334]  acpi_pci_irq_disable+0x1d3/0x320
Takashi Iwai 638ca3
[   14.761688]  pci_disable_device+0x1ad/0x380
Takashi Iwai 638ca3
[   14.762027]  ? _raw_spin_unlock_irqrestore+0x2d/0x60
Takashi Iwai 638ca3
[   14.762442]  ? cx25821_shutdown+0x20/0x9f0 [cx25821]
Takashi Iwai 638ca3
[   14.762848]  cx25821_finidev+0x48/0xc0 [cx25821]
Takashi Iwai 638ca3
[   14.763242]  pci_device_remove+0x92/0x240
Takashi Iwai 638ca3
Takashi Iwai 638ca3
Fix this by freeing the irq before call pci_disable_device().
Takashi Iwai 638ca3
Takashi Iwai 638ca3
Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Takashi Iwai 638ca3
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Takashi Iwai 638ca3
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Takashi Iwai 638ca3
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 638ca3
Takashi Iwai 638ca3
---
Takashi Iwai 638ca3
 drivers/media/pci/cx25821/cx25821-core.c | 2 +-
Takashi Iwai 638ca3
 1 file changed, 1 insertion(+), 1 deletion(-)
Takashi Iwai 638ca3
Takashi Iwai 638ca3
diff --git a/drivers/media/pci/cx25821/cx25821-core.c b/drivers/media/pci/cx25821/cx25821-core.c
Takashi Iwai 638ca3
index 3078a39f0b95..6627fa9166d3 100644
Takashi Iwai 638ca3
--- a/drivers/media/pci/cx25821/cx25821-core.c
Takashi Iwai 638ca3
+++ b/drivers/media/pci/cx25821/cx25821-core.c
Takashi Iwai 638ca3
@@ -1332,11 +1332,11 @@ static void cx25821_finidev(struct pci_dev *pci_dev)
Takashi Iwai 638ca3
 	struct cx25821_dev *dev = get_cx25821(v4l2_dev);
Takashi Iwai 638ca3
 
Takashi Iwai 638ca3
 	cx25821_shutdown(dev);
Takashi Iwai 638ca3
-	pci_disable_device(pci_dev);
Takashi Iwai 638ca3
 
Takashi Iwai 638ca3
 	/* unregister stuff */
Takashi Iwai 638ca3
 	if (pci_dev->irq)
Takashi Iwai 638ca3
 		free_irq(pci_dev->irq, dev);
Takashi Iwai 638ca3
+	pci_disable_device(pci_dev);
Takashi Iwai 638ca3
 
Takashi Iwai 638ca3
 	cx25821_dev_unregister(dev);
Takashi Iwai 638ca3
 	v4l2_device_unregister(v4l2_dev);
Takashi Iwai 638ca3
-- 
Takashi Iwai 638ca3
2.35.3
Takashi Iwai 638ca3