1. 09 Dec, 2011 7 commits
  2. 28 Nov, 2011 2 commits
  3. 26 Nov, 2011 31 commits
    • Greg Kroah-Hartman's avatar
      Linux 3.0.11 · 7a576d2d
      Greg Kroah-Hartman authored
      7a576d2d
    • Jesse Barnes's avatar
      drm/i915: always set FDI composite sync bit · 49b3e19e
      Jesse Barnes authored
      commit c4f9c4c2 upstream.
      
      It's needed for 3 pipe support as well as just regular functionality
      (e.g. DisplayPort).
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Tested-by: default avatarAdam Jackson <ajax@redhat.com>
      Tested-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
      Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: default avatarRobert Hooker <robert.hooker@canonical.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      49b3e19e
    • Jesse Barnes's avatar
      drm/i915: fix IVB cursor support · e01b0328
      Jesse Barnes authored
      commit 65a21cd6 upstream.
      
      The cursor regs have moved around, add the offsets and new macros for
      getting at them.
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Tested-By: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
      Reviewed-By: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
      Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: default avatarRobert Hooker <robert.hooker@canonical.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e01b0328
    • Christoph Hellwig's avatar
      xfs: fix ->write_inode return values · ae6c19cd
      Christoph Hellwig authored
      patch 58d84c4e upstream.
      
      Currently we always redirty an inode that was attempted to be written out
      synchronously but has been cleaned by an AIL pushed internall, which is
      rather bogus.  Fix that by doing the i_update_core check early on and
      return 0 for it.  Also include async calls for it, as doing any work for
      those is just as pointless.  While we're at it also fix the sign for the
      EIO return in case of a filesystem shutdown, and fix the completely
      non-sensical locking around xfs_log_inode.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ae6c19cd
    • Mitsuo Hayasaka's avatar
      xfs: use doalloc flag in xfs_qm_dqattach_one() · 7d7e5d33
      Mitsuo Hayasaka authored
      commit db3e74b5 upstream
      
      The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates
      whether a new area to handle quota information will be allocated
      if needed. Originally, it was passed to xfs_qm_dqget(), but has
      been removed by the following commit (probably by mistake):
      
      	commit 8e9b6e7f
      	Author: Christoph Hellwig <hch@lst.de>
      	Date:   Sun Feb 8 21:51:42 2009 +0100
      
      	xfs: remove the unused XFS_QMOPT_DQLOCK flag
      
      As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one()
      never allocates the new area even if it is needed.
      
      This patch gives the doalloc arg to xfs_qm_dqget() in
      xfs_qm_dqattach_one() to fix this problem.
      Signed-off-by: default avatarMitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
      Cc: Alex Elder <aelder@sgi.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarBen Myers <bpm@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7d7e5d33
    • Carlos Maiolino's avatar
      xfs: Fix possible memory corruption in xfs_readlink · 626ff2d5
      Carlos Maiolino authored
      commit b52a360b upstream.
      
      Fixes a possible memory corruption when the link is larger than
      MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the
      S_ISLNK assert, since the inode mode is checked previously in
      xfs_readlink_by_handle() and via VFS.
      
      Updated to address concerns raised by Ben Hutchings about the loose
      attention paid to 32- vs 64-bit values, and the lack of handling a
      potentially negative pathlen value:
       - Changed type of "pathlen" to be xfs_fsize_t, to match that of
         ip->i_d.di_size
       - Added checking for a negative pathlen to the too-long pathlen
         test, and generalized the message that gets reported in that case
         to reflect the change
      As a result, if a negative pathlen were encountered, this function
      would return EFSCORRUPTED (and would fail an assertion for a debug
      build)--just as would a too-long pathlen.
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      626ff2d5
    • Christoph Hellwig's avatar
      xfs: fix buffer flushing during unmount · 70f589ce
      Christoph Hellwig authored
      commit 87c7bec7 upstream.
      
      The code to flush buffers in the umount code is a bit iffy: we first
      flush all delwri buffers out, but then might be able to queue up a
      new one when logging the sb counts.  On a normal shutdown that one
      would get flushed out when doing the synchronous superblock write in
      xfs_unmountfs_writesb, but we skip that one if the filesystem has
      been shut down.
      
      Fix this by moving the delwri list flushing until just before unmounting
      the log, and while we're at it also remove the superflous delwri list
      and buffer lru flusing for the rt and log device that can never have
      cached or delwri buffers.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reported-by: default avatarAmit Sahrawat <amit.sahrawat83@gmail.com>
      Tested-by: default avatarAmit Sahrawat <amit.sahrawat83@gmail.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      70f589ce
    • Mitsuo Hayasaka's avatar
      xfs: Return -EIO when xfs_vn_getattr() failed · 5b9d69bc
      Mitsuo Hayasaka authored
      commit ed32201e upstream.
      
      An attribute of inode can be fetched via xfs_vn_getattr() in XFS.
      Currently it returns EIO, not negative value, when it failed.  As a
      result, the system call returns not negative value even though an
      error occured. The stat(2), ls and mv commands cannot handle this
      error and do not work correctly.
      
      This patch fixes this bug, and returns -EIO, not EIO when an error
      is detected in xfs_vn_getattr().
      Signed-off-by: default avatarMitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5b9d69bc
    • Christoph Hellwig's avatar
      xfs: avoid direct I/O write vs buffered I/O race · 3da97f97
      Christoph Hellwig authored
      commit c58cb165 upstream.
      
      Currently a buffered reader or writer can add pages to the pagecache
      while we are waiting for the iolock in xfs_file_dio_aio_write.  Prevent
      this by re-checking mapping->nrpages after we got the iolock, and if
      nessecary upgrade the lock to exclusive mode.  To simplify this a bit
      only take the ilock inside of xfs_file_aio_write_checks.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3da97f97
    • Dave Chinner's avatar
      xfs: dont serialise direct IO reads on page cache · 16ba92e5
      Dave Chinner authored
      commit 0c38a251 upstream.
      
      There is no need to grab the i_mutex of the IO lock in exclusive
      mode if we don't need to invalidate the page cache. Taking these
      locks on every direct IO effective serialises them as taking the IO
      lock in exclusive mode has to wait for all shared holders to drop
      the lock. That only happens when IO is complete, so effective it
      prevents dispatch of concurrent direct IO reads to the same inode.
      
      Fix this by taking the IO lock shared to check the page cache state,
      and only then drop it and take the IO lock exclusively if there is
      work to be done. Hence for the normal direct IO case, no exclusive
      locking will occur.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Tested-by: default avatarJoern Engel <joern@logfs.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      16ba92e5
    • Christoph Hellwig's avatar
      xfs: fix xfs_mark_inode_dirty during umount · afd717d6
      Christoph Hellwig authored
      commit 866e4ed7 upstream.
      
      During umount we do not add a dirty inode to the lru and wait for it to
      become clean first, but force writeback of data and metadata with
      I_WILL_FREE set.  Currently there is no way for XFS to detect that the
      inode has been redirtied for metadata operations, as we skip the
      mark_inode_dirty call during teardown.  Fix this by setting i_update_core
      nanually in that case, so that the inode gets flushed during inode reclaim.
      
      Alternatively we could enable calling mark_inode_dirty for inodes in
      I_WILL_FREE state, and let the VFS dirty tracking handle this.  I decided
      against this as we will get better I/O patterns from reclaim compared to
      the synchronous writeout in write_inode_now, and always marking the inode
      dirty in some way from xfs_mark_inode_dirty is a better safetly net in
      either case.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      afd717d6
    • Christoph Hellwig's avatar
      xfs: fix error handling for synchronous writes · e62cccfc
      Christoph Hellwig authored
      If removed storage while synchronous buffer write underway,
      "xfslogd" hangs.
      
      Detailed log http://oss.sgi.com/archives/xfs/2011-07/msg00740.html
      
      Related work bfc60177
      "xfs: fix error handling for synchronous writes"
      
      Given that xfs_bwrite actually does the shutdown already after
      waiting for the b_iodone completion and given that we actually
      found that calling xfs_force_shutdown from inside
      xfs_buf_iodone_callbacks was a major contributor the problem
      it better to drop this call.
      Signed-off-by: default avatarAjeet Yadav <ajeet.yadav.77@gmail.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e62cccfc
    • sordna's avatar
      USB: quirks: adding more quirky webcams to avoid squeaky audio · 10318b55
      sordna authored
      commit 0d145d7d upstream.
      
      The following patch contains additional affected webcam models, on top of the
      patches commited to linux-next 2394d67e
      and 5b253d88Signed-off-by: default avatarsordna <sordna@gmail.com>
      Cc: Oliver Neukum <oliver@neukum.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      10318b55
    • Josh Boyer's avatar
      USB: add quirk for Logitech C600 web cam · 85e9996f
      Josh Boyer authored
      commit 60c71ca9 upstream.
      
      We've had another report of the "chipmunk" sound on a Logitech C600 webcam.
      This patch resolves the issue.
      Signed-off-by: default avatarJosh Boyer <jwboyer@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      85e9996f
    • Thomas Poussevin's avatar
      USB: EHCI: fix HUB TT scheduling issue with iso transfer · 317451c1
      Thomas Poussevin authored
      commit 811c926c upstream.
      
      The current TT scheduling doesn't allow to play and then record on a
      full-speed device connected to a high speed hub.
      
      The IN iso stream can only start on the first uframe (0-2 for a 165 us)
      because of CSPLIT transactions.
      For the OUT iso stream there no such restriction. uframe 0-5 are possible.
      
      The idea of this patch is that the first uframe are precious (for IN TT iso
      stream) and we should allocate the last uframes first if possible.
      
      For that we reverse the order of uframe allocation (last uframe first).
      
      Here an example :
      
      hid interrupt stream
      ----------------------------------------------------------------------
      uframe                |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
      ----------------------------------------------------------------------
      max_tt_usecs          | 125 | 125 | 125 | 125 | 125 | 125 | 30  |  0  |
      ----------------------------------------------------------------------
      used usecs on a frame | 13  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
      ----------------------------------------------------------------------
      
      iso OUT stream
      ----------------------------------------------------------------------
      uframe                |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
      ----------------------------------------------------------------------
      max_tt_usecs          | 125 | 125 | 125 | 125 | 125 | 125 | 30  |  0  |
      ----------------------------------------------------------------------
      used usecs on a frame | 13  | 125 |  39 |  0  |  0  |  0  |  0  |  0  |
      ----------------------------------------------------------------------
      
      There no place for iso IN stream  (uframe 0-2 are used) and we got "cannot
      submit datapipe for urb 0, error -28: not enough bandwidth" error.
      
      With the patch this become.
      
      iso OUT stream
      ----------------------------------------------------------------------
      uframe                |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
      ----------------------------------------------------------------------
      max_tt_usecs          | 125 | 125 | 125 | 125 | 125 | 125 | 30  |  0  |
      ----------------------------------------------------------------------
      used usecs on a frame |  13 |  0  |  0  |  0  | 125 |  39 |  0  |  0  |
      ----------------------------------------------------------------------
      
      iso IN stream
      ----------------------------------------------------------------------
      uframe                |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |
      ----------------------------------------------------------------------
      max_tt_usecs          | 125 | 125 | 125 | 125 | 125 | 125 | 30  |  0  |
      ----------------------------------------------------------------------
      used usecs on a frame |  13 |  0  | 125 | 40  | 125 |  39 |  0  |  0  |
      ----------------------------------------------------------------------
      Signed-off-by: default avatarMatthieu Castet <matthieu.castet@parrot.com>
      Signed-off-by: default avatarThomas Poussevin <thomas.poussevin@parrot.com>
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      317451c1
    • Alan Stern's avatar
      usb-storage: Accept 8020i-protocol commands longer than 12 bytes · a7a656cf
      Alan Stern authored
      commit 2f640bf4 upstream.
      
      The 8020i protocol (also 8070i and QIC-157) uses 12-byte commands;
      shorter commands must be padded.  Simon Detheridge reports that his
      3-TB USB disk drive claims to use the 8020i protocol (which is
      normally meant for ATAPI devices like CD drives), and because of its
      large size, the disk drive requires the use of 16-byte commands.
      However the usb_stor_pad12_command() routine in usb-storage always
      sets the command length to 12, making the drive impossible to use.
      
      Since the SFF-8020i specification allows for 16-byte commands in
      future extensions, we may as well accept them.  This patch (as1490)
      changes usb_stor_pad12_command() to leave commands larger than 12
      bytes alone rather than truncating them.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Tested-by: default avatarSimon Detheridge <simon@widgit.com>
      CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a7a656cf
    • Andrew Worsley's avatar
      USB: Fix Corruption issue in USB ftdi driver ftdi_sio.c · b987edee
      Andrew Worsley authored
      commit b1ffb4c8 upstream.
      
      Fix for ftdi_set_termios() glitching output
      
      ftdi_set_termios() is constantly setting the baud rate, data bits and parity
      unnecessarily on every call, . When called while characters are being
      transmitted can cause the FTDI chip to corrupt the serial port bit stream
      output by stalling the output half a bit during the output of a character.
      Simple fix by skipping this setting if the baud rate/data bits/parity are
      unchanged.
      Signed-off-by: default avatarAndrew Worsley <amworsley@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b987edee
    • Bart Hartgers's avatar
      USB: ark3116 initialisation fix · 1c9e0eba
      Bart Hartgers authored
      commit 583182ba upstream.
      
      This patch for the usb serial ark3116 driver fixes an initialisation
      ordering bug that gets triggered on hotplug when using at least recent
      debian/ubuntu userspace. Without it, ark3116 serial cables don't work.
      Signed-off-by: default avatarBart Hartgers <bart.hartgers@gmail.com>
      Tested-by: law_ence.dev@ntlworld.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1c9e0eba
    • Alan Stern's avatar
      USB: workaround for bug in old version of GCC · 3d396a3b
      Alan Stern authored
      commit 97ff22ee upstream.
      
      This patch (as1491) works around a bug in GCC-3.4.6, which is still
      supposed to be supported.  The number of microseconds in the udelay()
      call in quirk_usb_disable_ehci() is fixed at 100, but the compiler
      doesn't understand this and generates a link-time error.  So we
      replace the otherwise unused variable "delta" with a simple constant
      100.  This same pattern is already used in other delay loops in that
      source file.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarKonrad Rzepecki <krzepecki@dentonet.pl>
      Tested-by: default avatarKonrad Rzepecki <krzepecki@dentonet.pl>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3d396a3b
    • Havard Skinnemoen's avatar
      USB: cdc-acm: Fix disconnect() vs close() race · bbf54d17
      Havard Skinnemoen authored
      commit 5dc2470c upstream.
      
      There's a race between the USB disconnect handler and the TTY close
      handler which may cause the acm object to be freed while it's still
      being used. This may lead to things like
      
      http://article.gmane.org/gmane.linux.usb.general/54250
      
      and
      
      https://lkml.org/lkml/2011/5/29/64
      
      This is the simplest fix I could come up with. Holding on to open_mutex
      while closing the TTY device prevents acm_disconnect() from freeing the
      acm object between acm->port.count drops to 0 and the TTY side of the
      cleanups are finalized.
      Signed-off-by: default avatarHavard Skinnemoen <hskinnemoen@google.com>
      Cc: Oliver Neukum <oliver@neukum.name>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      bbf54d17
    • wangyanqing's avatar
      USB: serial: pl2303: rm duplicate id · 0841db56
      wangyanqing authored
      commit 0c165955 upstream.
      
      I get report from customer that his usb-serial
      converter doesn't work well,it sometimes work,
      but sometimes it doesn't.
      
      The usb-serial converter's id:
      vendor_id product_id
      0x4348    0x5523
      
      Then I search the usb-serial codes, and there are
      two drivers announce support this device, pl2303
      and ch341, commit 026dfaf1 cause it. Through many
      times to test, ch341 works well with this device,
      and pl2303 doesn't work quite often(it just work quite little).
      
      ch341 works well with this device, so we doesn't
      need pl2303 to support.I try to revert 026dfaf1 first,
      but it failed. So I prepare this patch by hand to revert it.
      Signed-off-by: default avatarWang YanQing <Udknight@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0841db56
    • Ferenc Wagner's avatar
      USB: option: add PID of Huawei E173s 3G modem · fe18f66a
      Ferenc Wagner authored
      commit 4aa3648c upstream.
      Signed-off-by: default avatarFerenc Wagner <wferi@niif.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fe18f66a
    • zheng.zhijian@zte.com.cn's avatar
      USB: option: release new PID for ZTE 3G modem · ad8a9b61
      zheng.zhijian@zte.com.cn authored
      commit 46b5a277 upstream.
      
      This patch adds new PIDs for ZTE 3G modem, after we confirm it and tested.
      Thanks for Dan's work at kernel option devier.
      Signed-off-by: default avatarAlvin.Zheng <zheng.zhijian@zte.com.cn>
      Signed-off-by: default avatarwsalvin <wsalvin@yahoo.com.cn>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ad8a9b61
    • Alan Stern's avatar
      USB: XHCI: resume root hubs when the controller resumes · a07b39fc
      Alan Stern authored
      commit f69e3120 upstream.
      
      This patch (as1494) fixes a problem in xhci-hcd's resume routine.
      When the controller is runtime-resumed, this can only mean that one of
      the two root hubs has made a wakeup request and therefore needs to be
      resumed as well.  Rather than try to determine which root hub requires
      attention (which might be difficult in the case where a new
      non-SuperSpeed device has been plugged in), the patch simply resumes
      both root hubs.
      
      Without this change, there is a race: The controller might be put back
      to sleep before it can activate its IRQ line, and the wakeup condition
      might never get handled.
      
      The patch also simplifies the logic in xhci_resume a little, combining
      some repeated flag settings into a single pair of statements.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a07b39fc
    • Don Zickus's avatar
      usb, xhci: fix lockdep warning on endpoint timeout · 614b35af
      Don Zickus authored
      commit f43d6231 upstream.
      
      While debugging a usb3 problem, I stumbled upon this lockdep warning.
      
      Oct 18 21:41:17 dhcp47-74 kernel: =================================
      Oct 18 21:41:17 dhcp47-74 kernel: [ INFO: inconsistent lock state ]
      Oct 18 21:41:17 dhcp47-74 kernel: 3.1.0-rc4nmi+ #456
      Oct 18 21:41:17 dhcp47-74 kernel: ---------------------------------
      Oct 18 21:41:17 dhcp47-74 kernel: inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
      Oct 18 21:41:17 dhcp47-74 kernel: swapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
      Oct 18 21:41:17 dhcp47-74 kernel: (&(&xhci->lock)->rlock){?.-...}, at: [<ffffffffa0228990>] xhci_stop_endpoint_command_watchdog+0x30/0x340 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel: {IN-HARDIRQ-W} state was registered at:
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8109a941>] __lock_acquire+0x781/0x1660
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8109bed7>] lock_acquire+0x97/0x170
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff81501b46>] _raw_spin_lock+0x46/0x80
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffffa02299fa>] xhci_irq+0x3a/0x1960 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffffa022b351>] xhci_msi_irq+0x31/0x40 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810d2305>] handle_irq_event_percpu+0x85/0x320
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810d25e8>] handle_irq_event+0x48/0x70
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810d537d>] handle_edge_irq+0x6d/0x130
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810048c9>] handle_irq+0x49/0xa0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8150d56d>] do_IRQ+0x5d/0xe0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff815029b0>] ret_from_intr+0x0/0x13
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff81388aca>] usb_set_device_state+0x8a/0x180
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8138f038>] usb_add_hcd+0x2b8/0x730
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffffa022ed7e>] xhci_pci_probe+0x9e/0xd4 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8127915f>] local_pci_probe+0x5f/0xd0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8127a569>] pci_device_probe+0x119/0x120
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff81334473>] driver_probe_device+0xa3/0x2c0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8133473b>] __driver_attach+0xab/0xb0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8133373c>] bus_for_each_dev+0x6c/0xa0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff813341fe>] driver_attach+0x1e/0x20
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff81333b88>] bus_add_driver+0x1f8/0x2b0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff81334df6>] driver_register+0x76/0x140
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8127a7c6>] __pci_register_driver+0x66/0xe0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffffa013c04a>] snd_timer_find+0x4a/0x70 [snd_timer]
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffffa013c00e>] snd_timer_find+0xe/0x70 [snd_timer]
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810001d3>] do_one_initcall+0x43/0x180
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff810a9ed2>] sys_init_module+0x92/0x1f0
      Oct 18 21:41:17 dhcp47-74 kernel:  [<ffffffff8150ab6b>] system_call_fastpath+0x16/0x1b
      Oct 18 21:41:17 dhcp47-74 kernel: irq event stamp: 631984
      Oct 18 21:41:17 dhcp47-74 kernel: hardirqs last  enabled at (631984): [<ffffffff81502720>] _raw_spin_unlock_irq+0x30/0x50
      Oct 18 21:41:17 dhcp47-74 kernel: hardirqs last disabled at (631983): [<ffffffff81501c49>] _raw_spin_lock_irq+0x19/0x90
      Oct 18 21:41:17 dhcp47-74 kernel: softirqs last  enabled at (631980): [<ffffffff8105ff63>] _local_bh_enable+0x13/0x20
      Oct 18 21:41:17 dhcp47-74 kernel: softirqs last disabled at (631981): [<ffffffff8150ce6c>] call_softirq+0x1c/0x30
      Oct 18 21:41:17 dhcp47-74 kernel:
      Oct 18 21:41:17 dhcp47-74 kernel: other info that might help us debug this:
      Oct 18 21:41:17 dhcp47-74 kernel: Possible unsafe locking scenario:
      Oct 18 21:41:17 dhcp47-74 kernel:
      Oct 18 21:41:17 dhcp47-74 kernel:       CPU0
      Oct 18 21:41:17 dhcp47-74 kernel:       ----
      Oct 18 21:41:17 dhcp47-74 kernel:  lock(&(&xhci->lock)->rlock);
      Oct 18 21:41:17 dhcp47-74 kernel:  <Interrupt>
      Oct 18 21:41:17 dhcp47-74 kernel:    lock(&(&xhci->lock)->rlock);
      Oct 18 21:41:17 dhcp47-74 kernel:
      Oct 18 21:41:17 dhcp47-74 kernel: *** DEADLOCK ***
      Oct 18 21:41:17 dhcp47-74 kernel:
      Oct 18 21:41:17 dhcp47-74 kernel: 1 lock held by swapper/0:
      Oct 18 21:41:17 dhcp47-74 kernel: #0:  (&ep->stop_cmd_timer){+.-...}, at: [<ffffffff8106abf2>] run_timer_softirq+0x162/0x570
      Oct 18 21:41:17 dhcp47-74 kernel:
      Oct 18 21:41:17 dhcp47-74 kernel: stack backtrace:
      Oct 18 21:41:17 dhcp47-74 kernel: Pid: 0, comm: swapper Tainted: G        W   3.1.0-rc4nmi+ #456
      Oct 18 21:41:17 dhcp47-74 kernel: Call Trace:
      Oct 18 21:41:17 dhcp47-74 kernel: <IRQ>  [<ffffffff81098ed7>] print_usage_bug+0x227/0x270
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff810999c6>] mark_lock+0x346/0x410
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8109a7de>] __lock_acquire+0x61e/0x1660
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81099893>] ? mark_lock+0x213/0x410
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8109bed7>] lock_acquire+0x97/0x170
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffffa0228990>] ? xhci_stop_endpoint_command_watchdog+0x30/0x340 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81501b46>] _raw_spin_lock+0x46/0x80
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffffa0228990>] ? xhci_stop_endpoint_command_watchdog+0x30/0x340 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffffa0228990>] xhci_stop_endpoint_command_watchdog+0x30/0x340 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8106abf2>] ? run_timer_softirq+0x162/0x570
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8106ac9d>] run_timer_softirq+0x20d/0x570
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8106abf2>] ? run_timer_softirq+0x162/0x570
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffffa0228960>] ? xhci_queue_isoc_tx_prepare+0x8e0/0x8e0 [xhci_hcd]
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff810604d2>] __do_softirq+0xf2/0x3f0
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81020edd>] ? lapic_next_event+0x1d/0x30
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81090d4e>] ? clockevents_program_event+0x5e/0x90
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8150ce6c>] call_softirq+0x1c/0x30
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8100484d>] do_softirq+0x8d/0xc0
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8105ff35>] irq_exit+0xe5/0x100
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8150d65e>] smp_apic_timer_interrupt+0x6e/0x99
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff8150b6f0>] apic_timer_interrupt+0x70/0x80
      Oct 18 21:41:17 dhcp47-74 kernel: <EOI>  [<ffffffff81095d8d>] ? trace_hardirqs_off+0xd/0x10
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff812ddb76>] ? acpi_idle_enter_bm+0x227/0x25b
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff812ddb71>] ? acpi_idle_enter_bm+0x222/0x25b
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff813eda63>] cpuidle_idle_call+0x103/0x290
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81002155>] cpu_idle+0xe5/0x160
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff814e7f50>] rest_init+0xe0/0xf0
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff814e7e70>] ? csum_partial_copy_generic+0x170/0x170
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81df8e23>] start_kernel+0x3fc/0x407
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81df8321>] x86_64_start_reservations+0x131/0x135
      Oct 18 21:41:17 dhcp47-74 kernel: [<ffffffff81df8412>] x86_64_start_kernel+0xed/0xf4
      Oct 18 21:41:17 dhcp47-74 kernel: xhci_hcd 0000:00:14.0: xHCI host not responding to stop endpoint command.
      Oct 18 21:41:17 dhcp47-74 kernel: xhci_hcd 0000:00:14.0: Assuming host is dying, halting host.
      Oct 18 21:41:17 dhcp47-74 kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
      Oct 18 21:41:17 dhcp47-74 kernel: usb 3-4: device descriptor read/8, error -110
      Oct 18 21:41:17 dhcp47-74 kernel: usb 3-4: device descriptor read/8, error -22
      Oct 18 21:41:17 dhcp47-74 kernel: hub 3-0:1.0: cannot disable port 4 (err = -19)
      
      Basically what is happening is in xhci_stop_endpoint_command_watchdog()
      the xhci->lock is grabbed with just spin_lock.  What lockdep deduces is
      that if an interrupt occurred while in this function it would deadlock
      with xhci_irq because that function also grabs the xhci->lock.
      
      Fixing it is trivial by using spin_lock_irqsave instead.
      
      This should be queued to stable kernels as far back as 2.6.33.
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      614b35af
    • Don Zickus's avatar
      usb, xhci: Clear warm reset change event during init · 2e6f55fc
      Don Zickus authored
      commit 79c3dd81 upstream.
      
      I noticed on my Panther Point system that I wasn't getting hotplug events
      for my usb3.0 disk on a usb3 port.  I tracked it down to the fact that the
      system had the warm reset change bit still set.  This seemed to block future
      events from being received, including a hotplug event.
      
      Clearing this bit during initialization allowed the hotplug event to be
      received and the disk to be recognized correctly.
      
      This patch should be backported to kernels as old as 2.6.39.
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      2e6f55fc
    • Sarah Sharp's avatar
      xhci: Set slot and ep0 flags for address command. · bd8a076e
      Sarah Sharp authored
      commit d31c285b upstream.
      
      Matt's AsMedia xHCI host controller was responding with a Context Error
      to an address device command after a configured device reset.  Some
      sequence of events leads both the slot and endpoint zero add flags
      cleared to zero, which the AsMedia host doesn't like:
      
      [  223.701839] xhci_hcd 0000:03:00.0: Slot ID 1 Input Context:
      [  223.701841] xhci_hcd 0000:03:00.0: @ffff880137b25000 (virt) @ffffc000 (dma) 0x000000 - drop flags
      [  223.701843] xhci_hcd 0000:03:00.0: @ffff880137b25004 (virt) @ffffc004 (dma) 0x000000 - add flags
      [  223.701846] xhci_hcd 0000:03:00.0: @ffff880137b25008 (virt) @ffffc008 (dma) 0x000000 - rsvd2[0]
      [  223.701848] xhci_hcd 0000:03:00.0: @ffff880137b2500c (virt) @ffffc00c (dma) 0x000000 - rsvd2[1]
      [  223.701850] xhci_hcd 0000:03:00.0: @ffff880137b25010 (virt) @ffffc010 (dma) 0x000000 - rsvd2[2]
      [  223.701852] xhci_hcd 0000:03:00.0: @ffff880137b25014 (virt) @ffffc014 (dma) 0x000000 - rsvd2[3]
      [  223.701854] xhci_hcd 0000:03:00.0: @ffff880137b25018 (virt) @ffffc018 (dma) 0x000000 - rsvd2[4]
      [  223.701857] xhci_hcd 0000:03:00.0: @ffff880137b2501c (virt) @ffffc01c (dma) 0x000000 - rsvd2[5]
      [  223.701858] xhci_hcd 0000:03:00.0: Slot Context:
      [  223.701860] xhci_hcd 0000:03:00.0: @ffff880137b25020 (virt) @ffffc020 (dma) 0x8400000 - dev_info
      [  223.701862] xhci_hcd 0000:03:00.0: @ffff880137b25024 (virt) @ffffc024 (dma) 0x010000 - dev_info2
      [  223.701864] xhci_hcd 0000:03:00.0: @ffff880137b25028 (virt) @ffffc028 (dma) 0x000000 - tt_info
      [  223.701866] xhci_hcd 0000:03:00.0: @ffff880137b2502c (virt) @ffffc02c (dma) 0x000000 - dev_state
      [  223.701869] xhci_hcd 0000:03:00.0: @ffff880137b25030 (virt) @ffffc030 (dma) 0x000000 - rsvd[0]
      [  223.701871] xhci_hcd 0000:03:00.0: @ffff880137b25034 (virt) @ffffc034 (dma) 0x000000 - rsvd[1]
      [  223.701873] xhci_hcd 0000:03:00.0: @ffff880137b25038 (virt) @ffffc038 (dma) 0x000000 - rsvd[2]
      [  223.701875] xhci_hcd 0000:03:00.0: @ffff880137b2503c (virt) @ffffc03c (dma) 0x000000 - rsvd[3]
      [  223.701877] xhci_hcd 0000:03:00.0: Endpoint 00 Context:
      [  223.701879] xhci_hcd 0000:03:00.0: @ffff880137b25040 (virt) @ffffc040 (dma) 0x000000 - ep_info
      [  223.701881] xhci_hcd 0000:03:00.0: @ffff880137b25044 (virt) @ffffc044 (dma) 0x2000026 - ep_info2
      [  223.701883] xhci_hcd 0000:03:00.0: @ffff880137b25048 (virt) @ffffc048 (dma) 0xffffe8e0 - deq
      [  223.701885] xhci_hcd 0000:03:00.0: @ffff880137b25050 (virt) @ffffc050 (dma) 0x000000 - tx_info
      [  223.701887] xhci_hcd 0000:03:00.0: @ffff880137b25054 (virt) @ffffc054 (dma) 0x000000 - rsvd[0]
      [  223.701889] xhci_hcd 0000:03:00.0: @ffff880137b25058 (virt) @ffffc058 (dma) 0x000000 - rsvd[1]
      [  223.701892] xhci_hcd 0000:03:00.0: @ffff880137b2505c (virt) @ffffc05c (dma) 0x000000 - rsvd[2]
      ...
      [  223.701927] xhci_hcd 0000:03:00.0: // Ding dong!
      [  223.701992] xhci_hcd 0000:03:00.0: Setup ERROR: address device command for slot 1.
      
      The xHCI spec says that both flags must be set to one for the Address
      Device command.  When the device is first enumerated,
      xhci_setup_addressable_virt_dev() does set those flags.  However, when
      the device is addressed after it has been reset in the configured state,
      xhci_setup_addressable_virt_dev() is not called, and
      xhci_copy_ep0_dequeue_into_input_ctx() is called instead.  That function
      relies on the flags being set up by previous commands, which apparently
      isn't a good assumption.
      
      Move the setting of the flags into the common parent function.
      
      This should be queued for stable kernels as old as 2.6.35, since that
      was the first introduction of xhci_copy_ep0_dequeue_into_input_ctx.
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarMatt <mdm@iinet.net.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      bd8a076e
    • Claudio Scordino's avatar
      drivers/base/node.c: fix compilation error with older versions of gcc · f353fc7d
      Claudio Scordino authored
      commit 91a13c28 upstream.
      
      Patch to fix the error message "directives may not be used inside a macro
      argument" which appears when the kernel is compiled for the cris architecture.
      Signed-off-by: default avatarClaudio Scordino <claudio@evidence.eu.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f353fc7d
    • Axel Lin's avatar
      pcie-gadget-spear: Add "platform:" prefix for platform modalias · 0f48082f
      Axel Lin authored
      commit 161f1419 upstream.
      
      Since 43cc71ee (platform: prefix MODALIAS
      with "platform:"), the platform modalias is prefixed with "platform:".
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Acked-by: default avatarPratyush Anand <pratyush.anand@st.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0f48082f
    • Jeff Layton's avatar
      nfs: when attempting to open a directory, fall back on normal lookup (try #5) · 124e3524
      Jeff Layton authored
      commit 1788ea6e upstream.
      
      commit d953126a changed how nfs_atomic_lookup handles an -EISDIR return
      from an OPEN call. Prior to that patch, that caused the client to fall
      back to doing a normal lookup. When that patch went in, the code began
      returning that error to userspace. The d_revalidate codepath however
      never had the corresponding change, so it was still possible to end up
      with a NULL ctx->state pointer after that.
      
      That patch caused a regression. When we attempt to open a directory that
      does not have a cached dentry, that open now errors out with EISDIR. If
      you attempt the same open with a cached dentry, it will succeed.
      
      Fix this by reverting the change in nfs_atomic_lookup and allowing
      attempts to open directories to fall back to a normal lookup
      
      Also, add a NFSv4-specific f_ops->open routine that just returns
      -ENOTDIR. This should never be called if things are working properly,
      but if it ever is, then the dprintk may help in debugging.
      
      To facilitate this, a new file_operations field is also added to the
      nfs_rpc_ops struct.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      124e3524
    • Jiri Slaby's avatar
      TTY: ldisc, wait for ldisc infinitely in hangup · ecaaa924
      Jiri Slaby authored
      commit 0c73c08e upstream.
      
      For /dev/console case, we do not kill all ldisc users. It's due to
      redirected_tty_write test in __tty_hangup. In that case there still
      might be a process waiting e.g. in n_tty_read for input.
      
      We wait for such processes to disappear. The problem is that we use a
      timeout. After this timeout, we continue closing the ldisc and start
      freeing tty resources. It obviously leads to crashes when the other
      process is woken.
      
      So to fix this, we wait infinitely before reiniting the ldisc. (The
      tiocsetd remains untouched -- times out after 5s.)
      
      This is nicely reproducible with this run from shell:
        exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
      and stopping a getty like:
        systemctl stop serial-getty@ttyS0.service
      
      The crash proper may be produced only under load or with constified
      timing the same as for 92f6fa09.
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Cc: Dave Young <hidave.darkstar@gmail.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Cc: Dmitriy Matrosov <sgf.dma@gmail.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ecaaa924