The fdt boardsetup command criteria was not unique
PATCH 1/1 The fdt boardsetup command criteria was not unique
It was checking just for "b", which is not unique with respect to the "boot" command. Change to check for "boa"[rdsetup].
--- common/cmd_fdt.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
common/cmd_fdt.c +2 -1
@@ -403,7 +403,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) }#ifdef CONFIG_OF_BOARD_SETUP /* Call the board-specific fixup routine */ - else if (argv[1][0] == 'b') + else if ((argv[1][0] == 'b') && (argv[1][1] == 'o') && + (argv[1][2] == 'a')) ft_board_setup(fdt, gd->bd);#endif /* Create a chosen node */
Signature · 1 line
1.5.5.1
PATCH 1/1 The fdt boardsetup command criteria was not unique
common/cmd_fdt.c int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) · line 409
Quoted 13 lines · Jerry Van Baren
common/cmd_fdt.c +2
-1@@ -403,7 +403,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) }#ifdef CONFIG_OF_BOARD_SETUP /* Call the board-specific fixup routine */ - else if (argv[1][0] == 'b') + else if ((argv[1][0] == 'b') && (argv[1][1] == 'o') && + (argv[1][2] == 'a')) ft_board_setup(fdt, gd->bd);#endif
strncmp() would be clearer...
-Scott
PATCH 1/1 The fdt boardsetup command criteria was not unique
Quoted 17 lines · Scott Wood
common/cmd_fdt.c int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) · line 409
Quoted 13 lines · Jerry Van Baren
common/cmd_fdt.c +2
-1@@ -403,7 +403,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) }#ifdef CONFIG_OF_BOARD_SETUP /* Call the board-specific fixup routine */ - else if (argv[1][0] == 'b') + else if ((argv[1][0] == 'b') && (argv[1][1] == 'o') && + (argv[1][2] == 'a')) ft_board_setup(fdt, gd->bd);#endif
strncmp()would be clearer...
Quoted 1 line
-Scott
Yeah, but that is the way the rest of them are. :-/ Hmmm, looking at the other command/cmd_*.c files, it looks like my parsing character-by-character is in the minority vs. strncmp().
Best regards,
gvb
PATCH 1/1 Use strncmp() for the fdt command
In reply to Scott WoodCleaner than doing multiple conditionals on characters.
---
Per Scott Wood's suggestion.
gvb
common/cmd_fdt.c | 16 +++++++--------- 1 files changed, 7 insertions(+), 9 deletions(-)
common/cmd_fdt.c +7 -9
@@ -94,7 +94,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])/******************************************************************** * Move the fdt ********************************************************************/ - }else if ((argv[1 ][0 ] =='m' ) && (argv[1 ][1 ] =='o' )) { + }else if (strncmp (argv[1 ],"mo" ,2 ) ==0 ) {struct fdt_header *newaddr;int len;int err;
@@ -144,7 +144,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])/******************************************************************** * Make a new node ********************************************************************/ - }else if ((argv[1 ][0 ] =='m' ) && (argv[1 ][1 ] =='k' )) { + }else if (strncmp (argv[1 ],"mk" ,2 ) ==0 ) {char *pathp;/* path */ char *nodep;/* new node to add */ int nodeoffset;/* node offset from libfdt */
@@ -259,7 +259,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])/******************************************************************** * Remove a property/node ********************************************************************/ - }else if ((argv[1 ][0 ] =='r' ) && (argv[1 ][1 ] =='m' )) { + }else if (strncmp (argv[1 ],"rm" ,2 ) ==0 ) {int nodeoffset;/* node offset from libfdt */ int err;
@@ -323,15 +323,14 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])/******************************************************************** * Set boot cpu id ********************************************************************/ - }else if ((argv[1 ][0 ] =='b' ) && (argv[1 ][1 ] =='o' ) && - (argv[1 ][2 ] =='o' )) { + }else if (strncmp (argv[1 ],"boo" ,3 ) ==0 ) {unsigned long tmp =simple_strtoul (argv[2 ],NULL ,16 );fdt_set_boot_cpuid_phys (fdt, tmp);/******************************************************************** * memory command ********************************************************************/ - }else if ((argv[1 ][0 ] =='m' ) && (argv[1 ][1 ] =='e' )) { + }else if (strncmp (argv[1 ],"me" ,2 ) ==0 ) {uint64_t addr, size;int err;#ifdef CFG_64BIT_STRTOUL
@@ -348,7 +347,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])/******************************************************************** * mem reserve commands ********************************************************************/ - }else if ((argv[1 ][0 ] =='r' ) && (argv[1 ][1 ] =='s' )) { + }else if (strncmp (argv[1 ],"rs" ,2 ) ==0 ) {if (argv[2 ][0 ] =='p' ) {uint64_t addr, size;int total =fdt_num_mem_rsv (fdt);
@@ -403,8 +402,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) }#ifdef CONFIG_OF_BOARD_SETUP /* Call the board-specific fixup routine */ - else if ((argv[1][0] == 'b') && (argv[1][1] == 'o') && - (argv[1][2] == 'a')) + else if (strncmp(argv[1], "boa", 3) == 0) ft_board_setup(fdt, gd->bd);#endif /* Create a chosen node */
Signature · 1 line
1.5.5.1