Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2468229yba; Mon, 15 Apr 2019 12:16:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqxb2QMp5r1A/EHst9W65FXqHcCT8Unt9SSXbsnaUx7UcsalJmGEm7qRpjKXp1ReMZORzkrJ X-Received: by 2002:a17:902:6949:: with SMTP id k9mr77027464plt.59.1555355771185; Mon, 15 Apr 2019 12:16:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555355771; cv=none; d=google.com; s=arc-20160816; b=gB5K0FAW+bTMfMPvCMQWYEpvuBqABddWq9chDDOQMxlGike3EtAafUt6qHyDZEKA/a XvrIYZ/Eoyr5SCuziNGzjzdxLp35NtJWDJWZV+75fPxBqb85/wRHYA6SEYeltsbv451z iu/zR/DKSs64cWy/OqyHo4GCY6PZBudGZ3YcP62fXx4XtN/anoiqFag7MTfLskuXM2Q4 +RYWjxzVg5pgbXEhq/Od4T9Byzn13ahIHK5MA5SvRZmhHl9Y7bT8xfPYblNLvf9G/IxD IBSc6xJTZzXyJsOs+m9x1/YMx7pVH67EozzSSpXBUkrChQHfjBN2JalIbVnxg7qUcid+ Es7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Er09NWUt+93OfY0crnpwSFMe7Tzc63AR4Ub+8IROKuA=; b=ORaIlyCA3goFZvFLMTY85GGs17JsUhVK5XHIVkFCJy6wH2gzI6kpyhlerdYltC+uJu mPU7g9CGgBEaODqRLCLQAi8Awn8xGO4cF9rtMWQfDw5WcyBnoBc41x7i8GeHdSGPNUuu V89+eTolg4ZVH9eaPl6DYy6hIo2PeiSCcy3HNGMfRw87q4THbnZXr3EAKj9yEGVugJeT JCtVh1Tqt8ZaPuCpR98Rbau/itCMUgAaGEEGmQFjJh9SkAHb3tsePPt7f0PkFYJbCP8w yGE8p84/tB4r3MYMUVPq9Zo1BgaKBbNOfHgLtXhjCe/jXeFjsKzr40zfR1IES0mmdyyg n2rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=viCyx5Vu; 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 k9si30839270pfb.251.2019.04.15.12.15.55; Mon, 15 Apr 2019 12:16:11 -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; dkim=pass header.i=@kernel.org header.s=default header.b=viCyx5Vu; 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 S1731794AbfDOTOi (ORCPT + 99 others); Mon, 15 Apr 2019 15:14:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:52838 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731780AbfDOTOh (ORCPT ); Mon, 15 Apr 2019 15:14:37 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A98AA2073F; Mon, 15 Apr 2019 19:14:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355677; bh=5A2ngiJuKAby31NI/J7YuAWid9Fb0v6+N9cF50tHabE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=viCyx5VutUkVRhi6pd2M35FuzHDBSI6EfgGk+i0oOX8g+5RX/w/nW42TbJfZ5rJMb gGAs9znpNBcvmkeXAcpV4xrQIrdifQdYze+KMNF5hz8coiPxh/EL3KiKMbsLgmzFOI rYcxw0yL1PkjtG1PAC7OIMU8uSS3Li6aGBBzlHnQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Anton Blanchard , Nicholas Piggin , "Aneesh Kumar K.V" , Michael Ellerman Subject: [PATCH 5.0 109/117] powerpc/64s/radix: Fix radix segment exception handling Date: Mon, 15 Apr 2019 21:01:19 +0200 Message-Id: <20190415183750.294661658@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183744.887851196@linuxfoundation.org> References: <20190415183744.887851196@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nicholas Piggin commit 7100e8704b61247649c50551b965e71d168df30b upstream. Commit 48e7b76957 ("powerpc/64s/hash: Convert SLB miss handlers to C") broke the radix-mode segment exception handler. In radix mode, this is exception is not an SLB miss, rather it signals that the EA is outside the range translated by any page table. The commit lost the radix feature alternate code patch, which can cause faults to some EAs to kernel BUG at arch/powerpc/mm/slb.c:639! The original radix code would send faults to slb_miss_large_addr, which would end up faulting due to slb_addr_limit being 0. This patch sends radix directly to do_bad_slb_fault, which is a bit clearer. Fixes: 48e7b7695745 ("powerpc/64s/hash: Convert SLB miss handlers to C") Cc: stable@vger.kernel.org # v4.20+ Reported-by: Anton Blanchard Signed-off-by: Nicholas Piggin Reviewed-by: Aneesh Kumar K.V Signed-off-by: Michael Ellerman Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/exceptions-64s.S | 12 ++++++++++++ 1 file changed, 12 insertions(+) --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -612,11 +612,17 @@ EXC_COMMON_BEGIN(data_access_slb_common) ld r4,PACA_EXSLB+EX_DAR(r13) std r4,_DAR(r1) addi r3,r1,STACK_FRAME_OVERHEAD +BEGIN_MMU_FTR_SECTION + /* HPT case, do SLB fault */ bl do_slb_fault cmpdi r3,0 bne- 1f b fast_exception_return 1: /* Error case */ +MMU_FTR_SECTION_ELSE + /* Radix case, access is outside page table range */ + li r3,-EFAULT +ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) std r3,RESULT(r1) bl save_nvgprs RECONCILE_IRQ_STATE(r10, r11) @@ -661,11 +667,17 @@ EXC_COMMON_BEGIN(instruction_access_slb_ EXCEPTION_PROLOG_COMMON(0x480, PACA_EXSLB) ld r4,_NIP(r1) addi r3,r1,STACK_FRAME_OVERHEAD +BEGIN_MMU_FTR_SECTION + /* HPT case, do SLB fault */ bl do_slb_fault cmpdi r3,0 bne- 1f b fast_exception_return 1: /* Error case */ +MMU_FTR_SECTION_ELSE + /* Radix case, access is outside page table range */ + li r3,-EFAULT +ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX) std r3,RESULT(r1) bl save_nvgprs RECONCILE_IRQ_STATE(r10, r11)