Skip to contentSkip to conversation

more USB patches for 2.6.22

PATCH In review Greg KH 4 participants 8 messages Jul 20, 2007 – Jul 30, 2007

lore
Share & tools
lore

Greg KH

author
#0 lore raw

PATCH 1/1 more USB patches for 2.6.22

Here are some more USB patches and fixes against your 2.6.22 git tree.

They add a new usb gadget driver, more urb->status cleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.

Please pull from:

	master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6.git/

The full patches will be sent to the linux-usb-devel mailing list, if anyone wants to see them.

thanks,

greg k-h

 MAINTAINERS                            |    6 +
 drivers/usb/atm/cxacru.c               |    3 +-
 drivers/usb/atm/speedtch.c             |    7 +-
 drivers/usb/atm/ueagle-atm.c           |    6 +-
 drivers/usb/atm/usbatm.c               |   11 +-
 drivers/usb/class/cdc-acm.c            |   18 +-
 drivers/usb/class/usblp.c              |   27 +-
 drivers/usb/core/hcd.c                 |  131 +-
 drivers/usb/core/hub.c                 |   10 +-
 drivers/usb/core/message.c             |   34 +-
 drivers/usb/core/sysfs.c               |   53 +
 drivers/usb/core/urb.c                 |   88 +-
 drivers/usb/gadget/Kconfig             |   57 +-
 drivers/usb/gadget/Makefile            |    1 +
 drivers/usb/gadget/amd5536udc.c        | 3454 ++++++++++++++++++++++++++++++++
 drivers/usb/gadget/amd5536udc.h        |  626 ++++++
 drivers/usb/gadget/ether.c             |    4 +
 drivers/usb/gadget/gadget_chips.h      |   10 +-
 drivers/usb/gadget/m66592-udc.c        |  255 ++--
 drivers/usb/gadget/m66592-udc.h        |  610 +++---
 drivers/usb/gadget/serial.c            |   25 +-
 drivers/usb/host/isp116x-hcd.c         |  187 +-
 drivers/usb/host/r8a66597-hcd.c        |  110 +-
 drivers/usb/host/r8a66597.h            |   87 +-
 drivers/usb/host/u132-hcd.c            |   17 +-
 drivers/usb/host/uhci-q.c              |   59 +-
 drivers/usb/image/mdc800.c             |   45 +-
 drivers/usb/image/microtek.c           |   19 +-
 drivers/usb/misc/adutux.c              |   59 +-
 drivers/usb/misc/appledisplay.c        |    9 +-
 drivers/usb/misc/auerswald.c           |   25 +-
 drivers/usb/misc/ftdi-elan.c           |   21 +-
 drivers/usb/misc/iowarrior.c           |   21 +-
 drivers/usb/misc/ldusb.c               |   20 +-
 drivers/usb/misc/legousbtower.c        |   28 +-
 drivers/usb/misc/phidgetkit.c          |   13 +-
 drivers/usb/misc/phidgetmotorcontrol.c |   13 +-
 drivers/usb/misc/usblcd.c              |   11 +-
 drivers/usb/misc/usbtest.c             |    4 +-
 drivers/usb/misc/uss720.c              |    5 +-
 drivers/usb/serial/io_ti.c             |   10 +-
 drivers/usb/serial/mos7720.c           |    5 -
 drivers/usb/serial/mos7840.c           |   19 -
 drivers/usb/serial/sierra.c            |  119 +-
 drivers/usb/storage/dpcm.c             |   56 +-
 drivers/usb/storage/onetouch.c         |   13 +-
 drivers/usb/storage/unusual_devs.h     |   18 +
 47 files changed, 5350 insertions(+), 1079 deletions(-)
 create mode 100644 drivers/usb/gadget/amd5536udc.c
 create mode 100644 drivers/usb/gadget/amd5536udc.h

---------------

Alan Stern (8):
isp116x-hcd: prepare for urb->status
USB: add "descriptors" binary sysfs attribute
USB: fix warning caused by autosuspend counter going negative
UHCI: short control URBs get a status stage
USB: documentation update for usb_unlink_urb
USB: usb-storage: unusual_devs entry for Nikon D100
USB: move routines in hcd.c
USB: change name of spinlock in hcd.c

Florin Malita (1):
USB: mos7720, mos7840: remove redundant urb check

