Linux-Watchdog Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void
@ 2021-01-22  9:24 Uwe Kleine-König
  2021-01-22  9:24 ` [PATCH v2 1/3] watchdog: pcwd: drop always-false if from remove callback Uwe Kleine-König
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Uwe Kleine-König @ 2021-01-22  9:24 UTC (permalink / raw)
  To: Wim Van Sebroeck, Guenter Roeck, William Breathitt Gray,
	Greg Kroah-Hartman, Rafael J. Wysocki, Pau Oliva Fora,
	Dmitry Torokhov, Mauro Carvalho Chehab, Wolfgang Grandegger,
	Marc Kleine-Budde, David S. Miller, Jakub Kicinski,
	Matthew Wilcox, Hannes Reinecke, James E.J. Bottomley,
	Martin K. Petersen, Finn Thain, Michael Schmitz, Jaroslav Kysela,
	Takashi Iwai, Hans Verkuil
  Cc: linux-watchdog, linux-kernel, linux-i2c, linux-input,
	linux-media, linux-can, netdev, linux-scsi, alsa-devel

Hello,

changes since v1
(https://lore.kernel.org/r/20210121204812.402589-1-uwe@kleine-koenig.org):
 - fix build failure, found by the kernel test robot
   (my grep missed the struct isa_driver embedded in struct
   radio_isa_driver). For this I introduced patch 2 and adapted patch 3
   a bit. An interdiff is below.
 - Added Acks/Reviews by Guenter Roeck, William Breathitt Gray, Marc
   Kleine-Budde, Wolfram Sang and Takashi Iwai <tiwai@suse.de>

The base-commit I specified (by hand *sigh*) in v1 was broken, must be a
cut-n-paste-error, sorry for that.

Takashi suggested to take this series via sound.git given that this is
the most affected tree. This is fine for me. Otherwise I can also
provide an immutable branch. For both variants we still need a few acks
though.

Best regards
Uwe

Uwe Kleine-König (3):
  watchdog: pcwd: drop always-false if from remove callback
  media/radio: Make radio_isa_common_remove() return void
  isa: Make the remove callback for isa drivers return void

 drivers/base/isa.c                   | 2 +-
 drivers/i2c/busses/i2c-elektor.c     | 4 +---
 drivers/i2c/busses/i2c-pca-isa.c     | 4 +---
 drivers/input/touchscreen/htcpen.c   | 4 +---
 drivers/media/radio/radio-isa.c      | 9 ++++-----
 drivers/media/radio/radio-isa.h      | 2 +-
 drivers/media/radio/radio-sf16fmr2.c | 4 +---
 drivers/net/can/sja1000/tscan1.c     | 4 +---
 drivers/net/ethernet/3com/3c509.c    | 3 +--
 drivers/scsi/advansys.c              | 3 +--
 drivers/scsi/aha1542.c               | 3 +--
 drivers/scsi/fdomain_isa.c           | 3 +--
 drivers/scsi/g_NCR5380.c             | 5 ++---
 drivers/watchdog/pcwd.c              | 7 +------
 include/linux/isa.h                  | 2 +-
 sound/isa/ad1848/ad1848.c            | 3 +--
 sound/isa/adlib.c                    | 3 +--
 sound/isa/cmi8328.c                  | 3 +--
 sound/isa/cmi8330.c                  | 3 +--
 sound/isa/cs423x/cs4231.c            | 3 +--
 sound/isa/cs423x/cs4236.c            | 3 +--
 sound/isa/es1688/es1688.c            | 3 +--
 sound/isa/es18xx.c                   | 5 ++---
 sound/isa/galaxy/galaxy.c            | 3 +--
 sound/isa/gus/gusclassic.c           | 3 +--
 sound/isa/gus/gusextreme.c           | 3 +--
 sound/isa/gus/gusmax.c               | 3 +--
 sound/isa/gus/interwave.c            | 3 +--
 sound/isa/msnd/msnd_pinnacle.c       | 3 +--
 sound/isa/opl3sa2.c                  | 3 +--
 sound/isa/opti9xx/miro.c             | 3 +--
 sound/isa/opti9xx/opti92x-ad1848.c   | 5 ++---
 sound/isa/sb/jazz16.c                | 3 +--
 sound/isa/sb/sb16.c                  | 3 +--
 sound/isa/sb/sb8.c                   | 3 +--
 sound/isa/sc6000.c                   | 3 +--
 sound/isa/sscape.c                   | 3 +--
 sound/isa/wavefront/wavefront.c      | 3 +--
 38 files changed, 44 insertions(+), 88 deletions(-)

Interdiff against v1:
diff --git a/drivers/media/radio/radio-isa.c b/drivers/media/radio/radio-isa.c
index ad2ac16ff12d..c591c0851fa2 100644
--- a/drivers/media/radio/radio-isa.c
+++ b/drivers/media/radio/radio-isa.c
@@ -273,8 +273,8 @@ static int radio_isa_common_probe(struct radio_isa_card *isa,
 	return res;
 }
 
-static int radio_isa_common_remove(struct radio_isa_card *isa,
-				   unsigned region_size)
+static void radio_isa_common_remove(struct radio_isa_card *isa,
+				    unsigned region_size)
 {
 	const struct radio_isa_ops *ops = isa->drv->ops;
 
@@ -285,7 +285,6 @@ static int radio_isa_common_remove(struct radio_isa_card *isa,
 	release_region(isa->io, region_size);
 	v4l2_info(&isa->v4l2_dev, "Removed radio card %s\n", isa->drv->card);
 	kfree(isa);
-	return 0;
 }
 
 int radio_isa_probe(struct device *pdev, unsigned int dev)
@@ -338,11 +337,11 @@ int radio_isa_probe(struct device *pdev, unsigned int dev)
 }
 EXPORT_SYMBOL_GPL(radio_isa_probe);
 
-int radio_isa_remove(struct device *pdev, unsigned int dev)
+void radio_isa_remove(struct device *pdev, unsigned int dev)
 {
 	struct radio_isa_card *isa = dev_get_drvdata(pdev);
 
-	return radio_isa_common_remove(isa, isa->drv->region_size);
+	radio_isa_common_remove(isa, isa->drv->region_size);
 }
 EXPORT_SYMBOL_GPL(radio_isa_remove);
 
diff --git a/drivers/media/radio/radio-isa.h b/drivers/media/radio/radio-isa.h
index 2f0736edfda8..c9159958203e 100644
--- a/drivers/media/radio/radio-isa.h
+++ b/drivers/media/radio/radio-isa.h
@@ -91,7 +91,7 @@ struct radio_isa_driver {
 
 int radio_isa_match(struct device *pdev, unsigned int dev);
 int radio_isa_probe(struct device *pdev, unsigned int dev);
-int radio_isa_remove(struct device *pdev, unsigned int dev);
+void radio_isa_remove(struct device *pdev, unsigned int dev);
 #ifdef CONFIG_PNP
 int radio_isa_pnp_probe(struct pnp_dev *dev,
 			const struct pnp_device_id *dev_id);

base-commit: e609571b5ffa3528bf85292de1ceaddac342bc1c
-- 
2.29.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/3] watchdog: pcwd: drop always-false if from remove callback
  2021-01-22  9:24 [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
@ 2021-01-22  9:24 ` Uwe Kleine-König
  2021-01-22  9:24 ` [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
  2021-01-26  6:55 ` [PATCH v2 0/3] " Takashi Iwai
  2 siblings, 0 replies; 5+ messages in thread
From: Uwe Kleine-König @ 2021-01-22  9:24 UTC (permalink / raw)
  To: Wim Van Sebroeck, Guenter Roeck, William Breathitt Gray,
	Greg Kroah-Hartman
  Cc: linux-watchdog, linux-kernel

