| /* SPDX-License-Identifier: GPL-2.0 */ |
| |
| /* |
| * Copyright (C) 2023 Google LLC. |
| */ |
| |
| #ifndef __LINUX_LSM_COUNT_H |
| #define __LINUX_LSM_COUNT_H |
| |
| #include <linux/args.h> |
| |
| #ifdef CONFIG_SECURITY |
| |
| /* |
| * Macros to count the number of LSMs enabled in the kernel at compile time. |
| */ |
| |
| /* |
| * Capabilities is enabled when CONFIG_SECURITY is enabled. |
| */ |
| #if IS_ENABLED(CONFIG_SECURITY) |
| #define CAPABILITIES_ENABLED 1, |
| #else |
| #define CAPABILITIES_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_SELINUX) |
| #define SELINUX_ENABLED 1, |
| #else |
| #define SELINUX_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_SMACK) |
| #define SMACK_ENABLED 1, |
| #else |
| #define SMACK_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_APPARMOR) |
| #define APPARMOR_ENABLED 1, |
| #else |
| #define APPARMOR_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_TOMOYO) |
| #define TOMOYO_ENABLED 1, |
| #else |
| #define TOMOYO_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_YAMA) |
| #define YAMA_ENABLED 1, |
| #else |
| #define YAMA_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_LOADPIN) |
| #define LOADPIN_ENABLED 1, |
| #else |
| #define LOADPIN_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_LOCKDOWN_LSM) |
| #define LOCKDOWN_ENABLED 1, |
| #else |
| #define LOCKDOWN_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_SAFESETID) |
| #define SAFESETID_ENABLED 1, |
| #else |
| #define SAFESETID_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_BPF_LSM) |
| #define BPF_LSM_ENABLED 1, |
| #else |
| #define BPF_LSM_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_LANDLOCK) |
| #define LANDLOCK_ENABLED 1, |
| #else |
| #define LANDLOCK_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_IMA) |
| #define IMA_ENABLED 1, |
| #else |
| #define IMA_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_EVM) |
| #define EVM_ENABLED 1, |
| #else |
| #define EVM_ENABLED |
| #endif |
| |
| #if IS_ENABLED(CONFIG_SECURITY_IPE) |
| #define IPE_ENABLED 1, |
| #else |
| #define IPE_ENABLED |
| #endif |
| |
| /* |
| * There is a trailing comma that we need to be accounted for. This is done by |
| * using a skipped argument in __COUNT_LSMS |
| */ |
| #define __COUNT_LSMS(skipped_arg, args...) COUNT_ARGS(args...) |
| #define COUNT_LSMS(args...) __COUNT_LSMS(args) |
| |
| #define MAX_LSM_COUNT \ |
| COUNT_LSMS( \ |
| CAPABILITIES_ENABLED \ |
| SELINUX_ENABLED \ |
| SMACK_ENABLED \ |
| APPARMOR_ENABLED \ |
| TOMOYO_ENABLED \ |
| YAMA_ENABLED \ |
| LOADPIN_ENABLED \ |
| LOCKDOWN_ENABLED \ |
| SAFESETID_ENABLED \ |
| BPF_LSM_ENABLED \ |
| LANDLOCK_ENABLED \ |
| IMA_ENABLED \ |
| EVM_ENABLED \ |
| IPE_ENABLED) |
| |
| #else |
| |
| #define MAX_LSM_COUNT 0 |
| |
| #endif /* CONFIG_SECURITY */ |
| |
| #endif /* __LINUX_LSM_COUNT_H */ |