Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1596008 > unrolled thread

[PATCH 00/14] platform/x86: remove sparse_keymap_free() calls

Started byMichał Kępień <kernel@kempniu.pl>
First post2017-03-09 13:20 +0100
Last post2017-03-13 17:20 +0100
Articles 7 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 00/14] platform/x86: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:20 +0100
    [PATCH 07/14] platform/x86: hp-wmi: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:20 +0100
    [PATCH 06/14] platform/x86: eeepc-laptop: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:20 +0100
    [PATCH 04/14] platform/x86: dell-wmi-aio: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:20 +0100
    [PATCH 10/14] platform/x86: msi-wmi: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:20 +0100
    [PATCH 14/14] platform/x86: toshiba_acpi: remove sparse_keymap_free() calls Michał Kępień <kernel@kempniu.pl> - 2017-03-09 13:30 +0100
    Re: [PATCH 00/14] platform/x86: remove sparse_keymap_free() calls Andy Shevchenko <andy.shevchenko@gmail.com> - 2017-03-13 17:20 +0100

#1596008 — [PATCH 00/14] platform/x86: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:20 +0100
Subject[PATCH 00/14] platform/x86: remove sparse_keymap_free() calls
Message-ID<tj5cZ-523-3@gated-at.bofh.it>
Hi everyone,

This patch series removes all uses of sparse_keymap_free() in the x86
platform driver subsystem due to an upcoming change in
sparse_keymap_setup() behavior wrt memory management.  Specifically,
sparse_keymap_setup() will use managed memory for the keymap copy it
creates, which enables it to be automatically freed upon input device
removal, without the need to explicitly call sparse_keymap_free().

I thought it makes sense to post all these patches as a single series.
To minimize spamming, only this cover letter is addressed to all the
maintainers whose drivers are affected by this series, while each of the
subsequent patches will only be sent to the relevant recipients, plus
the platform-driver-x86 mailing list and subsystem maintainers.

Darren, Andy, all these patches should only be applied after merging an
immutable branch called ib/4.10-sparse-keymap-managed from Dmitry
Torokhov's git tree.

 drivers/platform/x86/acer-wmi.c         |  5 +----
 drivers/platform/x86/asus-laptop.c      |  8 ++------
 drivers/platform/x86/asus-wmi.c         |  8 ++------
 drivers/platform/x86/dell-wmi-aio.c     |  6 +-----
 drivers/platform/x86/dell-wmi.c         | 16 ++++------------
 drivers/platform/x86/eeepc-laptop.c     |  8 ++------
 drivers/platform/x86/hp-wmi.c           |  5 +----
 drivers/platform/x86/ideapad-laptop.c   |  5 +----
 drivers/platform/x86/msi-laptop.c       | 14 +++-----------
 drivers/platform/x86/msi-wmi.c          |  9 ++-------
 drivers/platform/x86/panasonic-laptop.c | 18 +++---------------
 drivers/platform/x86/topstar-laptop.c   |  5 +----
 drivers/platform/x86/toshiba-wmi.c      |  5 +----
 drivers/platform/x86/toshiba_acpi.c     |  8 ++------
 14 files changed, 26 insertions(+), 94 deletions(-)

-- 
2.12.0

[toc] | [next] | [standalone]


#1596009 — [PATCH 07/14] platform/x86: hp-wmi: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:20 +0100
Subject[PATCH 07/14] platform/x86: hp-wmi: remove sparse_keymap_free() calls
Message-ID<tj5d1-523-39@gated-at.bofh.it>
In reply to#1596008
As sparse_keymap_setup() now uses a managed memory allocation for the
keymap copy it creates, the latter is freed automatically.  Remove all
calls to sparse_keymap_free().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
---
 drivers/platform/x86/hp-wmi.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
index 96ffda493266..7abf92d0ba81 100644
--- a/drivers/platform/x86/hp-wmi.c
+++ b/drivers/platform/x86/hp-wmi.c
@@ -673,7 +673,7 @@ static int __init hp_wmi_input_setup(void)
 	status = wmi_install_notify_handler(HPWMI_EVENT_GUID, hp_wmi_notify, NULL);
 	if (ACPI_FAILURE(status)) {
 		err = -EIO;
-		goto err_free_keymap;
+		goto err_free_dev;
 	}
 
 	err = input_register_device(hp_wmi_input_dev);
@@ -684,8 +684,6 @@ static int __init hp_wmi_input_setup(void)
 
  err_uninstall_notifier:
 	wmi_remove_notify_handler(HPWMI_EVENT_GUID);
- err_free_keymap:
-	sparse_keymap_free(hp_wmi_input_dev);
  err_free_dev:
 	input_free_device(hp_wmi_input_dev);
 	return err;
