From: Joerg Roedel jroedel@suse.de
This reverts commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89.
This commit is broken for x86, as it unmaps the PTE and PMD pages and immediatly frees them without doing a TLB flush.
Further this lacks synchronization with other page-tables in the system when the PMD pages are not shared between mm_structs.
On x86-32 with PAE and PTI patches on-top this patch triggers the BUG_ON in vmalloc_sync_one() because the kernel and the process page-table were not synchronized.
Signed-off-by: Joerg Roedel jroedel@suse.de --- arch/x86/mm/pgtable.c | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-)
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index ae98d4c5e32a..fd02a537a80f 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -787,22 +787,7 @@ int pmd_clear_huge(pmd_t *pmd) */ int pud_free_pmd_page(pud_t *pud) { - pmd_t *pmd; - int i; - - if (pud_none(*pud)) - return 1; - - pmd = (pmd_t *)pud_page_vaddr(*pud); - - for (i = 0; i < PTRS_PER_PMD; i++) - if (!pmd_free_pte_page(&pmd[i])) - return 0; - - pud_clear(pud); - free_page((unsigned long)pmd); - - return 1; + return pud_none(*pud); }
/** @@ -814,15 +799,6 @@ int pud_free_pmd_page(pud_t *pud) */ int pmd_free_pte_page(pmd_t *pmd) { - pte_t *pte; - - if (pmd_none(*pmd)) - return 1; - - pte = (pte_t *)pmd_page_vaddr(*pmd); - pmd_clear(pmd); - free_page((unsigned long)pte); - - return 1; + return pmd_none(*pmd); } #endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */
On Thu, Apr 26, 2018 at 05:14:07PM +0200, Joerg Roedel wrote:
From: Joerg Roedel jroedel@suse.de
This reverts commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89.
This commit is broken for x86, as it unmaps the PTE and PMD pages and immediatly frees them without doing a TLB flush.
Further this lacks synchronization with other page-tables in the system when the PMD pages are not shared between mm_structs.
On x86-32 with PAE and PTI patches on-top this patch triggers the BUG_ON in vmalloc_sync_one() because the kernel and the process page-table were not synchronized.
Signed-off-by: Joerg Roedel jroedel@suse.de
arch/x86/mm/pgtable.c | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-)
<formletter>
This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly.
</formletter>
On Thu, Apr 26, 2018 at 05:27:12PM +0200, Greg KH wrote:
<formletter>
This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly.
</formletter>
That is fine, as this is an upstream-first submission. When this commit gets accepted it can also be applied to stable, given the original commit was applied there too (didn't check that).
I just cc'ed stable because it was cc'ed on the original patch.
Thanks,
Joerg
On Thu, 2018-04-26 at 17:14 +0200, Joerg Roedel wrote:
From: Joerg Roedel jroedel@suse.de
This reverts commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89.
This commit is broken for x86, as it unmaps the PTE and PMD pages and immediatly frees them without doing a TLB flush.
Further this lacks synchronization with other page-tables in the system when the PMD pages are not shared between mm_structs.
On x86-32 with PAE and PTI patches on-top this patch triggers the BUG_ON in vmalloc_sync_one() because the kernel and the process page-table were not synchronized.
Signed-off-by: Joerg Roedel jroedel@suse.de
I do not agree with the comments and this revert. Let's discuss further on the original thread.
Thanks, -Toshi
* Kani, Toshi toshi.kani@hpe.com wrote:
On Thu, 2018-04-26 at 17:14 +0200, Joerg Roedel wrote:
From: Joerg Roedel jroedel@suse.de
This reverts commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89.
This commit is broken for x86, as it unmaps the PTE and PMD pages and immediatly frees them without doing a TLB flush.
Further this lacks synchronization with other page-tables in the system when the PMD pages are not shared between mm_structs.
On x86-32 with PAE and PTI patches on-top this patch triggers the BUG_ON in vmalloc_sync_one() because the kernel and the process page-table were not synchronized.
Signed-off-by: Joerg Roedel jroedel@suse.de
I do not agree with the comments and this revert. Let's discuss further on the original thread.
The original patch is totally broken (it's based on a misunderstanding), so unless you have a fix the revert is justified.
Thanks,
Ingo
On Fri, 2018-04-27 at 08:28 +0200, Ingo Molnar wrote:
- Kani, Toshi toshi.kani@hpe.com wrote:
On Thu, 2018-04-26 at 17:14 +0200, Joerg Roedel wrote:
From: Joerg Roedel jroedel@suse.de
This reverts commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89.
This commit is broken for x86, as it unmaps the PTE and PMD pages and immediatly frees them without doing a TLB flush.
Further this lacks synchronization with other page-tables in the system when the PMD pages are not shared between mm_structs.
On x86-32 with PAE and PTI patches on-top this patch triggers the BUG_ON in vmalloc_sync_one() because the kernel and the process page-table were not synchronized.
Signed-off-by: Joerg Roedel jroedel@suse.de
I do not agree with the comments and this revert. Let's discuss further on the original thread.
The original patch is totally broken (it's based on a misunderstanding), so unless you have a fix the revert is justified.
I am working on a fix on top of this patch.
Thanks, -Toshi
linux-stable-mirror@lists.linaro.org