[flashrom] [PATCH 2/3] add check_block_erasers which returns the number of well-defined erasers for a chip

Stefan Tauner stefan.tauner at student.tuwien.ac.at
Thu Jun 30 22:26:25 CEST 2011


On Thu, 30 Jun 2011 21:34:31 +0200
Stefan Tauner <stefan.tauner at student.tuwien.ac.at> wrote:

> On Thu, 30 Jun 2011 20:38:33 +0200
> Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net> wrote:
> 
> > Am 30.06.2011 20:07 schrieb Carl-Daniel Hailfinger:
> > > Am 30.06.2011 19:54 schrieb Carl-Daniel Hailfinger:  
> > > With the changes outlined above:
> > > Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
> > >   
> > 
> > Ahem. I should have quoted the part where a new bug appears, and should
> > have requested a fix for that.
> > 
> > >>> @@ -1814,13 +1824,13 @@ int chip_safety_check(struct flashchip
> > >>> *flash, int force, int read_it, int write } if (erase_it ||
> > >>> write_it) { /* Write needs erase. */ - if (flash->tested &
> > >>> TEST_BAD_ERASE) { + if (flash->tested & TEST_BAD_ERASE && 
> > 
> > As discussed on IRC, this should be ||.
> > 
> > 
> > >>> + !check_block_erasers(flash, 0)) { msg_cerr("Erase is not working
> > >>> on this chip. "); if (!force) 
> > 
> > And once you switch to || above, you may get a segfault if no block
> > erasers exist. Zero usable erase functions is a non-recoverable
> > condition, it can not be overridden with --force.
> > 
> > We do perform that check for more than zero usable erase functions
> > elsewhere already. Either move that check here (with a separate if
> > statement, and add a comment in the original place that checking has
> > moved), or leave it where it is and keep the code here as is.
> 
> i dont understand what you are talking about. the erasers are allocated
> no matter if they "exist" or not in a fix-sized array. a segfault
> could only happen if we try to dereference a block eraser function and
> jump there which we don't do here. what access(es) should segfault
> exactly?
> 
> i have tried my current, reworked patch with:
> "./flashrom -p dummy:bus=spi,emulate="M25P10.RES" -V -c "M25P10.RES"
> -E" after deleting the block erasers for that chip i.e. .block_erasers = {};
> i get the expected output of "Erase is not working on this chip.
> Aborting."
> 

appended is my current version.
-- 
Kind regards/Mit freundlichen Grüßen, Stefan Tauner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-add-count_usable_erasers-which-returns-the-number-of-well-defined-erasers-for-a-chip.patch
Type: text/x-patch
Size: 3193 bytes
Desc: not available
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20110630/b2535389/attachment.patch>


More information about the flashrom mailing list