If pcwd_isa_probe() succeeded pcwd_private.io_addr cannot be NULL. (And
if pcwd_isa_probe() failed, pcwd_isa_remove() isn't called.)

Acked-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
---
 drivers/watchdog/pcwd.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/watchdog/pcwd.c b/drivers/watchdog/pcwd.c
index e86fa7f8351d..b95cd38f3ceb 100644
--- a/drivers/watchdog/pcwd.c
+++ b/drivers/watchdog/pcwd.c
@@ -956,9 +956,6 @@ static int pcwd_isa_remove(struct device *dev, unsigned int id)
 	if (debug >= DEBUG)
 		pr_debug("pcwd_isa_remove id=%d\n", id);
 
-	if (!pcwd_private.io_addr)
-		return 1;
-
 	/*  Disable the board  */
 	if (!nowayout)
 		pcwd_stop();
-- 
2.29.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void
  2021-01-22  9:24 [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
  2021-01-22  9:24 ` [PATCH v2 1/3] watchdog: pcwd: drop always-false if from remove callback Uwe Kleine-König
@ 2021-01-22  9:24 ` Uwe Kleine-König
  2021-01-25  9:52   ` Hans Verkuil
  2021-01-26  6:55 ` [PATCH v2 0/3] " Takashi Iwai
  2 siblings, 1 reply; 5+ messages in thread
From: Uwe Kleine-König @ 2021-01-22  9:24 UTC (permalink / raw)
  To: Wim Van Sebroeck, Guenter Roeck, William Breathitt Gray,
	Greg Kroah-Hartman, Rafael J. Wysocki, Pau Oliva Fora,
	Dmitry Torokhov, Mauro Carvalho Chehab, Wolfgang Grandegger,
	Marc Kleine-Budde, David S. Miller, Jakub Kicinski,
	Matthew Wilcox, Hannes Reinecke, James E.J. Bottomley,
	Martin K. Petersen, Finn Thain, Michael Schmitz, Jaroslav Kysela,
	Takashi Iwai
  Cc: linux-watchdog, linux-kernel, linux-i2c, linux-input,
	linux-media, linux-can, netdev, linux-scsi, alsa-devel,
	Wolfram Sang, Takashi Iway

The driver core ignores the return value of the remove callback, so
don't give isa drivers the chance to provide a value.

Adapt all isa_drivers with a remove callbacks accordingly; they all
return 0 unconditionally anyhow.

Acked-by: Marc Kleine-Budde <mkl@pengutronix.de> # for drivers/net/can/sja1000/tscan1.c
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Acked-by: Wolfram Sang <wsa@kernel.org> # for drivers/i2c/
Reviewed-by: Takashi Iway <tiwai@suse.de> # for sound/
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
---
 drivers/base/isa.c                   | 2 +-
 drivers/i2c/busses/i2c-elektor.c     | 4 +---
 drivers/i2c/busses/i2c-pca-isa.c     | 4 +---
 drivers/input/touchscreen/htcpen.c   | 4 +---
 drivers/media/radio/radio-isa.c      | 4 +---
 drivers/media/radio/radio-isa.h      | 2 +-
 drivers/media/radio/radio-sf16fmr2.c | 4 +---
 drivers/net/can/sja1000/tscan1.c     | 4 +---
 drivers/net/ethernet/3com/3c509.c    | 3 +--
 drivers/scsi/advansys.c              | 3 +--
 drivers/scsi/aha1542.c               | 3 +--
 drivers/scsi/fdomain_isa.c           | 3 +--
 drivers/scsi/g_NCR5380.c             | 5 ++---
 drivers/watchdog/pcwd.c              | 4 +---
 include/linux/isa.h                  | 2 +-
 sound/isa/ad1848/ad1848.c            | 3 +--
 sound/isa/adlib.c                    | 3 +--
 sound/isa/cmi8328.c                  | 3 +--
 sound/isa/cmi8330.c                  | 3 +--
 sound/isa/cs423x/cs4231.c            | 3 +--
 sound/isa/cs423x/cs4236.c            | 3 +--
 sound/isa/es1688/es1688.c            | 3 +--
 sound/isa/es18xx.c                   | 5 ++---
 sound/isa/galaxy/galaxy.c            | 3 +--
 sound/isa/gus/gusclassic.c           | 3 +--
 sound/isa/gus/gusextreme.c           | 3 +--
 sound/isa/gus/gusmax.c               | 3 +--
 sound/isa/gus/interwave.c            | 3 +--
 sound/isa/msnd/msnd_pinnacle.c       | 3 +--
 sound/isa/opl3sa2.c                  | 3 +--
 sound/isa/opti9xx/miro.c             | 3 +--
 sound/isa/opti9xx/opti92x-ad1848.c   | 5 ++---
 sound/isa/sb/jazz16.c                | 3 +--
 sound/isa/sb/sb16.c                  | 3 +--
 sound/isa/sb/sb8.c                   | 3 +--
 sound/isa/sc6000.c                   | 3 +--
 sound/isa/sscape.c                   | 3 +--
 sound/isa/wavefront/wavefront.c      | 3 +--
 38 files changed, 41 insertions(+), 83 deletions(-)

diff --git a/drivers/base/isa.c b/drivers/base/isa.c
index 2772f5d1948a..aa4737667026 100644
--- a/drivers/base/isa.c
+++ b/drivers/base/isa.c
@@ -51,7 +51,7 @@ static int isa_bus_remove(struct device *dev)
 	struct isa_driver *isa_driver = dev->platform_data;
 
 	if (isa_driver && isa_driver->remove)
-		return isa_driver->remove(dev, to_isa_dev(dev)->id);
+		isa_driver->remove(dev, to_isa_dev(dev)->id);
 
 	return 0;
 }
diff --git a/drivers/i2c/busses/i2c-elektor.c b/drivers/i2c/busses/i2c-elektor.c
index 140426db28df..b72a3c3ef2ab 100644
--- a/drivers/i2c/busses/i2c-elektor.c
+++ b/drivers/i2c/busses/i2c-elektor.c
@@ -282,7 +282,7 @@ static int elektor_probe(struct device *dev, unsigned int id)
 	return -ENODEV;
 }
 
-static int elektor_remove(struct device *dev, unsigned int id)
+static void elektor_remove(struct device *dev, unsigned int id)
 {
 	i2c_del_adapter(&pcf_isa_ops);
 
@@ -298,8 +298,6 @@ static int elektor_remove(struct device *dev, unsigned int id)
 		iounmap(base_iomem);
 		release_mem_region(base, 2);
 	}
-
-	return 0;
 }
 
 static struct isa_driver i2c_elektor_driver = {
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
index f27bc1e55385..85e8cf58e8bf 100644
--- a/drivers/i2c/busses/i2c-pca-isa.c
+++ b/drivers/i2c/busses/i2c-pca-isa.c
@@ -161,7 +161,7 @@ static int pca_isa_probe(struct device *dev, unsigned int id)
 	return -ENODEV;
 }
 
-static int pca_isa_remove(struct device *dev, unsigned int id)
+static void pca_isa_remove(struct device *dev, unsigned int id)
 {
 	i2c_del_adapter(&pca_isa_ops);
 
@@ -170,8 +170,6 @@ static int pca_isa_remove(struct device *dev, unsigned int id)
 		free_irq(irq, &pca_isa_ops);
 	}
 	release_region(base, IO_SIZE);
-
-	return 0;
 }
 
 static struct isa_driver pca_isa_driver = {
diff --git a/drivers/input/touchscreen/htcpen.c b/drivers/input/touchscreen/htcpen.c
index 2f261a34f9c2..056ba76087e8 100644
--- a/drivers/input/touchscreen/htcpen.c
+++ b/drivers/input/touchscreen/htcpen.c
@@ -171,7 +171,7 @@ static int htcpen_isa_probe(struct device *dev, unsigned int id)
 	return err;
 }
 
-static int htcpen_isa_remove(struct device *dev, unsigned int id)
+static void htcpen_isa_remove(struct device *dev, unsigned int id)
 {
 	struct input_dev *htcpen_dev = dev_get_drvdata(dev);
 
@@ -182,8 +182,6 @@ static int htcpen_isa_remove(struct device *dev, unsigned int id)
 	release_region(HTCPEN_PORT_INDEX, 2);
 	release_region(HTCPEN_PORT_INIT, 1);
 	release_region(HTCPEN_PORT_IRQ_CLEAR, 1);
-
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/drivers/media/radio/radio-isa.c b/drivers/media/radio/radio-isa.c
index 527f4c3b0ca4..c591c0851fa2 100644
--- a/drivers/media/radio/radio-isa.c
+++ b/drivers/media/radio/radio-isa.c
@@ -337,13 +337,11 @@ int radio_isa_probe(struct device *pdev, unsigned int dev)
 }
 EXPORT_SYMBOL_GPL(radio_isa_probe);
 
-int radio_isa_remove(struct device *pdev, unsigned int dev)
+void radio_isa_remove(struct device *pdev, unsigned int dev)
 {
 	struct radio_isa_card *isa = dev_get_drvdata(pdev);
 
 	radio_isa_common_remove(isa, isa->drv->region_size);
-
-	return 0;
 }
 EXPORT_SYMBOL_GPL(radio_isa_remove);
 
