From: Florent Revest <revest@xxxxxxxxxx> include/linux/integrity.h exposes the prototype of integrity_inode_get(). However, it relies on struct integrity_iint_cache which is currently defined in an internal header, security/integrity/integrity.h. To allow the rest of the kernel to use integrity_inode_get, this patch moves the definition of the necessary structures from a private header to a global kernel header. Signed-off-by: Florent Revest <revest@xxxxxxxxxx> --- include/linux/integrity.h | 37 ++++++++++++++++++++++++++++++++++ security/integrity/integrity.h | 37 ---------------------------------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/include/linux/integrity.h b/include/linux/integrity.h index 2271939c5c31..15a0d5e91737 100644 --- a/include/linux/integrity.h +++ b/include/linux/integrity.h @@ -18,6 +18,43 @@ enum integrity_status { INTEGRITY_UNKNOWN, }; +#define IMA_MAX_DIGEST_SIZE 64 + +struct ima_digest_data { + u8 algo; + u8 length; + union { + struct { + u8 unused; + u8 type; + } sha1; + struct { + u8 type; + u8 algo; + } ng; + u8 data[2]; + } xattr; + u8 digest[0]; +} __packed; + +/* integrity data associated with an inode */ +struct integrity_iint_cache { + struct rb_node rb_node; /* rooted in integrity_iint_tree */ + struct mutex mutex; /* protects: version, flags, digest */ + struct inode *inode; /* back pointer to inode in question */ + u64 version; /* track inode changes */ + unsigned long flags; + unsigned long measured_pcrs; + unsigned long atomic_flags; + enum integrity_status ima_file_status:4; + enum integrity_status ima_mmap_status:4; + enum integrity_status ima_bprm_status:4; + enum integrity_status ima_read_status:4; + enum integrity_status ima_creds_status:4; + enum integrity_status evm_status:4; + struct ima_digest_data *ima_hash; +}; + /* List of EVM protected security xattrs */ #ifdef CONFIG_INTEGRITY extern struct integrity_iint_cache *integrity_inode_get(struct inode *inode); diff --git a/security/integrity/integrity.h b/security/integrity/integrity.h index 65377848fbc5..2d5e69ab4646 100644 --- a/security/integrity/integrity.h +++ b/security/integrity/integrity.h @@ -77,25 +77,6 @@ struct evm_ima_xattr_data { u8 digest[SHA1_DIGEST_SIZE]; } __packed; -#define IMA_MAX_DIGEST_SIZE 64 - -struct ima_digest_data { - u8 algo; - u8 length; - union { - struct { - u8 unused; - u8 type; - } sha1; - struct { - u8 type; - u8 algo; - } ng; - u8 data[2]; - } xattr; - u8 digest[0]; -} __packed; - /* * signature format v2 - for using with asymmetric keys */ @@ -108,24 +89,6 @@ struct signature_v2_hdr { uint8_t sig[0]; /* signature payload */ } __packed; -/* integrity data associated with an inode */ -struct integrity_iint_cache { - struct rb_node rb_node; /* rooted in integrity_iint_tree */ - struct mutex mutex; /* protects: version, flags, digest */ - struct inode *inode; /* back pointer to inode in question */ - u64 version; /* track inode changes */ - unsigned long flags; - unsigned long measured_pcrs; - unsigned long atomic_flags; - enum integrity_status ima_file_status:4; - enum integrity_status ima_mmap_status:4; - enum integrity_status ima_bprm_status:4; - enum integrity_status ima_read_status:4; - enum integrity_status ima_creds_status:4; - enum integrity_status evm_status:4; - struct ima_digest_data *ima_hash; -}; - /* rbtree tree calls to lookup, insert, delete * integrity data associated with an inode. */ -- 2.24.1.735.g03f4e72817-goog