mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	kernel hardening fixes for v6.7-rc2
- stackleak: add declarations for global functions (Arnd Bergmann) - gcc-plugins: randstruct: Only warn about true flexible arrays (Kees Cook) - gcc-plugins: latent_entropy: Fix description typo (Konstantin Runov) -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEpcP2jyKd1g9yPm4TiXL039xtwCYFAmVTsQwWHGtlZXNjb29r QGNocm9taXVtLm9yZwAKCRCJcvTf3G3AJk95D/9lrPFxxy4gQUTSLXdq6F/H5Fix 3dH0ePeGSHNzu/7n1uwXO1NVUYyOWoBWxp9E+LlaWm+GKb1QpG6i2kr2icyB6d5W LsGfFscG0R6A0DwpBeb3trDEFmaPACLk4Xm7uS0YP1oTMVVP0ZZXwaE95wDfg7Ji nyAxvw+J56NRC+LVuZqPWgO5lkF4AG/MSpZ0aox6DQoH/YqqW21gKoAgZHhJg+1Q dAKzuTyqjjVYG3ugB7O87O+GlEePpBDLce0c6Rvf9H02tnR+Ju2xkcKbg/s7eut9 2AbBPsUqkTaF2fl1FNF5oX8MiZYmKwAMe0bTTl5pP1VxpbHqQooT/HWl76jpHZ9d OS3HXd1dO5N9lNTgWvWuiDoWN5j7h6Z6EuRPRcjPSFXrC1ceuB/1QDmvGtrFFmhL gohP9SOwC6jUQVPfH3RAf1TTHUFEpTlTsloUVlAvfuDkgLup2D/dH03j9yLBcXUl oLavj7aN0gTHjz99QxzxfIfwKMygrcLCKr7tAWMcky09Xin0VN5PGJ3zfVtzG4eI AbKq3V1el++XJ1vZmXDYjGJEUSEavX+SrjMFWfpITIeIjeOuMZRdgH3sJi11Gbkx gBIBrYKWQ5vIP4rNvC+DlIXlQs3yyFBPcIfwQ5JqLwuYc3F9Qu1Xhgf6bi+K3nFt qI/BXf2kRjnUtLIrdQ== =+BHu -----END PGP SIGNATURE----- Merge tag 'hardening-v6.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux Pull hardening fixes from Kees Cook: - stackleak: add declarations for global functions (Arnd Bergmann) - gcc-plugins: randstruct: Only warn about true flexible arrays (Kees Cook) - gcc-plugins: latent_entropy: Fix description typo (Konstantin Runov) * tag 'hardening-v6.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: gcc-plugins: latent_entropy: Fix typo (args -> argc) in plugin description gcc-plugins: randstruct: Only warn about true flexible arrays stackleak: add declarations for global functions
This commit is contained in:
		
						commit
						c42d9eeef8
					
				
					 3 changed files with 8 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 | 
			
		||||
#ifdef CONFIG_GCC_PLUGIN_STACKLEAK
 | 
			
		||||
#include <asm/stacktrace.h>
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The lowest address on tsk's stack which we can plausibly erase.
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +77,11 @@ static inline void stackleak_task_init(struct task_struct *t)
 | 
			
		|||
# endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
asmlinkage void noinstr stackleak_erase(void);
 | 
			
		||||
asmlinkage void noinstr stackleak_erase_on_task_stack(void);
 | 
			
		||||
asmlinkage void noinstr stackleak_erase_off_task_stack(void);
 | 
			
		||||
void __no_caller_saved_registers noinstr stackleak_track_stack(void);
 | 
			
		||||
 | 
			
		||||
#else /* !CONFIG_GCC_PLUGIN_STACKLEAK */
 | 
			
		||||
static inline void stackleak_task_init(struct task_struct *t) { }
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@
 | 
			
		|||
 *	if (argc <= 1)
 | 
			
		||||
 *		printf("%s: no command arguments :(\n", *argv);
 | 
			
		||||
 *	else
 | 
			
		||||
 *		printf("%s: %d command arguments!\n", *argv, args - 1);
 | 
			
		||||
 *		printf("%s: %d command arguments!\n", *argv, argc - 1);
 | 
			
		||||
 * }
 | 
			
		||||
 *
 | 
			
		||||
 * after:
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@
 | 
			
		|||
 *		// perturb_local_entropy()
 | 
			
		||||
 *	} else {
 | 
			
		||||
 *		local_entropy ^= 3896280633962944730;
 | 
			
		||||
 *		printf("%s: %d command arguments!\n", *argv, args - 1);
 | 
			
		||||
 *		printf("%s: %d command arguments!\n", *argv, argc - 1);
 | 
			
		||||
 *	}
 | 
			
		||||
 *
 | 
			
		||||
 *	// latent_entropy_execute() 4.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,8 +278,6 @@ static bool is_flexible_array(const_tree field)
 | 
			
		|||
{
 | 
			
		||||
	const_tree fieldtype;
 | 
			
		||||
	const_tree typesize;
 | 
			
		||||
	const_tree elemtype;
 | 
			
		||||
	const_tree elemsize;
 | 
			
		||||
 | 
			
		||||
	fieldtype = TREE_TYPE(field);
 | 
			
		||||
	typesize = TYPE_SIZE(fieldtype);
 | 
			
		||||
| 
						 | 
				
			
			@ -287,20 +285,12 @@ static bool is_flexible_array(const_tree field)
 | 
			
		|||
	if (TREE_CODE(fieldtype) != ARRAY_TYPE)
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	elemtype = TREE_TYPE(fieldtype);
 | 
			
		||||
	elemsize = TYPE_SIZE(elemtype);
 | 
			
		||||
 | 
			
		||||
	/* size of type is represented in bits */
 | 
			
		||||
 | 
			
		||||
	if (typesize == NULL_TREE && TYPE_DOMAIN(fieldtype) != NULL_TREE &&
 | 
			
		||||
	    TYPE_MAX_VALUE(TYPE_DOMAIN(fieldtype)) == NULL_TREE)
 | 
			
		||||
		return true;
 | 
			
		||||
 | 
			
		||||
	if (typesize != NULL_TREE &&
 | 
			
		||||
	    (TREE_CONSTANT(typesize) && (!tree_to_uhwi(typesize) ||
 | 
			
		||||
	     tree_to_uhwi(typesize) == tree_to_uhwi(elemsize))))
 | 
			
		||||
		return true;
 | 
			
		||||
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue