forked from mirrors/linux
		
	fs/select: avoid clang stack usage warning
The select() implementation is carefully tuned to put a sensible amount of data on the stack for holding a copy of the user space fd_set, but not too large to risk overflowing the kernel stack. When building a 32-bit kernel with clang, we need a little more space than with gcc, which often triggers a warning: fs/select.c:619:5: error: stack frame size of 1048 bytes in function 'core_sys_select' [-Werror,-Wframe-larger-than=] int core_sys_select(int n, fd_set __user *inp, fd_set __user *outp, I experimentally found that for 32-bit ARM, reducing the maximum stack usage by 64 bytes keeps us reliably under the warning limit again. Link: http://lkml.kernel.org/r/20190307090146.1874906-1-arnd@arndb.de Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Andi Kleen <ak@linux.intel.com> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Cc: Eric Dumazet <edumazet@google.com> Cc: "Darrick J. Wong" <darrick.wong@oracle.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									134fca9063
								
							
						
					
					
						commit
						ad312f95d4
					
				
					 1 changed files with 4 additions and 0 deletions
				
			
		|  | @ -16,7 +16,11 @@ | |||
| extern struct ctl_table epoll_table[]; /* for sysctl */ | ||||
| /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating
 | ||||
|    additional memory. */ | ||||
| #ifdef __clang__ | ||||
| #define MAX_STACK_ALLOC 768 | ||||
| #else | ||||
| #define MAX_STACK_ALLOC 832 | ||||
| #endif | ||||
| #define FRONTEND_STACK_ALLOC	256 | ||||
| #define SELECT_STACK_ALLOC	FRONTEND_STACK_ALLOC | ||||
| #define POLL_STACK_ALLOC	FRONTEND_STACK_ALLOC | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Arnd Bergmann
						Arnd Bergmann