Felix Singer has submitted this change. ( https://review.coreboot.org/c/flashrom/+/67840 )
Change subject: spi25: Debug flashrom crash when Write Protect is ON ......................................................................
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 --- M spi25_statusreg.c 1 file changed, 43 insertions(+), 1 deletion(-)
Approvals: build bot (Jenkins): Verified Felix Singer: Looks good to me, approved Angel Pons: Looks good to me, approved Edward O'Callaghan: Looks good to me, approved Nikolai Artemiev: Looks good to me, but someone else must approve
diff --git a/spi25_statusreg.c b/spi25_statusreg.c index 05c7acf..de629a9 100644 --- a/spi25_statusreg.c +++ b/spi25_statusreg.c @@ -186,7 +186,8 @@ 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");