Received: by 10.223.148.5 with SMTP id 5csp7393639wrq; Thu, 18 Jan 2018 05:02:20 -0800 (PST) X-Google-Smtp-Source: ACJfBouHPAaxW/TSmfFycdCgyOgp3cyuibn4DqMZB0U8cxIX5/tsmagwRNG8QsdioO/+cNDbpqBE X-Received: by 10.157.19.114 with SMTP id q47mr3114950otq.203.1516280540073; Thu, 18 Jan 2018 05:02:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516280539; cv=none; d=google.com; s=arc-20160816; b=ZPFA+RaSXU10Y48hjXFUlZZeq9BUb9fKd89U+7eTe/ywshPGuv1kB8NY7/4hYRYYRx AfPh9vOeC/viBN5iedTfLmBRSMKahOJPPPCzVY5PfhPP9lnpYx5sLGuqZd2OtS7oeUEO ZMX53Q83N5iPNgRYPrV03345DPgIUnE/NpgkiM1FrA0qvkBoqiT3vCwQDnQUfWY+1KtL GZ6VhEygQwHIS4zTfYq2h4DL4BRGMxsPrGN3X3JWUKKEJVCQd3i3olR116nHnjCtBI73 84kQwSVlMTO8vtjC00+c2UXrU5oINdXh+iYJ2NuYSPqtZr0clURl6PCKIHyIQOM3Zd4W iA2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=weUWniRv461N1rK9iVNF/Q+ke+YnzGu9w/iXdO0Kxxk=; b=VtVnZz/HAuMfjochoks2/Gwocx8UKScxuia3JAq/ZQSwT0LqrN+6AVMqCDZUxYjcHi /c+AI1SmoGo+QM8r8DSU4X19b8BJqdhJdWm/kUmVYusce037poqbIYjinZ9IZ2TIsrs8 D7Zdyz4obdR4EktwZAwVb/Fwz+12FTFO2JISbrCVPmgnNlBnNZwCO1KvGQTD2MMaYLCI PZ0CHgmmOLSV0NAWRE0PFAUu1IvXAssqn7S/kpBebalgMHcN/mGHGrVH8GBuhC76NeVa c9pvEa/vZkzf9BsvsQwUIx7+DPuLU6cFWLsCueMzm/RaNmXvh98h4mTQEkA4YgUUeynE MRIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@shutemov-name.20150623.gappssmtp.com header.s=20150623 header.b=W/oEVQ6L; 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 w5si6176920pgb.596.2018.01.18.05.02.03; Thu, 18 Jan 2018 05:02:19 -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=@shutemov-name.20150623.gappssmtp.com header.s=20150623 header.b=W/oEVQ6L; 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 S1755282AbeARMZ5 (ORCPT + 99 others); Thu, 18 Jan 2018 07:25:57 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:37655 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750947AbeARMZ4 (ORCPT ); Thu, 18 Jan 2018 07:25:56 -0500 Received: by mail-wm0-f65.google.com with SMTP id v71so22543498wmv.2 for ; Thu, 18 Jan 2018 04:25:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov-name.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=weUWniRv461N1rK9iVNF/Q+ke+YnzGu9w/iXdO0Kxxk=; b=W/oEVQ6L5EbR5UaTD7lHUQb7M4950VJ207v2dSZqLiCzAtAwY/hSESiRtpWB9c0Ckl c+v386PT64yzpWfplqJlNStK0VE153CVxSJES/RHYNBU/wcTnWf5jVcQPRjkKvorTvCx n2F4jg2uTY6y+eKSWEuQazo5P/WC6llOBIJu+u9X3JfQbGzpDpcJqvPN/4Lr9vT/m/Xb TA+T8LRsnP0FoN/C593/kMHlncggToT9W5EBPqCYV4nmQpombqzk12odgJVWxZ99jP51 kR2QhpNhLhWfw3NaSDUm85BRJQt/AI4gSRKe5UbP5jDw6fvrstDDv8wm5CZb7FYRLPy0 QU2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=weUWniRv461N1rK9iVNF/Q+ke+YnzGu9w/iXdO0Kxxk=; b=XBBQP5plRCgYRTsPM5uTS348AmEvQzvrY0Bmpjve76K/sS4/84gNV86EQMpUhk10Lm RSxVmd+j77WJpPKyTlhnkmKB4HPQMYQkZfzjZiHreTgZtZHhY/41x3ptghR/bsCvJgmb DVhxDDpIVaQ+kput8d7PgiqwEEs3C1AtGkLCVSpkooM3mDYv8TfIlKid5XnwE/RgfLtk B3f1HPFS3LcCvUpHmGUF7zbmQP603mmE8RxOhwPIYtbZNvEfeTnjl4yVICiypv08wm0a fOuFqlSptMFAI3C9oQO5zVNItGHAr5Un40C2EIv3dEO3wV6OvmKoIbFxe7o3vfuA4onY pNeg== X-Gm-Message-State: AKwxytfKxKjxJrJkN1V/TC8W8O3+FEIAbjel2IFrShvSOLMoDpEmDO+9 LPMPIC2hZGTRkHbyhoUUYDh4cw== X-Received: by 10.80.172.47 with SMTP id v44mr7428884edc.130.1516278354736; Thu, 18 Jan 2018 04:25:54 -0800 (PST) Received: from node.shutemov.name ([178.122.206.50]) by smtp.gmail.com with ESMTPSA id m1sm4213948ede.74.2018.01.18.04.25.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jan 2018 04:25:51 -0800 (PST) Received: by node.shutemov.name (Postfix, from userid 1000) id 39B75648D520; Thu, 18 Jan 2018 15:25:50 +0300 (+03) Date: Thu, 18 Jan 2018 15:25:50 +0300 From: "Kirill A. Shutemov" To: Tetsuo Handa Cc: torvalds@linux-foundation.org, kirill.shutemov@linux.intel.com, akpm@linux-foundation.org, hannes@cmpxchg.org, iamjoonsoo.kim@lge.com, mgorman@techsingularity.net, tony.luck@intel.com, vbabka@suse.cz, mhocko@kernel.org, aarcange@redhat.com, hillf.zj@alibaba-inc.com, hughd@google.com, oleg@redhat.com, peterz@infradead.org, riel@redhat.com, srikar@linux.vnet.ibm.com, vdavydov.dev@gmail.com, dave.hansen@linux.intel.com, mingo@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Subject: Re: [mm 4.15-rc8] Random oopses under memory pressure. Message-ID: <20180118122550.2lhsjx7hg5drcjo4@node.shutemov.name> References: <201801160115.w0G1FOIG057203@www262.sakura.ne.jp> <201801170233.JDG21842.OFOJMQSHtOFFLV@I-love.SAKURA.ne.jp> <201801172008.CHH39543.FFtMHOOVSQJLFO@I-love.SAKURA.ne.jp> <201801181712.BFD13039.LtHOSVMFJQFOFO@I-love.SAKURA.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201801181712.BFD13039.LtHOSVMFJQFOFO@I-love.SAKURA.ne.jp> User-Agent: NeoMutt/20171215 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 18, 2018 at 05:12:45PM +0900, Tetsuo Handa wrote: > Tetsuo Handa wrote: > > OK. I missed the mark. I overlooked that 4.11 already has this problem. > > > > I needed to bisect between 4.10 and 4.11, and I got plausible culprit. > > > > I haven't completed bisecting between b4fb8f66f1ae2e16 and c470abd4fde40ea6, but > > b4fb8f66f1ae2e16 ("mm, page_alloc: Add missing check for memory holes") and > > 13ad59df67f19788 ("mm, page_alloc: avoid page_to_pfn() when merging buddies") > > are talking about memory holes, which matches the situation that I'm trivially > > hitting the bug if CONFIG_SPARSEMEM=y . > > > > Thus, I call for an attention by speculative execution. ;-) > > Speculative execution failed. I was confused by jiffies precision bug. > The final culprit is c7ab0d2fdc840266 ("mm: convert try_to_unmap_one() to use page_vma_mapped_walk()"). I think I've tracked it down. check_pte() in mm/page_vma_mapped.c doesn't work as intended. I've added instrumentation below to prove it. The BUG() triggers with following output: [ 10.084024] diff: -858690919 [ 10.084258] hpage_nr_pages: 1 [ 10.084386] check1: 0 [ 10.084478] check2: 0 Basically, pte_page(*pvmw->pte) is below pvmw->page, but (pte_page(*pvmw->pte) < pvmw->page) doesn't catch it. Well, I can see how C lawyer can argue that you can only compare pointers of the same memory object which is not the case here. But this is kinda insane. Any suggestions how to rewrite it in a way that compiler would understand? diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index d22b84310f6d..57b4397f1ea5 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -70,6 +70,14 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw) } if (pte_page(*pvmw->pte) < pvmw->page) return false; + + if (pte_page(*pvmw->pte) - pvmw->page) { + printk("diff: %d\n", pte_page(*pvmw->pte) - pvmw->page); + printk("hpage_nr_pages: %d\n", hpage_nr_pages(pvmw->page)); + printk("check1: %d\n", pte_page(*pvmw->pte) - pvmw->page < 0); + printk("check2: %d\n", pte_page(*pvmw->pte) - pvmw->page >= hpage_nr_pages(pvmw->page)); + BUG(); + } } return true; -- Kirill A. Shutemov