From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.12 26/84] x86/xen/efi: Initialize only the EFI struct members used by Xen Date: Wed, 19 Jul 2017 11:43:32 +0200 Message-ID: <20170719092323.396710042@linuxfoundation.org> References: <20170719092322.362625377@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170719092322.362625377@linuxfoundation.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: jgross@suse.com, linux-efi@vger.kernel.org, Ard Biesheuvel , Peter Zijlstra , Greg Kroah-Hartman , Daniel Kiper , stable@vger.kernel.org, Ingo Molnar , matt@codeblueprint.co.uk, andrew.cooper3@citrix.com, xen-devel@lists.xenproject.org, Boris Ostrovsky , Linus Torvalds , Thomas Gleixner List-Id: linux-efi@vger.kernel.org NC4xMi1zdGFibGUgcmV2aWV3IHBhdGNoLiAgSWYgYW55b25lIGhhcyBhbnkgb2JqZWN0aW9ucywg cGxlYXNlIGxldCBtZSBrbm93LgoKLS0tLS0tLS0tLS0tLS0tLS0tCgpGcm9tOiBEYW5pZWwgS2lw ZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgoKY29tbWl0IDZjNjQ0NDdlYzU4YjBiYWM2MTI3 MzIzMDNmN2FiMDQ1NjIxMjQ1ODcgdXBzdHJlYW0uCgpUaGUgY3VycmVudCBhcHByb2FjaCwgd2hp Y2ggaXMgdGhlIHdob2xlc2FsZSBlZmkgc3RydWN0IGluaXRpYWxpemF0aW9uIGZyb20KYSAnZWZp X3hlbicgbG9jYWwgdGVtcGxhdGUgaXMgbm90IHJvYnVzdC4gVXN1YWxseSBpZiBuZXcgbWVtYmVy IGlzIGRlZmluZWQKdGhlbiBpdCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCBpbiBkcml2ZXJzL2Zp cm13YXJlL2VmaS9lZmkuYywgYnV0IG5vdCBpbgphcmNoL3g4Ni94ZW4vZWZpLmMuCgpUaGUgZWZm ZWN0IGlzIHRoYXQgdGhlIFhlbiBpbml0aWFsaXphdGlvbiBjbGVhcnMgYW55IGZpZWxkcyB0aGUg Z2VuZXJpYyBjb2RlCm1pZ2h0IGhhdmUgc2V0IGFuZCB0aGUgWGVuIGNvZGUgZG9lcyBub3Qga25v dyBhYm91dCB5ZXQuCgpJIHNhdyB0aGlzIGhhcHBlbiBhIGZldyB0aW1lcywgc28gbGV0J3MgaW5p dGlhbGl6ZSBvbmx5IHRoZSBFRkkgc3RydWN0IG1lbWJlcnMKdXNlZCBieSBYZW4gYW5kIG1haW50 YWluIG5vIGxvY2FsIGR1cGxpY2F0ZSwgdG8gYXZvaWQgc3VjaCBpc3N1ZXMgaW4gdGhlIGZ1dHVy ZS4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ ClJldmlld2VkLWJ5OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29t PgpBY2tlZC1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNj OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBQZXRl ciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CkNjOiBUaG9tYXMgR2xlaXhuZXIgPHRn bHhAbGludXRyb25peC5kZT4KQ2M6IGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20KQ2M6IGpncm9z c0BzdXNlLmNvbQpDYzogbGludXgtZWZpQHZnZXIua2VybmVsLm9yZwpDYzogbWF0dEBjb2RlYmx1 ZXByaW50LmNvLnVrCkNjOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKTGluazogaHR0 cDovL2xrbWwua2VybmVsLm9yZy9yLzE0OTgxMjg2OTctMTI5NDMtMy1naXQtc2VuZC1lbWFpbC1k YW5pZWwua2lwZXJAb3JhY2xlLmNvbQpbIENsYXJpZmllZCB0aGUgY2hhbmdlbG9nLiBdClNpZ25l ZC1vZmYtYnk6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgoKLS0tCiBhcmNo L3g4Ni94ZW4vZWZpLmMgfCAgIDQ1ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9u cygtKQoKLS0tIGEvYXJjaC94ODYveGVuL2VmaS5jCisrKyBiL2FyY2gveDg2L3hlbi9lZmkuYwpA QCAtNTQsMzggKzU0LDYgQEAgc3RhdGljIGVmaV9zeXN0ZW1fdGFibGVfdCBlZmlfc3lzdGFiX3hl bgogCS50YWJsZXMJCT0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiAgLyogSW5pdGlhbGl6ZWQgbGF0 ZXIuICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGVmaSBlZmlfeGVuIF9faW5pdGNvbnN0 ID0gewotCS5zeXN0YWIgICAgICAgICAgICAgICAgICAgPSBOVUxMLCAvKiBJbml0aWFsaXplZCBs YXRlci4gKi8KLQkucnVudGltZV92ZXJzaW9uCSAgPSAwLCAgICAvKiBJbml0aWFsaXplZCBsYXRl ci4gKi8KLQkubXBzICAgICAgICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQURE UiwKLQkuYWNwaSAgICAgICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwK LQkuYWNwaTIwICAgICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQku c21iaW9zICAgICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuc21i aW9zMyAgICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuc2FsX3N5 c3RhYiAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuYm9vdF9pbmZv ICAgICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuaGNkcCAgICAgICAg ICAgICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkudWdhICAgICAgICAgICAg ICAgICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkudXZfc3lzdGFiICAgICAgICAg ICAgICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuZndfdmVuZG9yICAgICAgICAgICAg ICAgID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkucnVudGltZSAgICAgICAgICAgICAgICAg ID0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuY29uZmlnX3RhYmxlICAgICAgICAgICAgID0g RUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkuZ2V0X3RpbWUgICAgICAgICAgICAgICAgID0geGVu X2VmaV9nZXRfdGltZSwKLQkuc2V0X3RpbWUgICAgICAgICAgICAgICAgID0geGVuX2VmaV9zZXRf dGltZSwKLQkuZ2V0X3dha2V1cF90aW1lICAgICAgICAgID0geGVuX2VmaV9nZXRfd2FrZXVwX3Rp bWUsCi0JLnNldF93YWtldXBfdGltZSAgICAgICAgICA9IHhlbl9lZmlfc2V0X3dha2V1cF90aW1l LAotCS5nZXRfdmFyaWFibGUgICAgICAgICAgICAgPSB4ZW5fZWZpX2dldF92YXJpYWJsZSwKLQku Z2V0X25leHRfdmFyaWFibGUgICAgICAgID0geGVuX2VmaV9nZXRfbmV4dF92YXJpYWJsZSwKLQku c2V0X3ZhcmlhYmxlICAgICAgICAgICAgID0geGVuX2VmaV9zZXRfdmFyaWFibGUsCi0JLnF1ZXJ5 X3ZhcmlhYmxlX2luZm8gICAgICA9IHhlbl9lZmlfcXVlcnlfdmFyaWFibGVfaW5mbywKLQkudXBk YXRlX2NhcHN1bGUgICAgICAgICAgID0geGVuX2VmaV91cGRhdGVfY2Fwc3VsZSwKLQkucXVlcnlf Y2Fwc3VsZV9jYXBzICAgICAgID0geGVuX2VmaV9xdWVyeV9jYXBzdWxlX2NhcHMsCi0JLmdldF9u ZXh0X2hpZ2hfbW9ub19jb3VudCA9IHhlbl9lZmlfZ2V0X25leHRfaGlnaF9tb25vX2NvdW50LAot CS5yZXNldF9zeXN0ZW0gICAgICAgICAgICAgPSB4ZW5fZWZpX3Jlc2V0X3N5c3RlbSwKLQkuc2V0 X3ZpcnR1YWxfYWRkcmVzc19tYXAgID0gTlVMTCwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLwot CS5mbGFncwkJCSAgPSAwICAgICAvKiBJbml0aWFsaXplZCBsYXRlci4gKi8KLX07Ci0KIHN0YXRp YyBlZmlfc3lzdGVtX3RhYmxlX3QgX19pbml0ICp4ZW5fZWZpX3Byb2JlKHZvaWQpCiB7CiAJc3Ry dWN0IHhlbl9wbGF0Zm9ybV9vcCBvcCA9IHsKQEAgLTEwMiw3ICs3MCwxOCBAQCBzdGF0aWMgZWZp X3N5c3RlbV90YWJsZV90IF9faW5pdCAqeGVuX2VmCiAKIAkvKiBIZXJlIHdlIGtub3cgdGhhdCBY ZW4gcnVucyBvbiBFRkkgcGxhdGZvcm0uICovCiAKLQllZmkgPSBlZmlfeGVuOworCWVmaS5nZXRf dGltZSAgICAgICAgICAgICAgICAgPSB4ZW5fZWZpX2dldF90aW1lOworCWVmaS5zZXRfdGltZSAg ICAgICAgICAgICAgICAgPSB4ZW5fZWZpX3NldF90aW1lOworCWVmaS5nZXRfd2FrZXVwX3RpbWUg ICAgICAgICAgPSB4ZW5fZWZpX2dldF93YWtldXBfdGltZTsKKwllZmkuc2V0X3dha2V1cF90aW1l ICAgICAgICAgID0geGVuX2VmaV9zZXRfd2FrZXVwX3RpbWU7CisJZWZpLmdldF92YXJpYWJsZSAg ICAgICAgICAgICA9IHhlbl9lZmlfZ2V0X3ZhcmlhYmxlOworCWVmaS5nZXRfbmV4dF92YXJpYWJs ZSAgICAgICAgPSB4ZW5fZWZpX2dldF9uZXh0X3ZhcmlhYmxlOworCWVmaS5zZXRfdmFyaWFibGUg ICAgICAgICAgICAgPSB4ZW5fZWZpX3NldF92YXJpYWJsZTsKKwllZmkucXVlcnlfdmFyaWFibGVf aW5mbyAgICAgID0geGVuX2VmaV9xdWVyeV92YXJpYWJsZV9pbmZvOworCWVmaS51cGRhdGVfY2Fw c3VsZSAgICAgICAgICAgPSB4ZW5fZWZpX3VwZGF0ZV9jYXBzdWxlOworCWVmaS5xdWVyeV9jYXBz dWxlX2NhcHMgICAgICAgPSB4ZW5fZWZpX3F1ZXJ5X2NhcHN1bGVfY2FwczsKKwllZmkuZ2V0X25l eHRfaGlnaF9tb25vX2NvdW50ID0geGVuX2VmaV9nZXRfbmV4dF9oaWdoX21vbm9fY291bnQ7CisJ ZWZpLnJlc2V0X3N5c3RlbSAgICAgICAgICAgICA9IHhlbl9lZmlfcmVzZXRfc3lzdGVtOwogCiAJ ZWZpX3N5c3RhYl94ZW4udGFibGVzID0gaW5mby0+Y2ZnLmFkZHI7CiAJZWZpX3N5c3RhYl94ZW4u bnJfdGFibGVzID0gaW5mby0+Y2ZnLm5lbnQ7CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753741AbdGSKB2 (ORCPT ); Wed, 19 Jul 2017 06:01:28 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:36784 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753530AbdGSJpn (ORCPT ); Wed, 19 Jul 2017 05:45:43 -0400 From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Kiper , Boris Ostrovsky , Ard Biesheuvel , Linus Torvalds , Peter Zijlstra , Thomas Gleixner , andrew.cooper3@citrix.com, jgross@suse.com, linux-efi@vger.kernel.org, matt@codeblueprint.co.uk, xen-devel@lists.xenproject.org, Ingo Molnar Subject: [PATCH 4.12 26/84] x86/xen/efi: Initialize only the EFI struct members used by Xen Date: Wed, 19 Jul 2017 11:43:32 +0200 Message-Id: <20170719092323.396710042@linuxfoundation.org> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170719092322.362625377@linuxfoundation.org> References: <20170719092322.362625377@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Daniel Kiper 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. Signed-off-by: Daniel Kiper Reviewed-by: Boris Ostrovsky Acked-by: Ard Biesheuvel Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: andrew.cooper3@citrix.com Cc: jgross@suse.com Cc: linux-efi@vger.kernel.org Cc: matt@codeblueprint.co.uk Cc: xen-devel@lists.xenproject.org Link: http://lkml.kernel.org/r/1498128697-12943-3-git-send-email-daniel.kiper@oracle.com [ Clarified the changelog. ] Signed-off-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- arch/x86/xen/efi.c | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) --- a/arch/x86/xen/efi.c +++ b/arch/x86/xen/efi.c @@ -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;