public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] [mtd] fixed faulty check
@ 2009-07-30 12:49 Stoyan Gaydarov
  2009-07-30 13:03 ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 9+ messages in thread
From: Stoyan Gaydarov @ 2009-07-30 12:49 UTC (permalink / raw)
  To: linux-kernel
  Cc: Stoyan Gaydarov, David.Woodhouse, sr, bigeasy, kay.sievers,
	gregkh, linux-mtd

Resubmit of a patch with some additions, see http://lkml.org/lkml/2009/7/30/97

Signed-off-by: Stoyan Gaydarov <sgayda2@uiuc.edu>
---
 drivers/mtd/maps/physmap_of.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 39d357b..e7ab5f0 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
@@ -215,7 +215,8 @@ static int __devinit of_flash_probe(struct of_device *dev,
 		goto err_out;
 
 	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
-	if (!info)
+	if (!mtd_list)
+		kfree(info);
 		goto err_out;
 
 	dev_set_drvdata(&dev->dev, info);
-- 
1.6.3.3


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

* Re: [PATCH] [mtd] fixed faulty check
  2009-07-30 12:49 [PATCH] [mtd] fixed faulty check Stoyan Gaydarov
@ 2009-07-30 13:03 ` Sebastian Andrzej Siewior
  2009-07-30 13:39   ` vimal singh
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastian Andrzej Siewior @ 2009-07-30 13:03 UTC (permalink / raw)
  To: Stoyan Gaydarov
  Cc: linux-kernel, David.Woodhouse, sr, kay.sievers, gregkh, linux-mtd

Stoyan Gaydarov wrote:
> Resubmit of a patch with some additions, see http://lkml.org/lkml/2009/7/30/97
> 
Please add a description of the path here. That's the place where people
are looking for them. The link might be a an additional reference.

> Signed-off-by: Stoyan Gaydarov <sgayda2@uiuc.edu>
> ---
>  drivers/mtd/maps/physmap_of.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
> index 39d357b..e7ab5f0 100644
> --- a/drivers/mtd/maps/physmap_of.c
> +++ b/drivers/mtd/maps/physmap_of.c
> @@ -215,7 +215,8 @@ static int __devinit of_flash_probe(struct of_device *dev,
>  		goto err_out;
>  
>  	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
> -	if (!info)
> +	if (!mtd_list)
> +		kfree(info);
>  		goto err_out;

This is not python, you have to be explicit about braces. Now your code
looks like this:

   	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
	if (!mtd_list)
		kfree(info);
	goto err_out;
>  
>  	dev_set_drvdata(&dev->dev, info);


Sebastian

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

* Re: [PATCH] [mtd] fixed faulty check
  2009-07-30 13:03 ` Sebastian Andrzej Siewior
@ 2009-07-30 13:39   ` vimal singh
  2009-07-30 13:47     ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 9+ messages in thread
From: vimal singh @ 2009-07-30 13:39 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: Stoyan Gaydarov, linux-kernel, David.Woodhouse, sr, kay.sievers,
	gregkh, linux-mtd

On Thu, Jul 30, 2009 at 6:33 PM, Sebastian Andrzej
Siewior<bigeasy@linutronix.de> wrote:
> Stoyan Gaydarov wrote:
>>
>> Resubmit of a patch with some additions, see
>> http://lkml.org/lkml/2009/7/30/97
>>
> Please add a description of the path here. That's the place where people
> are looking for them. The link might be a an additional reference.
>
>> Signed-off-by: Stoyan Gaydarov <sgayda2@uiuc.edu>
>> ---
>>  drivers/mtd/maps/physmap_of.c |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
>> index 39d357b..e7ab5f0 100644
>> --- a/drivers/mtd/maps/physmap_of.c
>> +++ b/drivers/mtd/maps/physmap_of.c
>> @@ -215,7 +215,8 @@ static int __devinit of_flash_probe(struct of_device
>> *dev,
>>                goto err_out;
>>          mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
>> -       if (!info)
>> +       if (!mtd_list)
>> +               kfree(info);
>>                goto err_out;

What if you go to 'err_out' due to some other error?? Do not you need
to free 'info'?
So, better free it in at the label.

Currently label is like below, which is again incorrect.
-----code snippet (line 339)-----
err_out:
        kfree(mtd_list);
        of_flash_remove(dev);
-------------------------------------------
Think about when you get jump to this label even before 'mtd_list' is
allocated. This is the scenario of null pointer dereferencing.

So, this requires two separate labels:
-one label for errors which occur before 'mtd_list' memory allocation
-and, another for then onward errors

something like below:

err_out2:
        kfree(info);
        kfree(mtd_list);
err_out1:
        of_flash_remove(dev);

-vimal

>
> This is not python, you have to be explicit about braces. Now your code
> looks like this:
>
>        mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
>        if (!mtd_list)
>                kfree(info);
>        goto err_out;
>>
>>          dev_set_drvdata(&dev->dev, info);
>
>
> Sebastian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>



-- 
---
Regards,
\/ | |\/| /-\ |_

____      __o
------   -\<,
-----  ( )/ ( )

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

* Re: [PATCH] [mtd] fixed faulty check
  2009-07-30 13:39   ` vimal singh
@ 2009-07-30 13:47     ` Sebastian Andrzej Siewior
  2009-07-30 14:14       ` vimal singh
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastian Andrzej Siewior @ 2009-07-30 13:47 UTC (permalink / raw)
  To: vimal singh
  Cc: Stoyan Gaydarov, linux-kernel, David.Woodhouse, sr, kay.sievers,
	gregkh, linux-mtd

vimal singh wrote:
> What if you go to 'err_out' due to some other error?? Do not you need
> to free 'info'?
We have to and of_flash_remove() takes care of it.

The initial patch would be shorter if
   dev_set_drvdata(&dev->dev, info);
would be moved prior the kzalloc()

Sebastian

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

* Re: [PATCH] [mtd] fixed faulty check
  2009-07-30 13:47     ` Sebastian Andrzej Siewior
@ 2009-07-30 14:14       ` vimal singh
       [not found]         ` <4A71AD5E.4080704@uiuc.edu>
  0 siblings, 1 reply; 9+ messages in thread
From: vimal singh @ 2009-07-30 14:14 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: Stoyan Gaydarov, linux-kernel, David.Woodhouse, sr, kay.sievers,
	gregkh, linux-mtd

On Thu, Jul 30, 2009 at 7:17 PM, Sebastian Andrzej
Siewior<bigeasy@linutronix.de> wrote:
> vimal singh wrote:
>>
>> What if you go to 'err_out' due to some other error?? Do not you need
>> to free 'info'?
>
> We have to and of_flash_remove() takes care of it.

that's correct...

>
> The initial patch would be shorter if
>  dev_set_drvdata(&dev->dev, info);
> would be moved prior the kzalloc()
>
> Sebastian
>



-- 
---
Regards,
\/ | |\/| /-\ |_

____      __o
------   -\<,
-----  ( )/ ( )

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

* Re: [PATCH] [mtd] fixed faulty check
       [not found]         ` <4A71AD5E.4080704@uiuc.edu>
@ 2009-07-30 14:34           ` vimal singh
  2009-07-30 14:53           ` Sebastian Andrzej Siewior
  1 sibling, 0 replies; 9+ messages in thread
From: vimal singh @ 2009-07-30 14:34 UTC (permalink / raw)
  To: Stoyan Gaydarov
  Cc: Sebastian Andrzej Siewior, linux-kernel, David.Woodhouse, sr,
	kay.sievers, gregkh, linux-mtd

On Thu, Jul 30, 2009 at 7:55 PM, Stoyan Gaydarov<sgayda2@uiuc.edu> wrote:
> vimal singh wrote:
>
> On Thu, Jul 30, 2009 at 7:17 PM, Sebastian Andrzej
> Siewior<bigeasy@linutronix.de> wrote:
>
>
> vimal singh wrote:
>
>
> What if you go to 'err_out' due to some other error?? Do not you need
> to free 'info'?
>
>
> We have to and of_flash_remove() takes care of it.
>
>
>
>
> Does this mean that the original patch is fine or does it still need the
> kfree? From what i understand when going to err_out it will take care of
> info using of_flash_remove() so then it is not needed in the if check.

Yes.
But I think, you should still correct freeing 'mtd_list' in the label,
when you jump there even before memory gets allocated for that.

-vimal

>
> -Stoyan
>
> that's correct...
>
>
>
> The initial patch would be shorter if
>  dev_set_drvdata(&dev->dev, info);
> would be moved prior the kzalloc()
>
> Sebastian
>
>
>
>
>

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

* Re: [PATCH] [mtd] fixed faulty check
       [not found]         ` <4A71AD5E.4080704@uiuc.edu>
  2009-07-30 14:34           ` vimal singh
@ 2009-07-30 14:53           ` Sebastian Andrzej Siewior
  2009-07-30 15:13             ` vimal singh
  1 sibling, 1 reply; 9+ messages in thread
From: Sebastian Andrzej Siewior @ 2009-07-30 14:53 UTC (permalink / raw)
  To: Stoyan Gaydarov
  Cc: vimal singh, linux-kernel, David.Woodhouse, sr, kay.sievers,
	gregkh, linux-mtd

Stoyan Gaydarov wrote:
>>> We have to and of_flash_remove() takes care of it.
>>>     
>>   
> Does this mean that the original patch is fine or does it still need the 
> kfree? From what i understand when going to err_out it will take care of 
> info using of_flash_remove() so then it is not needed in the if check.

The original patch was fine but it leaked info. of_flash_remove() does the
cleanup of info but only if it is part of driver's data (after the
of_flash_remove()). So you have to call dev_set_drvdata(&dev->dev, info)
earlier, after the kzalloc() to save the data or else there is no clean
up.

> -Stoyan

Sebastian

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

* Re: [PATCH] [mtd] fixed faulty check
  2009-07-30 14:53           ` Sebastian Andrzej Siewior
@ 2009-07-30 15:13             ` vimal singh
       [not found]               ` <4A71B940.80607@uiuc.edu>
  0 siblings, 1 reply; 9+ messages in thread
From: vimal singh @ 2009-07-30 15:13 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: Stoyan Gaydarov, linux-kernel, David.Woodhouse, sr, kay.sievers,
	gregkh, linux-mtd

On Thu, Jul 30, 2009 at 8:23 PM, Sebastian Andrzej
Siewior<bigeasy@linutronix.de> wrote:
> Stoyan Gaydarov wrote:
>>>>
>>>> We have to and of_flash_remove() takes care of it.
>>>>
>>>
>>>
>>
>> Does this mean that the original patch is fine or does it still need the
>> kfree? From what i understand when going to err_out it will take care of
>> info using of_flash_remove() so then it is not needed in the if check.
>
> The original patch was fine but it leaked info. of_flash_remove() does the
> cleanup of info but only if it is part of driver's data (after the
> of_flash_remove()). So you have to call dev_set_drvdata(&dev->dev, info)
> earlier, after the kzalloc() to save the data or else there is no clean
> up.
>

Is this patch looks OK??


diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 39d357b..d104cfc 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
@@ -204,7 +204,7 @@ static int __devinit of_flash_probe(struct of_device *dev,
 		dev_err(&dev->dev, "Malformed reg property on %s\n",
 				dev->node->full_name);
 		err = -EINVAL;
-		goto err_out;
+		goto err_flash_remove;
 	}
 	count /= reg_tuple_size;

@@ -212,14 +212,14 @@ static int __devinit of_flash_probe(struct of_device *dev,
 	info = kzalloc(sizeof(struct of_flash) +
 		       sizeof(struct of_flash_list) * count, GFP_KERNEL);
 	if (!info)
-		goto err_out;
-
-	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
-	if (!info)
-		goto err_out;
+		goto err_flash_remove;

 	dev_set_drvdata(&dev->dev, info);

+	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
+	if (!mtd_list)
+		goto err_flash_remove;
+
 	for (i = 0; i < count; i++) {
 		err = -ENXIO;
 		if (of_address_to_resource(dp, i, &res)) {
@@ -338,6 +338,7 @@ static int __devinit of_flash_probe(struct of_device *dev,

 err_out:
 	kfree(mtd_list);
+eerr_flash_remov:
 	of_flash_remove(dev);

 	return err;

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

* Re: [PATCH] [mtd] fixed faulty check
       [not found]               ` <4A71B940.80607@uiuc.edu>
@ 2009-07-30 15:24                 ` vimal singh
  0 siblings, 0 replies; 9+ messages in thread
From: vimal singh @ 2009-07-30 15:24 UTC (permalink / raw)
  To: Stoyan Gaydarov
  Cc: linux-kernel, David.Woodhouse, sr, kay.sievers, gregkh, linux-mtd

This patch fixes a spelling error that has resulted from copy and
pasting. The location of the error was found using a semantic patch
but the semantic patch was not trying to find these errors. After
looking things over it seemed logical that this change was needed.

The patch also makes sure mtd_list is not being freed if it has not
been allocated

Signed-off-by: Stoyan Gaydarov <sgayda2@uiuc.edu>
Signed-off-by: Vimal Singh <vimalsingh@ti.com>
---

diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 39d357b..584a1c8 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
@@ -204,7 +204,7 @@ static int __devinit of_flash_probe(struct of_device *dev,
 		dev_err(&dev->dev, "Malformed reg property on %s\n",
 				dev->node->full_name);
 		err = -EINVAL;
-		goto err_out;
+		goto err_flash_remove;
 	}
 	count /= reg_tuple_size;

@@ -212,14 +212,14 @@ static int __devinit of_flash_probe(struct of_device *dev,
 	info = kzalloc(sizeof(struct of_flash) +
 		       sizeof(struct of_flash_list) * count, GFP_KERNEL);
 	if (!info)
-		goto err_out;
-
-	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
-	if (!info)
-		goto err_out;
+		goto err_flash_remove;

 	dev_set_drvdata(&dev->dev, info);

+	mtd_list = kzalloc(sizeof(struct mtd_info) * count, GFP_KERNEL);
+	if (!mtd_list)
+		goto err_flash_remove;
+
 	for (i = 0; i < count; i++) {
 		err = -ENXIO;
 		if (of_address_to_resource(dp, i, &res)) {
@@ -338,6 +338,7 @@ static int __devinit of_flash_probe(struct of_device *dev,

 err_out:
 	kfree(mtd_list);
+err_flash_remove:
 	of_flash_remove(dev);

 	return err;

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

end of thread, other threads:[~2009-07-30 15:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-30 12:49 [PATCH] [mtd] fixed faulty check Stoyan Gaydarov
2009-07-30 13:03 ` Sebastian Andrzej Siewior
2009-07-30 13:39   ` vimal singh
2009-07-30 13:47     ` Sebastian Andrzej Siewior
2009-07-30 14:14       ` vimal singh
     [not found]         ` <4A71AD5E.4080704@uiuc.edu>
2009-07-30 14:34           ` vimal singh
2009-07-30 14:53           ` Sebastian Andrzej Siewior
2009-07-30 15:13             ` vimal singh
     [not found]               ` <4A71B940.80607@uiuc.edu>
2009-07-30 15:24                 ` vimal singh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox