lkml.org 
[lkml]   [2014]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] ideapad_laptop: Introduce the use of the managed version of kzalloc
    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 label sysfs_failed is removed as it is no longer
    required. Also, linux/device.h is added to make sure the devm_*()
    routine declarations are unambiguously available.

    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>
    ---
    Not compile tested due to incompatible architecture.
    drivers/platform/x86/ideapad-laptop.c | 8 +++-----
    1 file changed, 3 insertions(+), 5 deletions(-)

    diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
    index 6dd060a..aadfb1f 100644
    --- a/drivers/platform/x86/ideapad-laptop.c
    +++ b/drivers/platform/x86/ideapad-laptop.c
    @@ -36,6 +36,7 @@
    #include <linux/debugfs.h>
    #include <linux/seq_file.h>
    #include <linux/i8042.h>
    +#include <linux/device.h>

    #define IDEAPAD_RFKILL_DEV_NUM (3)

    @@ -833,7 +834,7 @@ static int ideapad_acpi_add(struct platform_device *pdev)
    if (read_method_int(adev->handle, "_CFG", &cfg))
    return -ENODEV;

    - priv = kzalloc(sizeof(*priv), GFP_KERNEL);
    + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
    if (!priv)
    return -ENOMEM;

    @@ -844,7 +845,7 @@ static int ideapad_acpi_add(struct platform_device *pdev)

    ret = ideapad_sysfs_init(priv);
    if (ret)
    - goto sysfs_failed;
    + return ret;

    ret = ideapad_debugfs_init(priv);
    if (ret)
    @@ -884,8 +885,6 @@ input_failed:
    ideapad_debugfs_exit(priv);
    debugfs_failed:
    ideapad_sysfs_exit(priv);
    -sysfs_failed:
    - kfree(priv);
    return ret;
    }

    @@ -903,7 +902,6 @@ static int ideapad_acpi_remove(struct platform_device *pdev)
    ideapad_debugfs_exit(priv);
    ideapad_sysfs_exit(priv);
    dev_set_drvdata(&pdev->dev, NULL);
    - kfree(priv);

    return 0;
    }
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-05-25 12:41    [W:3.373 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site