Re: [BUG FIX] [PATCH] fork_init() max_low_pfn fixes potential OOMbug on big highmem machine

From: Coywolf Qi Hunt
Date: Tue Jun 29 2004 - 05:52:22 EST


Russell King wrote:

On Mon, Jun 28, 2004 at 11:55:29PM +0800, Coywolf Qi Hunt wrote:


Hello all,

On machine with 16G(or 8G if 4k stacks) or more memory, high max_threads could let system run out of low memory.
This patch decides max_threads by the amount of low memory instead of the total physical memory.
Systems without high memory would not be affected.



This is wrong - max_low_pfn can be high on systems where physical RAM
doesn't start at address 0. Such is very common on ARM platforms,
where RAM is located at 0xa0000000 or 0xc0000000 physical, which
leads to any calculation based upon max_low_pfn to believe we have
more than 3GB of RAM when we may only have 64MB or so.

I think we may need a num_lowpages for this...

Actually there's physical DRAM offset: PHY_OFFSET, defined on ARM only. max_low_pfn happens to be the same as `num_lowpages'.
These assignments seems illogical in naming. But just happen to let this patch work. Other platforms may still break.

[coywolf@everest ~/linux-2.6.7/arch]$ grep max_low_pfn arm* -rn
arm/mm/init.c:235: max_low_pfn = memend_pfn - O_PFN_DOWN(PHYS_OFFSET);
arm26/mm/init.c:187: max_low_pfn = memend_pfn - PFN_DOWN(PHYS_OFFSET);
arm26/mm/mm-memc.c:157: page_nr = max_low_pfn;

--
Coywolf Qi Hunt
Admin of http://GreatCN.org and http://LoveCN.org

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