Re: [PATCH] fdset's leakage [message #4471 is a reply to message #4457] |
Tue, 11 July 2006 09:02  |
Rene Scharfe
Messages: 1 Registered: July 2006
|
Junior Member |
|
|
[strange loop snipped]
> That's going to take a long time to compute if nr > NR_OPEN. I just fixed
> a similar infinite loop in this function.
That other fix looks buggy btw. Here it is:
- nfds = 8 * L1_CACHE_BYTES;
- /* Expand to the max in easy steps */
- while (nfds <= nr) {
- nfds = nfds * 2;
- if (nfds > NR_OPEN)
- nfds = NR_OPEN;
- }
+ nfds = max_t(int, 8 * L1_CACHE_BYTES, roundup_pow_of_two(nfds));
+ if (nfds > NR_OPEN)
+ nfds = NR_OPEN;
Surely you meant to say "roundup_pow_of_two(nr + 1)"?
René
|
|
|