[U-Boot] [PATCH 2/2] fat: cannot compare bytes and sectors

The code multiples the FAT size in sectors by the sector size and then tries to compare that to the number of sectors in the 'getsize' variable. While fixing this, also change the initial value of 'getsize' as the division of FATBUFSIZE by the sector size gets us FATBUFBLOCKS.
Signed-off-by: Sergei Shtylyov sshtylyov@mvista.com
--- fs/fat/fat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Index: u-boot/fs/fat/fat.c =================================================================== --- u-boot.orig/fs/fat/fat.c +++ u-boot/fs/fat/fat.c @@ -209,16 +209,17 @@ static __u32 get_fatent (fsdata *mydata,
/* Read a new block of FAT entries into the cache. */ if (bufnum != mydata->fatbufnum) { - __u32 getsize = FATBUFSIZE / mydata->sect_size; + __u32 getsize = FATBUFBLOCKS; __u8 *bufptr = mydata->fatbuf; __u32 fatlength = mydata->fatlength; __u32 startblock = bufnum * FATBUFBLOCKS;
+ if (getsize > fatlength) + getsize = fatlength; + fatlength *= mydata->sect_size; /* We want it in bytes now */ startblock += mydata->fat_sect; /* Offset from start of disk */
- if (getsize > fatlength) - getsize = fatlength; if (disk_read(startblock, getsize, bufptr) < 0) { debug("Error reading FAT blocks\n"); return ret;

Dear Sergei Shtylyov,
In message 201108082339.29933.sshtylyov@ru.mvista.com you wrote:
The code multiples the FAT size in sectors by the sector size and then tries to compare that to the number of sectors in the 'getsize' variable. While fixing this, also change the initial value of 'getsize' as the division of FATBUFSIZE by the sector size gets us FATBUFBLOCKS.
Signed-off-by: Sergei Shtylyov sshtylyov@mvista.com
fs/fat/fat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (2)
-
Sergei Shtylyov
-
Wolfgang Denk