Lines Matching refs:iint
84 struct integrity_iint_cache *iint, in ima_rdwr_violation_check() argument
96 if (!iint) in ima_rdwr_violation_check()
97 iint = integrity_iint_find(inode); in ima_rdwr_violation_check()
99 if (iint && test_bit(IMA_MUST_MEASURE, in ima_rdwr_violation_check()
100 &iint->atomic_flags)) in ima_rdwr_violation_check()
105 set_bit(IMA_MUST_MEASURE, &iint->atomic_flags); in ima_rdwr_violation_check()
116 ima_add_violation(file, *pathname, iint, in ima_rdwr_violation_check()
119 ima_add_violation(file, *pathname, iint, in ima_rdwr_violation_check()
123 static void ima_check_last_writer(struct integrity_iint_cache *iint, in ima_check_last_writer() argument
132 mutex_lock(&iint->mutex); in ima_check_last_writer()
135 &iint->atomic_flags); in ima_check_last_writer()
137 !inode_eq_iversion(inode, iint->version) || in ima_check_last_writer()
138 (iint->flags & IMA_NEW_FILE)) { in ima_check_last_writer()
139 iint->flags &= ~(IMA_DONE_MASK | IMA_NEW_FILE); in ima_check_last_writer()
140 iint->measured_pcrs = 0; in ima_check_last_writer()
142 ima_update_xattr(iint, file); in ima_check_last_writer()
145 mutex_unlock(&iint->mutex); in ima_check_last_writer()
157 struct integrity_iint_cache *iint; in ima_file_free() local
162 iint = integrity_iint_find(inode); in ima_file_free()
163 if (!iint) in ima_file_free()
166 ima_check_last_writer(iint, inode, file); in ima_file_free()
174 struct integrity_iint_cache *iint = NULL; in process_measurement() local
208 iint = integrity_inode_get(inode); in process_measurement()
209 if (!iint) in process_measurement()
214 ima_rdwr_violation_check(file, iint, action & IMA_MEASURE, in process_measurement()
224 mutex_lock(&iint->mutex); in process_measurement()
226 if (test_and_clear_bit(IMA_CHANGE_ATTR, &iint->atomic_flags)) in process_measurement()
228 iint->flags &= ~(IMA_APPRAISE | IMA_APPRAISED | in process_measurement()
237 if (test_and_clear_bit(IMA_CHANGE_XATTR, &iint->atomic_flags) || in process_measurement()
241 iint->flags &= ~IMA_DONE_MASK; in process_measurement()
242 iint->measured_pcrs = 0; in process_measurement()
249 iint->flags |= action; in process_measurement()
251 action &= ~((iint->flags & (IMA_DONE_MASK ^ IMA_MEASURED)) >> 1); in process_measurement()
254 if ((action & IMA_MEASURE) && (iint->measured_pcrs & (0x1 << pcr))) in process_measurement()
259 !(test_bit(IMA_DIGSIG, &iint->atomic_flags))) { in process_measurement()
263 set_bit(IMA_DIGSIG, &iint->atomic_flags); in process_measurement()
264 iint->flags |= IMA_HASHED; in process_measurement()
266 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); in process_measurement()
272 rc = ima_get_cache_status(iint, func); in process_measurement()
284 rc = ima_collect_measurement(iint, file, buf, size, hash_algo); in process_measurement()
292 ima_store_measurement(iint, file, pathname, in process_measurement()
296 rc = ima_appraise_measurement(func, iint, file, pathname, in process_measurement()
301 ima_audit_measurement(iint, pathname); in process_measurement()
303 if ((file->f_flags & O_DIRECT) && (iint->flags & IMA_PERMIT_DIRECTIO)) in process_measurement()
306 if ((mask & MAY_WRITE) && test_bit(IMA_DIGSIG, &iint->atomic_flags) && in process_measurement()
307 !(iint->flags & IMA_NEW_FILE)) in process_measurement()
309 mutex_unlock(&iint->mutex); in process_measurement()
318 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); in process_measurement()
406 struct integrity_iint_cache *iint; in ima_post_path_mknod() local
414 iint = integrity_inode_get(inode); in ima_post_path_mknod()
415 if (iint) in ima_post_path_mknod()
416 iint->flags |= IMA_NEW_FILE; in ima_post_path_mknod()