Lines Matching refs:iint

117 				     struct integrity_iint_cache *iint,
129 if (!iint)
130 iint = integrity_iint_find(inode);
132 if (iint && test_bit(IMA_MUST_MEASURE,
133 &iint->atomic_flags))
138 set_bit(IMA_MUST_MEASURE, &iint->atomic_flags);
149 ima_add_violation(file, *pathname, iint,
152 ima_add_violation(file, *pathname, iint,
156 static void ima_check_last_writer(struct integrity_iint_cache *iint,
165 mutex_lock(&iint->mutex);
170 &iint->atomic_flags);
171 if ((iint->flags & IMA_NEW_FILE) ||
176 stat.change_cookie != iint->version) {
177 iint->flags &= ~(IMA_DONE_MASK | IMA_NEW_FILE);
178 iint->measured_pcrs = 0;
180 ima_update_xattr(iint, file);
183 mutex_unlock(&iint->mutex);
195 struct integrity_iint_cache *iint;
200 iint = integrity_iint_find(inode);
201 if (!iint)
204 ima_check_last_writer(iint, inode, file);
212 struct integrity_iint_cache *iint = NULL;
251 iint = integrity_inode_get(inode);
252 if (!iint)
257 ima_rdwr_violation_check(file, iint, action & IMA_MEASURE,
267 mutex_lock(&iint->mutex);
269 if (test_and_clear_bit(IMA_CHANGE_ATTR, &iint->atomic_flags))
271 iint->flags &= ~(IMA_APPRAISE | IMA_APPRAISED |
280 if (test_and_clear_bit(IMA_CHANGE_XATTR, &iint->atomic_flags) ||
284 iint->flags &= ~IMA_DONE_MASK;
285 iint->measured_pcrs = 0;
291 (action & IMA_DO_MASK) && (iint->flags & IMA_DONE_MASK)) {
293 backing_inode->i_sb->s_dev != iint->real_dev ||
294 backing_inode->i_ino != iint->real_ino ||
295 !inode_eq_iversion(backing_inode, iint->version)) {
296 iint->flags &= ~IMA_DONE_MASK;
297 iint->measured_pcrs = 0;
305 iint->flags |= action;
307 action &= ~((iint->flags & (IMA_DONE_MASK ^ IMA_MEASURED)) >> 1);
310 if ((action & IMA_MEASURE) && (iint->measured_pcrs & (0x1 << pcr)))
315 !(test_bit(IMA_DIGSIG, &iint->atomic_flags))) {
320 set_bit(IMA_DIGSIG, &iint->atomic_flags);
321 iint->flags |= IMA_HASHED;
323 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags);
332 rc = ima_get_cache_status(iint, func);
348 if (iint->flags & IMA_MODSIG_ALLOWED) {
352 iint->flags & IMA_MEASURED)
359 rc = ima_collect_measurement(iint, file, buf, size, hash_algo, modsig);
367 ima_store_measurement(iint, file, pathname,
371 rc = ima_check_blacklist(iint, modsig, pcr);
374 rc = ima_appraise_measurement(func, iint, file,
384 ima_audit_measurement(iint, pathname);
386 if ((file->f_flags & O_DIRECT) && (iint->flags & IMA_PERMIT_DIRECTIO))
399 if ((mask & MAY_WRITE) && test_bit(IMA_DIGSIG, &iint->atomic_flags) &&
400 !(iint->flags & IMA_NEW_FILE))
402 mutex_unlock(&iint->mutex);
412 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags);
566 struct integrity_iint_cache *iint = NULL, tmp_iint;
570 iint = integrity_iint_find(inode);
571 if (iint)
572 mutex_lock(&iint->mutex);
575 if ((!iint || !(iint->flags & IMA_COLLECTED)) && file) {
576 if (iint)
577 mutex_unlock(&iint->mutex);
593 iint = &tmp_iint;
594 mutex_lock(&iint->mutex);
597 if (!iint)
604 if (!iint->ima_hash || !(iint->flags & IMA_COLLECTED)) {
605 mutex_unlock(&iint->mutex);
612 copied_size = min_t(size_t, iint->ima_hash->length, buf_size);
613 memcpy(buf, iint->ima_hash->digest, copied_size);
615 hash_algo = iint->ima_hash->algo;
616 mutex_unlock(&iint->mutex);
618 if (iint == &tmp_iint)
619 kfree(iint->ima_hash);
652 * and is in the iint cache.
689 struct integrity_iint_cache *iint;
701 iint = integrity_inode_get(inode);
702 if (!iint)
706 set_bit(IMA_UPDATE_XATTR, &iint->atomic_flags);
707 iint->ima_file_status = INTEGRITY_PASS;
721 struct integrity_iint_cache *iint;
734 iint = integrity_inode_get(inode);
735 if (!iint)
739 iint->flags |= IMA_NEW_FILE;
937 struct integrity_iint_cache iint = {};
938 struct ima_event_data event_data = {.iint = &iint,
982 iint.ima_hash = &hash.hdr;
983 iint.ima_hash->algo = ima_hash_algo;
984 iint.ima_hash->length = hash_digest_size[ima_hash_algo];
986 ret = ima_calc_buffer_hash(buf, size, iint.ima_hash);
996 iint.ima_hash);
1007 memcpy(digest, iint.ima_hash->digest, digest_hash_len);