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