~ubuntu-branches/ubuntu/raring/apparmor/raring

« back to all changes in this revision

Viewing changes to kernel-patches/for-mainline/security-mkdir.diff

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-03-23 16:42:01 UTC
  • Revision ID: james.westby@ubuntu.com-20070323164201-jkax6f0oku087b7l
Tags: upstream-2.0.1+510.dfsg
ImportĀ upstreamĀ versionĀ 2.0.1+510.dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Pass struct vfsmount to the inode_mkdir LSM hook
 
2
 
 
3
Signed-off-by: Tony Jones <tonyj@suse.de>
 
4
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
 
5
 
 
6
Index: b/fs/namei.c
 
7
===================================================================
 
8
--- a/fs/namei.c
 
9
+++ b/fs/namei.c
 
10
@@ -1928,7 +1928,7 @@ int vfs_mkdir(struct inode *dir, struct 
 
11
                return -EPERM;
 
12
 
 
13
        mode &= (S_IRWXUGO|S_ISVTX);
 
14
-       error = security_inode_mkdir(dir, dentry, mode);
 
15
+       error = security_inode_mkdir(dir, dentry, mnt, mode);
 
16
        if (error)
 
17
                return error;
 
18
 
 
19
Index: b/include/linux/security.h
 
20
===================================================================
 
21
--- a/include/linux/security.h
 
22
+++ b/include/linux/security.h
 
23
@@ -308,6 +308,7 @@ struct request_sock;
 
24
  *     associated with inode strcture @dir. 
 
25
  *     @dir containst the inode structure of parent of the directory to be created.
 
26
  *     @dentry contains the dentry structure of new directory.
 
27
+ *     @mnt is the vfsmount corresponding to @dentry (may be NULL).
 
28
  *     @mode contains the mode of new directory.
 
29
  *     Return 0 if permission is granted.
 
30
  * @inode_rmdir:
 
31
@@ -1213,7 +1214,8 @@ struct security_operations {
 
32
        int (*inode_unlink) (struct inode *dir, struct dentry *dentry);
 
33
        int (*inode_symlink) (struct inode *dir,
 
34
                              struct dentry *dentry, const char *old_name);
 
35
-       int (*inode_mkdir) (struct inode *dir, struct dentry *dentry, int mode);
 
36
+       int (*inode_mkdir) (struct inode *dir, struct dentry *dentry,
 
37
+                           struct vfsmount *mnt, int mode);
 
38
        int (*inode_rmdir) (struct inode *dir, struct dentry *dentry);
 
39
        int (*inode_mknod) (struct inode *dir, struct dentry *dentry,
 
40
                            int mode, dev_t dev);
 
41
@@ -1650,11 +1652,12 @@ static inline int security_inode_symlink
 
42
 
 
43
 static inline int security_inode_mkdir (struct inode *dir,
 
44
                                        struct dentry *dentry,
 
45
+                                       struct vfsmount *mnt,
 
46
                                        int mode)
 
47
 {
 
48
        if (unlikely (IS_PRIVATE (dir)))
 
49
                return 0;
 
50
-       return security_ops->inode_mkdir (dir, dentry, mode);
 
51
+       return security_ops->inode_mkdir (dir, dentry, mnt, mode);
 
52
 }
 
53
 
 
54
 static inline int security_inode_rmdir (struct inode *dir,
 
55
@@ -2371,6 +2374,7 @@ static inline int security_inode_symlink
 
56
 
 
57
 static inline int security_inode_mkdir (struct inode *dir,
 
58
                                        struct dentry *dentry,
 
59
+                                       struct vfsmount *mnt,
 
60
                                        int mode)
 
61
 {
 
62
        return 0;
 
63
Index: b/security/dummy.c
 
64
===================================================================
 
65
--- a/security/dummy.c
 
66
+++ b/security/dummy.c
 
67
@@ -288,7 +288,7 @@ static int dummy_inode_symlink (struct i
 
68
 }
 
69
 
 
70
 static int dummy_inode_mkdir (struct inode *inode, struct dentry *dentry,
 
71
-                             int mask)
 
72
+                             struct vfsmount *mnt, int mask)
 
73
 {
 
74
        return 0;
 
75
 }
 
76
Index: b/security/selinux/hooks.c
 
77
===================================================================
 
78
--- a/security/selinux/hooks.c
 
79
+++ b/security/selinux/hooks.c
 
80
@@ -2209,7 +2209,8 @@ static int selinux_inode_symlink(struct 
 
81
        return may_create(dir, dentry, SECCLASS_LNK_FILE);
 
82
 }
 
83
 
 
84
-static int selinux_inode_mkdir(struct inode *dir, struct dentry *dentry, int mask)
 
85
+static int selinux_inode_mkdir(struct inode *dir, struct dentry *dentry,
 
86
+                              struct vfsmount *mnt, int mask)
 
87
 {
 
88
        return may_create(dir, dentry, SECCLASS_DIR);
 
89
 }