Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git] / fs / read_write.c
index cbdccaf032c600fd1575b06c9dc7edc47b0e957c..a2b9a47235c5ba48b4db2bf81d03c1579b562f79 100644 (file)
@@ -33,7 +33,7 @@ const struct file_operations generic_ro_fops = {
 
 EXPORT_SYMBOL(generic_ro_fops);
 
-static inline int unsigned_offsets(struct file *file)
+static inline bool unsigned_offsets(struct file *file)
 {
        return file->f_mode & FMODE_UNSIGNED_OFFSET;
 }
@@ -656,7 +656,7 @@ unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to)
 EXPORT_SYMBOL(iov_shorten);
 
 static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
-               loff_t *ppos, int type, int flags)
+               loff_t *ppos, int type, rwf_t flags)
 {
        struct kiocb kiocb;
        ssize_t ret;
@@ -678,7 +678,7 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
 
 /* Do it by hand, with file-ops */
 static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
-               loff_t *ppos, int type, int flags)
+               loff_t *ppos, int type, rwf_t flags)
 {
        ssize_t ret = 0;
 
@@ -894,7 +894,7 @@ out:
 #endif
 
 static ssize_t do_iter_read(struct file *file, struct iov_iter *iter,
-               loff_t *pos, int flags)
+               loff_t *pos, rwf_t flags)
 {
        size_t tot_len;
        ssize_t ret = 0;
@@ -922,7 +922,7 @@ out:
 }
 
 ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
-               int flags)
+               rwf_t flags)
 {
        if (!file->f_op->read_iter)
                return -EINVAL;
@@ -931,7 +931,7 @@ ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
 EXPORT_SYMBOL(vfs_iter_read);
 
 static ssize_t do_iter_write(struct file *file, struct iov_iter *iter,
-               loff_t *pos, int flags)
+               loff_t *pos, rwf_t flags)
 {
        size_t tot_len;
        ssize_t ret = 0;
@@ -958,7 +958,7 @@ static ssize_t do_iter_write(struct file *file, struct iov_iter *iter,
 }
 
 ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
-               int flags)
+               rwf_t flags)
 {
        if (!file->f_op->write_iter)
                return -EINVAL;
@@ -967,7 +967,7 @@ ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
 EXPORT_SYMBOL(vfs_iter_write);
 
 ssize_t vfs_readv(struct file *file, const struct iovec __user *vec,
-                 unsigned long vlen, loff_t *pos, int flags)
+                 unsigned long vlen, loff_t *pos, rwf_t flags)
 {
        struct iovec iovstack[UIO_FASTIOV];
        struct iovec *iov = iovstack;
@@ -984,7 +984,7 @@ ssize_t vfs_readv(struct file *file, const struct iovec __user *vec,
 }
 
 static ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
-                  unsigned long vlen, loff_t *pos, int flags)
+                  unsigned long vlen, loff_t *pos, rwf_t flags)
 {
        struct iovec iovstack[UIO_FASTIOV];
        struct iovec *iov = iovstack;
@@ -1002,7 +1002,7 @@ static ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
 }
 
 static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec,
