apparmor: add debug assert AA_BUG and Kconfig to control debug info

Signed-off-by: John Johansen <john.johansen@canonical.com>
This commit is contained in:
John Johansen 2017-01-16 00:42:27 -08:00
parent 57e36bbd67
commit 680cd62e91
3 changed files with 43 additions and 4 deletions

View File

@ -36,7 +36,6 @@ config SECURITY_APPARMOR_HASH
select CRYPTO select CRYPTO
select CRYPTO_SHA1 select CRYPTO_SHA1
default y default y
help help
This option selects whether introspection of loaded policy This option selects whether introspection of loaded policy
is available to userspace via the apparmor filesystem. is available to userspace via the apparmor filesystem.
@ -45,7 +44,6 @@ config SECURITY_APPARMOR_HASH_DEFAULT
bool "Enable policy hash introspection by default" bool "Enable policy hash introspection by default"
depends on SECURITY_APPARMOR_HASH depends on SECURITY_APPARMOR_HASH
default y default y
help help
This option selects whether sha1 hashing of loaded policy This option selects whether sha1 hashing of loaded policy
is enabled by default. The generation of sha1 hashes for is enabled by default. The generation of sha1 hashes for
@ -54,3 +52,32 @@ config SECURITY_APPARMOR_HASH_DEFAULT
however it can slow down policy load on some devices. In however it can slow down policy load on some devices. In
these cases policy hashing can be disabled by default and these cases policy hashing can be disabled by default and
enabled only if needed. enabled only if needed.
config SECURITY_APPARMOR_DEBUG
bool "Build AppArmor with debug code"
depends on SECURITY_APPARMOR
default n
help
Build apparmor with debugging logic in apparmor. Not all
debugging logic will necessarily be enabled. A submenu will
provide fine grained control of the debug options that are
available.
config SECURITY_APPARMOR_DEBUG_ASSERTS
bool "Build AppArmor with debugging asserts"
depends on SECURITY_APPARMOR_DEBUG
default y
help
Enable code assertions made with AA_BUG. These are primarily
function entry preconditions but also exist at other key
points. If the assert is triggered it will trigger a WARN
message.
config SECURITY_APPARMOR_DEBUG_MESSAGES
bool "Debug messages enabled by default"
depends on SECURITY_APPARMOR_DEBUG
default n
help
Set the default value of the apparmor.debug kernel parameter.
When enabled, various debug messages will be logged to
the kernel message buffer.

View File

@ -35,12 +35,24 @@
* which is not related to profile accesses. * which is not related to profile accesses.
*/ */
#define DEBUG_ON (aa_g_debug)
#define dbg_printk(__fmt, __args...) pr_debug(__fmt, ##__args)
#define AA_DEBUG(fmt, args...) \ #define AA_DEBUG(fmt, args...) \
do { \ do { \
if (aa_g_debug) \ if (DEBUG_ON) \
pr_debug_ratelimited("AppArmor: " fmt, ##args); \ pr_debug_ratelimited("AppArmor: " fmt, ##args); \
} while (0) } while (0)
#define AA_WARN(X) WARN((X), "APPARMOR WARN %s: %s\n", __func__, #X)
#define AA_BUG(X, args...) AA_BUG_FMT((X), "" args)
#ifdef CONFIG_SECURITY_APPARMOR_DEBUG_ASSERTS
#define AA_BUG_FMT(X, fmt, args...) \
WARN((X), "AppArmor WARN %s: (" #X "): " fmt, __func__, ##args)
#else
#define AA_BUG_FMT(X, fmt, args...)
#endif
#define AA_ERROR(fmt, args...) \ #define AA_ERROR(fmt, args...) \
pr_err_ratelimited("AppArmor: " fmt, ##args) pr_err_ratelimited("AppArmor: " fmt, ##args)

View File

@ -681,7 +681,7 @@ module_param_named(hash_policy, aa_g_hash_policy, aabool, S_IRUSR | S_IWUSR);
#endif #endif
/* Debug mode */ /* Debug mode */
bool aa_g_debug; bool aa_g_debug = IS_ENABLED(CONFIG_SECURITY_DEBUG_MESSAGES);
module_param_named(debug, aa_g_debug, aabool, S_IRUSR | S_IWUSR); module_param_named(debug, aa_g_debug, aabool, S_IRUSR | S_IWUSR);
/* Audit mode */ /* Audit mode */