Diffstat (limited to 'fs/open.c')
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/open.c b/fs/open.c
index f1c2f855fd43..a00350018a47 100644
@@ -1215,3 +1215,21 @@ int nonseekable_open(struct inode *inode, struct file *filp)
+ * stream_open is used by subsystems that want stream-like file descriptors.
+ * Such file descriptors are not seekable and don't have notion of position
+ * (file.f_pos is always 0). Contrary to file descriptors of other regular
+ * files, .read() and .write() can run simultaneously.
+ * stream_open never fails and is marked to return int so that it could be
+ * directly used as file_operations.open .
+int stream_open(struct inode *inode, struct file *filp)
+ filp->f_mode &= ~(FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE | FMODE_ATOMIC_POS);
+ filp->f_mode |= FMODE_STREAM;
+ return 0;