Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754790AbaADUwh (ORCPT ); Sat, 4 Jan 2014 15:52:37 -0500 Received: from mx1.redhat.com ([209.132.183.28]:9587 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753367AbaADUwf (ORCPT ); Sat, 4 Jan 2014 15:52:35 -0500 Date: Sat, 4 Jan 2014 15:52:14 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@file01.intranet.prod.int.rdu2.redhat.com To: John David Anglin cc: Joonsoo Kim , Andi Kleen , Christoph Lameter , Pekka Enberg , linux-kernel@vger.kernel.org, linux-parisc@vger.kernel.org Subject: Re: [PATCH] fix crash when using XFS on loopback In-Reply-To: Message-ID: References: User-Agent: Alpine 2.02 (LRH 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1807 Lines: 58 On Sat, 4 Jan 2014, John David Anglin wrote: > On 4-Jan-14, at 2:55 PM, Mikulas Patocka wrote: > > > On Sat, 4 Jan 2014, John David Anglin wrote: > > > > > On 4-Jan-14, at 12:45 PM, Mikulas Patocka wrote: > > > > > > > * flush_dcache_page asks for the list of userspace mappings, however > > > > that > > > > page->mapping field is reused by the slab subsystem for a different > > > > purpose. This causes the crash. > > > > > > I'd noticed the other day that the parisc implementation of > > > flush_dcache_page() > > > should return if "!mapping || mapping != page->mapping" is true. This > > > would > > > have avoided crash. > > > > > > Dave > > > > I think no. > > > > page_mapping returns NULL if the page has only anonymous mapping and it is > > not placed in the swap cache. In this case, you need to flush the kernel > > cache. > > > The suggestion is to add the "mapping != page->mapping" to the current NULL > check. > It occurs after the kernel cache flush. "if (!mapping || mapping != page->mapping) return;" returns if the mapping is NULL (and that is wrong because the variable mapping is NULL for anonymous pages). You could probably return "if (!mapping && !PageAnon(page))", but the other architectures aren't doing it. > It doesn't seem right to flush the vma mappings associated with swap address > space > and that appears to be happening with current code. > > Dave > -- > John David Anglin dave.anglin@bell.net I suppose that "vma_interval_tree_foreach" is empty operation for swap address space. Or isn't it? Mikulas -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/