All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <haveblue@us.ibm.com>
To: akpm@osdl.org
Cc: linux-kernel@vger.kernel.org, hch@infradead.org,
	Dave Hansen <haveblue@us.ibm.com>
Subject: [PATCH 16/24] nfs: check mnt instead of superblock directly
Date: Mon, 17 Sep 2007 11:27:39 -0700	[thread overview]
Message-ID: <20070917182739.6987C126@kernel> (raw)
In-Reply-To: <20070917182718.70494C9B@kernel>


If we depend on the inodes for writeability, we will not
catch the r/o mounts when implemented.

This patches uses __mnt_want_write().  It does not guarantee
that the mount will stay writeable after the check.  But,
this is OK for one of the checks because it is just for a
printk().

The other two are probably unnecessary and duplicate existing
checks in the VFS.  This won't make them better checks than
before, but it will make them detect r/o mounts.

Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
---

 lxc-dave/fs/nfs/dir.c  |    3 ++-
 lxc-dave/fs/nfsd/vfs.c |    4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff -puN fs/nfs/dir.c~nfs-check-mnt-instead-of-sb fs/nfs/dir.c
--- lxc/fs/nfs/dir.c~nfs-check-mnt-instead-of-sb	2007-09-17 09:44:05.000000000 -0700
+++ lxc-dave/fs/nfs/dir.c	2007-09-17 09:44:05.000000000 -0700
@@ -997,7 +997,8 @@ static int is_atomic_open(struct inode *
 	if (nd->flags & LOOKUP_DIRECTORY)
 		return 0;
 	/* Are we trying to write to a read only partition? */
-	if (IS_RDONLY(dir) && (nd->intent.open.flags & (O_CREAT|O_TRUNC|FMODE_WRITE)))
+	if (__mnt_is_readonly(nd->mnt) &&
+	    (nd->intent.open.flags & (O_CREAT|O_TRUNC|FMODE_WRITE)))
 		return 0;
 	return 1;
 }
diff -puN fs/nfsd/vfs.c~nfs-check-mnt-instead-of-sb fs/nfsd/vfs.c
--- lxc/fs/nfsd/vfs.c~nfs-check-mnt-instead-of-sb	2007-09-17 09:44:05.000000000 -0700
+++ lxc-dave/fs/nfsd/vfs.c	2007-09-17 09:44:05.000000000 -0700
@@ -1853,7 +1853,7 @@ nfsd_permission(struct svc_rqst *rqstp, 
 		inode->i_mode,
 		IS_IMMUTABLE(inode)?	" immut" : "",
 		IS_APPEND(inode)?	" append" : "",
-		IS_RDONLY(inode)?	" ro" : "");
+		__mnt_is_readonly(exp->ex_mnt)?	" ro" : "");
 	dprintk("      owner %d/%d user %d/%d\n",
 		inode->i_uid, inode->i_gid, current->fsuid, current->fsgid);
 #endif
@@ -1864,7 +1864,7 @@ nfsd_permission(struct svc_rqst *rqstp, 
 	 */
 	if (!(acc & MAY_LOCAL_ACCESS))
 		if (acc & (MAY_WRITE | MAY_SATTR | MAY_TRUNC)) {
-			if (exp_rdonly(rqstp, exp) || IS_RDONLY(inode))
+			if (exp_rdonly(rqstp, exp) || __mnt_is_readonly(exp->ex_mnt))
 				return nfserr_rofs;
 			if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
 				return nfserr_perm;
_

  parent reply	other threads:[~2007-09-17 18:31 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-17 18:27 [PATCH 00/24] Read-only bind mounts Dave Hansen
2007-09-17 18:27 ` [PATCH 01/24] filesystem helpers for custom 'struct file's Dave Hansen
2007-09-19 17:26   ` Christoph Hellwig
2007-09-19 17:47     ` [PATCH] docuement " Dave Hansen
2007-09-19 22:07       ` Randy Dunlap
2007-09-20 17:25         ` Dave Hansen
2007-09-20 17:30           ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 02/24] rearrange may_open() to be r/o friendly Dave Hansen
2007-09-19 17:27   ` Christoph Hellwig
2007-09-20 18:47     ` Dave Hansen
2007-09-17 18:27 ` [PATCH 03/24] create cleanup helper svc_msnfs() Dave Hansen
2007-09-19 17:28   ` Christoph Hellwig
2007-09-19 17:39   ` Jan Engelhardt
2007-09-19 17:45     ` Dave Hansen
2007-09-19 17:54       ` Trond Myklebust
2007-09-19 17:59         ` Christoph Hellwig
2007-09-19 18:10           ` Trond Myklebust
2007-09-17 18:27 ` [PATCH 04/24] r/o bind mounts: stub functions Dave Hansen
2007-09-19 17:28   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 05/24] elevate write count open()'d files Dave Hansen
2007-09-19 17:30   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 06/24] r/o bind mounts: elevate write count for some ioctls Dave Hansen
2007-09-19 17:31   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 07/24] elevate writer count for chown and friends Dave Hansen
2007-09-19 17:31   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 08/24] make access() use mnt check Dave Hansen
2007-09-19 17:32   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 09/24] elevate mnt writers for callers of vfs_mkdir() Dave Hansen
2007-09-19 17:32   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 10/24] elevate write count during entire ncp_ioctl() Dave Hansen
2007-09-19 17:33   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 11/24] elevate write count for link and symlink calls Dave Hansen
2007-09-19 17:33   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 12/24] elevate mount count for extended attributes Dave Hansen
2007-09-19 17:34   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 13/24] elevate write count for file_update_time() Dave Hansen
2007-09-19 17:35   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 14/24] unix_find_other() elevate write count for touch_atime() Dave Hansen
2007-09-19 17:35   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 15/24] elevate write count over calls to vfs_rename() Dave Hansen
2007-09-19 17:35   ` Christoph Hellwig
2007-09-17 18:27 ` Dave Hansen [this message]
2007-09-19 17:36   ` [PATCH 16/24] nfs: check mnt instead of superblock directly Christoph Hellwig
2007-09-17 18:27 ` [PATCH 17/24] elevate writer count for do_sys_truncate() Dave Hansen
2007-09-19 17:36   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 18/24] elevate write count for do_utimes() Dave Hansen
2007-09-19 17:36   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 19/24] elevate write count for do_sys_utime() and touch_atime() Dave Hansen
2007-09-19 17:36   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 20/24] sys_mknodat(): elevate write count for vfs_mknod/create() Dave Hansen
2007-09-19 17:38   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 21/24] elevate mnt writers for vfs_unlink() callers Dave Hansen
2007-09-19 17:38   ` Christoph Hellwig
2007-09-17 18:27 ` [PATCH 22/24] do_rmdir(): elevate write count Dave Hansen
2007-09-19 17:39   ` Christoph Hellwig
2007-09-19 14:21 ` [PATCH 00/24] Read-only bind mounts Serge E. Hallyn
2007-09-19 17:44 ` Christoph Hellwig
2007-09-19 21:24   ` Andrew Morton
2007-09-19 21:56     ` Dave Hansen
2007-09-19 22:06       ` Andrew Morton
2007-09-20  9:58         ` Miklos Szeredi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070917182739.6987C126@kernel \
    --to=haveblue@us.ibm.com \
    --cc=akpm@osdl.org \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.