1. 11 Dec, 2012 14 commits
    • Eric Paris's avatar
      inotify: automatically restart syscalls · 1ca39ab9
      Eric Paris authored
      We were mistakenly returning EINTR when we found an outstanding signal.
      Instead we should returen ERESTARTSYS and allow the kernel to handle
      things the right way.
      
      Patch-from: Oleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      1ca39ab9
    • Lino Sanfilippo's avatar
      inotify: dont skip removal of watch descriptor if creation of ignored event failed · 8b99c3cc
      Lino Sanfilippo authored
      In inotify_ignored_and_remove_idr() the removal of a watch descriptor is skipped
      if the allocation of an ignored event failed and we are leaking memory (the
      watch descriptor and the mark linked to it).
      This patch ensures that the watch descriptor is removed regardless of whether
      event creation failed or not.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      8b99c3cc
    • Lino Sanfilippo's avatar
      fanotify: dont merge permission events · 03a1cec1
      Lino Sanfilippo authored
      Boyd Yang reported a problem for the case that multiple threads of the same
      thread group are waiting for a reponse for a permission event.
      In this case it is possible that some of the threads are never woken up, even
      if the response for the event has been received
      (see http://marc.info/?l=linux-kernel&m=131822913806350&w=2).
      
      The reason is that we are currently merging permission events if they belong to
      the same thread group. But we are not prepared to wake up more than one waiter
      for each event. We do
      
      wait_event(group->fanotify_data.access_waitq, event->response ||
      			atomic_read(&group->fanotify_data.bypass_perm));
      and after that
        event->response = 0;
      
      which is the reason that even if we woke up all waiters for the same event
      some of them may see event->response being already set 0 again, then go back to
      sleep and block forever.
      
      With this patch we avoid that more than one thread is waiting for a response
      by not merging permission events for the same thread group any more.
      Reported-by: default avatarBoyd Yang <boyd.yang@gmail.com>
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilipp@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      03a1cec1
    • Eric Paris's avatar
      fsnotify: make fasync generic for both inotify and fanotify · 0a6b6bd5
      Eric Paris authored
      inotify is supposed to support async signal notification when information
      is available on the inotify fd.  This patch moves that support to generic
      fsnotify functions so it can be used by all notification mechanisms.
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      0a6b6bd5
    • Lino Sanfilippo's avatar
      fsnotify: change locking order · 6960b0d9
      Lino Sanfilippo authored
      On Mon, Aug 01, 2011 at 04:38:22PM -0400, Eric Paris wrote:
      >
      > I finally built and tested a v3.0 kernel with these patches (I know I'm
      > SOOOOOO far behind).  Not what I hoped for:
      >
      > > [  150.937798] VFS: Busy inodes after unmount of tmpfs. Self-destruct in 5 seconds.  Have a nice day...
      > > [  150.945290] BUG: unable to handle kernel NULL pointer dereference at 0000000000000070
      > > [  150.946012] IP: [<ffffffff810ffd58>] shmem_free_inode+0x18/0x50
      > > [  150.946012] PGD 2bf9e067 PUD 2bf9f067 PMD 0
      > > [  150.946012] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
      > > [  150.946012] CPU 0
      > > [  150.946012] Modules linked in: nfs lockd fscache auth_rpcgss nfs_acl sunrpc ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables ext4 jbd2 crc16 joydev ata_piix i2c_piix4 pcspkr uinput ipv6 autofs4 usbhid [last unloaded: scsi_wait_scan]
      > > [  150.946012]
      > > [  150.946012] Pid: 2764, comm: syscall_thrash Not tainted 3.0.0+ #1 Red Hat KVM
      > > [  150.946012] RIP: 0010:[<ffffffff810ffd58>]  [<ffffffff810ffd58>] shmem_free_inode+0x18/0x50
      > > [  150.946012] RSP: 0018:ffff88002c2e5df8  EFLAGS: 00010282
      > > [  150.946012] RAX: 000000004e370d9f RBX: 0000000000000000 RCX: ffff88003a029438
      > > [  150.946012] RDX: 0000000033630a5f RSI: 0000000000000000 RDI: ffff88003491c240
      > > [  150.946012] RBP: ffff88002c2e5e08 R08: 0000000000000000 R09: 0000000000000000
      > > [  150.946012] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88003a029428
      > > [  150.946012] R13: ffff88003a029428 R14: ffff88003a029428 R15: ffff88003499a610
      > > [  150.946012] FS:  00007f5a05420700(0000) GS:ffff88003f600000(0000) knlGS:0000000000000000
      > > [  150.946012] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      > > [  150.946012] CR2: 0000000000000070 CR3: 000000002a662000 CR4: 00000000000006f0
      > > [  150.946012] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      > > [  150.946012] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      > > [  150.946012] Process syscall_thrash (pid: 2764, threadinfo ffff88002c2e4000, task ffff88002bfbc760)
      > > [  150.946012] Stack:
      > > [  150.946012]  ffff88003a029438 ffff88003a029428 ffff88002c2e5e38 ffffffff81102f76
      > > [  150.946012]  ffff88003a029438 ffff88003a029598 ffffffff8160f9c0 ffff88002c221250
      > > [  150.946012]  ffff88002c2e5e68 ffffffff8115e9be ffff88002c2e5e68 ffff88003a029438
      > > [  150.946012] Call Trace:
      > > [  150.946012]  [<ffffffff81102f76>] shmem_evict_inode+0x76/0x130
      > > [  150.946012]  [<ffffffff8115e9be>] evict+0x7e/0x170
      > > [  150.946012]  [<ffffffff8115ee40>] iput_final+0xd0/0x190
      > > [  150.946012]  [<ffffffff8115ef33>] iput+0x33/0x40
      > > [  150.946012]  [<ffffffff81180205>] fsnotify_destroy_mark_locked+0x145/0x160
      > > [  150.946012]  [<ffffffff81180316>] fsnotify_destroy_mark+0x36/0x50
      > > [  150.946012]  [<ffffffff81181937>] sys_inotify_rm_watch+0x77/0xd0
      > > [  150.946012]  [<ffffffff815aca52>] system_call_fastpath+0x16/0x1b
      > > [  150.946012] Code: 67 4a 00 b8 e4 ff ff ff eb aa 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 48 83 ec 10 48 89 1c 24 4c 89 64 24 08 48 8b 9f 40 05 00 00
      > > [  150.946012]  83 7b 70 00 74 1c 4c 8d a3 80 00 00 00 4c 89 e7 e8 d2 5d 4a
      > > [  150.946012] RIP  [<ffffffff810ffd58>] shmem_free_inode+0x18/0x50
      > > [  150.946012]  RSP <ffff88002c2e5df8>
      > > [  150.946012] CR2: 0000000000000070
      >
      > Looks at aweful lot like the problem from:
      > http://www.spinics.net/lists/linux-fsdevel/msg46101.html
      >
      
      I tried to reproduce this bug with your test program, but without success.
      However, if I understand correctly, this occurs since we dont hold any locks when
      we call iput() in mark_destroy(), right?
      With the patches you tested, iput() is also not called within any lock, since the
      groups mark_mutex is released temporarily before iput() is called.  This is, since
      the original codes behaviour is similar.
      However since we now have a mutex as the biggest lock, we can do what you
      suggested (http://www.spinics.net/lists/linux-fsdevel/msg46107.html) and
      call iput() with the mutex held to avoid the race.
      The patch below implements this. It uses nested locking to avoid deadlock in case
      we do the final iput() on an inode which still holds marks and thus would take
      the mutex again when calling fsnotify_inode_delete() in destroy_inode().
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      6960b0d9
    • Lino Sanfilippo's avatar
      fsnotify: dont put marks on temporary list when clearing marks by group · 64c20d2a
      Lino Sanfilippo authored
      In clear_marks_by_group_flags() the mark list of a group is iterated and the
      marks are put on a temporary list.
      Since we introduced fsnotify_destroy_mark_locked() we dont need the temp list
      any more and are able to remove the marks while the mark list is iterated and
      the mark list mutex is held.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      64c20d2a
    • Lino Sanfilippo's avatar
      fsnotify: introduce locked versions of fsnotify_add_mark() and fsnotify_remove_mark() · d5a335b8
      Lino Sanfilippo authored
      This patch introduces fsnotify_add_mark_locked() and fsnotify_remove_mark_locked()
      which are essentially the same as fsnotify_add_mark() and fsnotify_remove_mark() but
      assume that the caller has already taken the groups mark mutex.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      d5a335b8
    • Lino Sanfilippo's avatar
      fsnotify: pass group to fsnotify_destroy_mark() · e2a29943
      Lino Sanfilippo authored
      In fsnotify_destroy_mark() dont get the group from the passed mark anymore,
      but pass the group itself as an additional parameter to the function.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      e2a29943
    • Lino Sanfilippo's avatar
      fsnotify: use a mutex instead of a spinlock to protect a groups mark list · 986ab098
      Lino Sanfilippo authored
      Replaces the groups mark_lock spinlock with a mutex. Using a mutex instead
      of a spinlock results in more flexibility (i.e it allows to sleep while the
      lock is held).
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      986ab098
    • Lino Sanfilippo's avatar
      fanotify: add an extra flag to mark_remove_from_mask that indicates wheather a... · 6dfbd149
      Lino Sanfilippo authored
      fanotify: add an extra flag to mark_remove_from_mask that indicates wheather a mark should be destroyed
      
      This patch adds an extra flag to mark_remove_from_mask() to inform the caller if
      the mark should be destroyed.
      With this we dont destroy the mark implicitly in the function itself any more
      but let the caller handle it.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      6dfbd149
    • Lino Sanfilippo's avatar
      fsnotify: take groups mark_lock before mark lock · 104d06f0
      Lino Sanfilippo authored
      Race-free addition and removal of a mark to a groups mark list would be easier
      if we could lock the mark list of group before we lock the specific mark.
      This patch changes the order used to add/remove marks to/from mark lists from
      
      1. mark->lock
      2. group->mark_lock
      3. inode->i_lock
      
      to
      
      1. group->mark_lock
      2. mark->lock
      3. inode->i_lock
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      104d06f0
    • Lino Sanfilippo's avatar
      fsnotify: use reference counting for groups · 23e964c2
      Lino Sanfilippo authored
      Get a group ref for each mark that is added to the groups list and release that
      ref when the mark is freed in fsnotify_put_mark().
      We also use get a group reference for duplicated marks and for private event
      data.
      Now we dont free a group any more when the number of marks becomes 0 but when
      the groups ref count does. Since this will only happen when all marks are removed
      from a groups mark list, we dont have to set the groups number of marks to 1 at
      group creation.
      
      Beside clearing all marks in fsnotify_destroy_group() we do also flush the
      groups event queue. This is since events may hold references to groups (due to
      private event data) and we have to put those references first before we get a
      chance to put the final ref, which will result in a call to
      fsnotify_final_destroy_group().
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      23e964c2
    • Lino Sanfilippo's avatar
      fsnotify: introduce fsnotify_get_group() · 98612952
      Lino Sanfilippo authored
      Introduce fsnotify_get_group() which increments the reference counter of a group.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      98612952
    • Lino Sanfilippo's avatar
      inotify, fanotify: replace fsnotify_put_group() with fsnotify_destroy_group() · d8153d4d
      Lino Sanfilippo authored
      Currently in fsnotify_put_group() the ref count of a group is decremented and if
      it becomes 0 fsnotify_destroy_group() is called. Since a groups ref count is only
      at group creation set to 1 and never increased after that a call to fsnotify_put_group()
      always results in a call to fsnotify_destroy_group().
      With this patch fsnotify_destroy_group() is called directly.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      d8153d4d
  2. 30 Sep, 2012 2 commits
    • Linus Torvalds's avatar
      Linux 3.6 · a0d271cb
      Linus Torvalds authored
      a0d271cb
    • Miklos Szeredi's avatar
      vfs: dcache: fix deadlock in tree traversal · 8110e16d
      Miklos Szeredi authored
      IBM reported a deadlock in select_parent().  This was found to be caused
      by taking rename_lock when already locked when restarting the tree
      traversal.
      
      There are two cases when the traversal needs to be restarted:
      
       1) concurrent d_move(); this can only happen when not already locked,
          since taking rename_lock protects against concurrent d_move().
      
       2) racing with final d_put() on child just at the moment of ascending
          to parent; rename_lock doesn't protect against this rare race, so it
          can happen when already locked.
      
      Because of case 2, we need to be able to handle restarting the traversal
      when rename_lock is already held.  This patch fixes all three callers of
      try_to_ascend().
      
      IBM reported that the deadlock is gone with this patch.
      
      [ I rewrote the patch to be smaller and just do the "goto again" if the
        lock was already held, but credit goes to Miklos for the real work.
         - Linus ]
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8110e16d
  3. 29 Sep, 2012 2 commits
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 6a3e3dbe
      Linus Torvalds authored
      Pull IOMMU fixes from Joerg Roedel:
       "Two small patches:
      
      	* One patch to fix the function declarations for
      	  !CONFIG_IOMMU_API. This is causing build errors
      	  in linux-next and should be fixed for v3.6.
      
      	* Another patch to fix an IOMMU group related NULL pointer
      	  dereference."
      
      * tag 'iommu-fixes-v3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu/amd: Fix wrong assumption in iommu-group specific code
        iommu: static inline iommu group stub functions
      6a3e3dbe
    • Linus Torvalds's avatar
      Merge git://git.infradead.org/users/willy/linux-nvme · 21e98932
      Linus Torvalds authored
      Pull NVMe driver fixes from Matthew Wilcox:
       "Now that actual hardware has been released (don't have any yet
        myself), people are starting to want some of these fixes merged."
      
      Willy doesn't have hardware? Guys...
      
      * git://git.infradead.org/users/willy/linux-nvme:
        NVMe: Cancel outstanding IOs on queue deletion
        NVMe: Free admin queue memory on initialisation failure
        NVMe: Use ida for nvme device instance
        NVMe: Fix whitespace damage in nvme_init
        NVMe: handle allocation failure in nvme_map_user_pages()
        NVMe: Fix uninitialized iod compiler warning
        NVMe: Do not set IO queue depth beyond device max
        NVMe: Set block queue max sectors
        NVMe: use namespace id for nvme_get_features
        NVMe: replace nvme_ns with nvme_dev for user admin
        NVMe: Fix nvme module init when nvme_major is set
        NVMe: Set request queue logical block size
      21e98932
  4. 28 Sep, 2012 8 commits
  5. 27 Sep, 2012 14 commits
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 63994137
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "The three nouveau fixes quiten unneeded dmesg spam that people are
         seeing and pondering,
      
        The udl fix stops it from trying to driver monitors that are too big,
        where we get a black screen.
      
        And a vmware memory alloc problem."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nvc0/fifo: ignore bits in PFIFO_INTR that aren't set in PFIFO_INTR_EN
        drm/udl: limit modes to the sku pixel limits.
        vmwgfx: corruption in vmw_event_fence_action_create()
        drm/nvc0/ltcg: mask off intr 0x10
        drm/nouveau: silence a debug message triggered by newer userspace
      63994137
    • Linus Torvalds's avatar
      Merge tag 'usb-3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · a31fb698
      Linus Torvalds authored
      Pull USB fixes from Greg Kroah-Hartman:
       "Here are two USB bugfixes for your 3.6-rc7 tree.
      
        The OHCI fix has been reported a number of times and is a regression
        from 3.5, and the patch that causes the regression was on the way to
        the -stable trees before I was reminded (again) that this fix needed
        to get to your tree soon.
      
        The host controller bugfix was reported in older kernels as being
        pretty easy to trigger, and has been tested by Red Hat and their
        customers.
      
        Both have been in the usb-next branch in the -next tree for a while
        now, I just cherry-picked them out to get to you in time for the 3.6
        release.
      
        Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
      
      * tag 'usb-3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        USB: Fix race condition when removing host controllers
        USB: ohci-at91: fix null pointer in ohci_hcd_at91_overcurrent_irq
      a31fb698
    • Daniel Mack's avatar
      ALSA: snd-usb: fix next_packet_size calls for pause case · 8dce30c8
      Daniel Mack authored
      Also fix the calls to next_packet_size() for the pause case. This was
      missed in 245baf98 ("ALSA: snd-usb: fix calls to next_packet_size").
      Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Reported-and-tested-by: default avatarChristian Tefzer <ctrefzer@gmx.de>
      Cc: stable@kernel.org
      [ Taking directly because Takashi is on vacation  - Linus ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8dce30c8
    • Linus Torvalds's avatar
      Merge tag 'asoc-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound · 9a7c5909
      Linus Torvalds authored
      Pull ASoC update from Mark Brown:
       "One small and obvious driver-specific fix.
      
        Takashi is on vacation now so he asked me to send directly, it's a
        pretty bad bug with low regression risk."
      
      * tag 'asoc-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound:
        ASoC: wm2000: Correct register size
      9a7c5909
    • Nicolas Dichtel's avatar
      inetpeer: fix token initialization · bc9259a8
      Nicolas Dichtel authored
      When jiffies wraps around (for example, 5 minutes after the boot, see
      INITIAL_JIFFIES) and peer has just been created, now - peer->rate_last can be
      < XRLIM_BURST_FACTOR * timeout, so token is not set to the maximum value, thus
      some icmp packets can be unexpectedly dropped.
      
      Fix this case by initializing last_rate to 60 seconds in the past.
      Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bc9259a8
    • Narendra K's avatar
      qlcnic: Fix scheduling while atomic bug · 68b3f28c
      Narendra K authored
      In the device close path, 'qlcnic_fw_destroy_ctx' and
      'qlcnic_poll_rsp' call msleep. But  'qlcnic_fw_destroy_ctx' and
      'qlcnic_poll_rsp' are called with 'adapter->tx_clean_lock' spin lock
      held resulting in scheduling while atomic bug causing the following
      trace.
      
      I observed that the commit 012dc19a
      from John Fastabend addresses a similar issue in ixgbevf driver.
      Adopting the same approach used in the commit, this patch uses mdelay
      to address the issue.
      
      [79884.999115] BUG: scheduling while atomic: ip/30846/0x00000002
      [79885.005562] INFO: lockdep is turned off.
      [79885.009958] Modules linked in: qlcnic fuse nf_conntrack_netbios_ns nf_conntrack_broadcast ipt_MASQUERADE bnep bluetooth rfkill ip6table_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables iptable_nat nf_nat iptable_mangle ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack iptable_filter ip_tables dcdbas coretemp kvm_intel kvm iTCO_wdt ixgbe iTCO_vendor_support crc32c_intel ghash_clmulni_intel nfsd microcode sb_edac pcspkr edac_core dca bnx2x shpchp auth_rpcgss nfs_acl lpc_ich mfd_core mdio lockd libcrc32c wmi acpi_pad acpi_power_meter sunrpc uinput sd_mod sr_mod cdrom crc_t10dif ahci libahci libata megaraid_sas usb_storage dm_mirror dm_region_hash dm_log dm_mod [last unloaded: qlcnic]
      [79885.083608] Pid: 30846, comm: ip Tainted: G        W  O 3.6.0-rc7+ #1
      [79885.090805] Call Trace:
      [79885.093569]  [<ffffffff816764d8>] __schedule_bug+0x68/0x76
      [79885.099699]  [<ffffffff8168358e>] __schedule+0x99e/0xa00
      [79885.105634]  [<ffffffff81683929>] schedule+0x29/0x70
      [79885.111186]  [<ffffffff81680def>] schedule_timeout+0x16f/0x350
      [79885.117724]  [<ffffffff811afb7a>] ? init_object+0x4a/0x90
      [79885.123770]  [<ffffffff8107c190>] ? __internal_add_timer+0x140/0x140
      [79885.130873]  [<ffffffff81680fee>] schedule_timeout_uninterruptible+0x1e/0x20
      [79885.138773]  [<ffffffff8107e830>] msleep+0x20/0x30
      [79885.144159]  [<ffffffffa04c7fbf>] qlcnic_issue_cmd+0xef/0x290 [qlcnic]
      [79885.151478]  [<ffffffffa04c8265>] qlcnic_fw_cmd_destroy_rx_ctx+0x55/0x90 [qlcnic]
      [79885.159868]  [<ffffffffa04c92fd>] qlcnic_fw_destroy_ctx+0x2d/0xa0 [qlcnic]
      [79885.167576]  [<ffffffffa04bf2ed>] __qlcnic_down+0x11d/0x180 [qlcnic]
      [79885.174708]  [<ffffffffa04bf6f8>] qlcnic_close+0x18/0x20 [qlcnic]
      [79885.181547]  [<ffffffff8153b4c5>] __dev_close_many+0x95/0xe0
      [79885.187899]  [<ffffffff8153b548>] __dev_close+0x38/0x50
      [79885.193761]  [<ffffffff81545101>] __dev_change_flags+0xa1/0x180
      [79885.200419]  [<ffffffff81545298>] dev_change_flags+0x28/0x70
      [79885.206779]  [<ffffffff815531b8>] do_setlink+0x378/0xa00
      [79885.212731]  [<ffffffff81354fe1>] ? nla_parse+0x31/0xe0
      [79885.218612]  [<ffffffff815558ee>] rtnl_newlink+0x37e/0x560
      [79885.224768]  [<ffffffff812cfa19>] ? selinux_capable+0x39/0x50
      [79885.231217]  [<ffffffff812cbf98>] ? security_capable+0x18/0x20
      [79885.237765]  [<ffffffff81555114>] rtnetlink_rcv_msg+0x114/0x2f0
      [79885.244412]  [<ffffffff81551f87>] ? rtnl_lock+0x17/0x20
      [79885.250280]  [<ffffffff81551f87>] ? rtnl_lock+0x17/0x20
      [79885.256148]  [<ffffffff81555000>] ? __rtnl_unlock+0x20/0x20
      [79885.262413]  [<ffffffff81570fc1>] netlink_rcv_skb+0xa1/0xb0
      [79885.268661]  [<ffffffff81551fb5>] rtnetlink_rcv+0x25/0x40
      [79885.274727]  [<ffffffff815708bd>] netlink_unicast+0x19d/0x220
      [79885.281146]  [<ffffffff81570c45>] netlink_sendmsg+0x305/0x3f0
      [79885.287595]  [<ffffffff8152b188>] ? sock_update_classid+0x148/0x2e0
      [79885.294650]  [<ffffffff81525c2c>] sock_sendmsg+0xbc/0xf0
      [79885.300600]  [<ffffffff8152600c>] __sys_sendmsg+0x3ac/0x3c0
      [79885.306853]  [<ffffffff8109be23>] ? up_read+0x23/0x40
      [79885.312510]  [<ffffffff816896cc>] ? do_page_fault+0x2bc/0x570
      [79885.318968]  [<ffffffff81191854>] ? sys_brk+0x44/0x150
      [79885.324715]  [<ffffffff811c458c>] ? fget_light+0x24c/0x520
      [79885.330875]  [<ffffffff815286f9>] sys_sendmsg+0x49/0x90
      [79885.336707]  [<ffffffff8168e429>] system_call_fastpath+0x16/0x1b
      Signed-off-by: default avatarNarendra K <narendra_k@dell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      68b3f28c
    • Neil Horman's avatar
      bnx2: Clean up remaining iounmap · 64f605c7
      Neil Horman authored
      commit c0357e97 modified bnx2 to switch from
      using ioremap/iounmap to pci_iomap/pci_iounmap.  They missed a spot in the error
      path of bnx2_init_one though.  This patch just cleans that up.
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: Michael Chan <mcan@broadcom.com>
      CC: "David S. Miller" <davem@davemloft.net>
      Acked-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      64f605c7
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · e556cb3e
      Linus Torvalds authored
      Pull one more arm-soc bugfix from Olof Johansson:
       "Here's a bugfix for orion5x.  Without this, PCI doesn't initialize
        properly because of too small coherent pool to cover the allocations
        needed.
      
        A similar fix has already been done on kirkwood."
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: Orion5x: Fix too small coherent pool.
      e556cb3e
    • Linus Torvalds's avatar
      Merge branch 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping · b56adb54
      Linus Torvalds authored
      Pull ARM dma-mapping fix from Marek Szyprowski:
       "This patch fixes a potential memory leak in the ARM dma-mapping code."
      
      * 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
        ARM: dma-mapping: Fix potential memory leak in atomic_pool_init()
      b56adb54
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-v3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 39618435
      Linus Torvalds authored
      Pull GPIO fix from Linus Walleij:
       "A late GPIO fix: Roland Stigge found a problem in the LPC32xx driver
        where a callback ignores one of its arguments.  It needs to go into
        stable too so sending this upstream immediately."
      
      * tag 'gpio-fixes-v3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
        gpio-lpc32xx: Fix value handling of gpio_direction_output()
      39618435
    • Linus Torvalds's avatar
      Merge tag 'md-3.6-fixes' of git://neil.brown.name/md · d1d4bb9c
      Linus Torvalds authored
      Pull two md bugfixes from NeilBrown:
       "One (missing spinlock init) was only introduced recently.  The other
        has been present as long as raid10 has been supported, so is tagged
        for -stable."
      
      * tag 'md-3.6-fixes' of git://neil.brown.name/md:
        md/raid10: fix "enough" function for detecting if array is failed.
        md/raid5: add missing spin_lock_init.
      d1d4bb9c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac · 5030fcbf
      Linus Torvalds authored
      Pull EDAC fixes from Mauro Carvalho Chehab:
       "Three edac fixes at the memory enumeration logic:
              - i3200_edac: Fixes a regression at the memory rank size, when the
                      memorias are dual-rank;
              - i5000_edac: Fix a longstanding bug when calculating the memory
                      size: before Kernel 3.6, the memory size were right only
                      with one specific configuration;
              - sb_edac: Fixes a bug since the initial release of the driver:
                      with 16GB DIMMs, there's an overflow at the memory size,
                      causing the number of pages per dimm (an unsigned value)
                      to have the highest bit equal to 1, effectively mangling
                      the memory size.
      
        The third bug can potentially affect the error decoding logic as well."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
        sb_edac: Avoid overflow errors at memory size calculation
        i5000: Fix the memory size calculation with 2R memories
        i3200_edac: Fix memory rank size
      5030fcbf
    • J. Bruce Fields's avatar
      trivial select_parent documentation fix · fd517909
      J. Bruce Fields authored
      "Search list for X" sounds like you're trying to find X on a list.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fd517909
    • Marek Vasut's avatar
      net: phy: smsc: Implement PHY config_init for LAN87xx · b629820d
      Marek Vasut authored
      The LAN8710/LAN8720 chips do have broken the "FlexPWR" smart power-saving
      capability. Enabling it leads to the PHY not being able to detect Link when
      cold-started without cable connected. Thus, make sure this is disabled.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Christian Hohnstaedt <chohnstaedt@innominate.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: Otavio Salvador <otavio@ossystems.com.br>
      Acked-by: default avatarOtavio Salvador <otavio@ossystems.com.br>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b629820d