+static int
+ksocknal_lib_sendpage(struct socket *sock, struct bio_vec *kiov, int msgflg)
+{
+#ifdef MSG_SPLICE_PAGES
+ struct msghdr msg = {.msg_flags = msgflg | MSG_SPLICE_PAGES};
+
+ iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, kiov, 1, kiov->bv_len);
+
+ return sock_sendmsg(sock, &msg);
+#else
+ struct sock *sk = sock->sk;
+ struct page *page = kiov->bv_page;
+ int offset = kiov->bv_offset;
+ int fragsize = kiov->bv_len;
+
+ return sk->sk_prot->sendpage(sk, page, offset, fragsize, msgflg);
+#endif
+}
+