summaryrefslogtreecommitdiff
path: root/drivers/nvdimm
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2017-02-17 20:16:34 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-04-21 09:31:21 +0200
commit0c6172ccbb59e7fab17c19dc7c9a753c3429cfd7 (patch)
treec791377a004f5be8a6baf87273d83677ecc9a631 /drivers/nvdimm
parentff76ab9e03a50a4df26329e547e75f865a2bfa9f (diff)
make skb_copy_datagram_msg() et.al. preserve ->msg_iter on error
commit 3278682123811dd8ef07de5eb701fc4548fcebf2 upstream. Fixes the mess observed in e.g. rsync over a noisy link we'd been seeing since last Summer. What happens is that we copy part of a datagram before noticing a checksum mismatch. Datagram will be resent, all right, but we want the next try go into the same place, not after it... All this family of primitives (copy/checksum and copy a datagram into destination) is "all or nothing" sort of interface - either we get 0 (meaning that copy had been successful) or we get an error (and no way to tell how much had been copied before we ran into whatever error it had been). Make all of them leave iterator unadvanced in case of errors - all callers must be able to cope with that (an error might've been caught before the iterator had been advanced), it costs very little to arrange, it's safer for callers and actually fixes at least one bug in said callers. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/nvdimm')
0 files changed, 0 insertions, 0 deletions