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

Attachment: signature.asc
Description: PGP signature

Reply via email to