Re: [PATCH v3 net-next 10/19] tls: Fix zerocopy_from_iter iov handling
On 7/12/2018 12:46 PM, Dave Watson wrote: On 07/11/18 10:54 PM, Boris Pismenny wrote: zerocopy_from_iter iterates over the message, but it doesn't revert the updates made by the iov iteration. This patch fixes it. Now, the iov can be used after calling zerocopy_from_iter. This breaks tests (which I will send up as selftests shortly). I believe we are depending on zerocopy_from_iter to advance the iter, and if zerocopy_from_iter returns a failure, then we revert it. So you can revert it here if you want, but you'd have to advance it if we actually used it instead. Only in the send side do we depend on this semantic. On the receive side, we need to revert it in case we go to the fallback flow.
Re: [PATCH v3 net-next 10/19] tls: Fix zerocopy_from_iter iov handling
On 07/11/18 10:54 PM, Boris Pismenny wrote: > zerocopy_from_iter iterates over the message, but it doesn't revert the > updates made by the iov iteration. This patch fixes it. Now, the iov can > be used after calling zerocopy_from_iter. This breaks tests (which I will send up as selftests shortly). I believe we are depending on zerocopy_from_iter to advance the iter, and if zerocopy_from_iter returns a failure, then we revert it. So you can revert it here if you want, but you'd have to advance it if we actually used it instead.
[PATCH v3 net-next 10/19] tls: Fix zerocopy_from_iter iov handling
zerocopy_from_iter iterates over the message, but it doesn't revert the updates made by the iov iteration. This patch fixes it. Now, the iov can be used after calling zerocopy_from_iter. Fixes: 3c4d75591 ("tls: kernel TLS support") Signed-off-by: Boris Pismenny --- net/tls/tls_sw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 2a6ba0f..37ac220 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -318,6 +318,7 @@ static int zerocopy_from_iter(struct sock *sk, struct iov_iter *from, out: *size_used = size; *pages_used = num_elem; + iov_iter_revert(from, size); return rc; } -- 1.8.3.1