1. 25 3月, 2009 8 次提交
  2. 18 3月, 2009 1 次提交
    • A
      USB: usbfs: keep async URBs until the device file is closed · 6ff10464
      Alan Stern 提交于
      The usbfs driver manages a list of completed asynchronous URBs.  But
      it is too eager to free the entries on this list: destroy_async() gets
      called whenever an interface is unbound or a device is removed, and it
      deallocates the outstanding struct async entries for all URBs on that
      interface or device.  This is wrong; the user program should be able
      to reap an URB any time after it has completed, regardless of whether
      or not the interface is still bound or the device is still present.
      
      This patch (as1222) moves the code for deallocating the completed list
      entries from destroy_async() to usbdev_release().  The outstanding
      entries won't be freed until the user program has closed the device
      file, thereby eliminating any possibility that the remaining URBs
      might still be reaped.
      
      This fixes a bug in which a program can hang in the USBDEVFS_REAPURB
      ioctl when the device is unplugged.
      Reported-and-tested-by: NMartin Poupe <martin.poupe@upek.com>
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6ff10464
  3. 28 2月, 2009 1 次提交
    • A
      USB: usb_get_string should check the descriptor type · 67f5a4ba
      Alan Stern 提交于
      This patch (as1218) fixes a problem with a radio-control joystick used
      in the "walkera 4#3" helicopter.  This device responds to the initial
      Get-String-Descriptor request for string 0 (which is really the list
      of supported languages) by sending its config descriptor!  The
      usb_get_string() routine needs to check whether it got the right
      type of descriptor.
      
      Oddly enough, this sort of check is already present in
      usb_get_descriptor().  The patch changes the error code from -EPROTO
      to -ENODATA, because -EPROTO shows up in so many other contexts to
      indicate a hardware failure rather than a firmware error.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Tested-by: NGuillermo Jarabo <williamjap@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      ===================================================================
      67f5a4ba
  4. 18 2月, 2009 1 次提交
  5. 28 1月, 2009 4 次提交
    • A
      USB: fix char-device disconnect handling · 501950d8
      Alan Stern 提交于
      This patch (as1198) fixes a conceptual bug: Somewhere along the line
      we managed to confuse USB class devices with USB char devices.  As a
      result, the code to send a disconnect signal to userspace would not be
      built if both CONFIG_USB_DEVICE_CLASS and CONFIG_USB_DEVICEFS were
      disabled.
      
      The usb_fs_classdev_common_remove() routine has been renamed to
      usbdev_remove() and it is now called whenever any USB device is
      removed, not just when a class device is unregistered.  The notifier
      registration and unregistration calls are no longer conditionally
      compiled.  And since the common removal code will always be called as
      part of the char device interface, there's no need to call it again as
      part of the usbfs interface; thus the invocation of
      usb_fs_classdev_common_remove() has been taken out of
      usbfs_remove_device().
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-by: NAlon Bar-Lev <alon.barlev@gmail.com>
      Tested-by: NAlon Bar-Lev <alon.barlev@gmail.com>
      Cc: stable <stable@kernel.org>
      
      501950d8
    • R
      USB: Fix suspend-resume of PCI USB controllers · a15d95a0
      Rafael J. Wysocki 提交于
      Commit a0d4922d
      (USB: fix up suspend and resume for PCI host controllers) attempted
      to fix the suspend-resume of PCI USB controllers, but unfortunately
      it did that incorrectly and interrupts are left enabled by the USB
      controllers' ->suspend_late() callback as a result.  This leads to
      serious problems during suspend which are very difficult to debug.
      
      Fix the issue by removing the ->suspend_late() callback of PCI
      USB controllers and moving the code from there to the ->suspend()
      callback executed with interrupts enabled.  Additionally, make
      the ->resume() callback of PCI USB controllers execute
      pci_enable_wake(dev, PCI_D0, false) to disable wake-up from the
      full power state (PCI_D0).
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Tested-by: NAndrey Borzenkov <arvidjaar@mail.ru>
      Tested-by: N"Jeff Chua" <jeff.chua.linux@gmail.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: "Zdenek Kabelac" <zdenek.kabelac@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a15d95a0
    • A
      USB: don't enable wakeup by default for PCI host controllers · bcca06ef
      Alan Stern 提交于
      This patch (as1199) changes the initial wakeup settings for PCI USB
      host controllers.  The controllers are marked as capable of waking the
      system, but wakeup is not enabled by default.
      
      It turns out that enabling wakeup for USB host controllers has a lot
      of bad consequences.  As the simplest example, if a USB mouse or
      keyboard is unplugged immediately after the computer is put to sleep,
      the unplug will cause the system to wake back up again!  We are better
      off marking them as wakeup-capable and leaving wakeup disabled.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-by: NRafael J. Wysocki <rjw@sisk.pl>
      CC: David Brownell <david-b@pacbell.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bcca06ef
    • A
      USB: fix toggle mismatch in disable_endpoint paths · ddeac4e7
      Alan Stern 提交于
      This patch (as1200) finishes some fixes that were left incomplete by
      an earlier patch.
      
      Although nobody has addressed this issue in the past, it turns out
      that we need to distinguish between two different modes of disabling
      and enabling endpoints.  In one mode only the data structures in
      usbcore are affected, and in the other mode the host controller and
      device hardware states are affected as well.
      
      The earlier patch added an extra argument to the routines in the
      enable_endpoint pathways to reflect this difference.  This patch adds
      corresponding arguments to the disable_endpoint pathways.  Without
      this change, the endpoint toggle state can get out of sync between
      the host and the device.  The exact mechanism depends on the details
      of the host controller (whether or not it stores its own copy of the
      toggle values).
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-by: NDan Streetman <ddstreet@ieee.org>
      Tested-by: NDan Streetman <ddstreet@ieee.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      ddeac4e7
  6. 16 1月, 2009 1 次提交
  7. 08 1月, 2009 21 次提交
  8. 07 1月, 2009 1 次提交
    • R
      PM: Simplify the new suspend/hibernation framework for devices · adf09493
      Rafael J. Wysocki 提交于
      PM: Simplify the new suspend/hibernation framework for devices
      
      Following the discussion at the Kernel Summit, simplify the new
      device PM framework by merging 'struct pm_ops' and
      'struct pm_ext_ops' and removing pointers to 'struct pm_ext_ops'
      from 'struct platform_driver' and 'struct pci_driver'.
      
      After this change, the suspend/hibernation callbacks will only
      reside in 'struct device_driver' as well as at the bus type/
      device class/device type level.  Accordingly, PCI and platform
      device drivers are now expected to put their suspend/hibernation
      callbacks into the 'struct device_driver' embedded in
      'struct pci_driver' or 'struct platform_driver', respectively.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NPavel Machek <pavel@suse.cz>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      adf09493
  9. 06 1月, 2009 1 次提交
  10. 18 12月, 2008 1 次提交