1. 18 Sep, 2012 1 commit
  2. 17 Sep, 2012 18 commits
    • Linus Torvalds's avatar
      Merge branch 'for-3.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 4651afbb
      Linus Torvalds authored
      Pull another workqueue fix from Tejun Heo:
       "Unfortunately, yet another late fix.  This too is discovered and fixed
        by Lai.  This bug was introduced during this merge window by commit
        25511a47 ("workqueue: reimplement CPU online rebinding to handle
        idle workers") which started using WORKER_REBIND flag for idle rebind
        too.
      
        The bug is relatively easy to trigger if the CPU rapidly goes through
        off, on and then off (and stay off).  The fix is on the safer side.
        This hasn't been on linux-next yet but I'm pushing early so that it
        can get more exposure before v3.6 release."
      
      * 'for-3.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: always clear WORKER_REBIND in busy_worker_rebind_fn()
      4651afbb
    • Lai Jiangshan's avatar
      workqueue: always clear WORKER_REBIND in busy_worker_rebind_fn() · 960bd11b
      Lai Jiangshan authored
      busy_worker_rebind_fn() didn't clear WORKER_REBIND if rebinding failed
      (CPU is down again).  This used to be okay because the flag wasn't
      used for anything else.
      
      However, after 25511a47 "workqueue: reimplement CPU online rebinding
      to handle idle workers", WORKER_REBIND is also used to command idle
      workers to rebind.  If not cleared, the worker may confuse the next
      CPU_UP cycle by having REBIND spuriously set or oops / get stuck by
      prematurely calling idle_worker_rebind().
      
        WARNING: at /work/os/wq/kernel/workqueue.c:1323 worker_thread+0x4cd/0x5
       00()
        Hardware name: Bochs
        Modules linked in: test_wq(O-)
        Pid: 33, comm: kworker/1:1 Tainted: G           O 3.6.0-rc1-work+ #3
        Call Trace:
         [<ffffffff8109039f>] warn_slowpath_common+0x7f/0xc0
         [<ffffffff810903fa>] warn_slowpath_null+0x1a/0x20
         [<ffffffff810b3f1d>] worker_thread+0x4cd/0x500
         [<ffffffff810bc16e>] kthread+0xbe/0xd0
         [<ffffffff81bd2664>] kernel_thread_helper+0x4/0x10
        ---[ end trace e977cf20f4661968 ]---
        BUG: unable to handle kernel NULL pointer dereference at           (null)
        IP: [<ffffffff810b3db0>] worker_thread+0x360/0x500
        PGD 0
        Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
        Modules linked in: test_wq(O-)
        CPU 0
        Pid: 33, comm: kworker/1:1 Tainted: G        W  O 3.6.0-rc1-work+ #3 Bochs Bochs
        RIP: 0010:[<ffffffff810b3db0>]  [<ffffffff810b3db0>] worker_thread+0x360/0x500
        RSP: 0018:ffff88001e1c9de0  EFLAGS: 00010086
        RAX: 0000000000000000 RBX: ffff88001e633e00 RCX: 0000000000004140
        RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000009
        RBP: ffff88001e1c9ea0 R08: 0000000000000000 R09: 0000000000000001
        R10: 0000000000000002 R11: 0000000000000000 R12: ffff88001fc8d580
        R13: ffff88001fc8d590 R14: ffff88001e633e20 R15: ffff88001e1c6900
        FS:  0000000000000000(0000) GS:ffff88001fc00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: 0000000000000000 CR3: 00000000130e8000 CR4: 00000000000006f0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
        Process kworker/1:1 (pid: 33, threadinfo ffff88001e1c8000, task ffff88001e1c6900)
        Stack:
         ffff880000000000 ffff88001e1c9e40 0000000000000001 ffff88001e1c8010
         ffff88001e519c78 ffff88001e1c9e58 ffff88001e1c6900 ffff88001e1c6900
         ffff88001e1c6900 ffff88001e1c6900 ffff88001fc8d340 ffff88001fc8d340
        Call Trace:
         [<ffffffff810bc16e>] kthread+0xbe/0xd0
         [<ffffffff81bd2664>] kernel_thread_helper+0x4/0x10
        Code: b1 00 f6 43 48 02 0f 85 91 01 00 00 48 8b 43 38 48 89 df 48 8b 00 48 89 45 90 e8 ac f0 ff ff 3c 01 0f 85 60 01 00 00 48 8b 53 50 <8b> 02 83 e8 01 85 c0 89 02 0f 84 3b 01 00 00 48 8b 43 38 48 8b
        RIP  [<ffffffff810b3db0>] worker_thread+0x360/0x500
         RSP <ffff88001e1c9de0>
        CR2: 0000000000000000
      
      There was no reason to keep WORKER_REBIND on failure in the first
      place - WORKER_UNBOUND is guaranteed to be set in such cases
      preventing incorrectly activating concurrency management.  Always
      clear WORKER_REBIND.
      
      tj: Updated comment and description.
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      960bd11b
    • Linus Torvalds's avatar
      Merge branch 'akpm' (Andrew's patch-bomb) · 08077ca8
      Linus Torvalds authored
      Merge fixes from Andrew Morton:
       "13 patches.  12 are fixes and one is a little preparatory thing for
        Andi."
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (13 commits)
        memory hotplug: fix section info double registration bug
        mm/page_alloc: fix the page address of higher page's buddy calculation
        drivers/rtc/rtc-twl.c: ensure all interrupts are disabled during probe
        compiler.h: add __visible
        pid-namespace: limit value of ns_last_pid to (0, max_pid)
        include/net/sock.h: squelch compiler warning in sk_rmem_schedule()
        slub: consider pfmemalloc_match() in get_partial_node()
        slab: fix starting index for finding another object
        slab: do ClearSlabPfmemalloc() for all pages of slab
        nbd: clear waiting_queue on shutdown
        MAINTAINERS: fix TXT maintainer list and source repo path
        mm/ia64: fix a memory block size bug
        memory hotplug: reset pgdat->kswapd to NULL if creating kernel thread fails
      08077ca8
    • qiuxishi's avatar
      memory hotplug: fix section info double registration bug · f14851af
      qiuxishi authored
      There may be a bug when registering section info.  For example, on my
      Itanium platform, the pfn range of node0 includes the other nodes, so
      other nodes' section info will be double registered, and memmap's page
      count will equal to 3.
      
        node0: start_pfn=0x100,    spanned_pfn=0x20fb00, present_pfn=0x7f8a3, => 0x000100-0x20fc00
        node1: start_pfn=0x80000,  spanned_pfn=0x80000,  present_pfn=0x80000, => 0x080000-0x100000
        node2: start_pfn=0x100000, spanned_pfn=0x80000,  present_pfn=0x80000, => 0x100000-0x180000
        node3: start_pfn=0x180000, spanned_pfn=0x80000,  present_pfn=0x80000, => 0x180000-0x200000
      
        free_all_bootmem_node()
      	register_page_bootmem_info_node()
      		register_page_bootmem_info_section()
      
      When hot remove memory, we can't free the memmap's page because
      page_count() is 2 after put_page_bootmem().
      
        sparse_remove_one_section()
      	free_section_usemap()
      		free_map_bootmem()
      			put_page_bootmem()
      
      [akpm@linux-foundation.org: add code comment]
      Signed-off-by: default avatarXishi Qiu <qiuxishi@huawei.com>
      Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f14851af
    • Li Haifeng's avatar
      mm/page_alloc: fix the page address of higher page's buddy calculation · 0ba8f2d5
      Li Haifeng authored
      The heuristic method for buddy has been introduced since commit
      43506fad ("mm/page_alloc.c: simplify calculation of combined index
      of adjacent buddy lists").  But the page address of higher page's buddy
      was wrongly calculated, which will lead page_is_buddy to fail for ever.
      IOW, the heuristic method would be disabled with the wrong page address
      of higher page's buddy.
      
      Calculating the page address of higher page's buddy should be based
      higher_page with the offset between index of higher page and index of
      higher page's buddy.
      Signed-off-by: default avatarHaifeng Li <omycle@gmail.com>
      Signed-off-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Cc: KyongHo Cho <pullip.cho@samsung.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Cc: <stable@vger.kernel.org>	[2.6.38+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0ba8f2d5
    • Kevin Hilman's avatar
      drivers/rtc/rtc-twl.c: ensure all interrupts are disabled during probe · 8dcebaa9
      Kevin Hilman authored
      On some platforms, bootloaders are known to do some interesting RTC
      programming.  Without going into the obscurities as to why this may be
      the case, suffice it to say the the driver should not make any
      assumptions about the state of the RTC when the driver loads.  In
      particular, the driver probe should be sure that all interrupts are
      disabled until otherwise programmed.
      
      This was discovered when finding bursty I2C traffic every second on
      Overo platforms.  This I2C overhead was keeping the SoC from hitting
      deep power states.  The cause was found to be the RTC firing every
      second on the I2C-connected TWL PMIC.
      
      Special thanks to Felipe Balbi for suggesting to look for a rogue driver
      as the source of the I2C traffic rather than the I2C driver itself.
      
      Special thanks to Steve Sakoman for helping track down the source of the
      continuous RTC interrups on the Overo boards.
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Tested-by: default avatarSteve Sakoman <steve@sakoman.com>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Tested-by: default avatarShubhrajyoti Datta <omaplinuxkernel@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8dcebaa9
    • Andi Kleen's avatar
      compiler.h: add __visible · 9a858dc7
      Andi Kleen authored
      gcc 4.6+ has support for a externally_visible attribute that prevents the
      optimizer from optimizing unused symbols away.  Add a __visible macro to
      use it with that compiler version or later.
      
      This is used (at least) by the "Link Time Optimization" patchset.
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a858dc7
    • Andrew Vagin's avatar
      pid-namespace: limit value of ns_last_pid to (0, max_pid) · 579035dc
      Andrew Vagin authored
      The kernel doesn't check the pid for negative values, so if you try to
      write -2 to /proc/sys/kernel/ns_last_pid, you will get a kernel panic.
      
      The crash happens because the next pid is -1, and alloc_pidmap() will
      try to access to a nonexistent pidmap.
      
        map = &pid_ns->pidmap[pid/BITS_PER_PAGE];
      Signed-off-by: default avatarAndrew Vagin <avagin@openvz.org>
      Acked-by: default avatarCyrill Gorcunov <gorcunov@openvz.org>
      Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      579035dc
    • Chuck Lever's avatar
      include/net/sock.h: squelch compiler warning in sk_rmem_schedule() · 35c448a8
      Chuck Lever authored
      This warning:
      
        In file included from linux/include/linux/tcp.h:227:0,
                         from linux/include/linux/ipv6.h:221,
                         from linux/include/net/ipv6.h:16,
                         from linux/include/linux/sunrpc/clnt.h:26,
                         from linux/net/sunrpc/stats.c:22:
        linux/include/net/sock.h: In function `sk_rmem_schedule':
        linux/nfs-2.6/include/net/sock.h:1339:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      
      is seen with gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) using the
      -Wextra option.
      
      Commit c76562b6 ("netvm: prevent a stream-specific deadlock")
      accidentally replaced the "size" parameter of sk_rmem_schedule() with an
      unsigned int.  This changes the semantics of the comparison in the
      return statement.
      
      In sk_wmem_schedule we have syntactically the same comparison, but
      "size" is a signed integer.  In addition, __sk_mem_schedule() takes a
      signed integer for its "size" parameter, so there is an implicit type
      conversion in sk_rmem_schedule() anyway.
      
      Revert the "size" parameter back to a signed integer so that the
      semantics of the expressions in both sk_[rw]mem_schedule() are exactly
      the same.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: David Miller <davem@davemloft.net>
      Cc: Joonsoo Kim <js1304@gmail.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      35c448a8
    • Joonsoo Kim's avatar
      slub: consider pfmemalloc_match() in get_partial_node() · 8ba00bb6
      Joonsoo Kim authored
      get_partial() is currently not checking pfmemalloc_match() meaning that
      it is possible for pfmemalloc pages to leak to non-pfmemalloc users.
      This is a problem in the following situation.  Assume that there is a
      request from normal allocation and there are no objects in the per-cpu
      cache and no node-partial slab.
      
      In this case, slab_alloc enters the slow path and new_slab_objects() is
      called which may return a PFMEMALLOC page.  As the current user is not
      allowed to access PFMEMALLOC page, deactivate_slab() is called
      ([5091b74a: mm: slub: optimise the SLUB fast path to avoid pfmemalloc
      checks]) and returns an object from PFMEMALLOC page.
      
      Next time, when we get another request from normal allocation,
      slab_alloc() enters the slow-path and calls new_slab_objects().  In
      new_slab_objects(), we call get_partial() and get a partial slab which
      was just deactivated but is a pfmemalloc page.  We extract one object
      from it and re-deactivate.
      
        "deactivate -> re-get in get_partial -> re-deactivate" occures repeatedly.
      
      As a result, access to PFMEMALLOC page is not properly restricted and it
      can cause a performance degradation due to frequent deactivation.
      deactivation frequently.
      
      This patch changes get_partial_node() to take pfmemalloc_match() into
      account and prevents the "deactivate -> re-get in get_partial()
      scenario.  Instead, new_slab() is called.
      Signed-off-by: default avatarJoonsoo Kim <js1304@gmail.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: David Miller <davem@davemloft.net>
      Cc: Chuck Lever <chuck.lever@oracle.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8ba00bb6
    • Joonsoo Kim's avatar
      slab: fix starting index for finding another object · d014dc2e
      Joonsoo Kim authored
      In array cache, there is a object at index 0, check it.
      Signed-off-by: default avatarJoonsoo Kim <js1304@gmail.com>
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: David Miller <davem@davemloft.net>
      Cc: Chuck Lever <chuck.lever@oracle.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d014dc2e
    • Mel Gorman's avatar
      slab: do ClearSlabPfmemalloc() for all pages of slab · 30c29bea
      Mel Gorman authored
      Right now, we call ClearSlabPfmemalloc() for first page of slab when we
      clear SlabPfmemalloc flag.  This is fine for most swap-over-network use
      cases as it is expected that order-0 pages are in use.  Unfortunately it
      is possible that that __ac_put_obj() checks SlabPfmemalloc on a tail
      page and while this is harmless, it is sloppy.  This patch ensures that
      the head page is always used.
      
      This problem was originally identified by Joonsoo Kim.
      
      [js1304@gmail.com: Original implementation and problem identification]
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: David Miller <davem@davemloft.net>
      Cc: Chuck Lever <chuck.lever@oracle.com>
      Cc: Joonsoo Kim <js1304@gmail.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      30c29bea
    • Paul Clements's avatar
      nbd: clear waiting_queue on shutdown · fded4e09
      Paul Clements authored
      Fix a serious but uncommon bug in nbd which occurs when there is heavy
      I/O going to the nbd device while, at the same time, a failure (server,
      network) or manual disconnect of the nbd connection occurs.
      
      There is a small window between the time that the nbd_thread is stopped
      and the socket is shutdown where requests can continue to be queued to
      nbd's internal waiting_queue.  When this happens, those requests are
      never completed or freed.
      
      The fix is to clear the waiting_queue on shutdown of the nbd device, in
      the same way that the nbd request queue (queue_head) is already being
      cleared.
      Signed-off-by: default avatarPaul Clements <paul.clements@steeleye.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fded4e09
    • Gang Wei's avatar
      MAINTAINERS: fix TXT maintainer list and source repo path · e9b7d7c8
      Gang Wei authored
      Signed-off-by: default avatarGang Wei <gang.wei@intel.com>
      Cc: Richard L Maliszewski <richard.l.maliszewski@intel.com>
      Cc: Gang Wei <gang.wei@intel.com>
      Cc: Shane Wang <shane.wang@intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e9b7d7c8
    • Jianguo Wu's avatar
      mm/ia64: fix a memory block size bug · 05cf9639
      Jianguo Wu authored
      I found following definition in include/linux/memory.h, in my IA64
      platform, SECTION_SIZE_BITS is equal to 32, and MIN_MEMORY_BLOCK_SIZE
      will be 0.
      
        #define MIN_MEMORY_BLOCK_SIZE     (1 << SECTION_SIZE_BITS)
      
      Because MIN_MEMORY_BLOCK_SIZE is int type and length of 32bits,
      so MIN_MEMORY_BLOCK_SIZE(1 << 32) will will equal to 0.
      Actually when SECTION_SIZE_BITS >= 31, MIN_MEMORY_BLOCK_SIZE will be wrong.
      This will cause wrong system memory infomation in sysfs.
      I think it should be:
      
        #define MIN_MEMORY_BLOCK_SIZE     (1UL << SECTION_SIZE_BITS)
      
      And "echo offline > memory0/state" will cause following call trace:
      
        kernel BUG at mm/memory_hotplug.c:885!
        sh[6455]: bugcheck! 0 [1]
        Pid: 6455, CPU 0, comm:                   sh
        psr : 0000101008526030 ifs : 8000000000000fa4 ip  : [<a0000001008c40f0>]    Not tainted (3.6.0-rc1)
        ip is at offline_pages+0x210/0xee0
        Call Trace:
          show_stack+0x80/0xa0
          show_regs+0x640/0x920
          die+0x190/0x2c0
          die_if_kernel+0x50/0x80
          ia64_bad_break+0x3d0/0x6e0
          ia64_native_leave_kernel+0x0/0x270
          offline_pages+0x210/0xee0
          alloc_pages_current+0x180/0x2a0
      Signed-off-by: default avatarJianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      05cf9639
    • Wen Congyang's avatar
      memory hotplug: reset pgdat->kswapd to NULL if creating kernel thread fails · 18b48d58
      Wen Congyang authored
      If kthread_run() fails, pgdat->kswapd contains errno.  When we stop this
      thread, we only check whether pgdat->kswapd is NULL and access it.  If
      it contains errno, it will cause page fault.  Reset pgdat->kswapd to
      NULL when creating kernel thread fails can avoid this problem.
      Signed-off-by: default avatarWen Congyang <wency@cn.fujitsu.com>
      Reviewed-by: default avatarMinchan Kim <minchan@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      18b48d58
    • Linus Torvalds's avatar
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 2ade0b7f
      Linus Torvalds authored
      Pull InfiniBand/RDMA fixes from Roland Dreier:
       - A couple more IPoIB fixes for regressions introduced by path database
         conversion
       - Minor other fixes to low-level drivers (cxgb4, mlx4, qib, ocrdma)
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB/qib: Fix failure of compliance test C14-024#06_LocalPortNum
        RDMA/ocrdma: Fix CQE expansion of unsignaled WQE
        mlx4_core: Fix integer overflows so 8TBs of memory registration works
        IPoIB: Fix AB-BA deadlock when deleting neighbours
        IPoIB: Fix memory leak in the neigh table deletion flow
        RDMA/cxgb4: Move dereference below NULL test
      2ade0b7f
    • Francesco Ruggeri's avatar
      fs/proc: fix potential unregister_sysctl_table hang · 6bf61045
      Francesco Ruggeri authored
      The unregister_sysctl_table() function hangs if all references to its
      ctl_table_header structure are not dropped.
      
      This can happen sometimes because of a leak in proc_sys_lookup():
      proc_sys_lookup() gets a reference to the table via lookup_entry(), but
      it does not release it when a subsequent call to sysctl_follow_link()
      fails.
      
      This patch fixes this leak by making sure the reference is always
      dropped on return.
      
      See also commit 076c3eed ("sysctl: Rewrite proc_sys_lookup
      introducing find_entry and lookup_entry") which reorganized this code in
      3.4.
      
      Tested in Linux 3.4.4.
      Signed-off-by: default avatarFrancesco Ruggeri <fruggeri@aristanetworks.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6bf61045
  3. 16 Sep, 2012 8 commits
    • Linus Torvalds's avatar
      Linux 3.6-rc6 · 5698bd75
      Linus Torvalds authored
      5698bd75
    • Linus Torvalds's avatar
      Merge tag 'mfd-for-linus-3.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 · 73f8be29
      Linus Torvalds authored
      Pull mfd fixes from Samuel Ortiz:
       "This is the remaining MFD fixes for 3.6, with 5 pending fixes:
      
         - A tps65217 build error fix.
         - A lcp_ich regression fix caused by the MFD driver failing to
           initialize the watchdog sub device due to ACPI conflicts.
         - 2 MAX77693 interrupt handling bug fixes.
         - An MFD core fix, adding an IRQ domain argument to the MFD device
           addition API in order to prevent silent and potentially harmful
           remapping behaviour changes for drivers supporting non-DT
           platforms."
      
      * tag 'mfd-for-linus-3.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
        mfd: MAX77693: Fix NULL pointer error when initializing irqs
        mfd: MAX77693: Fix interrupt handling bug
        mfd: core: Push irqdomain mapping out into devices
        mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver
        mfd: Move tps65217 regulator plat data handling to regulator
      73f8be29
    • Linus Torvalds's avatar
      Merge tag 'for-3.6-rc6' of git://gitorious.org/linux-pwm/linux-pwm · c500ce38
      Linus Torvalds authored
      Pull pwm fixes from Thierry Reding:
       "While this comes a bit later than I had wished, both patches are
        rather minor and touch only new drivers so I think these are still
        safe for merging."
      
      * tag 'for-3.6-rc6' of git://gitorious.org/linux-pwm/linux-pwm:
        pwm: pwm-tiehrpwm: Fix conflicting channel period setting
        pwm: pwm-tiecap: Disable APWM mode after configure
      c500ce38
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 76e77daf
      Linus Torvalds authored
      Pull scsi target fixes from Nicholas Bellinger:
       "Here is the current set of target-pending fixes headed for v3.6-final
      
        The main parts of this series include bug-fixes from Paolo Bonzini to
        address an use-after-free bug in pSCSI sense exception handling, along
        with addressing some long-standing bugs wrt the handling of zero-
        length SCSI CDB payloads also specific to pSCSI pass-through device
        backends."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        target: go through normal processing for zero-length REQUEST_SENSE
        target: support zero allocation length in REQUEST SENSE
        target: support zero-size allocation lengths in transport_kmap_data_sg
        target: fail REPORT LUNS with less than 16 bytes of payload
        target: report too-small parameter lists everywhere
        target: go through normal processing for zero-length PSCSI commands
        target: fix use-after-free with PSCSI sense data
        target: simplify code around transport_get_sense_data
        target: move transport_get_sense_data
        target: Check idr_get_new return value in iscsi_login_zero_tsih_s1
        target: Fix ->data_length re-assignment bug with SCSI overflow
      76e77daf
    • Linus Torvalds's avatar
      Merge tag 'pm-for-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 9bc67590
      Linus Torvalds authored
      Pull power management fixes from Rafael J. Wysocki:
       "Three ACPI device power management fixes related to checking and
        setting device power states."
      
      * tag 'pm-for-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / PM: Use KERN_DEBUG when no power resources are found
        ACPI / PM: Fix resource_lock dead lock in acpi_power_on_device
        ACPI / PM: Infer parent power state from child if unknown, v2
      9bc67590
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · 6167f81f
      Linus Torvalds authored
      Pull a btrfs revert from Chris Mason:
       "My for-linus branch has one revert in the new quota code.
      
        We're building up more fixes at etc for the next merge window, but I'm
        keeping them out unless they are bigger regressions or have a huge
        impact."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Revert "Btrfs: fix some error codes in btrfs_qgroup_inherit()"
      6167f81f
    • Linus Torvalds's avatar
      Merge tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · a34689d9
      Linus Torvalds authored
      Pull more sound fixes from Takashi Iwai:
       "Yet more (a bunch of) small fixes that slipped from the previous pull
        request.  Most of commits are pending ASoC fixes, all of which are
        fairly trivial commits."
      
      * tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ASoC: wm8904: correct the index
        ALSA: hda - Yet another position_fix quirk for ASUS machines
        ASoC: tegra: fix maxburst settings in dmaengine code
        ASoC: samsung dma - Don't indicate support for pause/resume.
        ASoC: mc13783: Remove mono support
        ASoC: arizona: Fix typo in 44.1kHz rates
        ASoC: spear: correct the check for NULL dma_buffer pointer
        sound: tegra_alc5632: remove HP detect GPIO inversion
        ASoC: atmel-ssc: include linux/io.h for raw io
        ASoC: dapm: Don't force card bias level to be updated
        ASoC: dapm: Make sure we update the bias level for CODECs with no op
        ASoC: am3517evm: fix error return code
        ASoC: ux500_msp_i2s: better use devm functions and fix error return code
        ASoC: imx-sgtl5000: fix error return code
      a34689d9
    • Linus Torvalds's avatar
      Revert "sched: Improve scalability via 'CPU buddies', which withstand random perturbations" · 37407ea7
      Linus Torvalds authored
      This reverts commit 970e1789.
      
      Nikolay Ulyanitsky reported thatthe 3.6-rc5 kernel has a 15-20%
      performance drop on PostgreSQL 9.2 on his machine (running "pgbench").
      
      Borislav Petkov was able to reproduce this, and bisected it to this
      commit 970e1789 ("sched: Improve scalability via 'CPU buddies' ...")
      apparently because the new single-idle-buddy model simply doesn't find
      idle CPU's to reschedule on aggressively enough.
      
      Mike Galbraith suspects that it is likely due to the user-mode spinlocks
      in PostgreSQL not reacting well to preemption, but we don't really know
      the details - I'll just revert the commit for now.
      
      There are hopefully other approaches to improve scheduler scalability
      without it causing these kinds of downsides.
      Reported-by: default avatarNikolay Ulyanitsky <lystor@gmail.com>
      Bisected-by: default avatarBorislav Petkov <bp@alien8.de>
      Acked-by: default avatarMike Galbraith <efault@gmx.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      37407ea7
  4. 15 Sep, 2012 13 commits
    • Chanwoo Choi's avatar
      mfd: MAX77693: Fix NULL pointer error when initializing irqs · b186b124
      Chanwoo Choi authored
      This patch initialize register map of MUIC device because mfd driver
      of Maxim MAX77693 use regmap-muic instance of MUIC device when irqs of
      Maxim MAX77693 is initialized before call max77693-muic probe() function.
      Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
      Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Reported-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      b186b124
    • Chanwoo Choi's avatar
      mfd: MAX77693: Fix interrupt handling bug · d51f42d2
      Chanwoo Choi authored
      This patch fix bug related to interrupt handling for MAX77693 devices.
      - Unmask interrupt masking bit for charger/flash/muic to revolve
      that interrupt isn't happened when external connector is attached.
      - Fix wrong regmap instance when muic interrupt is happened.
      
      This patch were discussed and confirm discussion about this patch on below url:
      http://lkml.org/lkml/2012/7/16/118Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
      Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      d51f42d2
    • Mark Brown's avatar
      mfd: core: Push irqdomain mapping out into devices · 0848c94f
      Mark Brown authored
      Currently the MFD core supports remapping MFD cell interrupts using an
      irqdomain but only if the MFD is being instantiated using device tree
      and only if the device tree bindings use the pattern of registering IPs
      in the device tree with compatible properties.  This will be actively
      harmful for drivers which support non-DT platforms and use this pattern
      for their DT bindings as it will mean that the core will silently change
      remapping behaviour and it is also limiting for drivers which don't do
      DT with this particular pattern.  There is also a potential fragility if
      there are interrupts not associated with MFD cells and all the cells are
      omitted from the device tree for some reason.
      
      Instead change the code to take an IRQ domain as an optional argument,
      allowing drivers to take the decision about the parent domain for their
      interrupts.  The one current user of this feature is ab8500-core, it has
      the domain lookup pushed out into the driver.
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      0848c94f
    • Takashi Iwai's avatar
      Merge tag 'asoc-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus · 5d037f90
      Takashi Iwai authored
      ASoC: Updates for 3.6
      
      A bigger set of updates than I'm entirely comfortable with - things
      backed up a bit due to travel.  As ever the majority of these are small,
      focused updates for specific drivers though there are a couple of core
      changes.  There's been good exposure in -next.
      
      The AT91 patch fixes a build break.
      5d037f90
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes · 3f0c3c8f
      Linus Torvalds authored
      Pull GFS2 fixes from Steven Whitehouse:
       "Here are three GFS2 fixes for the current kernel tree.  These are all
        related to the block reservation code which was added at the merge
        window.  That code will be getting an update at the forthcoming merge
        window too.  In the mean time though there are a few smaller issues
        which should be fixed.
      
        The first patch resolves an issue with write sizes of greater than 32
        bits with the size hinting code.  The second ensures that the
        allocation data structure is initialised when using xattrs and the
        third takes into account allocations which may have been made by other
        nodes which affect a reservation on the local node."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
        GFS2: Take account of blockages when using reserved blocks
        GFS2: Fix missing allocation data for set/remove xattr
        GFS2: Make write size hinting code common
      3f0c3c8f
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · 9cb0ee85
      Linus Torvalds authored
      Pull x86 platform driver updates from Matthew Garrett:
       "A few small updates for 3.6 - a trivial regression fix and a couple of
        conformance updates for the gmux driver, plus some tiny fixes for
        asus-wmi, eeepc-laptop and thinkpad_acpi."
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86:
        thinkpad_acpi: buffer overflow in fan_get_status()
        eeepc-laptop: fix device reference count leakage in eeepc_rfkill_hotplug()
        platform/x86: fix asus_laptop.wled_type description
        asus-laptop: HRWS/HWRS typo
        drivers-platform-x86: remove useless #ifdef CONFIG_ACPI_VIDEO
        apple-gmux: Fix port address calculation in gmux_pio_write32()
        apple-gmux: Fix index read functions
        apple-gmux: Obtain version info from indexed gmux
      9cb0ee85
    • Linus Torvalds's avatar
      Merge branch 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux · 5b799dde
      Linus Torvalds authored
      Pull i2c embedded fixes from Wolfram Sang:
       "The last bunch of (typical) i2c-embedded driver fixes for 3.6.
      
        Also update the MAINTAINERS file to point to my tree since people keep
        asking where to find their patches."
      
      * 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux:
        i2c: algo: pca: Fix mode selection for PCA9665
        MAINTAINERS: fix tree for current i2c-embedded development
        i2c: mxs: correctly setup speed for non devicetree
        i2c: pnx: Fix read transactions of >= 2 bytes
        i2c: pnx: Fix bit definitions
      5b799dde
    • Linus Torvalds's avatar
      Merge tag 'ecryptfs-3.6-rc6-fixes' of... · 1547cb80
      Linus Torvalds authored
      Merge tag 'ecryptfs-3.6-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs
      
      Pull ecryptfs fixes from Tyler Hicks:
      
       - Fixes a regression, introduced in 3.6-rc1, when a file is closed
         before its shared memory mapping is dirtied and unmapped.  The lower
         file was being released when the eCryptfs file was closed and the
         dirtied pages could not be written out.
       - Adds a call to the lower filesystem's ->flush() from
         ecryptfs_flush().
       - Fixes a regression, introduced in 2.6.39, when a file is renamed on
         top of another file.  The target file's inode was not being evicted
         and the space taken by the file was not reclaimed until eCryptfs was
         unmounted.
      
      * tag 'ecryptfs-3.6-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs:
        eCryptfs: Copy up attributes of the lower target inode after rename
        eCryptfs: Call lower ->flush() from ecryptfs_flush()
        eCryptfs: Write out all dirty pages just before releasing the lower file
      1547cb80
    • Linus Torvalds's avatar
      Merge branch 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping · 1568d9f4
      Linus Torvalds authored
      Pull one more DMA-mapping fix from Marek Szyprowski:
       "This patch fixes very subtle bug (typical off-by-one error) which
        might appear in very rare circumstances."
      
      * 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
        arm: mm: fix DMA pool affiliation check
      1568d9f4
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 1c23ce72
      Linus Torvalds authored
      Pull hwmon fixes from Guenter Roeck:
       "Fix word size register read and write operations in ina2xx driver, and
        initialize uninitialized structure elements in twl4030-madc-hwmon
        driver."
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (ina2xx) Fix word size register read and write operations
        hwmon: (twl4030-madc-hwmon) Initialize uninitialized structure elements
      1c23ce72
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · dd383af6
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "I realise this a bit bigger than I would want at this point.
      
        Exynos is a large chunk, I got them to half what they wanted already,
        and hey its ARM based, so not going to hurt many people.
      
        Radeon has only two fixes, but the PLL fixes were a bit bigger, but
        required for a lot of scenarios, the fence fix is really urgent.
      
        vmwgfx: I've pulled in a dumb ioctl support patch that I was going to
        shove in later and cc stable, but we need it asap, its mainly to stop
        mesa growing a really ugly dependency in userspace to run stuff on
        vmware, and if I don't stick it in the kernel now, everyone will have
        to ship ugly userspace libs to workaround it.
      
        nouveau: single urgent fix found in F18 testing, causes X to not start
        properly when f18 plymouth is used
      
        i915: smattering of fixes and debug quieting
      
        gma500: single regression fix
      
        So as I said a bit large, but its fairly well scattered and its all
        stuff I'll be shipping in F18's 3.6 kernel."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (26 commits)
        drm/nouveau: fix booting with plymouth + dumb support
        drm/radeon: make 64bit fences more robust v3
        drm/radeon: rework pll selection (v3)
        drm: Drop the NV12M and YUV420M formats
        drm/exynos: remove DRM_FORMAT_NV12M from plane module
        drm/exynos: fix double call of drm_prime_(init/destroy)_file_private
        drm/exynos: add dummy support for dmabuf-mmap
        drm/exynos: Add missing braces around sizeof in exynos_mixer.c
        drm/exynos: Add missing braces around sizeof in exynos_hdmi.c
        drm/exynos: Make g2d_pm_ops static
        drm/exynos: Add dependency for G2D in Kconfig
        drm/exynos: fixed page align bug.
        drm/exynos: Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(.. [1]
        drm/exynos: Use devm_* functions in exynos_drm_g2d.c file
        drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file
        drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file
        drm/exynos: Remove redundant check in exynos_drm_fimd.c file
        drm/exynos: Remove redundant check in exynos_hdmi.c file
        vmwgfx: add dumb ioctl support
        gma500: Fix regression on Oaktrail devices
        ...
      dd383af6
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 889cb3b9
      Linus Torvalds authored
      Pull scheduler fixes from Ingo Molnar:
       "Smaller fixlets"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched: Fix kernel-doc warnings in kernel/sched/fair.c
        sched: Unthrottle rt runqueues in __disable_runtime()
        sched: Add missing call to calc_load_exit_idle()
        sched: Fix load avg vs cpu-hotplug
      889cb3b9
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7ef6e973
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "This tree includes various fixes"
      
      Ingo really needs to improve on the whole "explain git pull" part.
      "Various fixes" indeed.
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/hwpb: Invoke __perf_event_disable() if interrupts are already disabled
        perf/x86: Enable Intel Cedarview Atom suppport
        perf_event: Switch to internal refcount, fix race with close()
        oprofile, s390: Fix uninitialized memory access when writing to oprofilefs
        perf/x86: Fix microcode revision check for SNB-PEBS
      7ef6e973