diff options
author | Edward O'Callaghan <quasisec@google.com> | 2022-10-17 12:31:59 +1100 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2022-12-12 00:02:26 +0000 |
commit | 1e01eefcba573c436d55b863c7972b3029564215 (patch) | |
tree | aa8850783eb557f4921020e8171fbd7c3ea1ade3 /flashrom.c | |
parent | 78e421bdf73d5739daa25a9f71b2c323dc98e840 (diff) | |
download | flashrom-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.c | 14 |
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) |