[U-Boot-Users] [PATCH] cfi_flash.c bug fix

Grant Likely grant.likely at secretlab.ca
Tue Jul 3 19:20:56 CEST 2007


On 7/3/07, eran.liberty at gmail.com <eran.liberty at gmail.com> wrote:
> this fix a possible bug which occur when the config file defines a flash which is actually smaller than the physical one.
> on top of that, if you want to force your flash to appear smaller you can define CONFIG_FORCE_FLASH_BANK_SIZE the a corresponding value.
>
> Signed-off-by: Eran Liberty <eran.liberty at gmail.com>
>
> Index: drivers/cfi_flash.c
> ===================================================================
> --- drivers/cfi_flash.c (.../tags/trunk/20070620_2_merge_to_exsw6000)   (revision 69)
> +++ drivers/cfi_flash.c (.../branches/exsw6000) (revision 69)
> @@ -1281,7 +1281,9 @@
>                         erase_region_count = (tmp & 0xffff) + 1;
>                         debug ("erase_region_count = %d erase_region_size = %d\n",
>                                 erase_region_count, erase_region_size);
> -                       for (j = 0; j < erase_region_count; j++) {
> +                       for (j = 0;
> +                            j < erase_region_count
> +                            && sect_cnt < CFG_MAX_FLASH_SECT; j++) {
>                                 info->start[sect_cnt] = sector;
>                                 sector += (erase_region_size * size_ratio);
>
Nit: rather than adding a test in the for loop, can you modify
erase_region_count before the loop to reflect the maximum size?  I
think it will result in cleaner code.

ie:
if (erase_region_count > CFG_MAX_FLASH_SECT - sect_cnt)
        erase_region_count = CFG_MAX_FLASH_SECT - sect_cnt;
(but double check that I haven't created an off-by-one error)

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195




More information about the U-Boot mailing list