--- userif.c.orig	2005-03-17 09:22:35.179266320 +0100
+++ userif.c	2005-03-17 09:33:59.798453546 +0100
@@ -560,7 +560,8 @@
       u_int16_t csum16;
       
       skl = skb->h.raw - skb->data;
-      if (skb_copy_datagram(skb, 0, buf, skl)) {
+      struct iovec iov = { .iov_base = buf, .iov_len = skl };
+      if (skb_copy_datagram_iovec(skb, 0, &iov, skl)) {
 	 return -EFAULT;
       }
       csum = VNetCsumCopyDatagram(skb, skl, buf + skl);
@@ -572,7 +573,8 @@
 	 return -EFAULT;
       }
    } else {
-      if (skb_copy_datagram(skb, 0, buf, count)) {
+      struct iovec iov = { .iov_base = buf, .iov_len = count };
+      if (skb_copy_datagram_iovec(skb, 0, &iov, count)) {
 	 return -EFAULT;
       }
    }

