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]