kernel-fxtec-pro1x/drivers/staging
Max Vozeler 2d8f4595d1 staging: usbip: stub: update refcounts for devices and interfaces
The stub driver expects to access the usb interface
and usb device structures even if the device has been
disconnected in the meantime.

This change gets a reference to them in the stub probe
function using usb_get_intf()/usb_get_dev() and drops them
in the disconnect function.

This fixes an oops observed with a Logic Controls Line
display (0fa8:a030) which disconnects itself when it is
reset:

[ 1348.562274] BUG: unable to handle kernel paging request at 5f7433e5
[ 1348.562327] IP: [<c0393b02>] usb_lock_device_for_reset+0x22/0xd0
[ 1348.562374] *pde = 00000000
[ 1348.562397] Oops: 0000 [#1]
[ 1348.562418] last sysfs file: /sys/devices/pci0000:00/0000:00:10.2/usb4/4-1/bConfigurationValue
[ 1348.562454] Modules linked in: usbip vhci_hcd usbip_common_mod fbcon tileblit font bitblit softcursor serio_raw uvesafb pcspkr via_rng snd_via82xx gameport snd_ac97_codec ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_oss snd_seq_midi_event snd_seq snd_timer snd_seq_device snd usbhid hid via_rhine soundcore mii igel_flash aufs pata_via
[ 1348.562649]
[ 1348.562670] Pid: 2855, comm: usbip_eh Not tainted (2.6.32 #23.37-ud-r113) M300C
[ 1348.562704] EIP: 0060:[<c0393b02>] EFLAGS: 00010216 CPU: 0
[ 1348.562734] EIP is at usb_lock_device_for_reset+0x22/0xd0
[ 1348.562762] EAX: 5f7433cd EBX: 5f7433cd ECX: de293a5c EDX: dd326a00
[ 1348.562793] ESI: 5f7433cd EDI: 000400f6 EBP: cf43ff48 ESP: cf43ff38
[ 1348.562824]  DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
[ 1348.562854] Process usbip_eh (pid: 2855, ti=cf43e000 task=d2c7f230 task.ti=cf43e000)
[ 1348.562884] Stack:
[ 1348.562900]  d6ec9960 de2939cc 5f7433cd 5f743431 cf43ff70 df8fd32f de2939cc d2c7f230
[ 1348.562940] <0> cf43ff70 00000282 00000282 de2939cc d2c7f230 d2c7f230 cf43ffa8 df84416d
[ 1348.562987] <0> cf43ff88 d2c7f230 de293a24 d2c7f230 00000000 d2c7f230 c014e760 cf43ff94
[ 1348.563042] Call Trace:
[ 1348.563073]  [<df8fd32f>] ? stub_device_reset+0x3f/0x110 [usbip]
[ 1348.563114]  [<df84416d>] ? event_handler_loop+0xcd/0xe8 [usbip_common_mod]
[ 1348.563156]  [<c014e760>] ? autoremove_wake_function+0x0/0x50
[ 1348.563193]  [<df843d80>] ? usbip_thread+0x0/0x60 [usbip_common_mod]
[ 1348.563230]  [<df843dd1>] ? usbip_thread+0x51/0x60 [usbip_common_mod]
[ 1348.563265]  [<c014e374>] ? kthread+0x74/0x80
[ 1348.563294]  [<c014e300>] ? kthread+0x0/0x80
[ 1348.563326]  [<c0103c47>] ? kernel_thread_helper+0x7/0x10
[ 1348.563351] Code: 00 e8 73 4d 00 00 5d c3 90 55 89 e5 83 ec 10 89 5d f4 89 75 f8 89 7d fc 0f 1f 44 00 00 8b 3d c0 2e 67 c0 81 c7 fa 00 00 00 89 c3 <8b> 40 18 89 d6 85 c0 75 15 b8 ed ff ff ff 8b 5d f4 8b 75 f8 8b
[ 1348.563528] EIP: [<c0393b02>] usb_lock_device_for_reset+0x22/0xd0 SS:ESP 0068:cf43ff38
[ 1348.563570] CR2: 000000005f7433e5
[ 1348.563593] ---[ end trace 9c3f1e3a2e5299d9 ]---

Signed-off-by: Max Vozeler <max@vozeler.com>
Tested-by: Mark Wehby <MWehby@luxotticaRetail.com>
Tested-by: Steven Harms <sharms@luxotticaRetail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-01-20 16:01:48 -08:00
..
asus_oled Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
ath6kl Staging: ath6kl: fix potential buffer overflow 2011-01-20 12:01:23 -08:00
autofs Add a dentry op to allow processes to be held during pathwalk transit 2011-01-15 20:07:31 -05:00
bcm staging: fix build failure in bcm driver 2011-01-17 17:39:39 -08:00
brcm80211 staging: brcm80211: Fix WL_<type> logging macros 2010-12-16 12:25:37 -08:00
comedi staging: comedi: ni_labpc: Use shared IRQ for PCMCIA card 2011-01-20 12:15:51 -08:00
cptm1217 staging: clearpad_tm1217 depends on INPUT 2010-11-19 17:17:45 -08:00
crystalhd drivers/staging: Remove unnecessary casts of pci_get_drvdata 2010-11-16 12:06:47 -08:00
cs5535_gpio cs5535: deprecate older cs5535_gpio driver 2011-01-13 08:03:13 -08:00
cx25821 Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2011-01-10 16:04:53 -08:00
cxt1e1 Staging: cxt1e1: rename global log_level variable 2010-12-10 10:46:30 -08:00
dabusb [media] dabusb: Move it to staging to be deprecated 2010-12-29 08:17:15 -02:00
dt3155v4l [media] V4L: remove V4L1 compatibility mode 2010-12-29 08:17:07 -02:00
easycap Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
echo
et131x drivers/staging: Remove unnecessary casts of pci_get_drvdata 2010-11-16 12:06:47 -08:00
frontier Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
ft1000 staging: ft1000: Fix kernel panic when use ioctl. 2010-12-16 12:20:05 -08:00
go7007 Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2011-01-10 16:04:53 -08:00
hv staging: hv: Removed unneeded call to netif_stop_queue() in hv_netvsc 2011-01-20 11:58:27 -08:00
iio iio: Fixpoint formatted output bugfix 2011-01-20 12:06:07 -08:00
intel_sst Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
keucr Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
line6 staging/line6: Fix sparse warning 'Using plain integer as NULL pointer' 2010-12-08 14:31:01 -08:00
lirc Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2011-01-07 17:02:58 -08:00
memrar Staging: sep: handle the memrar stuff in the headers 2010-11-29 11:17:27 -08:00
msm Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
octeon Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
olpc_dcon Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
panel llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
phison Staging: phison: use DEFINE_PCI_DEVICE_TABLE 2010-12-09 16:29:48 -08:00
pohmelfs pohmelfs: double-free and leak 2011-01-12 20:02:44 -05:00
quatech_usb2
quickstart Staging: quickstart: free after input_unregister_device() 2010-11-16 12:25:52 -08:00
rt2860 staging: rt2860: Fix incorrect netif_stop_queue usage warning 2011-01-20 12:06:06 -08:00
rt2870 Staging: rt2870: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:46 -07:00
rtl8187se staging: rtl8187se: Change panic to warn when RF switch turned off 2010-11-16 12:25:53 -08:00
rtl8192e Staging: rtl8192e: use DEFINE_PCI_DEVICE_TABLE 2010-12-09 16:29:48 -08:00
rtl8192u Staging: rtl8192u: add missing curly braces 2010-12-10 10:39:55 -08:00
rtl8712 staging: r8712u: Fix memory leak in firmware loading 2011-01-20 12:01:24 -08:00
samsung-laptop Merge branch 'master' into for-next 2010-12-22 18:57:02 +01:00
sbe-2t3e3 Staging: sbe-2t3e3: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:45 -07:00
se401 [media] staging: se401 depends on USB 2010-12-30 22:29:41 -02:00
sep staging: sep: fix comments in sep_get_static_pool_addr_handler 2010-12-10 10:39:55 -08:00
serqt_usb2
slicoss
sm7xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2011-01-14 09:29:05 -08:00
smbfs staging: smbfs building fix 2011-01-17 01:50:52 -05:00
solo6x10 staging: solo6010 depends on I2C 2010-12-09 16:29:49 -08:00
speakup Staging: speakup: &&/|| confusion in silent_store() 2011-01-20 12:06:07 -08:00
spectra Staging: Merge 2.6.37-rc5 into staging-next 2010-12-07 10:47:56 -08:00
ste_rmi4 Staging: ste_rmi4: use after input_unregister_device() 2011-01-20 12:01:23 -08:00
ti-st
tidspbridge staging: tidspbridge: replace mbox callback with notifier_call 2011-01-20 12:19:47 -08:00
tm6000 [media] tm6000: Fix mutex unbalance 2010-12-29 08:17:21 -02:00
usbip staging: usbip: stub: update refcounts for devices and interfaces 2011-01-20 16:01:48 -08:00
usbvideo [media] staging: usbvideo/vicam depends on USB 2010-12-30 22:29:39 -02:00
vme Staging: remove unintended Module.symvers file 2011-01-20 09:13:14 -08:00
vt6655 drivers/staging: Remove unnecessary semicolons 2010-11-16 12:06:47 -08:00
vt6656 drivers/staging: Remove unnecessary semicolons 2010-11-16 12:06:47 -08:00
westbridge Staging: Merge 2.6.37-rc2 into staging-next 2010-11-16 10:44:50 -08:00
winbond Staging: w35und: Kill struct wb_usb 2010-12-01 14:45:47 -08:00
wlags49_h2 drivers/staging: Remove unnecessary casts of pci_get_drvdata 2010-11-16 12:06:47 -08:00
wlags49_h25
wlan-ng Staging: Merge 2.6.37-rc2 into staging-next 2010-11-16 10:44:50 -08:00
xgifb Staging: xgfib: put parenthesis in the right place 2011-01-20 12:01:23 -08:00
zram Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2011-01-10 16:04:53 -08:00
Kconfig cs5535: deprecate older cs5535_gpio driver 2011-01-13 08:03:13 -08:00
Makefile cs5535: deprecate older cs5535_gpio driver 2011-01-13 08:03:13 -08:00
staging.c