[PATCH] restore skb_copy_datagram, removed from 2.6.11-rc2, breaking VMWare

From: Chip Salzenberg
Date: Sat Jan 22 2005 - 11:02:37 EST


Those of you who are using VMWare 4.5 will find that 2.6.11-rc2
removes the public function "skb_copy_datagram", breaking VMWare
(and any other module using that interface *sigh*).

The attached patch restores the (little harmless wrapper) function.
--
Chip Salzenberg - a.k.a. - <chip@xxxxxxxxx>
"What I cannot create, I do not understand." - Richard Feynman

--- x/include/linux/skbuff.h.old 2005-01-22 10:03:55.000000000 -0500
+++ y/include/linux/skbuff.h 2005-01-22 10:42:33.000000000 -0500
@@ -1087,4 +1087,6 @@
extern unsigned int datagram_poll(struct file *file, struct socket *sock,
struct poll_table_struct *wait);
+extern int skb_copy_datagram(const struct sk_buff *from,
+ int offset, char __user *to, int size);
extern int skb_copy_datagram_iovec(const struct sk_buff *from,
int offset, struct iovec *to,

--- x/net/core/datagram.c.old 2005-01-22 10:03:56.000000000 -0500
+++ y/net/core/datagram.c 2005-01-22 10:43:40.000000000 -0500
@@ -200,4 +200,17 @@
}

+/*
+ * Copy a datagram to a linear buffer.
+ */
+int skb_copy_datagram(const struct sk_buff *skb, int offset, char __user *to, int size)
+{
+ struct iovec iov = {
+ .iov_base = to,
+ .iov_len =size,
+ };
+
+ return skb_copy_datagram_iovec(skb, offset, &iov, size);
+}
+
/**
* skb_copy_datagram_iovec - Copy a datagram to an iovec.
@@ -478,4 +491,5 @@
EXPORT_SYMBOL(datagram_poll);
EXPORT_SYMBOL(skb_copy_and_csum_datagram_iovec);
+EXPORT_SYMBOL(skb_copy_datagram);
EXPORT_SYMBOL(skb_copy_datagram_iovec);
EXPORT_SYMBOL(skb_free_datagram);