Re: 2.6.18-rc1-mm1 oops on x86_64

Christoph Lameter
2006-07-10T15:54:41Z

On Sun, 9 Jul 2006, Andrew Morton wrote:

> On Sun, 09 Jul 2006 18:19:00 +0200
> Cedric Le Goater <clg@fr.ibm.com> wrote:
>
> > Andrew Morton wrote:
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc1/2.6.18-rc1-mm1/
> >
> > Kernel BUG at ...home/legoater/linux/2.6.18-rc1-mm1/mm/page_alloc.c:252
>
> VM_BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM);
>
> With your config, __GFP_HIGHMEM=0, so wham.

Hmm.. What this should be then is

VM_BUG_ON(gfp_flags & __GFP_WAIT)

in case of !CONFIG_HIGHMEM

So (not that nice though...)

Index: linux-2.6.17-mm6/mm/page_alloc.c
===================================================================
--- linux-2.6.17-mm6.orig/mm/page_alloc.c 2006-07-07 16:51:50.430063305 -0700
+++ linux-2.6.17-mm6/mm/page_alloc.c 2006-07-10 08:53:40.733541907 -0700
@@ -255,7 +255,11 @@ static inline void prep_zero_page(struct
{
int i;

+#ifdef CONFIG_HIGHMEM
VM_BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM);
+#else
+ VM_BUG_ON((gfp_flags & __GFP_WAIT);
+#endif
/*
* clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO
* and __GFP_HIGHMEM from hard or soft interrupt context.