From 557c0288b59a7b81513de4242b893654c70d636c Mon Sep 17 00:00:00 2001 From: miaofng Date: Tue, 29 Sep 2009 15:02:53 +0800 Subject: Staging: vt6656: fix the memory free bug in vntwusb_disconnect() This patch is used to solve the memory bug when people plug out the wusb card then plug in. Error logs are following: root@smdk2440:~# ifdown eth1 AP deauthed me, reason=2. Config_FileOperation file Not exist Zone=[1][J][P]!! WPA: Terminating root@smdk2440:~# ----> !!!!!!!!!!!!!!here plug out the wusbcard usb 1-1: USB disconnect, address 4 ----> !!!!!!!!!!!!!!!!!!!here plug in the wusb card usb 1-1: new full speed USB device using s3c2410-ohci and address 5 usb 1-1: New USB device found, idVendor=160a, idProduct=3184 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-1: Product: VNT USB-802.11 Wireless LAN Adapter usb 1-1: Manufacturer: VIA Networking Technologies, Inc. usb 1-1: configuration #1 chosen from 1 choice VIA Networking Wireless LAN USB Driver Ver. 1.19_12 Copyright (c) 2004 VIA Networking Technologies, Inc. kernel BUG at mm/slab.c:2974! Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c0004000 [00000000] *pgd=00000000 Internal error: Oops: 817 [#1] PREEMPT Modules linked in: vt6656_stage CPU: 0 Not tainted (2.6.32-rc2 #14) PC is at __bug+0x1c/0x28 LR is at __bug+0x18/0x28 pc : [] lr : [] psr: 40000093 sp : c3867c68 ip : c3867bd0 fp : c3866000 r10: c3800600 r9 : c3802430 r8 : 00000004 r7 : c3802428 r6 : c3802660 r5 : c3802420 r4 : a0000013 r3 : 00000000 r2 : c3866000 r1 : 00000003 r0 : 00000024 Flags: nZcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 0000717f Table: 330a8000 DAC: 00000017 Process khubd (pid: 152, stack limit = 0xc3866270) Stack: (0xc3867c68 to 0xc3868000) 7c60: c0093fdc c0094088 000000d0 000000d0 00000000 000080d0 7c80: 00000000 a0000013 c39ebec0 c3800600 000080d0 00000001 c03f13cc 00000006 7ca0: c02b36f0 c0094574 c0043428 0001c9de c39ebec0 c39ebea0 c3000c00 c02a6a84 7cc0: 89705f41 c3000c00 c39ebec0 c39ebea0 c3000c00 bf036f24 c39ebec8 00000006 7ce0: 00000000 c3000c00 c39ebec0 c39ebea0 c3000c00 bf036f24 c39ebec8 00000006 7d00: 00000000 bf003398 c00aa514 c3867d20 0000a1ff c00e1448 c39d9f84 c39aabe8 7d20: c3867d50 c00e1888 c39aabe8 c39ebea0 c39ebec0 bf036ebc c3000c00 bf036f24 7d40: 0000bec8 01000000 00000000 c39ebea0 c39ebec0 bf036ebc c3000c00 bf036f24 7d60: c39ebec8 00000000 00000000 c0223798 c39ebec0 c01daa14 bf036eec c3867da0 7d80: c045a4f8 c01da6e4 c39ebec0 00000000 c01daa14 c39ebec0 c3867da0 c01d9870 7da0: c38331a8 c39fcb94 c005b3b4 c39ebec0 c39ebec0 c39ebef4 00000000 c01da890 7dc0: c39ebec0 c39ebec0 c3000c00 c01d97f4 00000000 c01d8470 c39ebea0 c3000c68 7de0: 00000000 c3000c68 c3218a00 c3abcd20 00000001 c39ebec0 c39ebea0 c3000c00 7e00: 00000000 c3000c68 c3218a00 c3abcd20 00000001 c0221ee8 00000001 00000000 7e20: 00000000 00000000 00001388 00000000 c3000c04 c3000c68 c3bc29c0 00000001 7e40: c3bc29c4 00000001 c03f4af8 00000000 c39fe780 c3000c00 00000001 c045ab04 7e60: c3867eb8 c045a3bc c3000c70 00000000 00000000 c0229238 c3000c68 c0223210 7e80: c3000c00 c045aaf0 c045ab04 c0223230 c3000c68 c01daa14 c045ab04 c01da6e4 7ea0: c3000c68 00000000 c01daa14 c3000c68 c3867eb8 c01d9870 c38331a8 c3862f54 7ec0: c005b3b4 c3000c68 c3000c68 c3000c9c 00000002 c01da890 c3867ef9 c3000c68 7ee0: c3829f60 c01d97f4 00000000 c01d8470 c38918e0 c3aaf468 39383102 c300343a 7f00: 00000001 c0219660 c03f1768 c3000c00 00000000 c3000c68 00000002 c3aaf814 7f20: 00000001 00000101 c38918e0 c021b6e0 00000002 00000000 00000000 c3000c00 7f40: c38917c0 c021c418 00000064 00000064 00000101 c3867f60 c005b920 c3867f94 7f60: c3891830 c3aaf400 c3866000 c3aaf400 c3aaf800 00000000 c38918e0 c3aaf400 7f80: 00000012 00000000 00000000 c3837920 c00574a0 c3867f94 c3867f94 00000101 7fa0: 01010001 c3867fd4 c381bf48 c3867fd4 c381bf48 00000000 c021ba3c 00000000 7fc0: 00000000 00000000 00000000 c00573dc 00000000 00000000 c3867fd8 c3867fd8 7fe0: 00000000 00000000 00000000 00000000 00000000 c002ce88 00000000 ffff0000 [] (__bug+0x1c/0x28) from [] (cache_alloc_refill+0x13c/0x594) [] (cache_alloc_refill+0x13c/0x594) from [] (__kmalloc+0x94/0xd0) [] (__kmalloc+0x94/0xd0) from [] (alloc_netdev_mq+0x48/0x1b0) [] (alloc_netdev_mq+0x48/0x1b0) from [] (vntwusb_found1+0x58/0x53c [vt6656_stage]) [] (vntwusb_found1+0x58/0x53c [vt6656_stage]) from [] (usb_probe_interface+0x130/0x180) [] (usb_probe_interface+0x130/0x180) from [] (driver_probe_device+0xac/0x164) [] (driver_probe_device+0xac/0x164) from [] (bus_for_each_drv+0x50/0x90) [] (bus_for_each_drv+0x50/0x90) from [] (device_attach+0x50/0x68) [] (device_attach+0x50/0x68) from [] (bus_probe_device+0x28/0x54) [] (bus_probe_device+0x28/0x54) from [] (device_add+0x3b4/0x4f0) [] (device_add+0x3b4/0x4f0) from [] (usb_set_configuration+0x524/0x5b8) [] (usb_set_configuration+0x524/0x5b8) from [] (generic_probe+0x5c/0xa0) [] (generic_probe+0x5c/0xa0) from [] (usb_probe_device+0x48/0x54) [] (usb_probe_device+0x48/0x54) from [] (driver_probe_device+0xac/0x164) [] (driver_probe_device+0xac/0x164) from [] (bus_for_each_drv+0x50/0x90) [] (bus_for_each_drv+0x50/0x90) from [] (device_attach+0x50/0x68) [] (device_attach+0x50/0x68) from [] (bus_probe_device+0x28/0x54) [] (bus_probe_device+0x28/0x54) from [] (device_add+0x3b4/0x4f0) [] (device_add+0x3b4/0x4f0) from [] (usb_new_device+0x100/0x174) [] (usb_new_device+0x100/0x174) from [] (hub_thread+0x9dc/0xeec) [] (hub_thread+0x9dc/0xeec) from [] (kthread+0x78/0x80) [] (kthread+0x78/0x80) from [] (kernel_thread_exit+0x0/0x8) Code: e1a01000 e59f000c eb005014 e3a03000 (e5833000) ---[ end trace 2a51e0dbab9e4fbe ]--- note: khubd[152] exited with preempt_count 1 Signed-off-by: miaofng Signed-off-by: Greg Kroah-Hartman --- drivers/staging/vt6656/main_usb.c | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/staging/vt6656') diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c index 7f96bcaf1c60..05186110c029 100644 --- a/drivers/staging/vt6656/main_usb.c +++ b/drivers/staging/vt6656/main_usb.c @@ -1332,7 +1332,6 @@ device_release_WPADEV(pDevice); free_netdev(pDevice->dev); } - kfree(pDevice); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "device_disconnect3.. \n"); } -- cgit v1.2.3