Greg Kroah-Hartman (22):

      USB: atm: cxacru: clean up urb->status usage
      USB: atm: speedtch: clean up urb->status usage
      USB: atm: ueagle-atm: clean up urb->status usage
      USB: atm: usbatm: clean up urb->status usage
      USB: class: cdc-acm: clean up urb->status usage
      USB: class: usblp: clean up urb->status usage
      USB: storage: onetouch: clean up urb->status usage
      USB: image: mdc800: clean up urb->status usage
      USB: image: microtek: clean up urb->status usage
      USB: core: message: clean up urb->status usage
      USB: misc: adtux: clean up urb->status usage
      USB: misc: appledisplay: clean up urb->status usage
      USB: misc: auerswald: clean up urb->status usage
      USB: misc: ftdi-elan: clean up urb->status usage
      USB: misc: iowarrior: clean up urb->status usage
      USB: misc: ldusb: clean up urb->status usage
      USB: misc: legousbtower: clean up urb->status usage
      USB: misc: phidgetkit: clean up urb->status usage
      USB: misc: phidgetmotorcontrol: clean up urb->status usage
      USB: misc: usblcd: clean up urb->status usage
      USB: misc: usbtest: clean up urb->status usage
      USB: misc: uss720: clean up urb->status usage

Jesper Juhl (1):
USB: Remove pointless conditional in drivers/usb/serial/io_ti.c::edge_shutdown()

Kevin Lloyd (2):
USB: sierra: Add TRU-Install (c) Support
USB: sierra: Add new devices

Matthias Kaehlcke (4):
USB: use mutex instead of semaphore in the USB gadget serial driver
USB: use mutex instead of semaphore in the ELAN U132 adapter driver
USB: use mutex instead of semaphore in the Adutux driver
USB: use mutex instead of semaphore in the FTDI ELAN driver

Pete Zaitcev (1):
USB: usblp: "Big cleanup" breaks O_NONBLOCK

S.Caglar Onur (1):
USB: drivers/usb/storage/dpcm.c whitespace cleanup

Thomas Dahlmann (2):
USB: amd5536 UDC driver (in GEODE southbridge)
USB: MAINTAINERS entry for amd5536udc

Yoshihiro Shimoda (2):
USB: m66592-udc: fixes some problems
USB: r8a66597-hcd: fixes some problem

#1 lore raw
Quoted 6 lines · Greg KH

Here are some more USB patches and fixes against your 2.6.22 git tree.

They add a new usb gadget driver, more urb->status cleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.

I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:

end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: device descriptor read/all, error 0

but the oops itself happened when I then removed the USB device due to the errors, causing this:

usb 2-5: USB disconnect, address 10
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 Dev sdc: unable to read RDB block 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0
unable to read partition table
sd 11:0:0:1: [sdc] Attached SCSI removable disk sd 11:0:0:1: Attached scsi generic sg3 type 0
usb-storage: device scan complete

and finally the oops itself:

	general protection fault: 0000 [1] SMP
	CPU 0
	Modules linked in:
	Pid: 214, comm: khubd Not tainted 2.6.22-g20082208 #56
	RIP: 0010:[<ffffffff80274670>]  [<ffffffff80274670>] kfree+0x27/0x81
	RSP: 0018:ffff81012bd0dd90  EFLAGS: 00010212
	RAX: 037d001b2d7d01b8 RBX: ffff810001000000 RCX: ffffffff80314f0f
	RDX: ffff81012337b738 RSI: 037c811b2e7d01b8 RDI: ff241b0cff251c0b
	RBP: ff241b0cff251c0b R08: ffffffff8062eed0 R09: ffff81012bc0f430
	R10: 0000000000000287 R11: ffffffff803ed953 R12: ffff81008642f140
	R13: 0000000000000000 R14: 0000000000001540 R15: 0000000000000008
	FS:  0000000000000000(0000) GS:ffffffff806a0000(0000) knlGS:0000000000000000
	CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
	CR2: 00002b02340410a0 CR3: 000000010bd4b000 CR4: 00000000000006e0
	Process khubd (pid: 214, threadinfo ffff81012bd0c000, task ffff81012bed36b0)
	Stack:  ffff81012337b738 ffff81011e9fa800 ffff81008642f140 ffffffff803f50c4
	 ffff81012337b738 ffff81011e9fa800 ffffffff8064ae70 ffff81011e9fa888
	 ffff81012ad60978 ffff81012ad60800 ffff81012ad60800 ffffffff803ed96c
	Call Trace:
	 [<ffffffff803f50c4>] usb_destroy_configuration+0x85/0xee
	 [<ffffffff803ed96c>] usb_release_dev+0x19/0x55
	 [<ffffffff803140c9>] kobject_cleanup+0x52/0x70
	 [<ffffffff803140e7>] kobject_release+0x0/0x9
	 [<ffffffff80314f0f>] kref_put+0x5d/0x68
	 [<ffffffff803ef78f>] hub_thread+0x390/0xb27
	 [<ffffffff8023dcb1>] autoremove_wake_function+0x0/0x2e
	 [<ffffffff803ef3ff>] hub_thread+0x0/0xb27
	 [<ffffffff8023db95>] kthread+0x47/0x76
	 [<ffffffff8020c0f8>] child_rip+0xa/0x12
	 [<ffffffff8023db4e>] kthread+0x0/0x76
	 [<ffffffff8020c0ee>] child_rip+0x0/0x12

	Code: 48 8b 06 25 00 40 02 00 48 3d 00 40 02 00 75 04 48 8b 76 10
	RIP  [<ffffffff80274670>] kfree+0x27/0x81
	 RSP <ffff81012bd0dd90>

