On 30.11.2024 02:10, Volodymyr Babchuk wrote: > --- /dev/null > +++ b/xen/common/stack-protector.c > @@ -0,0 +1,10 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +#include <xen/lib.h> > +#include <xen/random.h> > + > +unsigned long __ro_after_init __stack_chk_guard; > + > +void __stack_chk_fail(void) > +{ > + panic("Detected stack corruption\n"); > +}
That's very little information that'll end up in the log to understand what has gone wrong. > --- /dev/null > +++ b/xen/include/xen/stack-protector.h > @@ -0,0 +1,29 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > + > +#ifndef XEN__STACK_PROTECTOR_H > +#define XEN__STACK_PROTECTOR_H > + > +#ifdef CONFIG_STACKPROTECTOR > + > +extern unsigned long __stack_chk_guard; > + > +/* > + * This function should be always inlined. Also it should be called > + * from a function that never returns or a function that with > + * stack-protector disabled. > + */ > +static always_inline void boot_stack_chk_guard_setup(void) > +{ > + __stack_chk_guard = get_random(); > + if (BITS_PER_LONG == 64) > + __stack_chk_guard |= ((unsigned long)get_random()) << 32; > +} The hard tabs here make it look like Linux style, when - unless there's a specific reason - new files want to be Xen style. Jan