All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] HID: Convert to platform remove callback returning void
@ 2024-03-06 17:50 Uwe Kleine-König
  2024-03-06 17:50 ` [PATCH 1/3] HID: google: hammer: " Uwe Kleine-König
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2024-03-06 17:50 UTC (permalink / raw
  To: Jiri Kosina, Benjamin Tissoires
  Cc: linux-input, kernel, Jonathan Cameron, Srinivas Pandruvada,
	linux-iio, Maximilian Luz, platform-driver-x86

Hello,

this series converts all platform drivers below drivers/hid to use
struct platform_driver::remove_new(). See commit 5c5a7680e67b
("platform: Provide a remove callback that returns no value") for an
extended explanation and the eventual goal.

All conversations are trivial, because their .remove() callbacks
returned zero unconditionally.

There are no interdependencies between these patches, so they could be
picked up individually. But I'd hope that they get picked up all
together.

Best regards
Uwe

Uwe Kleine-König (3):
  HID: google: hammer: Convert to platform remove callback returning void
  HID: hid-sensor-custom: Convert to platform remove callback returning void
  HID: surface-hid: kbd: Convert to platform remove callback returning void

 drivers/hid/hid-google-hammer.c       | 5 ++---
 drivers/hid/hid-sensor-custom.c       | 8 +++-----
 drivers/hid/surface-hid/surface_kbd.c | 5 ++---
 3 files changed, 7 insertions(+), 11 deletions(-)

base-commit: 11afac187274a6177a7ac82997f8691c0f469e41
-- 
2.43.0


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

* [PATCH 1/3] HID: google: hammer: Convert to platform remove callback returning void
  2024-03-06 17:50 [PATCH 0/3] HID: Convert to platform remove callback returning void Uwe Kleine-König
@ 2024-03-06 17:50 ` Uwe Kleine-König
  2024-03-06 17:50 ` [PATCH 2/3] HID: hid-sensor-custom: " Uwe Kleine-König
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2024-03-06 17:50 UTC (permalink / raw
  To: Jiri Kosina, Benjamin Tissoires; +Cc: linux-input, kernel

The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.

To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new(), which already returns void. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/hid/hid-google-hammer.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/hid-google-hammer.c b/drivers/hid/hid-google-hammer.c
index c6bdb9c4ef3e..25331695ae32 100644
--- a/drivers/hid/hid-google-hammer.c
+++ b/drivers/hid/hid-google-hammer.c
@@ -255,7 +255,7 @@ static int cbas_ec_probe(struct platform_device *pdev)
 	return retval;
 }
 
-static int cbas_ec_remove(struct platform_device *pdev)
+static void cbas_ec_remove(struct platform_device *pdev)
 {
 	struct cros_ec_device *ec = dev_get_drvdata(pdev->dev.parent);
 
@@ -266,7 +266,6 @@ static int cbas_ec_remove(struct platform_device *pdev)
 	cbas_ec_set_input(NULL);
 
 	mutex_unlock(&cbas_ec_reglock);
-	return 0;
 }
 
 static const struct acpi_device_id cbas_ec_acpi_ids[] = {
@@ -285,7 +284,7 @@ MODULE_DEVICE_TABLE(of, cbas_ec_of_match);
 
 static struct platform_driver cbas_ec_driver = {
 	.probe = cbas_ec_probe,
-	.remove = cbas_ec_remove,
+	.remove_new = cbas_ec_remove,
 	.driver = {
 		.name = "cbas_ec",
 		.acpi_match_table = ACPI_PTR(cbas_ec_acpi_ids),
-- 
2.43.0


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

* [PATCH 2/3] HID: hid-sensor-custom: Convert to platform remove callback returning void
  2024-03-06 17:50 [PATCH 0/3] HID: Convert to platform remove callback returning void Uwe Kleine-König
  2024-03-06 17:50 ` [PATCH 1/3] HID: google: hammer: " Uwe Kleine-König
