2024-05-28 20:50:15

by Armin Wolf

[permalink] [raw]
Subject: [PATCH v2 2/2] platform/x86: dell-smbios: Simplify error handling

When the allocation of value_name fails, the error handling code
uses two gotos for error handling, which is not necessary.

Simplify the error handling in this case by only using a single goto.

Tested on a Dell Inspiron 3505.

Signed-off-by: Armin Wolf <[email protected]>
---
Changes since v1:
- add patch
---
drivers/platform/x86/dell/dell-smbios-base.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/platform/x86/dell/dell-smbios-base.c b/drivers/platform/x86/dell/dell-smbios-base.c
index 86b95206cb1b..b562ed99ec4e 100644
--- a/drivers/platform/x86/dell/dell-smbios-base.c
+++ b/drivers/platform/x86/dell/dell-smbios-base.c
@@ -492,19 +492,16 @@ static int build_tokens_sysfs(struct platform_device *dev)
/* add value */
value_name = kasprintf(GFP_KERNEL, "%04x_value",
da_tokens[i].tokenID);
- if (value_name == NULL)
- goto loop_fail_create_value;
+ if (!value_name) {
+ kfree(location_name);
+ goto out_unwind_strings;
+ }

sysfs_attr_init(&token_entries[i].value_attr.attr);
token_entries[i].value_attr.attr.name = value_name;
token_entries[i].value_attr.attr.mode = 0444;
token_entries[i].value_attr.show = value_show;
token_attrs[j++] = &token_entries[i].value_attr.attr;
- continue;
-
-loop_fail_create_value:
- kfree(location_name);
- goto out_unwind_strings;
}
smbios_attribute_group.attrs = token_attrs;

--
2.39.2



2024-05-31 20:43:18

by Ilpo Järvinen

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] platform/x86: dell-smbios: Simplify error handling

On Tue, 28 May 2024, Armin Wolf wrote:

> When the allocation of value_name fails, the error handling code
> uses two gotos for error handling, which is not necessary.
>
> Simplify the error handling in this case by only using a single goto.
>
> Tested on a Dell Inspiron 3505.
>
> Signed-off-by: Armin Wolf <[email protected]>
> ---
> Changes since v1:
> - add patch
> ---
> drivers/platform/x86/dell/dell-smbios-base.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/platform/x86/dell/dell-smbios-base.c b/drivers/platform/x86/dell/dell-smbios-base.c
> index 86b95206cb1b..b562ed99ec4e 100644
> --- a/drivers/platform/x86/dell/dell-smbios-base.c
> +++ b/drivers/platform/x86/dell/dell-smbios-base.c
> @@ -492,19 +492,16 @@ static int build_tokens_sysfs(struct platform_device *dev)
> /* add value */
> value_name = kasprintf(GFP_KERNEL, "%04x_value",
> da_tokens[i].tokenID);
> - if (value_name == NULL)
> - goto loop_fail_create_value;
> + if (!value_name) {
> + kfree(location_name);
> + goto out_unwind_strings;
> + }
>
> sysfs_attr_init(&token_entries[i].value_attr.attr);
> token_entries[i].value_attr.attr.name = value_name;
> token_entries[i].value_attr.attr.mode = 0444;
> token_entries[i].value_attr.show = value_show;
> token_attrs[j++] = &token_entries[i].value_attr.attr;
> - continue;
> -
> -loop_fail_create_value:
> - kfree(location_name);
> - goto out_unwind_strings;
> }
> smbios_attribute_group.attrs = token_attrs;

Good cleanup. Using continue on the main level of a loop is almost never a
good idea.

Reviewed-by: Ilpo J?rvinen <[email protected]>

--
i.