mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
flashrom: initialize restore func count in correct place
Set `flash->chip_restore_fn_count` to zero before calling the chip's unlock funciton in `prepare_flash_access()`. Previously `flash->chip_restore_fn_count` was uninitialized before calling `chip->unlock()` and subsequently reset after the dispatch by initializing it. This caused the restore handler that is registered within `spi_disable_blockprotect_generic()` to be lost. BUG=b:228945411 BRANCH=none TEST=enable wp; flashrom -w; check wp still enabled. Change-Id: I4c7df424bd2ae2b5fb2a2ab6b47a3c9ff3233acf Signed-off-by: Nikolai Artemiev <nartemiev@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/63881 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
6f781bdaea
commit
b86ae179ad
@ -1825,6 +1825,9 @@ int prepare_flash_access(struct flashctx *const flash,
|
|||||||
if (map_flash(flash) != 0)
|
if (map_flash(flash) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
/* Initialize chip_restore_fn_count before chip unlock calls. */
|
||||||
|
flash->chip_restore_fn_count = 0;
|
||||||
|
|
||||||
/* Given the existence of read locks, we want to unlock for read,
|
/* Given the existence of read locks, we want to unlock for read,
|
||||||
erase and write. */
|
erase and write. */
|
||||||
if (flash->chip->unlock)
|
if (flash->chip->unlock)
|
||||||
@ -1832,7 +1835,6 @@ int prepare_flash_access(struct flashctx *const flash,
|
|||||||
|
|
||||||
flash->address_high_byte = -1;
|
flash->address_high_byte = -1;
|
||||||
flash->in_4ba_mode = false;
|
flash->in_4ba_mode = false;
|
||||||
flash->chip_restore_fn_count = 0;
|
|
||||||
|
|
||||||
/* Be careful about 4BA chips and broken masters */
|
/* Be careful about 4BA chips and broken masters */
|
||||||
if (flash->chip->total_size > 16 * 1024 && spi_master_no_4ba_modes(flash)) {
|
if (flash->chip->total_size > 16 * 1024 && spi_master_no_4ba_modes(flash)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user