Messages in this thread | | | Date | Thu, 01 Feb 2007 11:44:36 +1100 | From | Nick Piggin <> | Subject | Re: Linux 2.6.20-rc7 |
| |
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/
| |