On (26/07/07 15:17), Mel Gorman didst pronounce: > I was looking closer at bind_zonelist() and it has the following snippet > > struct zonelist *zl; > int num, max, nd; > enum zone_type k; > > max = 1 + MAX_NR_ZONES * nodes_weight(*nodes); > max++; /* space for zlcache_ptr (see mmzone.h) */ > zl = kmalloc(sizeof(struct zone *) * max, GFP_KERNEL); > if (!zl) > return ERR_PTR(-ENOMEM); > > That set off alarm bells because we are allocating based on the size of a > zone, not the size of the zonelist. >
Never mind me, I'm a tool as it's now semi-obvious. When statically defined, zlcache_ptr is pointing to something useful as it's setup at boottime. When dynamically allocated in bind_zonelist, the zlcache_ptr is set to NULL so it never gets used by zlc_setup(). This could have done with a comment. -- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

