summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuji Sasaki <sasakiy@chromium.org>2019-03-22 10:59:50 -0700
committerFelix Singer <felixsinger@posteo.net>2022-09-29 17:01:51 +0000
commit3265bb2427d6abb24f4d3760aa786d8adc466597 (patch)
treee3c0e981ec54cd746c72a37125f4fb6d8509a6fc
parentd43c299ca8c4f3985eba6bc6e7266e67b37c25cb (diff)
downloadflashrom-3265bb2427d6abb24f4d3760aa786d8adc466597.tar.gz
flashrom-3265bb2427d6abb24f4d3760aa786d8adc466597.tar.bz2
flashrom-3265bb2427d6abb24f4d3760aa786d8adc466597.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/+/67850 Reviewed-by: Felix Singer <felixsinger@posteo.net>
-rw-r--r--spi25_statusreg.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/spi25_statusreg.c b/spi25_statusreg.c
index 4cf702323..83d108910 100644
--- a/spi25_statusreg.c
+++ b/spi25_statusreg.c
@@ -182,7 +182,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");