Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp1048724imj; Wed, 13 Feb 2019 23:56:52 -0800 (PST) X-Google-Smtp-Source: AHgI3IaZbJNpjGSciiJY83Dr7yOatzhAu/Sl3QXk8xHPtAHRoetRU9Gziiz4tdafxGICIe1j8Uc0 X-Received: by 2002:a17:902:6b4b:: with SMTP id g11mr2745162plt.92.1550131012447; Wed, 13 Feb 2019 23:56:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550131012; cv=none; d=google.com; s=arc-20160816; b=tTFXGuwkYv0m2FVtDV1RIudUlo1nAXnMgIPGMEkvRcgZ8AZQiXmKp3NFwgqdOVwTzs kN9eqfYa3RVbqUE5+l+vTK9ELBHxTHKdpQjZ2FChwjyt3nWnSoDzTVGrRmjddmH0XvzQ Hg0P9AcEJXo2jXbxnpu7ee7CJjZ3+l0V97Uop+O504Tn58TGgbQYYglT8ULRnjG2Pr9w NzOMO3hLJVyxY/QCWG8Y5LFTiwC+gl7VUkvOO5rJzyLQbKPWKKa2DhczVip/bbfUbGTS SC02EFV5+5ehp0ZNGR/Tbl02++fThLsKpn4lOjbz02vAn5Yjx82y66kKOMmaE6QXgAKx FOmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=3JnZt0tQGf6nnNlbfnqaLYDVb+TI3IQpKRKSREygoQQ=; b=zuNBFrpqc9iy/TgoOas4mzhv9jflQi8YEYhJUC0pkUsJV60f5F8vZcLOiXOW8CQb+Y RIHC3BIzbNVlsRasPf7PJSu9O8Wrz+8+Hs/mNsFVyEPLX9bQq1ikYtNTqElciKiQWNoR U1ZgK9Z5m8QM5wFMQWex4ibrRcD61ZlflpQ+gUHwAqURi22CMFU8zwm20hh/fApOv6CZ wZ6H5qdos9ALF9FO2k/EO5/IPhuXinhxk25IKo1H3x97LOngACDzNu1nguyY/VE1r1wN ZrX4lgB+T4R6KzKIqdKH7vG8sJ29MiebVaIW/QZZseMykWZGC0pti+/sjyCV0yHJlLiU qSsg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s12si1677830pfm.242.2019.02.13.23.56.36; Wed, 13 Feb 2019 23:56:52 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2394436AbfBMTe5 (ORCPT + 99 others); Wed, 13 Feb 2019 14:34:57 -0500 Received: from mx0b-002e3701.pphosted.com ([148.163.143.35]:33738 "EHLO mx0b-002e3701.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728018AbfBMTey (ORCPT ); Wed, 13 Feb 2019 14:34:54 -0500 Received: from pps.filterd (m0134423.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x1DJLwTi004941; Wed, 13 Feb 2019 19:34:27 GMT Received: from g2t2354.austin.hpe.com (g2t2354.austin.hpe.com [15.233.44.27]) by mx0b-002e3701.pphosted.com with ESMTP id 2qmrrvrb72-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 13 Feb 2019 19:34:27 +0000 Received: from sarge.linuxathome.me (unknown [16.99.162.65]) by g2t2354.austin.hpe.com (Postfix) with ESMTP id 0DE61A0; Wed, 13 Feb 2019 19:34:23 +0000 (UTC) From: Hedi Berriche To: linux-kernel@vger.kernel.org, Ard Biesheuvel , Thomas Gleixner , Bhupesh Sharma Cc: Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , linux-efi@vger.kernel.org, x86@kernel.org, Russ Anderson , Mike Travis , Dimitri Sivanich , Steve Wahl , stable@vger.kernel.org Subject: [Patch v3 0/4] Protect against concurrent calls into UV BIOS Date: Wed, 13 Feb 2019 19:34:09 +0000 Message-Id: <20190213193413.25560-1-hedi.berriche@hpe.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-02-13_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=913 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1902130132 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org - Changes since v2 Addressed comments from Ard Biesheuvel: * expose efi_runtime_lock to UV platform only instead of globally * remove unnecessary #ifdef CONFIG_EFI from bios_uv.c - Changes since v1: Addressed comments from Bhupesh Sharma, Thomas Gleixner, and Ard Biesheuvel: * made __uv_bios_call() static * moved the efi_enabled() cleanup to its own patchlet * explained the reason for renaming the efi_runtime_lock semaphore * dropped the reviewed-bys as they should be given on the mailing list * Cc'ng stable@vger.kernel.org given the nature of the problem addressed by the patches --- Calls into UV BIOS were not being serialised which is wrong as it violates EFI runtime rules, and bad as it does result in all sorts of potentially hard to track down hangs and panics when efi_scratch.prev_mm gets clobbered whenever efi_switch_mm() gets called concurrently from two different CPUs. Patch #1 removes an unnecessary #ifdef CONFIG_EFI guard from bios_uv.c. Patch #2 removes uv_bios_call_reentrant() because it's dead code. Patch #3 is a cleanup that drops test_bit() in favour of the ad hoc efi_enabled(). Patch #4 makes uv_bios_call() variants use the efi_runtime_lock semaphore to protect against concurrency. Cc: Russ Anderson Cc: Mike Travis Cc: Dimitri Sivanich Cc: Steve Wahl Cc: stable@vger.kernel.org # v4.9+ Hedi Berriche (4): x86/platform/UV: remove unnecessary #ifdef CONFIG_EFI x86/platform/UV: kill uv_bios_call_reentrant() as it has no callers x86/platform/UV: use efi_enabled() instead of test_bit() x86/platform/UV: use efi_runtime_lock to serialise BIOS calls arch/x86/include/asm/uv/bios.h | 13 ++++----- arch/x86/platform/uv/bios_uv.c | 35 ++++++++++++++----------- drivers/firmware/efi/runtime-wrappers.c | 7 +++++ 3 files changed, 34 insertions(+), 21 deletions(-) -- 2.20.1