aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2009-10-17 04:47:35 +0400
committerPaul Fertser <fercerpav@gmail.com>2009-10-17 04:52:57 +0400
commit350d5560bb262e73e1f1c05bf488fea6750a52d6 (patch)
tree46a2abf96452b8c7abcb206dba8176e60083e23e /drivers
parent3daf677d5e8e4d6a89845952e0a503c4bd57e456 (diff)
Fix memleak in pcf50633_client_dev_registe
Ported from 207ec43e8c5a54dfc82a0e65af5b8f2765e3cbb8
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/misc/pcf50606-input.c8
-rw-r--r--drivers/mfd/pcf50606-adc.c5
-rw-r--r--drivers/mfd/pcf50606-core.c4
-rw-r--r--drivers/power/pcf50606-charger.c3
-rw-r--r--drivers/rtc/rtc-pcf50606.c5
-rw-r--r--drivers/watchdog/pcf50606_wdt.c9
6 files changed, 8 insertions, 26 deletions
diff --git a/drivers/input/misc/pcf50606-input.c b/drivers/input/misc/pcf50606-input.c
index 044438ed662..da78fb92fbc 100644
--- a/drivers/input/misc/pcf50606-input.c
+++ b/drivers/input/misc/pcf50606-input.c
@@ -63,11 +63,9 @@ pcf50606_input_irq(int irq, void *data)
static int __devinit pcf50606_input_probe(struct platform_device *pdev)
{
struct pcf50606_input *input;
- struct pcf50606_subdev_pdata *pdata = pdev->dev.platform_data;
struct input_dev *input_dev;
int ret;
-
input = kzalloc(sizeof(*input), GFP_KERNEL);
if (!input)
return -ENOMEM;
@@ -79,7 +77,7 @@ static int __devinit pcf50606_input_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, input);
- input->pcf = pdata->pcf;
+ input->pcf = dev_to_pcf50606(pdev->dev.parent);
input->input_dev = input_dev;
input_dev->name = "PCF50606 PMU events";
@@ -93,9 +91,9 @@ static int __devinit pcf50606_input_probe(struct platform_device *pdev)
kfree(input);
return ret;
}
- pcf50606_register_irq(pdata->pcf, PCF50606_IRQ_ONKEYR,
+ pcf50606_register_irq(input->pcf, PCF50606_IRQ_ONKEYR,
pcf50606_input_irq, input);
- pcf50606_register_irq(pdata->pcf, PCF50606_IRQ_ONKEYF,
+ pcf50606_register_irq(input->pcf, PCF50606_IRQ_ONKEYF,
pcf50606_input_irq, input);
return 0;
diff --git a/drivers/mfd/pcf50606-adc.c b/drivers/mfd/pcf50606-adc.c
index 38f5b5c0593..47210a9cce8 100644
--- a/drivers/mfd/pcf50606-adc.c
+++ b/drivers/mfd/pcf50606-adc.c
@@ -211,17 +211,16 @@ static void pcf50606_adc_irq(int irq, void *data)
static int __devinit pcf50606_adc_probe(struct platform_device *pdev)
{
- struct pcf50606_subdev_pdata *pdata = pdev->dev.platform_data;
struct pcf50606_adc *adc;
adc = kzalloc(sizeof(*adc), GFP_KERNEL);
if (!adc)
return -ENOMEM;
- adc->pcf = pdata->pcf;
+ adc->pcf = dev_to_pcf50606(pdev->dev.parent);
platform_set_drvdata(pdev, adc);
- pcf50606_register_irq(pdata->pcf, PCF50606_IRQ_ADCRDY,
+ pcf50606_register_irq(adc->pcf, PCF50606_IRQ_ADCRDY,
pcf50606_adc_irq, adc);
mutex_init(&adc->queue_mutex);
diff --git a/drivers/mfd/pcf50606-core.c b/drivers/mfd/pcf50606-core.c
index 355a7fc7476..a6ff522931d 100644
--- a/drivers/mfd/pcf50606-core.c
+++ b/drivers/mfd/pcf50606-core.c
@@ -436,7 +436,6 @@ static void
pcf50606_client_dev_register(struct pcf50606 *pcf, const char *name,
struct platform_device **pdev)
{
- struct pcf50606_subdev_pdata subdev_pdata;
int ret;
*pdev = platform_device_alloc(name, -1);
@@ -445,9 +444,6 @@ pcf50606_client_dev_register(struct pcf50606 *pcf, const char *name,
return;
}
- subdev_pdata.pcf = pcf;
- platform_device_add_data(*pdev, &subdev_pdata, sizeof(subdev_pdata));
-
(*pdev)->dev.parent = pcf->dev;
ret = platform_device_add(*pdev);
diff --git a/drivers/power/pcf50606-charger.c b/drivers/power/pcf50606-charger.c
index a566fe3ed56..f90c5ed25b3 100644
--- a/drivers/power/pcf50606-charger.c
+++ b/drivers/power/pcf50606-charger.c
@@ -159,7 +159,6 @@ static const u8 mbc_irq_handlers[] = {
static int __devinit pcf50606_mbc_probe(struct platform_device *pdev)
{
struct pcf50606_mbc *mbc;
- struct pcf50606_subdev_pdata *pdata = pdev->dev.platform_data;
int ret;
int i;
u8 oocs;
@@ -169,7 +168,7 @@ static int __devinit pcf50606_mbc_probe(struct platform_device *pdev)
return -ENOMEM;
platform_set_drvdata(pdev, mbc);
- mbc->pcf = pdata->pcf;
+ mbc->pcf = dev_to_pcf50606(pdev->dev.parent);
/* Set up IRQ handlers */
for (i = 0; i < ARRAY_SIZE(mbc_irq_handlers); i++)
diff --git a/drivers/rtc/rtc-pcf50606.c b/drivers/rtc/rtc-pcf50606.c
index 6bd93b0b672..01ce1b9e48f 100644
--- a/drivers/rtc/rtc-pcf50606.c
+++ b/drivers/rtc/rtc-pcf50606.c
@@ -271,16 +271,13 @@ static void pcf50606_rtc_irq(int irq, void *data)
static int __devinit pcf50606_rtc_probe(struct platform_device *pdev)
{
- struct pcf50606_subdev_pdata *pdata;
struct pcf50606_rtc *rtc;
-
rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
if (!rtc)
return -ENOMEM;
- pdata = pdev->dev.platform_data;
- rtc->pcf = pdata->pcf;
+ rtc->pcf = dev_to_pcf50606(pdev->dev.parent);
platform_set_drvdata(pdev, rtc);
rtc->rtc_dev = rtc_device_register("pcf50606-rtc", &pdev->dev,
&pcf50606_rtc_ops, THIS_MODULE);
diff --git a/drivers/watchdog/pcf50606_wdt.c b/drivers/watchdog/pcf50606_wdt.c
index f0858747bf9..6a53c664b21 100644
--- a/drivers/watchdog/pcf50606_wdt.c
+++ b/drivers/watchdog/pcf50606_wdt.c
@@ -158,7 +158,6 @@ static void pcf50606_wdt_irq(int irq, void *unused)
int __init pcf50606_wdt_probe(struct platform_device *pdev)
{
- struct pcf50606_subdev_pdata *pdata;
int err;
if (pcf) {
@@ -166,13 +165,7 @@ int __init pcf50606_wdt_probe(struct platform_device *pdev)
return -ENODEV;
}
- pdata = pdev->dev.platform_data;
- if (!pdata) {
- dev_err(&pdev->dev, "No platform data available\n");
- return -EINVAL;
- }
-
- pcf = pdata->pcf;
+ pcf = dev_to_pcf50606(pdev->dev.parent);
err = misc_register(&pcf50606_wdt_miscdev);
if (err) {