diff options
author | Masahisa Kojima <masahisa.kojima@linaro.org> | 2023-11-07 06:40:55 +0100 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2023-12-11 11:19:18 +0100 |
commit | 94f7f6182c72ba642c1f20111681f9cc8621c95f (patch) | |
tree | a469f9da0e5bdfd8416b779c7d908a7ee9fc1e5e /drivers/firmware/efi/vars.c | |
parent | efi: Add tee-based EFI variable driver (diff) | |
download | linux-94f7f6182c72ba642c1f20111681f9cc8621c95f.tar.xz linux-94f7f6182c72ba642c1f20111681f9cc8621c95f.zip |
efivarfs: automatically update super block flag
efivar operation is updated when the tee_stmm_efi module is probed.
tee_stmm_efi module supports SetVariable runtime service, but user needs
to manually remount the efivarfs as RW to enable the write access if the
previous efivar operation does not support SetVariable and efivarfs is
mounted as read-only.
This commit notifies the update of efivar operation to efivarfs
subsystem, then drops SB_RDONLY flag if the efivar operation supports
SetVariable.
Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
[ardb: use per-superblock instance of the notifier block]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'drivers/firmware/efi/vars.c')
-rw-r--r-- | drivers/firmware/efi/vars.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c index e9dc7116daf1..f654e6f6af87 100644 --- a/drivers/firmware/efi/vars.c +++ b/drivers/firmware/efi/vars.c @@ -63,6 +63,7 @@ int efivars_register(struct efivars *efivars, const struct efivar_operations *ops) { int rv; + int event; if (down_interruptible(&efivars_lock)) return -EINTR; @@ -77,6 +78,13 @@ int efivars_register(struct efivars *efivars, __efivars = efivars; + if (efivar_supports_writes()) + event = EFIVAR_OPS_RDWR; + else + event = EFIVAR_OPS_RDONLY; + + blocking_notifier_call_chain(&efivar_ops_nh, event, NULL); + pr_info("Registered efivars operations\n"); rv = 0; out: |