[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070919172754.GB20917@infradead.org>
Date: Wed, 19 Sep 2007 18:27:54 +0100
From: Christoph Hellwig <hch@...radead.org>
To: Dave Hansen <haveblue@...ibm.com>
Cc: akpm@...l.org, linux-kernel@...r.kernel.org, hch@...radead.org
Subject: Re: [PATCH 02/24] rearrange may_open() to be r/o friendly
On Mon, Sep 17, 2007 at 11:27:20AM -0700, Dave Hansen wrote:
>
> may_open() calls vfs_permission() before it does checks for
> IS_RDONLY(inode). It checks _again_ inside of vfs_permission().
>
> The check inside of vfs_permission() is going away eventually.
> With the mnt_want/drop_write() functions, all of the r/o
> checks (except for this one) are consistently done before
> calling permission(). Because of this, I'd like to use
> permission() to hold a debugging check to make sure that
> the mnt_want/drop_write() calls are actually being made.
>
> So, to do this:
> 1. remove the IS_RDONLY() check from permission()
> 2. enforce that you must mnt_want_write() before
> even calling permission()
> 3. enable a debugging in permission()
>
> We need to rearrange may_open(). Here's the patch.
> int permission(struct inode *inode, int mask, struct nameidata *nd)
> {
> int retval, submask;
> + struct vfsmount *mnt = NULL;
> +
> + if (nd)
> + mnt = nd->mnt;
>
> if (mask & MAY_WRITE) {
> umode_t mode = inode->i_mode;
> @@ -251,7 +255,7 @@ int permission(struct inode *inode, int
> * MAY_EXEC on regular files is denied if the fs is mounted
> * with the "noexec" flag.
> */
> - if (nd && nd->mnt && (nd->mnt->mnt_flags & MNT_NOEXEC))
> + if (mnt && (mnt->mnt_flags & MNT_NOEXEC))
Why is this entirely unrelated cleanup in this patch?
Except for that it looks fine.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists