aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-07-24 00:29:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-24 13:47:27 -0400
commit7d9dbca34240ebb6ff88d8a29c6c7bffd098f0c1 (patch)
tree7e3226a4d885f5e4444fbe01a08c51b0b33b2cc7 /fs
parentc019bbc612f6633ede7ed67725cbf68de45ae8a4 (diff)
flag parameters: anon_inode_getfd extension
This patch just extends the anon_inode_getfd interface to take an additional parameter with a flag value. The flag value is passed on to get_unused_fd_flags in anticipation for a use with the O_CLOEXEC flag. No actual semantic changes here, the changed callers all pass 0 for now. [akpm@linux-foundation.org: KVM fix] Signed-off-by: Ulrich Drepper <drepper@redhat.com> Acked-by: Davide Libenzi <davidel@xmailserver.org> Cc: Michael Kerrisk <mtk.manpages@googlemail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/anon_inodes.c9
-rw-r--r--fs/eventfd.c2
-rw-r--r--fs/eventpoll.c2
-rw-r--r--fs/signalfd.c3
-rw-r--r--fs/timerfd.c2
5 files changed, 10 insertions, 8 deletions
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
index 977ef208c051..1a4eee620b0d 100644
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -58,8 +58,9 @@ static struct dentry_operations anon_inodefs_dentry_operations = {
58 * of the file 58 * of the file
59 * 59 *
60 * @name: [in] name of the "class" of the new file 60 * @name: [in] name of the "class" of the new file
61 * @fops [in] file operations for the new file 61 * @fops: [in] file operations for the new file
62 * @priv [in] private data for the new file (will be file's private_data) 62 * @priv: [in] private data for the new file (will be file's private_data)
63 * @flags: [in] flags
63 * 64 *
64 * Creates a new file by hooking it on a single inode. This is useful for files 65 * Creates a new file by hooking it on a single inode. This is useful for files
65 * that do not need to have a full-fledged inode in order to operate correctly. 66 * that do not need to have a full-fledged inode in order to operate correctly.
@@ -68,7 +69,7 @@ static struct dentry_operations anon_inodefs_dentry_operations = {
68 * setup. Returns new descriptor or -error. 69 * setup. Returns new descriptor or -error.
69 */ 70 */
70int anon_inode_getfd(const char *name, const struct file_operations *fops, 71int anon_inode_getfd(const char *name, const struct file_operations *fops,
71 void *priv) 72 void *priv, int flags)
72{ 73{
73 struct qstr this; 74 struct qstr this;
74 struct dentry *dentry; 75 struct dentry *dentry;
@@ -78,7 +79,7 @@ int anon_inode_getfd(const char *name, const struct file_operations *fops,
78 if (IS_ERR(anon_inode_inode)) 79 if (IS_ERR(anon_inode_inode))
79 return -ENODEV; 80 return -ENODEV;
80 81
81 error = get_unused_fd(); 82 error = get_unused_fd_flags(flags);
82 if (error < 0) 83 if (error < 0)
83 return error; 84 return error;
84 fd = error; 85 fd = error;
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 343942deeec1..6094265ca409 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -214,7 +214,7 @@ asmlinkage long sys_eventfd(unsigned int count)
214 * When we call this, the initialization must be complete, since 214 * When we call this, the initialization must be complete, since
215 * anon_inode_getfd() will install the fd. 215 * anon_inode_getfd() will install the fd.
216 */ 216 */
217 fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx); 217 fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx, 0);
218 if (fd < 0) 218 if (fd < 0)
219 kfree(ctx); 219 kfree(ctx);
220 return fd; 220 return fd;
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 990c01d2d66b..9392dd968125 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1068,7 +1068,7 @@ asmlinkage long sys_epoll_create(int size)
1068 * Creates all the items needed to setup an eventpoll file. That is, 1068 * Creates all the items needed to setup an eventpoll file. That is,
1069 * a file structure and a free file descriptor. 1069 * a file structure and a free file descriptor.
1070 */ 1070 */
1071 fd = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep); 1071 fd = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep, 0);
1072 if (fd < 0) 1072 if (fd < 0)
1073 ep_free(ep); 1073 ep_free(ep);
1074 1074
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 619725644c75..ddb328b74bde 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -227,7 +227,8 @@ asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, size_t sizemas
227 * When we call this, the initialization must be complete, since 227 * When we call this, the initialization must be complete, since
228 * anon_inode_getfd() will install the fd. 228 * anon_inode_getfd() will install the fd.
229 */ 229 */
230 ufd = anon_inode_getfd("[signalfd]", &signalfd_fops, ctx); 230 ufd = anon_inode_getfd("[signalfd]", &signalfd_fops, ctx,
231 0);
231 if (ufd < 0) 232 if (ufd < 0)
232 kfree(ctx); 233 kfree(ctx);
233 } else { 234 } else {
diff --git a/fs/timerfd.c b/fs/timerfd.c
index d87d354ec424..77c2bc92cbee 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -198,7 +198,7 @@ asmlinkage long sys_timerfd_create(int clockid, int flags)
198 ctx->clockid = clockid; 198 ctx->clockid = clockid;
199 hrtimer_init(&ctx->tmr, clockid, HRTIMER_MODE_ABS); 199 hrtimer_init(&ctx->tmr, clockid, HRTIMER_MODE_ABS);
200 200
201 ufd = anon_inode_getfd("[timerfd]", &timerfd_fops, ctx); 201 ufd = anon_inode_getfd("[timerfd]", &timerfd_fops, ctx, 0);
202 if (ufd < 0) 202 if (ufd < 0)
203 kfree(ctx); 203 kfree(ctx);
204 204