diff --git a/drivers/media/radio/radio-isa.h b/drivers/media/radio/radio-isa.h
index 2f0736edfda8..c9159958203e 100644
--- a/drivers/media/radio/radio-isa.h
+++ b/drivers/media/radio/radio-isa.h
@@ -91,7 +91,7 @@ struct radio_isa_driver {
 
 int radio_isa_match(struct device *pdev, unsigned int dev);
 int radio_isa_probe(struct device *pdev, unsigned int dev);
-int radio_isa_remove(struct device *pdev, unsigned int dev);
+void radio_isa_remove(struct device *pdev, unsigned int dev);
 #ifdef CONFIG_PNP
 int radio_isa_pnp_probe(struct pnp_dev *dev,
 			const struct pnp_device_id *dev_id);
diff --git a/drivers/media/radio/radio-sf16fmr2.c b/drivers/media/radio/radio-sf16fmr2.c
index 0388894cfe41..d0dde55b7930 100644
--- a/drivers/media/radio/radio-sf16fmr2.c
+++ b/drivers/media/radio/radio-sf16fmr2.c
@@ -293,11 +293,9 @@ static void fmr2_remove(struct fmr2 *fmr2)
 	kfree(fmr2);
 }
 
-static int fmr2_isa_remove(struct device *pdev, unsigned int ndev)
+static void fmr2_isa_remove(struct device *pdev, unsigned int ndev)
 {
 	fmr2_remove(dev_get_drvdata(pdev));
-
-	return 0;
 }
 
 static void fmr2_pnp_remove(struct pnp_dev *pdev)
diff --git a/drivers/net/can/sja1000/tscan1.c b/drivers/net/can/sja1000/tscan1.c
index 6ea802c66124..3dbba8d61afb 100644
--- a/drivers/net/can/sja1000/tscan1.c
+++ b/drivers/net/can/sja1000/tscan1.c
@@ -159,7 +159,7 @@ static int tscan1_probe(struct device *dev, unsigned id)
 	return -ENXIO;
 }
 
-static int tscan1_remove(struct device *dev, unsigned id /*unused*/)
+static void tscan1_remove(struct device *dev, unsigned id /*unused*/)
 {
 	struct net_device *netdev;
 	struct sja1000_priv *priv;
@@ -179,8 +179,6 @@ static int tscan1_remove(struct device *dev, unsigned id /*unused*/)
 	release_region(pld_base, TSCAN1_PLD_SIZE);
 
 	free_sja1000dev(netdev);
-
-	return 0;
 }
 
 static struct isa_driver tscan1_isa_driver = {
diff --git a/drivers/net/ethernet/3com/3c509.c b/drivers/net/ethernet/3com/3c509.c
index 667f38c9e4c6..53e1f7e07959 100644
--- a/drivers/net/ethernet/3com/3c509.c
+++ b/drivers/net/ethernet/3com/3c509.c
@@ -335,12 +335,11 @@ static int el3_isa_match(struct device *pdev, unsigned int ndev)
 	return 1;
 }
 
-static int el3_isa_remove(struct device *pdev,
+static void el3_isa_remove(struct device *pdev,
 				    unsigned int ndev)
 {
 	el3_device_remove(pdev);
 	dev_set_drvdata(pdev, NULL);
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 79830e77afa9..b1e97f75b0ba 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -11459,12 +11459,11 @@ static int advansys_isa_probe(struct device *dev, unsigned int id)
 	return err;
 }
 
-static int advansys_isa_remove(struct device *dev, unsigned int id)
+static void advansys_isa_remove(struct device *dev, unsigned int id)
 {
 	int ioport = _asc_def_iop_base[id];
 	advansys_release(dev_get_drvdata(dev));
 	release_region(ioport, ASC_IOADR_GAP);
-	return 0;
 }
 
 static struct isa_driver advansys_isa_driver = {
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index dc5667afeb27..e0d8cca1c70b 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -1025,12 +1025,11 @@ static int aha1542_isa_match(struct device *pdev, unsigned int ndev)
 	return 1;
 }
 
-static int aha1542_isa_remove(struct device *pdev,
+static void aha1542_isa_remove(struct device *pdev,
 				    unsigned int ndev)
 {
 	aha1542_release(dev_get_drvdata(pdev));
 	dev_set_drvdata(pdev, NULL);
-	return 0;
 }
 
 static struct isa_driver aha1542_isa_driver = {
diff --git a/drivers/scsi/fdomain_isa.c b/drivers/scsi/fdomain_isa.c
index e0cdcd2003d0..2b4280a43a53 100644
--- a/drivers/scsi/fdomain_isa.c
+++ b/drivers/scsi/fdomain_isa.c
@@ -175,7 +175,7 @@ static int fdomain_isa_param_match(struct device *dev, unsigned int ndev)
 	return 1;
 }
 
-static int fdomain_isa_remove(struct device *dev, unsigned int ndev)
+static void fdomain_isa_remove(struct device *dev, unsigned int ndev)
 {
 	struct Scsi_Host *sh = dev_get_drvdata(dev);
 	int base = sh->io_port;
@@ -183,7 +183,6 @@ static int fdomain_isa_remove(struct device *dev, unsigned int ndev)
 	fdomain_destroy(sh);
 	release_region(base, FDOMAIN_REGION_SIZE);
 	dev_set_drvdata(dev, NULL);
-	return 0;
 }
 
 static struct isa_driver fdomain_isa_driver = {
diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c
index 2df2f38a9b12..7ba3c9312731 100644
--- a/drivers/scsi/g_NCR5380.c
+++ b/drivers/scsi/g_NCR5380.c
@@ -720,12 +720,11 @@ static int generic_NCR5380_isa_match(struct device *pdev, unsigned int ndev)
 	return 1;
 }
 
-static int generic_NCR5380_isa_remove(struct device *pdev,
-                                      unsigned int ndev)
+static void generic_NCR5380_isa_remove(struct device *pdev,
+				       unsigned int ndev)
 {
 	generic_NCR5380_release_resources(dev_get_drvdata(pdev));
 	dev_set_drvdata(pdev, NULL);
-	return 0;
 }
 
 static struct isa_driver generic_NCR5380_isa_driver = {
diff --git a/drivers/watchdog/pcwd.c b/drivers/watchdog/pcwd.c
index b95cd38f3ceb..a793b03a785d 100644
--- a/drivers/watchdog/pcwd.c
+++ b/drivers/watchdog/pcwd.c
@@ -951,7 +951,7 @@ static int pcwd_isa_probe(struct device *dev, unsigned int id)
 	return ret;
 }
 
-static int pcwd_isa_remove(struct device *dev, unsigned int id)
+static void pcwd_isa_remove(struct device *dev, unsigned int id)
 {
 	if (debug >= DEBUG)
 		pr_debug("pcwd_isa_remove id=%d\n", id);
@@ -968,8 +968,6 @@ static int pcwd_isa_remove(struct device *dev, unsigned int id)
 			(pcwd_private.revision == PCWD_REVISION_A) ? 2 : 4);
 	pcwd_private.io_addr = 0x0000;
 	cards_found--;
-
-	return 0;
 }
 
 static void pcwd_isa_shutdown(struct device *dev, unsigned int id)
diff --git a/include/linux/isa.h b/include/linux/isa.h
index 41336da0f4e7..e30963190968 100644
--- a/include/linux/isa.h
+++ b/include/linux/isa.h
@@ -13,7 +13,7 @@
 struct isa_driver {
 	int (*match)(struct device *, unsigned int);
 	int (*probe)(struct device *, unsigned int);
-	int (*remove)(struct device *, unsigned int);
+	void (*remove)(struct device *, unsigned int);
 	void (*shutdown)(struct device *, unsigned int);
 	int (*suspend)(struct device *, unsigned int, pm_message_t);
 	int (*resume)(struct device *, unsigned int);
diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c
index 593c6e959afe..48f7cc57c3da 100644
--- a/sound/isa/ad1848/ad1848.c
+++ b/sound/isa/ad1848/ad1848.c
@@ -118,10 +118,9 @@ out:	snd_card_free(card);
 	return error;
 }
 
-static int snd_ad1848_remove(struct device *dev, unsigned int n)
+static void snd_ad1848_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/adlib.c b/sound/isa/adlib.c
index 5105524b6f38..e6cd7c4da38e 100644
--- a/sound/isa/adlib.c
+++ b/sound/isa/adlib.c
@@ -97,10 +97,9 @@ out:	snd_card_free(card);
 	return error;
 }
 
-static int snd_adlib_remove(struct device *dev, unsigned int n)
+static void snd_adlib_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 static struct isa_driver snd_adlib_driver = {
diff --git a/sound/isa/cmi8328.c b/sound/isa/cmi8328.c
index faca5dd95bfe..3b9fbb02864b 100644
--- a/sound/isa/cmi8328.c
+++ b/sound/isa/cmi8328.c
@@ -403,7 +403,7 @@ static int snd_cmi8328_probe(struct device *pdev, unsigned int ndev)
 	return err;
 }
 
