This applies against 2.5.63.
pte_alloc_kernel needs a check for pmd_present(*pmd) at the end.
Thanks,
Paul Larson
--- linux-2.5.63/mm/memory.c Mon Feb 24 13:05:31 2003
+++ linux-2.5.63-fix/mm/memory.c Mon Feb 24 15:45:05 2003
@@ -186,7 +186,9 @@
pmd_populate_kernel(mm, pmd, new);
}
out:
- return pte_offset_kernel(pmd, address);
+ if (pmd_present(*pmd))
+ return pte_offset_kernel(pmd, address);
+ return NULL;
}
#define PTE_TABLE_MASK ((PTRS_PER_PTE-1) * sizeof(pte_t))
#define PMD_TABLE_MASK ((PTRS_PER_PMD-1) * sizeof(pmd_t))
Paul Larson <[email protected]> wrote:
>
> This applies against 2.5.63.
> pte_alloc_kernel needs a check for pmd_present(*pmd) at the end.
>
> Thanks,
> Paul Larson
>
> --- linux-2.5.63/mm/memory.c Mon Feb 24 13:05:31 2003
> +++ linux-2.5.63-fix/mm/memory.c Mon Feb 24 15:45:05 2003
> @@ -186,7 +186,9 @@
> pmd_populate_kernel(mm, pmd, new);
> }
> out:
> - return pte_offset_kernel(pmd, address);
> + if (pmd_present(*pmd))
> + return pte_offset_kernel(pmd, address);
> + return NULL;
> }
> #define PTE_TABLE_MASK ((PTRS_PER_PTE-1) * sizeof(pte_t))
> #define PMD_TABLE_MASK ((PTRS_PER_PMD-1) * sizeof(pmd_t))
Confused. I cannot see a codepath which makes this test necessary?
Paul Larson <[email protected]> wrote:
- return pte_offset_kernel(pmd, address);
+ if (pmd_present(*pmd))
+ return pte_offset_kernel(pmd, address);
+ return NULL;
On Mon, Feb 24, 2003 at 02:33:41PM -0800, Andrew Morton wrote:
> Confused. I cannot see a codepath which makes this test necessary?
Looks like it's OOM handling by analogy with pte_alloc_map().
-- wli