Patch "x86/xen/efi: Initialize only the EFI struct members used by Xen" has been added to the 4.12-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
x86/xen/efi: Initialize only the EFI struct members used by Xen
to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-xen-efi-initialize-only-the-efi-struct-members-used-by-xen.patch
and it can be found in the queue-4.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
6c64447ec58b0bac612732303f7ab04562124587Mon Sep 17 00:00:00 2001
From: Daniel Kiper <[email protected]>
Date: Thu, 22 Jun 2017 12:51:37 +0200
Subject: x86/xen/efi: Initialize only the EFI struct members used by Xen
From: Daniel Kiper <[email protected]>
commit 6c64447ec58b0bac612732303f7ab04562124587 upstream.
The current approach, which is the wholesale efi struct initialization from a 'efi_xen' local template is not robust. Usually if new member is defined then it is properly initialized in drivers/firmware/efi/efi.c, but not in arch/x86/xen/efi.c.
The effect is that the Xen initialization clears any fields the generic code might have set and the Xen code does not know about yet.
I saw this happen a few times, so let's initialize only the EFI struct members used by Xen and maintain no local duplicate, to avoid such issues in the future.
--- arch/x86/xen/efi.c | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-)
arch/x86/xen/efi.c +12 -33
@@ -54,38 +54,6 @@ static efi_system_table_t efi_systab_xen .tables = EFI_INVALID_TABLE_ADDR /* Initialized later. */ }; -static const struct efi efi_xen__initconst = { - .systab =NULL ,/* Initialized later. */ - .runtime_version =0 ,/* Initialized later. */ - .mps =EFI_INVALID_TABLE_ADDR , - .acpi =EFI_INVALID_TABLE_ADDR , - .acpi20 =EFI_INVALID_TABLE_ADDR , - .smbios =EFI_INVALID_TABLE_ADDR , - .smbios3 =EFI_INVALID_TABLE_ADDR , - .sal_systab =EFI_INVALID_TABLE_ADDR , - .boot_info =EFI_INVALID_TABLE_ADDR , - .hcdp =EFI_INVALID_TABLE_ADDR , - .uga =EFI_INVALID_TABLE_ADDR , - .uv_systab =EFI_INVALID_TABLE_ADDR , - .fw_vendor =EFI_INVALID_TABLE_ADDR , - .runtime =EFI_INVALID_TABLE_ADDR , - .config_table =EFI_INVALID_TABLE_ADDR , - .get_time = xen_efi_get_time, - .set_time = xen_efi_set_time, - .get_wakeup_time = xen_efi_get_wakeup_time, - .set_wakeup_time = xen_efi_set_wakeup_time, - .get_variable = xen_efi_get_variable, - .get_next_variable = xen_efi_get_next_variable, - .set_variable = xen_efi_set_variable, - .query_variable_info = xen_efi_query_variable_info, - .update_capsule = xen_efi_update_capsule, - .query_capsule_caps = xen_efi_query_capsule_caps, - .get_next_high_mono_count = xen_efi_get_next_high_mono_count, - .reset_system = xen_efi_reset_system, - .set_virtual_address_map =NULL ,/* Not used under Xen. */ - .flags =0 /* Initialized later. */ -}; -static efi_system_table_t __init *xen_efi_probe (void ) {struct xen_platform_op op = {
@@ -102,7 +70,18 @@ static efi_system_table_t __init *xen_ef/* Here we know that Xen runs on EFI platform. */ - efi = efi_xen; + efi.get_time = xen_efi_get_time; + efi.set_time = xen_efi_set_time; + efi.get_wakeup_time = xen_efi_get_wakeup_time; + efi.set_wakeup_time = xen_efi_set_wakeup_time; + efi.get_variable = xen_efi_get_variable; + efi.get_next_variable = xen_efi_get_next_variable; + efi.set_variable = xen_efi_set_variable; + efi.query_variable_info = xen_efi_query_variable_info; + efi.update_capsule = xen_efi_update_capsule; + efi.query_capsule_caps = xen_efi_query_capsule_caps; + efi.get_next_high_mono_count = xen_efi_get_next_high_mono_count; + efi.reset_system = xen_efi_reset_system; efi_systab_xen.tables = info->cfg.addr; efi_systab_xen.nr_tables = info->cfg.nent;
Patches currently in stable-queue which might be from [email protected] are
queue-4.12/efi-process-the-memattr-table-only-if-efi_memmap-is-enabled.patch queue-4.12/x86-xen-efi-initialize-only-the-efi-struct-members-used-by-xen.patch
Greg KH
maintainerQuoted 8 lines · On Tue, Jul 18, 2017 at 05:16:30PM +0200, [email protected] wrote:
This is a note to let you know that I've just added the patch titled
x86/xen/efi: Initialize only the EFI struct members used by Xen
to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 6 lines
The filename of the patch is:
x86-xen-efi-initialize-only-the-efi-struct-members-used-by-xen.patch
and it can be found in the queue-4.12 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Nope, now dropped it, it isn't stable kernel material.
thanks,
greg k-h