IMA: convert i_readcount to atomic
[pandora-kernel.git] / security / integrity / ima / ima_main.c
index 203de97..6e8cb93 100644 (file)
@@ -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;
        }
@@ -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);
 
@@ -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);
        }
 }