diff mbox

[U-Boot,16/30] dm: cbfs: Fix handling of invalid type

Message ID 1455502619-16093-17-git-send-email-sjg@chromium.org
State Superseded
Delegated to: Simon Glass
Headers show

Commit Message

Simon Glass Feb. 15, 2016, 2:16 a.m. UTC
The comment for file_cbfs_type() says that it returns 0 for an invalid type.
The code appears to check for -1, except that it uses an unsigned variable
to store the type. This results in a warning on 64-bit machines.

Adjust it to make the meaning clearer. Continue to handle the -1 case since
it may be needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 cmd/cbfs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Bin Meng Feb. 16, 2016, 2:51 p.m. UTC | #1
Hi Simon,

On Mon, Feb 15, 2016 at 10:16 AM, Simon Glass <sjg@chromium.org> wrote:
> The comment for file_cbfs_type() says that it returns 0 for an invalid type.
> The code appears to check for -1, except that it uses an unsigned variable
> to store the type. This results in a warning on 64-bit machines.
>
> Adjust it to make the meaning clearer. Continue to handle the -1 case since
> it may be needed.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  cmd/cbfs.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/cmd/cbfs.c b/cmd/cbfs.c
> index 35d8a7a..cdfc9b6 100644
> --- a/cmd/cbfs.c
> +++ b/cmd/cbfs.c
> @@ -103,7 +103,7 @@ int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>         printf("     size              type  name\n");
>         printf("------------------------------------------\n");
>         while (file) {
> -               u32 type = file_cbfs_type(file);
> +               int type = file_cbfs_type(file);

but file_cbfs_type() returns u32 as its type..

>                 char *type_name = NULL;
>                 const char *filename = file_cbfs_name(file);
>
> @@ -140,7 +140,7 @@ int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>                 case CBFS_COMPONENT_CMOS_LAYOUT:
>                         type_name = "cmos layout";
>                         break;
> -               case -1UL:
> +               case -1:

What about: case (u32)-1UL:

>                         type_name = "null";
>                         break;
>                 }
> --

Regards,
Bin
Simon Glass Feb. 29, 2016, 4:19 a.m. UTC | #2
Hi Bin,

On 16 February 2016 at 07:51, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Mon, Feb 15, 2016 at 10:16 AM, Simon Glass <sjg@chromium.org> wrote:
>> The comment for file_cbfs_type() says that it returns 0 for an invalid type.
>> The code appears to check for -1, except that it uses an unsigned variable
>> to store the type. This results in a warning on 64-bit machines.
>>
>> Adjust it to make the meaning clearer. Continue to handle the -1 case since
>> it may be needed.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>>
>>  cmd/cbfs.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/cmd/cbfs.c b/cmd/cbfs.c
>> index 35d8a7a..cdfc9b6 100644
>> --- a/cmd/cbfs.c
>> +++ b/cmd/cbfs.c
>> @@ -103,7 +103,7 @@ int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>         printf("     size              type  name\n");
>>         printf("------------------------------------------\n");
>>         while (file) {
>> -               u32 type = file_cbfs_type(file);
>> +               int type = file_cbfs_type(file);
>
> but file_cbfs_type() returns u32 as its type..
>
>>                 char *type_name = NULL;
>>                 const char *filename = file_cbfs_name(file);
>>
>> @@ -140,7 +140,7 @@ int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>                 case CBFS_COMPONENT_CMOS_LAYOUT:
>>                         type_name = "cmos layout";
>>                         break;
>> -               case -1UL:
>> +               case -1:
>
> What about: case (u32)-1UL:

Actually they are the same thing. This code is pretty horrible - I
suspect the return value of -1 is intended, but since it is u32 they
use -1UL. But there is no need for that really.

>
>>                         type_name = "null";
>>                         break;
>>                 }
>> --

Regards,
Simon
diff mbox

Patch

diff --git a/cmd/cbfs.c b/cmd/cbfs.c
index 35d8a7a..cdfc9b6 100644
--- a/cmd/cbfs.c
+++ b/cmd/cbfs.c
@@ -103,7 +103,7 @@  int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 	printf("     size              type  name\n");
 	printf("------------------------------------------\n");
 	while (file) {
-		u32 type = file_cbfs_type(file);
+		int type = file_cbfs_type(file);
 		char *type_name = NULL;
 		const char *filename = file_cbfs_name(file);
 
@@ -140,7 +140,7 @@  int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 		case CBFS_COMPONENT_CMOS_LAYOUT:
 			type_name = "cmos layout";
 			break;
-		case -1UL:
+		case -1:
 			type_name = "null";
 			break;
 		}