projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
38e0e8c
)
[PATCH] fix weird logic in alloc_fdtable()
author
Andrew Morton
<
[email protected]
>
Mon, 10 Jul 2006 11:45:31 +0000
(
04:45
-0700)
committer
Linus Torvalds
<
[email protected]
>
Mon, 10 Jul 2006 20:24:25 +0000
(13:24 -0700)
There's a fairly obvious infinite loop in there.
Also, use roundup_pow_of_two() rather than open-coding stuff.
Cc: Eric Dumazet <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
fs/file.c
patch
|
blob
|
history
diff --git
a/fs/file.c
b/fs/file.c
index 55f4e70225631b275f85215ee543b104507caacc..3f356086061d7076a379b76e265295a5fe3750fe 100644
(file)
--- 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(nfds));
+ if (nfds > NR_OPEN)
+ nfds = NR_OPEN;
new_openset = alloc_fdset(nfds);
new_execset = alloc_fdset(nfds);