1. 05 Nov, 2012 4 commits
    • Tejun Heo's avatar
      cgroup: deactivate CSS's and mark cgroup dead before invoking ->pre_destroy() · 1a90dd50
      Tejun Heo authored
      Because ->pre_destroy() could fail and can't be called under
      cgroup_mutex, cgroup destruction did something very ugly.
      
        1. Grab cgroup_mutex and verify it can be destroyed; fail otherwise.
      
        2. Release cgroup_mutex and call ->pre_destroy().
      
        3. Re-grab cgroup_mutex and verify it can still be destroyed; fail
           otherwise.
      
        4. Continue destroying.
      
      In addition to being ugly, it has been always broken in various ways.
      For example, memcg ->pre_destroy() expects the cgroup to be inactive
      after it's done but tasks can be attached and detached between #2 and
      #3 and the conditions that memcg verified in ->pre_destroy() might no
      longer hold by the time control reaches #3.
      
      Now that ->pre_destroy() is no longer allowed to fail.  We can switch
      to the following.
      
        1. Grab cgroup_mutex and verify it can be destroyed; fail otherwise.
      
        2. Deactivate CSS's and mark the cgroup removed thus preventing any
           further operations which can invalidate the verification from #1.
      
        3. Release cgroup_mutex and call ->pre_destroy().
      
        4. Re-grab cgroup_mutex and continue destroying.
      
      After this change, controllers can safely assume that ->pre_destroy()
      will only be called only once for a given cgroup and, once
      ->pre_destroy() is called, the cgroup will stay dormant till it's
      destroyed.
      
      This removes the only reason ->pre_destroy() can fail - new task being
      attached or child cgroup being created inbetween.  Error out path is
      removed and ->pre_destroy() invocation is open coded in
      cgroup_rmdir().
      
      v2: cgroup_call_pre_destroy() removal moved to this patch per Michal.
          Commit message updated per Glauber.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: Glauber Costa <glommer@parallels.com>
      1a90dd50
    • Tejun Heo's avatar
      cgroup: use cgroup_lock_live_group(parent) in cgroup_create() · 976c06bc
      Tejun Heo authored
      This patch makes cgroup_create() fail if @parent is marked removed.
      This is to prepare for further updates to cgroup_rmdir() path.
      
      Note that this change isn't strictly necessary.  cgroup can only be
      created via mkdir and the removed marking and dentry removal happen
      without releasing cgroup_mutex, so cgroup_create() can never race with
      cgroup_rmdir().  Even after the scheduled updates to cgroup_rmdir(),
      cgroup_mkdir() and cgroup_rmdir() are synchronized by i_mutex
      rendering the added liveliness check unnecessary.
      
      Do it anyway such that locking is contained inside cgroup proper and
      we don't get nasty surprises if we ever grow another caller of
      cgroup_create().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      976c06bc
    • Tejun Heo's avatar
      cgroup: kill CSS_REMOVED · e9316080
      Tejun Heo authored
      CSS_REMOVED is one of the several contortions which were necessary to
      support css reference draining on cgroup removal.  All css->refcnts
      which need draining should be deactivated and verified to equal zero
      atomically w.r.t. css_tryget().  If any one isn't zero, all refcnts
      needed to be re-activated and css_tryget() shouldn't fail in the
      process.
      
      This was achieved by letting css_tryget() busy-loop until either the
      refcnt is reactivated (failed removal attempt) or CSS_REMOVED is set
      (committing to removal).
      
      Now that css refcnt draining is no longer used, there's no need for
      atomic rollback mechanism.  css_tryget() simply can look at the
      reference count and fail if it's deactivated - it's never getting
      re-activated.
      
      This patch removes CSS_REMOVED and updates __css_tryget() to fail if
      the refcnt is deactivated.  As deactivation and removal are a single
      step now, they no longer need to be protected against css_tryget()
      happening from irq context.  Remove local_irq_disable/enable() from
      cgroup_rmdir().
      
      Note that this removes css_is_removed() whose only user is VM_BUG_ON()
      in memcontrol.c.  We can replace it with a check on the refcnt but
      given that the only use case is a debug assert, I think it's better to
      simply unexport it.
      
      v2: Comment updated and explanation on local_irq_disable/enable()
          added per Michal Hocko.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Balbir Singh <bsingharora@gmail.com>
      e9316080
    • Tejun Heo's avatar
      cgroup: kill cgroup_subsys->__DEPRECATED_clear_css_refs · ed957793
      Tejun Heo authored
      2ef37d3f ("memcg: Simplify mem_cgroup_force_empty_list error
      handling") removed the last user of __DEPRECATED_clear_css_refs.  This
      patch removes __DEPRECATED_clear_css_refs and mechanisms to support
      it.
      
      * Conditionals dependent on __DEPRECATED_clear_css_refs removed.
      
      * cgroup_clear_css_refs() can no longer fail.  All that needs to be
        done are deactivating refcnts, setting CSS_REMOVED and putting the
        base reference on each css.  Remove cgroup_clear_css_refs() and the
        failure path, and open-code the loops into cgroup_rmdir().
      
      This patch keeps the two for_each_subsys() loops separate while open
      coding them.  They can be merged now but there are scheduled changes
      which need them to be separate, so keep them separate to reduce the
      amount of churn.
      
      local_irq_save/restore() from cgroup_clear_css_refs() are replaced
      with local_irq_disable/enable() for simplicity.  This is safe as
      cgroup_rmdir() is always called with IRQ enabled.  Note that this IRQ
      switching is necessary to ensure that css_tryget() isn't called from
      IRQ context on the same CPU while lower context is between CSS
      deactivation and setting CSS_REMOVED as css_tryget() would hang
      forever in such cases waiting for CSS to be re-activated or
      CSS_REMOVED set.  This will go away soon.
      
      v2: cgroup_call_pre_destroy() removal dropped per Michal.  Commit
          message updated to explain local_irq_disable/enable() conversion.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      ed957793
  2. 29 Oct, 2012 3 commits
    • Michal Hocko's avatar
      memcg: Simplify mem_cgroup_force_empty_list error handling · 2ef37d3f
      Michal Hocko authored
      mem_cgroup_force_empty_list currently tries to remove all pages from
      the given LRU. To prevent from temoporary failures (EBUSY returned by
      mem_cgroup_move_parent) it uses a margin to the current LRU pages and
      returns the true if there are still some pages left on the list.
      
      If we consider that mem_cgroup_move_parent fails only when it is racing
      with somebody else removing (uncharging) the page or when the page is
      migrated then it is obvious that all those failures are only temporal
      and so we can safely retry later.
      Let's get rid of the safety margin and make the loop really wait for
      the empty LRU. The caller should still make sure that all charges have
      been removed from the res_counter because mem_cgroup_replace_page_cache
      might add a page to the LRU after the list_empty check (it doesn't touch
      res_counter though).
      This catches most of the cases except for shmem which might call
      mem_cgroup_replace_page_cache with a page which is not charged and on
      the LRU yet but this was the case also without this patch. In order to
      fix this we need a guarantee that try_get_mem_cgroup_from_page falls
      back to the current mm's cgroup so it needs css_tryget to fail. This
      will be fixed up in a later patch because it needs a help from cgroup
      core (pre_destroy has to be called after css is cleared).
      
      Although mem_cgroup_pre_destroy can still fail (if a new task or a new
      sub-group appears) there is no reason to retry pre_destroy callback from
      the cgroup core. This means that __DEPRECATED_clear_css_refs has lost
      its meaning and it can be removed.
      
      Changes since v2
      - remove __DEPRECATED_clear_css_refs
      
      Changes since v1
      - use kerndoc
      - be more specific about mem_cgroup_move_parent possible failures
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarGlauber Costa <glommer@parallels.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      2ef37d3f
    • Michal Hocko's avatar
      memcg: root_cgroup cannot reach mem_cgroup_move_parent · d8423011
      Michal Hocko authored
      The root cgroup cannot be destroyed so we never hit it down the
      mem_cgroup_pre_destroy path and mem_cgroup_force_empty_write shouldn't
      even try to do anything if called for the root.
      
      This means that mem_cgroup_move_parent doesn't have to bother with the
      root cgroup and it can assume it can always move charges upwards.
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarGlauber Costa <glommer@parallels.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      d8423011
    • Michal Hocko's avatar
      memcg: split mem_cgroup_force_empty into reclaiming and reparenting parts · c26251f9
      Michal Hocko authored
      mem_cgroup_force_empty did two separate things depending on free_all
      parameter from the very beginning. It either reclaimed as many pages as
      possible and moved the rest to the parent or just moved charges to the
      parent. The first variant is used as memory.force_empty callback while
      the later is used from the mem_cgroup_pre_destroy.
      
      The whole games around gotos are far from being nice and there is no
      reason to keep those two functions inside one. Let's split them and
      also move the responsibility for css reference counting to their callers
      to make to code easier.
      
      This patch doesn't have any functional changes.
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reviewed-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarGlauber Costa <glommer@parallels.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      c26251f9
  3. 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
  4. 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
  5. 28 Sep, 2012 8 commits
  6. 27 Sep, 2012 21 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
    • Steve Glendinning's avatar
      smsc75xx: fix resume after device reset · a3cff128
      Steve Glendinning authored
      On some systems this device fails to properly resume after suspend,
      this patch fixes it by running the usbnet_resume handler.
      
      I suspect this also fixes this bug:
      
      http://code.google.com/p/chromium-os/issues/detail?id=31871Signed-off-by: default avatarSteve Glendinning <steve.glendinning@shawell.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a3cff128
    • Geert Uytterhoeven's avatar
      um: Preinclude include/linux/kern_levels.h · 9429ec96
      Geert Uytterhoeven authored
      The userspace part of UML uses the asm-offsets.h generator mechanism to
      create definitions for UM_KERN_<LEVEL> that match the in-kernel
      KERN_<LEVEL> constant definitions.
      
      As of commit 04d2c8c8 ("printk: convert
      the format for KERN_<LEVEL> to a 2 byte pattern"), KERN_<LEVEL> is no
      longer expanded to the literal '"<LEVEL>"', but to '"\001" "LEVEL"', i.e.
      it contains two parts.
      
      However, the combo of DEFINE_STR() in
      arch/x86/um/shared/sysdep/kernel-offsets.h and sed-y in Kbuild doesn't
      support string literals consisting of multiple parts. Hence for all
      UM_KERN_<LEVEL> definitions, only the SOH character is retained in the actual
      definition, while the remainder ends up in the comment. E.g. in
      include/generated/asm-offsets.h we get
      
          #define UM_KERN_INFO "\001" /* "6" KERN_INFO */
      
      instead of
      
          #define UM_KERN_INFO "\001" "6" /* KERN_INFO */
      
      This causes spurious '^A' output in some kernel messages:
      
          Calibrating delay loop... 4640.76 BogoMIPS (lpj=23203840)
          pid_max: default: 32768 minimum: 301
          Mount-cache hash table entries: 256
          ^AChecking that host ptys support output SIGIO...Yes
          ^AChecking that host ptys support SIGIO on close...No, enabling workaround
          ^AUsing 2.6 host AIO
          NET: Registered protocol family 16
          bio: create slab <bio-0> at 0
          Switching to clocksource itimer
      
      To fix this:
        - Move the mapping from UM_KERN_<LEVEL> to KERN_<LEVEL> from
          arch/um/include/shared/common-offsets.h to
          arch/um/include/shared/user.h, which is preincluded for all userspace
          parts,
        - Preinclude include/linux/kern_levels.h for all userspace parts, to
          obtain the in-kernel KERN_<LEVEL> constant definitions. This doesn't
          violate the kernel/userspace separation, as include/linux/kern_levels.h
          is self-contained and doesn't expose any other kernel internals.
        - Remove the now unused STR() and DEFINE_STR() macros.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
      9429ec96
    • Richard Weinberger's avatar
      um: Fix IPC on um · bbb35efc
      Richard Weinberger authored
      commit c1d7e01d (ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION)
      forgot UML and broke IPC on it.
      Also UML has to select ARCH_WANT_IPC_PARSE_VERSION usin Kconfig.
      
      Reported-and-tested-by: <Toralf Förster toralf.foerster@gmx.de>
      Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
      bbb35efc
    • Wei Yongjun's avatar
      netdev: pasemi: fix return value check in pasemi_mac_phy_init() · beb5ac20
      Wei Yongjun authored
      In case of error, the function of_phy_connect() returns NULL
      pointer not ERR_PTR(). The IS_ERR() test in the return value
      check should be replaced with NULL test.
      
      dpatch engine is used to auto generate this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      beb5ac20
    • Wei Yongjun's avatar
      team: fix return value check · a326e6dd
      Wei Yongjun authored
      In case of error, the function genlmsg_put() returns NULL pointer
      not ERR_PTR(). The IS_ERR() test in the return value check should
      be replaced with NULL test.
      
      dpatch engine is used to auto generate this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a326e6dd
    • Wei Yongjun's avatar
      l2tp: fix return value check · 7f8436a1
      Wei Yongjun authored
      In case of error, the function genlmsg_put() returns NULL pointer
      not ERR_PTR(). The IS_ERR() test in the return value check should
      be replaced with NULL test.
      
      dpatch engine is used to auto generate this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7f8436a1
    • David S. Miller's avatar
      Merge branch 'master' of git://1984.lsi.us.es/nf · 392b4087
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      If time allows, I'd appreciate if you can take the following fix
      for the xt_limit match.
      
      As Jan indicates, random things may occur while using the xt_limit
      match due to use of uninitialized memory.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      392b4087