@@ -694,7 +692,6 @@ static int __init hp_wmi_input_setup(void)
 static void hp_wmi_input_destroy(void)
 {
 	wmi_remove_notify_handler(HPWMI_EVENT_GUID);
-	sparse_keymap_free(hp_wmi_input_dev);
 	input_unregister_device(hp_wmi_input_dev);
 }
 
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1596011 — [PATCH 06/14] platform/x86: eeepc-laptop: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:20 +0100
Subject[PATCH 06/14] platform/x86: eeepc-laptop: remove sparse_keymap_free() calls
Message-ID<tj5d1-523-51@gated-at.bofh.it>
In reply to#1596008
As sparse_keymap_setup() now uses a managed memory allocation for the
keymap copy it creates, the latter is freed automatically.  Remove all
calls to sparse_keymap_free().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
---
 drivers/platform/x86/eeepc-laptop.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index 8cdf315f9730..6f11c51b7e60 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -1205,14 +1205,12 @@ static int eeepc_input_init(struct eeepc_laptop *eeepc)
 	error = input_register_device(input);
 	if (error) {
 		pr_err("Unable to register input device\n");
-		goto err_free_keymap;
+		goto err_free_dev;
 	}
 
 	eeepc->inputdev = input;
 	return 0;
 
-err_free_keymap:
-	sparse_keymap_free(input);
 err_free_dev:
 	input_free_device(input);
 	return error;
@@ -1220,10 +1218,8 @@ static int eeepc_input_init(struct eeepc_laptop *eeepc)
 
 static void eeepc_input_exit(struct eeepc_laptop *eeepc)
 {
-	if (eeepc->inputdev) {
-		sparse_keymap_free(eeepc->inputdev);
+	if (eeepc->inputdev)
 		input_unregister_device(eeepc->inputdev);
-	}
 	eeepc->inputdev = NULL;
 }
 
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1596013 — [PATCH 04/14] platform/x86: dell-wmi-aio: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:20 +0100
Subject[PATCH 04/14] platform/x86: dell-wmi-aio: remove sparse_keymap_free() calls
Message-ID<tj5d1-523-45@gated-at.bofh.it>
In reply to#1596008
As sparse_keymap_setup() now uses a managed memory allocation for the
keymap copy it creates, the latter is freed automatically.  Remove all
calls to sparse_keymap_free().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
---
 drivers/platform/x86/dell-wmi-aio.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/platform/x86/dell-wmi-aio.c b/drivers/platform/x86/dell-wmi-aio.c
index dbc97a33bbc8..50c2078715d6 100644
--- a/drivers/platform/x86/dell-wmi-aio.c
+++ b/drivers/platform/x86/dell-wmi-aio.c
@@ -152,12 +152,10 @@ static int __init dell_wmi_aio_input_setup(void)
 	err = input_register_device(dell_wmi_aio_input_dev);
 	if (err) {
 		pr_info("Unable to register input device\n");
-		goto err_free_keymap;
+		goto err_free_dev;
 	}
 	return 0;
 
-err_free_keymap:
-	sparse_keymap_free(dell_wmi_aio_input_dev);
 err_free_dev:
 	input_free_device(dell_wmi_aio_input_dev);
 	return err;
@@ -192,7 +190,6 @@ static int __init dell_wmi_aio_init(void)
 	err = wmi_install_notify_handler(guid, dell_wmi_aio_notify, NULL);
 	if (err) {
 		pr_err("Unable to register notify handler - %d\n", err);
-		sparse_keymap_free(dell_wmi_aio_input_dev);
 		input_unregister_device(dell_wmi_aio_input_dev);
 		return err;
 	}
@@ -206,7 +203,6 @@ static void __exit dell_wmi_aio_exit(void)
 
 	guid = dell_wmi_aio_find();
 	wmi_remove_notify_handler(guid);
-	sparse_keymap_free(dell_wmi_aio_input_dev);
 	input_unregister_device(dell_wmi_aio_input_dev);
 }
 
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1596015 — [PATCH 10/14] platform/x86: msi-wmi: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:20 +0100
Subject[PATCH 10/14] platform/x86: msi-wmi: remove sparse_keymap_free() calls
Message-ID<tj5d1-523-47@gated-at.bofh.it>
In reply to#1596008
As sparse_keymap_setup() now uses a managed memory allocation for the
keymap copy it creates, the latter is freed automatically.  Remove all
calls to sparse_keymap_free().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
---
 drivers/platform/x86/msi-wmi.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c
index 9a32f8627ecc..f6209b739ec0 100644
--- a/drivers/platform/x86/msi-wmi.c
+++ b/drivers/platform/x86/msi-wmi.c
@@ -281,14 +281,12 @@ static int __init msi_wmi_input_setup(void)
 	err = input_register_device(msi_wmi_input_dev);
 
 	if (err)
-		goto err_free_keymap;
+		goto err_free_dev;
 
 	last_pressed = 0;
 
 	return 0;
 
-err_free_keymap:
-	sparse_keymap_free(msi_wmi_input_dev);
 err_free_dev:
 	input_free_device(msi_wmi_input_dev);
 	return err;
@@ -342,10 +340,8 @@ static int __init msi_wmi_init(void)
 	if (event_wmi)
 		wmi_remove_notify_handler(event_wmi->guid);
 err_free_input:
