Re: [PATCH] stop null ptr deference in __alloc_pages

From: Samuel Ortiz (sortiz@dbear.engr.sgi.com)
Date: Fri Mar 08 2002 - 15:14:47 EST


Hi Martin,

On Fri, 8 Mar 2002, Martin J. Bligh wrote:

> Summary: Avoid null ptr defererence in __alloc_pages
> This exists in 2.4. and 2.5
>
> Configuration: a NUMA (ia32) system which only has highmem
> on one or more nodes.
>
> Action to create: Try to allocate ZONE_NORMAL memory
> from a node which only has highmem. What we should do
> is fall back to another node, looking for ZONE_NORMAL
> memory.
If you applied an SGI patch that makes the zonelist contain all the zones
of your machine, then the zonelist should not be NULL.
If you allocate memory with gfp_mask & GFP_ZONEMASK == GFP_NORMAL from a
HIGHMEM only node, then the first entry on the corresponding zonelist
should be the first NORMAL zone on some other node.
Am I missing something here ?

> In looking at the specified zonelist, we panic because that zonelist
> is NULL. The simple patch below avoids the null deference, and
> returns failure. alloc_pages will continue looking through the nodes
> until it finds one with some ZONE_NORMAL memory. We actually
> panic at the moment a few lines later when we do,
> classzone->need_balance = 1; thus dereferencing the pointer.
>
> --- linux-2.4.18-memalloc/mm/page_alloc.c.old Fri Mar 8 18:21:41 2002
> +++ linux-2.4.18-memalloc/mm/page_alloc.c Fri Mar 8 18:23:27 2002
> @@ -317,6 +317,8 @@
>
> zone = zonelist->zones;
> classzone = *zone;
> + if (classzone == NULL)
> + return NULL;
> min = 1UL << order;
> for (;;) {
> zone_t *z = *(zone++);
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

-- 
Thanks,
Samuel.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 15 2002 - 22:00:09 EST