![]() | |||||||||||||
Messages in this thread |
Linus Torvalds wrote: > if (free_pages <= min + z->lowmem_reserve[classzone_idx]) > return 0; > > gets broken, because the negative 'free_pages' will look like a huge > unsigned positive number (and we'll make it unsigned becaue 'min' got > turned unsigned). There was a reason that thing was signed in the first > place, and neither me nor Andrew noticed. > > Bad Nick. And bad me and Andrew for not noticing. Sorry. I think I even wrote that comment at the top of the function. And probably the function as well :( > I should either revert that commit or just check for "free_pages" being > negative. The latter, in many ways, is probably better, because generally > we simply should never work with negative numbers in the kernel, so when > something potentially goes negative, we're probably just better off always > testing it explicitly anyway. > > Nick, Andrew, any preferences? As Andrew says, it would need to be checked each time, because we have nothing synchronising against free_pages at the top, or nr_free in the loop. We could make them both unsigned, and _add_ everything to min rather than subtracting from free_pages? -- SUSE Labs, Novell Inc. Send instant messages to your online friends http://au.messenger.yahoo.com - 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/ | ||||||||||||
| Last update: 2007-02-01 01:47 [from the cache] ©2003-2008 | |||||||||||||