From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Andrew Morton <akpm@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com> Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Subject: [PATCH 01/34] x86: add missed pgtable_pmd_page_ctor/dtor calls for preallocated pmds Date: Thu, 10 Oct 2013 21:05:26 +0300 [thread overview] Message-ID: <1381428359-14843-2-git-send-email-kirill.shutemov@linux.intel.com> (raw) In-Reply-To: <1381428359-14843-1-git-send-email-kirill.shutemov@linux.intel.com> I've missed that we preallocate few pmds on pgd_alloc() if X86_PAE enabled. Let's add missed constructor/destructor calls. I haven't noticed it during testing since prep_new_page() clears page->mapping and therefore page->ptl. It's effectively equal to spin_lock_init(&page->ptl). Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> --- arch/x86/mm/pgtable.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index dfa537a03b..1a7d21342e 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -189,8 +189,10 @@ static void free_pmds(pmd_t *pmds[]) int i; for(i = 0; i < PREALLOCATED_PMDS; i++) - if (pmds[i]) + if (pmds[i]) { + pgtable_pmd_page_dtor(virt_to_page(pmds[i])); free_page((unsigned long)pmds[i]); + } } static int preallocate_pmds(pmd_t *pmds[]) @@ -200,8 +202,13 @@ static int preallocate_pmds(pmd_t *pmds[]) for(i = 0; i < PREALLOCATED_PMDS; i++) { pmd_t *pmd = (pmd_t *)__get_free_page(PGALLOC_GFP); - if (pmd == NULL) + if (!pmd) + failed = true; + if (pmd && !pgtable_pmd_page_ctor(virt_to_page(pmd))) { + free_page((unsigned long)pmds[i]); + pmd = NULL; failed = true; + } pmds[i] = pmd; } -- 1.8.4.rc3 -- 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: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Andrew Morton <akpm@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com> Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Subject: [PATCH 01/34] x86: add missed pgtable_pmd_page_ctor/dtor calls for preallocated pmds Date: Thu, 10 Oct 2013 21:05:26 +0300 [thread overview] Message-ID: <1381428359-14843-2-git-send-email-kirill.shutemov@linux.intel.com> (raw) Message-ID: <20131010180526.boUVdKeUKiqFr3ssKVsmGa3R1tBcGc_cC6Sk4Vr81Yc@z> (raw) In-Reply-To: <1381428359-14843-1-git-send-email-kirill.shutemov@linux.intel.com> I've missed that we preallocate few pmds on pgd_alloc() if X86_PAE enabled. Let's add missed constructor/destructor calls. I haven't noticed it during testing since prep_new_page() clears page->mapping and therefore page->ptl. It's effectively equal to spin_lock_init(&page->ptl). Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> --- arch/x86/mm/pgtable.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index dfa537a03b..1a7d21342e 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -189,8 +189,10 @@ static void free_pmds(pmd_t *pmds[]) int i; for(i = 0; i < PREALLOCATED_PMDS; i++) - if (pmds[i]) + if (pmds[i]) { + pgtable_pmd_page_dtor(virt_to_page(pmds[i])); free_page((unsigned long)pmds[i]); + } } static int preallocate_pmds(pmd_t *pmds[]) @@ -200,8 +202,13 @@ static int preallocate_pmds(pmd_t *pmds[]) for(i = 0; i < PREALLOCATED_PMDS; i++) { pmd_t *pmd = (pmd_t *)__get_free_page(PGALLOC_GFP); - if (pmd == NULL) + if (!pmd) + failed = true; + if (pmd && !pgtable_pmd_page_ctor(virt_to_page(pmd))) { + free_page((unsigned long)pmds[i]); + pmd = NULL; failed = true; + } pmds[i] = pmd; } -- 1.8.4.rc3
next prev parent reply other threads:[~2013-10-10 18:05 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 ` Kirill A. Shutemov [this message] 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-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 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=1381428359-14843-2-git-send-email-kirill.shutemov@linux.intel.com \ --to=kirill.shutemov@linux.intel.com \ --cc=akpm@linux-foundation.org \ --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).