• Roberto Sassu's avatar
    ima: Move to LSM infrastructure · cd3cec0a
    Roberto Sassu authored
    Move hardcoded IMA function calls (not appraisal-specific functions) from
    various places in the kernel to the LSM infrastructure, by introducing a
    new LSM named 'ima' (at the end of the LSM list and always enabled like
    'integrity').
    
    Having IMA before EVM in the Makefile is sufficient to preserve the
    relative order of the new 'ima' LSM in respect to the upcoming 'evm' LSM,
    and thus the order of IMA and EVM function calls as when they were
    hardcoded.
    
    Make moved functions as static (except ima_post_key_create_or_update(),
    which is not in ima_main.c), and register them as implementation of the
    respective hooks in the new function init_ima_lsm().
    
    Select CONFIG_SECURITY_PATH, to ensure that the path-based LSM hook
    path_post_mknod is always available and ima_post_path_mknod() is always
    executed to mark files as new, as before the move.
    
    A slight difference is that IMA and EVM functions registered for the
    inode_post_setattr, inode_post_removexattr, path_post_mknod,
    inode_post_create_tmpfile, inode_post_set_acl and inode_post_remove_acl
    won't be executed for private inodes. Since those inodes are supposed to be
    fs-internal, they should not be of interest to IMA or EVM. The S_PRIVATE
    flag is used for anonymous inodes, hugetlbfs, reiserfs xattrs, XFS scrub
    and kernel-internal tmpfs files.
    
    Conditionally register ima_post_key_create_or_update() if
    CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS is enabled. Also, conditionally register
    ima_kernel_module_request() if CONFIG_INTEGRITY_ASYMMETRIC_KEYS is enabled.
    
    Finally, add the LSM_ID_IMA case in lsm_list_modules_test.c.
    Signed-off-by: default avatarRoberto Sassu <roberto.sassu@huawei.com>
    Acked-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Acked-by: default avatarCasey Schaufler <casey@schaufler-ca.com>
    Acked-by: default avatarChristian Brauner <brauner@kernel.org>
    Reviewed-by: default avatarStefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: default avatarMimi Zohar <zohar@linux.ibm.com>
    Acked-by: default avatarMimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
    cd3cec0a
ima.h 4.21 KB