On Mon, Sep 21, 2020 at 03:21:35PM +0000, David Laight wrote: > You really don't want to be looping through the array twice. Profiles, please. > I think the 'length' check can be optimised to do something like: > for (...) { > ssize_t len = (ssize_t)iov[seg].iov_len; > ret += len; > len_hi += (unsigned long)len >> 20; > } > if (len_hi) { > /* Something potentially odd in the lengths. > * Might just be a very long fragment. > * Check the individial values. */ > Add the exiting loop here. > } Far too ugly to live.