@ 2024-03-06 17:50 ` Uwe Kleine-König
  2024-03-06 18:40   ` srinivas pandruvada
  2024-03-09 18:40   ` Jonathan Cameron
  2024-03-06 17:50 ` [PATCH 3/3] HID: surface-hid: kbd: " Uwe Kleine-König
  2024-04-03 11:23 ` [PATCH 0/3] HID: " Jiri Kosina
  3 siblings, 2 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2024-03-06 17:50 UTC (permalink / raw
  To: Jiri Kosina, Benjamin Tissoires
  Cc: Jonathan Cameron, Srinivas Pandruvada, linux-input, linux-iio,
	kernel

The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.

To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new(), which already returns void. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/hid/hid-sensor-custom.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c
index d85398721659..de7287f3af61 100644
--- a/drivers/hid/hid-sensor-custom.c
+++ b/drivers/hid/hid-sensor-custom.c
@@ -1032,14 +1032,14 @@ static int hid_sensor_custom_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int hid_sensor_custom_remove(struct platform_device *pdev)
+static void hid_sensor_custom_remove(struct platform_device *pdev)
 {
 	struct hid_sensor_custom *sensor_inst = platform_get_drvdata(pdev);
 	struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
 
 	if (sensor_inst->custom_pdev) {
 		platform_device_unregister(sensor_inst->custom_pdev);
-		return 0;
+		return;
 	}
 
 	hid_sensor_custom_dev_if_remove(sensor_inst);
@@ -1047,8 +1047,6 @@ static int hid_sensor_custom_remove(struct platform_device *pdev)
 	sysfs_remove_group(&sensor_inst->pdev->dev.kobj,
 			   &enable_sensor_attr_group);
 	sensor_hub_remove_callback(hsdev, hsdev->usage);
-
-	return 0;
 }
 
 static const struct platform_device_id hid_sensor_custom_ids[] = {
@@ -1068,7 +1066,7 @@ static struct platform_driver hid_sensor_custom_platform_driver = {
 		.name	= KBUILD_MODNAME,
 	},
 	.probe		= hid_sensor_custom_probe,
-	.remove		= hid_sensor_custom_remove,
+	.remove_new	= hid_sensor_custom_remove,
 };
 module_platform_driver(hid_sensor_custom_platform_driver);
 
-- 
2.43.0


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

* [PATCH 3/3] HID: surface-hid: kbd: Convert to platform remove callback returning void
  2024-03-06 17:50 [PATCH 0/3] HID: Convert to platform remove callback returning void Uwe Kleine-König
  2024-03-06 17:50 ` [PATCH 1/3] HID: google: hammer: " Uwe Kleine-König
  2024-03-06 17:50 ` [PATCH 2/3] HID: hid-sensor-custom: " Uwe Kleine-König
@ 2024-03-06 17:50 ` Uwe Kleine-König
  2024-03-09  0:53   ` Maximilian Luz
  2024-04-03 11:23 ` [PATCH 0/3] HID: " Jiri Kosina
  3 siblings, 1 reply; 8+ messages in thread
From: Uwe Kleine-König @ 2024-03-06 17:50 UTC (permalink / raw
  To: Jiri Kosina, Benjamin Tissoires
  Cc: Maximilian Luz, linux-input, platform-driver-x86, kernel

The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.

To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new(), which already returns void. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/hid/surface-hid/surface_kbd.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
index 4fbce201db6a..8c0cbb2deb11 100644
--- a/drivers/hid/surface-hid/surface_kbd.c
+++ b/drivers/hid/surface-hid/surface_kbd.c
@@ -271,10 +271,9 @@ static int surface_kbd_probe(struct platform_device *pdev)
 	return surface_hid_device_add(shid);
 }
 
