On 4/18/24 14:54, Ilias Apalodimas wrote:
Hi!
This is v3 of SetVariable at runtime [0]

Nothing changed drastically from v2.
A few more test cases have been added, comments/suggestions have been
addressed and a bug where deleting a variable by setting 'attributes' to
0 has been fixed.

Changes since v2:
- Add more selftests checking for variable deletion as well as the
   VarToFile header format
- Use unaligned sized variables on tests
- Add a new function to get the variable entry length instead of
   repurposing efi_var_mem_compare()
- Converted VarToFile to RO
- Added a few comments requested by Heinrich
- Fixed a bug where SetVariable with attributes set to 0 did not delete
   the variable but returned EFI_INVALID_PARAMETER instead
- Run FWTS 'uefitests' and attach the log in patch #1
- Added r-b tags from Heinrich

Changes since v1:
- Instead of Creating VarToFile at SetVariable, create it on GetVariable.
   This allows us to get rid of the preallocated RT buffer, since the
   address is user provided
- convert Set/GetVariableRT -> Set/GetVariable at runtime
- return EFI_INVALID_PARAM is NV is not set at runtime
- Heinrich sent me the efi_var_collect_mem() variant

Changes since the RFC:
- Return EFI_INVALID_PARAM if attributes are not volatile
- Add EFI_WRITE_PROTECTED checks for BS, RT *only* variables
- Add 2 EFI variables and allow userspace to write the file
- Add selftests

I also have a patch enable QueryVariableInfo [1], but I don't want to
introduce new patches now. This also needs a few more testcases of its
own so I'll send it once we finalize this one.

[0] 
https://lore.kernel.org/u-boot/20240417101928.119115-1-ilias.apalodi...@linaro.org/T/
[1] 
https://source.denx.de/u-boot/custodians/u-boot-tpm/-/commit/ce35270aaeb93686d7e013f3b028808e8af88cc0

Regards
/Ilias

Ilias Apalodimas (4):
   efi_loader: conditionally enable SetvariableRT
   efi_loader: Add OS notifications for SetVariable at runtime
   efi_loader: add an EFI variable with the file contents
   efi_selftest: add tests for setvariableRT

I am missing a defconfig change which is needed to run the unit test in
Gitlab CI. I would prefer testing this on the sandbox.

Best regards

Heinrich


  include/efi_loader.h                          |   4 +
  include/efi_variable.h                        |  16 +-
  lib/charset.c                                 |   2 +-
  lib/efi_loader/Kconfig                        |  16 ++
  lib/efi_loader/efi_runtime.c                  |  42 ++++
  lib/efi_loader/efi_var_common.c               |   6 +-
  lib/efi_loader/efi_var_mem.c                  | 151 ++++++++-----
  lib/efi_loader/efi_variable.c                 | 122 ++++++++--
  lib/efi_loader/efi_variable_tee.c             |   5 -
  .../efi_selftest_variables_runtime.c          | 211 +++++++++++++++++-
  10 files changed, 495 insertions(+), 80 deletions(-)

--
2.40.1


Reply via email to