[flashrom] [PATCH 1/2] revert flashctx to flashchip in block_eraser helper functions
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Sat Dec 31 21:54:24 CET 2011
Am 28.12.2011 01:57 schrieb Stefan Tauner:
> Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
Sorry, Nack.
Quoting from your other mail:
> it is easier to "upcast" some flashctx
> "objects" to flashchip (which is safe)
AFAICS this violates the C standard.
http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule
The offending hunks are below:
> diff --git a/flashrom.c b/flashrom.c
> index f1a6165..68b6d97 100644
> --- a/flashrom.c
> +++ b/flashrom.c
> @@ -1313,7 +1313,7 @@ int erase_and_write_flash(struct flashctx *flash, uint8_t *oldcontents,
> int k, ret = 1;
> uint8_t *curcontents;
> unsigned long size = flash->total_size * 1024;
> - unsigned int usable_erasefunctions = count_usable_erasers(flash);
> + unsigned int usable_erasefunctions = count_usable_erasers((struct flashchip*) flash);
>
> msg_cinfo("Erasing and writing flash chip... ");
> curcontents = malloc(size);
> @@ -1332,7 +1332,7 @@ int erase_and_write_flash(struct flashctx *flash, uint8_t *oldcontents,
> break;
> }
> msg_cdbg("Trying erase function %i... ", k);
> - if (check_block_eraser(flash, k, 1))
> + if (check_block_eraser((struct flashchip*) flash, k, 1))
> continue;
> usable_erasefunctions--;
> ret = walk_eraseregions(flash, k, &erase_and_write_block_helper,
> @@ -1680,7 +1680,7 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it,
> int ret = 0;
> unsigned long size = flash->total_size * 1024;
>
> - if (chip_safety_check(flash, force, read_it, write_it, erase_it, verify_it)) {
> + if (chip_safety_check((struct flashchip*) flash, force, read_it, write_it, erase_it, verify_it)) {
> msg_cerr("Aborting.\n");
> ret = 1;
> goto out_nofree;
--
http://www.hailfinger.org/
More information about the flashrom
mailing list