Lines Matching refs:iint
118 struct ima_iint_cache *iint, in ima_rdwr_violation_check() argument
130 if (!iint) in ima_rdwr_violation_check()
131 iint = ima_iint_find(inode); in ima_rdwr_violation_check()
133 if (iint && test_bit(IMA_MUST_MEASURE, in ima_rdwr_violation_check()
134 &iint->atomic_flags)) in ima_rdwr_violation_check()
139 set_bit(IMA_MUST_MEASURE, &iint->atomic_flags); in ima_rdwr_violation_check()
150 ima_add_violation(file, *pathname, iint, in ima_rdwr_violation_check()
153 ima_add_violation(file, *pathname, iint, in ima_rdwr_violation_check()
157 static void ima_check_last_writer(struct ima_iint_cache *iint, in ima_check_last_writer() argument
166 mutex_lock(&iint->mutex); in ima_check_last_writer()
171 &iint->atomic_flags); in ima_check_last_writer()
172 if ((iint->flags & IMA_NEW_FILE) || in ima_check_last_writer()
177 stat.change_cookie != iint->real_inode.version) { in ima_check_last_writer()
178 iint->flags &= ~(IMA_DONE_MASK | IMA_NEW_FILE); in ima_check_last_writer()
179 iint->measured_pcrs = 0; in ima_check_last_writer()
181 ima_update_xattr(iint, file); in ima_check_last_writer()
184 mutex_unlock(&iint->mutex); in ima_check_last_writer()
196 struct ima_iint_cache *iint; in ima_file_free() local
201 iint = ima_iint_find(inode); in ima_file_free()
202 if (!iint) in ima_file_free()
205 ima_check_last_writer(iint, inode, file); in ima_file_free()
213 struct ima_iint_cache *iint = NULL; in process_measurement() local
253 iint = ima_inode_get(inode); in process_measurement()
254 if (!iint) in process_measurement()
259 ima_rdwr_violation_check(file, iint, action & IMA_MEASURE, in process_measurement()
269 mutex_lock(&iint->mutex); in process_measurement()
271 if (test_and_clear_bit(IMA_CHANGE_ATTR, &iint->atomic_flags)) in process_measurement()
276 iint->flags &= ~(IMA_APPRAISE | IMA_APPRAISED | in process_measurement()
285 if (test_and_clear_bit(IMA_CHANGE_XATTR, &iint->atomic_flags) || in process_measurement()
289 iint->flags &= ~IMA_DONE_MASK; in process_measurement()
290 iint->measured_pcrs = 0; in process_measurement()
299 (action & IMA_DO_MASK) && (iint->flags & IMA_DONE_MASK)) { in process_measurement()
301 integrity_inode_attrs_changed(&iint->real_inode, in process_measurement()
303 iint->flags &= ~IMA_DONE_MASK; in process_measurement()
304 iint->measured_pcrs = 0; in process_measurement()
313 iint->flags &= ~(IMA_APPRAISED | in process_measurement()
321 iint->flags |= action; in process_measurement()
323 action &= ~((iint->flags & (IMA_DONE_MASK ^ IMA_MEASURED)) >> 1); in process_measurement()
326 if ((action & IMA_MEASURE) && (iint->measured_pcrs & (0x1 << pcr))) in process_measurement()
331 !(test_bit(IMA_DIGSIG, &iint->atomic_flags))) { in process_measurement()
336 set_bit(IMA_DIGSIG, &iint->atomic_flags); in process_measurement()
337 iint->flags |= IMA_HASHED; in process_measurement()
339 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); in process_measurement()
348 rc = ima_get_cache_status(iint, func); in process_measurement()
364 if (iint->flags & IMA_MODSIG_ALLOWED) { in process_measurement()
368 iint->flags & IMA_MEASURED) in process_measurement()
375 rc = ima_collect_measurement(iint, file, buf, size, hash_algo, modsig); in process_measurement()
383 ima_store_measurement(iint, file, pathname, in process_measurement()
387 rc = ima_check_blacklist(iint, modsig, pcr); in process_measurement()
390 rc = ima_appraise_measurement(func, iint, file, in process_measurement()
400 ima_audit_measurement(iint, pathname); in process_measurement()
402 if ((file->f_flags & O_DIRECT) && (iint->flags & IMA_PERMIT_DIRECTIO)) in process_measurement()
415 if ((mask & MAY_WRITE) && test_bit(IMA_DIGSIG, &iint->atomic_flags) && in process_measurement()
416 !(iint->flags & IMA_NEW_FILE)) in process_measurement()
418 mutex_unlock(&iint->mutex); in process_measurement()
428 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); in process_measurement()
611 struct ima_iint_cache *iint = NULL, tmp_iint; in __ima_inode_hash() local
615 iint = ima_iint_find(inode); in __ima_inode_hash()
616 if (iint) in __ima_inode_hash()
617 mutex_lock(&iint->mutex); in __ima_inode_hash()
620 if ((!iint || !(iint->flags & IMA_COLLECTED)) && file) { in __ima_inode_hash()
621 if (iint) in __ima_inode_hash()
622 mutex_unlock(&iint->mutex); in __ima_inode_hash()
637 iint = &tmp_iint; in __ima_inode_hash()
638 mutex_lock(&iint->mutex); in __ima_inode_hash()
641 if (!iint) in __ima_inode_hash()
648 if (!iint->ima_hash || !(iint->flags & IMA_COLLECTED)) { in __ima_inode_hash()
649 mutex_unlock(&iint->mutex); in __ima_inode_hash()
656 copied_size = min_t(size_t, iint->ima_hash->length, buf_size); in __ima_inode_hash()
657 memcpy(buf, iint->ima_hash->digest, copied_size); in __ima_inode_hash()
659 hash_algo = iint->ima_hash->algo; in __ima_inode_hash()
660 mutex_unlock(&iint->mutex); in __ima_inode_hash()
662 if (iint == &tmp_iint) in __ima_inode_hash()
663 kfree(iint->ima_hash); in __ima_inode_hash()
734 struct ima_iint_cache *iint; in ima_post_create_tmpfile() local
746 iint = ima_inode_get(inode); in ima_post_create_tmpfile()
747 if (!iint) in ima_post_create_tmpfile()
751 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); in ima_post_create_tmpfile()
752 iint->ima_file_status = INTEGRITY_PASS; in ima_post_create_tmpfile()
765 struct ima_iint_cache *iint; in ima_post_path_mknod() local
778 iint = ima_inode_get(inode); in ima_post_path_mknod()
779 if (!iint) in ima_post_path_mknod()
783 iint->flags |= IMA_NEW_FILE; in ima_post_path_mknod()
988 struct ima_iint_cache iint = {}; in process_buffer_measurement() local
989 struct ima_event_data event_data = {.iint = &iint, in process_buffer_measurement()
1035 iint.ima_hash = hash_hdr; in process_buffer_measurement()
1036 iint.ima_hash->algo = ima_hash_algo; in process_buffer_measurement()
1037 iint.ima_hash->length = hash_digest_size[ima_hash_algo]; in process_buffer_measurement()
1039 ret = ima_calc_buffer_hash(buf, size, iint.ima_hash); in process_buffer_measurement()
1049 iint.ima_hash); in process_buffer_measurement()
1060 memcpy(digest, iint.ima_hash->digest, digest_hash_len); in process_buffer_measurement()