Re: [PATCH 02/24] rearrange may_open() to be r/o friendly

From: Christoph Hellwig
Date: Wed Sep 19 2007 - 13:28:15 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/