diff mbox

platform/x86: dell-smbios: Fix error handling in build_tokens_sysfs()

Message ID 20180118104503.GA30055@mwanda (mailing list archive)
State Changes Requested, archived
Headers show

Commit Message

Dan Carpenter Jan. 18, 2018, 10:45 a.m. UTC
We're freeing "value_name" which is NULL, so that's a no-op, instead of
"location_name" and then we don't free the first zero-th elements of
token_location_attrs[] and token_value_attrs[].

Fixes: 33b9ca1e53b4 ("platform/x86: dell-smbios: Add a sysfs interface for SMBIOS tokens")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Comments

Walter Harms Jan. 18, 2018, 10:50 a.m. UTC | #1
Am 18.01.2018 11:45, schrieb Dan Carpenter:
> We're freeing "value_name" which is NULL, so that's a no-op, instead of
> "location_name" and then we don't free the first zero-th elements of
> token_location_attrs[] and token_value_attrs[].
> 
> Fixes: 33b9ca1e53b4 ("platform/x86: dell-smbios: Add a sysfs interface for SMBIOS tokens")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/platform/x86/dell-smbios.c b/drivers/platform/x86/dell-smbios.c
> index 6a60db515bda..d8a21c7ba594 100644
> --- a/drivers/platform/x86/dell-smbios.c
> +++ b/drivers/platform/x86/dell-smbios.c
> @@ -512,7 +512,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
>  		continue;
>  
>  loop_fail_create_value:
> -		kfree(value_name);
> +		kfree(location_name);
>  		goto out_unwind_strings;
>  	}
>  	smbios_attribute_group.attrs = token_attrs;
> @@ -523,7 +523,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
>  	return 0;
>  
>  out_unwind_strings:
> -	for (i = i-1; i > 0; i--) {
> +	for (i = i-1; i >= 0; i--) {
>  		kfree(token_location_attrs[i].attr.name);
>  		kfree(token_value_attrs[i].attr.name);
>  	}

would you mind to reverse order here ?
you know programmers are terrible at couting backwards.


re,
 wh

> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Dan Carpenter Jan. 18, 2018, 11:03 a.m. UTC | #2
On Thu, Jan 18, 2018 at 11:50:30AM +0100, walter harms wrote:
> > @@ -523,7 +523,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
> >  	return 0;
> >  
> >  out_unwind_strings:
> > -	for (i = i-1; i > 0; i--) {
> > +	for (i = i-1; i >= 0; i--) {
> >  		kfree(token_location_attrs[i].attr.name);
> >  		kfree(token_value_attrs[i].attr.name);
> >  	}
> 
> would you mind to reverse order here ?
> you know programmers are terrible at couting backwards.

I prefer to always unwind in reverse order so I'd prefer to leave it
as-is.

regards,
dan carpenter
Walter Harms Jan. 18, 2018, 11:20 a.m. UTC | #3
Am 18.01.2018 12:03, schrieb Dan Carpenter:
> On Thu, Jan 18, 2018 at 11:50:30AM +0100, walter harms wrote:
>>> @@ -523,7 +523,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
>>>  	return 0;
>>>  
>>>  out_unwind_strings:
>>> -	for (i = i-1; i > 0; i--) {
>>> +	for (i = i-1; i >= 0; i--) {
>>>  		kfree(token_location_attrs[i].attr.name);
>>>  		kfree(token_value_attrs[i].attr.name);
>>>  	}
>>
>> would you mind to reverse order here ?
>> you know programmers are terrible at couting backwards.
> 
> I prefer to always unwind in reverse order so I'd prefer to leave it
> as-is.


It is just a comment from my side. we can leave the actual decision to the
current maintainer.

re,
 wh

> 
> regards,
> dan carpenter
> 
>
Andy Shevchenko Jan. 18, 2018, 7:21 p.m. UTC | #4
On Thu, Jan 18, 2018 at 1:20 PM, walter harms <wharms@bfs.de> wrote:
> Am 18.01.2018 12:03, schrieb Dan Carpenter:
>> On Thu, Jan 18, 2018 at 11:50:30AM +0100, walter harms wrote:

>>>>  out_unwind_strings:
>>>> -   for (i = i-1; i > 0; i--) {
>>>> +   for (i = i-1; i >= 0; i--) {
>>>>             kfree(token_location_attrs[i].attr.name);
>>>>             kfree(token_value_attrs[i].attr.name);
>>>>     }

>>> would you mind to reverse order here ?
>>> you know programmers are terrible at couting backwards.
>>
>> I prefer to always unwind in reverse order so I'd prefer to leave it
>> as-is.

> It is just a comment from my side. we can leave the actual decision to the
> current maintainer.

Right.
And maintainer would like to see simple:

while (i--) {
    kfree(token_location_attrs[i].attr.name);
    kfree(token_value_attrs[i].attr.name);
}
Andy Shevchenko Jan. 18, 2018, 7:24 p.m. UTC | #5
Walter, please, do not shrink Cc list until you sure person / people
in question is/are not interested in the topic.


On Thu, Jan 18, 2018 at 9:21 PM, Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
> On Thu, Jan 18, 2018 at 1:20 PM, walter harms <wharms@bfs.de> wrote:
>> Am 18.01.2018 12:03, schrieb Dan Carpenter:
>>> On Thu, Jan 18, 2018 at 11:50:30AM +0100, walter harms wrote:
>
>>>>>  out_unwind_strings:
>>>>> -   for (i = i-1; i > 0; i--) {
>>>>> +   for (i = i-1; i >= 0; i--) {
>>>>>             kfree(token_location_attrs[i].attr.name);
>>>>>             kfree(token_value_attrs[i].attr.name);
>>>>>     }
>
>>>> would you mind to reverse order here ?
>>>> you know programmers are terrible at couting backwards.
>>>
>>> I prefer to always unwind in reverse order so I'd prefer to leave it
>>> as-is.
>
>> It is just a comment from my side. we can leave the actual decision to the
>> current maintainer.
>
> Right.
> And maintainer would like to see simple:
>
> while (i--) {
>     kfree(token_location_attrs[i].attr.name);
>     kfree(token_value_attrs[i].attr.name);
> }
>
> --
> With Best Regards,
> Andy Shevchenko
Limonciello, Mario Jan. 19, 2018, 6:32 p.m. UTC | #6
Thanks, yeah this is obviously the correct way to do it.

Acked-by: Mario Limonciello <mario.limonciello@dell.com>

> -----Original Message-----
> From: Dan Carpenter [mailto:dan.carpenter@oracle.com]
> Sent: Thursday, January 18, 2018 4:45 AM
> To: Pali Rohár <pali.rohar@gmail.com>; Limonciello, Mario
> <Mario_Limonciello@Dell.com>
> Cc: Darren Hart <dvhart@infradead.org>; Andy Shevchenko
> <andy@infradead.org>; platform-driver-x86@vger.kernel.org; kernel-
> janitors@vger.kernel.org
> Subject: [PATCH] platform/x86: dell-smbios: Fix error handling in
> build_tokens_sysfs()
> 
> We're freeing "value_name" which is NULL, so that's a no-op, instead of
> "location_name" and then we don't free the first zero-th elements of
> token_location_attrs[] and token_value_attrs[].
> 
> Fixes: 33b9ca1e53b4 ("platform/x86: dell-smbios: Add a sysfs interface for SMBIOS
> tokens")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/drivers/platform/x86/dell-smbios.c b/drivers/platform/x86/dell-
> smbios.c
> index 6a60db515bda..d8a21c7ba594 100644
> --- a/drivers/platform/x86/dell-smbios.c
> +++ b/drivers/platform/x86/dell-smbios.c
> @@ -512,7 +512,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
>  		continue;
> 
>  loop_fail_create_value:
> -		kfree(value_name);
> +		kfree(location_name);
>  		goto out_unwind_strings;
>  	}
>  	smbios_attribute_group.attrs = token_attrs;
> @@ -523,7 +523,7 @@ static int build_tokens_sysfs(struct platform_device *dev)
>  	return 0;
> 
>  out_unwind_strings:
> -	for (i = i-1; i > 0; i--) {
> +	for (i = i-1; i >= 0; i--) {
>  		kfree(token_location_attrs[i].attr.name);
>  		kfree(token_value_attrs[i].attr.name);
>  	}
Pali Rohár Jan. 19, 2018, 11:59 p.m. UTC | #7
On Thursday 18 January 2018 21:24:44 Andy Shevchenko wrote:
> Walter, please, do not shrink Cc list until you sure person / people
> in question is/are not interested in the topic.
> 
> 
> On Thu, Jan 18, 2018 at 9:21 PM, Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Thu, Jan 18, 2018 at 1:20 PM, walter harms <wharms@bfs.de> wrote:
> >> Am 18.01.2018 12:03, schrieb Dan Carpenter:
> >>> On Thu, Jan 18, 2018 at 11:50:30AM +0100, walter harms wrote:
> >
> >>>>>  out_unwind_strings:
> >>>>> -   for (i = i-1; i > 0; i--) {
> >>>>> +   for (i = i-1; i >= 0; i--) {
> >>>>>             kfree(token_location_attrs[i].attr.name);
> >>>>>             kfree(token_value_attrs[i].attr.name);
> >>>>>     }
> >
> >>>> would you mind to reverse order here ?
> >>>> you know programmers are terrible at couting backwards.
> >>>
> >>> I prefer to always unwind in reverse order so I'd prefer to leave it
> >>> as-is.
> >
> >> It is just a comment from my side. we can leave the actual decision to the
> >> current maintainer.
> >
> > Right.
> > And maintainer would like to see simple:
> >
> > while (i--) {
> >     kfree(token_location_attrs[i].attr.name);
> >     kfree(token_value_attrs[i].attr.name);
> > }

For me this looks better.

> >
> > --
> > With Best Regards,
> > Andy Shevchenko
> 
> 
>
diff mbox

Patch

diff --git a/drivers/platform/x86/dell-smbios.c b/drivers/platform/x86/dell-smbios.c
index 6a60db515bda..d8a21c7ba594 100644
--- a/drivers/platform/x86/dell-smbios.c
+++ b/drivers/platform/x86/dell-smbios.c
@@ -512,7 +512,7 @@  static int build_tokens_sysfs(struct platform_device *dev)
 		continue;
 
 loop_fail_create_value:
-		kfree(value_name);
+		kfree(location_name);
 		goto out_unwind_strings;
 	}
 	smbios_attribute_group.attrs = token_attrs;
@@ -523,7 +523,7 @@  static int build_tokens_sysfs(struct platform_device *dev)
 	return 0;
 
 out_unwind_strings:
-	for (i = i-1; i > 0; i--) {
+	for (i = i-1; i >= 0; i--) {
 		kfree(token_location_attrs[i].attr.name);
 		kfree(token_value_attrs[i].attr.name);
 	}