mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
tools/env: compute size of usable area only once
for double buffering to work, redundant buffers must have equal size Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
This commit is contained in:
parent
cedb341e7f
commit
f71cee4bfc
1 changed files with 18 additions and 14 deletions
32
tools/env/fw_env.c
vendored
32
tools/env/fw_env.c
vendored
|
@ -75,7 +75,8 @@ static int dev_current;
|
|||
|
||||
#define CUR_ENVSIZE ENVSIZE(dev_current)
|
||||
|
||||
#define ENV_SIZE getenvsize()
|
||||
static unsigned long usable_envsize;
|
||||
#define ENV_SIZE usable_envsize
|
||||
|
||||
struct env_image_single {
|
||||
uint32_t crc; /* CRC32 over data bytes */
|
||||
|
@ -124,18 +125,6 @@ static int parse_config (void);
|
|||
#if defined(CONFIG_FILE)
|
||||
static int get_config (char *);
|
||||
#endif
|
||||
static inline ulong getenvsize (void)
|
||||
{
|
||||
ulong rc = CUR_ENVSIZE - sizeof(uint32_t);
|
||||
|
||||
if (HaveRedundEnv)
|
||||
rc -= sizeof (char);
|
||||
|
||||
if (common_args.aes_flag)
|
||||
rc &= ~(AES_KEY_LENGTH - 1);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static char *skip_chars(char *s)
|
||||
{
|
||||
|
@ -953,7 +942,7 @@ static int flash_flag_obsolete (int dev, int fd, off_t offset)
|
|||
static int env_aes_cbc_crypt(char *payload, const int enc, uint8_t *key)
|
||||
{
|
||||
uint8_t *data = (uint8_t *)payload;
|
||||
const int len = getenvsize();
|
||||
const int len = usable_envsize;
|
||||
uint8_t key_exp[AES_EXPAND_KEY_LENGTH];
|
||||
uint32_t aes_blocks;
|
||||
|
||||
|
@ -1382,6 +1371,21 @@ static int parse_config ()
|
|||
DEVNAME (1), strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (HaveRedundEnv && ENVSIZE(0) != ENVSIZE(1)) {
|
||||
ENVSIZE(0) = ENVSIZE(1) = min(ENVSIZE(0), ENVSIZE(1));
|
||||
fprintf(stderr,
|
||||
"Redundant environments have inequal size, set to 0x%08lx\n",
|
||||
ENVSIZE(1));
|
||||
}
|
||||
|
||||
usable_envsize = CUR_ENVSIZE - sizeof(uint32_t);
|
||||
if (HaveRedundEnv)
|
||||
usable_envsize -= sizeof(char);
|
||||
|
||||
if (common_args.aes_flag)
|
||||
usable_envsize &= ~(AES_KEY_LENGTH - 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue