Sorry, but didn't work, same dmesg with bad cdc descriptors and usb0
interface is not created.
I tested with 3.2.0-rc7 kernel.

Regards, iker

2012/1/10 Bjørn Mork <bj...@mork.no>

> Some RNDIS devices include a bogus CDC Union descriptor pointing
> to non-existing interfaces.  The RNDIS code is already prepared
> to handle devices without a CDC Union descriptor, so we can just
> ignore it.
>
> Cc: Markus Kolb <linux-201...@tower-net.de>
> Cc: Iker Salmón San Millán <sha...@esdebian.org>
> Cc: Jonathan Nieder <jrnie...@gmail.com>
> Cc: Oliver Neukum <oli...@neukum.name>
> Cc: 655...@bugs.debian.org
> Cc: sta...@vger.kernel.org
> Signed-off-by: Bjørn Mork <bj...@mork.no>
> ---
> How about this, which IMHO is less intrusive? Only build-tested, as I
> don't have any of the failing devices, so it will obviously need
> testing from anyone with such a device.
>
>  drivers/net/usb/cdc_ether.c |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
> index 41a61ef..2109f34 100644
> --- a/drivers/net/usb/cdc_ether.c
> +++ b/drivers/net/usb/cdc_ether.c
> @@ -195,7 +195,15 @@ int usbnet_generic_cdc_bind(struct usbnet *dev,
> struct usb_interface *intf)
>                                        info->control,
>                                        info->u->bSlaveInterface0,
>                                        info->data);
> -                               goto bad_desc;
> +                               /* Fallback to guessing for rndis
> +                                * class devices with bogus union
> +                                * descriptor.
> +                                * Fixes some Samsung Android devices
> +                                */
> +                               if (rndis)
> +                                       info->u = NULL;
> +                               else
> +                                       goto bad_desc;
>                        }
>                        if (info->control != intf) {
>                                dev_dbg(&intf->dev, "bogus CDC Union\n");
> --
> 1.7.7.3
>
>

Reply via email to