All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] power/ab8500_charger: harden platform data check
@ 2012-04-13  8:15 Linus Walleij
  2012-04-13  8:42 ` Arun MURTHY
  2012-04-28 12:59 ` Linus Walleij
  0 siblings, 2 replies; 14+ messages in thread
From: Linus Walleij @ 2012-04-13  8:15 UTC (permalink / raw)
  To: Anton Vorontsov, linux-kernel
  Cc: Karl Komierowski, Linus Walleij, Arun Murthy

From: Linus Walleij <linus.walleij@linaro.org>

If no platform data at all is supplied the driver crashes,
extend the checks to be more careful so we can compile in the
driver and boot also without platform data present.

Cc: Arun Murthy <arun.murthy@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/power/ab8500_charger.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index e2b4acc..79dc584 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -2551,13 +2551,12 @@ static int __devinit ab8500_charger_probe(struct platform_device *pdev)
 
 	/* get charger specific platform data */
 	plat_data = pdev->dev.platform_data;
-	di->pdata = plat_data->charger;
-
-	if (!di->pdata) {
+	if (!plat_data || !plat_data->charger) {
 		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;
-- 
1.7.9.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* RE: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-13  8:15 [PATCH 1/3] power/ab8500_charger: harden platform data check Linus Walleij
@ 2012-04-13  8:42 ` Arun MURTHY
  2012-05-05 12:06   ` Anton Vorontsov
  2012-04-28 12:59 ` Linus Walleij
  1 sibling, 1 reply; 14+ messages in thread
From: Arun MURTHY @ 2012-04-13  8:42 UTC (permalink / raw)
  To: Linus WALLEIJ, Anton Vorontsov, linux-kernel
  Cc: Karl KOMIEROWSKI, Linus Walleij

> From: Linus Walleij <linus.walleij@linaro.org>
> 
> If no platform data at all is supplied the driver crashes,
> extend the checks to be more careful so we can compile in the
> driver and boot also without platform data present.
> 
> Cc: Arun Murthy <arun.murthy@stericsson.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---

Acked-by: Arun Murthy <arun.murthy@stericsson.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-13  8:15 [PATCH 1/3] power/ab8500_charger: harden platform data check Linus Walleij
  2012-04-13  8:42 ` Arun MURTHY
@ 2012-04-28 12:59 ` Linus Walleij
  2012-04-28 16:38   ` Lee Jones
  2012-05-02 11:31   ` Lee Jones
  1 sibling, 2 replies; 14+ messages in thread
From: Linus Walleij @ 2012-04-28 12:59 UTC (permalink / raw)
  To: Anton Vorontsov, Lee Jones; +Cc: linux-kernel, Karl Komierowski, Arun Murthy

On Fri, Apr 13, 2012 at 10:15 AM, Linus Walleij
<linus.walleij@stericsson.com> wrote:

> From: Linus Walleij <linus.walleij@linaro.org>
>
> If no platform data at all is supplied the driver crashes,
> extend the checks to be more careful so we can compile in the
> driver and boot also without platform data present.
>
> Cc: Arun Murthy <arun.murthy@stericsson.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Anton have you picked these three patches for the -rc:s?

It seems Lee Jones is facing the problems so would be nice to
have this upstream.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-28 12:59 ` Linus Walleij
@ 2012-04-28 16:38   ` Lee Jones
  2012-05-05 12:08     ` Anton Vorontsov
  2012-05-02 11:31   ` Lee Jones
  1 sibling, 1 reply; 14+ messages in thread
From: Lee Jones @ 2012-04-28 16:38 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Anton Vorontsov, linux-kernel, Karl Komierowski, Arun Murthy

Find my version of the 3 patches below.

These also clean up some ugliness and brings the variable initialisation 
formatting more into line with other drivers. If you like them I can 
officially send them to the MLs as patches.

Your call of course.

On 28/04/12 13:59, Linus Walleij wrote:
> On Fri, Apr 13, 2012 at 10:15 AM, Linus Walleij
> <linus.walleij@stericsson.com>  wrote:
> 
>> From: Linus Walleij<linus.walleij@linaro.org>
>>
>> If no platform data at all is supplied the driver crashes,
>> extend the checks to be more careful so we can compile in the
>> driver and boot also without platform data present.
>>
>> Cc: Arun Murthy<arun.murthy@stericsson.com>
>> Signed-off-by: Linus Walleij<linus.walleij@linaro.org>
> 
> Anton have you picked these three patches for the -rc:s?
> 
> It seems Lee Jones is facing the problems so would be nice to
> have this upstream.
> 
> Yours,
> Linus Walleij

diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c
index d8bb993..a2ebcb4 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(struct ab8500_btemp), GFP_KERNEL);
 	if (!di)
 		return -ENOMEM;
 
@@ -977,7 +982,6 @@ 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;
 	di->pdata = plat_data->btemp;
 	if (!di->pdata) {
 		dev_err(di->dev, "no btemp platform data supplied\n");

##############################################################################

diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index e2b4acc..a4e37a8 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(struct ab8500_charger), GFP_KERNEL);
 	if (!di)
 		return -ENOMEM;
 
@@ -2550,7 +2555,6 @@ 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;
 	di->pdata = plat_data->charger;
 
 	if (!di->pdata) {

##############################################################################

diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c
index c22f2f0..d88bc47 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(struct ab8500_fg), GFP_KERNEL);
 	if (!di)
 		return -ENOMEM;
 
@@ -2461,7 +2466,6 @@ 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;
 	di->pdata = plat_data->fg;
 	if (!di->pdata) {
 		dev_err(di->dev, "no fg platform data supplied\n");
-- 
1.7.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-28 12:59 ` Linus Walleij
  2012-04-28 16:38   ` Lee Jones
@ 2012-05-02 11:31   ` Lee Jones
  1 sibling, 0 replies; 14+ messages in thread
From: Lee Jones @ 2012-05-02 11:31 UTC (permalink / raw)
  To: Anton Vorontsov
  Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

On 28/04/12 13:59, Linus Walleij wrote:
> On Fri, Apr 13, 2012 at 10:15 AM, Linus Walleij
> <linus.walleij@stericsson.com>  wrote:
>
>> From: Linus Walleij<linus.walleij@linaro.org>
>>
>> If no platform data at all is supplied the driver crashes,
>> extend the checks to be more careful so we can compile in the
>> driver and boot also without platform data present.
>>
>> Cc: Arun Murthy<arun.murthy@stericsson.com>
>> Signed-off-by: Linus Walleij<linus.walleij@linaro.org>
>
> Anton have you picked these three patches for the -rc:s?
>
> It seems Lee Jones is facing the problems so would be nice to
> have this upstream.

Any chance of an update for this patch-set please?

Are you taking in Linus' patches, or would you like me to submit mine?

Linus, do you have an opinion?

Kind regards,
Lee

-- 
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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-13  8:42 ` Arun MURTHY
@ 2012-05-05 12:06   ` Anton Vorontsov
  0 siblings, 0 replies; 14+ messages in thread
From: Anton Vorontsov @ 2012-05-05 12:06 UTC (permalink / raw)
  To: Arun MURTHY
  Cc: Linus WALLEIJ, linux-kernel, Karl KOMIEROWSKI, Linus Walleij, Lee Jones

On Fri, Apr 13, 2012 at 10:42:59AM +0200, Arun MURTHY wrote:
> > From: Linus Walleij <linus.walleij@linaro.org>
> > 
> > If no platform data at all is supplied the driver crashes,
> > extend the checks to be more careful so we can compile in the
> > driver and boot also without platform data present.
> > 
> > Cc: Arun Murthy <arun.murthy@stericsson.com>
> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> > ---
> 
> Acked-by: Arun Murthy <arun.murthy@stericsson.com>

Thanks guys, all three patches now applied!

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-04-28 16:38   ` Lee Jones
@ 2012-05-05 12:08     ` Anton Vorontsov
       [not found]       ` <CAF2Aj3hy3KOsH3aiZ0UpuERSwOoqFdYQ4su-hEVcU-qp8r5d9A@mail.gmail.com>
  2012-05-22 11:34       ` Lee Jones
  0 siblings, 2 replies; 14+ messages in thread
From: Anton Vorontsov @ 2012-05-05 12:08 UTC (permalink / raw)
  To: Lee Jones; +Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

On Sat, Apr 28, 2012 at 05:38:13PM +0100, Lee Jones wrote:
> Find my version of the 3 patches below.
> 
> These also clean up some ugliness and brings the variable initialisation 
> formatting more into line with other drivers. If you like them I can 
> officially send them to the MLs as patches.
> 
> Your call of course.

Sorry for the delay.

I like these cleanups. The patch below is what I've applied on top
of Linus' series. Please check if there's everything OK.

Notice that I inserted your Signed-off-by line in advance. But for
the history, please provide your formal sign-off (no need to resend
the patch, publicly replying to this email with something like
'Signed-off-by: Lee Jones <lee.jones@linaro.org>' would work ;-)

Much thanks!

- - - -
commit 2aac3de19b72608f474c90034185c2be4908728f
Author: Lee Jones <lee.jones@linaro.org>
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@linaro.org>
    Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>

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;

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
       [not found]       ` <CAF2Aj3hy3KOsH3aiZ0UpuERSwOoqFdYQ4su-hEVcU-qp8r5d9A@mail.gmail.com>
@ 2012-05-05 21:55         ` Anton Vorontsov
  2012-05-06  7:25           ` Lee Jones
  0 siblings, 1 reply; 14+ messages in thread
From: Anton Vorontsov @ 2012-05-05 21:55 UTC (permalink / raw)
  To: Lee Jones; +Cc: Karl Komierowski, Arun Murthy, linux-kernel, Linus Walleij

On Sat, May 05, 2012 at 05:55:09PM +0100, Lee Jones wrote:
> Do you have a public tree/branch that I can look at so I may see the entire
> file please?

Yep, here is the gitweb:
	http://git.infradead.org/battery-2.6.git
or
	git clone git://git.infradead.org/battery-2.6.git


Thanks,

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-05 21:55         ` Anton Vorontsov
@ 2012-05-06  7:25           ` Lee Jones
  0 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2012-05-06  7:25 UTC (permalink / raw)
  To: Anton Vorontsov
  Cc: Karl Komierowski, Arun Murthy, linux-kernel, Linus Walleij

On 05/05/12 22:55, Anton Vorontsov wrote:
> On Sat, May 05, 2012 at 05:55:09PM +0100, Lee Jones wrote:
>> Do you have a public tree/branch that I can look at so I may see the entire
>> file please?
>
> Yep, here is the gitweb:
> 	http://git.infradead.org/battery-2.6.git
> or
> 	git clone git://git.infradead.org/battery-2.6.git

Patches look good.

Better as 3 separate commits in case of any potential revert, but for 
the code:

   Signed-off-by: Lee Jones <lee.jones@linaro.org>

Kind regards,
Lee

-- 
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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-05 12:08     ` Anton Vorontsov
       [not found]       ` <CAF2Aj3hy3KOsH3aiZ0UpuERSwOoqFdYQ4su-hEVcU-qp8r5d9A@mail.gmail.com>
@ 2012-05-22 11:34       ` Lee Jones
  2012-05-22 11:56         ` Anton Vorontsov
  1 sibling, 1 reply; 14+ messages in thread
From: Lee Jones @ 2012-05-22 11:34 UTC (permalink / raw)
  To: Anton Vorontsov
  Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

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@linaro.org>
> 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@linaro.org>
>      Signed-off-by: Anton Vorontsov<anton.vorontsov@linaro.org>
>
> 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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-22 11:34       ` Lee Jones
@ 2012-05-22 11:56         ` Anton Vorontsov
  2012-05-22 12:03           ` Lee Jones
  2012-05-23 19:00           ` Linus Walleij
  0 siblings, 2 replies; 14+ messages in thread
From: Anton Vorontsov @ 2012-05-22 11:56 UTC (permalink / raw)
  To: Lee Jones; +Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

Hi Lee,

On Tue, May 22, 2012 at 12:34:45PM +0100, Lee Jones wrote:
> 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?

You probably should have told me that you needed these patches in
v3.4, because neither Linus' nor yours patch description did not
tell that these were urgent fixes (and not some stuff you'd just
like to have for the future).

But now I see that ab8500 mfd core driver in v3.4 seem to register
the charger and stuff w/o platform data already, so we'd need
at least 'Harden platform data check' patches back-ported into
-stable.

Now once Linus Torvalds pull battery tree, I'll ask Greg KH to
cherry-pick the patches into -stable.

Thanks!

> 
> Kind regards,
> Lee
> 
> >- - - -
> >commit 2aac3de19b72608f474c90034185c2be4908728f
> >Author: Lee Jones<lee.jones@linaro.org>
> >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@linaro.org>
> >     Signed-off-by: Anton Vorontsov<anton.vorontsov@linaro.org>
> >
> >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

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-22 11:56         ` Anton Vorontsov
@ 2012-05-22 12:03           ` Lee Jones
  2012-05-22 13:22             ` Anton Vorontsov
  2012-05-23 19:00           ` Linus Walleij
  1 sibling, 1 reply; 14+ messages in thread
From: Lee Jones @ 2012-05-22 12:03 UTC (permalink / raw)
  To: Anton Vorontsov
  Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

Hi Anton,

> On Tue, May 22, 2012 at 12:34:45PM +0100, Lee Jones wrote:
>> 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?
>
> You probably should have told me that you needed these patches in
> v3.4, because neither Linus' nor yours patch description did not
> tell that these were urgent fixes (and not some stuff you'd just
> like to have for the future).

Ah, I see. I'm sorry this wasn't communicated clearly enough.

> But now I see that ab8500 mfd core driver in v3.4 seem to register
> the charger and stuff w/o platform data already, so we'd need
> at least 'Harden platform data check' patches back-ported into
> -stable.

Right.

> Now once Linus Torvalds pull battery tree, I'll ask Greg KH to
> cherry-pick the patches into -stable.

Thanks Anton.

Are these queued up for the v3.5 merge window also?

Kind regards,
Lee

>>> - - - -
>>> commit 2aac3de19b72608f474c90034185c2be4908728f
>>> Author: Lee Jones<lee.jones@linaro.org>
>>> 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@linaro.org>
>>>      Signed-off-by: Anton Vorontsov<anton.vorontsov@linaro.org>
>>>
>>> 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
>


-- 
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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-22 12:03           ` Lee Jones
@ 2012-05-22 13:22             ` Anton Vorontsov
  0 siblings, 0 replies; 14+ messages in thread
From: Anton Vorontsov @ 2012-05-22 13:22 UTC (permalink / raw)
  To: Lee Jones; +Cc: Linus Walleij, linux-kernel, Karl Komierowski, Arun Murthy

On Tue, May 22, 2012 at 01:03:02PM +0100, Lee Jones wrote:
[...]
> >Now once Linus Torvalds pull battery tree, I'll ask Greg KH to
> >cherry-pick the patches into -stable.
> 
> Thanks Anton.
> 
> Are these queued up for the v3.5 merge window also?

Yep. :-)

Thanks,

-- 
Anton Vorontsov
Email: cbouatmailru@gmail.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] power/ab8500_charger: harden platform data check
  2012-05-22 11:56         ` Anton Vorontsov
  2012-05-22 12:03           ` Lee Jones
@ 2012-05-23 19:00           ` Linus Walleij
  1 sibling, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2012-05-23 19:00 UTC (permalink / raw)
  To: Anton Vorontsov; +Cc: Lee Jones, linux-kernel, Karl Komierowski, Arun Murthy

On Tue, May 22, 2012 at 1:56 PM, Anton Vorontsov
<anton.vorontsov@linaro.org> wrote:

> Hi Lee,
>
> On Tue, May 22, 2012 at 12:34:45PM +0100, Lee Jones wrote:
>> 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?
>
> You probably should have told me that you needed these patches in
> v3.4, because neither Linus' nor yours patch description did not
> tell that these were urgent fixes (and not some stuff you'd just
> like to have for the future).

They are not super-urgent IMO, because there are no defconfigs
using them in v3.4.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-05-23 19:00 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-13  8:15 [PATCH 1/3] power/ab8500_charger: harden platform data check Linus Walleij
2012-04-13  8:42 ` Arun MURTHY
2012-05-05 12:06   ` Anton Vorontsov
2012-04-28 12:59 ` Linus Walleij
2012-04-28 16:38   ` Lee Jones
2012-05-05 12:08     ` Anton Vorontsov
     [not found]       ` <CAF2Aj3hy3KOsH3aiZ0UpuERSwOoqFdYQ4su-hEVcU-qp8r5d9A@mail.gmail.com>
2012-05-05 21:55         ` Anton Vorontsov
2012-05-06  7:25           ` Lee Jones
2012-05-22 11:34       ` Lee Jones
2012-05-22 11:56         ` Anton Vorontsov
2012-05-22 12:03           ` Lee Jones
2012-05-22 13:22             ` Anton Vorontsov
2012-05-23 19:00           ` Linus Walleij
2012-05-02 11:31   ` Lee Jones

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.