mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Ensure that kernel_init_freeable() is not inlined into non __init code
Commit d6b2123802 "make sure that we always have a return path from
kernel_execve()" reshuffled kernel_init()/init_post() to ensure that
kernel_execve() has a caller to return to.
It removed __init annotation for kernel_init() and introduced/calls a
new routine kernel_init_freeable(). Latter however is inlined by any
reasonable compiler (ARC gcc 4.4 in this case), causing slight code
bloat.
This patch forces kernel_init_freeable() as noinline reducing the .text
bloat-o-meter vmlinux vmlinux_new
add/remove: 1/0 grow/shrink: 0/1 up/down: 374/-334 (40)
function                        old     new   delta
kernel_init_freeable              -     374    +374 (.init.text)
kernel_init                     628     294    -334 (.text)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
			
			
This commit is contained in:
		
							parent
							
								
									a49f0d1ea3
								
							
						
					
					
						commit
						f80b0c904d
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
					@ -802,7 +802,7 @@ static int run_init_process(const char *init_filename)
 | 
				
			||||||
		(const char __user *const __user *)envp_init);
 | 
							(const char __user *const __user *)envp_init);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void __init kernel_init_freeable(void);
 | 
					static noinline void __init kernel_init_freeable(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int __ref kernel_init(void *unused)
 | 
					static int __ref kernel_init(void *unused)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -845,7 +845,7 @@ static int __ref kernel_init(void *unused)
 | 
				
			||||||
	      "See Linux Documentation/init.txt for guidance.");
 | 
						      "See Linux Documentation/init.txt for guidance.");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void __init kernel_init_freeable(void)
 | 
					static noinline void __init kernel_init_freeable(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Wait until kthreadd is all set-up.
 | 
						 * Wait until kthreadd is all set-up.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue