From patchwork Fri May 13 14:23:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 12848906 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D4C86C433F5 for ; Fri, 13 May 2022 14:26:48 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.328491.551543 (Exim 4.92) (envelope-from ) id 1npWFa-0005kB-MM; Fri, 13 May 2022 14:26:38 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 328491.551543; Fri, 13 May 2022 14:26:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1npWFa-0005k0-II; Fri, 13 May 2022 14:26:38 +0000 Received: by outflank-mailman (input) for mailman id 328491; Fri, 13 May 2022 14:26:37 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1npWFZ-0005P5-3Q for xen-devel@lists.xenproject.org; Fri, 13 May 2022 14:26:37 +0000 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id b20125d0-d2c8-11ec-aa76-f101dd46aeb6; Fri, 13 May 2022 16:26:36 +0200 (CEST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 242DBB8306B; Fri, 13 May 2022 14:26:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 432FDC34100; Fri, 13 May 2022 14:26:34 +0000 (UTC) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: b20125d0-d2c8-11ec-aa76-f101dd46aeb6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652451994; bh=arJTKN6Rb4CHGdT1xDXtM3SZJ76Ck5SXwxLc4XVG6h0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lkj2UAFs1vyUgNw/OznDpD3UdBVqNE8K6RAGjcXiZQCZEK2nLckNHvZ2JSX7w9XQR 2zCCsajBmD87WM3JZKnp+P4hwCHqObdQNspqV1ZZhhbcwPjJchztmAo7B1qVwi83FN 5d/y+2eEEMXvBV1OgINjBSgL470b4SpjEs26yluY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Masami Hiramatsu , "Peter Zijlstra (Intel)" , Juergen Gross , x86@kernel.org, Boris Ostrovsky , Ingo Molnar , Stefano Stabellini , Andrew Cooper , Borislav Petkov , xen-devel@lists.xenproject.org, Randy Dunlap , Josh Poimboeuf , Maximilian Heyne Subject: [PATCH 5.4 13/18] x86: kprobes: Prohibit probing on instruction which has emulate prefix Date: Fri, 13 May 2022 16:23:39 +0200 Message-Id: <20220513142229.541060503@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220513142229.153291230@linuxfoundation.org> References: <20220513142229.153291230@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 From: Masami Hiramatsu commit 004e8dce9c5595697951f7cd0e9f66b35c92265e upstream. Prohibit probing on instruction which has XEN_EMULATE_PREFIX or KVM's emulate prefix. Since that prefix is a marker for Xen and KVM, if we modify the marker by kprobe's int3, that doesn't work as expected. Signed-off-by: Masami Hiramatsu Signed-off-by: Peter Zijlstra (Intel) Cc: Juergen Gross Cc: x86@kernel.org Cc: Boris Ostrovsky Cc: Ingo Molnar Cc: Stefano Stabellini Cc: Andrew Cooper Cc: Borislav Petkov Cc: xen-devel@lists.xenproject.org Cc: Randy Dunlap Cc: Josh Poimboeuf Link: https://lkml.kernel.org/r/156777566048.25081.6296162369492175325.stgit@devnote2 Signed-off-by: Maximilian Heyne Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/kprobes/core.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -358,6 +358,10 @@ int __copy_instruction(u8 *dest, u8 *src kernel_insn_init(insn, dest, MAX_INSN_SIZE); insn_get_length(insn); + /* We can not probe force emulate prefixed instruction */ + if (insn_has_emulate_prefix(insn)) + return 0; + /* Another subsystem puts a breakpoint, failed to recover */ if (insn->opcode.bytes[0] == BREAKPOINT_INSTRUCTION) return 0;