summaryrefslogtreecommitdiffstats
path: root/fs/open.c
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2018-07-18 09:44:43 -0400
committerMiklos Szeredi <mszeredi@redhat.com>2018-07-18 09:44:43 -0400
commit8cf9ee5061037accf61775f438ad7513576d4413 (patch)
tree6301abb5e6b1386103ea6c0dff437afd5f6ae6a8 /fs/open.c
parent4ab30319fd7c691a1b3165325c647a5cd6d282ac (diff)
Revert "vfs: do get_write_access() on upper layer of overlayfs"
This reverts commit 4d0c5ba2ff79ef9f5188998b29fd28fcb05f3667. We now get write access on both overlay and underlying layers so this patch is no longer needed for correct operation. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/fs/open.c b/fs/open.c
index a973ca074896..72bcae72bce9 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -68,7 +68,6 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
68long vfs_truncate(const struct path *path, loff_t length) 68long vfs_truncate(const struct path *path, loff_t length)
69{ 69{
70 struct inode *inode; 70 struct inode *inode;
71 struct dentry *upperdentry;
72 long error; 71 long error;
73 72
74 inode = path->dentry->d_inode; 73 inode = path->dentry->d_inode;
@@ -91,17 +90,7 @@ long vfs_truncate(const struct path *path, loff_t length)
91 if (IS_APPEND(inode)) 90 if (IS_APPEND(inode))
92 goto mnt_drop_write_and_out; 91 goto mnt_drop_write_and_out;
93 92
94 /* 93 error = get_write_access(inode);
95 * If this is an overlayfs then do as if opening the file so we get
96 * write access on the upper inode, not on the overlay inode. For
97 * non-overlay filesystems d_real() is an identity function.
98 */
99 upperdentry = d_real(path->dentry, NULL, O_WRONLY);
100 error = PTR_ERR(upperdentry);
101 if (IS_ERR(upperdentry))
102 goto mnt_drop_write_and_out;
103
104 error = get_write_access(upperdentry->d_inode);
105 if (error) 94 if (error)
106 goto mnt_drop_write_and_out; 95 goto mnt_drop_write_and_out;
107 96
@@ -120,7 +109,7 @@ long vfs_truncate(const struct path *path, loff_t length)
120 error = do_truncate(path->dentry, length, 0, NULL); 109 error = do_truncate(path->dentry, length, 0, NULL);
121 110
122put_write_and_out: 111put_write_and_out:
123 put_write_access(upperdentry->d_inode); 112 put_write_access(inode);
124mnt_drop_write_and_out: 113mnt_drop_write_and_out:
125 mnt_drop_write(path->mnt); 114 mnt_drop_write(path->mnt);
126out: 115out: