Hi All,

The generic and IA-64 versions of alloc_zeroed_user_highpage() don't check the 
return value from alloc_page_vma(). This can lead to an oops if we're OOM.

This fixes my oops on PPC64, but I haven't got an IA-64 machine/compiler handy.

Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>

diff -rN -p -u oombreakage-old/include/asm-ia64/page.h 
oombreakage-new/include/asm-ia64/page.h
--- oombreakage-old/include/asm-ia64/page.h     2005-02-04 04:10:37.000000000 
+1100
+++ oombreakage-new/include/asm-ia64/page.h     2005-02-09 20:53:37.000000000 
+1100
@@ -79,7 +79,8 @@ do {                                          \
 #define alloc_zeroed_user_highpage(vma, vaddr) \
 ({                                             \
        struct page *page = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, 
vaddr); \
-       flush_dcache_page(page);                \
+       if (page)                               \
+               flush_dcache_page(page);        \
        page;                                   \
 })
 
diff -rN -p -u oombreakage-old/include/linux/highmem.h 
oombreakage-new/include/linux/highmem.h
--- oombreakage-old/include/linux/highmem.h     2005-02-09 20:22:41.000000000 
+1100
+++ oombreakage-new/include/linux/highmem.h     2005-02-09 20:47:01.000000000 
+1100
@@ -48,7 +48,9 @@ alloc_zeroed_user_highpage(struct vm_are
 {
        struct page *page = alloc_page_vma(GFP_HIGHUSER, vma, vaddr);
 
-       clear_user_highpage(page, vaddr);
+       if (page)
+               clear_user_highpage(page, vaddr);
+
        return page;
 }
 #endif



-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to