ACPI: APEI: ERST: Fix missing error code in erst_init()

Message ID 1622545553-19160-1-git-send-email-jiapeng.chong@linux.alibaba.com
State New
Headers show
Series
  • ACPI: APEI: ERST: Fix missing error code in erst_init()
Related show

Commit Message

Jiapeng Chong June 1, 2021, 11:05 a.m.
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 <abaci@linux.alibaba.com>
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
 drivers/acpi/apei/erst.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Kees Cook June 1, 2021, 8:05 p.m. | #1
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 <abaci@linux.alibaba.com>
> Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>

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
>
Huang, Ying June 2, 2021, 6:13 a.m. | #2
Kees Cook <keescook@chromium.org> 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 <abaci@linux.alibaba.com>

>> Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>

>

> 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

>>

Patch

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;