Root/target/linux/generic/patches-2.6.37/101-overlayfs_2.6.37_backport.patch

1--- a/fs/overlayfs/overlayfs.c
2+++ b/fs/overlayfs/overlayfs.c
3@@ -28,13 +28,8 @@ struct ovl_fs {
4 struct ovl_entry {
5     struct dentry *__upperdentry;
6     struct dentry *lowerdentry;
7- union {
8- struct {
9- u64 version;
10- bool opaque;
11- };
12- struct rcu_head rcu;
13- };
14+ u64 version;
15+ bool opaque;
16 };
17 
18 static const char *ovl_whiteout_xattr = "trusted.overlay.whiteout";
19@@ -632,12 +627,6 @@ static const struct file_operations ovl_
20 
21 static const struct inode_operations ovl_dir_inode_operations;
22 
23-static void ovl_entry_free(struct rcu_head *head)
24-{
25- struct ovl_entry *oe = container_of(head, struct ovl_entry, rcu);
26- kfree(oe);
27-}
28-
29 static void ovl_dentry_release(struct dentry *dentry)
30 {
31     struct ovl_entry *oe = dentry->d_fsdata;
32@@ -645,7 +634,7 @@ static void ovl_dentry_release(struct de
33     if (oe) {
34         dput(oe->__upperdentry);
35         dput(oe->lowerdentry);
36- call_rcu(&oe->rcu, ovl_entry_free);
37+ kfree(oe);
38     }
39 }
40 
41@@ -1338,7 +1327,7 @@ static int ovl_dir_getattr(struct vfsmou
42     return 0;
43 }
44 
45-static int ovl_permission(struct inode *inode, int mask, unsigned int flags)
46+static int ovl_permission(struct inode *inode, int mask)
47 {
48     struct ovl_entry *oe;
49     struct dentry *alias = NULL;
50@@ -1349,8 +1338,6 @@ static int ovl_permission(struct inode *
51 
52     if (S_ISDIR(inode->i_mode)) {
53         oe = inode->i_private;
54- } else if (flags & IPERM_FLAG_RCU) {
55- return -ECHILD;
56     } else {
57         /*
58          * For non-directories find an alias and get the info
59@@ -1377,7 +1364,6 @@ static int ovl_permission(struct inode *
60     /* Careful in RCU walk mode */
61     realinode = ACCESS_ONCE(realdentry->d_inode);
62     if (!realinode) {
63- WARN_ON(!(flags & IPERM_FLAG_RCU));
64         return -ENOENT;
65     }
66 
67@@ -1402,9 +1388,9 @@ static int ovl_permission(struct inode *
68     }
69 
70     if (realinode->i_op->permission)
71- err = realinode->i_op->permission(realinode, mask, flags);
72+ err = realinode->i_op->permission(realinode, mask);
73     else
74- err = generic_permission(realinode, mask, flags,
75+ err = generic_permission(realinode, mask,
76                      realinode->i_op->check_acl);
77 out_dput:
78     dput(alias);
79

Archive Download this file



interactive