diff --git a/kernel-patches/for-mainline/may_create-args.diff b/kernel-patches/for-mainline/may_create-args.diff index 9057f028c..ff592fb57 100644 --- a/kernel-patches/for-mainline/may_create-args.diff +++ b/kernel-patches/for-mainline/may_create-args.diff @@ -9,7 +9,7 @@ Signed-off-by: Andreas Gruenbacher --- a/fs/namei.c +++ b/fs/namei.c -@@ -1425,14 +1425,13 @@ static int may_delete(struct inode *dir, +@@ -1462,16 +1462,15 @@ static int may_delete(struct inode *dir, * 3. We should have write and exec permissions on dir * 4. We can't do it if dir is immutable (done in permission()) */ @@ -22,12 +22,14 @@ Signed-off-by: Andreas Gruenbacher - if (IS_DEADDIR(dir)) + if (IS_DEADDIR(nd->dentry->d_inode)) return -ENOENT; + if (nd) + nd->flags |= LOOKUP_CONTINUE; - return permission(dir,MAY_WRITE | MAY_EXEC, nd); + return permission(nd->dentry->d_inode, MAY_WRITE | MAY_EXEC, nd); } /* -@@ -1498,7 +1497,7 @@ void unlock_rename(struct dentry *p1, st +@@ -1537,7 +1536,7 @@ void unlock_rename(struct dentry *p1, st int vfs_create(struct nameidata2 *nd, struct dentry *dentry, int mode) { struct inode *dir = nd->dentry->d_inode; @@ -36,7 +38,7 @@ Signed-off-by: Andreas Gruenbacher if (error) return error; -@@ -1844,7 +1843,7 @@ EXPORT_SYMBOL_GPL(lookup_create); +@@ -1883,7 +1882,7 @@ EXPORT_SYMBOL_GPL(lookup_create); int vfs_mknod(struct nameidata2 *nd, struct dentry *dentry, int mode, dev_t dev) { struct inode *dir = nd->dentry->d_inode; @@ -45,7 +47,7 @@ Signed-off-by: Andreas Gruenbacher if (error) return error; -@@ -1924,7 +1923,7 @@ asmlinkage long sys_mknod(const char __u +@@ -1963,7 +1962,7 @@ asmlinkage long sys_mknod(const char __u int vfs_mkdir(struct nameidata2 *nd, struct dentry *dentry, int mode) { struct inode *dir = nd->dentry->d_inode; @@ -54,7 +56,7 @@ Signed-off-by: Andreas Gruenbacher if (error) return error; -@@ -2193,7 +2192,7 @@ int vfs_symlink(struct nameidata2 *nd, s +@@ -2232,7 +2231,7 @@ int vfs_symlink(struct nameidata2 *nd, s const char *oldname, int mode) { struct inode *dir = nd->dentry->d_inode; @@ -63,7 +65,7 @@ Signed-off-by: Andreas Gruenbacher if (error) return error; -@@ -2265,7 +2264,7 @@ int vfs_link(struct nameidata2 *old_nd, +@@ -2304,7 +2303,7 @@ int vfs_link(struct nameidata2 *old_nd, if (!inode) return -ENOENT; @@ -72,7 +74,7 @@ Signed-off-by: Andreas Gruenbacher if (error) return error; -@@ -2483,7 +2482,7 @@ int vfs_rename(struct nameidata2 *old_nd +@@ -2522,7 +2521,7 @@ int vfs_rename(struct nameidata2 *old_nd return error; if (!new_dentry->d_inode)