From: Mikulas Patocka
> Sent: 11 January 2021 11:44
> On Mon, 11 Jan 2021, David Laight wrote:
> 
> > From: Al Viro <v...@ftp.linux.org.uk> On Behalf Of Al Viro
> > > Sent: 10 January 2021 16:20
...
...
> > >   while (iov_iter_count(to)) {
...
> > >           size = copy_to_iter(to, ptr, size);
> > >           if (unlikely(!size)) {
> > >                   r = -EFAULT;
> > >                   goto ret_r;
> > >           }
> > >
> > >           pos += size;
> > >           total += size;
> > >   } while (iov_iter_count(to));
> >
> > That isn't the best formed loop!
> >
> >     David
> 
> I removed the second "while" statement and fixed the arguments to
> copy_to_iter - other than that, Al's function works.

The extra while is easy to write and can be difficult to spot.
I've found them looking as the object code before now!

Oh - the error return for copy_to_iter() is wrong.
It should (probably) return 'total' if it is nonzero.

        David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, 
UK
Registration No: 1397386 (Wales)

Reply via email to