-	if (event_wmi) {
-		sparse_keymap_free(msi_wmi_input_dev);
+	if (event_wmi)
 		input_unregister_device(msi_wmi_input_dev);
-	}
 	return err;
 }
 
@@ -353,7 +349,6 @@ static void __exit msi_wmi_exit(void)
 {
 	if (event_wmi) {
 		wmi_remove_notify_handler(event_wmi->guid);
-		sparse_keymap_free(msi_wmi_input_dev);
 		input_unregister_device(msi_wmi_input_dev);
 	}
 	backlight_device_unregister(backlight);
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1596025 — [PATCH 14/14] platform/x86: toshiba_acpi: remove sparse_keymap_free() calls

FromMichał Kępień <kernel@kempniu.pl>
Date2017-03-09 13:30 +0100
Subject[PATCH 14/14] platform/x86: toshiba_acpi: remove sparse_keymap_free() calls
Message-ID<tj5mH-56r-35@gated-at.bofh.it>
In reply to#1596008
As sparse_keymap_setup() now uses a managed memory allocation for the
keymap copy it creates, the latter is freed automatically.  Remove all
calls to sparse_keymap_free().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
---
 drivers/platform/x86/toshiba_acpi.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c
index 074bf2fa1c55..d0daf75cbed1 100644
--- a/drivers/platform/x86/toshiba_acpi.c
+++ b/drivers/platform/x86/toshiba_acpi.c
@@ -2849,7 +2849,7 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev)
 		error = i8042_install_filter(toshiba_acpi_i8042_filter);
 		if (error) {
 			pr_err("Error installing key filter\n");
-			goto err_free_keymap;
+			goto err_free_dev;
 		}
 
 		dev->ntfy_supported = 1;
@@ -2880,8 +2880,6 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev)
  err_remove_filter:
 	if (dev->ntfy_supported)
 		i8042_remove_filter(toshiba_acpi_i8042_filter);
- err_free_keymap:
-	sparse_keymap_free(dev->hotkey_dev);
  err_free_dev:
 	input_free_device(dev->hotkey_dev);
 	dev->hotkey_dev = NULL;
@@ -3018,10 +3016,8 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev)
 		cancel_work_sync(&dev->hotkey_work);
 	}
 
-	if (dev->hotkey_dev) {
+	if (dev->hotkey_dev)
 		input_unregister_device(dev->hotkey_dev);
-		sparse_keymap_free(dev->hotkey_dev);
-	}
 
 	backlight_device_unregister(dev->backlight_dev);
 
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1599566

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2017-03-13 17:20 +0100
Message-ID<tkARs-34n-35@gated-at.bofh.it>
In reply to#1596008
On Thu, Mar 9, 2017 at 2:11 PM, Michał Kępień <kernel@kempniu.pl> wrote:
> Hi everyone,
>
> This patch series removes all uses of sparse_keymap_free() in the x86
> platform driver subsystem due to an upcoming change in
> sparse_keymap_setup() behavior wrt memory management.  Specifically,
> sparse_keymap_setup() will use managed memory for the keymap copy it
> creates, which enables it to be automatically freed upon input device
> removal, without the need to explicitly call sparse_keymap_free().
>
> I thought it makes sense to post all these patches as a single series.
> To minimize spamming, only this cover letter is addressed to all the
> maintainers whose drivers are affected by this series, while each of the
> subsequent patches will only be sent to the relevant recipients, plus
> the platform-driver-x86 mailing list and subsystem maintainers.
>
> Darren, Andy, all these patches should only be applied after merging an
> immutable branch called ib/4.10-sparse-keymap-managed from Dmitry
> Torokhov's git tree.

Pushed to testing.

If anyone has objections, please tell me as soon as possible (though
we have still time to remove / revert changes which I hope not the
case here).

>  drivers/platform/x86/acer-wmi.c         |  5 +----
>  drivers/platform/x86/asus-laptop.c      |  8 ++------
>  drivers/platform/x86/asus-wmi.c         |  8 ++------
>  drivers/platform/x86/dell-wmi-aio.c     |  6 +-----
>  drivers/platform/x86/dell-wmi.c         | 16 ++++------------
>  drivers/platform/x86/eeepc-laptop.c     |  8 ++------
>  drivers/platform/x86/hp-wmi.c           |  5 +----
>  drivers/platform/x86/ideapad-laptop.c   |  5 +----
>  drivers/platform/x86/msi-laptop.c       | 14 +++-----------
>  drivers/platform/x86/msi-wmi.c          |  9 ++-------
>  drivers/platform/x86/panasonic-laptop.c | 18 +++---------------
>  drivers/platform/x86/topstar-laptop.c   |  5 +----
>  drivers/platform/x86/toshiba-wmi.c      |  5 +----
>  drivers/platform/x86/toshiba_acpi.c     |  8 ++------
>  14 files changed, 26 insertions(+), 94 deletions(-)
>
> --
> 2.12.0
>



-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web