X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Ffile.c;fp=fs%2Ffile.c;h=b3c6b82e6a9d8629446e77268a83a2c5c4eb1b62;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=4c2cacca4e2e9142cf13497db6a4d3a3efb8b54b;hpb=4e76c8a9fa413ccc09d3f7f664183dcce3555d57;p=linux-2.6.git diff --git a/fs/file.c b/fs/file.c index 4c2cacca4..b3c6b82e6 100644 --- a/fs/file.c +++ b/fs/file.c @@ -240,13 +240,9 @@ static struct fdtable *alloc_fdtable(int nr) if (!fdt) goto out; - 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(nr + 1)); + if (nfds > NR_OPEN) + nfds = NR_OPEN; new_openset = alloc_fdset(nfds); new_execset = alloc_fdset(nfds);