All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: containers@lists.linux-foundation.org,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Subject: [Patch v2 1/3] fs: add filp_clone_open API
Date: Thu, 25 Feb 2016 11:36:48 -0800	[thread overview]
Message-ID: <1456429008.2377.4.camel@HansenPartnership.com> (raw)
In-Reply-To: <1456428890.2377.2.camel@HansenPartnership.com>

I need an API that allows me to obtain a clone of the current file
pointer to pass in to an exec handler.  I've labelled this as an
internal API because I can't see how it would be useful outside of the
fs subsystem.  The use case will be a persistent binfmt_misc handler.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
 fs/internal.h |  1 +
 fs/open.c     | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/fs/internal.h b/fs/internal.h
index b71deee..c8ca0c9 100644
--- a/fs/internal.h
+++ b/fs/internal.h
@@ -108,6 +108,7 @@ extern long do_handle_open(int mountdirfd,
 			   struct file_handle __user *ufh, int open_flag);
 extern int open_check_o_direct(struct file *f);
 extern int vfs_open(const struct path *, struct file *, const struct cred *);
+extern struct file *filp_clone_open(struct file *);
 
 /*
  * inode.c
diff --git a/fs/open.c b/fs/open.c
index 55bdc75..bb7ffd6 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1004,6 +1004,26 @@ struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt,
 }
 EXPORT_SYMBOL(file_open_root);
 
+struct file *filp_clone_open(struct file *oldfile)
+{
+	struct file *file;
+	int retval;
+
+	file = get_empty_filp();
+	if (IS_ERR(file))
+		return file;
+
+	file->f_flags = oldfile->f_flags;
+	retval = vfs_open(&oldfile->f_path, file, oldfile->f_cred);
+	if (retval) {
+		fput(file);
+		return ERR_PTR(retval);
+	}
+
+	return file;
+}
+EXPORT_SYMBOL(filp_clone_open);
+
 long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
 {
 	struct open_flags op;
-- 
2.6.2


  parent reply	other threads:[~2016-02-25 19:36 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 19:34 [Patch v2 0/3] allow the creation of architecture emulation containers where the emulator binary is outside the container James Bottomley
     [not found] ` <1456428890.2377.2.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2016-02-25 19:36   ` [Patch v2 1/3] fs: add filp_clone_open API James Bottomley
2016-02-25 19:37   ` [Patch v2 2/3] binfmt_misc: add persistent opened binary handler for containers James Bottomley
2016-02-25 19:38   ` [Patch v2 3/3] binfmt_misc: add F option description to documentation James Bottomley
2016-02-25 19:38     ` James Bottomley
     [not found]     ` <1456429136.2377.7.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2016-02-29  5:32       ` Randy Dunlap
2016-02-29  5:32     ` Randy Dunlap
2016-02-25 19:36 ` James Bottomley [this message]
     [not found]   ` <1456429008.2377.4.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2016-03-08  6:19     ` [Patch v2 1/3] fs: add filp_clone_open API Serge E. Hallyn
2016-03-08  6:19       ` Serge E. Hallyn
2016-03-08  9:17     ` Mateusz Guzik
2016-03-08  9:17       ` Mateusz Guzik
2016-03-08 11:19       ` James Bottomley
2016-03-08 11:19       ` James Bottomley
2016-02-25 19:37 ` [Patch v2 2/3] binfmt_misc: add persistent opened binary handler for containers James Bottomley
     [not found]   ` <1456429071.2377.5.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2016-03-08  8:10     ` Serge E. Hallyn
2016-03-08  8:10   ` Serge E. Hallyn

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=1456429008.2377.4.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=containers@lists.linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.