[U-Boot] [PATCH] Don't tftp to unknown flash

If a board has a variable number of flash banks, there are empty entries in flash_info[] and CFG_DIRECT_FLASH_TFTP is set, tftp boot fails with "Outside available Flash". This patch skips flash banks with unknown flash ids.
Signed-off-by: Jochen Friedrich jochen@scram.de --- net/tftp.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/net/tftp.c b/net/tftp.c index 84d83ca..5fbcbc3 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -111,7 +111,8 @@ store_block (unsigned block, uchar * src, unsigned len)
for (i=0; i<CFG_MAX_FLASH_BANKS; i++) { /* start address in flash? */ - if (load_addr + offset >= flash_info[i].start[0]) { + if ((flash_info[i].flash_id != FLASH_UNKNOWN) && + (load_addr + offset >= flash_info[i].start[0])) { rc = 1; break; }

Dear Jochen Friedrich,
In message 48BC07E8.2020804@scram.de you wrote:
If a board has a variable number of flash banks, there are empty entries in flash_info[] and CFG_DIRECT_FLASH_TFTP is set, tftp boot fails with "Outside available Flash". This patch skips flash banks with unknown flash ids.
Signed-off-by: Jochen Friedrich jochen@scram.de
net/tftp.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/net/tftp.c b/net/tftp.c index 84d83ca..5fbcbc3 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -111,7 +111,8 @@ store_block (unsigned block, uchar * src, unsigned len)
for (i=0; i<CFG_MAX_FLASH_BANKS; i++) { /* start address in flash? */
if (load_addr + offset >= flash_info[i].start[0]) {
if ((flash_info[i].flash_id != FLASH_UNKNOWN) &&
(load_addr + offset >= flash_info[i].start[0])) { rc = 1; break;
I think the code would be easier to read if you split this off in a separate test, i. e.:
for (i=0; i<CFG_MAX_FLASH_BANKS; i++) { /* start address in flash? */ if (flash_info[i].flash_id != FLASH_UNKNOWN) continue; if (load_addr + offset >= flash_info[i].start[0]) { ... }
Would you please resubmit, if you agree?
Best regards,
Wolfgang Denk
participants (2)
-
Jochen Friedrich
-
Wolfgang Denk