From: "Serge E. Hallyn" <serue@us.ibm.com>
To: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
hch@infradead.org, viro@zeniv.linux.org.uk,
linux-fsdevel@vger.kernel.org
Subject: Re: [RFC PATCH] Generic name to handle and open by handle syscalls
Date: Wed, 24 Feb 2010 22:53:23 -0600 [thread overview]
Message-ID: <20100225045323.GA25549@us.ibm.com> (raw)
In-Reply-To: <87ocjgib0j.fsf@linux.vnet.ibm.com>
Quoting Aneesh Kumar K. V (aneesh.kumar@linux.vnet.ibm.com):
> On Mon, 22 Feb 2010 16:06:59 -0700, Jonathan Corbet <corbet@lwn.net> wrote:
> > On Fri, 19 Feb 2010 11:12:26 +0530
> > "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> wrote:
> >
> > > The below set of patches implement open by handle support using exportfs
> > > operations.
> >
> > I have a couple of questions...starting with: what is the use case for
> > this functionality? There must, clearly, be some kind of application
> > which needs to be able to open by file handle, but I'm not sure what
> > that would be.
> >
>
> User space NFS server would be one example. Also if we want to NFS
> export another network file system which have a user space server, that
> would be another reason.
>
> > I agree with Andreas that the handle length looks like a bit of a
> > crapshoot. How should an application developer know how much memory to
> > dedicate to this?
> >
> > In do_sys_name_to_handle() you have:
> >
> > > + f_handle = kmalloc(handle_size, GFP_KERNEL);
> >
> > handle_size comes directly from user space. Perhaps it should be
> > sanity-checked? (I would also just use handle->handle_size; later
> > handle_size contains the *real* handle size, and I found that confusing.
> > Yes, I'm easily confused, but...)
>
> I already had a FIXME is another patch to sanity check the handle
> size. I was not sure what should be maximum size. Andreas suggested 4096
> So i will update the patch in the next iteration with that value. I will
> also update the variable names as you suggested above.
>
> >
> > > + handle->handle_type = retval;
> > > + if (handle_size < handle->handle_size) {
> > > + if (copy_to_user(handle->f_handle, f_handle,
> > > + handle_size*sizeof(u32)))
> > > + retval = -EFAULT;
> > > + retval = 0;
> > > + } else
> > > + retval = -EAGAIN;
> > > + handle->handle_size = handle_size;
> >
> > EAGAIN seems like a strange thing to return here. ENOSPC maybe?
>
> The reason for me using EAGAIN was to give a hint that if the user
> reissue the call with new returned handle_size we should be ok. But
> Andreas suggested EOVERFLOW. So i will use EOVERFLOW. Do you think
> ENOSPC is he right error value here ?
>
> >
> > Are you missing an "else" before the "retval = 0;" line? You'll never
> > return -EFAULT here.
> >
>
> good catch. Will fix in the next iteration
>
>
> > In do_sys_open_by_handle():
> >
> > > + if (!capable(CAP_SYS_ADMIN))
> > > + /* Allow open by handle only by sysadmin */
> > > + return -EPERM;
> >
> > I assume this is to avoid access to readable files within unreadable
> > directories? Otherwise you could check the permissions of the target
> > dentry.
> >
> > CAP_SYS_ADMIN seems like the wrong capability, though. CAP_DAC_OVERRIDE
> > might make more sense?
>
> I guess CAP_DAC_OVERRIDE should be enough here. The CAP_SYS_ADMIN
> restriction came from the xfs ioctl version.
I'd be curious to see the reasons for requiring it in the xfs version.
Do you have any docs about it? You're still doing a dentry_open, and
you got the filename fd somehow so the name shouldn't be a secret...
An LSM hook - specifically to make sure that selinux still allows you
to read the path (access to file->f_security) - might belong here, but
I dunno about the capable check.
thanks,
-serge
next prev parent reply other threads:[~2010-02-25 4:53 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-19 5:42 [RFC PATCH] Generic name to handle and open by handle syscalls Aneesh Kumar K.V
2010-02-19 5:42 ` [RFC PATCH 1/3] vfs: Add name to file handle conversion support Aneesh Kumar K.V
2010-02-20 18:15 ` Andreas Dilger
2010-02-22 5:15 ` Aneesh Kumar K. V
2010-02-19 5:42 ` [RFC PATCH 2/3] vfs: Add open by file handle support Aneesh Kumar K.V
2010-02-20 18:58 ` Andreas Dilger
2010-02-20 20:13 ` Brad Boyer
[not found] ` <FB88A140-C2EB-4E62-9769-D2524C874C8C@sun.com>
2010-02-22 2:46 ` Brad Boyer
2010-02-26 19:21 ` J. Bruce Fields
2010-02-28 17:55 ` Andreas Dilger
2010-02-28 19:00 ` J. Bruce Fields
2010-03-01 18:25 ` Oleg Drokin
2010-03-01 21:25 ` J. Bruce Fields
2010-02-22 6:13 ` Aneesh Kumar K. V
2010-02-22 6:31 ` Dave Chinner
2010-02-26 19:24 ` J. Bruce Fields
2010-02-19 5:42 ` [RFC PATCH 3/3] x86: Add new syscalls for x86_32 Aneesh Kumar K.V
2010-02-19 9:34 ` [RFC PATCH] Generic name to handle and open by handle syscalls Andreas Dilger
2010-02-19 9:49 ` Aneesh Kumar K. V
2010-02-20 19:01 ` Andreas Dilger
2010-02-22 6:27 ` Aneesh Kumar K. V
2010-02-22 23:06 ` Jonathan Corbet
2010-02-23 0:56 ` James Morris
2010-02-23 8:58 ` Aneesh Kumar K. V
2010-02-23 19:46 ` Jonathan Corbet
2010-02-24 0:49 ` Dave Chinner
2010-02-25 4:53 ` Serge E. Hallyn [this message]
2010-02-25 14:30 ` Jonathan Corbet
2010-02-25 15:19 ` Serge E. Hallyn
2010-02-25 17:55 ` Aneesh Kumar K. V
2010-02-25 18:11 ` Serge E. Hallyn
2010-02-25 18:20 ` Aneesh Kumar K. V
2010-02-25 19:05 ` Serge E. Hallyn
2010-02-26 9:12 ` Andreas Dilger
2010-02-26 19:56 ` Serge E. Hallyn
-- strict thread matches above, loose matches on Subject: below --
2010-03-11 13:14 DENIEL Philippe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100225045323.GA25549@us.ibm.com \
--to=serue@us.ibm.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=corbet@lwn.net \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).