Loading include/linux/fs.h +1 −2 Original line number Diff line number Diff line Loading @@ -794,8 +794,7 @@ struct inode { #endif #ifdef CONFIG_IMA /* protected by i_lock */ unsigned int i_readcount; /* struct files open RO */ atomic_t i_readcount; /* struct files open RO */ #endif atomic_t i_writecount; #ifdef CONFIG_SECURITY Loading security/integrity/ima/ima_iint.c +4 −3 Original line number Diff line number Diff line Loading @@ -137,10 +137,11 @@ void ima_inode_free(struct inode *inode) { struct ima_iint_cache *iint; if (inode->i_readcount) printk(KERN_INFO "%s: readcount: %u\n", __func__, inode->i_readcount); if (atomic_read(&inode->i_readcount)) printk(KERN_INFO "%s: readcount: %u\n", __func__, atomic_read(&inode->i_readcount)); inode->i_readcount = 0; atomic_set(&inode->i_readcount, 0); if (!IS_IMA(inode)) return; Loading security/integrity/ima/ima_main.c +6 −5 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ void ima_counts_get(struct file *file) goto out; if (mode & FMODE_WRITE) { if (inode->i_readcount && IS_IMA(inode)) if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) send_tomtou = true; goto out; } Loading @@ -127,7 +127,7 @@ void ima_counts_get(struct file *file) out: /* remember the vfs deals with i_writecount */ if ((mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) inode->i_readcount++; atomic_inc(&inode->i_readcount); spin_unlock(&inode->i_lock); Loading @@ -149,15 +149,16 @@ static void ima_dec_counts(struct inode *inode, struct file *file) assert_spin_locked(&inode->i_lock); if ((mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) { if (unlikely(inode->i_readcount == 0)) { if (unlikely(atomic_read(&inode->i_readcount) == 0)) { if (!ima_limit_imbalance(file)) { printk(KERN_INFO "%s: open/free imbalance (r:%u)\n", __func__, inode->i_readcount); __func__, atomic_read(&inode->i_readcount)); dump_stack(); } return; } inode->i_readcount--; atomic_dec(&inode->i_readcount); } } Loading Loading
include/linux/fs.h +1 −2 Original line number Diff line number Diff line Loading @@ -794,8 +794,7 @@ struct inode { #endif #ifdef CONFIG_IMA /* protected by i_lock */ unsigned int i_readcount; /* struct files open RO */ atomic_t i_readcount; /* struct files open RO */ #endif atomic_t i_writecount; #ifdef CONFIG_SECURITY Loading
security/integrity/ima/ima_iint.c +4 −3 Original line number Diff line number Diff line Loading @@ -137,10 +137,11 @@ void ima_inode_free(struct inode *inode) { struct ima_iint_cache *iint; if (inode->i_readcount) printk(KERN_INFO "%s: readcount: %u\n", __func__, inode->i_readcount); if (atomic_read(&inode->i_readcount)) printk(KERN_INFO "%s: readcount: %u\n", __func__, atomic_read(&inode->i_readcount)); inode->i_readcount = 0; atomic_set(&inode->i_readcount, 0); if (!IS_IMA(inode)) return; Loading
security/integrity/ima/ima_main.c +6 −5 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ void ima_counts_get(struct file *file) goto out; if (mode & FMODE_WRITE) { if (inode->i_readcount && IS_IMA(inode)) if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) send_tomtou = true; goto out; } Loading @@ -127,7 +127,7 @@ void ima_counts_get(struct file *file) out: /* remember the vfs deals with i_writecount */ if ((mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) inode->i_readcount++; atomic_inc(&inode->i_readcount); spin_unlock(&inode->i_lock); Loading @@ -149,15 +149,16 @@ static void ima_dec_counts(struct inode *inode, struct file *file) assert_spin_locked(&inode->i_lock); if ((mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) { if (unlikely(inode->i_readcount == 0)) { if (unlikely(atomic_read(&inode->i_readcount) == 0)) { if (!ima_limit_imbalance(file)) { printk(KERN_INFO "%s: open/free imbalance (r:%u)\n", __func__, inode->i_readcount); __func__, atomic_read(&inode->i_readcount)); dump_stack(); } return; } inode->i_readcount--; atomic_dec(&inode->i_readcount); } } Loading