Commit 936ced41 authored by Arjun Roy's avatar Arjun Roy Committed by Jakub Kicinski
Browse files

net-zerocopy: Fast return if inq < PAGE_SIZE



Sometimes, we may call tcp receive zerocopy when inq is 0,
or inq < PAGE_SIZE, in which case we cannot remap pages. In this case,
simply return the appropriate hint for regular copying without taking
mmap_sem.

Signed-off-by: default avatarArjun Roy <arjunroy@google.com>
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 98917cf0
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1904,6 +1904,14 @@ static int tcp_zerocopy_receive(struct sock *sk,

	sock_rps_record_flow(sk);

	if (inq < PAGE_SIZE) {
		zc->length = 0;
		zc->recv_skip_hint = inq;
		if (!inq && sock_flag(sk, SOCK_DONE))
			return -EIO;
		return 0;
	}

	mmap_read_lock(current->mm);

	vma = find_vma(current->mm, address);