2021-06-01 11:08:12

by Jiapeng Chong

[permalink] [raw]
Subject: [PATCH] ACPI: APEI: ERST: Fix missing error code in erst_init()

The error code is missing in this code scenario, add the error code
'-EINVAL' to the return value 'rc'.

Eliminate the follow smatch warning:

drivers/acpi/apei/erst.c:1114 erst_init() warn: missing error code 'rc'.

Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Jiapeng Chong <[email protected]>
---
drivers/acpi/apei/erst.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index 242f3c2..492d499 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -1110,9 +1110,10 @@ static int __init erst_init(void)

status = acpi_get_table(ACPI_SIG_ERST, 0,
(struct acpi_table_header **)&erst_tab);
- if (status == AE_NOT_FOUND)
+ if (status == AE_NOT_FOUND) {
+ rc = -EINVAL;
goto err;
- else if (ACPI_FAILURE(status)) {
+ } else if (ACPI_FAILURE(status)) {
const char *msg = acpi_format_exception(status);
pr_err("Failed to get table, %s\n", msg);
rc = -EINVAL;
--
1.8.3.1


2021-06-01 20:07:20

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH] ACPI: APEI: ERST: Fix missing error code in erst_init()

On Tue, Jun 01, 2021 at 07:05:53PM +0800, Jiapeng Chong wrote:
> The error code is missing in this code scenario, add the error code
> '-EINVAL' to the return value 'rc'.
>
> Eliminate the follow smatch warning:
>
> drivers/acpi/apei/erst.c:1114 erst_init() warn: missing error code 'rc'.
>
> Reported-by: Abaci Robot <[email protected]>
> Signed-off-by: Jiapeng Chong <[email protected]>

Is this a bug? I can't tell if this is meant to be a "silent" failure,
like with acpi_disabled, erst_disabled, etc.

If it _is_ a bug, then please include:

Fixes: a08f82d08053 ("ACPI, APEI, Error Record Serialization Table (ERST) support")

-Kees

> ---
> drivers/acpi/apei/erst.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
> index 242f3c2..492d499 100644
> --- a/drivers/acpi/apei/erst.c
> +++ b/drivers/acpi/apei/erst.c
> @@ -1110,9 +1110,10 @@ static int __init erst_init(void)
>
> status = acpi_get_table(ACPI_SIG_ERST, 0,
> (struct acpi_table_header **)&erst_tab);
> - if (status == AE_NOT_FOUND)
> + if (status == AE_NOT_FOUND) {
> + rc = -EINVAL;
> goto err;
> - else if (ACPI_FAILURE(status)) {
> + } else if (ACPI_FAILURE(status)) {
> const char *msg = acpi_format_exception(status);
> pr_err("Failed to get table, %s\n", msg);
> rc = -EINVAL;
> --
> 1.8.3.1
>

--
Kees Cook

2021-06-02 06:44:06

by Huang, Ying

[permalink] [raw]
Subject: Re: [PATCH] ACPI: APEI: ERST: Fix missing error code in erst_init()

Kees Cook <[email protected]> writes:

> On Tue, Jun 01, 2021 at 07:05:53PM +0800, Jiapeng Chong wrote:
>> The error code is missing in this code scenario, add the error code
>> '-EINVAL' to the return value 'rc'.
>>
>> Eliminate the follow smatch warning:
>>
>> drivers/acpi/apei/erst.c:1114 erst_init() warn: missing error code 'rc'.
>>
>> Reported-by: Abaci Robot <[email protected]>
>> Signed-off-by: Jiapeng Chong <[email protected]>
>
> Is this a bug? I can't tell if this is meant to be a "silent" failure,
> like with acpi_disabled, erst_disabled, etc.
>
> If it _is_ a bug, then please include:
>
> Fixes: a08f82d08053 ("ACPI, APEI, Error Record Serialization Table (ERST) support")
>
> -Kees
>
>> ---
>> drivers/acpi/apei/erst.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
>> index 242f3c2..492d499 100644
>> --- a/drivers/acpi/apei/erst.c
>> +++ b/drivers/acpi/apei/erst.c
>> @@ -1110,9 +1110,10 @@ static int __init erst_init(void)
>>
>> status = acpi_get_table(ACPI_SIG_ERST, 0,
>> (struct acpi_table_header **)&erst_tab);
>> - if (status == AE_NOT_FOUND)
>> + if (status == AE_NOT_FOUND) {
>> + rc = -EINVAL;

I don't think this is necessary. It isn't an error not to have ERST
table in a machine.

Best Regards,
Huang, Ying

>> goto err;
>> - else if (ACPI_FAILURE(status)) {
>> + } else if (ACPI_FAILURE(status)) {
>> const char *msg = acpi_format_exception(status);
>> pr_err("Failed to get table, %s\n", msg);
>> rc = -EINVAL;
>> --
>> 1.8.3.1
>>