On Sun, Oct 04, 2026 at 11:27:09PM +0800, Xiaoyi Suo wrote: > A few places in lib/ clear a buffer with memset() just before the buffer > goes away. The store is dead by then, so the compiler drops it and > whatever was there stays on the stack. > > Patch 1 imports memzero_explicit() from Linux, where it is a static inline > in include/linux/string.h, and links to the upstream commit it comes from, > so a later fix there can be picked up. Patches 2 to 5 use it, one function > each. > > For sha1_hmac() the caller is the TPM 1.2 code, where the buffer holds a > TPM key's usage auth. Getting it back needs something that reads the > stack afterwards, so what this fixes is how long the secret lives, not a > way to read it from outside. > > Tested with GCC 13.3.0 against main (211de43): each file compiled on its > own with -fdump-tree-dse-details; the dead store pass removes the clears > in all four files before the series and none of them after it. checkpatch > is clean on the five patches. > > Changes in v3: > - the import is its own patch and links to the upstream Linux commit > - one patch per function instead of grouping them together > > Changes in v2: > - use the Linux version of memzero_explicit(), a static inline in > include/linux/string.h, instead of adding a function to lib/string.c > - shorter commit messages, function names instead of line numbers > > Xiaoyi Suo (5): > lib: add memzero_explicit() from Linux > lib: sha1: use memzero_explicit() for the HMAC key schedule > lib: sha256: use memzero_explicit() for the HMAC key schedule > lib: mbedtls: sha1: use memzero_explicit() for the HMAC key schedule > lib: sm3: use memzero_explicit() for the message schedule > > include/linux/string.h | 21 +++++++++++++++++++++ > lib/mbedtls/sha1.c | 8 ++++---- > lib/sha1.c | 8 ++++---- > lib/sha256.c | 10 +++++----- > lib/sm3.c | 4 ++-- > 5 files changed, 36 insertions(+), 15 deletions(-)
Please put this through CI, there are a large number of build failure (qcom_qcs6490_rubikpi3 is but one example). https://docs.u-boot-project.org/en/latest/develop/ci_testing.html -- Tom
signature.asc
Description: PGP signature
