On Wed, Jun 22, 2022 at 05:15:20AM +0100, Al Viro wrote: > Unlike other copying operations on ITER_PIPE, copy_mc_to_iter() can > result in a short copy. In that case we need to trim the unused > buffers, as well as the length of partially filled one - it's not > enough to set ->head, ->iov_offset and ->count to reflect how > much had we copied. Not hard to fix, fortunately... > > I'd put a helper (pipe_discard_from(pipe, head)) into pipe_fs_i.h, > rather than iov_iter.c - it has nothing to do with iov_iter and > having it will allow us to avoid an ugly kludge in fs/splice.c. > We could put it into lib/iov_iter.c for now and move it later, > but I don't see the point going that way... > > Fixes: ca146f6f091e "lib/iov_iter: Fix pipe handling in _copy_to_iter_mcsafe()" > Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > --- Does that need a CC: stable@xxxxxxxxxx # 4.19+ or sm? Reviewed-by: Christian Brauner (Microsoft) <brauner@xxxxxxxxxx>