From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Andreas Dilger <adilger@clusterfs.com>
Cc: Linux Filesystem Development <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH] Allow kernel-only mount interfaces...
Date: Thu, 10 Feb 2005 14:14:57 -0500 [thread overview]
Message-ID: <1108062897.9757.41.camel@lade.trondhjem.org> (raw)
In-Reply-To: <20050210190113.GT2635@schnapps.adilger.int>
to den 10.02.2005 Klokka 12:01 (-0700) skreiv Andreas Dilger:
> This will OOPS if fstype is bad, since you unconditionally put_filesystem()
> on a possible PTR_ERR() type. You need an extra
>
> if (!IS_ERR(type))
> put_filesystem(type);
>
Agreed. That was not a final patch, but just a first untested draft in
order to test the waters.
I'm mainly wanting to hear whether or not anyone has major objections
(Al ?) against the new function itself.
Here's an update, though ;-)
Cheers,
Trond
VFS: Add GPL_EXPORTED function vfs_kern_mount()
do_kern_mount() does not allow the kernel to use private mount interfaces
without exposing the same interfaces to userland. The problem is that the
filesystem is referenced by name, thus meaning that it and its mount
interface must be registered in the global filesystem list.
vfs_kern_mount() passes the struct file_system_type as an explicit
parameter in order to overcome this limitation.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
super.c | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
Index: linux-2.6.11-rc3/fs/super.c
===================================================================
--- linux-2.6.11-rc3.orig/fs/super.c
+++ linux-2.6.11-rc3/fs/super.c
@@ -794,17 +794,13 @@ struct super_block *get_sb_single(struct
EXPORT_SYMBOL(get_sb_single);
struct vfsmount *
-do_kern_mount(const char *fstype, int flags, const char *name, void *data)
+vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void *data)
{
- struct file_system_type *type = get_fs_type(fstype);
struct super_block *sb = ERR_PTR(-ENOMEM);
struct vfsmount *mnt;
int error;
char *secdata = NULL;
- if (!type)
- return ERR_PTR(-ENODEV);
-
mnt = alloc_vfsmnt(name);
if (!mnt)
goto out;
@@ -835,7 +831,6 @@ do_kern_mount(const char *fstype, int fl
mnt->mnt_parent = mnt;
mnt->mnt_namespace = current->namespace;
up_write(&sb->s_umount);
- put_filesystem(type);
return mnt;
out_sb:
up_write(&sb->s_umount);
@@ -846,10 +841,23 @@ out_free_secdata:
out_mnt:
free_vfsmnt(mnt);
out:
- put_filesystem(type);
return (struct vfsmount *)sb;
}
+EXPORT_SYMBOL_GPL(vfs_kern_mount);
+
+struct vfsmount *
+do_kern_mount(const char *fstype, int flags, const char *name, void *data)
+{
+ struct file_system_type *type = get_fs_type(fstype);
+ struct vfsmount *mnt;
+ if (!type)
+ return ERR_PTR(-ENODEV);
+ mnt = vfs_kern_mount(type, flags, name, data);
+ put_filesystem(type);
+ return mnt;
+}
+
EXPORT_SYMBOL_GPL(do_kern_mount);
struct vfsmount *kern_mount(struct file_system_type *type)
--
Trond Myklebust <trond.myklebust@fys.uio.no>
prev parent reply other threads:[~2005-02-10 19:15 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-10 18:41 [PATCH] Allow kernel-only mount interfaces Trond Myklebust
2005-02-10 19:01 ` Andreas Dilger
2005-02-10 19:14 ` Trond Myklebust [this message]
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=1108062897.9757.41.camel@lade.trondhjem.org \
--to=trond.myklebust@fys.uio.no \
--cc=adilger@clusterfs.com \
--cc=linux-fsdevel@vger.kernel.org \
/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).