On Wed, 2005-10-19 at 11:04 +0200, Martin Walter wrote:
> On Mon, 17 Oct 2005 [EMAIL PROTECTED] wrote:
>
> > Here is a patch which calls generic_permission() after nfs_permission()
> > failed. Still it is not good solution, better than now a little bit.
> >
> >
> > Junjiro Okajima
> >
> >
> > --- unionfs-20051013-1721/inode.c 2005-10-14 06:21:24.000000000 +0900
> > +++ inode.c 2005-10-16 19:08:39.000000000 +0900
> > @@ -825,7 +825,7 @@
> > }
> >
> > /* Basically copied from the kernel vfs permission() -KK */
> > -int inode_permission(struct inode *inode, int mask, struct nameidata *nd)
> > +static int inode_permission(struct inode *inode, int mask, struct
> > nameidata *nd)
> > {
> > int retval, submask;
> >
> > @@ -850,9 +850,21 @@
> >
> > /* Ordinary permission routines do not understand MAY_APPEND. */
> > submask = mask & ~MAY_APPEND;
> > - if (inode->i_op && inode->i_op->permission)
> > + retval = 1;
> > +#define IS_NFS(inode) (strncmp("nfs", (inode)->i_sb->s_type->name, 4) == 0)
> > + if (inode->i_op && inode->i_op->permission) {
> > retval = inode->i_op->permission(inode, submask, nd);
> > - else
> > + /*
> > + * when the branch is not leftmost, we will copyup it later.
> > + * so we may ignore the error of 'nfs exported as readonly.'
> > + * This part depends on the filesystem, too bad.
> > + */
> > + ASSERT(retval <= 0);
> > + if (retval == -EACCES && (submask & MAY_WRITE)
> > + && IS_NFS(inode))
> > + retval = 1;
> > + }
> > + if (retval > 0)
> > retval = generic_permission(inode, submask, NULL);
> > if (retval)
> > return retval;
>
>
> Just I saw that Junjiro's patch is not in the last snapshot 20051018-0013.
> I am using it with 20051014-1448 without any problems.
> So please insert it in the next snapshot.
Martin,
I've just applied this patch (in spirit). To enable it you'll need to
add -DNFS_SECURITY_HOLE to your fistdev.mk.
Charles
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs