12
12
include/linux/security.h | 8 ++++++--
13
13
security/dummy.c | 3 ++-
14
security/security.c | 5 +++--
14
15
security/selinux/hooks.c | 5 +++--
15
4 files changed, 13 insertions(+), 7 deletions(-)
16
5 files changed, 16 insertions(+), 9 deletions(-)
19
@@ -144,13 +144,13 @@ int notify_change(struct dentry *dentry,
20
@@ -159,13 +159,13 @@ int notify_change(struct dentry *dentry,
20
21
down_write(&dentry->d_inode->i_alloc_sem);
22
23
if (inode->i_op && inode->i_op->setattr) {
34
35
(ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid))
35
36
--- a/include/linux/security.h
36
37
+++ b/include/linux/security.h
37
@@ -359,6 +359,7 @@ struct request_sock;
38
@@ -372,6 +372,7 @@ struct request_sock;
38
39
* file attributes change (such as when a file is truncated, chown/chmod
39
40
* operations, transferring disk quotas, etc).
40
41
* @dentry contains the dentry structure for the file.
42
43
* @attr is the iattr structure containing the new file attributes.
43
44
* Return 0 if permission is granted.
45
@@ -1222,7 +1223,8 @@ struct security_operations {
46
@@ -1264,7 +1265,8 @@ struct security_operations {
46
47
int (*inode_readlink) (struct dentry *dentry);
47
48
int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd);
48
49
int (*inode_permission) (struct inode *inode, int mask, struct nameidata *nd);
52
53
int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry);
53
54
void (*inode_delete) (struct inode *inode);
54
55
int (*inode_setxattr) (struct dentry *dentry, char *name, void *value,
55
@@ -1710,11 +1712,12 @@ static inline int security_inode_permiss
58
static inline int security_inode_setattr (struct dentry *dentry,
59
+ struct vfsmount *mnt,
62
if (unlikely (IS_PRIVATE (dentry->d_inode)))
64
- return security_ops->inode_setattr (dentry, attr);
65
+ return security_ops->inode_setattr (dentry, mnt, attr);
68
static inline int security_inode_getattr (struct vfsmount *mnt,
69
@@ -2417,6 +2420,7 @@ static inline int security_inode_permiss
56
@@ -1519,7 +1521,8 @@ int security_inode_rename(struct inode *
57
int security_inode_readlink(struct dentry *dentry);
58
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd);
59
int security_inode_permission(struct inode *inode, int mask, struct nameidata *nd);
60
-int security_inode_setattr(struct dentry *dentry, struct iattr *attr);
61
+int security_inode_setattr(struct dentry *dentry, struct vfsmount *mnt,
62
+ struct iattr *attr);
63
int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry);
64
void security_inode_delete(struct inode *inode);
65
int security_inode_setxattr(struct dentry *dentry, char *name,
66
@@ -1887,6 +1890,7 @@ static inline int security_inode_permiss
72
69
static inline int security_inode_setattr (struct dentry *dentry,
86
--- a/security/security.c
87
+++ b/security/security.c
88
@@ -411,11 +411,12 @@ int security_inode_permission(struct ino
89
return security_ops->inode_permission(inode, mask, nd);
92
-int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
93
+int security_inode_setattr(struct dentry *dentry, struct vfsmount *mnt,
96
if (unlikely(IS_PRIVATE(dentry->d_inode)))
98
- return security_ops->inode_setattr(dentry, attr);
99
+ return security_ops->inode_setattr(dentry, mnt, attr);
102
int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry)
89
103
--- a/security/selinux/hooks.c
90
104
+++ b/security/selinux/hooks.c
91
@@ -2268,11 +2268,12 @@ static int selinux_inode_permission(stru
105
@@ -2275,11 +2275,12 @@ static int selinux_inode_permission(stru
92
106
file_mask_to_av(inode->i_mode, mask), NULL);