lkml.org 
[lkml]   [2010]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 01/24] mtd/maps/pismo: remove dangling pointer and a leak
    While looking for drivers which forgot to clear i2c_clientdata before freeing
    the data structure it points to, I found that the pismo driver even has a leak
    on the probe error path.

    Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Cc: David Woodhouse <David.Woodhouse@intel.com>
    ---
    drivers/mtd/maps/pismo.c | 8 +++++++-
    1 files changed, 7 insertions(+), 1 deletions(-)

    diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c
    index 30e12c8..86081bc 100644
    --- a/drivers/mtd/maps/pismo.c
    +++ b/drivers/mtd/maps/pismo.c
    @@ -233,6 +233,7 @@ static int __devexit pismo_remove(struct i2c_client *client)
    /* FIXME: set_vpp needs saner arguments */
    pismo_setvpp_remove_fix(pismo);

    + i2c_set_clientdata(client, NULL);
    kfree(pismo);

    return 0;
    @@ -271,7 +272,7 @@ static int __devinit pismo_probe(struct i2c_client *client,
    ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom));
    if (ret < 0) {
    dev_err(&client->dev, "error reading EEPROM: %d\n", ret);
    - return ret;
    + goto exit_free;
    }

    dev_info(&client->dev, "%.15s board found\n", eeprom.board);
    @@ -282,6 +283,11 @@ static int __devinit pismo_probe(struct i2c_client *client,
    pdata->cs_addrs[i]);

    return 0;
    +
    + exit_free:
    + i2c_set_clientdata(client, NULL);
    + kfree(prismo);
    + return ret;
    }

    static const struct i2c_device_id pismo_id[] = {
    --
    1.7.0


    \
     
     \ /
      Last update: 2010-03-20 15:21    [W:4.134 / U:0.328 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site