New patch at the end of this mail! On Sun, Jul 06, 2008 at 08:57:34PM +0200, Wolfgang Denk wrote: > In message <[EMAIL PROTECTED]> you wrote: > > > > +void default_env(void) > > +{ > > + if (sizeof(default_environment) > ENV_SIZE) > > + { > > + puts ("*** Error - default environment is too large\n\n"); > > + return; > > + } > > Incorrect brace style.
just moving one piece of code around here. Didn't want to introduce more whitespace changes than needed in order to make clear there is no functional change, but just code reorganization. Changed it now. > > + memset (env_ptr, 0, sizeof(env_t)); > > + memcpy (env_ptr->data, > > + default_environment, > > + sizeof(default_environment)); > > Put on one line ? too long for one line, but works on two lines. > > --- u-boot.orig/common/env_common.c > > +++ u-boot/common/env_common.c > ... > > - if (sizeof(default_environment) > ENV_SIZE) > ... > > --- u-boot.orig/common/env_nand.c > > +++ u-boot/common/env_nand.c > ... > > - if (default_environment_size > CFG_ENV_SIZE){ > > Looks like a sleeping bug to me... yes, indeed. should have been ENV_SIZE before... with the old code you can overflow env_ptr->data. > > +void default_env(void); > > Please name "set_default_env()". done. *********************** Remove code duplication for setting the default environment common/env_common.c (default_env): new function that resets the environment to the default value common/env_common.c (env_relocate): use default_env instead of own copy common/env_nand.c (env_relocate_spec): use default_env instead of own copy include/environment.h: added default_env prototype Signed-off-by: Werner Almesberger <[EMAIL PROTECTED]> Signed-off-by: Harald Welte <[EMAIL PROTECTED]> Index: u-boot/common/env_common.c =================================================================== --- u-boot.orig/common/env_common.c +++ u-boot/common/env_common.c @@ -192,6 +192,23 @@ } } +void set_default_env(void) +{ + if (sizeof(default_environment) > ENV_SIZE) { + puts ("*** Error - default environment is too large\n\n"); + return; + } + + memset(env_ptr, 0, sizeof(env_t)); + memcpy(env_ptr->data, default_environment, + sizeof(default_environment)); +#ifdef CFG_REDUNDAND_ENVIRONMENT + env_ptr->flags = 0xFF; +#endif + env_crc_update (); + gd->env_valid = 1; +} + void env_relocate (void) { DEBUGF ("%s[%d] offset = 0x%lx\n", __FUNCTION__,__LINE__, @@ -228,22 +245,7 @@ puts ("*** Warning - bad CRC, using default environment\n\n"); show_boot_progress (-60); #endif - - if (sizeof(default_environment) > ENV_SIZE) - { - puts ("*** Error - default environment is too large\n\n"); - return; - } - - memset (env_ptr, 0, sizeof(env_t)); - memcpy (env_ptr->data, - default_environment, - sizeof(default_environment)); -#ifdef CFG_REDUNDAND_ENVIRONMENT - env_ptr->flags = 0xFF; -#endif - env_crc_update (); - gd->env_valid = 1; + set_default_env(); } else { env_relocate_spec (); Index: u-boot/common/env_nand.c =================================================================== --- u-boot.orig/common/env_nand.c +++ u-boot/common/env_nand.c @@ -363,19 +363,7 @@ static void use_default() { puts ("*** Warning - bad CRC or NAND, using default environment\n\n"); - - if (default_environment_size > CFG_ENV_SIZE){ - puts ("*** Error - default environment is too large\n\n"); - return; - } - - memset (env_ptr, 0, sizeof(env_t)); - memcpy (env_ptr->data, - default_environment, - default_environment_size); - env_ptr->crc = crc32(0, env_ptr->data, ENV_SIZE); - gd->env_valid = 1; - + set_default_env(); } #endif Index: u-boot/include/environment.h =================================================================== --- u-boot.orig/include/environment.h +++ u-boot/include/environment.h @@ -117,4 +117,7 @@ /* Function that updates CRC of the enironment */ void env_crc_update (void); +/* [re]set to the default environment */ +void set_default_env(void); + #endif /* _ENVIRONMENT_H_ */ -- - Harald Welte <[EMAIL PROTECTED]> http://laforge.gnumonks.org/ ============================================================================ "Privacy in residential applications is a desirable marketing option." (ETSI EN 300 175-7 Ch. A6)
signature.asc
Description: Digital signature
------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users