diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/attr.c | 2 | ||||
-rw-r--r-- | fs/file_table.c | 2 | ||||
-rw-r--r-- | fs/xattr.c | 6 |
3 files changed, 7 insertions, 3 deletions
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/fcntl.h> | 14 | #include <linux/fcntl.h> |
15 | #include <linux/security.h> | 15 | #include <linux/security.h> |
16 | #include <linux/evm.h> | 16 | #include <linux/evm.h> |
17 | #include <linux/ima.h> | ||
17 | 18 | ||
18 | /** | 19 | /** |
19 | * inode_change_ok - check if attribute changes to an inode are allowed | 20 | * inode_change_ok - check if attribute changes to an inode are allowed |
@@ -247,6 +248,7 @@ int notify_change(struct dentry * dentry, struct iattr * attr) | |||
247 | 248 | ||
248 | if (!error) { | 249 | if (!error) { |
249 | fsnotify_change(dentry, ia_valid); | 250 | fsnotify_change(dentry, ia_valid); |
251 | ima_inode_post_setattr(dentry); | ||
250 | evm_inode_post_setattr(dentry, ia_valid); | 252 | evm_inode_post_setattr(dentry, ia_valid); |
251 | } | 253 | } |
252 | 254 | ||
diff --git a/fs/file_table.c b/fs/file_table.c index c6780163bf3e..dac67923330f 100644 --- a/fs/file_table.c +++ b/fs/file_table.c | |||
@@ -243,10 +243,10 @@ static void __fput(struct file *file) | |||
243 | if (file->f_op && file->f_op->fasync) | 243 | if (file->f_op && file->f_op->fasync) |
244 | file->f_op->fasync(-1, file, 0); | 244 | file->f_op->fasync(-1, file, 0); |
245 | } | 245 | } |
246 | ima_file_free(file); | ||
246 | if (file->f_op && file->f_op->release) | 247 | if (file->f_op && file->f_op->release) |
247 | file->f_op->release(inode, file); | 248 | file->f_op->release(inode, file); |
248 | security_file_free(file); | 249 | security_file_free(file); |
249 | ima_file_free(file); | ||
250 | if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL && | 250 | if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL && |
251 | !(file->f_mode & FMODE_PATH))) { | 251 | !(file->f_mode & FMODE_PATH))) { |
252 | cdev_put(inode->i_cdev); | 252 | cdev_put(inode->i_cdev); |
diff --git a/fs/xattr.c b/fs/xattr.c index ca15fbd391c8..1780f062dbaf 100644 --- a/fs/xattr.c +++ b/fs/xattr.c | |||
@@ -296,11 +296,13 @@ vfs_removexattr(struct dentry *dentry, const char *name) | |||
296 | if (error) | 296 | if (error) |
297 | return error; | 297 | return error; |
298 | 298 | ||
299 | mutex_lock(&inode->i_mutex); | ||
299 | error = security_inode_removexattr(dentry, name); | 300 | error = security_inode_removexattr(dentry, name); |
300 | if (error) | 301 | if (error) { |
302 | mutex_unlock(&inode->i_mutex); | ||
301 | return error; | 303 | return error; |
304 | } | ||
302 | 305 | ||
303 | mutex_lock(&inode->i_mutex); | ||
304 | error = inode->i_op->removexattr(dentry, name); | 306 | error = inode->i_op->removexattr(dentry, name); |
305 | mutex_unlock(&inode->i_mutex); | 307 | mutex_unlock(&inode->i_mutex); |
306 | 308 | ||