Files
xen/docs
Volodymyr Babchuk be2a6a1096 xen: common: add ability to enable stack protector
Both GCC and Clang support -fstack-protector feature, which add stack
canaries to functions where stack corruption is possible. This patch
makes general preparations to enable this feature on different
supported architectures:

 - Added CONFIG_HAS_STACK_PROTECTOR option so each architecture
   can enable this feature individually
 - Added user-selectable CONFIG_STACK_PROTECTOR option
 - Implemented code that sets up random stack canary and a basic
   handler for stack protector failures

Stack guard value is initialized in two phases:

1. Pre-defined randomly-selected value.

2. Own implementation of linear congruent random number generator. It
relies on get_cycles() being available very early. If get_cycles()
returns zero, it would leave pre-defined value from the previous step.

boot_stack_chk_guard_setup() is declared as always_inline to ensure
that it will not trigger stack protector by itself. And of course,
caller should ensure that stack protection code will not be reached
later. It is possible to call the same function from an ASM code by
introducing simple trampoline in stack-protector.c, but right now
there is no use case for such trampoline.

As __stack_chk_fail() is not called by Xen source code directly, and
only called by compiler-generated code, it does not needed to be
declared separately. So we need separate MISRA deviation for it.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
2025-04-14 13:07:12 +02:00
..
2025-03-27 12:23:10 +01:00
2025-02-21 14:55:13 +00:00
2018-11-14 19:25:11 +00:00
2025-03-03 16:15:40 -08:00

Sphinx documentation:

All source rendered by Sphinx is licensed under CC-BY-4.0.

You are free to:
  Share:
    Copy and redistribute the material in any medium or format.
  Adapt:
    Remix, transform, and build upon the material for any purpose, even
    commercially.

Under the following terms:
  Attribution:
    You must give appropriate credit, provide a link to the license, and
    indicate if changes were made. You may do so in any reasonable manner, but
    not in any way that suggests the licensor endorses you or your use.
  No additional restrictions:
    You may not apply legal terms or technological measures that legally
    restrict others from doing anything the license permits.

See https://creativecommons.org/licenses/by/4.0/ for full details.

This includes:
  * All ReStructured Text files:          docs/*/*.rst
  * The Sphinx configuration file:        docs/conf.py
  * Content in Sphinx-exclusive subdirs:  docs/*-guide/*


Other documentation:

There are a variety of text documents in various formats.  These, given no
explicit license guidance, fall under Xen's default GPL-2.0 license.