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:
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_GCC_PLUGIN_STACKLEAK
|
#ifdef CONFIG_GCC_PLUGIN_STACKLEAK
|
||||||
#include <asm/stacktrace.h>
|
#include <asm/stacktrace.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The lowest address on tsk's stack which we can plausibly erase.
|
* 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
|
# 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 */
|
#else /* !CONFIG_GCC_PLUGIN_STACKLEAK */
|
||||||
static inline void stackleak_task_init(struct task_struct *t) { }
|
static inline void stackleak_task_init(struct task_struct *t) { }
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
* if (argc <= 1)
|
* if (argc <= 1)
|
||||||
* printf("%s: no command arguments :(\n", *argv);
|
* printf("%s: no command arguments :(\n", *argv);
|
||||||
* else
|
* else
|
||||||
* printf("%s: %d command arguments!\n", *argv, args - 1);
|
* printf("%s: %d command arguments!\n", *argv, argc - 1);
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* after:
|
* after:
|
||||||
@ -47,7 +47,7 @@
|
|||||||
* // perturb_local_entropy()
|
* // perturb_local_entropy()
|
||||||
* } else {
|
* } else {
|
||||||
* local_entropy ^= 3896280633962944730;
|
* 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.
|
* // latent_entropy_execute() 4.
|
||||||
|
@ -278,8 +278,6 @@ static bool is_flexible_array(const_tree field)
|
|||||||
{
|
{
|
||||||
const_tree fieldtype;
|
const_tree fieldtype;
|
||||||
const_tree typesize;
|
const_tree typesize;
|
||||||
const_tree elemtype;
|
|
||||||
const_tree elemsize;
|
|
||||||
|
|
||||||
fieldtype = TREE_TYPE(field);
|
fieldtype = TREE_TYPE(field);
|
||||||
typesize = TYPE_SIZE(fieldtype);
|
typesize = TYPE_SIZE(fieldtype);
|
||||||
@ -287,20 +285,12 @@ static bool is_flexible_array(const_tree field)
|
|||||||
if (TREE_CODE(fieldtype) != ARRAY_TYPE)
|
if (TREE_CODE(fieldtype) != ARRAY_TYPE)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
elemtype = TREE_TYPE(fieldtype);
|
|
||||||
elemsize = TYPE_SIZE(elemtype);
|
|
||||||
|
|
||||||
/* size of type is represented in bits */
|
/* size of type is represented in bits */
|
||||||
|
|
||||||
if (typesize == NULL_TREE && TYPE_DOMAIN(fieldtype) != NULL_TREE &&
|
if (typesize == NULL_TREE && TYPE_DOMAIN(fieldtype) != NULL_TREE &&
|
||||||
TYPE_MAX_VALUE(TYPE_DOMAIN(fieldtype)) == NULL_TREE)
|
TYPE_MAX_VALUE(TYPE_DOMAIN(fieldtype)) == NULL_TREE)
|
||||||
return true;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user