[Devel] Re: [PATCH] fdset's leakage

Rene Scharfe rene.scharfe at lsrfire.ath.cx
Tue Jul 11 02:02:08 PDT 2006


[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é




More information about the Devel mailing list