From patchwork Mon Feb 2 05:28:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arseny Solokha X-Patchwork-Id: 435355 X-Patchwork-Delegate: michael@ellerman.id.au Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 9DE7414028E for ; Mon, 2 Feb 2015 16:29:32 +1100 (AEDT) Received: from ozlabs.org (ozlabs.org [103.22.144.67]) by lists.ozlabs.org (Postfix) with ESMTP id 8DFEC1A10ED for ; Mon, 2 Feb 2015 16:29:32 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from ispman.iskranet.ru (ispman.iskranet.ru [62.213.33.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 2E0201A0BA1 for ; Mon, 2 Feb 2015 16:28:52 +1100 (AEDT) Received: by ispman.iskranet.ru (Postfix, from userid 8) id BA9FC503B18; Mon, 2 Feb 2015 12:28:49 +0700 (KRAT) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on ispman.iskranet.ru X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.3.2 Received: from KB00016249.iskra.kb (mx.iskrakb.ru [62.213.32.122]) (Authenticated sender: asolokha@kb.kras.ru) by ispman.iskranet.ru (Postfix) with ESMTPA id 6E8A6503B12; Mon, 2 Feb 2015 12:28:49 +0700 (KRAT) From: Arseny Solokha To: Benjamin Herrenschmidt Subject: [PATCH] powerpc/mm: warn on flushing tlb page in kernel context Date: Mon, 2 Feb 2015 12:28:16 +0700 Message-Id: <1422854896-4746-1-git-send-email-asolokha@kb.kras.ru> X-Mailer: git-send-email 2.2.2 In-Reply-To: <1422619707-30864-1-git-send-email-asolokha@kb.kras.ru> References: <1422619707-30864-1-git-send-email-asolokha@kb.kras.ru> Cc: linux-kernel@vger.kernel.org, Paul Mackerras , Scott Wood , Arseny Solokha , linuxppc-dev@lists.ozlabs.org X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Function __flush_tlb_page() must only be called for user contexts, so put in extra hardening to warn on calling it for kernel context. Signed-off-by: Arseny Solokha --- arch/powerpc/mm/tlb_nohash.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c index f38ea4d..cbd3d06 100644 --- a/arch/powerpc/mm/tlb_nohash.c +++ b/arch/powerpc/mm/tlb_nohash.c @@ -284,8 +284,15 @@ void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, struct cpumask *cpu_mask; unsigned int pid; + /* + * This function as well as __local_flush_tlb_page() must only be called + * for user contexts. + */ + if (unlikely(WARN_ON(!mm))) + return; + preempt_disable(); - pid = mm ? mm->context.id : 0; + pid = mm->context.id; if (unlikely(pid == MMU_NO_CONTEXT)) goto bail; cpu_mask = mm_cpumask(mm);