-static int surface_kbd_remove(struct platform_device *pdev)
+static void surface_kbd_remove(struct platform_device *pdev)
 {
 	surface_hid_device_destroy(platform_get_drvdata(pdev));
-	return 0;
 }
 
 static const struct acpi_device_id surface_kbd_match[] = {
@@ -285,7 +284,7 @@ MODULE_DEVICE_TABLE(acpi, surface_kbd_match);
 
 static struct platform_driver surface_kbd_driver = {
 	.probe = surface_kbd_probe,
-	.remove = surface_kbd_remove,
+	.remove_new = surface_kbd_remove,
 	.driver = {
 		.name = "surface_keyboard",
 		.acpi_match_table = surface_kbd_match,
-- 
2.43.0


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

* Re: [PATCH 2/3] HID: hid-sensor-custom: Convert to platform remove callback returning void
  2024-03-06 17:50 ` [PATCH 2/3] HID: hid-sensor-custom: " Uwe Kleine-König
@ 2024-03-06 18:40   ` srinivas pandruvada
  2024-03-09 18:40   ` Jonathan Cameron
  1 sibling, 0 replies; 8+ messages in thread
From: srinivas pandruvada @ 2024-03-06 18:40 UTC (permalink / raw
  To: Uwe Kleine-König, Jiri Kosina, Benjamin Tissoires
  Cc: Jonathan Cameron, linux-input, linux-iio, kernel

On Wed, 2024-03-06 at 18:50 +0100, Uwe Kleine-König wrote:
> The .remove() callback for a platform driver returns an int which
> makes
> many driver authors wrongly assume it's possible to do error handling
> by
> returning an error code. However the value returned is ignored (apart
> from emitting a warning) and this typically results in resource
> leaks.
> 
> To improve here there is a quest to make the remove callback return
> void. In the first step of this quest all drivers are converted to
> .remove_new(), which already returns void. Eventually after all
> drivers
> are converted, .remove_new() will be renamed to .remove().
> 
> Trivially convert this driver from always returning zero in the
> remove
> callback to the void returning variant.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>


> ---
>  drivers/hid/hid-sensor-custom.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-
> sensor-custom.c
> index d85398721659..de7287f3af61 100644
> --- a/drivers/hid/hid-sensor-custom.c
> +++ b/drivers/hid/hid-sensor-custom.c
> @@ -1032,14 +1032,14 @@ static int hid_sensor_custom_probe(struct
> platform_device *pdev)
>         return ret;
>  }
>  
> -static int hid_sensor_custom_remove(struct platform_device *pdev)
> +static void hid_sensor_custom_remove(struct platform_device *pdev)
>  {
>         struct hid_sensor_custom *sensor_inst =
> platform_get_drvdata(pdev);
>         struct hid_sensor_hub_device *hsdev = pdev-
> >dev.platform_data;
>  
>         if (sensor_inst->custom_pdev) {
>                 platform_device_unregister(sensor_inst->custom_pdev);
> -               return 0;
> +               return;
>         }
>  
>         hid_sensor_custom_dev_if_remove(sensor_inst);
> @@ -1047,8 +1047,6 @@ static int hid_sensor_custom_remove(struct
> platform_device *pdev)
>         sysfs_remove_group(&sensor_inst->pdev->dev.kobj,
>                            &enable_sensor_attr_group);
>         sensor_hub_remove_callback(hsdev, hsdev->usage);
> -
> -       return 0;
>  }
>  
>  static const struct platform_device_id hid_sensor_custom_ids[] = {
> @@ -1068,7 +1066,7 @@ static struct platform_driver
> hid_sensor_custom_platform_driver = {
>                 .name   = KBUILD_MODNAME,
>         },
>         .probe          = hid_sensor_custom_probe,
> -       .remove         = hid_sensor_custom_remove,
> +       .remove_new     = hid_sensor_custom_remove,
>  };
>  module_platform_driver(hid_sensor_custom_platform_driver);
>  


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

* Re: [PATCH 3/3] HID: surface-hid: kbd: Convert to platform remove callback returning void
  2024-03-06 17:50 ` [PATCH 3/3] HID: surface-hid: kbd: " Uwe Kleine-König
@ 2024-03-09  0:53   ` Maximilian Luz
  0 siblings, 0 replies; 8+ messages in thread
From: Maximilian Luz @ 2024-03-09  0:53 UTC (permalink / raw
  To: Uwe Kleine-König, Jiri Kosina, Benjamin Tissoires
  Cc: linux-input, platform-driver-x86, kernel

On 3/6/24 18:50, Uwe Kleine-König wrote:
> The .remove() callback for a platform driver returns an int which makes
> many driver authors wrongly assume it's possible to do error handling by
> returning an error code. However the value returned is ignored (apart
> from emitting a warning) and this typically results in resource leaks.
> 
> To improve here there is a quest to make the remove callback return
> void. In the first step of this quest all drivers are converted to
> .remove_new(), which already returns void. Eventually after all drivers
> are converted, .remove_new() will be renamed to .remove().
> 
> Trivially convert this driver from always returning zero in the remove
> callback to the void returning variant.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Looks good to me.

Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com>

> ---
>   drivers/hid/surface-hid/surface_kbd.c | 5 ++---
>   1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
> index 4fbce201db6a..8c0cbb2deb11 100644
> --- a/drivers/hid/surface-hid/surface_kbd.c
> +++ b/drivers/hid/surface-hid/surface_kbd.c
> @@ -271,10 +271,9 @@ static int surface_kbd_probe(struct platform_device *pdev)
>   	return surface_hid_device_add(shid);
>   }
>   
> -static int surface_kbd_remove(struct platform_device *pdev)
> +static void surface_kbd_remove(struct platform_device *pdev)
>   {
>   	surface_hid_device_destroy(platform_get_drvdata(pdev));
> -	return 0;
>   }
>   
>   static const struct acpi_device_id surface_kbd_match[] = {
> @@ -285,7 +284,7 @@ MODULE_DEVICE_TABLE(acpi, surface_kbd_match);
>   
>   static struct platform_driver surface_kbd_driver = {
>   	.probe = surface_kbd_probe,
> -	.remove = surface_kbd_remove,
> +	.remove_new = surface_kbd_remove,
>   	.driver = {
>   		.name = "surface_keyboard",
>   		.acpi_match_table = surface_kbd_match,

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

* Re: [PATCH 2/3] HID: hid-sensor-custom: Convert to platform remove callback returning void
  2024-03-06 17:50 ` [PATCH 2/3] HID: hid-sensor-custom: " Uwe Kleine-König
  2024-03-06 18:40   ` srinivas pandruvada
@ 2024-03-09 18:40   ` Jonathan Cameron
  1 sibling, 0 replies; 8+ messages in thread
From: Jonathan Cameron @ 2024-03-09 18:40 UTC (permalink / raw
  To: Uwe Kleine-König
  Cc: Jiri Kosina, Benjamin Tissoires, Srinivas Pandruvada, linux-input,
	linux-iio, kernel

On Wed,  6 Mar 2024 18:50:49 +0100
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:

> The .remove() callback for a platform driver returns an int which makes
> many driver authors wrongly assume it's possible to do error handling by
> returning an error code. However the value returned is ignored (apart
> from emitting a warning) and this typically results in resource leaks.
> 
> To improve here there is a quest to make the remove callback return
> void. In the first step of this quest all drivers are converted to
> .remove_new(), which already returns void. Eventually after all drivers
> are converted, .remove_new() will be renamed to .remove().
> 
> Trivially convert this driver from always returning zero in the remove
> callback to the void returning variant.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

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

* Re: [PATCH 0/3] HID: Convert to platform remove callback returning void
  2024-03-06 17:50 [PATCH 0/3] HID: Convert to platform remove callback returning void Uwe Kleine-König
                   ` (2 preceding siblings ...)
  2024-03-06 17:50 ` [PATCH 3/3] HID: surface-hid: kbd: " Uwe Kleine-König
@ 2024-04-03 11:23 ` Jiri Kosina
  3 siblings, 0 replies; 8+ messages in thread
From: Jiri Kosina @ 2024-04-03 11:23 UTC (permalink / raw
  To: Uwe Kleine-König
  Cc: Benjamin Tissoires, linux-input, kernel, Jonathan Cameron,
	Srinivas Pandruvada, linux-iio, Maximilian Luz,
	platform-driver-x86

On Wed, 6 Mar 2024, Uwe Kleine-König wrote:

> Hello,
> 
> this series converts all platform drivers below drivers/hid to use
> struct platform_driver::remove_new(). See commit 5c5a7680e67b
> ("platform: Provide a remove callback that returns no value") for an
> extended explanation and the eventual goal.
> 
> All conversations are trivial, because their .remove() callbacks
> returned zero unconditionally.
> 
> There are no interdependencies between these patches, so they could be
> picked up individually. But I'd hope that they get picked up all
> together.

Applied, thanks.

-- 
Jiri Kosina
SUSE Labs


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

end of thread, other threads:[~2024-04-03 11:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-06 17:50 [PATCH 0/3] HID: Convert to platform remove callback returning void Uwe Kleine-König
2024-03-06 17:50 ` [PATCH 1/3] HID: google: hammer: " Uwe Kleine-König
2024-03-06 17:50 ` [PATCH 2/3] HID: hid-sensor-custom: " Uwe Kleine-König
2024-03-06 18:40   ` srinivas pandruvada
2024-03-09 18:40   ` Jonathan Cameron
2024-03-06 17:50 ` [PATCH 3/3] HID: surface-hid: kbd: " Uwe Kleine-König
2024-03-09  0:53   ` Maximilian Luz
2024-04-03 11:23 ` [PATCH 0/3] HID: " Jiri Kosina

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.