Linux 6.9 Merge Window
13 Mar 2024 tags: audit lsm selinuxLinux v6.8 was released this past Sunday, with the Linux v6.9 merge window opening immediately afterwards. Below are the highlights of the LSM, SELinux, and audit pull requests which Linus has merged into his tree.
LSM
-
The Linux Integrity Subsystem, more commonly known as IMA, or IMA/EVM, has been integrated into the LSM framework. Prior to the start of the LSM stacking work it was important that IMA/EVM remain separate from the rest of the LSMs as it was the only way to enable IMA/EVM at the same time as a LSM, e.g. SELinux. However, now that the bulk of the LSM infrastructure supports multiple simultaneous LSMs, it is possible to integrate both IMA and EVM into the LSM framework as proper LSMs. This moves simplifies the IMA/EVM, LSM, and core Linux kernel code and helps us reduce the likelihood of future bugs. A special thanks to Roberto Sassu for helping turn a long standing wish of mine into reality.
-
Internal improvements relating to how we stack multiple LSMs for a subset of the LSM access control hooks. Many LSM hooks that return an integer value to indicate success or failure used the
call_int_hook()
macro which required callers to specify a default return value, despite their already being a default return value specified during LSM hook declaration. Unfortunately, there were several cases where these return values were mismatched which triggered buggy behavior in some configurations, specifically those that made use of BPF LSMs. Thecall_int_hook()
macro has been updated to remove the need for the caller to specify a default return value, instead using the value specified when the LSM hook was declared. -
A number of grammar corrections to the LSM hook documentation in the source code comments.
SELinux
-
No longer restrict extended attribute copy-up when SELinux is enabled but a policy has not yet been loaded. This helps systems that use overlayfs, or similar filesystems, preserve their SELinux labels during early boot when the SELinux policy has yet to be loaded.
-
Fix a problem where the error codes were not consistent across the
selinux_socket_getpeersec_dgram()
andselinux_socket_getpeersec_stream()
functions. The error code inconsistency could lead to confusion among users and applications attempting to determine the SELinux network peer information across labeled networks. -
Remove a redundant SELinux object class lookup/calculation at inode initialization time. The computing overhead associated with the unnecessary work was rather small, meaning any performance improvements should be minimal.
-
Continue the coding style fixes started in Linux v6.8, this time focusing on the “security/selinux/ss” directory.
Audit
-
Instead of using the
kmem_cache_create()
function to create the slab audit buffer cache, use theKMEM_CACHE()
according to the guidance in the kernel’s header files. -
Minor change to remove an unnecessary variable initialization during its declaration.