[PATCH 31/35] union-mount: Implement union-aware chown()

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Valerie Aurora
Date: Thursday, April 15, 2010 - 4:04 pm

Proof-of-concept implementation of chown() for union mounts.
---
 fs/open.c |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/fs/open.c b/fs/open.c
index 686fcd2..325852d 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -30,6 +30,7 @@
 #include <linux/falloc.h>
 #include <linux/fs_struct.h>
 #include <linux/ima.h>
+#include <linux/union.h>
 
 #include "internal.h"
 
@@ -717,18 +718,35 @@ static int chown_common(struct path *path, uid_t user, gid_t group)
 SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
 {
 	struct path path;
+	struct nameidata nd;
+	struct vfsmount *mnt;
+	char *tmp;
 	int error;
 
-	error = user_path(filename, &path);
+	error = user_path_nd(AT_FDCWD, filename, LOOKUP_FOLLOW,
+				     &nd, &path, &tmp);
 	if (error)
 		goto out;
-	error = mnt_want_write(path.mnt);
+
+	if (IS_UNIONED_DIR(&nd.path))
+		mnt = nd.path.mnt;
+	else
+		mnt = path.mnt;
+
+	error = mnt_want_write(mnt);
 	if (error)
 		goto out_release;
+
+	error = union_copyup(&nd, &path);
+	if (error)
+		goto out_drop_write;
 	error = chown_common(&path, user, group);
-	mnt_drop_write(path.mnt);
+out_drop_write:
+	mnt_drop_write(mnt);
 out_release:
 	path_put(&path);
+	path_put(&nd.path);
+	putname(tmp);
 out:
 	return error;
 }
-- 
1.6.3.3

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/35] Union mounts - everything but the xattrs, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 01/35] VFS: Make lookup_hash() return a struct path, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 02/35] VFS: Add read-only users count to superblock, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 08/35] whiteout: tmpfs whiteout support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 10/35] whiteout: ext2 whiteout support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 11/35] whiteout: jffs2 whiteout support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 12/35] fallthru: Basic fallthru definitions, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 13/35] fallthru: ext2 fallthru support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 14/35] fallthru: jffs2 fallthru support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 15/35] fallthru: tmpfs fallthru support, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 20/35] union-mount: Implement union lookup, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 26/35] union-mount: In-kernel copyup routines, Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 28/35] union-mount: Implement union-aware link(), Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 29/35] union-mount: Implement union-aware rename(), Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 31/35] union-mount: Implement union-aware chown(), Valerie Aurora, (Thu Apr 15, 4:04 pm)
[PATCH 34/35] union-mount: Implement union-aware lchown(), Valerie Aurora, (Thu Apr 15, 4:04 pm)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, David Woodhouse, (Mon Apr 19, 6:02 am)
Re: [PATCH 11/35] whiteout: jffs2 whiteout support, David Woodhouse, (Mon Apr 19, 6:03 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jan Blunck, (Mon Apr 19, 6:23 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jan Blunck, (Mon Apr 19, 7:12 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Valerie Aurora, (Mon Apr 19, 7:23 am)
Re: [PATCH 11/35] whiteout: jffs2 whiteout support, Valerie Aurora, (Mon Apr 19, 7:26 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jan Blunck, (Wed Apr 21, 1:42 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jamie Lokier, (Wed Apr 21, 2:22 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jamie Lokier, (Wed Apr 21, 2:52 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Miklos Szeredi, (Wed Apr 21, 3:17 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jamie Lokier, (Wed Apr 21, 10:36 am)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Valerie Aurora, (Wed Apr 21, 2:38 pm)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, Jamie Lokier, (Wed Apr 21, 3:10 pm)
Re: [PATCH 00/35] Union mounts - everything but the xattrs, Valerie Aurora, (Wed Apr 21, 4:35 pm)
Re: [PATCH 13/35] fallthru: ext2 fallthru support, J. R. Okajima, (Thu Apr 22, 3:30 am)