tags 421911 +patch +fixed-upstream +etch thanks Hello,
I ran into this too with 2.6.18-5-686 (2.6.18.dfsg.1-17) and a Nokia 5310. dmesg shows: usb 2-1: new full speed USB device using uhci_hcd and address 2 usb 2-1: configuration #1 chosen from 1 choice drivers/usb/class/cdc-acm.c: Ignoring extra header, type -3, length 4 cdc_acm 2-1:1.1: ttyACM0: USB ACM device usbcore: registered new driver cdc_acm drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new driver cdc_ether rndis_host 2-1:1.9: RNDIS init failed, -110 usb%d: unregister 'rndis_host' usb-0000:00:1d.1-1, RNDIS device unregister_netdevice: device usb%d/c9719000 never was registered ------------[ cut here ]------------ kernel BUG at mm/slab.c:595! invalid opcode: 0000 [#1] SMP Modules linked in: rndis_host cdc_ether usbnet cdc_acm i915 drm rfcomm l2cap bluetooth ppdev parport_pc lp parport button ac battery ipt_REJECT ipt_TCPMSS xt_tcpmss xt_tcpudp iptable_filter ip_tables x_tables pppoe pppox ipv6 ppp_generic slhc i8xx_tco nls_iso8859_1 nls_cp437 vfat fat dm_snapshot dm_mirror dm_mod ide_generic pcmcia firmware_class joydev tsdev yenta_socket snd_intel8x0 snd_intel8x0m snd_pcm_oss snd_mixer_oss snd_ac97_codec snd_ac97_bus rsrc_nonstatic pcmcia_core snd_pcm snd_timer pegasus snd soundcore i2c_i801 shpchp pci_hotplug snd_page_alloc intel_agp agpgart i2c_core psmouse rtc serio_raw evdev pcspkr ext3 jbd mbcache ide_cd cdrom ide_disk 8139too piix 8139cp mii generic ide_core ehci_hcd uhci_hcd usbcore thermal processor fan CPU: 0 EIP: 0060:[<c0156d07>] Not tainted VLI EFLAGS: 00010006 (2.6.18-5-686 #1) EIP is at kfree+0x2e/0x65 eax: 80000824 ebx: c97192c0 ecx: defef7c0 edx: c112e240 esi: 00000282 edi: c9712b92 ebp: c9719000 esp: c378be18 ds: 007b es: 007b ss: 0068 Process modprobe (pid: 3901, ti=c378a000 task=cf157550 task.ti=c378a000) Stack: c97192c0 dfbef60e c9719006 dfbef01a c53bf200 dfbf36a0 ca096948 c6127800 ffffff92 defd1e00 00000000 00000000 00000001 00000001 00000001 00000001 dfbf3660 c53bf200 dfbf4520 dfbf4550 c0210c30 df85cba5 c53bf214 c53bf214 Call Trace: [<dfbef01a>] usbnet_probe+0x4ee/0x503 [usbnet] [<c0210c30>] __driver_attach+0x0/0x5d [<df85cba5>] usb_probe_interface+0x58/0x87 [usbcore] [<c0210b91>] driver_probe_device+0x42/0x8b [<c0210c68>] __driver_attach+0x38/0x5d [<c02106b2>] bus_for_each_dev+0x33/0x55 [<c0210afb>] driver_attach+0x11/0x13 [<c0210c30>] __driver_attach+0x0/0x5d [<c02103cb>] bus_add_driver+0x64/0xfd [<df85c9da>] usb_register_driver+0x60/0xbb [usbcore] [<c01358c1>] sys_init_module+0x16c3/0x1846 [<c0102c11>] sysenter_past_esp+0x56/0x79 [<c0102c11>] sysenter_past_esp+0x56/0x79 Code: 56 89 c7 53 74 58 9c 5e fa 8d 90 00 00 00 40 c1 ea 0c c1 e2 05 03 15 70 d3 36 c0 8b 02 f6 c4 40 74 03 8b 52 0c 8b 02 84 c0 78 08 <0f> 0b 53 02 81 a0 29 c0 89 e0 8b 4a 18 25 00 e0 ff ff 8b 40 10 EIP: [<c0156d07>] kfree+0x2e/0x65 SS:ESP 0068:c378be18 <6>usb 2-1: USB disconnect, address 2 Search for the slab line brings up http://bugzilla.kernel.org/show_bug.cgi?id=7201 and the fix below which applies and works with linux-source-2.6.18 (2.6.18.dfsg.1-17) when built with config-2.6.18-5-686. Please apply this to future etch updates. -Mikko From: Daniel Gollub <[EMAIL PROTECTED]> Date: Tue, 16 Jan 2007 10:03:01 +0000 (+0100) Subject: USB: rndis_host: fix crash while probing a Nokia S60 mobile X-Git-Tag: v2.6.20-rc6~50^2~6 X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=deb31f1764e0a11bcfe8d44e0658f83d83860e84 USB: rndis_host: fix crash while probing a Nokia S60 mobile Bug fix for driver rndis_host which fixes rndis_host probing certain Nokia S60 (Series 60) mobiles. While the rndis_host get probed by usbnet and tries to bind the Nokia mobile the bind is going to fail. The rndis_host module tries to release the device, in a wrong way, which cause the oops. Fixes Bugzilla #7201 Signed-off-by: Daniel Gollub <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> --- diff --git a/drivers/usb/net/rndis_host.c b/drivers/usb/net/rndis_host.c index ea5f44d..a322a16 100644 --- a/drivers/usb/net/rndis_host.c +++ b/drivers/usb/net/rndis_host.c @@ -379,6 +379,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) { int retval; struct net_device *net = dev->net; + struct cdc_state *info = (void *) &dev->data; union { void *buf; struct rndis_msg_hdr *header; @@ -397,7 +398,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) return -ENOMEM; retval = usbnet_generic_cdc_bind(dev, intf); if (retval < 0) - goto done; + goto fail; net->hard_header_len += sizeof (struct rndis_data_hdr); @@ -412,10 +413,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) if (unlikely(retval < 0)) { /* it might not even be an RNDIS device!! */ dev_err(&intf->dev, "RNDIS init failed, %d\n", retval); -fail: - usb_driver_release_interface(driver_of(intf), - ((struct cdc_state *)&(dev->data))->data); - goto done; + goto fail_and_release; } dev->hard_mtu = le32_to_cpu(u.init_c->max_transfer_size); /* REVISIT: peripheral "alignment" request is ignored ... */ @@ -431,7 +429,7 @@ fail: retval = rndis_command(dev, u.header); if (unlikely(retval < 0)) { dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval); - goto fail; + goto fail_and_release; } tmp = le32_to_cpu(u.get_c->offset); if (unlikely((tmp + 8) > (1024 - ETH_ALEN) @@ -439,7 +437,7 @@ fail: dev_err(&intf->dev, "rndis ethaddr off %d len %d ?\n", tmp, le32_to_cpu(u.get_c->len)); retval = -EDOM; - goto fail; + goto fail_and_release; } memcpy(net->dev_addr, tmp + (char *)&u.get_c->request_id, ETH_ALEN); @@ -455,11 +453,18 @@ fail: retval = rndis_command(dev, u.header); if (unlikely(retval < 0)) { dev_err(&intf->dev, "rndis set packet filter, %d\n", retval); - goto fail; + goto fail_and_release; } retval = 0; -done: + + kfree(u.buf); + return retval; + +fail_and_release: + usb_set_intfdata(info->data, NULL); + usb_driver_release_interface(driver_of(intf), info->data); +fail: kfree(u.buf); return retval; } -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]