File Index
Files and directories
Sign in
FILE

integrity.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/integrity.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (C) 2009 IBM Corporation
 4 * Author: Mimi Zohar <zohar@us.ibm.com>
 5 */
 6
 7#ifndef _LINUX_INTEGRITY_H
 8#define _LINUX_INTEGRITY_H
 9
10#include <linux/fs.h>
11#include <linux/iversion.h>
12
13enum integrity_status {
14	INTEGRITY_PASS = 0,
15	INTEGRITY_PASS_IMMUTABLE,
16	INTEGRITY_FAIL,
17	INTEGRITY_FAIL_IMMUTABLE,
18	INTEGRITY_NOLABEL,
19	INTEGRITY_NOXATTRS,
20	INTEGRITY_UNKNOWN,
21};
22
23#ifdef CONFIG_INTEGRITY
24extern void __init integrity_load_keys(void);
25
26#else
27static inline void integrity_load_keys(void)
28{
29}
30#endif /* CONFIG_INTEGRITY */
31
32/* An inode's attributes for detection of changes */
33struct integrity_inode_attributes {
34	u64 version;		/* track inode changes */
35	unsigned long ino;
36	dev_t dev;
37};
38
39/*
40 * On stacked filesystems the i_version alone is not enough to detect file data
41 * or metadata change. Additional metadata is required.
42 */
43static inline void
44integrity_inode_attrs_store(struct integrity_inode_attributes *attrs,
45			    u64 i_version, const struct inode *inode)
46{
47	attrs->version = i_version;
48	attrs->dev = inode->i_sb->s_dev;
49	attrs->ino = inode->i_ino;
50}
51
52/*
53 * On stacked filesystems detect whether the inode or its content has changed.
54 */
55static inline bool
56integrity_inode_attrs_changed(const struct integrity_inode_attributes *attrs,
57			      const struct inode *inode)
58{
59	return (inode->i_sb->s_dev != attrs->dev ||
60		inode->i_ino != attrs->ino ||
61		!inode_eq_iversion(inode, attrs->version));
62}
63
64
65#endif /* _LINUX_INTEGRITY_H */
~/ Read-only file preview.