Received: by 10.223.185.116 with SMTP id b49csp1014327wrg; Wed, 21 Feb 2018 10:34:54 -0800 (PST) X-Google-Smtp-Source: AH8x225Zgqu292n2lRzxw+xxqaz+5buZVVNA2kLsyIpIK77QzwGPHceuwQv7IQOlgbRbAnm5wm0Y X-Received: by 10.98.227.10 with SMTP id g10mr4181270pfh.200.1519238094525; Wed, 21 Feb 2018 10:34:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519238094; cv=none; d=google.com; s=arc-20160816; b=CstDzd9EBRegAYiR7f4AcnsKlhP3jF2XKGGg2E1/MV6nMBWXk6f+wQuiU7G8i1gAZu nuE5hYYA9Q4ufI0Ah9eEL0qRAJvcDdPZIIppTSbOXcPNWB4bqLMSljMAsGIoxSJ9jdLH HBGK6RMvP5pUNo9GXyLsZBScFGF+R2mIGFs6WeZgaXuOiTAusQM0fWH5c1EBcxNgsoIQ 9tdmx4OMfcrwxIaoOYY3jw2YsEhKtIoz+KS3rKq8oZ9mjtjRIO7bOnZi/HpI9C6k8bJL xMsIeSt81BDKyg6Ms0bUE+UNF4l8NKS6vNyBnhZsPaXbWMuPqiVazorljor9KA8Uys2R IcDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=rzbve1c0qRMiI9NjGtgqs8Q7AK5MKseQ5g675z48QNA=; b=XLjI5WaRXWIO/eOypx/3yD5yPvWjZSKuhX5aWjc7dmTCW0sYCLOXqTAg8DAA/Twy8U W6czt0EyIjAB9UCxeJLBm+q9BECCsSrZCrmmRecDVMTz1oEeTAvUupWZQtMqosVtwhRX UaOsy9PrR21vjIl7chl/S44PmOd35rco5DEGdP0FE7R9e4LmQPg/CD8yMm7dhSk3iYtn kPjeT8c/oXq88Jle7lM454abVsIVA7EaBO4/r8SJGHM7WVBTIs+i0t9i01DC5w1KBdzP 9z5dPwDWFmNZ1065WVflUGUUh4SDi1+HQWar7ZhfbA0snlHrZDZaPYMZLwYlzJ7mAO76 onEw== 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 1-v6si28715plc.784.2018.02.21.10.34.40; Wed, 21 Feb 2018 10:34:54 -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 S965381AbeBUNJM (ORCPT + 99 others); Wed, 21 Feb 2018 08:09:12 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:42752 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753589AbeBUNJH (ORCPT ); Wed, 21 Feb 2018 08:09:07 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 453F9119B; Wed, 21 Feb 2018 13:09:06 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Linus Torvalds , "Peter Zijlstra (Intel)" , Andy Lutomirski , Arjan van de Ven , Borislav Petkov , Brian Gerst , Denys Vlasenko , "H. Peter Anvin" , Josh Poimboeuf , Thomas Gleixner , Ingo Molnar Subject: [PATCH 4.15 078/163] x86/debug: Use UD2 for WARN() Date: Wed, 21 Feb 2018 13:48:27 +0100 Message-Id: <20180221124534.760076350@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180221124529.931834518@linuxfoundation.org> References: <20180221124529.931834518@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.15-stable review patch. If anyone has any objections, please let me know. ------------------ From: Peter Zijlstra commit 3b3a371cc9bc980429baabe0a8e5f307f3d1f463 upstream. Since the Intel SDM added an ModR/M byte to UD0 and binutils followed that specification, we now cannot disassemble our kernel anymore. This now means Intel and AMD disagree on the encoding of UD0. And instead of playing games with additional bytes that are valid ModR/M and single byte instructions (0xd6 for instance), simply use UD2 for both WARN() and BUG(). Requested-by: Linus Torvalds Signed-off-by: Peter Zijlstra (Intel) Acked-by: Linus Torvalds Cc: Andy Lutomirski Cc: Arjan van de Ven Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Josh Poimboeuf Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/20180208194406.GD25181@hirez.programming.kicks-ass.net Signed-off-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- arch/x86/include/asm/bug.h | 15 ++++++--------- arch/x86/kernel/traps.c | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h @@ -5,23 +5,20 @@ #include /* - * Since some emulators terminate on UD2, we cannot use it for WARN. - * Since various instruction decoders disagree on the length of UD1, - * we cannot use it either. So use UD0 for WARN. + * Despite that some emulators terminate on UD2, we use it for WARN(). * - * (binutils knows about "ud1" but {en,de}codes it as 2 bytes, whereas - * our kernel decoder thinks it takes a ModRM byte, which seems consistent - * with various things like the Intel SDM instruction encoding rules) + * Since various instruction decoders/specs disagree on the encoding of + * UD0/UD1. */ -#define ASM_UD0 ".byte 0x0f, 0xff" +#define ASM_UD0 ".byte 0x0f, 0xff" /* + ModRM (for Intel) */ #define ASM_UD1 ".byte 0x0f, 0xb9" /* + ModRM */ #define ASM_UD2 ".byte 0x0f, 0x0b" #define INSN_UD0 0xff0f #define INSN_UD2 0x0b0f -#define LEN_UD0 2 +#define LEN_UD2 2 #ifdef CONFIG_GENERIC_BUG @@ -79,7 +76,7 @@ do { \ #define __WARN_FLAGS(flags) \ do { \ - _BUG_FLAGS(ASM_UD0, BUGFLAG_WARNING|(flags)); \ + _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ annotate_reachable(); \ } while (0) --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -181,7 +181,7 @@ int fixup_bug(struct pt_regs *regs, int break; case BUG_TRAP_TYPE_WARN: - regs->ip += LEN_UD0; + regs->ip += LEN_UD2; return 1; }