Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a2fd64d6aaf498756f700eb1d07818efee046733
Commit:     a2fd64d6aaf498756f700eb1d07818efee046733
Parent:     d09293aee9fd0f9f291fa3a0e4ca5012f514d083
Author:     Christian Borntraeger <[EMAIL PROTECTED]>
AuthorDate: Sat Jan 26 14:11:16 2008 +0100
Committer:  Martin Schwidefsky <[EMAIL PROTECTED]>
CommitDate: Sat Jan 26 14:11:23 2008 +0100

    [S390] vmemmap: allocate struct pages before 1:1 mapping
    
    We have seen an oops in an OOM situation, where show_mem tried to
    access the struct page of a dcss segment. The vmemmap code has
    already created the 1:1 mapping but failed allocating the struct
    pages. In the OOM case, show_mem now walks the memory. It uses
    pfn_valid to detect if it may access the struct page. In the case
    described above, the mapping was established and pfn_valid returned
    true. As the struct pages were not allocated, the kernel oopsed.
    
    We have to ensure that we have created the struct pages, before we
    add a mapping pointing to the pages.
    
    Signed-off-by: Christian Borntraeger <[EMAIL PROTECTED]>
    Signed-off-by: Martin Schwidefsky <[EMAIL PROTECTED]>
---
 arch/s390/mm/vmem.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 1fc9989..79d13a1 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -236,10 +236,10 @@ static int vmem_add_mem(unsigned long start, unsigned 
long size)
 {
        int ret;
 
-       ret = vmem_add_range(start, size);
+       ret = vmem_add_mem_map(start, size);
        if (ret)
                return ret;
-       return vmem_add_mem_map(start, size);
+       return vmem_add_range(start, size);
 }
 
 /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to