Messages in this thread | | | Date | Tue, 2 Nov 2010 11:45:45 +1100 | From | Dave Chinner <> | Subject | Re: [PATCH v1.1 2/5] IMA: define readcount functions |
| |
On Mon, Nov 01, 2010 at 03:45:36PM -0400, Mimi Zohar wrote: > Define iget/iput_readcount() functions to be called from the VFS layer.
Can't say I like the function names. i_readcount_{inc,dec} seem more appropriate, especially so they don't get confused with inode reference counting...
Cheers,
Dave.
> +void iput_readcount(struct inode *inode) > +{ > + spin_lock(&inode->i_lock); > + if (unlikely((atomic_read(&inode->i_readcount) == 0))) > + printk(KERN_INFO "i_readcount: imbalance ino %ld\n", > + inode->i_ino); > + else > + atomic_dec(&inode->i_readcount); > + spin_unlock(&inode->i_lock); > +}
No need for the lock just to indicate an imbalance. You could just use:
if (atomic_dec_return(&inode->i_readcount) < 0) { ..... }
Given this is an integrity subsystem, I suspect the correct thing to do here is BUG(), not just issue an informational message that something is wrong with the integrity tracking....
Cheers,
Dave. -- Dave Chinner david@fromorbit.com
| |