diff options
-rw-r--r-- | fs/file.c | 10 |
1 files changed, 3 insertions, 7 deletions
@@ -240,13 +240,9 @@ static struct fdtable *alloc_fdtable(int nr) | |||
240 | if (!fdt) | 240 | if (!fdt) |
241 | goto out; | 241 | goto out; |
242 | 242 | ||
243 | nfds = 8 * L1_CACHE_BYTES; | 243 | nfds = max_t(int, 8 * L1_CACHE_BYTES, roundup_pow_of_two(nfds)); |
244 | /* Expand to the max in easy steps */ | 244 | if (nfds > NR_OPEN) |
245 | while (nfds <= nr) { | 245 | nfds = NR_OPEN; |
246 | nfds = nfds * 2; | ||
247 | if (nfds > NR_OPEN) | ||
248 | nfds = NR_OPEN; | ||
249 | } | ||
250 | 246 | ||
251 | new_openset = alloc_fdset(nfds); | 247 | new_openset = alloc_fdset(nfds); |
252 | new_execset = alloc_fdset(nfds); | 248 | new_execset = alloc_fdset(nfds); |