From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51BFDC433E2 for ; Tue, 14 Jul 2020 11:27:42 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 15D3021897 for ; Tue, 14 Jul 2020 11:27:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="IvWTr1G8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 15D3021897 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 8119B6B0002; Tue, 14 Jul 2020 07:27:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 79AED6B0003; Tue, 14 Jul 2020 07:27:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6615E6B0005; Tue, 14 Jul 2020 07:27:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0105.hostedemail.com [216.40.44.105]) by kanga.kvack.org (Postfix) with ESMTP id 4E9C26B0002 for ; Tue, 14 Jul 2020 07:27:41 -0400 (EDT) Received: from smtpin09.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id C0E74180AD802 for ; Tue, 14 Jul 2020 11:27:40 +0000 (UTC) X-FDA: 77036456280.09.feast72_41033ca26ef0 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin09.hostedemail.com (Postfix) with ESMTP id 936CB180AD804 for ; Tue, 14 Jul 2020 11:27:40 +0000 (UTC) X-HE-Tag: feast72_41033ca26ef0 X-Filterd-Recvd-Size: 5934 Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by imf16.hostedemail.com (Postfix) with ESMTP for ; Tue, 14 Jul 2020 11:27:40 +0000 (UTC) Received: by mail-lj1-f194.google.com with SMTP id z24so22045768ljn.8 for ; Tue, 14 Jul 2020 04:27:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WRuLFKvQDaw1sZL3IQ7c0WjQdAQsHCg8KMZ60fQDX3s=; b=IvWTr1G8MbRGNvmmF3GY36Q3iShIoAcmF57XjtqSMlX+UjsveepMcNyeYiicFU+3E+ bOSSCqYtoFqjo48izwzZCRfWncfuq8FFX4ZqMpjYPlN0DXZQAn/uvQY+8tWFxBm4nQam biWrkcFebp86rk2x+UCbWrFkPpCtZl4Om/XQnX76mubHorOPHg8ALbs3ZdV2Tqtt4CDU xB74Epl7L2Ddpc9UFfC+3qdjiFaxKde5OlQzlkOvvSfKv62WKARQGEf135nJb1Pg2Mo1 23YiVG67fLpJQ5Q/2V5JmibKAzCtpBzjkEqkCL73RuAwhHw6ElJUCyx+wzJlEMs++D6D jxow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WRuLFKvQDaw1sZL3IQ7c0WjQdAQsHCg8KMZ60fQDX3s=; b=XAHTwumw5XbICxGenWE0MHbeYXXCaMoC5AAMOgFK6MdD4sRtnlKzkENSU5XOrh5TR8 J0oVVTsgKHPW6Pzse73G9sBEqfunXKHS4Iy8kL0BMlOZPQ+tYOSwodmv29EEElRUupy/ fGTQ8qtBuuDJgXBNYdks2RklGlfzJhqYnWiUIWqacgtjtPXJRIrwfCb9CfgjD0GT34d7 XSZQO5vVtxclc1QgVhWvr/8CSe8CW2LtFWfkTJ81TQkxnblEWH1gnpw4t709ld70uZMb JtKJkm7LorDeRfNOu/BzXswToDWoGh3reqgrrmFKf4al7shrwm1mh3qunezLJXkhV/nh 5v6w== X-Gm-Message-State: AOAM530MYmRTXF9PsmVpENhZcK8SO7xBWP0sNTwAbGF7KreQuAzMtTRL XbIE+ZxX7p5vRyiEtNo1j+2QBGoY54AYxtraXyJdQQ== X-Google-Smtp-Source: ABdhPJy5qZDrujqexb2KWuHgK/pg2E8r3sHYRhykgzZdB+4AhkS8Ejrdf1ttrfztmNGMOeYDytwHysJ8zfNi+ujHmGY= X-Received: by 2002:a2e:9089:: with SMTP id l9mr2090256ljg.431.1594726058377; Tue, 14 Jul 2020 04:27:38 -0700 (PDT) MIME-Version: 1.0 References: <20200712215041.GA3644504@google.com> <20200714073306.kq4zikkphqje2yzb@box> In-Reply-To: <20200714073306.kq4zikkphqje2yzb@box> From: Naresh Kamboju Date: Tue, 14 Jul 2020 16:57:26 +0530 Message-ID: Subject: Re: WARNING: at mm/mremap.c:211 move_page_tables in i386 To: "Kirill A. Shutemov" Cc: Linus Torvalds , Joel Fernandes , linux- stable , open list , linux-mm , Arnd Bergmann , Andrew Morton , Roman Gushchin , Michal Hocko , lkft-triage@lists.linaro.org, Chris Down , Michel Lespinasse , Fan Yang , Brian Geffon , Anshuman Khandual , Will Deacon , Catalin Marinas , pugaowei@gmail.com, Jerome Glisse , Greg Kroah-Hartman , Mel Gorman , Hugh Dickins , Al Viro , Tejun Heo , Sasha Levin Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 936CB180AD804 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam05 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, 14 Jul 2020 at 13:03, Kirill A. Shutemov wrote: > > On Sun, Jul 12, 2020 at 03:58:06PM -0700, Linus Torvalds wrote: > > Anybody else have any opinions? > > Maybe we just shouldn't allow move_normal_pmd() if ranges overlap? > > Other option: pass 'overlaps' down to move_normal_pmd() and only WARN() if > see establised PMD without overlaps being true. > > Untested patch: This patch applied on top of Linus mainline tree and tested on i386. The reported warning did not happen while testing LTP mm [1]. > > diff --git a/mm/mremap.c b/mm/mremap.c > index 5dd572d57ca9..e33fcee541fe 100644 > --- a/mm/mremap.c > +++ b/mm/mremap.c > @@ -245,6 +245,18 @@ unsigned long move_page_tables(struct vm_area_struct *vma, > unsigned long extent, next, old_end; > struct mmu_notifier_range range; > pmd_t *old_pmd, *new_pmd; > + bool overlaps; > + > + /* > + * shift_arg_pages() can call move_page_tables() on overlapping ranges. > + * In this case we cannot use move_normal_pmd() because destination pmd > + * might be established page table: move_ptes() doesn't free page > + * table. > + */ > + if (old_addr > new_addr) > + overlaps = old_addr - new_addr < len; > + else > + overlaps = new_addr - old_addr < len; > > old_end = old_addr + len; > flush_cache_range(vma, old_addr, old_end); > @@ -282,7 +294,7 @@ unsigned long move_page_tables(struct vm_area_struct *vma, > split_huge_pmd(vma, old_pmd, old_addr); > if (pmd_trans_unstable(old_pmd)) > continue; > - } else if (extent == PMD_SIZE) { > + } else if (!overlaps && extent == PMD_SIZE) { > #ifdef CONFIG_HAVE_MOVE_PMD > /* > * If the extent is PMD-sized, try to speed the move by > -- > Kirill A. Shutemov ref: https://lkft.validation.linaro.org/scheduler/job/1561734#L1598 - Naresh