-                       unsigned long vlen, int flags)
+                       unsigned long vlen, rwf_t flags)
 {
        struct fd f = fdget_pos(fd);
        ssize_t ret = -EBADF;
@@ -1022,7 +1022,7 @@ static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec,
 }
 
 static ssize_t do_writev(unsigned long fd, const struct iovec __user *vec,
-                        unsigned long vlen, int flags)
+                        unsigned long vlen, rwf_t flags)
 {
        struct fd f = fdget_pos(fd);
        ssize_t ret = -EBADF;
@@ -1048,7 +1048,7 @@ static inline loff_t pos_from_hilo(unsigned long high, unsigned long low)
 }
 
 static ssize_t do_preadv(unsigned long fd, const struct iovec __user *vec,
-                        unsigned long vlen, loff_t pos, int flags)
+                        unsigned long vlen, loff_t pos, rwf_t flags)
 {
        struct fd f;
        ssize_t ret = -EBADF;
@@ -1071,7 +1071,7 @@ static ssize_t do_preadv(unsigned long fd, const struct iovec __user *vec,
 }
 
 static ssize_t do_pwritev(unsigned long fd, const struct iovec __user *vec,
-                         unsigned long vlen, loff_t pos, int flags)
+                         unsigned long vlen, loff_t pos, rwf_t flags)
 {
        struct fd f;
        ssize_t ret = -EBADF;
@@ -1115,7 +1115,7 @@ SYSCALL_DEFINE5(preadv, unsigned long, fd, const struct iovec __user *, vec,
 
 SYSCALL_DEFINE6(preadv2, unsigned long, fd, const struct iovec __user *, vec,
                unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h,
-               int, flags)
+               rwf_t, flags)
 {
        loff_t pos = pos_from_hilo(pos_h, pos_l);
 
@@ -1135,7 +1135,7 @@ SYSCALL_DEFINE5(pwritev, unsigned long, fd, const struct iovec __user *, vec,
 
 SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const struct iovec __user *, vec,
                unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h,
-               int, flags)
+               rwf_t, flags)
 {
        loff_t pos = pos_from_hilo(pos_h, pos_l);
 
@@ -1148,7 +1148,7 @@ SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const struct iovec __user *, vec,
 #ifdef CONFIG_COMPAT
 static size_t compat_readv(struct file *file,
                           const struct compat_iovec __user *vec,
-                          unsigned long vlen, loff_t *pos, int flags)
+                          unsigned long vlen, loff_t *pos, rwf_t flags)
 {
        struct iovec iovstack[UIO_FASTIOV];
        struct iovec *iov = iovstack;
@@ -1168,7 +1168,7 @@ static size_t compat_readv(struct file *file,
 
 static size_t do_compat_readv(compat_ulong_t fd,
                                 const struct compat_iovec __user *vec,
-                                compat_ulong_t vlen, int flags)
+                                compat_ulong_t vlen, rwf_t flags)
 {
        struct fd f = fdget_pos(fd);
        ssize_t ret;
@@ -1194,7 +1194,7 @@ COMPAT_SYSCALL_DEFINE3(readv, compat_ulong_t, fd,
 
 static long do_compat_preadv64(unsigned long fd,
                                  const struct compat_iovec __user *vec,
-                                 unsigned long vlen, loff_t pos, int flags)
+                                 unsigned long vlen, loff_t pos, rwf_t flags)
 {
        struct fd f;
        ssize_t ret;
@@ -1232,7 +1232,7 @@ COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd,
 #ifdef __ARCH_WANT_COMPAT_SYS_PREADV64V2
 COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
                const struct compat_iovec __user *,vec,
-               unsigned long, vlen, loff_t, pos, int, flags)
+               unsigned long, vlen, loff_t, pos, rwf_t, flags)
 {
        return do_compat_preadv64(fd, vec, vlen, pos, flags);
 }
@@ -1241,7 +1241,7 @@ COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
 COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd,
                const struct compat_iovec __user *,vec,
                compat_ulong_t, vlen, u32, pos_low, u32, pos_high,
-               int, flags)
+               rwf_t, flags)
 {
        loff_t pos = ((loff_t)pos_high << 32) | pos_low;
 
@@ -1253,7 +1253,7 @@ COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd,
 
 static size_t compat_writev(struct file *file,
                            const struct compat_iovec __user *vec,
-                           unsigned long vlen, loff_t *pos, int flags)
+                           unsigned long vlen, loff_t *pos, rwf_t flags)
 {
        struct iovec iovstack[UIO_FASTIOV];
        struct iovec *iov = iovstack;
@@ -1275,7 +1275,7 @@ static size_t compat_writev(struct file *file,
 
 static size_t do_compat_writev(compat_ulong_t fd,
                                  const struct compat_iovec __user* vec,
-                                 compat_ulong_t vlen, int flags)
+                                 compat_ulong_t vlen, rwf_t flags)
 {
        struct fd f = fdget_pos(fd);
        ssize_t ret;
@@ -1300,7 +1300,7 @@ COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd,
 
 static long do_compat_pwritev64(unsigned long fd,
                                   const struct compat_iovec __user *vec,
-                                  unsigned long vlen, loff_t pos, int flags)
+                                  unsigned long vlen, loff_t pos, rwf_t flags)
 {
        struct fd f;
        ssize_t ret;
@@ -1338,7 +1338,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd,
 #ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64V2
 COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
                const struct compat_iovec __user *,vec,
-               unsigned long, vlen, loff_t, pos, int, flags)
+               unsigned long, vlen, loff_t, pos, rwf_t, flags)
 {
        return do_compat_pwritev64(fd, vec, vlen, pos, flags);
 }
@@ -1346,7 +1346,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
 
 COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd,
                const struct compat_iovec __user *,vec,
-               compat_ulong_t, vlen, u32, pos_low, u32, pos_high, int, flags)
+               compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags)
 {
        loff_t pos = ((loff_t)pos_high << 32) | pos_low;