fs: don't allow splice read/write without explicit ops
[linux-2.6-microblaze.git] / include / linux / fs.h
index 2df72de..d33cc3e 100644 (file)
@@ -518,6 +518,16 @@ static inline void i_mmap_unlock_read(struct address_space *mapping)
        up_read(&mapping->i_mmap_rwsem);
 }
 
+static inline void i_mmap_assert_locked(struct address_space *mapping)
+{
+       lockdep_assert_held(&mapping->i_mmap_rwsem);
+}
+
+static inline void i_mmap_assert_write_locked(struct address_space *mapping)
+{
+       lockdep_assert_held_write(&mapping->i_mmap_rwsem);
+}
+
 /*
  * Might pages of this file be mapped into userspace?
  */
@@ -1884,8 +1894,6 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
 
 extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
 extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
-extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
-               unsigned long, loff_t *, rwf_t);
 extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
                                   loff_t, size_t, unsigned int);
 extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in,
@@ -1946,27 +1954,27 @@ struct super_operations {
 /*
  * Inode flags - they have no relation to superblock flags now
  */
-#define S_SYNC         1       /* Writes are synced at once */
-#define S_NOATIME      2       /* Do not update access times */
-#define S_APPEND       4       /* Append-only file */
-#define S_IMMUTABLE    8       /* Immutable file */
-#define S_DEAD         16      /* removed, but still open directory */
-#define S_NOQUOTA      32      /* Inode is not counted to quota */
-#define S_DIRSYNC      64      /* Directory modifications are synchronous */
-#define S_NOCMTIME     128     /* Do not update file c/mtime */
-#define S_SWAPFILE     256     /* Do not truncate: swapon got its bmaps */
-#define S_PRIVATE      512     /* Inode is fs-internal */
-#define S_IMA          1024    /* Inode has an associated IMA struct */
-#define S_AUTOMOUNT    2048    /* Automount/referral quasi-directory */
-#define S_NOSEC                4096    /* no suid or xattr security attributes */
+#define S_SYNC         (1 << 0)  /* Writes are synced at once */
+#define S_NOATIME      (1 << 1)  /* Do not update access times */
+#define S_APPEND       (1 << 2)  /* Append-only file */
+#define S_IMMUTABLE    (1 << 3)  /* Immutable file */
+#define S_DEAD         (1 << 4)  /* removed, but still open directory */
+#define S_NOQUOTA      (1 << 5)  /* Inode is not counted to quota */
+#define S_DIRSYNC      (1 << 6)  /* Directory modifications are synchronous */
+#define S_NOCMTIME     (1 << 7)  /* Do not update file c/mtime */
+#define S_SWAPFILE     (1 << 8)  /* Do not truncate: swapon got its bmaps */
+#define S_PRIVATE      (1 << 9)  /* Inode is fs-internal */
+#define S_IMA          (1 << 10) /* Inode has an associated IMA struct */
+#define S_AUTOMOUNT    (1 << 11) /* Automount/referral quasi-directory */
+#define S_NOSEC                (1 << 12) /* no suid or xattr security attributes */
 #ifdef CONFIG_FS_DAX
-#define S_DAX          8192    /* Direct Access, avoiding the page cache */
+#define S_DAX          (1 << 13) /* Direct Access, avoiding the page cache */
 #else
-#define S_DAX          0       /* Make all the DAX code disappear */
+#define S_DAX          0         /* Make all the DAX code disappear */
 #endif
-#define S_ENCRYPTED    16384   /* Encrypted file (using fs/crypto/) */
-#define S_CASEFOLD     32768   /* Casefolded file */
-#define S_VERITY       65536   /* Verity file (using fs/verity/) */
+#define S_ENCRYPTED    (1 << 14) /* Encrypted file (using fs/crypto/) */
+#define S_CASEFOLD     (1 << 15) /* Casefolded file */
+#define S_VERITY       (1 << 16) /* Verity file (using fs/verity/) */
 
 /*
  * Note that nosuid etc flags are inode-specific: setting some file-system
@@ -2650,7 +2658,7 @@ static inline void filemap_set_wb_err(struct address_space *mapping, int err)
 }
 
 /**
- * filemap_check_wb_error - has an error occurred since the mark was sampled?
+ * filemap_check_wb_err - has an error occurred since the mark was sampled?
  * @mapping: mapping to check for writeback errors
  * @since: previously-sampled errseq_t
  *
@@ -3312,7 +3320,7 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
        if (flags & RWF_NOWAIT) {
                if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
                        return -EOPNOTSUPP;
-               kiocb_flags |= IOCB_NOWAIT;
+               kiocb_flags |= IOCB_NOWAIT | IOCB_NOIO;
        }
        if (flags & RWF_HIPRI)
                kiocb_flags |= IOCB_HIPRI;