mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	[PATCH] fix weird logic in alloc_fdtable()
There's a fairly obvious infinite loop in there. Also, use roundup_pow_of_two() rather than open-coding stuff. Cc: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									38e0e8c055
								
							
						
					
					
						commit
						92eb7a2f28
					
				
					 1 changed files with 3 additions and 7 deletions
				
			
		
							
								
								
									
										10
									
								
								fs/file.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								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); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Andrew Morton
						Andrew Morton