Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp156115imm; Thu, 30 Aug 2018 10:36:38 -0700 (PDT) X-Google-Smtp-Source: ANB0Vda6Ron8NEBpxTnX42/xO9vyPio5WrXY9ow7BaGcd6BE/vOlO2pZ0YClOlQSkM1QeQahi8w0 X-Received: by 2002:a17:902:bb0c:: with SMTP id l12-v6mr11216415pls.5.1535650598676; Thu, 30 Aug 2018 10:36:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535650598; cv=none; d=google.com; s=arc-20160816; b=K+OCQxTq4Pz+kyD2n1CzKmwnQZHIA2V4EAFx+61rkfjh24kJheeNMcTW5QSuyaXwyR uB0+lNO+5YW3/j6XRKa8BibeKVTSz4qgPznLHs+kKkb6M1Y0Kw0baNjEov9jBc+t7Tdh TZUmKciWXT65DO8vKloPdeN+BsOdv/CkhpsSZiM4P4rYfGnsYXFh1c/Xd67QlNauxDCh l7o8j+KRGyUnCeRuUkfZ6cmK8yVtW8h7dgU/Tel449Bgn/5YxNeVL4POvpwJOSk1dh4k bUSz7I48gYLSGU//Ef/HYIGT7E8xbkjZiWlbeWkQntYb+mkqmkP9epkyoTPe2qC/4H4B eYzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:arc-authentication-results; bh=6vbEW0R+n8ENWHKXN9zx8W1EABJUEXv0Qri2ZVl1D20=; b=Tt0986c3c4JCDXLK8V8okuH2+TxfoZ0C+mrMRo1c4Ea2npUHB3Pt2fDnfRUVXmiAfP Ag/mhjwzWZs5BV+LlIp95EZDiLczah5bAdQXi9lHr0p/7JmeneS4F+mLpoVSHHKiOteB rxTmSQdBuc1Jv7Hd+gGMZfZfUvlwwuvJi3jcwlyEwG04Lnykh5udSbK5ixgKbMt4vE2t BTXX2xeFJ2FepHN7SIQMskq4XpQdwE7Gc0maqB7TzNhDu26I/9YPesT91ZyZkjwBLOqD PDH4wuPRKY89V0VCD58eNanYEXjRf0AGBkAv0RBeZBp3CeoeE20H83DDCPziaWDE1SRE eGFg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d37-v6si7134254pla.40.2018.08.30.10.36.24; Thu, 30 Aug 2018 10:36:38 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727285AbeH3VhT (ORCPT + 99 others); Thu, 30 Aug 2018 17:37:19 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:48535 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725836AbeH3VhT (ORCPT ); Thu, 30 Aug 2018 17:37:19 -0400 Received: from sc9-mailhost2.vmware.com (10.113.161.72) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Thu, 30 Aug 2018 10:33:48 -0700 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id 899B0B05D4; Thu, 30 Aug 2018 13:34:06 -0400 (EDT) From: Nadav Amit To: Thomas Gleixner CC: , Ingo Molnar , , Arnd Bergmann , , Dave Hansen , Nadav Amit , Andy Lutomirski , Masami Hiramatsu , Kees Cook , Peter Zijlstra Subject: [PATCH 0/6] x86/alternatives: text_poke() fixes Date: Thu, 30 Aug 2018 10:32:12 -0700 Message-ID: <20180830173218.238900-1-namit@vmware.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.vmware.com: namit@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch-set addresses some issues that were raised in a recent correspondence and might affect the security and the correctness of code patching. (Note that patching performance is not addressed by this patch-set). The main issue that the patches deal with is the fact that the fixmap PTEs that are used for patching are available for access from other cores and might be exploited. They are not even flushed from the TLB in remote cores, so the risk is even higher. Address this issue by introducing a temporary mm that is only used during patching. Unfortunately, due to init ordering, fixmap is still used during boot-time patching. Future patches can eliminate the need for it. The second issue is the missing lockdep assertion to ensure text_mutex is taken. It is actually not always taken, so fix the instances that were found not to take the lock (although they should be safe even without taking the lock). Finally, try to be more conservative and to map a single page, instead of two, when possible. This helps both security and performance. In addition, there is some cleanup of the patching code to make it more readable. RFC->v1: - Added handling of error in get_locked_pte() - Remove lockdep assertion, clarify text_mutex use instead [masami] - Comment fix [peterz] - Removed remainders of text_poke return value [masami] - Use __weak for poking_init instead of macros [masami] - Simplify error handling in poking_init [masami] Cc: Andy Lutomirski Cc: Masami Hiramatsu Cc: Kees Cook Cc: Peter Zijlstra Link: https://lkml.org/lkml/2018/8/24/586 Andy Lutomirski (1): x86/mm: temporary mm struct Nadav Amit (5): x86/alternatives: clarify text_mutex use in text_poke fork: provide a function for copying init_mm x86/alternatives: initializing temporary mm for patching x86/alternatives: use temporary mm for text poking x86/alternatives: remove text_poke() return value arch/x86/include/asm/mmu_context.h | 20 ++++ arch/x86/include/asm/pgtable.h | 3 + arch/x86/include/asm/text-patching.h | 4 +- arch/x86/kernel/alternative.c | 173 +++++++++++++++++++++++---- arch/x86/mm/init_64.c | 29 +++++ include/linux/sched/task.h | 1 + init/main.c | 3 + kernel/fork.c | 24 +++- 8 files changed, 226 insertions(+), 31 deletions(-) -- 2.17.1