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 > >