lkml.org 
[lkml]   [2018]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 100/228] HID: i2c-hid: Use devm to allocate i2c_hid struct
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Stephen Boyd <swboyd@chromium.org>

    [ Upstream commit d6f83894110de247a81392ab7ef89e5498df7e80 ]

    Use devm here to save some lines and prepare for bulk regulator usage in
    this driver. Otherwise, when we devm bulk get regulators we'll free the
    containing i2c_hid structure and try to put regulator pointers from
    freed memory.

    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Dmitry Torokhov <dtor@chromium.org>
    Cc: Doug Anderson <dianders@chromium.org>
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/hid/i2c-hid/i2c-hid.c | 9 +++------
    1 file changed, 3 insertions(+), 6 deletions(-)

    --- a/drivers/hid/i2c-hid/i2c-hid.c
    +++ b/drivers/hid/i2c-hid/i2c-hid.c
    @@ -1004,18 +1004,18 @@ static int i2c_hid_probe(struct i2c_clie
    return client->irq;
    }

    - ihid = kzalloc(sizeof(struct i2c_hid), GFP_KERNEL);
    + ihid = devm_kzalloc(&client->dev, sizeof(*ihid), GFP_KERNEL);
    if (!ihid)
    return -ENOMEM;

    if (client->dev.of_node) {
    ret = i2c_hid_of_probe(client, &ihid->pdata);
    if (ret)
    - goto err;
    + return ret;
    } else if (!platform_data) {
    ret = i2c_hid_acpi_pdata(client, &ihid->pdata);
    if (ret)
    - goto err;
    + return ret;
    } else {
    ihid->pdata = *platform_data;
    }
    @@ -1128,7 +1128,6 @@ err_regulator:

    err:
    i2c_hid_free_buffers(ihid);
    - kfree(ihid);
    return ret;
    }

    @@ -1152,8 +1151,6 @@ static int i2c_hid_remove(struct i2c_cli

    regulator_disable(ihid->pdata.supply);

    - kfree(ihid);
    -
    return 0;
    }


    \
     
     \ /
      Last update: 2018-10-02 16:08    [W:2.373 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site