aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fs.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 12:15:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 12:15:43 -0400
commit0f6e0e8448a16d8d22119ce91d8dd24b44865b51 (patch)
tree7c295c02db035fc6a0b867465911a2bc9dc6b1ef /include/linux/fs.h
parent0d2ecee2bdb2a19d04bc5cefac0f86e790f1aad4 (diff)
parenta002951c97ff8da49938c982a4c236bf2fafdc9f (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (33 commits) AppArmor: kill unused macros in lsm.c AppArmor: cleanup generated files correctly KEYS: Add an iovec version of KEYCTL_INSTANTIATE KEYS: Add a new keyctl op to reject a key with a specified error code KEYS: Add a key type op to permit the key description to be vetted KEYS: Add an RCU payload dereference macro AppArmor: Cleanup make file to remove cruft and make it easier to read SELinux: implement the new sb_remount LSM hook LSM: Pass -o remount options to the LSM SELinux: Compute SID for the newly created socket SELinux: Socket retains creator role and MLS attribute SELinux: Auto-generate security_is_socket_class TOMOYO: Fix memory leak upon file open. Revert "selinux: simplify ioctl checking" selinux: drop unused packet flow permissions selinux: Fix packet forwarding checks on postrouting selinux: Fix wrong checks for selinux_policycap_netpeer selinux: Fix check for xfrm selinux context algorithm ima: remove unnecessary call to ima_must_measure IMA: remove IMA imbalance checking ...
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r--include/linux/fs.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 13df14e2c42e..2f5a71d6d766 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -801,8 +801,7 @@ struct inode {
801#endif 801#endif
802 802
803#ifdef CONFIG_IMA 803#ifdef CONFIG_IMA
804 /* protected by i_lock */ 804 atomic_t i_readcount; /* struct files open RO */
805 unsigned int i_readcount; /* struct files open RO */
806#endif 805#endif
807 atomic_t i_writecount; 806 atomic_t i_writecount;
808#ifdef CONFIG_SECURITY 807#ifdef CONFIG_SECURITY
@@ -2215,6 +2214,26 @@ static inline void allow_write_access(struct file *file)
2215 if (file) 2214 if (file)
2216 atomic_inc(&file->f_path.dentry->d_inode->i_writecount); 2215 atomic_inc(&file->f_path.dentry->d_inode->i_writecount);
2217} 2216}
2217#ifdef CONFIG_IMA
2218static inline void i_readcount_dec(struct inode *inode)
2219{
2220 BUG_ON(!atomic_read(&inode->i_readcount));
2221 atomic_dec(&inode->i_readcount);
2222}
2223static inline void i_readcount_inc(struct inode *inode)
2224{
2225 atomic_inc(&inode->i_readcount);
2226}
2227#else
2228static inline void i_readcount_dec(struct inode *inode)
2229{
2230 return;
2231}
2232static inline void i_readcount_inc(struct inode *inode)
2233{
2234 return;
2235}
2236#endif
2218extern int do_pipe_flags(int *, int); 2237extern int do_pipe_flags(int *, int);
2219extern struct file *create_read_pipe(struct file *f, int flags); 2238extern struct file *create_read_pipe(struct file *f, int flags);
2220extern struct file *create_write_pipe(int flags); 2239extern struct file *create_write_pipe(int flags);