Deleted check for equality in flash image header and partition
header. Skipping flash after just checking a 1K header is incorrect in the case where something scribbles over the partition after the header because flash_image would not be able to rewrite the whole partition due to this check. Also, Samsung devices use a combined boot and recovery image where the header is the same even if the initramfs changes and these do not get flashed even if the boot.img is actually different due to different appended initramfs. Change-Id: I53ab0a23347cdf1fa7ff58dff37e812fd84645be
This commit is contained in:
parent
45df699a5e
commit
7e70b6be7f
@ -586,8 +586,6 @@ int cmd_mtd_restore_raw_partition(const char *partition_name, const char *filena
|
||||
return -1;
|
||||
}
|
||||
|
||||
// If the first part of the file matches the partition, skip writing
|
||||
|
||||
int fd = open(filename, O_RDONLY);
|
||||
if (fd < 0)
|
||||
{
|
||||
@ -603,23 +601,6 @@ int cmd_mtd_restore_raw_partition(const char *partition_name, const char *filena
|
||||
return -1;
|
||||
}
|
||||
|
||||
MtdReadContext *in = mtd_read_partition(partition);
|
||||
if (in == NULL) {
|
||||
printf("error opening %s: %s\n", partition, strerror(errno));
|
||||
// just assume it needs re-writing
|
||||
} else {
|
||||
char check[HEADER_SIZE];
|
||||
int checklen = mtd_read_data(in, check, sizeof(check));
|
||||
if (checklen <= 0) {
|
||||
printf("error reading %s: %s\n", partition_name, strerror(errno));
|
||||
// just assume it needs re-writing
|
||||
} else if (checklen == headerlen && !memcmp(header, check, headerlen)) {
|
||||
printf("header is the same, not flashing %s\n", partition_name);
|
||||
return 0;
|
||||
}
|
||||
mtd_read_close(in);
|
||||
}
|
||||
|
||||
// Skip the header (we'll come back to it), write everything else
|
||||
printf("flashing %s from %s\n", partition_name, filename);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user