Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935230AbdLSLAh (ORCPT ); Tue, 19 Dec 2017 06:00:37 -0500 Received: from mx01.hxt-semitech.com.96.203.223.in-addr.arpa ([223.203.96.7]:40872 "EHLO barracuda.hxt-semitech.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S934247AbdLSLAb (ORCPT ); Tue, 19 Dec 2017 06:00:31 -0500 X-ASG-Debug-ID: 1513680434-093b7e6d1566e00001-xx1T2L X-Barracuda-Envelope-From: ge.song@hxt-semitech.com From: Ge Song CC: Ge Song , Ard Biesheuvel , Matt Fleming , , Subject: [PATCH 2/2] efi/capsule-loader: Request a contiguous virtual space for capsules Date: Tue, 19 Dec 2017 18:46:52 +0800 X-ASG-Orig-Subj: [PATCH 2/2] efi/capsule-loader: Request a contiguous virtual space for capsules Message-ID: <1513680412-5573-1-git-send-email-ge.song@hxt-semitech.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.64.17.247] X-ClientProxiedBy: HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) To HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) X-Barracuda-Connect: localhost[10.128.0.14] X-Barracuda-Start-Time: 1513680434 X-Barracuda-Encrypted: ECDHE-RSA-AES256-SHA X-Barracuda-URL: https://192.168.50.101:443/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5213 1.0000 0.7500 X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.45655 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1231 Lines: 38 Use the start address of the contiguous virtual space to pass to efi runtime service UpdateCapsule() Signed-off-by: Ge Song Cc: Ard Biesheuvel Cc: Matt Fleming Cc: linux-efi@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/firmware/efi/capsule-loader.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/capsule-loader.c b/drivers/firmware/efi/capsule-loader.c index cbc3526953d5..efa4cce374d3 100644 --- a/drivers/firmware/efi/capsule-loader.c +++ b/drivers/firmware/efi/capsule-loader.c @@ -102,8 +102,17 @@ int __weak efi_capsule_setup_info(struct capsule_info *cap_info, void *kbuff, static ssize_t efi_capsule_submit_update(struct capsule_info *cap_info) { int ret; + void *vm_cap_hdr; + + /* Request a contiguous virtual space */ + vm_cap_hdr = vmap(cap_info->pages, cap_info->index, + VM_MAP, PAGE_KERNEL); + if (!vm_cap_hdr) + return -ENOMEM; + + ret = efi_capsule_update(vm_cap_hdr, cap_info->pages); + vunmap(vm_cap_hdr); - ret = efi_capsule_update(&cap_info->header, cap_info->pages); if (ret) { pr_err("capsule update failed\n"); return ret; -- 2.7.4