From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on archive.lwn.net X-Spam-Level: X-Spam-Status: No, score=-5.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham autolearn_force=no version=3.4.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by archive.lwn.net (Postfix) with ESMTP id CEF877D085 for ; Thu, 7 Jun 2018 14:40:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933575AbeFGOkC (ORCPT ); Thu, 7 Jun 2018 10:40:02 -0400 Received: from mga17.intel.com ([192.55.52.151]:61088 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934377AbeFGOj6 (ORCPT ); Thu, 7 Jun 2018 10:39:58 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Jun 2018 07:39:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,486,1520924400"; d="scan'208";a="54825980" Received: from 2b52.sc.intel.com ([143.183.136.51]) by fmsmga002.fm.intel.com with ESMTP; 07 Jun 2018 07:39:57 -0700 From: Yu-cheng Yu To: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, x86@kernel.org, "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , "H.J. Lu" , Vedvyas Shanbhogue , "Ravi V. Shankar" , Dave Hansen , Andy Lutomirski , Jonathan Corbet , Oleg Nesterov , Arnd Bergmann , Mike Kravetz Cc: Yu-cheng Yu Subject: [PATCH 0/5] Control Flow Enforcement - Part (1) Date: Thu, 7 Jun 2018 07:35:39 -0700 Message-Id: <20180607143544.3477-1-yu-cheng.yu@intel.com> X-Mailer: git-send-email 2.15.1 Sender: linux-doc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org Control flow enforcement technology (CET) is an upcoming Intel processor family feature that prevents return/jmp-oriented programming attacks. It has two components: shadow stack (SHSTK) and indirect branch tracking (IBT). The specification is at: https://software.intel.com/sites/default/files/managed/4d/2a/ control-flow-enforcement-technology-preview.pdf The SHSTK is a secondary stack allocated from system memory. The CALL instruction stores a secure copy of the return address on the SHSTK; the RET instruction compares the return address from the program stack to the SHSTK copy. Any mismatch triggers a control protection fault. When the IBT is enabled, the processor verifies an indirect CALL/JMP destination is an ENDBR instruction; otherwise, it raises a control protection fault. The compiler inserts ENDBRs at all valid branch targets. CET can be enabled for both kernel and user mode protection. The Linux kernel patches being posted are for user-mode protection. They are grouped into four series: (1) CPUID enumeration, CET XSAVES system states, and documentation; (2) Kernel config, exception handling, and memory management changes; (3) SHSTK support; (4) IBT support, command-line tool, PTRACE. Yu-cheng Yu (5): x86/cpufeatures: Add CPUIDs for Control-flow Enforcement Technology (CET) x86/fpu/xstate: Change some names to separate XSAVES system and user states x86/fpu/xstate: Enable XSAVES system states x86/fpu/xstate: Add XSAVES system states for shadow stack Documentation/x86: Add CET description Documentation/admin-guide/kernel-parameters.txt | 6 + Documentation/x86/intel_cet.txt | 161 ++++++++++++++++++++++++ arch/x86/include/asm/cpufeatures.h | 2 + arch/x86/include/asm/fpu/internal.h | 6 +- arch/x86/include/asm/fpu/types.h | 22 ++++ arch/x86/include/asm/fpu/xstate.h | 31 ++--- arch/x86/include/uapi/asm/processor-flags.h | 2 + arch/x86/kernel/cpu/scattered.c | 1 + arch/x86/kernel/fpu/core.c | 11 +- arch/x86/kernel/fpu/init.c | 10 -- arch/x86/kernel/fpu/signal.c | 6 +- arch/x86/kernel/fpu/xstate.c | 152 +++++++++++++--------- 12 files changed, 319 insertions(+), 91 deletions(-) create mode 100644 Documentation/x86/intel_cet.txt -- 2.15.1 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html