2005-01-22 16:01:37

by Chip Salzenberg

[permalink] [raw]
Subject: [PATCH] restore skb_copy_datagram, removed from 2.6.11-rc2, breaking VMWare

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. - <[email protected]>
"What I cannot create, I do not understand." - Richard Feynman


Attachments:
(No filename) (384.00 B)
skb.diff (1.18 kB)
Download all attachments

2005-01-22 16:17:04

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] restore skb_copy_datagram, removed from 2.6.11-rc2, breaking VMWare

On Sat, Jan 22, 2005 at 11:01:29AM -0500, Chip Salzenberg wrote:
> 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.

Fix them to use the wrapped function instead.

2005-01-22 16:27:00

by Petr Vandrovec

[permalink] [raw]
Subject: Re: [PATCH] restore skb_copy_datagram, removed from 2.6.11-rc2, breaking VMWare

On Sat, Jan 22, 2005 at 11:01:29AM -0500, Chip Salzenberg wrote:
> 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*).

There is no need for it. It is fixed internally, and it will be
part of vmware-any-any-update89 and WS5.0 RC1.
Petr Vandrovec

> The attached patch restores the (little harmless wrapper) function.
> --
> Chip Salzenberg - a.k.a. - <[email protected]>
> "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);