[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>
This commit is contained in:
parent
49978db4f3
commit
b016450f9f
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -263,30 +263,25 @@ static int __init sharpsl_pcmcia_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
sharpsl_pcmcia_ops.nr=platform_scoop_config->num_devs;
|
||||
sharpsl_pcmcia_device = kzalloc(sizeof(*sharpsl_pcmcia_device), GFP_KERNEL);
|
||||
sharpsl_pcmcia_ops.nr = platform_scoop_config->num_devs;
|
||||
sharpsl_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
|
||||
|
||||
if (!sharpsl_pcmcia_device)
|
||||
return -ENOMEM;
|
||||
|
||||
sharpsl_pcmcia_device->name = "pxa2xx-pcmcia";
|
||||
sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops;
|
||||
sharpsl_pcmcia_device->dev.parent=platform_scoop_config->devs[0].dev;
|
||||
sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev;
|
||||
|
||||
ret = platform_device_add(sharpsl_pcmcia_device);
|
||||
|
||||
ret = platform_device_register(sharpsl_pcmcia_device);
|
||||
if (ret)
|
||||
kfree(sharpsl_pcmcia_device);
|
||||
platform_device_put(sharpsl_pcmcia_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit sharpsl_pcmcia_exit(void)
|
||||
{
|
||||
/*
|
||||
* This call is supposed to free our sharpsl_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(sharpsl_pcmcia_device);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue