lkml.org 
[lkml]   [2004]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 532] M68k HP Lance Ethernet: Fix leaks on probe/removal
    HP Lance Ethernet: There's tons of leaks in the hplcance probing code, and it
    doesn't release the memory region on removal either (from Christoph Hellwig)

    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>

    --- linux-2.6.10-rc2/drivers/net/hplance.c 2004-11-09 21:12:05.000000000 +0100
    +++ linux-m68k-2.6.10-rc2/drivers/net/hplance.c 2004-11-21 10:51:37.000000000 +0100
    @@ -76,25 +76,31 @@
    const struct dio_device_id *ent)
    {
    struct net_device *dev;
    - int err;
    + int err = -ENOMEM;

    dev = alloc_etherdev(sizeof(struct hplance_private));
    if (!dev)
    - return -ENOMEM;
    + goto out;

    - if (!request_mem_region(d->resource.start, d->resource.end-d->resource.start, d->name))
    - return -EBUSY;
    + err = -EBUSY;
    + if (!request_mem_region(dio_resource_start(d),
    + dio_resource_len(d), d->name))
    + goto out_free_netdev;

    - SET_MODULE_OWNER(dev);
    -
    hplance_init(dev, d);
    err = register_netdev(dev);
    - if (err) {
    - free_netdev(dev);
    - return err;
    - }
    + if (err)
    + goto out_release_mem_region;
    +
    dio_set_drvdata(d, dev);
    return 0;
    +
    + out_release_mem_region:
    + release_mem_region(dio_resource_start(d), dio_resource_len(d));
    + out_free_netdev:
    + free_netdev(dev);
    + out:
    + return err;
    }

    static void __devexit hplance_remove_one(struct dio_dev *d)
    @@ -102,6 +108,7 @@
    struct net_device *dev = dio_get_drvdata(d);

    unregister_netdev(dev);
    + release_mem_region(dio_resource_start(d), dio_resource_len(d));
    free_netdev(dev);
    }

    Gr{oetje,eeting}s,
    Geert

    --
    Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

    In personal conversations with technical people, I call myself a hacker. But
    when I'm talking to journalists I just say "programmer" or something like that.
    -- Linus Torvalds
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:5.879 / U:0.716 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site