* [PATCH] Input: Introduce the use of the managed version of kzalloc
@ 2014-05-07 4:46 Himangi Saraogi
2014-05-08 16:04 ` Dmitry Torokhov
0 siblings, 1 reply; 3+ messages in thread
From: Himangi Saraogi @ 2014-05-07 4:46 UTC (permalink / raw)
To: dmitry.torokhov, linux-input, linux-kernel; +Cc: julia.lawall
This patch moves data allocated using kzalloc to managed data allocated
using devm_kzalloc and cleans now unnecessary kfrees in probe and remove
functions.
The following Coccinelle semantic patch was used for making the change:
@platform@
identifier p, probefn, removefn;
@@
struct platform_driver p = {
.probe = probefn,
.remove = removefn,
};
@prb@
identifier platform.probefn, pdev;
expression e, e1, e2;
@@
probefn(struct platform_device *pdev, ...) {
<+...
- e = kzalloc(e1, e2)
+ e = devm_kzalloc(&pdev->dev, e1, e2)
...
?-kfree(e);
...+>
}
@rem depends on prb@
identifier platform.removefn;
expression e;
@@
removefn(...) {
<...
- kfree(e);
...>
}
Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
---
drivers/input/misc/pcf50633-input.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/input/misc/pcf50633-input.c b/drivers/input/misc/pcf50633-input.c
index db92f4f..15ae3ad 100644
--- a/drivers/input/misc/pcf50633-input.c
+++ b/drivers/input/misc/pcf50633-input.c
@@ -58,16 +58,13 @@ static int pcf50633_input_probe(struct platform_device *pdev)
struct input_dev *input_dev;
int ret;
-
- input = kzalloc(sizeof(*input), GFP_KERNEL);
+ input = devm_kzalloc(&pdev->dev, sizeof(*input), GFP_KERNEL);
if (!input)
return -ENOMEM;
input_dev = input_allocate_device();
- if (!input_dev) {
- kfree(input);
+ if (!input_dev)
return -ENOMEM;
- }
platform_set_drvdata(pdev, input);
input->pcf = dev_to_pcf50633(pdev->dev.parent);
@@ -81,7 +78,6 @@ static int pcf50633_input_probe(struct platform_device *pdev)
ret = input_register_device(input_dev);
if (ret) {
input_free_device(input_dev);
- kfree(input);
return ret;
}
pcf50633_register_irq(input->pcf, PCF50633_IRQ_ONKEYR,
@@ -100,7 +96,6 @@ static int pcf50633_input_remove(struct platform_device *pdev)
pcf50633_free_irq(input->pcf, PCF50633_IRQ_ONKEYF);
input_unregister_device(input->input_dev);
- kfree(input);
return 0;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] Input: Introduce the use of the managed version of kzalloc
2014-05-07 4:46 [PATCH] Input: Introduce the use of the managed version of kzalloc Himangi Saraogi
@ 2014-05-08 16:04 ` Dmitry Torokhov
0 siblings, 0 replies; 3+ messages in thread
From: Dmitry Torokhov @ 2014-05-08 16:04 UTC (permalink / raw)
To: Himangi Saraogi; +Cc: linux-input, linux-kernel, julia.lawall
Hi Himangi,
On Wed, May 07, 2014 at 10:16:38AM +0530, Himangi Saraogi wrote:
> This patch moves data allocated using kzalloc to managed data allocated
> using devm_kzalloc and cleans now unnecessary kfrees in probe and remove
> functions.
I prefer not to mix managed and unmanaged resources in one driver. I.e.
either all (or most) resources are managed or they are all unmanaged,
otherwise it is really hard to track which one should be freed and
which will be freed automatically.
In this very simple driver I do not see converting only memory
allocation to devm as bringing clear benefit,
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] Input: Introduce the use of the managed version of kzalloc
@ 2014-05-16 19:28 Himangi Saraogi
0 siblings, 0 replies; 3+ messages in thread
From: Himangi Saraogi @ 2014-05-16 19:28 UTC (permalink / raw)
To: Dmitry Torokhov, linux-input, linux-kernel; +Cc: julia.lawall
This patch moves data allocated using kzalloc to managed data allocated
using devm_kzalloc and cleans now unnecessary kfrees in probe and remove
functions.
The following Coccinelle semantic patch was used for making the change:
@platform@
identifier p, probefn, removefn;
@@
struct platform_driver p = {
.probe = probefn,
.remove = removefn,
};
@prb@
identifier platform.probefn, pdev;
expression e, e1, e2;
@@
probefn(struct platform_device *pdev, ...) {
<+...
- e = kzalloc(e1, e2)
+ e = devm_kzalloc(&pdev->dev, e1, e2)
...
?-kfree(e);
...+>
}
@rem depends on prb@
identifier platform.removefn;
expression e;
@@
removefn(...) {
<...
- kfree(e);
...>
}
Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
---
Can I make the code simpler by changing the code:
poll_dev = input_allocate_polled_device();
if (!poll_dev) {
error = -ENOMEM;
goto failed;
}
to have only return -ENOMEM as there is no error message for failure of
kzalloc and the call to input_free_polled_device does nothing when
poll_dev is null.
drivers/input/keyboard/jornada680_kbd.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/input/keyboard/jornada680_kbd.c b/drivers/input/keyboard/jornada680_kbd.c
index 69b1f00..02c8f5b 100644
--- a/drivers/input/keyboard/jornada680_kbd.c
+++ b/drivers/input/keyboard/jornada680_kbd.c
@@ -185,7 +185,8 @@ static int jornada680kbd_probe(struct platform_device *pdev)
struct input_dev *input_dev;
int i, error;
- jornadakbd = kzalloc(sizeof(struct jornadakbd), GFP_KERNEL);
+ jornadakbd = devm_kzalloc(&pdev->dev, sizeof(struct jornadakbd),
+ GFP_KERNEL);
if (!jornadakbd)
return -ENOMEM;
@@ -233,7 +234,6 @@ static int jornada680kbd_probe(struct platform_device *pdev)
printk(KERN_ERR "Jornadakbd: failed to register driver, error: %d\n",
error);
input_free_polled_device(poll_dev);
- kfree(jornadakbd);
return error;
}
@@ -244,7 +244,6 @@ static int jornada680kbd_remove(struct platform_device *pdev)
input_unregister_polled_device(jornadakbd->poll_dev);
input_free_polled_device(jornadakbd->poll_dev);
- kfree(jornadakbd);
return 0;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-16 19:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-07 4:46 [PATCH] Input: Introduce the use of the managed version of kzalloc Himangi Saraogi
2014-05-08 16:04 ` Dmitry Torokhov
-- strict thread matches above, loose matches on Subject: below --
2014-05-16 19:28 Himangi Saraogi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).