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