Looks like another reference counting bug...

Linus

#2 lore raw
Quoted 14 lines · Linus Torvalds

I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:

end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: device descriptor read/all, error 0

Error 0? That sounds bogus. Perhaps this patch will take care of everything:

http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2

It has already been submitted to Greg KH, but if it takes care of your problem you might want to merge it immediately. It fixes an obvious bug that was recently introduced.

Alan Stern

author
#3 lore raw

usb-storage autosuspend bug?

In reply to Linus Torvalds

Alan and Oliver, was this caused by the autosuspend changes for usb-storage?

thanks,

greg k-h

Quoted 95 lines · Linus Torvalds
Quoted 6 lines · Greg KH

Here are some more USB patches and fixes against your 2.6.22 git tree.

They add a new usb gadget driver, more urb->status cleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.

I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:

end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: device descriptor read/all, error 0

but the oops itself happened when I then removed the USB device due to the errors, causing this:

usb 2-5: USB disconnect, address 10
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 Dev sdc: unable to read RDB block 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0
unable to read partition table
sd 11:0:0:1: [sdc] Attached SCSI removable disk sd 11:0:0:1: Attached scsi generic sg3 type 0
usb-storage: device scan complete

and finally the oops itself:

	general protection fault: 0000 [1] SMP
	CPU 0
	Modules linked in:
	Pid: 214, comm: khubd Not tainted 2.6.22-g20082208 #56
	RIP: 0010:[<ffffffff80274670>]  [<ffffffff80274670>] kfree+0x27/0x81
	RSP: 0018:ffff81012bd0dd90  EFLAGS: 00010212
	RAX: 037d001b2d7d01b8 RBX: ffff810001000000 RCX: ffffffff80314f0f
	RDX: ffff81012337b738 RSI: 037c811b2e7d01b8 RDI: ff241b0cff251c0b
	RBP: ff241b0cff251c0b R08: ffffffff8062eed0 R09: ffff81012bc0f430
	R10: 0000000000000287 R11: ffffffff803ed953 R12: ffff81008642f140
	R13: 0000000000000000 R14: 0000000000001540 R15: 0000000000000008
	FS:  0000000000000000(0000) GS:ffffffff806a0000(0000) knlGS:0000000000000000
	CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
	CR2: 00002b02340410a0 CR3: 000000010bd4b000 CR4: 00000000000006e0
	Process khubd (pid: 214, threadinfo ffff81012bd0c000, task ffff81012bed36b0)
	Stack:  ffff81012337b738 ffff81011e9fa800 ffff81008642f140 ffffffff803f50c4
	 ffff81012337b738 ffff81011e9fa800 ffffffff8064ae70 ffff81011e9fa888
	 ffff81012ad60978 ffff81012ad60800 ffff81012ad60800 ffffffff803ed96c
	Call Trace:
	 [<ffffffff803f50c4>] usb_destroy_configuration+0x85/0xee
	 [<ffffffff803ed96c>] usb_release_dev+0x19/0x55
	 [<ffffffff803140c9>] kobject_cleanup+0x52/0x70
	 [<ffffffff803140e7>] kobject_release+0x0/0x9
	 [<ffffffff80314f0f>] kref_put+0x5d/0x68
	 [<ffffffff803ef78f>] hub_thread+0x390/0xb27
	 [<ffffffff8023dcb1>] autoremove_wake_function+0x0/0x2e
	 [<ffffffff803ef3ff>] hub_thread+0x0/0xb27
	 [<ffffffff8023db95>] kthread+0x47/0x76
	 [<ffffffff8020c0f8>] child_rip+0xa/0x12
	 [<ffffffff8023db4e>] kthread+0x0/0x76
	 [<ffffffff8020c0ee>] child_rip+0x0/0x12

	Code: 48 8b 06 25 00 40 02 00 48 3d 00 40 02 00 75 04 48 8b 76 10
	RIP  [<ffffffff80274670>] kfree+0x27/0x81
	 RSP <ffff81012bd0dd90>

