[PATCH net 1/1] tcp: reject non zerocopy devmem tx

Pavel Begunkov <[email protected]>
Newsgroups org.kernel.vger.netdev
Message-ID <ddb2d77e49974232b7f379851dc9809c953a6649.1787396169.git.asml.silence@gmail.com>
Device memory send doesn't work without zero copy, prevent
tcp_sendmsg_locked() from falling back to the copy mode for devmem in
case there is no NETIF_F_SG. Currently, it'd try to copy from iovec
filled with dma-buf offsets, which would normally fail with EFAULT, but
it's still better to handle it more explicitly. A recent net-iov / page
mixing fix also needs this patch.

Fixes: bd61848900bff ("net: devmem: Implement TX path")
Signed-off-by: Pavel Begunkov <[email protected]>
---
 net/ipv4/tcp.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 455441f1b694..f403830af65f 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1162,6 +1162,10 @@ int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size)
 					binding = NULL;
 					goto out_err;
 				}
+				if (zc != MSG_ZEROCOPY) {
+					err = -EOPNOTSUPP;
+					goto out_err;
+				}
 			}
 		}
 	} else if (unlikely(msg->msg_flags & MSG_SPLICE_PAGES) && size) {
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.