From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Dave Hansen <dave.hansen@intel.com>,
Hugh Dickins <hughd@google.com>,
Jerome Marchand <jmarchan@redhat.com>,
linux-kernel@vger.kernel.org,
Naoya Horiguchi <nao.horiguchi@gmail.com>
Subject: Re: [PATCH v4 13/13] mincore: apply page table walker on do_mincore()
Date: Wed, 9 Jul 2014 17:36:24 -0400 [thread overview]
Message-ID: <20140709213624.GC24698@nhori> (raw)
In-Reply-To: <20140709133436.GA18391@node.dhcp.inet.fi>
On Wed, Jul 09, 2014 at 04:34:36PM +0300, Kirill A. Shutemov wrote:
> On Tue, Jul 01, 2014 at 01:07:31PM -0400, Naoya Horiguchi wrote:
> > This patch makes do_mincore() use walk_page_vma(), which reduces many lines
> > of code by using common page table walk code.
> >
> > ChangeLog v4:
> > - remove redundant vma
> >
> > ChangeLog v3:
> > - add NULL vma check in mincore_unmapped_range()
> > - don't use pte_entry()
> >
> > ChangeLog v2:
> > - change type of args of callbacks to void *
> > - move definition of mincore_walk to the start of the function to fix compiler
> > warning
> >
> > Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
>
> Trinity crases this implementation of mincore pretty easily:
>
> [ 42.775369] BUG: unable to handle kernel paging request at ffff88007bb61000
> [ 42.776656] IP: [<ffffffff81126f8f>] mincore_unmapped_range+0xdf/0x100
Thanks for your testing/reporting.
...
>
> Looks like 'vec' overflow. I don't see what could prevent do_mincore() to
> write more than PAGE_SIZE to 'vec'.
I found the miscalculation of walk->private (vec) on thp and hugetlbfs.
I confirmed that the reported problem is fixed (I checked that trinity
never triggers the reported BUG) with the following changes on this patch.
diff --git a/mm/mincore.c b/mm/mincore.c
index 3c64dcbcb3e2..9eb10d867a6f 100644
--- a/mm/mincore.c
+++ b/mm/mincore.c
@@ -34,7 +34,7 @@ static int mincore_hugetlb(pte_t *pte, unsigned long hmask, unsigned long addr,
present = pte && !huge_pte_none(huge_ptep_get(pte));
for (; addr != end; vec++, addr += PAGE_SIZE)
*vec = present;
- walk->private += (end - addr) >> PAGE_SHIFT;
+ walk->private = vec;
#else
BUG();
#endif
@@ -118,8 +118,10 @@ static int mincore_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
return 0;
}
- if (pmd_trans_unstable(pmd))
+ if (pmd_trans_unstable(pmd)) {
+ walk->private += (end - addr) >> PAGE_SHIFT;
return 0;
+ }
ptep = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
for (; addr != end; ptep++, addr += PAGE_SIZE) {
Thanks,
Naoya Horiguchi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2014-07-09 21:36 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 17:07 [PATCH v4 00/13] pagewalk: improve vma handling, apply to new users Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 01/13] mm/pagewalk: remove pgd_entry() and pud_entry() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 02/13] pagewalk: improve vma handling Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 03/13] pagewalk: add walk_page_vma() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 04/13] smaps: remove mem_size_stats->vma and use walk_page_vma() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 05/13] clear_refs: remove clear_refs_private->vma and introduce clear_refs_test_walk() Naoya Horiguchi
2014-07-10 11:32 ` Kirill A. Shutemov
2014-07-10 13:27 ` Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 06/13] pagemap: use walk->vma instead of calling find_vma() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 07/13] numa_maps: fix typo in gather_hugetbl_stats Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 08/13] numa_maps: remove numa_maps->vma Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 09/13] memcg: cleanup preparation for page table walk Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 10/13] arch/powerpc/mm/subpage-prot.c: use walk->vma and walk_page_vma() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 11/13] mempolicy: apply page table walker on queue_pages_range() Naoya Horiguchi
2014-07-01 21:00 ` Dave Hansen
2014-07-01 21:51 ` Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 12/13] mm: /proc/pid/clear_refs: avoid split_huge_page() Naoya Horiguchi
2014-07-01 17:07 ` [PATCH v4 13/13] mincore: apply page table walker on do_mincore() Naoya Horiguchi
2014-07-09 13:34 ` Kirill A. Shutemov
2014-07-09 21:36 ` Naoya Horiguchi [this message]
2014-07-10 10:06 ` Kirill A. Shutemov
2014-07-10 16:35 ` Naoya Horiguchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140709213624.GC24698@nhori \
--to=n-horiguchi@ah.jp.nec.com \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=hughd@google.com \
--cc=jmarchan@redhat.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nao.horiguchi@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).