Looks like another reference counting bug...

Linus

#4 lore raw

Re: [linux-usb-devel] usb-storage autosuspend bug?

Am Donnerstag 26 Juli 2007 schrieb Greg KH:

Quoted 2 lines

Alan and Oliver, was this caused by the autosuspend changes for usb-storage?

The oops itself looks like refcounting. What caused the initial io error does not become clear from the log. It is possible that the device cannot stand suspension. But there's no evidence from that. On the contrary, these devices usually do an unplug/plug cycle, which is not in the log.

Regards
Oliver

#5 lore raw

Re: [linux-usb-devel] usb-storage autosuspend bug?

Quoted 8 lines · Oliver Neukum

Am Donnerstag 26 Juli 2007 schrieb Greg KH:

Quoted 2 lines

Alan and Oliver, was this caused by the autosuspend changes for usb-storage?

The oops itself looks like refcounting. What caused the initial io error does not become clear from the log. It is possible that the device cannot stand suspension. But there's no evidence from that. On the contrary, these devices usually do an unplug/plug cycle, which is not in the log.

I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your urb->status removal patch for usb_start_wait_urb() -- the one I fixed here:

http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2

Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.

Alan Stern

#6 lore raw

Re: [linux-usb-devel] usb-storage autosuspend bug?

Quoted 10 lines · Alan Stern

I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your urb->status removal patch for usb_start_wait_urb() -- the one I fixed here:

http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2

Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.

I finally got around to testing this, and while I still have problems with that reader, I can't reproduce the oops with that patch in place either.

Of course, I only ever saw the oops once, so I really don't know how reproducible it was. Maybe you have to remove the USB reader at _just_ the right moment. But I did get

	...
	usb 2-6: reset high speed USB device using ehci_hcd and address 4
	usb 2-6: USB disconnect, address 4
	sd 6:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
	end_request: I/O error, dev sdc, sector 1999855
	...
	scsi 6:0:0:1: rejecting I/O to dead device

so the testing was done with the kind of behaviour that resulted in an oops and a dead khubd last time around.

So I guess I'll ack the patch for whatever that is worth.

Over to you, Greg..

Linus

author
#7 lore raw

Re: [linux-usb-devel] usb-storage autosuspend bug?

Quoted 29 lines · Linus Torvalds
Quoted 10 lines · Alan Stern

I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your urb->status removal patch for usb_start_wait_urb() -- the one I fixed here:

http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2

Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.

I finally got around to testing this, and while I still have problems with that reader, I can't reproduce the oops with that patch in place either.

Of course, I only ever saw the oops once, so I really don't know how reproducible it was. Maybe you have to remove the USB reader at _just_ the right moment. But I did get

	...
	usb 2-6: reset high speed USB device using ehci_hcd and address 4
	usb 2-6: USB disconnect, address 4
	sd 6:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
	end_request: I/O error, dev sdc, sector 1999855
	...
	scsi 6:0:0:1: rejecting I/O to dead device
Quoted 4 lines

so the testing was done with the kind of behaviour that resulted in an oops and a dead khubd last time around.

So I guess I'll ack the patch for whatever that is worth.

Ok, the patch is in the series I just sent to you.

If you run into that bug again, please let us know.

thanks,

greg k-h