Merge tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / include / linux / uio.h
index 82c3c3e..5265024 100644 (file)
@@ -47,6 +47,7 @@ struct iov_iter {
                };
                loff_t xarray_start;
        };
+       size_t truncated;
 };
 
 static inline enum iter_type iov_iter_type(const struct iov_iter *i)
@@ -254,8 +255,10 @@ static inline void iov_iter_truncate(struct iov_iter *i, u64 count)
         * conversion in assignement is by definition greater than all
         * values of size_t, including old i->count.
         */
-       if (i->count > count)
+       if (i->count > count) {
+               i->truncated += i->count - count;
                i->count = count;
+       }
 }
 
 /*
@@ -264,6 +267,7 @@ static inline void iov_iter_truncate(struct iov_iter *i, u64 count)
  */
 static inline void iov_iter_reexpand(struct iov_iter *i, size_t count)
 {
+       i->truncated -= count - i->count;
        i->count = count;
 }