Re: [PATCH 1/3] power/ab8500_charger: harden platform data check

From: Lee Jones
Date: Tue May 22 2012 - 07:34:46 EST


Hi Anton,

I see that this didn't make it into any of the v3.4-rc:s, hence v3.4 was released broken. Do you know when they're likely to make it into Mainline?

Kind regards,
Lee

- - - -
commit 2aac3de19b72608f474c90034185c2be4908728f
Author: Lee Jones<lee.jones@xxxxxxxxxx>
Date: Sat May 5 04:38:19 2012 -0700

ab8500: Clean up probe routines

These patches clean up some ugliness and brings the variable
initialisation formatting more into line with other drivers.

Signed-off-by: Lee Jones<lee.jones@xxxxxxxxxx>
Signed-off-by: Anton Vorontsov<anton.vorontsov@xxxxxxxxxx>

diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c
index e266f03..bba3cca 100644
--- a/drivers/power/ab8500_btemp.c
+++ b/drivers/power/ab8500_btemp.c
@@ -964,10 +964,15 @@ static int __devinit ab8500_btemp_probe(struct platform_device *pdev)
{
int irq, i, ret = 0;
u8 val;
- struct abx500_bm_plat_data *plat_data;
+ struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data;
+ struct ab8500_btemp *di;
+
+ if (!plat_data) {
+ dev_err(&pdev->dev, "No platform data\n");
+ return -EINVAL;
+ }

- struct ab8500_btemp *di =
- kzalloc(sizeof(struct ab8500_btemp), GFP_KERNEL);
+ di = kzalloc(sizeof(*di), GFP_KERNEL);
if (!di)
return -ENOMEM;

@@ -977,13 +982,12 @@ static int __devinit ab8500_btemp_probe(struct platform_device *pdev)
di->gpadc = ab8500_gpadc_get("ab8500-gpadc.0");

/* get btemp specific platform data */
- plat_data = pdev->dev.platform_data;
- if (!plat_data || !plat_data->btemp) {
+ di->pdata = plat_data->btemp;
+ if (!di->pdata) {
dev_err(di->dev, "no btemp platform data supplied\n");
ret = -EINVAL;
goto free_device_info;
}
- di->pdata = plat_data->btemp;

/* get battery specific platform data */
di->bat = plat_data->battery;
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index 79dc584..d2303d0 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -2534,10 +2534,15 @@ static int __devexit ab8500_charger_remove(struct platform_device *pdev)
static int __devinit ab8500_charger_probe(struct platform_device *pdev)
{
int irq, i, charger_status, ret = 0;
- struct abx500_bm_plat_data *plat_data;
+ struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data;
+ struct ab8500_charger *di;

- struct ab8500_charger *di =
- kzalloc(sizeof(struct ab8500_charger), GFP_KERNEL);
+ if (!plat_data) {
+ dev_err(&pdev->dev, "No platform data\n");
+ return -EINVAL;
+ }
+
+ di = kzalloc(sizeof(*di), GFP_KERNEL);
if (!di)
return -ENOMEM;

@@ -2550,13 +2555,12 @@ static int __devinit ab8500_charger_probe(struct platform_device *pdev)
spin_lock_init(&di->usb_state.usb_lock);

/* get charger specific platform data */
- plat_data = pdev->dev.platform_data;
- if (!plat_data || !plat_data->charger) {
+ di->pdata = plat_data->charger;
+ if (!di->pdata) {
dev_err(di->dev, "no charger platform data supplied\n");
ret = -EINVAL;
goto free_device_info;
}
- di->pdata = plat_data->charger;

/* get battery specific platform data */
di->bat = plat_data->battery;
diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c
index 0ebea39..bf02225 100644
--- a/drivers/power/ab8500_fg.c
+++ b/drivers/power/ab8500_fg.c
@@ -2446,10 +2446,15 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev)
{
int i, irq;
int ret = 0;
- struct abx500_bm_plat_data *plat_data;
+ struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data;
+ struct ab8500_fg *di;
+
+ if (!plat_data) {
+ dev_err(&pdev->dev, "No platform data\n");
+ return -EINVAL;
+ }

- struct ab8500_fg *di =
- kzalloc(sizeof(struct ab8500_fg), GFP_KERNEL);
+ di = kzalloc(sizeof(*di), GFP_KERNEL);
if (!di)
return -ENOMEM;

@@ -2461,13 +2466,12 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev)
di->gpadc = ab8500_gpadc_get("ab8500-gpadc.0");

/* get fg specific platform data */
- plat_data = pdev->dev.platform_data;
- if (!plat_data || !plat_data->fg) {
+ di->pdata = plat_data->fg;
+ if (!di->pdata) {
dev_err(di->dev, "no fg platform data supplied\n");
ret = -EINVAL;
goto free_device_info;
}
- di->pdata = plat_data->fg;

/* get battery specific platform data */
di->bat = plat_data->battery;


--
Lee Jones
Linaro ST-Ericsson Landing Team Lead
M: +44 77 88 633 515
Linaro.org â Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/