summaryrefslogtreecommitdiffstats
path: root/flashrom.c
diff options
context:
space:
mode:
authorEdward O'Callaghan <quasisec@google.com>2022-10-17 12:31:59 +1100
committerEdward O'Callaghan <quasisec@chromium.org>2022-12-12 00:02:26 +0000
commit1e01eefcba573c436d55b863c7972b3029564215 (patch)
treeaa8850783eb557f4921020e8171fbd7c3ea1ade3 /flashrom.c
parent78e421bdf73d5739daa25a9f71b2c323dc98e840 (diff)
downloadflashrom-1e01eefcba573c436d55b863c7972b3029564215.tar.gz
flashrom-1e01eefcba573c436d55b863c7972b3029564215.tar.bz2
flashrom-1e01eefcba573c436d55b863c7972b3029564215.zip
tree/: Replace NULL-case of programmer_delay() with internal_delay
Replace `programmer_delay(NULL, [..])` calls with direct `internal_delay([..])` dispatches explicitly. Custom driver delays remain hooked as well as core flashrom logic. The NULL base case of 'programmer_delay()' then becomes a condition to validate for layering violations or invalid flash contexts. Change-Id: I1da230804d5e8f47a6e281feb66f381514dc6861 Signed-off-by: Edward O'Callaghan <quasisec@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/68434 Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'flashrom.c')
-rw-r--r--flashrom.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/flashrom.c b/flashrom.c
index d0f0d2d44..3e75eb353 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -259,8 +259,20 @@ void programmer_delay(const struct flashctx *flash, unsigned int usecs)
if (usecs == 0)
return;
- if (!flash)
+ /**
+ * Drivers should either use internal_delay() directly or their
+ * own custom delay. Only core flashrom logic calls programmer_delay()
+ * which should always have a valid flash context. A NULL context
+ * more than likely indicates a layering violation or BUG however
+ * for now dispatch a internal_delay() as a safe default for the NULL
+ * base case.
+ */
+ if (!flash) {
+ msg_perr("%s called with NULL flash context. "
+ "Please report a bug at flashrom@flashrom.org\n",
+ __func__);
return internal_delay(usecs);
+ }
if (flash->mst->buses_supported & BUS_SPI) {
if (flash->mst->spi.delay)