diff options
author | Yuji Sasaki <sasakiy@chromium.org> | 2019-03-22 10:59:50 -0700 |
---|---|---|
committer | Felix Singer <felixsinger@posteo.net> | 2022-09-29 17:03:51 +0000 |
commit | a3983c779600bbb265c08ad1ff57c07593294c2f (patch) | |
tree | 09e9b2428f42fbc9bdddbd8eec814463d11fea86 | |
parent | e72d766caf3924fe5e5d00927ac0ed90d3a76d9a (diff) | |
download | flashrom-a3983c779600bbb265c08ad1ff57c07593294c2f.tar.gz flashrom-a3983c779600bbb265c08ad1ff57c07593294c2f.tar.bz2 flashrom-a3983c779600bbb265c08ad1ff57c07593294c2f.zip |
spi25: Debug flashrom crash when Write Protect is ON
When hardware write protect is applied, flashrom crashed and
generate coredump. spi_disable_blockprotect_generic() calls
flash->chip->printlock() method when disable was failed,
but this method is optional, can be NULL depends on type of
flashrom chip. NULL pointer check before call is added to
avoid crash.
BRANCH=none
BUG=b:129083894
TEST=Run on Mistral P2
(On CR50 console, run "wp disable")
flashrom --wp-range 0 0x400000
flashrom --wp-enable
(On CR50 console, run "wp enable")
flashrom -r /tmp/test.bin
Verify "Block protection could not be disabled!" is shown,
but flash read completes.
Signed-off-by: Yuji Sasaki <sasakiy@chromium.org>
Change-Id: I81094ab5f16a85871fc9869a2e285eddbbbdec4e
Reviewed-on: https://chromium-review.googlesource.com/1535140
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
Reviewed-by: SANTHOSH JANARDHANA HASSAN <sahassan@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/40468
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/67840
Reviewed-by: Felix Singer <felixsinger@posteo.net>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Nikolai Artemiev <nartemiev@google.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-rw-r--r-- | spi25_statusreg.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/spi25_statusreg.c b/spi25_statusreg.c index 05c7acfdc..de629a961 100644 --- a/spi25_statusreg.c +++ b/spi25_statusreg.c @@ -186,7 +186,8 @@ static int spi_disable_blockprotect_generic(struct flashctx *flash, uint8_t bp_m status = spi_read_status_register(flash); if ((status & bp_mask) != 0) { msg_cerr("Block protection could not be disabled!\n"); - flash->chip->printlock(flash); + if (flash->chip->printlock) + flash->chip->printlock(flash); return 1; } msg_cdbg("disabled.\n"); |