[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130821010822.220f592a@oracle.com>
Date: Wed, 21 Aug 2013 01:08:22 -0400
From: Dwight Engen <dwight.engen@...cle.com>
To: Arnd Bergmann <arnd@...db.de>
Cc: cbe-oss-dev@...ts.ozlabs.org,
Stephen Rothwell <sfr@...b.auug.org.au>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
linux-kernel@...r.kernel.org, xfs@....sgi.com,
Ben Myers <bpm@....com>, linux-next@...r.kernel.org,
Gao feng <gaofeng@...fujitsu.com>,
linuxppc-dev@...ts.ozlabs.org, Jeremy Kerr <jk@...abs.org>
Subject: Re: linux-next: build failure after merge of the final tree
On Tue, 20 Aug 2013 22:46:30 +0200
Arnd Bergmann <arnd@...db.de> wrote:
> On Tuesday 20 August 2013, Dwight Engen wrote:
> > diff --git a/arch/powerpc/platforms/cell/spufs/inode.c
> > b/arch/powerpc/platforms/cell/spufs/inode.c index f390042..90fb308
> > 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c
> > +++ b/arch/powerpc/platforms/cell/spufs/inode.c
> > @@ -620,12 +620,12 @@ spufs_parse_options(struct super_block *sb,
> > char *options, struct inode *root) case Opt_uid:
> > if (match_int(&args[0], &option))
> > return 0;
> > - root->i_uid = option;
> > + root->i_uid = make_kuid(&init_user_ns,
> > option); break;
> > case Opt_gid:
> > if (match_int(&args[0], &option))
> > return 0;
> > - root->i_gid = option;
> > + root->i_gid = make_kgid(&init_user_ns,
> > option); break;
> > case Opt_mode:
> > if (match_octal(&args[0], &option))
>
> Doesn't this mean the uid/gid is taken from the initial namespace
> rather than from the namespace of the 'mount' process calling this? I
> think the logical choice would be to have the UID be the one that
> gets passed here in the caller's namespace.
Yes, I agree. The other filesystems that take an Opt_uid as well do use
current_user_ns() and not init_user_ns. They also do a uid_valid()
check and fail the mount (or fallback to GLOBAL_ROOT_UID). So I think
that would look like this:
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index f390042..87ba7cf 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -620,12 +620,16 @@ spufs_parse_options(struct super_block *sb, char *options, struct inode *root)
case Opt_uid:
if (match_int(&args[0], &option))
return 0;
- root->i_uid = option;
+ root->i_uid = make_kuid(current_user_ns(), option);
+ if (!uid_valid(root->i_uid))
+ return 0;
break;
case Opt_gid:
if (match_int(&args[0], &option))
return 0;
- root->i_gid = option;
+ root->i_gid = make_kgid(current_user_ns(), option);
+ if (!gid_valid(root->i_gid))
+ return 0;
break;
case Opt_mode:
if (match_octal(&args[0], &option))
Again, I have not run tested this so we may just want to disable SPU_FS
with USER_NS until they can be tested together.
--
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