From: Andrey Wagin <avagin@gmail.com> To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Andrew Morton <akpm@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, LKML <linux-kernel@vger.kernel.org>, linux-mm@kvack.org, linux-arch@vger.kernel.org Subject: Re: [PATCH 34/34] mm: dynamically allocate page->ptl if it cannot be embedded to struct page Date: Wed, 20 Nov 2013 16:56:32 +0400 [thread overview] Message-ID: <CANaxB-xcyRBB4UV+RMxh34=eDCuCfDUFEHexvkSCsg4fKDDGRQ@mail.gmail.com> (raw) In-Reply-To: <20131120125325.07A42E0090@blue.fi.intel.com> 2013/11/20 Kirill A. Shutemov <kirill.shutemov@linux.intel.com>: > Andrey Wagin wrote: >> Hi Kirill, >> >> Looks like this patch adds memory leaks. >> [ 116.188310] kmemleak: 15672 new suspected memory leaks (see >> /sys/kernel/debug/kmemleak) >> unreferenced object 0xffff8800da45a350 (size 96): >> comm "dracut-initqueu", pid 93, jiffies 4294671391 (age 362.277s) >> hex dump (first 32 bytes): >> 07 00 07 00 ad 4e ad de ff ff ff ff 6b 6b 6b 6b .....N......kkkk >> ff ff ff ff ff ff ff ff 80 24 b4 82 ff ff ff ff .........$...... >> backtrace: >> [<ffffffff817152fe>] kmemleak_alloc+0x5e/0xc0 >> [<ffffffff811c34f3>] kmem_cache_alloc_trace+0x113/0x290 >> [<ffffffff811920f7>] __ptlock_alloc+0x27/0x50 >> [<ffffffff81192849>] __pmd_alloc+0x59/0x170 >> [<ffffffff81195ffa>] copy_page_range+0x38a/0x3e0 >> [<ffffffff8105a013>] dup_mm+0x313/0x540 >> [<ffffffff8105b9da>] copy_process+0x161a/0x1880 >> [<ffffffff8105c01b>] do_fork+0x8b/0x360 >> [<ffffffff8105c306>] SyS_clone+0x16/0x20 >> [<ffffffff81727b79>] stub_clone+0x69/0x90 >> [<ffffffffffffffff>] 0xffffffffffffffff >> >> It's quite serious, because my test host went to panic in a few hours. > > Sorry for that. > > Could you test patch below. Yes, it works. I found this too a few minutes ago:) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index a7cccb6..44c366c 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -62,6 +62,7 @@ void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) { paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); + pgtable_pmd_page_dtor(virt_to_page(pmd)); /* * NOTE! For PAE, any changes to the top page-directory-pointer-table * entries need a full cr3 reload to flush. Thanks. > > diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c > index a7cccb6d7fec..7be5809754cf 100644 > --- a/arch/x86/mm/pgtable.c > +++ b/arch/x86/mm/pgtable.c > @@ -61,6 +61,7 @@ void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) > #if PAGETABLE_LEVELS > 2 > void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > { > + struct page *page = virt_to_page(pmd); > paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); > /* > * NOTE! For PAE, any changes to the top page-directory-pointer-table > @@ -69,7 +70,8 @@ void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > #ifdef CONFIG_X86_PAE > tlb->need_flush_all = 1; > #endif > - tlb_remove_page(tlb, virt_to_page(pmd)); > + pgtable_pmd_page_dtor(page); > + tlb_remove_page(tlb, page); > } > > #if PAGETABLE_LEVELS > 3 > -- > Kirill A. Shutemov -- 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>
WARNING: multiple messages have this Message-ID (diff)
From: Andrey Wagin <avagin@gmail.com> To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Andrew Morton <akpm@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, LKML <linux-kernel@vger.kernel.org>, linux-mm@kvack.org, linux-arch@vger.kernel.org Subject: Re: [PATCH 34/34] mm: dynamically allocate page->ptl if it cannot be embedded to struct page Date: Wed, 20 Nov 2013 16:56:32 +0400 [thread overview] Message-ID: <CANaxB-xcyRBB4UV+RMxh34=eDCuCfDUFEHexvkSCsg4fKDDGRQ@mail.gmail.com> (raw) Message-ID: <20131120125632.DwOmRfOCVr3l07lKbYgqVLUB3hqOvdN0b7YEMUTa5ZU@z> (raw) In-Reply-To: <20131120125325.07A42E0090@blue.fi.intel.com> 2013/11/20 Kirill A. Shutemov <kirill.shutemov@linux.intel.com>: > Andrey Wagin wrote: >> Hi Kirill, >> >> Looks like this patch adds memory leaks. >> [ 116.188310] kmemleak: 15672 new suspected memory leaks (see >> /sys/kernel/debug/kmemleak) >> unreferenced object 0xffff8800da45a350 (size 96): >> comm "dracut-initqueu", pid 93, jiffies 4294671391 (age 362.277s) >> hex dump (first 32 bytes): >> 07 00 07 00 ad 4e ad de ff ff ff ff 6b 6b 6b 6b .....N......kkkk >> ff ff ff ff ff ff ff ff 80 24 b4 82 ff ff ff ff .........$...... >> backtrace: >> [<ffffffff817152fe>] kmemleak_alloc+0x5e/0xc0 >> [<ffffffff811c34f3>] kmem_cache_alloc_trace+0x113/0x290 >> [<ffffffff811920f7>] __ptlock_alloc+0x27/0x50 >> [<ffffffff81192849>] __pmd_alloc+0x59/0x170 >> [<ffffffff81195ffa>] copy_page_range+0x38a/0x3e0 >> [<ffffffff8105a013>] dup_mm+0x313/0x540 >> [<ffffffff8105b9da>] copy_process+0x161a/0x1880 >> [<ffffffff8105c01b>] do_fork+0x8b/0x360 >> [<ffffffff8105c306>] SyS_clone+0x16/0x20 >> [<ffffffff81727b79>] stub_clone+0x69/0x90 >> [<ffffffffffffffff>] 0xffffffffffffffff >> >> It's quite serious, because my test host went to panic in a few hours. > > Sorry for that. > > Could you test patch below. Yes, it works. I found this too a few minutes ago:) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index a7cccb6..44c366c 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -62,6 +62,7 @@ void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) { paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); + pgtable_pmd_page_dtor(virt_to_page(pmd)); /* * NOTE! For PAE, any changes to the top page-directory-pointer-table * entries need a full cr3 reload to flush. Thanks. > > diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c > index a7cccb6d7fec..7be5809754cf 100644 > --- a/arch/x86/mm/pgtable.c > +++ b/arch/x86/mm/pgtable.c > @@ -61,6 +61,7 @@ void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) > #if PAGETABLE_LEVELS > 2 > void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > { > + struct page *page = virt_to_page(pmd); > paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); > /* > * NOTE! For PAE, any changes to the top page-directory-pointer-table > @@ -69,7 +70,8 @@ void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > #ifdef CONFIG_X86_PAE > tlb->need_flush_all = 1; > #endif > - tlb_remove_page(tlb, virt_to_page(pmd)); > + pgtable_pmd_page_dtor(page); > + tlb_remove_page(tlb, page); > } > > #if PAGETABLE_LEVELS > 3 > -- > Kirill A. Shutemov
next prev parent reply other threads:[~2013-11-20 12:56 UTC|newest] Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-10-10 18:05 [PATCH 00/34] dynamically allocate split ptl if it cannot be embedded to struct page Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 01/34] x86: add missed pgtable_pmd_page_ctor/dtor calls for preallocated pmds Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-11 5:50 ` Ingo Molnar 2013-10-11 5:50 ` Ingo Molnar 2013-10-10 18:05 ` [PATCH 02/34] cris: fix potential NULL-pointer dereference Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-11 9:58 ` Jesper Nilsson 2013-10-11 9:58 ` Jesper Nilsson 2013-10-10 18:05 ` [PATCH 03/34] m32r: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 04/34] xtensa: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 05/34] mm: allow pgtable_page_ctor() to fail Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 06/34] microblaze: add missing pgtable_page_ctor/dtor calls Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 07/34] mn10300: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 08/34] openrisc: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 09/34] alpha: handle pgtable_page_ctor() fail Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 10/34] arc: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-16 7:55 ` Vineet Gupta 2013-10-10 18:05 ` [PATCH 11/34] arm: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 20:18 ` Russell King - ARM Linux 2013-10-10 21:53 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 12/34] arm64: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 13/34] avr32: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 19:14 ` Hans-Christian Egtvedt 2013-10-10 19:14 ` Hans-Christian Egtvedt 2013-10-10 18:05 ` [PATCH 14/34] cris: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-11 9:57 ` Jesper Nilsson 2013-10-11 9:57 ` Jesper Nilsson 2013-10-10 18:05 ` [PATCH 15/34] frv: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 16/34] hexagon: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 17/34] ia64: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 18/34] m32r: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 19/34] m68k: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-16 8:07 ` Geert Uytterhoeven 2013-10-16 8:07 ` Geert Uytterhoeven 2013-10-16 9:56 ` Kirill A. Shutemov 2013-10-16 9:56 ` Kirill A. Shutemov 2013-10-16 10:29 ` Kirill A. Shutemov 2013-10-16 10:29 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 20/34] metag: " Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 21/34] mips: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 22/34] parisc: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 23/34] powerpc: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 24/34] s390: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 25/34] score: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-13 10:07 ` Lennox Wu 2013-10-10 18:05 ` [PATCH 26/34] sh: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 27/34] sparc: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:33 ` David Miller 2013-10-10 18:05 ` [PATCH 28/34] tile: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 19:50 ` Chris Metcalf 2013-10-10 19:50 ` Chris Metcalf 2013-10-10 18:05 ` [PATCH 29/34] um: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 30/34] unicore32: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 31/34] x86: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 32/34] xtensa: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 18:05 ` [PATCH 33/34] iommu/arm-smmu: " Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-11 10:26 ` Will Deacon 2013-10-11 10:26 ` Will Deacon 2013-10-10 18:05 ` [PATCH 34/34] mm: dynamically allocate page->ptl if it cannot be embedded to struct page Kirill A. Shutemov 2013-10-10 18:05 ` Kirill A. Shutemov 2013-10-10 20:00 ` Christoph Lameter 2013-10-10 20:09 ` Kirill A. Shutemov 2013-10-10 20:09 ` Kirill A. Shutemov 2013-10-11 14:01 ` Christoph Lameter 2013-10-11 14:01 ` Christoph Lameter 2013-10-14 9:04 ` Kirill A. Shutemov 2013-10-14 19:04 ` Christoph Lameter 2013-10-14 19:04 ` Christoph Lameter 2013-10-14 21:25 ` Kirill A. Shutemov 2013-10-14 22:13 ` Christoph Lameter 2013-10-14 22:13 ` Christoph Lameter 2013-10-14 22:26 ` Kirill A. Shutemov 2013-11-20 8:44 ` Andrey Wagin 2013-11-20 8:44 ` Andrey Wagin 2013-11-20 12:53 ` Kirill A. Shutemov 2013-11-20 12:56 ` Andrey Wagin [this message] 2013-11-20 12:56 ` Andrey Wagin 2013-11-20 13:06 ` Kirill A. Shutemov 2013-11-20 13:06 ` Kirill A. Shutemov 2013-11-20 13:29 ` Andrey Wagin 2013-10-10 19:47 ` [PATCH 00/34] dynamically allocate split ptl " Peter Zijlstra 2013-10-11 16:30 ` [PATCH 15/34] frv: handle pgtable_page_ctor() fail David Howells 2013-10-11 16:30 ` David Howells 2013-10-14 9:12 ` Kirill A. Shutemov 2013-10-14 9:12 ` Kirill A. Shutemov
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='CANaxB-xcyRBB4UV+RMxh34=eDCuCfDUFEHexvkSCsg4fKDDGRQ@mail.gmail.com' \ --to=avagin@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=kirill.shutemov@linux.intel.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mingo@redhat.com \ --cc=peterz@infradead.org \ /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: linkBe 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).