115383a0dSMickaël Salaün /* SPDX-License-Identifier: GPL-2.0-only */ 215383a0dSMickaël Salaün /* 315383a0dSMickaël Salaün * Landlock - Errata information 415383a0dSMickaël Salaün * 515383a0dSMickaël Salaün * Copyright © 2025 Microsoft Corporation 615383a0dSMickaël Salaün */ 715383a0dSMickaël Salaün 815383a0dSMickaël Salaün #ifndef _SECURITY_LANDLOCK_ERRATA_H 915383a0dSMickaël Salaün #define _SECURITY_LANDLOCK_ERRATA_H 1015383a0dSMickaël Salaün 1115383a0dSMickaël Salaün #include <linux/init.h> 1215383a0dSMickaël Salaün 1315383a0dSMickaël Salaün struct landlock_erratum { 1415383a0dSMickaël Salaün const int abi; 1515383a0dSMickaël Salaün const u8 number; 1615383a0dSMickaël Salaün }; 1715383a0dSMickaël Salaün 1815383a0dSMickaël Salaün /* clang-format off */ 1915383a0dSMickaël Salaün #define LANDLOCK_ERRATUM(NUMBER) \ 2015383a0dSMickaël Salaün { \ 2115383a0dSMickaël Salaün .abi = LANDLOCK_ERRATA_ABI, \ 2215383a0dSMickaël Salaün .number = NUMBER, \ 2315383a0dSMickaël Salaün }, 2415383a0dSMickaël Salaün /* clang-format on */ 2515383a0dSMickaël Salaün 2615383a0dSMickaël Salaün /* 2715383a0dSMickaël Salaün * Some fixes may require user space to check if they are applied on the running 2815383a0dSMickaël Salaün * kernel before using a specific feature. For instance, this applies when a 2915383a0dSMickaël Salaün * restriction was previously too restrictive and is now getting relaxed (for 3015383a0dSMickaël Salaün * compatibility or semantic reasons). However, non-visible changes for 3115383a0dSMickaël Salaün * legitimate use (e.g. security fixes) do not require an erratum. 3215383a0dSMickaël Salaün */ 3315383a0dSMickaël Salaün static const struct landlock_erratum landlock_errata_init[] __initconst = { 3415383a0dSMickaël Salaün 3515383a0dSMickaël Salaün /* 3615383a0dSMickaël Salaün * Only Sparse may not implement __has_include. If a compiler does not 3715383a0dSMickaël Salaün * implement __has_include, a warning will be printed at boot time (see 3815383a0dSMickaël Salaün * setup.c). 3915383a0dSMickaël Salaün */ 4015383a0dSMickaël Salaün #ifdef __has_include 4115383a0dSMickaël Salaün 4215383a0dSMickaël Salaün #define LANDLOCK_ERRATA_ABI 1 4315383a0dSMickaël Salaün #if __has_include("errata/abi-1.h") 4415383a0dSMickaël Salaün #include "errata/abi-1.h" 4515383a0dSMickaël Salaün #endif 4615383a0dSMickaël Salaün #undef LANDLOCK_ERRATA_ABI 4715383a0dSMickaël Salaün 4815383a0dSMickaël Salaün #define LANDLOCK_ERRATA_ABI 2 4915383a0dSMickaël Salaün #if __has_include("errata/abi-2.h") 5015383a0dSMickaël Salaün #include "errata/abi-2.h" 5115383a0dSMickaël Salaün #endif 5215383a0dSMickaël Salaün #undef LANDLOCK_ERRATA_ABI 5315383a0dSMickaël Salaün 5415383a0dSMickaël Salaün #define LANDLOCK_ERRATA_ABI 3 5515383a0dSMickaël Salaün #if __has_include("errata/abi-3.h") 5615383a0dSMickaël Salaün #include "errata/abi-3.h" 5715383a0dSMickaël Salaün #endif 5815383a0dSMickaël Salaün #undef LANDLOCK_ERRATA_ABI 5915383a0dSMickaël Salaün 6015383a0dSMickaël Salaün #define LANDLOCK_ERRATA_ABI 4 6115383a0dSMickaël Salaün #if __has_include("errata/abi-4.h") 6215383a0dSMickaël Salaün #include "errata/abi-4.h" 6315383a0dSMickaël Salaün #endif 6415383a0dSMickaël Salaün #undef LANDLOCK_ERRATA_ABI 6515383a0dSMickaël Salaün 66*6d9ac5e4SMickaël Salaün #define LANDLOCK_ERRATA_ABI 5 67*6d9ac5e4SMickaël Salaün #if __has_include("errata/abi-5.h") 68*6d9ac5e4SMickaël Salaün #include "errata/abi-5.h" 69*6d9ac5e4SMickaël Salaün #endif 70*6d9ac5e4SMickaël Salaün #undef LANDLOCK_ERRATA_ABI 71*6d9ac5e4SMickaël Salaün 72*6d9ac5e4SMickaël Salaün #define LANDLOCK_ERRATA_ABI 6 73*6d9ac5e4SMickaël Salaün #if __has_include("errata/abi-6.h") 74*6d9ac5e4SMickaël Salaün #include "errata/abi-6.h" 75*6d9ac5e4SMickaël Salaün #endif 76*6d9ac5e4SMickaël Salaün #undef LANDLOCK_ERRATA_ABI 77*6d9ac5e4SMickaël Salaün 7815383a0dSMickaël Salaün /* 7915383a0dSMickaël Salaün * For each new erratum, we need to include all the ABI files up to the impacted 8015383a0dSMickaël Salaün * ABI to make all potential future intermediate errata easy to backport. 8115383a0dSMickaël Salaün * 8215383a0dSMickaël Salaün * If such change involves more than one ABI addition, then it must be in a 8315383a0dSMickaël Salaün * dedicated commit with the same Fixes tag as used for the actual fix. 8415383a0dSMickaël Salaün * 8515383a0dSMickaël Salaün * Each commit creating a new security/landlock/errata/abi-*.h file must have a 8615383a0dSMickaël Salaün * Depends-on tag to reference the commit that previously added the line to 8715383a0dSMickaël Salaün * include this new file, except if the original Fixes tag is enough. 8815383a0dSMickaël Salaün * 8915383a0dSMickaël Salaün * Each erratum must be documented in its related ABI file, and a dedicated 9015383a0dSMickaël Salaün * commit must update Documentation/userspace-api/landlock.rst to include this 9115383a0dSMickaël Salaün * erratum. This commit will not be backported. 9215383a0dSMickaël Salaün */ 9315383a0dSMickaël Salaün 9415383a0dSMickaël Salaün #endif 9515383a0dSMickaël Salaün 9615383a0dSMickaël Salaün {} 9715383a0dSMickaël Salaün }; 9815383a0dSMickaël Salaün 9915383a0dSMickaël Salaün #endif /* _SECURITY_LANDLOCK_ERRATA_H */ 100