diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2006-01-10 17:16:12 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-10 17:16:12 +0000 |
commit | b016450f9f603210239e1a91e3c28f17c310dcc7 (patch) | |
tree | f98c21ce43fc8826dbd006216db0c70cb3901e0d /drivers/pcmcia/pxa2xx_mainstone.c | |
parent | 49978db4f39950cdaaf967e1aad4a324bdc2e180 (diff) | |
download | linux-b016450f9f603210239e1a91e3c28f17c310dcc7.tar.bz2 |
[ARM] 3250/1: Change pxa2xx PCMCIA drivers to use platform_device_alloc
Patch from Richard Purdie
Change mainstone and sharpsl pxa2xx pcmcia drivers to use
platform_device_alloc which fixes a memory leak.
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/pcmcia/pxa2xx_mainstone.c')
-rw-r--r-- | drivers/pcmcia/pxa2xx_mainstone.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c index 5d957dfe23d9..fda06941e730 100644 --- a/drivers/pcmcia/pxa2xx_mainstone.c +++ b/drivers/pcmcia/pxa2xx_mainstone.c @@ -171,27 +171,22 @@ static int __init mst_pcmcia_init(void) { int ret; - mst_pcmcia_device = kzalloc(sizeof(*mst_pcmcia_device), GFP_KERNEL); + mst_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); if (!mst_pcmcia_device) return -ENOMEM; - mst_pcmcia_device->name = "pxa2xx-pcmcia"; + mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops; - ret = platform_device_register(mst_pcmcia_device); + ret = platform_device_add(mst_pcmcia_device); + if (ret) - kfree(mst_pcmcia_device); + platform_device_put(mst_pcmcia_device); return ret; } static void __exit mst_pcmcia_exit(void) { - /* - * This call is supposed to free our mst_pcmcia_device. - * Unfortunately platform_device don't have a free method, and - * we can't assume it's free of any reference at this point so we - * can't free it either. - */ platform_device_unregister(mst_pcmcia_device); } |