mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[iov_iter] new primitives - copy_from_iter_full() and friends
copy_from_iter_full(), copy_from_iter_full_nocache() and csum_and_copy_from_iter_full() - counterparts of copy_from_iter() et.al., advancing iterator only in case of successful full copy and returning whether it had been successful or not. Convert some obvious users. *NOTE* - do not blindly assume that something is a good candidate for those unless you are sure that not advancing iov_iter in failure case is the right thing in this case. Anything that does short read/short write kind of stuff (or is in a loop, etc.) is unlikely to be a good one. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
e5517c2a5a
commit
cbbd26b8b1
17 changed files with 121 additions and 39 deletions
|
@ -268,7 +268,7 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m,
|
|||
__skb_queue_tail(list, skb);
|
||||
skb_copy_to_linear_data(skb, mhdr, mhsz);
|
||||
pktpos = skb->data + mhsz;
|
||||
if (copy_from_iter(pktpos, dsz, &m->msg_iter) == dsz)
|
||||
if (copy_from_iter_full(pktpos, dsz, &m->msg_iter))
|
||||
return dsz;
|
||||
rc = -EFAULT;
|
||||
goto error;
|
||||
|
@ -299,7 +299,7 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m,
|
|||
if (drem < pktrem)
|
||||
pktrem = drem;
|
||||
|
||||
if (copy_from_iter(pktpos, pktrem, &m->msg_iter) != pktrem) {
|
||||
if (!copy_from_iter_full(pktpos, pktrem, &m->msg_iter)) {
|
||||
rc = -EFAULT;
|
||||
goto error;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue