|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * Landlock - Errata information | 
|  | * | 
|  | * Copyright © 2025 Microsoft Corporation | 
|  | */ | 
|  |  | 
|  | #ifndef _SECURITY_LANDLOCK_ERRATA_H | 
|  | #define _SECURITY_LANDLOCK_ERRATA_H | 
|  |  | 
|  | #include <linux/init.h> | 
|  |  | 
|  | struct landlock_erratum { | 
|  | const int abi; | 
|  | const u8 number; | 
|  | }; | 
|  |  | 
|  | /* clang-format off */ | 
|  | #define LANDLOCK_ERRATUM(NUMBER) \ | 
|  | { \ | 
|  | .abi = LANDLOCK_ERRATA_ABI, \ | 
|  | .number = NUMBER, \ | 
|  | }, | 
|  | /* clang-format on */ | 
|  |  | 
|  | /* | 
|  | * Some fixes may require user space to check if they are applied on the running | 
|  | * kernel before using a specific feature.  For instance, this applies when a | 
|  | * restriction was previously too restrictive and is now getting relaxed (for | 
|  | * compatibility or semantic reasons).  However, non-visible changes for | 
|  | * legitimate use (e.g. security fixes) do not require an erratum. | 
|  | */ | 
|  | static const struct landlock_erratum landlock_errata_init[] __initconst = { | 
|  |  | 
|  | /* | 
|  | * Only Sparse may not implement __has_include.  If a compiler does not | 
|  | * implement __has_include, a warning will be printed at boot time (see | 
|  | * setup.c). | 
|  | */ | 
|  | #ifdef __has_include | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 1 | 
|  | #if __has_include("errata/abi-1.h") | 
|  | #include "errata/abi-1.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 2 | 
|  | #if __has_include("errata/abi-2.h") | 
|  | #include "errata/abi-2.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 3 | 
|  | #if __has_include("errata/abi-3.h") | 
|  | #include "errata/abi-3.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 4 | 
|  | #if __has_include("errata/abi-4.h") | 
|  | #include "errata/abi-4.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 5 | 
|  | #if __has_include("errata/abi-5.h") | 
|  | #include "errata/abi-5.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | #define LANDLOCK_ERRATA_ABI 6 | 
|  | #if __has_include("errata/abi-6.h") | 
|  | #include "errata/abi-6.h" | 
|  | #endif | 
|  | #undef LANDLOCK_ERRATA_ABI | 
|  |  | 
|  | /* | 
|  | * For each new erratum, we need to include all the ABI files up to the impacted | 
|  | * ABI to make all potential future intermediate errata easy to backport. | 
|  | * | 
|  | * If such change involves more than one ABI addition, then it must be in a | 
|  | * dedicated commit with the same Fixes tag as used for the actual fix. | 
|  | * | 
|  | * Each commit creating a new security/landlock/errata/abi-*.h file must have a | 
|  | * Depends-on tag to reference the commit that previously added the line to | 
|  | * include this new file, except if the original Fixes tag is enough. | 
|  | * | 
|  | * Each erratum must be documented in its related ABI file, and a dedicated | 
|  | * commit must update Documentation/userspace-api/landlock.rst to include this | 
|  | * erratum.  This commit will not be backported. | 
|  | */ | 
|  |  | 
|  | #endif | 
|  |  | 
|  | {} | 
|  | }; | 
|  |  | 
|  | #endif /* _SECURITY_LANDLOCK_ERRATA_H */ |