Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1630307ybb; Thu, 9 Apr 2020 06:08:08 -0700 (PDT) X-Google-Smtp-Source: APiQypIjyKb3U+sA2x5XBcVOqJWKE9YNKYgKkOrLPvxlk3kMeQK7RV4W2pNE2a0Jv7z0FKcwqN9L X-Received: by 2002:ac8:7246:: with SMTP id l6mr6822375qtp.298.1586437688436; Thu, 09 Apr 2020 06:08:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586437688; cv=none; d=google.com; s=arc-20160816; b=htwoyOyGFV8AwtxalSnfkG6vM4GoUMnf+QMlSSkemm4Pd3Olwlu+18FoERI0Hnoigk 0RxH+iaes5cm12r4CG/yBQ+kFTHJtzHzjY6ehfDkG+PVMXtawu1yH4PUshzIcEJjpjiF 57SHFL/evfR0hxYbStNowKbGuMFYOkC75XwGHzeTbc0pzP3Rf8dsPJtPQbjU3W6iHQy+ UexdnBjFde5+mDOwh9/Ih6DKLsP+AwmUaX+RopMrsRlvIWBg0252924dCfeYmFF3MRa4 /PmtEZ2PBmzN+2ftxnBfX4XlXD1oAH9HSDlAJ1WvwpJ4PM6cfaUrN30M5+M1gWqTkqRu uLnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=gNJVkb/UFLJoQnOv9yOM71hJpElGe1TP0mACBU73vWQ=; b=MGnkDEyzhJGN53p6OA4FtUMesuYr/3XMWcrAH006bzhodhDhsCqa4jHOaYAehYLsnW Xv9uKT4bqa5Pssege2g890+QFnLQzUbSnGtY/BBNxEROucsGU2/awdVhT9Gjn0d8F2fQ +BNYtQhv/0guBIRXd+LuQgtK/Ck/JUwXF52IAyt7+kVDc5Dzqmsvh2HLwm4J71Qddg3B iO53lrnEIKESw7cP1JfU/JLp9fFKwicBP8ajGh49SxCIA+VKUEJFm9D00WWROxSpt2dY y36u57b8JsOo2wN8RLCyNKYPbbedsWAEecqsOQ7EW1xCMU3rCCKBxLD/xouDB6nc168b AXXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MlGEIh4l; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z12si5664435qkf.199.2020.04.09.06.07.45; Thu, 09 Apr 2020 06:08:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MlGEIh4l; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726934AbgDINFX (ORCPT + 99 others); Thu, 9 Apr 2020 09:05:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:44130 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726477AbgDINFR (ORCPT ); Thu, 9 Apr 2020 09:05:17 -0400 Received: from e123331-lin.home (amontpellier-657-1-18-247.w109-210.abo.wanadoo.fr [109.210.65.247]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 199E820B1F; Thu, 9 Apr 2020 13:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586437517; bh=ENj9gyIpSdOm3HFxFqSOAiP74yf1INHrcxCTQAxSIvw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MlGEIh4lVXQBNPeZ75l1plhLEDzJDaoZ5zHV3xV2OeL6DNR6/k2Tv3BLq+fdpHpzT UINzVsyZ19zzkfjlvxJ8PXf76PJ+yXReKS/Y+apLTWLt1iYAbWzgtcyOJb0TCOJJ41 5TJJEmsoMEDRyqEaJ3j2Iya7I0rSV1UbKEBgu7So= From: Ard Biesheuvel To: linux-efi@vger.kernel.org, Ingo Molnar , Thomas Gleixner Cc: Ard Biesheuvel , linux-kernel@vger.kernel.org, Arnd Bergmann , Arvind Sankar , Borislav Petkov , Colin Ian King , Gary Lin , Jiri Slaby , Sergey Shatunov , Takashi Iwai Subject: [PATCH 8/9] efi/x86: Fix the deletion of variables in mixed mode Date: Thu, 9 Apr 2020 15:04:33 +0200 Message-Id: <20200409130434.6736-9-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200409130434.6736-1-ardb@kernel.org> References: <20200409130434.6736-1-ardb@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gary Lin efi_thunk_set_variable() treated the NULL "data" pointer as an invalid parameter, and this broke the deletion of variables in mixed mode. This commit fixes the check of data so that the userspace program can delete a variable in mixed mode. Fixes: 8319e9d5ad98ffcc ("efi/x86: Handle by-ref arguments covering multiple pages in mixed mode") Cc: linux-efi@vger.kernel.org Cc: Ard Biesheuvel Cc: Ingo Molnar Cc: Thomas Gleixner Signed-off-by: Gary Lin Link: https://lore.kernel.org/r/20200408081606.1504-1-glin@suse.com Signed-off-by: Ard Biesheuvel --- arch/x86/platform/efi/efi_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 211bb9358b73..e0e2e8136cf5 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -638,7 +638,7 @@ efi_thunk_set_variable(efi_char16_t *name, efi_guid_t *vendor, phys_vendor = virt_to_phys_or_null(vnd); phys_data = virt_to_phys_or_null_size(data, data_size); - if (!phys_name || !phys_data) + if (!phys_name || (data && !phys_data)) status = EFI_INVALID_PARAMETER; else status = efi_thunk(set_variable, phys_name, phys_vendor, @@ -669,7 +669,7 @@ efi_thunk_set_variable_nonblocking(efi_char16_t *name, efi_guid_t *vendor, phys_vendor = virt_to_phys_or_null(vnd); phys_data = virt_to_phys_or_null_size(data, data_size); - if (!phys_name || !phys_data) + if (!phys_name || (data && !phys_data)) status = EFI_INVALID_PARAMETER; else status = efi_thunk(set_variable, phys_name, phys_vendor, -- 2.17.1