-static int snd_cmi8328_remove(struct device *pdev, unsigned int dev)
+static void snd_cmi8328_remove(struct device *pdev, unsigned int dev)
 {
 	struct snd_card *card = dev_get_drvdata(pdev);
 	struct snd_cmi8328 *cmi = card->private_data;
@@ -420,7 +420,6 @@ static int snd_cmi8328_remove(struct device *pdev, unsigned int dev)
 	snd_cmi8328_cfg_write(cmi->port, CFG2, 0);
 	snd_cmi8328_cfg_write(cmi->port, CFG3, 0);
 	snd_card_free(card);
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
index 4669eb0cc8ce..19e258527d69 100644
--- a/sound/isa/cmi8330.c
+++ b/sound/isa/cmi8330.c
@@ -631,11 +631,10 @@ static int snd_cmi8330_isa_probe(struct device *pdev,
 	return 0;
 }
 
-static int snd_cmi8330_isa_remove(struct device *devptr,
+static void snd_cmi8330_isa_remove(struct device *devptr,
 				  unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c
index 2135963eba78..383ee621cea1 100644
--- a/sound/isa/cs423x/cs4231.c
+++ b/sound/isa/cs423x/cs4231.c
@@ -135,10 +135,9 @@ out:	snd_card_free(card);
 	return error;
 }
 
-static int snd_cs4231_remove(struct device *dev, unsigned int n)
+static void snd_cs4231_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
index fa3c39cff5f8..24688271e73f 100644
--- a/sound/isa/cs423x/cs4236.c
+++ b/sound/isa/cs423x/cs4236.c
@@ -487,11 +487,10 @@ static int snd_cs423x_isa_probe(struct device *pdev,
 	return 0;
 }
 
-static int snd_cs423x_isa_remove(struct device *pdev,
+static void snd_cs423x_isa_remove(struct device *pdev,
 				 unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(pdev));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
index 64610571a5e1..d99bb3f8f0c1 100644
--- a/sound/isa/es1688/es1688.c
+++ b/sound/isa/es1688/es1688.c
@@ -192,10 +192,9 @@ static int snd_es1688_isa_probe(struct device *dev, unsigned int n)
 	return error;
 }
 
-static int snd_es1688_isa_remove(struct device *dev, unsigned int n)
+static void snd_es1688_isa_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 static struct isa_driver snd_es1688_driver = {
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 5f8d7e8a5477..9beef8079177 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -2210,11 +2210,10 @@ static int snd_es18xx_isa_probe(struct device *pdev, unsigned int dev)
 	}
 }
 
-static int snd_es18xx_isa_remove(struct device *devptr,
-				 unsigned int dev)
+static void snd_es18xx_isa_remove(struct device *devptr,
+				  unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/galaxy/galaxy.c b/sound/isa/galaxy/galaxy.c
index 65f9f46c9f58..d33d69f29924 100644
--- a/sound/isa/galaxy/galaxy.c
+++ b/sound/isa/galaxy/galaxy.c
@@ -608,10 +608,9 @@ static int snd_galaxy_probe(struct device *dev, unsigned int n)
 	return err;
 }
 
-static int snd_galaxy_remove(struct device *dev, unsigned int n)
+static void snd_galaxy_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 static struct isa_driver snd_galaxy_driver = {
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c
index 7419b1939754..015f88a11352 100644
--- a/sound/isa/gus/gusclassic.c
+++ b/sound/isa/gus/gusclassic.c
@@ -195,10 +195,9 @@ out:	snd_card_free(card);
 	return error;
 }
 
-static int snd_gusclassic_remove(struct device *dev, unsigned int n)
+static void snd_gusclassic_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 static struct isa_driver snd_gusclassic_driver = {
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
index ed2f9d64efae..c9f31b4fb887 100644
--- a/sound/isa/gus/gusextreme.c
+++ b/sound/isa/gus/gusextreme.c
@@ -324,10 +324,9 @@ out:	snd_card_free(card);
 	return error;
 }
 
-static int snd_gusextreme_remove(struct device *dev, unsigned int n)
+static void snd_gusextreme_remove(struct device *dev, unsigned int n)
 {
 	snd_card_free(dev_get_drvdata(dev));
-	return 0;
 }
 
 static struct isa_driver snd_gusextreme_driver = {
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
index 05cd9be4dd8a..dc09fbd6f88d 100644
--- a/sound/isa/gus/gusmax.c
+++ b/sound/isa/gus/gusmax.c
@@ -338,10 +338,9 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
 	return err;
 }
 
-static int snd_gusmax_remove(struct device *devptr, unsigned int dev)
+static void snd_gusmax_remove(struct device *devptr, unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #define DEV_NAME "gusmax"
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index 3e9ad930deae..e4d412e72b75 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -825,10 +825,9 @@ static int snd_interwave_isa_probe(struct device *pdev,
 	}
 }
 
-static int snd_interwave_isa_remove(struct device *devptr, unsigned int dev)
+static void snd_interwave_isa_remove(struct device *devptr, unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 static struct isa_driver snd_interwave_driver = {
diff --git a/sound/isa/msnd/msnd_pinnacle.c b/sound/isa/msnd/msnd_pinnacle.c
index 24b34ecf5e5b..69647b41300d 100644
--- a/sound/isa/msnd/msnd_pinnacle.c
+++ b/sound/isa/msnd/msnd_pinnacle.c
@@ -1049,10 +1049,9 @@ static int snd_msnd_isa_probe(struct device *pdev, unsigned int idx)
 #endif
 }
 
-static int snd_msnd_isa_remove(struct device *pdev, unsigned int dev)
+static void snd_msnd_isa_remove(struct device *pdev, unsigned int dev)
 {
 	snd_msnd_unload(dev_get_drvdata(pdev));
-	return 0;
 }
 
 static struct isa_driver snd_msnd_driver = {
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index 85a181acd388..7649a8a4128d 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -878,11 +878,10 @@ static int snd_opl3sa2_isa_probe(struct device *pdev,
 	return 0;
 }
 
-static int snd_opl3sa2_isa_remove(struct device *devptr,
+static void snd_opl3sa2_isa_remove(struct device *devptr,
 				  unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/opti9xx/miro.c b/sound/isa/opti9xx/miro.c
index 44ed1b65f6ce..20933342f5eb 100644
--- a/sound/isa/opti9xx/miro.c
+++ b/sound/isa/opti9xx/miro.c
@@ -1480,11 +1480,10 @@ static int snd_miro_isa_probe(struct device *devptr, unsigned int n)
 	return 0;
 }
 
-static int snd_miro_isa_remove(struct device *devptr,
+static void snd_miro_isa_remove(struct device *devptr,
 			       unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #define DEV_NAME "miro"
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index 881d3b5711d2..758f5b579138 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -1024,11 +1024,10 @@ static int snd_opti9xx_isa_probe(struct device *devptr,
 	return 0;
 }
 
-static int snd_opti9xx_isa_remove(struct device *devptr,
-				  unsigned int dev)
+static void snd_opti9xx_isa_remove(struct device *devptr,
+				   unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/sb/jazz16.c b/sound/isa/sb/jazz16.c
index ee379bbf70a4..0e2e0ab3b9e4 100644
--- a/sound/isa/sb/jazz16.c
+++ b/sound/isa/sb/jazz16.c
@@ -339,12 +339,11 @@ static int snd_jazz16_probe(struct device *devptr, unsigned int dev)
 	return err;
 }
 
-static int snd_jazz16_remove(struct device *devptr, unsigned int dev)
+static void snd_jazz16_remove(struct device *devptr, unsigned int dev)
 {
 	struct snd_card *card = dev_get_drvdata(devptr);
 
 	snd_card_free(card);
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
index 479197c13803..db284b7b88a7 100644
--- a/sound/isa/sb/sb16.c
+++ b/sound/isa/sb/sb16.c
@@ -547,10 +547,9 @@ static int snd_sb16_isa_probe(struct device *pdev, unsigned int dev)
 	}
 }
 
-static int snd_sb16_isa_remove(struct device *pdev, unsigned int dev)
+static void snd_sb16_isa_remove(struct device *pdev, unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(pdev));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index 438109f167d6..8e3e67b9a341 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -192,10 +192,9 @@ static int snd_sb8_probe(struct device *pdev, unsigned int dev)
 	return err;
 }
 
-static int snd_sb8_remove(struct device *pdev, unsigned int dev)
+static void snd_sb8_remove(struct device *pdev, unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(pdev));
-	return 0;
 }
 
 #ifdef CONFIG_PM
diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c
index 3d0bea44f454..def137579717 100644
--- a/sound/isa/sc6000.c
+++ b/sound/isa/sc6000.c
@@ -672,7 +672,7 @@ static int snd_sc6000_probe(struct device *devptr, unsigned int dev)
 	return err;
 }
 
-static int snd_sc6000_remove(struct device *devptr, unsigned int dev)
+static void snd_sc6000_remove(struct device *devptr, unsigned int dev)
 {
 	struct snd_card *card = dev_get_drvdata(devptr);
 	char __iomem **vport = card->private_data;
@@ -684,7 +684,6 @@ static int snd_sc6000_remove(struct device *devptr, unsigned int dev)
 	release_region(mss_port[dev], 4);
 
 	snd_card_free(card);
-	return 0;
 }
 
 static struct isa_driver snd_sc6000_driver = {
diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
index 2e5a5c5279e8..e70ef9aee545 100644
--- a/sound/isa/sscape.c
+++ b/sound/isa/sscape.c
@@ -1183,10 +1183,9 @@ static int snd_sscape_probe(struct device *pdev, unsigned int dev)
 	return ret;
 }
 
-static int snd_sscape_remove(struct device *devptr, unsigned int dev)
+static void snd_sscape_remove(struct device *devptr, unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #define DEV_NAME "sscape"
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index 9e0f6b226775..b750a4fd40de 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -565,11 +565,10 @@ static int snd_wavefront_isa_probe(struct device *pdev,
 	return 0;
 }
 
-static int snd_wavefront_isa_remove(struct device *devptr,
+static void snd_wavefront_isa_remove(struct device *devptr,
 				    unsigned int dev)
 {
 	snd_card_free(dev_get_drvdata(devptr));
-	return 0;
 }
 
 #define DEV_NAME "wavefront"
-- 
2.29.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void
  2021-01-22  9:24 ` [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
@ 2021-01-25  9:52   ` Hans Verkuil
  0 siblings, 0 replies; 5+ messages in thread
From: Hans Verkuil @ 2021-01-25  9:52 UTC (permalink / raw)
  To: Uwe Kleine-König, Wim Van Sebroeck, Guenter Roeck,
	William Breathitt Gray, Greg Kroah-Hartman, Rafael J. Wysocki,
	Pau Oliva Fora, Dmitry Torokhov, Mauro Carvalho Chehab,
	Wolfgang Grandegger, Marc Kleine-Budde, David S. Miller,
	Jakub Kicinski, Matthew Wilcox, Hannes Reinecke,
	James E.J. Bottomley, Martin K. Petersen, Finn Thain,
	Michael Schmitz, Jaroslav Kysela, Takashi Iwai
  Cc: linux-watchdog, linux-kernel, linux-i2c, linux-input,
	linux-media, linux-can, netdev, linux-scsi, alsa-devel,
	Wolfram Sang, Takashi Iway

On 22/01/2021 10:24, Uwe Kleine-König wrote:
> The driver core ignores the return value of the remove callback, so
> don't give isa drivers the chance to provide a value.
> 
> Adapt all isa_drivers with a remove callbacks accordingly; they all
> return 0 unconditionally anyhow.
> 
> Acked-by: Marc Kleine-Budde <mkl@pengutronix.de> # for drivers/net/can/sja1000/tscan1.c
> Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
> Acked-by: Wolfram Sang <wsa@kernel.org> # for drivers/i2c/
> Reviewed-by: Takashi Iway <tiwai@suse.de> # for sound/
> Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>

For the media/radio drivers:

Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

Thanks,

	Hans

> ---
>  drivers/base/isa.c                   | 2 +-
>  drivers/i2c/busses/i2c-elektor.c     | 4 +---
>  drivers/i2c/busses/i2c-pca-isa.c     | 4 +---
>  drivers/input/touchscreen/htcpen.c   | 4 +---
>  drivers/media/radio/radio-isa.c      | 4 +---
>  drivers/media/radio/radio-isa.h      | 2 +-
>  drivers/media/radio/radio-sf16fmr2.c | 4 +---
>  drivers/net/can/sja1000/tscan1.c     | 4 +---
>  drivers/net/ethernet/3com/3c509.c    | 3 +--
>  drivers/scsi/advansys.c              | 3 +--
>  drivers/scsi/aha1542.c               | 3 +--
>  drivers/scsi/fdomain_isa.c           | 3 +--
>  drivers/scsi/g_NCR5380.c             | 5 ++---
>  drivers/watchdog/pcwd.c              | 4 +---
>  include/linux/isa.h                  | 2 +-
>  sound/isa/ad1848/ad1848.c            | 3 +--
>  sound/isa/adlib.c                    | 3 +--
>  sound/isa/cmi8328.c                  | 3 +--
>  sound/isa/cmi8330.c                  | 3 +--
>  sound/isa/cs423x/cs4231.c            | 3 +--
>  sound/isa/cs423x/cs4236.c            | 3 +--
>  sound/isa/es1688/es1688.c            | 3 +--
>  sound/isa/es18xx.c                   | 5 ++---
>  sound/isa/galaxy/galaxy.c            | 3 +--
>  sound/isa/gus/gusclassic.c           | 3 +--
>  sound/isa/gus/gusextreme.c           | 3 +--
>  sound/isa/gus/gusmax.c               | 3 +--
>  sound/isa/gus/interwave.c            | 3 +--
>  sound/isa/msnd/msnd_pinnacle.c       | 3 +--
>  sound/isa/opl3sa2.c                  | 3 +--
>  sound/isa/opti9xx/miro.c             | 3 +--
>  sound/isa/opti9xx/opti92x-ad1848.c   | 5 ++---
>  sound/isa/sb/jazz16.c                | 3 +--
>  sound/isa/sb/sb16.c                  | 3 +--
>  sound/isa/sb/sb8.c                   | 3 +--
>  sound/isa/sc6000.c                   | 3 +--
>  sound/isa/sscape.c                   | 3 +--
>  sound/isa/wavefront/wavefront.c      | 3 +--
>  38 files changed, 41 insertions(+), 83 deletions(-)
> 
> diff --git a/drivers/base/isa.c b/drivers/base/isa.c
> index 2772f5d1948a..aa4737667026 100644
> --- a/drivers/base/isa.c
> +++ b/drivers/base/isa.c
> @@ -51,7 +51,7 @@ static int isa_bus_remove(struct device *dev)
>  	struct isa_driver *isa_driver = dev->platform_data;
>  
>  	if (isa_driver && isa_driver->remove)
> -		return isa_driver->remove(dev, to_isa_dev(dev)->id);
> +		isa_driver->remove(dev, to_isa_dev(dev)->id);
>  
>  	return 0;
>  }
> diff --git a/drivers/i2c/busses/i2c-elektor.c b/drivers/i2c/busses/i2c-elektor.c
> index 140426db28df..b72a3c3ef2ab 100644
> --- a/drivers/i2c/busses/i2c-elektor.c
> +++ b/drivers/i2c/busses/i2c-elektor.c
> @@ -282,7 +282,7 @@ static int elektor_probe(struct device *dev, unsigned int id)
>  	return -ENODEV;
>  }
>  
> -static int elektor_remove(struct device *dev, unsigned int id)
> +static void elektor_remove(struct device *dev, unsigned int id)
>  {
>  	i2c_del_adapter(&pcf_isa_ops);
>  
> @@ -298,8 +298,6 @@ static int elektor_remove(struct device *dev, unsigned int id)
>  		iounmap(base_iomem);
>  		release_mem_region(base, 2);
>  	}
> -
> -	return 0;
>  }
>  
>  static struct isa_driver i2c_elektor_driver = {
> diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
> index f27bc1e55385..85e8cf58e8bf 100644
> --- a/drivers/i2c/busses/i2c-pca-isa.c
> +++ b/drivers/i2c/busses/i2c-pca-isa.c
> @@ -161,7 +161,7 @@ static int pca_isa_probe(struct device *dev, unsigned int id)
>  	return -ENODEV;
>  }
>  
> -static int pca_isa_remove(struct device *dev, unsigned int id)
> +static void pca_isa_remove(struct device *dev, unsigned int id)
>  {
>  	i2c_del_adapter(&pca_isa_ops);
>  
> @@ -170,8 +170,6 @@ static int pca_isa_remove(struct device *dev, unsigned int id)
>  		free_irq(irq, &pca_isa_ops);
>  	}
>  	release_region(base, IO_SIZE);
> -
> -	return 0;
>  }
>  
>  static struct isa_driver pca_isa_driver = {
> diff --git a/drivers/input/touchscreen/htcpen.c b/drivers/input/touchscreen/htcpen.c
> index 2f261a34f9c2..056ba76087e8 100644
> --- a/drivers/input/touchscreen/htcpen.c
> +++ b/drivers/input/touchscreen/htcpen.c
> @@ -171,7 +171,7 @@ static int htcpen_isa_probe(struct device *dev, unsigned int id)
>  	return err;
>  }
>  
> -static int htcpen_isa_remove(struct device *dev, unsigned int id)
> +static void htcpen_isa_remove(struct device *dev, unsigned int id)
>  {
>  	struct input_dev *htcpen_dev = dev_get_drvdata(dev);
>  
> @@ -182,8 +182,6 @@ static int htcpen_isa_remove(struct device *dev, unsigned int id)
>  	release_region(HTCPEN_PORT_INDEX, 2);
>  	release_region(HTCPEN_PORT_INIT, 1);
>  	release_region(HTCPEN_PORT_IRQ_CLEAR, 1);
> -
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/drivers/media/radio/radio-isa.c b/drivers/media/radio/radio-isa.c
> index 527f4c3b0ca4..c591c0851fa2 100644
> --- a/drivers/media/radio/radio-isa.c
> +++ b/drivers/media/radio/radio-isa.c
> @@ -337,13 +337,11 @@ int radio_isa_probe(struct device *pdev, unsigned int dev)
>  }
>  EXPORT_SYMBOL_GPL(radio_isa_probe);
>  
> -int radio_isa_remove(struct device *pdev, unsigned int dev)
> +void radio_isa_remove(struct device *pdev, unsigned int dev)
>  {
>  	struct radio_isa_card *isa = dev_get_drvdata(pdev);
>  
>  	radio_isa_common_remove(isa, isa->drv->region_size);
> -
> -	return 0;
>  }
>  EXPORT_SYMBOL_GPL(radio_isa_remove);
>  
> diff --git a/drivers/media/radio/radio-isa.h b/drivers/media/radio/radio-isa.h
> index 2f0736edfda8..c9159958203e 100644
> --- a/drivers/media/radio/radio-isa.h
> +++ b/drivers/media/radio/radio-isa.h
> @@ -91,7 +91,7 @@ struct radio_isa_driver {
>  
>  int radio_isa_match(struct device *pdev, unsigned int dev);
>  int radio_isa_probe(struct device *pdev, unsigned int dev);
> -int radio_isa_remove(struct device *pdev, unsigned int dev);
> +void radio_isa_remove(struct device *pdev, unsigned int dev);
>  #ifdef CONFIG_PNP
>  int radio_isa_pnp_probe(struct pnp_dev *dev,
>  			const struct pnp_device_id *dev_id);
> diff --git a/drivers/media/radio/radio-sf16fmr2.c b/drivers/media/radio/radio-sf16fmr2.c
> index 0388894cfe41..d0dde55b7930 100644
> --- a/drivers/media/radio/radio-sf16fmr2.c
> +++ b/drivers/media/radio/radio-sf16fmr2.c
> @@ -293,11 +293,9 @@ static void fmr2_remove(struct fmr2 *fmr2)
>  	kfree(fmr2);
>  }
>  
> -static int fmr2_isa_remove(struct device *pdev, unsigned int ndev)
> +static void fmr2_isa_remove(struct device *pdev, unsigned int ndev)
>  {
>  	fmr2_remove(dev_get_drvdata(pdev));
> -
> -	return 0;
>  }
>  
>  static void fmr2_pnp_remove(struct pnp_dev *pdev)
> diff --git a/drivers/net/can/sja1000/tscan1.c b/drivers/net/can/sja1000/tscan1.c
> index 6ea802c66124..3dbba8d61afb 100644
> --- a/drivers/net/can/sja1000/tscan1.c
> +++ b/drivers/net/can/sja1000/tscan1.c
> @@ -159,7 +159,7 @@ static int tscan1_probe(struct device *dev, unsigned id)
>  	return -ENXIO;
>  }
>  
> -static int tscan1_remove(struct device *dev, unsigned id /*unused*/)
> +static void tscan1_remove(struct device *dev, unsigned id /*unused*/)
>  {
>  	struct net_device *netdev;
>  	struct sja1000_priv *priv;
> @@ -179,8 +179,6 @@ static int tscan1_remove(struct device *dev, unsigned id /*unused*/)
>  	release_region(pld_base, TSCAN1_PLD_SIZE);
>  
>  	free_sja1000dev(netdev);
> -
> -	return 0;
>  }
>  
>  static struct isa_driver tscan1_isa_driver = {
> diff --git a/drivers/net/ethernet/3com/3c509.c b/drivers/net/ethernet/3com/3c509.c
> index 667f38c9e4c6..53e1f7e07959 100644
> --- a/drivers/net/ethernet/3com/3c509.c
> +++ b/drivers/net/ethernet/3com/3c509.c
> @@ -335,12 +335,11 @@ static int el3_isa_match(struct device *pdev, unsigned int ndev)
>  	return 1;
>  }
>  
> -static int el3_isa_remove(struct device *pdev,
> +static void el3_isa_remove(struct device *pdev,
>  				    unsigned int ndev)
>  {
>  	el3_device_remove(pdev);
>  	dev_set_drvdata(pdev, NULL);
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
> index 79830e77afa9..b1e97f75b0ba 100644
> --- a/drivers/scsi/advansys.c
> +++ b/drivers/scsi/advansys.c
> @@ -11459,12 +11459,11 @@ static int advansys_isa_probe(struct device *dev, unsigned int id)
>  	return err;
>  }
>  
> -static int advansys_isa_remove(struct device *dev, unsigned int id)
> +static void advansys_isa_remove(struct device *dev, unsigned int id)
>  {
>  	int ioport = _asc_def_iop_base[id];
>  	advansys_release(dev_get_drvdata(dev));
>  	release_region(ioport, ASC_IOADR_GAP);
> -	return 0;
>  }
>  
>  static struct isa_driver advansys_isa_driver = {
> diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
> index dc5667afeb27..e0d8cca1c70b 100644
> --- a/drivers/scsi/aha1542.c
> +++ b/drivers/scsi/aha1542.c
> @@ -1025,12 +1025,11 @@ static int aha1542_isa_match(struct device *pdev, unsigned int ndev)
>  	return 1;
>  }
>  
> -static int aha1542_isa_remove(struct device *pdev,
> +static void aha1542_isa_remove(struct device *pdev,
>  				    unsigned int ndev)
>  {
>  	aha1542_release(dev_get_drvdata(pdev));
>  	dev_set_drvdata(pdev, NULL);
> -	return 0;
>  }
>  
>  static struct isa_driver aha1542_isa_driver = {
> diff --git a/drivers/scsi/fdomain_isa.c b/drivers/scsi/fdomain_isa.c
> index e0cdcd2003d0..2b4280a43a53 100644
> --- a/drivers/scsi/fdomain_isa.c
> +++ b/drivers/scsi/fdomain_isa.c
> @@ -175,7 +175,7 @@ static int fdomain_isa_param_match(struct device *dev, unsigned int ndev)
>  	return 1;
>  }
>  
> -static int fdomain_isa_remove(struct device *dev, unsigned int ndev)
> +static void fdomain_isa_remove(struct device *dev, unsigned int ndev)
>  {
>  	struct Scsi_Host *sh = dev_get_drvdata(dev);
>  	int base = sh->io_port;
> @@ -183,7 +183,6 @@ static int fdomain_isa_remove(struct device *dev, unsigned int ndev)
>  	fdomain_destroy(sh);
>  	release_region(base, FDOMAIN_REGION_SIZE);
>  	dev_set_drvdata(dev, NULL);
> -	return 0;
>  }
>  
>  static struct isa_driver fdomain_isa_driver = {
> diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c
> index 2df2f38a9b12..7ba3c9312731 100644
> --- a/drivers/scsi/g_NCR5380.c
> +++ b/drivers/scsi/g_NCR5380.c
> @@ -720,12 +720,11 @@ static int generic_NCR5380_isa_match(struct device *pdev, unsigned int ndev)
>  	return 1;
>  }
>  
> -static int generic_NCR5380_isa_remove(struct device *pdev,
> -                                      unsigned int ndev)
> +static void generic_NCR5380_isa_remove(struct device *pdev,
> +				       unsigned int ndev)
>  {
>  	generic_NCR5380_release_resources(dev_get_drvdata(pdev));
>  	dev_set_drvdata(pdev, NULL);
> -	return 0;
>  }
>  
>  static struct isa_driver generic_NCR5380_isa_driver = {
> diff --git a/drivers/watchdog/pcwd.c b/drivers/watchdog/pcwd.c
> index b95cd38f3ceb..a793b03a785d 100644
> --- a/drivers/watchdog/pcwd.c
> +++ b/drivers/watchdog/pcwd.c
> @@ -951,7 +951,7 @@ static int pcwd_isa_probe(struct device *dev, unsigned int id)
>  	return ret;
>  }
>  
> -static int pcwd_isa_remove(struct device *dev, unsigned int id)
> +static void pcwd_isa_remove(struct device *dev, unsigned int id)
>  {
>  	if (debug >= DEBUG)
>  		pr_debug("pcwd_isa_remove id=%d\n", id);
> @@ -968,8 +968,6 @@ static int pcwd_isa_remove(struct device *dev, unsigned int id)
>  			(pcwd_private.revision == PCWD_REVISION_A) ? 2 : 4);
>  	pcwd_private.io_addr = 0x0000;
>  	cards_found--;
> -
> -	return 0;
>  }
>  
>  static void pcwd_isa_shutdown(struct device *dev, unsigned int id)
> diff --git a/include/linux/isa.h b/include/linux/isa.h
> index 41336da0f4e7..e30963190968 100644
> --- a/include/linux/isa.h
> +++ b/include/linux/isa.h
> @@ -13,7 +13,7 @@
>  struct isa_driver {
>  	int (*match)(struct device *, unsigned int);
>  	int (*probe)(struct device *, unsigned int);
> -	int (*remove)(struct device *, unsigned int);
> +	void (*remove)(struct device *, unsigned int);
>  	void (*shutdown)(struct device *, unsigned int);
>  	int (*suspend)(struct device *, unsigned int, pm_message_t);
>  	int (*resume)(struct device *, unsigned int);
> diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c
> index 593c6e959afe..48f7cc57c3da 100644
> --- a/sound/isa/ad1848/ad1848.c
> +++ b/sound/isa/ad1848/ad1848.c
> @@ -118,10 +118,9 @@ out:	snd_card_free(card);
>  	return error;
>  }
>  
> -static int snd_ad1848_remove(struct device *dev, unsigned int n)
> +static void snd_ad1848_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/adlib.c b/sound/isa/adlib.c
> index 5105524b6f38..e6cd7c4da38e 100644
> --- a/sound/isa/adlib.c
> +++ b/sound/isa/adlib.c
> @@ -97,10 +97,9 @@ out:	snd_card_free(card);
>  	return error;
>  }
>  
> -static int snd_adlib_remove(struct device *dev, unsigned int n)
> +static void snd_adlib_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_adlib_driver = {
> diff --git a/sound/isa/cmi8328.c b/sound/isa/cmi8328.c
> index faca5dd95bfe..3b9fbb02864b 100644
> --- a/sound/isa/cmi8328.c
> +++ b/sound/isa/cmi8328.c
> @@ -403,7 +403,7 @@ static int snd_cmi8328_probe(struct device *pdev, unsigned int ndev)
>  	return err;
>  }
>  
> -static int snd_cmi8328_remove(struct device *pdev, unsigned int dev)
> +static void snd_cmi8328_remove(struct device *pdev, unsigned int dev)
>  {
>  	struct snd_card *card = dev_get_drvdata(pdev);
>  	struct snd_cmi8328 *cmi = card->private_data;
> @@ -420,7 +420,6 @@ static int snd_cmi8328_remove(struct device *pdev, unsigned int dev)
>  	snd_cmi8328_cfg_write(cmi->port, CFG2, 0);
>  	snd_cmi8328_cfg_write(cmi->port, CFG3, 0);
>  	snd_card_free(card);
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
> index 4669eb0cc8ce..19e258527d69 100644
> --- a/sound/isa/cmi8330.c
> +++ b/sound/isa/cmi8330.c
> @@ -631,11 +631,10 @@ static int snd_cmi8330_isa_probe(struct device *pdev,
>  	return 0;
>  }
>  
> -static int snd_cmi8330_isa_remove(struct device *devptr,
> +static void snd_cmi8330_isa_remove(struct device *devptr,
>  				  unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c
> index 2135963eba78..383ee621cea1 100644
> --- a/sound/isa/cs423x/cs4231.c
> +++ b/sound/isa/cs423x/cs4231.c
> @@ -135,10 +135,9 @@ out:	snd_card_free(card);
>  	return error;
>  }
>  
> -static int snd_cs4231_remove(struct device *dev, unsigned int n)
> +static void snd_cs4231_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
> index fa3c39cff5f8..24688271e73f 100644
> --- a/sound/isa/cs423x/cs4236.c
> +++ b/sound/isa/cs423x/cs4236.c
> @@ -487,11 +487,10 @@ static int snd_cs423x_isa_probe(struct device *pdev,
>  	return 0;
>  }
>  
> -static int snd_cs423x_isa_remove(struct device *pdev,
> +static void snd_cs423x_isa_remove(struct device *pdev,
>  				 unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(pdev));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
> index 64610571a5e1..d99bb3f8f0c1 100644
> --- a/sound/isa/es1688/es1688.c
> +++ b/sound/isa/es1688/es1688.c
> @@ -192,10 +192,9 @@ static int snd_es1688_isa_probe(struct device *dev, unsigned int n)
>  	return error;
>  }
>  
> -static int snd_es1688_isa_remove(struct device *dev, unsigned int n)
> +static void snd_es1688_isa_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_es1688_driver = {
> diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
> index 5f8d7e8a5477..9beef8079177 100644
> --- a/sound/isa/es18xx.c
> +++ b/sound/isa/es18xx.c
> @@ -2210,11 +2210,10 @@ static int snd_es18xx_isa_probe(struct device *pdev, unsigned int dev)
>  	}
>  }
>  
> -static int snd_es18xx_isa_remove(struct device *devptr,
> -				 unsigned int dev)
> +static void snd_es18xx_isa_remove(struct device *devptr,
> +				  unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/galaxy/galaxy.c b/sound/isa/galaxy/galaxy.c
> index 65f9f46c9f58..d33d69f29924 100644
> --- a/sound/isa/galaxy/galaxy.c
> +++ b/sound/isa/galaxy/galaxy.c
> @@ -608,10 +608,9 @@ static int snd_galaxy_probe(struct device *dev, unsigned int n)
>  	return err;
>  }
>  
> -static int snd_galaxy_remove(struct device *dev, unsigned int n)
> +static void snd_galaxy_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_galaxy_driver = {
> diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c
> index 7419b1939754..015f88a11352 100644
> --- a/sound/isa/gus/gusclassic.c
> +++ b/sound/isa/gus/gusclassic.c
> @@ -195,10 +195,9 @@ out:	snd_card_free(card);
>  	return error;
>  }
>  
> -static int snd_gusclassic_remove(struct device *dev, unsigned int n)
> +static void snd_gusclassic_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_gusclassic_driver = {
> diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
> index ed2f9d64efae..c9f31b4fb887 100644
> --- a/sound/isa/gus/gusextreme.c
> +++ b/sound/isa/gus/gusextreme.c
> @@ -324,10 +324,9 @@ out:	snd_card_free(card);
>  	return error;
>  }
>  
> -static int snd_gusextreme_remove(struct device *dev, unsigned int n)
> +static void snd_gusextreme_remove(struct device *dev, unsigned int n)
>  {
>  	snd_card_free(dev_get_drvdata(dev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_gusextreme_driver = {
> diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
> index 05cd9be4dd8a..dc09fbd6f88d 100644
> --- a/sound/isa/gus/gusmax.c
> +++ b/sound/isa/gus/gusmax.c
> @@ -338,10 +338,9 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
>  	return err;
>  }
>  
> -static int snd_gusmax_remove(struct device *devptr, unsigned int dev)
> +static void snd_gusmax_remove(struct device *devptr, unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #define DEV_NAME "gusmax"
> diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
> index 3e9ad930deae..e4d412e72b75 100644
> --- a/sound/isa/gus/interwave.c
> +++ b/sound/isa/gus/interwave.c
> @@ -825,10 +825,9 @@ static int snd_interwave_isa_probe(struct device *pdev,
>  	}
>  }
>  
> -static int snd_interwave_isa_remove(struct device *devptr, unsigned int dev)
> +static void snd_interwave_isa_remove(struct device *devptr, unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_interwave_driver = {
> diff --git a/sound/isa/msnd/msnd_pinnacle.c b/sound/isa/msnd/msnd_pinnacle.c
> index 24b34ecf5e5b..69647b41300d 100644
> --- a/sound/isa/msnd/msnd_pinnacle.c
> +++ b/sound/isa/msnd/msnd_pinnacle.c
> @@ -1049,10 +1049,9 @@ static int snd_msnd_isa_probe(struct device *pdev, unsigned int idx)
>  #endif
>  }
>  
> -static int snd_msnd_isa_remove(struct device *pdev, unsigned int dev)
> +static void snd_msnd_isa_remove(struct device *pdev, unsigned int dev)
>  {
>  	snd_msnd_unload(dev_get_drvdata(pdev));
> -	return 0;
>  }
>  
>  static struct isa_driver snd_msnd_driver = {
> diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
> index 85a181acd388..7649a8a4128d 100644
> --- a/sound/isa/opl3sa2.c
> +++ b/sound/isa/opl3sa2.c
> @@ -878,11 +878,10 @@ static int snd_opl3sa2_isa_probe(struct device *pdev,
>  	return 0;
>  }
>  
> -static int snd_opl3sa2_isa_remove(struct device *devptr,
> +static void snd_opl3sa2_isa_remove(struct device *devptr,
>  				  unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/opti9xx/miro.c b/sound/isa/opti9xx/miro.c
> index 44ed1b65f6ce..20933342f5eb 100644
> --- a/sound/isa/opti9xx/miro.c
> +++ b/sound/isa/opti9xx/miro.c
> @@ -1480,11 +1480,10 @@ static int snd_miro_isa_probe(struct device *devptr, unsigned int n)
>  	return 0;
>  }
>  
> -static int snd_miro_isa_remove(struct device *devptr,
> +static void snd_miro_isa_remove(struct device *devptr,
>  			       unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #define DEV_NAME "miro"
> diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
> index 881d3b5711d2..758f5b579138 100644
> --- a/sound/isa/opti9xx/opti92x-ad1848.c
> +++ b/sound/isa/opti9xx/opti92x-ad1848.c
> @@ -1024,11 +1024,10 @@ static int snd_opti9xx_isa_probe(struct device *devptr,
>  	return 0;
>  }
>  
> -static int snd_opti9xx_isa_remove(struct device *devptr,
> -				  unsigned int dev)
> +static void snd_opti9xx_isa_remove(struct device *devptr,
> +				   unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/sb/jazz16.c b/sound/isa/sb/jazz16.c
> index ee379bbf70a4..0e2e0ab3b9e4 100644
> --- a/sound/isa/sb/jazz16.c
> +++ b/sound/isa/sb/jazz16.c
> @@ -339,12 +339,11 @@ static int snd_jazz16_probe(struct device *devptr, unsigned int dev)
>  	return err;
>  }
>  
> -static int snd_jazz16_remove(struct device *devptr, unsigned int dev)
> +static void snd_jazz16_remove(struct device *devptr, unsigned int dev)
>  {
>  	struct snd_card *card = dev_get_drvdata(devptr);
>  
>  	snd_card_free(card);
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
> index 479197c13803..db284b7b88a7 100644
> --- a/sound/isa/sb/sb16.c
> +++ b/sound/isa/sb/sb16.c
> @@ -547,10 +547,9 @@ static int snd_sb16_isa_probe(struct device *pdev, unsigned int dev)
>  	}
>  }
>  
> -static int snd_sb16_isa_remove(struct device *pdev, unsigned int dev)
> +static void snd_sb16_isa_remove(struct device *pdev, unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(pdev));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
> index 438109f167d6..8e3e67b9a341 100644
> --- a/sound/isa/sb/sb8.c
> +++ b/sound/isa/sb/sb8.c
> @@ -192,10 +192,9 @@ static int snd_sb8_probe(struct device *pdev, unsigned int dev)
>  	return err;
>  }
>  
> -static int snd_sb8_remove(struct device *pdev, unsigned int dev)
> +static void snd_sb8_remove(struct device *pdev, unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(pdev));
> -	return 0;
>  }
>  
>  #ifdef CONFIG_PM
> diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c
> index 3d0bea44f454..def137579717 100644
> --- a/sound/isa/sc6000.c
> +++ b/sound/isa/sc6000.c
> @@ -672,7 +672,7 @@ static int snd_sc6000_probe(struct device *devptr, unsigned int dev)
>  	return err;
>  }
>  
> -static int snd_sc6000_remove(struct device *devptr, unsigned int dev)
> +static void snd_sc6000_remove(struct device *devptr, unsigned int dev)
>  {
>  	struct snd_card *card = dev_get_drvdata(devptr);
>  	char __iomem **vport = card->private_data;
> @@ -684,7 +684,6 @@ static int snd_sc6000_remove(struct device *devptr, unsigned int dev)
>  	release_region(mss_port[dev], 4);
>  
>  	snd_card_free(card);
> -	return 0;
>  }
>  
>  static struct isa_driver snd_sc6000_driver = {
> diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
> index 2e5a5c5279e8..e70ef9aee545 100644
> --- a/sound/isa/sscape.c
> +++ b/sound/isa/sscape.c
> @@ -1183,10 +1183,9 @@ static int snd_sscape_probe(struct device *pdev, unsigned int dev)
>  	return ret;
>  }
>  
> -static int snd_sscape_remove(struct device *devptr, unsigned int dev)
> +static void snd_sscape_remove(struct device *devptr, unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #define DEV_NAME "sscape"
> diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
> index 9e0f6b226775..b750a4fd40de 100644
> --- a/sound/isa/wavefront/wavefront.c
> +++ b/sound/isa/wavefront/wavefront.c
> @@ -565,11 +565,10 @@ static int snd_wavefront_isa_probe(struct device *pdev,
>  	return 0;
>  }
>  
> -static int snd_wavefront_isa_remove(struct device *devptr,
> +static void snd_wavefront_isa_remove(struct device *devptr,
>  				    unsigned int dev)
>  {
>  	snd_card_free(dev_get_drvdata(devptr));
> -	return 0;
>  }
>  
>  #define DEV_NAME "wavefront"
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void
  2021-01-22  9:24 [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
  2021-01-22  9:24 ` [PATCH v2 1/3] watchdog: pcwd: drop always-false if from remove callback Uwe Kleine-König
  2021-01-22  9:24 ` [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
@ 2021-01-26  6:55 ` Takashi Iwai
  2 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2021-01-26  6:55 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Wim Van Sebroeck, Guenter Roeck, William Breathitt Gray,
	Greg Kroah-Hartman, Rafael J. Wysocki, Pau Oliva Fora,
	Dmitry Torokhov, Mauro Carvalho Chehab, Wolfgang Grandegger,
	Marc Kleine-Budde, David S. Miller, Jakub Kicinski,
	Matthew Wilcox, Hannes Reinecke, James E.J. Bottomley,
	Martin K. Petersen, Finn Thain, Michael Schmitz, Jaroslav Kysela,
	Takashi Iwai, Hans Verkuil, linux-watchdog, linux-kernel,
	linux-i2c, linux-input, linux-media, linux-can, netdev,
	linux-scsi, alsa-devel

On Fri, 22 Jan 2021 10:24:46 +0100,
Uwe Kleine-König wrote:
> 
> Hello,
> 
> changes since v1
> (https://lore.kernel.org/r/20210121204812.402589-1-uwe@kleine-koenig.org):
>  - fix build failure, found by the kernel test robot
>    (my grep missed the struct isa_driver embedded in struct
>    radio_isa_driver). For this I introduced patch 2 and adapted patch 3
>    a bit. An interdiff is below.
>  - Added Acks/Reviews by Guenter Roeck, William Breathitt Gray, Marc
>    Kleine-Budde, Wolfram Sang and Takashi Iwai <tiwai@suse.de>
> 
> The base-commit I specified (by hand *sigh*) in v1 was broken, must be a
> cut-n-paste-error, sorry for that.
> 
> Takashi suggested to take this series via sound.git given that this is
> the most affected tree. This is fine for me. Otherwise I can also
> provide an immutable branch. For both variants we still need a few acks
> though.

Now I applied all three patches to my sound.git tree.
It's found in isa-void-remove-callback signed tag, in case anyone else
wants to merge in.  The branch is based on 5.11-rc4.

git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/isa-void-remove-callback


thanks,

Takashi

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22  9:24 [PATCH v2 0/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
2021-01-22  9:24 ` [PATCH v2 1/3] watchdog: pcwd: drop always-false if from remove callback Uwe Kleine-König
2021-01-22  9:24 ` [PATCH v2 3/3] isa: Make the remove callback for isa drivers return void Uwe Kleine-König
2021-01-25  9:52   ` Hans Verkuil
2021-01-26  6:55 ` [PATCH v2 0/3] " Takashi Iwai

Linux-Watchdog Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-watchdog/0 linux-watchdog/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-watchdog linux-watchdog/ https://lore.kernel.org/linux-watchdog \
		linux-watchdog@vger.kernel.org
	public-inbox-index linux-watchdog

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-watchdog


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git