switch sctp_user_addto_chunk() and sctp_datamsg_from_user() to passing iov_iter
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -1491,26 +1491,26 @@ static void *sctp_addto_chunk_fixed(struct sctp_chunk *chunk,
|
||||
* chunk is not big enough.
|
||||
* Returns a kernel err value.
|
||||
*/
|
||||
int sctp_user_addto_chunk(struct sctp_chunk *chunk, int off, int len,
|
||||
struct iovec *data)
|
||||
int sctp_user_addto_chunk(struct sctp_chunk *chunk, int len,
|
||||
struct iov_iter *from)
|
||||
{
|
||||
__u8 *target;
|
||||
int err = 0;
|
||||
void *target;
|
||||
ssize_t copied;
|
||||
|
||||
/* Make room in chunk for data. */
|
||||
target = skb_put(chunk->skb, len);
|
||||
|
||||
/* Copy data (whole iovec) into chunk */
|
||||
if ((err = memcpy_fromiovecend(target, data, off, len)))
|
||||
goto out;
|
||||
copied = copy_from_iter(target, len, from);
|
||||
if (copied != len)
|
||||
return -EFAULT;
|
||||
|
||||
/* Adjust the chunk length field. */
|
||||
chunk->chunk_hdr->length =
|
||||
htons(ntohs(chunk->chunk_hdr->length) + len);
|
||||
chunk->chunk_end = skb_tail_pointer(chunk->skb);
|
||||
|
||||
out:
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Helper function to assign a TSN if needed. This assumes that both
|
||||
|
Reference in New Issue
Block a user