x86/uaccess: force copy_*_user() to be inlined
As already done with __copy_*_user(), mark copy_*_user() as __always_inline. Without this, the checks for things like __builtin_const_p() won't work consistently in either hardened usercopy nor the recent adjustments for detecting usercopy overflows at compile time. The change in kernel text size is detectable, but very small: text data bss dec hex filename 12118735 5768608 14229504 32116847 1ea106f vmlinux.before 12120207 5768608 14229504 32118319 1ea162f vmlinux.after Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
		
							parent
							
								
									46738ab31f
								
							
						
					
					
						commit
						e6971009a9
					
				@ -705,7 +705,7 @@ static inline void copy_user_overflow(int size, unsigned long count)
 | 
			
		||||
	WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned long __must_check
 | 
			
		||||
static __always_inline unsigned long __must_check
 | 
			
		||||
copy_from_user(void *to, const void __user *from, unsigned long n)
 | 
			
		||||
{
 | 
			
		||||
	int sz = __compiletime_object_size(to);
 | 
			
		||||
@ -725,7 +725,7 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
 | 
			
		||||
	return n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned long __must_check
 | 
			
		||||
static __always_inline unsigned long __must_check
 | 
			
		||||
copy_to_user(void __user *to, const void *from, unsigned long n)
 | 
			
		||||
{
 | 
			
		||||
	int sz = __compiletime_object_size(from);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user