diff options
Diffstat (limited to 'fs/anon_inodes.c')
-rw-r--r-- | fs/anon_inodes.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c index 977ef208c051..3662dd44896b 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 | */ |
70 | int anon_inode_getfd(const char *name, const struct file_operations *fops, | 71 | int 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; |
@@ -115,7 +116,7 @@ int anon_inode_getfd(const char *name, const struct file_operations *fops, | |||
115 | file->f_mapping = anon_inode_inode->i_mapping; | 116 | file->f_mapping = anon_inode_inode->i_mapping; |
116 | 117 | ||
117 | file->f_pos = 0; | 118 | file->f_pos = 0; |
118 | file->f_flags = O_RDWR; | 119 | file->f_flags = O_RDWR | (flags & O_NONBLOCK); |
119 | file->f_version = 0; | 120 | file->f_version = 0; |
120 | file->private_data = priv; | 121 | file->private_data = priv; |
121 | 122 | ||