Commit a2fd64d6 authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Martin Schwidefsky

[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: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent d09293ae
...@@ -236,10 +236,10 @@ static int vmem_add_mem(unsigned long start, unsigned long size) ...@@ -236,10 +236,10 @@ static int vmem_add_mem(unsigned long start, unsigned long size)
{ {
int ret; int ret;
ret = vmem_add_range(start, size); ret = vmem_add_mem_map(start, size);
if (ret) if (ret)
return ret; return ret;
return vmem_add_mem_map(start, size); return vmem_add_range(start, size);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment