diff options
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 13df14e2c42..2f5a71d6d76 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 | ||
2218 | static inline void i_readcount_dec(struct inode *inode) | ||
2219 | { | ||
2220 | BUG_ON(!atomic_read(&inode->i_readcount)); | ||
2221 | atomic_dec(&inode->i_readcount); | ||
2222 | } | ||
2223 | static inline void i_readcount_inc(struct inode *inode) | ||
2224 | { | ||
2225 | atomic_inc(&inode->i_readcount); | ||
2226 | } | ||
2227 | #else | ||
2228 | static inline void i_readcount_dec(struct inode *inode) | ||
2229 | { | ||
2230 | return; | ||
2231 | } | ||
2232 | static inline void i_readcount_inc(struct inode *inode) | ||
2233 | { | ||
2234 | return; | ||
2235 | } | ||
2236 | #endif | ||
2218 | extern int do_pipe_flags(int *, int); | 2237 | extern int do_pipe_flags(int *, int); |
2219 | extern struct file *create_read_pipe(struct file *f, int flags); | 2238 | extern struct file *create_read_pipe(struct file *f, int flags); |
2220 | extern struct file *create_write_pipe(int flags); | 2239 | extern struct file *create_write_pipe(int flags); |