Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp2707234ybv; Mon, 24 Feb 2020 10:02:38 -0800 (PST) X-Google-Smtp-Source: APXvYqzPOcLctTS+6mrFmZl8d6ui01/NFBa8eSEnRiXoUFeZ23MRAw9B+u/DG8sMpKrBObD2zbKi X-Received: by 2002:a05:6808:45:: with SMTP id v5mr241549oic.90.1582567358642; Mon, 24 Feb 2020 10:02:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582567358; cv=none; d=google.com; s=arc-20160816; b=PJByklcJms6zAmat4n1xZ7ilzd4tLhUJCYso43qIkbabuBNB4zqqc9tPm+3OZPipmt nqSVIkKn+HQ2DoN2rd51Y/V905Kl54fdFifDG5kC7kJXOFl1Ix9svVjMTGXdtqlgjks0 4BRc7917Piw1l779phkoNECzkmzfFgrF74LwPX+PeqjAD0co+qO7K97JBkj89ENkbg6j JekRrY2vtK00CRfOa08frCAKgvXrqHo2wzSrbjx8QtvBfdC8axVni9fUhavksbl2JlHy E1Ypeh0zTz7zuMmBhqxDcLsWEjg0q5/G+CF9JAecNLBc3l3R9sibFsm7tE0ya+6gF2zr g3bQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:message-id :dkim-signature; bh=CNFLih4PSoPyQOKHdwh0bZCil4LvN1c7uLrlcFFy9Dg=; b=Ez/OVm62Su76uESDJlMswJWWfOl3XvAkMJwYqPO3eLyB8XWVwDlwCi19wJJU2ODSFU 4BR3zy99netHlgNKYoqvsoIhPTY4kIqJNOXkeW0/8WizfLQf/zaAxgqlkXS9cH82cUCW i2xbgxkvUHQgCb+9/Wr0RHYH82PZQcxBIvcXkfEW6xEfoWxMDBW3qCRnsJ5VyuJE92o2 0vvtKN7S0HTEupzcY9EkJ1Pnx3bAt3nsji7Kl8MSWdLdgUiPbttiCRkOTzRgI0RqSwIS p+dl4s2ss2W9gObWr6iYZN9r/0cuEepkUTuCSy7qP1kVPM33Bv7fCEgg53VUqsGKFiWp LWDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=VqRcwZtj; 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 y144si5620935oia.67.2020.02.24.10.02.25; Mon, 24 Feb 2020 10:02:38 -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; dkim=pass header.i=@c-s.fr header.s=mail header.b=VqRcwZtj; 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 S1727714AbgBXSCO (ORCPT + 99 others); Mon, 24 Feb 2020 13:02:14 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:42488 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726208AbgBXSCO (ORCPT ); Mon, 24 Feb 2020 13:02:14 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 48R8z16g7cz9v9kQ; Mon, 24 Feb 2020 19:02:05 +0100 (CET) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=VqRcwZtj; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id JrN8DRE25OKN; Mon, 24 Feb 2020 19:02:05 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 48R8z15d9Zz9v9kP; Mon, 24 Feb 2020 19:02:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1582567325; bh=CNFLih4PSoPyQOKHdwh0bZCil4LvN1c7uLrlcFFy9Dg=; h=From:Subject:To:Cc:Date:From; b=VqRcwZtjprMistze4TollXwv7njS+9K1lRrSm8r6JAlNw/EdWMvGMj/2pJsk70fec 7GT6v67BhGwXY/wQqOLOhwYI37P9DNk2D7iURtYEgO9cokdU4gN9VUITGCjj34JDtS LQtEra6Bmk8g5g3ZiZOkZks+gG6KL8ZOAHMhP/A0= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 29D5F8B80C; Mon, 24 Feb 2020 19:02:11 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id TsW2Zfb04y9p; Mon, 24 Feb 2020 19:02:11 +0100 (CET) Received: from pc16570vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id EB8428B7FC; Mon, 24 Feb 2020 19:02:10 +0100 (CET) Received: by pc16570vm.idsi0.si.c-s.fr (Postfix, from userid 0) id B6840653B3; Mon, 24 Feb 2020 18:02:10 +0000 (UTC) Message-Id: <7f24b5961a6839ff01df792816807f74ff236bf6.1582567319.git.christophe.leroy@c-s.fr> From: Christophe Leroy Subject: [PATCH] powerpc/kprobes: Use probe_address() to read instructions To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , naveen.n.rao@linux.vnet.ibm.com Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Mon, 24 Feb 2020 18:02:10 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to avoid Oopses, use probe_address() to read the instruction at the address where the trap happened. Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/kprobes.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 84567406b53d..a35320b79e16 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c @@ -276,14 +276,18 @@ int kprobe_handler(struct pt_regs *regs) p = get_kprobe(addr); if (!p) { - if (*addr != BREAKPOINT_INSTRUCTION) { + unsigned int instr; + + if (probe_kernel_address(addr, instr)) + goto no_kprobe; + + if (instr != BREAKPOINT_INSTRUCTION) { /* * PowerPC has multiple variants of the "trap" * instruction. If the current instruction is a * trap variant, it could belong to someone else */ - kprobe_opcode_t cur_insn = *addr; - if (is_trap(cur_insn)) + if (is_trap(instr)) goto no_kprobe; /* * The breakpoint instruction was removed right -- 2.25.0