1. 23 Jun, 2014 17 commits
    • Hugh Dickins's avatar
      shmem: fix faulting into a hole while it's punched · f00cdc6d
      Hugh Dickins authored
      Trinity finds that mmap access to a hole while it's punched from shmem
      can prevent the madvise(MADV_REMOVE) or fallocate(FALLOC_FL_PUNCH_HOLE)
      from completing, until the reader chooses to stop; with the puncher's
      hold on i_mutex locking out all other writers until it can complete.
      
      It appears that the tmpfs fault path is too light in comparison with its
      hole-punching path, lacking an i_data_sem to obstruct it; but we don't
      want to slow down the common case.
      
      Extend shmem_fallocate()'s existing range notification mechanism, so
      shmem_fault() can refrain from faulting pages into the hole while it's
      punched, waiting instead on i_mutex (when safe to sleep; or repeatedly
      faulting when not).
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Tested-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Cc: Dave Jones <davej@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f00cdc6d
    • Hugh Dickins's avatar
      mm: let mm_find_pmd fix buggy race with THP fault · f72e7dcd
      Hugh Dickins authored
      Trinity has reported:
      
          BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
          IP: __lock_acquire (kernel/locking/lockdep.c:3070 (discriminator 1))
          CPU: 6 PID: 16173 Comm: trinity-c364 Tainted: G        W
                                  3.15.0-rc1-next-20140415-sasha-00020-gaa90d09 #398
          lock_acquire (arch/x86/include/asm/current.h:14
                        kernel/locking/lockdep.c:3602)
          _raw_spin_lock (include/linux/spinlock_api_smp.h:143
                          kernel/locking/spinlock.c:151)
          remove_migration_pte (mm/migrate.c:137)
          rmap_walk (mm/rmap.c:1628 mm/rmap.c:1699)
          remove_migration_ptes (mm/migrate.c:224)
          migrate_pages (mm/migrate.c:922 mm/migrate.c:960 mm/migrate.c:1126)
          migrate_misplaced_page (mm/migrate.c:1733)
          __handle_mm_fault (mm/memory.c:3762 mm/memory.c:3812 mm/memory.c:3925)
          handle_mm_fault (mm/memory.c:3948)
          __get_user_pages (mm/memory.c:1851)
          __mlock_vma_pages_range (mm/mlock.c:255)
          __mm_populate (mm/mlock.c:711)
          SyS_mlockall (include/linux/mm.h:1799 mm/mlock.c:817 mm/mlock.c:791)
      
      I believe this comes about because, whereas collapsing and splitting THP
      functions take anon_vma lock in write mode (which excludes concurrent
      rmap walks), faulting THP functions (write protection and misplaced
      NUMA) do not - and mostly they do not need to.
      
      But they do use a pmdp_clear_flush(), set_pmd_at() sequence which, for
      an instant (indeed, for a long instant, given the inter-CPU TLB flush in
      there), leaves *pmd neither present not trans_huge.
      
      Which can confuse a concurrent rmap walk, as when removing migration
      ptes, seen in the dumped trace.  Although that rmap walk has a 4k page
      to insert, anon_vmas containing THPs are in no way segregated from
      4k-page anon_vmas, so the 4k-intent mm_find_pmd() does need to cope with
      that instant when a trans_huge pmd is temporarily absent.
      
      I don't think we need strengthen the locking at the THP end: it's easily
      handled with an ACCESS_ONCE() before testing both conditions.
      
      And since mm_find_pmd() had only one caller who wanted a THP rather than
      a pmd, let's slightly repurpose it to fail when it hits a THP or
      non-present pmd, and open code split_huge_page_address() again.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Cc: Konstantin Khlebnikov <koct9i@gmail.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Bob Liu <bob.liu@oracle.com>
      Cc: Christoph Lameter <cl@gentwo.org>
      Cc: Dave Jones <davej@redhat.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f72e7dcd
    • Hugh Dickins's avatar
      mm: thp: fix DEBUG_PAGEALLOC oops in copy_page_rep() · 5338a937
      Hugh Dickins authored
      Trinity has for over a year been reporting a CONFIG_DEBUG_PAGEALLOC oops
      in copy_page_rep() called from copy_user_huge_page() called from
      do_huge_pmd_wp_page().
      
      I believe this is a DEBUG_PAGEALLOC false positive, due to the source
      page being split, and a tail page freed, while copy is in progress; and
      not a problem without DEBUG_PAGEALLOC, since the pmd_same() check will
      prevent a miscopy from being made visible.
      
      Fix by adding get_user_huge_page() and put_user_huge_page(): reducing to
      the usual get_page() and put_page() on head page in the usual config;
      but get and put references to all of the tail pages when
      DEBUG_PAGEALLOC.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Tested-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5338a937
    • Aaron Tomlin's avatar
      kernel/watchdog.c: print traces for all cpus on lockup detection · ed235875
      Aaron Tomlin authored
      A 'softlockup' is defined as a bug that causes the kernel to loop in
      kernel mode for more than a predefined period to time, without giving
      other tasks a chance to run.
      
      Currently, upon detection of this condition by the per-cpu watchdog
      task, debug information (including a stack trace) is sent to the system
      log.
      
      On some occasions, we have observed that the "victim" rather than the
      actual "culprit" (i.e.  the owner/holder of the contended resource) is
      reported to the user.  Often this information has proven to be
      insufficient to assist debugging efforts.
      
      To avoid loss of useful debug information, for architectures which
      support NMI, this patch makes it possible to improve soft lockup
      reporting.  This is accomplished by issuing an NMI to each cpu to obtain
      a stack trace.
      
      If NMI is not supported we just revert back to the old method.  A sysctl
      and boot-time parameter is available to toggle this feature.
      
      [dzickus@redhat.com: add CONFIG_SMP in certain areas]
      [akpm@linux-foundation.org: additional CONFIG_SMP=n optimisations]
      [mq@suse.cz: fix warning]
      Signed-off-by: default avatarAaron Tomlin <atomlin@redhat.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Mateusz Guzik <mguzik@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarJan Moskyto Matejka <mq@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ed235875
    • Aaron Tomlin's avatar
      nmi: provide the option to issue an NMI back trace to every cpu but current · f3aca3d0
      Aaron Tomlin authored
      Sometimes it is preferred not to use the trigger_all_cpu_backtrace()
      routine when one wants to avoid capturing a back trace for current.  For
      instance if one was previously captured recently.
      
      This patch provides a new routine namely
      trigger_allbutself_cpu_backtrace() which offers the flexibility to issue
      an NMI to every cpu but current and capture a back trace accordingly.
      
      Patch x86 and sparc to support new routine.
      
      [dzickus@redhat.com: add stub in #else clause]
      [dzickus@redhat.com: don't print message in single processor case, wrap with get/put_cpu based on Oleg's suggestion]
      [sfr@canb.auug.org.au: undo C99ism]
      Signed-off-by: default avatarAaron Tomlin <atomlin@redhat.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Mateusz Guzik <mguzik@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f3aca3d0
    • Rickard Strandqvist's avatar
      Documentation/accounting/getdelays.c: add missing null-terminate after strncpy call · 88e15ce4
      Rickard Strandqvist authored
      Added a guaranteed null-terminate after call to strncpy.
      
      This was partly found using a static code analysis program called
      cppcheck.
      Signed-off-by: default avatarRickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      88e15ce4
    • Micky Ching's avatar
      drivers/memstick/host/rtsx_pci_ms.c: add cancel_work when remove driver · b6226b45
      Micky Ching authored
      Add cancel_work_sync() in rtsx_pci_ms_drv_remove() to cancel pending
      request work when removing the driver.
      Signed-off-by: default avatarMicky Ching <micky_ching@realsil.com.cn>
      Cc: Samuel Ortiz <sameo@linux.intel.com> says:
      Cc: Maxim Levitsky <maximlevitsky@gmail.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Alex Dubov <oakad@yahoo.com>
      Cc: Roger Tseng <rogerable@realtek.com>
      Cc: Wei WANG <wei_wang@realsil.com.cn>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b6226b45
    • David Rientjes's avatar
      mm, pcp: allow restoring percpu_pagelist_fraction default · 7cd2b0a3
      David Rientjes authored
      Oleg reports a division by zero error on zero-length write() to the
      percpu_pagelist_fraction sysctl:
      
          divide error: 0000 [#1] SMP DEBUG_PAGEALLOC
          CPU: 1 PID: 9142 Comm: badarea_io Not tainted 3.15.0-rc2-vm-nfs+ #19
          Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
          task: ffff8800d5aeb6e0 ti: ffff8800d87a2000 task.ti: ffff8800d87a2000
          RIP: 0010: percpu_pagelist_fraction_sysctl_handler+0x84/0x120
          RSP: 0018:ffff8800d87a3e78  EFLAGS: 00010246
          RAX: 0000000000000f89 RBX: ffff88011f7fd000 RCX: 0000000000000000
          RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000010
          RBP: ffff8800d87a3e98 R08: ffffffff81d002c8 R09: ffff8800d87a3f50
          R10: 000000000000000b R11: 0000000000000246 R12: 0000000000000060
          R13: ffffffff81c3c3e0 R14: ffffffff81cfddf8 R15: ffff8801193b0800
          FS:  00007f614f1e9740(0000) GS:ffff88011f440000(0000) knlGS:0000000000000000
          CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
          CR2: 00007f614f1fa000 CR3: 00000000d9291000 CR4: 00000000000006e0
          Call Trace:
            proc_sys_call_handler+0xb3/0xc0
            proc_sys_write+0x14/0x20
            vfs_write+0xba/0x1e0
            SyS_write+0x46/0xb0
            tracesys+0xe1/0xe6
      
      However, if the percpu_pagelist_fraction sysctl is set by the user, it
      is also impossible to restore it to the kernel default since the user
      cannot write 0 to the sysctl.
      
      This patch allows the user to write 0 to restore the default behavior.
      It still requires a fraction equal to or larger than 8, however, as
      stated by the documentation for sanity.  If a value in the range [1, 7]
      is written, the sysctl will return EINVAL.
      
      This successfully solves the divide by zero issue at the same time.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Reported-by: default avatarOleg Drokin <green@linuxhacker.ru>
      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>
      7cd2b0a3
    • Chen Gang's avatar
      lib/Kconfig.debug: let FRAME_POINTER exclude SCORE, just like exclude most of other architectures · df2e1ef6
      Chen Gang authored
      The related warning:
      
        scripts/kconfig/conf --allmodconfig Kconfig
        warning: (FAULT_INJECTION_STACKTRACE_FILTER && LATENCYTOP && KMEMCHECK && LOCKDEP) selects FRAME_POINTER which has unmet direct dependencies (DEBUG_KERNEL && (CRIS || M68K || FRV || UML || AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || ARCH_WANT_FRAME_POINTERS)
      Signed-off-by: default avatarChen Gang <gang.chen.5i5j@gmail.com>
      Cc: Chen Liqin <liqin.linux@gmail.com>
      Cc: Lennox Wu <lennox.wu@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      df2e1ef6
    • Don Zickus's avatar
      kernel/watchdog.c: remove preemption restrictions when restarting lockup detector · bde92cf4
      Don Zickus authored
      Peter Wu noticed the following splat on his machine when updating
      /proc/sys/kernel/watchdog_thresh:
      
        BUG: sleeping function called from invalid context at mm/slub.c:965
        in_atomic(): 1, irqs_disabled(): 0, pid: 1, name: init
        3 locks held by init/1:
         #0:  (sb_writers#3){.+.+.+}, at: [<ffffffff8117b663>] vfs_write+0x143/0x180
         #1:  (watchdog_proc_mutex){+.+.+.}, at: [<ffffffff810e02d3>] proc_dowatchdog+0x33/0x110
         #2:  (cpu_hotplug.lock){.+.+.+}, at: [<ffffffff810589c2>] get_online_cpus+0x32/0x80
        Preemption disabled at:[<ffffffff810e0384>] proc_dowatchdog+0xe4/0x110
      
        CPU: 0 PID: 1 Comm: init Not tainted 3.16.0-rc1-testing #34
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Call Trace:
          dump_stack+0x4e/0x7a
          __might_sleep+0x11d/0x190
          kmem_cache_alloc_trace+0x4e/0x1e0
          perf_event_alloc+0x55/0x440
          perf_event_create_kernel_counter+0x26/0xe0
          watchdog_nmi_enable+0x75/0x140
          update_timers_all_cpus+0x53/0xa0
          proc_dowatchdog+0xe4/0x110
          proc_sys_call_handler+0xb3/0xc0
          proc_sys_write+0x14/0x20
          vfs_write+0xad/0x180
          SyS_write+0x49/0xb0
          system_call_fastpath+0x16/0x1b
        NMI watchdog: disabled (cpu0): hardware events not enabled
      
      What happened is after updating the watchdog_thresh, the lockup detector
      is restarted to utilize the new value.  Part of this process involved
      disabling preemption.  Once preemption was disabled, perf tried to
      allocate a new event (as part of the restart).  This caused the above
      BUG_ON as you can't sleep with preemption disabled.
      
      The preemption restriction seemed agressive as we are not doing anything
      on that particular cpu, but with all the online cpus (which are
      protected by the get_online_cpus lock).  Remove the restriction and the
      BUG_ON goes away.
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Reported-by: default avatarPeter Wu <peter@lekensteyn.nl>
      Tested-by: default avatarPeter Wu <peter@lekensteyn.nl>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: <stable@vger.kernel.org>		[3.13+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bde92cf4
    • Christoph Lameter's avatar
      MAINTAINERS: SLAB maintainer update · 16e943bf
      Christoph Lameter authored
      As discussed in various threads on the side:
      
      Remove one inactive maintainer, add two new ones and update my email
      address.  Plus add Andrew.  And fix the glob to include files like
      mm/slab_common.c
      Signed-off-by: default avatarChristoph Lameter <cl@linux.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Acked-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarPekka Enberg <penberg@kernel.org>
      Cc: Matt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      16e943bf
    • Naoya Horiguchi's avatar
      hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry · 4a705fef
      Naoya Horiguchi authored
      There's a race between fork() and hugepage migration, as a result we try
      to "dereference" a swap entry as a normal pte, causing kernel panic.
      The cause of the problem is that copy_hugetlb_page_range() can't handle
      "swap entry" family (migration entry and hwpoisoned entry) so let's fix
      it.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: <stable@vger.kernel.org>	[2.6.37+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4a705fef
    • Hugh Dickins's avatar
      tmpfs: ZERO_RANGE and COLLAPSE_RANGE not currently supported · 13ace4d0
      Hugh Dickins authored
      I was well aware of FALLOC_FL_ZERO_RANGE and FALLOC_FL_COLLAPSE_RANGE
      support being added to fallocate(); but didn't realize until now that I
      had been too stupid to future-proof shmem_fallocate() against new
      additions.  -EOPNOTSUPP instead of going on to ordinary fallocation.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reviewed-by: default avatarLukas Czerner <lczerner@redhat.com>
      Cc: <stable@vger.kernel.org>	[3.15]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      13ace4d0
    • David Rientjes's avatar
      mm, hotplug: probe interface is available on several platforms · 7cdb0d25
      David Rientjes authored
      Documentation/memory-hotplug.txt incorrectly states that the memory
      driver "probe" interface is only supported on powerpc and is vague about
      its application on x86.  Clarify the platforms that make this interface
      available if memory hotplug is enabled.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7cdb0d25
    • Petr Tesarik's avatar
      kexec: save PG_head_mask in VMCOREINFO · b3acc56b
      Petr Tesarik authored
      To allow filtering of huge pages, makedumpfile must be able to identify
      them in the dump.  This can be done by checking the appropriate page
      flag, so communicate its value to makedumpfile through the VMCOREINFO
      interface.
      
      There's only one small catch.  Depending on how many page flags are
      available on a given architecture, this bit can be called PG_head or
      PG_compound.
      
      I sent a similar patch back in 2012, but Eric Biederman did not like
      using an #ifdef.  So, this time I'm adding a common symbol
      (PG_head_mask) instead.
      
      See https://lkml.org/lkml/2012/11/28/91 for the previous version.
      Signed-off-by: default avatarPetr Tesarik <ptesarik@suse.cz>
      Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Shaohua Li <shli@kernel.org>
      Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b3acc56b
    • Srivatsa S. Bhat's avatar
      CPU hotplug, smp: flush any pending IPI callbacks before CPU offline · 8d056c48
      Srivatsa S. Bhat authored
      There is a race between the CPU offline code (within stop-machine) and
      the smp-call-function code, which can lead to getting IPIs on the
      outgoing CPU, *after* it has gone offline.
      
      Specifically, this can happen when using
      smp_call_function_single_async() to send the IPI, since this API allows
      sending asynchronous IPIs from IRQ disabled contexts.  The exact race
      condition is described below.
      
      During CPU offline, in stop-machine, we don't enforce any rule in the
      _DISABLE_IRQ stage, regarding the order in which the outgoing CPU and
      the other CPUs disable their local interrupts.  Due to this, we can
      encounter a situation in which an IPI is sent by one of the other CPUs
      to the outgoing CPU (while it is *still* online), but the outgoing CPU
      ends up noticing it only *after* it has gone offline.
      
                    CPU 1                                         CPU 2
                (Online CPU)                               (CPU going offline)
      
             Enter _PREPARE stage                          Enter _PREPARE stage
      
                                                           Enter _DISABLE_IRQ stage
      
                                                         =
             Got a device interrupt, and                 | Didn't notice the IPI
             the interrupt handler sent an               | since interrupts were
             IPI to CPU 2 using                          | disabled on this CPU.
             smp_call_function_single_async()            |
                                                         =
      
             Enter _DISABLE_IRQ stage
      
             Enter _RUN stage                              Enter _RUN stage
      
                                        =
             Busy loop with interrupts  |                  Invoke take_cpu_down()
             disabled.                  |                  and take CPU 2 offline
                                        =
      
             Enter _EXIT stage                             Enter _EXIT stage
      
             Re-enable interrupts                          Re-enable interrupts
      
                                                           The pending IPI is noted
                                                           immediately, but alas,
                                                           the CPU is offline at
                                                           this point.
      
      This of course, makes the smp-call-function IPI handler code running on
      CPU 2 unhappy and it complains about "receiving an IPI on an offline
      CPU".
      
      One real example of the scenario on CPU 1 is the block layer's
      complete-request call-path:
      
      	__blk_complete_request() [interrupt-handler]
      	    raise_blk_irq()
      	        smp_call_function_single_async()
      
      However, if we look closely, the block layer does check that the target
      CPU is online before firing the IPI.  So in this case, it is actually
      the unfortunate ordering/timing of events in the stop-machine phase that
      leads to receiving IPIs after the target CPU has gone offline.
      
      In reality, getting a late IPI on an offline CPU is not too bad by
      itself (this can happen even due to hardware latencies in IPI
      send-receive).  It is a bug only if the target CPU really went offline
      without executing all the callbacks queued on its list.  (Note that a
      CPU is free to execute its pending smp-call-function callbacks in a
      batch, without waiting for the corresponding IPIs to arrive for each one
      of those callbacks).
      
      So, fixing this issue can be broken up into two parts:
      
      1. Ensure that a CPU goes offline only after executing all the
         callbacks queued on it.
      
      2. Modify the warning condition in the smp-call-function IPI handler
         code such that it warns only if an offline CPU got an IPI *and* that
         CPU had gone offline with callbacks still pending in its queue.
      
      Achieving part 1 is straight-forward - just flush (execute) all the
      queued callbacks on the outgoing CPU in the CPU_DYING stage[1],
      including those callbacks for which the source CPU's IPIs might not have
      been received on the outgoing CPU yet.  Once we do this, an IPI that
      arrives late on the CPU going offline (either due to the race mentioned
      above, or due to hardware latencies) will be completely harmless, since
      the outgoing CPU would have executed all the queued callbacks before
      going offline.
      
      Overall, this fix (parts 1 and 2 put together) additionally guarantees
      that we will see a warning only when the *IPI-sender code* is buggy -
      that is, if it queues the callback _after_ the target CPU has gone
      offline.
      
      [1].  The CPU_DYING part needs a little more explanation: by the time we
      execute the CPU_DYING notifier callbacks, the CPU would have already
      been marked offline.  But we want to flush out the pending callbacks at
      this stage, ignoring the fact that the CPU is offline.  So restructure
      the IPI handler code so that we can by-pass the "is-cpu-offline?" check
      in this particular case.  (Of course, the right solution here is to fix
      CPU hotplug to mark the CPU offline _after_ invoking the CPU_DYING
      notifiers, but this requires a lot of audit to ensure that this change
      doesn't break any existing code; hence lets go with the solution
      proposed above until that is done).
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Suggested-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Gautham R Shenoy <ego@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Mike Galbraith <mgalbraith@suse.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarSachin Kamat <sachin.kamat@samsung.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8d056c48
    • Steven Miao's avatar
      mm: nommu: per-thread vma cache fix · e020d5bd
      Steven Miao authored
      mm could be removed from current task struct, using previous vma->vm_mm
      
      It will crash on blackfin after updated to Linux 3.15.  The commit "mm:
      per-thread vma caching" caused the crash.  mm could be removed from
      current task struct before
      
        mmput()->
          exit_mmap()->
            delete_vma_from_mm()
      
      the detailed fault information:
      
          NULL pointer access
          Kernel OOPS in progress
          Deferred Exception context
          CURRENT PROCESS:
          COMM=modprobe PID=278  CPU=0
          invalid mm
          return address: [0x000531de]; contents of:
          0x000531b0:  c727  acea  0c42  181d  0000  0000  0000  a0a8
          0x000531c0:  b090  acaa  0c42  1806  0000  0000  0000  a0e8
          0x000531d0:  b0d0  e801  0000  05b3  0010  e522  0046 [a090]
          0x000531e0:  6408  b090  0c00  17cc  3042  e3ff  f37b  2fc8
      
          CPU: 0 PID: 278 Comm: modprobe Not tainted 3.15.0-ADI-2014R1-pre-00345-gea9f446 #25
          task: 0572b720 ti: 0569e000 task.ti: 0569e000
          Compiled for cpu family 0x27fe (Rev 0), but running on:0x0000 (Rev 0)
          ADSP-BF609-0.0 500(MHz CCLK) 125(MHz SCLK) (mpu off)
          Linux version 3.15.0-ADI-2014R1-pre-00345-gea9f446 (steven@steven-OptiPlex-390) (gcc version 4.3.5 (ADI-trunk/svn-5962) ) #25 Tue Jun 10 17:47:46 CST 2014
      
          SEQUENCER STATUS:		Not tainted
           SEQSTAT: 00000027  IPEND: 8008  IMASK: ffff  SYSCFG: 2806
            EXCAUSE   : 0x27
            physical IVG3 asserted : <0xffa00744> { _trap + 0x0 }
            physical IVG15 asserted : <0xffa00d68> { _evt_system_call + 0x0 }
            logical irq   6 mapped  : <0xffa003bc> { _bfin_coretmr_interrupt + 0x0 }
            logical irq   7 mapped  : <0x00008828> { _bfin_fault_routine + 0x0 }
            logical irq  11 mapped  : <0x00007724> { _l2_ecc_err + 0x0 }
            logical irq  13 mapped  : <0x00008828> { _bfin_fault_routine + 0x0 }
            logical irq  39 mapped  : <0x00150788> { _bfin_twi_interrupt_entry + 0x0 }
            logical irq  40 mapped  : <0x00150788> { _bfin_twi_interrupt_entry + 0x0 }
           RETE: <0x00000000> /* Maybe null pointer? */
           RETN: <0x0569fe50> /* kernel dynamic memory (maybe user-space) */
           RETX: <0x00000480> /* Maybe fixed code section */
           RETS: <0x00053384> { _exit_mmap + 0x28 }
           PC  : <0x000531de> { _delete_vma_from_mm + 0x92 }
          DCPLB_FAULT_ADDR: <0x00000008> /* Maybe null pointer? */
          ICPLB_FAULT_ADDR: <0x000531de> { _delete_vma_from_mm + 0x92 }
          PROCESSOR STATE:
           R0 : 00000004    R1 : 0569e000    R2 : 00bf3db4    R3 : 00000000
           R4 : 057f9800    R5 : 00000001    R6 : 0569ddd0    R7 : 0572b720
           P0 : 0572b854    P1 : 00000004    P2 : 00000000    P3 : 0569dda0
           P4 : 0572b720    P5 : 0566c368    FP : 0569fe5c    SP : 0569fd74
           LB0: 057f523f    LT0: 057f523e    LC0: 00000000
           LB1: 0005317c    LT1: 00053172    LC1: 00000002
           B0 : 00000000    L0 : 00000000    M0 : 0566f5bc    I0 : 00000000
           B1 : 00000000    L1 : 00000000    M1 : 00000000    I1 : ffffffff
           B2 : 00000001    L2 : 00000000    M2 : 00000000    I2 : 00000000
           B3 : 00000000    L3 : 00000000    M3 : 00000000    I3 : 057f8000
          A0.w: 00000000   A0.x: 00000000   A1.w: 00000000   A1.x: 00000000
          USP : 056ffcf8  ASTAT: 02003024
      
          Hardware Trace:
             0 Target : <0x00003fb8> { _trap_c + 0x0 }
               Source : <0xffa006d8> { _exception_to_level5 + 0xa0 } JUMP.L
             1 Target : <0xffa00638> { _exception_to_level5 + 0x0 }
               Source : <0xffa004f2> { _bfin_return_from_exception + 0x6 } RTX
             2 Target : <0xffa004ec> { _bfin_return_from_exception + 0x0 }
               Source : <0xffa00590> { _ex_trap_c + 0x70 } JUMP.S
             3 Target : <0xffa00520> { _ex_trap_c + 0x0 }
               Source : <0xffa0076e> { _trap + 0x2a } JUMP (P4)
             4 Target : <0xffa00744> { _trap + 0x0 }
                FAULT : <0x000531de> { _delete_vma_from_mm + 0x92 } P0 = W[P2 + 2]
               Source : <0x000531da> { _delete_vma_from_mm + 0x8e } P2 = [P4 + 0x18]
             5 Target : <0x000531da> { _delete_vma_from_mm + 0x8e }
               Source : <0x00053176> { _delete_vma_from_mm + 0x2a } IF CC JUMP pcrel
             6 Target : <0x0005314c> { _delete_vma_from_mm + 0x0 }
               Source : <0x00053380> { _exit_mmap + 0x24 } JUMP.L
             7 Target : <0x00053378> { _exit_mmap + 0x1c }
               Source : <0x00053394> { _exit_mmap + 0x38 } IF !CC JUMP pcrel (BP)
             8 Target : <0x00053390> { _exit_mmap + 0x34 }
               Source : <0xffa020e0> { __cond_resched + 0x20 } RTS
             9 Target : <0xffa020c0> { __cond_resched + 0x0 }
               Source : <0x0005338c> { _exit_mmap + 0x30 } JUMP.L
            10 Target : <0x0005338c> { _exit_mmap + 0x30 }
               Source : <0x0005333a> { _delete_vma + 0xb2 } RTS
            11 Target : <0x00053334> { _delete_vma + 0xac }
               Source : <0x0005507a> { _kmem_cache_free + 0xba } RTS
            12 Target : <0x00055068> { _kmem_cache_free + 0xa8 }
               Source : <0x0005505e> { _kmem_cache_free + 0x9e } IF !CC JUMP pcrel (BP)
            13 Target : <0x00055052> { _kmem_cache_free + 0x92 }
               Source : <0x0005501a> { _kmem_cache_free + 0x5a } IF CC JUMP pcrel
            14 Target : <0x00054ff4> { _kmem_cache_free + 0x34 }
               Source : <0x00054fce> { _kmem_cache_free + 0xe } IF CC JUMP pcrel (BP)
            15 Target : <0x00054fc0> { _kmem_cache_free + 0x0 }
               Source : <0x00053330> { _delete_vma + 0xa8 } JUMP.L
          Kernel Stack
          Stack info:
           SP: [0x0569ff24] <0x0569ff24> /* kernel dynamic memory (maybe user-space) */
           Memory from 0x0569ff20 to 056a0000
          0569ff20: 00000001 [04e8da5a] 00008000  00000000  00000000  056a0000  04e8da5a  04e8da5a
          0569ff40: 04eb9eea  ffa00dce  02003025  04ea09c5  057f523f  04ea09c4  057f523e  00000000
          0569ff60: 00000000  00000000  00000000  00000000  00000000  00000000  00000001  00000000
          0569ff80: 00000000  00000000  00000000  00000000  00000000  00000000  00000000  00000000
          0569ffa0: 0566f5bc  057f8000  057f8000  00000001  04ec0170  056ffcf8  056ffd04  057f9800
          0569ffc0: 04d1d498  057f9800  057f8fe4  057f8ef0  00000001  057f928c  00000001  00000001
          0569ffe0: 057f9800  00000000  00000008  00000007  00000001  00000001  00000001 <00002806>
          Return addresses in stack:
              address : <0x00002806> { _show_cpuinfo + 0x2d2 }
          Modules linked in:
          Kernel panic - not syncing: Kernel exception
          [ end Kernel panic - not syncing: Kernel exception
      Signed-off-by: default avatarSteven Miao <realmz6@gmail.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr@hp.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: <stable@vger.kernel.org>	[3.15.x]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e020d5bd
  2. 22 Jun, 2014 6 commits
    • Linus Torvalds's avatar
      Linux 3.16-rc2 · a497c3ba
      Linus Torvalds authored
      a497c3ba
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 8f5d2708
      Linus Torvalds authored
      Pull i2c new drivers from Wolfram Sang:
       "Here is a pull request from i2c hoping for the "new driver" rule.
      
        Originally, I wanted to send this request during the merge window, but
        code checkers with very recent additions complained, so a few fixups
        were needed.  So, some more time went by and I merged rc1 to get a
        stable base"
      
      So the "new driver" rule is really about drivers that people absolutely
      need for the kernel to work on new hardware, which is not so much the
      case for i2c.  So I considered not pulling this, but eventually
      relented.
      
      Just for FYI: the whole (and only) point of "new drivers" is not that
      new drivers cannot regress things (they can, and they have - by
      triggering badly tested code on machines that never triggered that code
      before), but because they can bring to life machines that otherwise
      wouldn't be useful at all without the drivers.
      
      So the new driver rule is for essential things that actual consumers
      would care about, ie devices like networking or disk drivers that matter
      to normal people (not server people - they run old kernels anyway, so
      mainlining new drivers is irrelevant for them).
      
      * 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: sun6-p2wi: fix call to snprintf
        i2c: rk3x: add NULL entry to the end of_device_id array
        i2c: sun6i-p2wi: use proper return value in probe
        i2c: sunxi: add P2WI (Push/Pull 2 Wire Interface) controller support
        i2c: sunxi: add P2WI DT bindings documentation
        i2c: rk3x: add driver for Rockchip RK3xxx SoC I2C adapter
      8f5d2708
    • Linus Torvalds's avatar
      Merge tag 'locks-v3.16-2' of git://git.samba.org/jlayton/linux · 2dfded82
      Linus Torvalds authored
      Pull file locking fixes from Jeff Layton:
       "File locking related bugfixes
      
        Nothing too earth-shattering here.  A fix for a potential regression
        due to a patch in pile #1, and the addition of a memory barrier to
        prevent a race condition between break_deleg and generic_add_lease"
      
      * tag 'locks-v3.16-2' of git://git.samba.org/jlayton/linux:
        locks: set fl_owner for leases back to current->files
        locks: add missing memory barrier in break_deleg
      2dfded82
    • Linus Torvalds's avatar
      Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 532f5138
      Linus Torvalds authored
      Pull kbuild fixes from Michal Marek:
       "There are three fixes for regressions caused by the relative paths
        series: deb-pkg, tar-pkg and *docs did not work with O=.
      
        Plus, there is a fix for the linux-headers deb package and a fixed
        typo.  These are not regression fixes but are safe enough"
      
      * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        kbuild: fix a typo in a kbuild document
        builddeb: fix missing headers in linux-headers package
        Documentation: Fix DocBook build with relative $(srctree)
        kbuild: Fix tar-pkg with relative $(objtree)
        deb-pkg: Fix for relative paths
      532f5138
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · e13d100b
      Linus Torvalds authored
      Pull btrfs fixes from Chris Mason:
       "This fixes some lockups in btrfs reported with rc1.  It probably has
        some performance impact because it is backing off our spinning locks
        more often and switching to a blocking lock.  I'll be able to nail
        that down next week, but for now I want to get the lockups taken care
        of.
      
        Otherwise some more stack reduction and assorted fixes"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: fix wrong error handle when the device is missing or is not writeable
        Btrfs: fix deadlock when mounting a degraded fs
        Btrfs: use bio_endio_nodec instead of open code
        Btrfs: fix NULL pointer crash when running balance and scrub concurrently
        btrfs: Skip scrubbing removed chunks to avoid -ENOENT.
        Btrfs: fix broken free space cache after the system crashed
        Btrfs: make free space cache write out functions more readable
        Btrfs: remove unused wait queue in struct extent_buffer
        Btrfs: fix deadlocks with trylock on tree nodes
      e13d100b
    • Linus Torvalds's avatar
      Merge branch 'for-3.16' of git://linux-nfs.org/~bfields/linux · 147f1404
      Linus Torvalds authored
      Pull nfsd bugfixes from Bruce Fields:
       "Fixes for a new regression from the xdr encoding rewrite, and a
        delegation problem we've had for a while (made somewhat more annoying
        by the vfs delegation support added in 3.13)"
      
      * 'for-3.16' of git://linux-nfs.org/~bfields/linux:
        NFSD: fix bug for readdir of pseudofs
        NFSD: Don't hand out delegations for 30 seconds after recalling them.
      147f1404
  3. 21 Jun, 2014 8 commits
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 401c58fc
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "This is larger than usual: the main reason are the ARM symbol lookup
        speedups that came in late and were hard to resist.
      
        There's also a kprobes fix and various tooling fixes, plus the minimal
        re-enablement of the mmap2 support interface"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
        x86/kprobes: Fix build errors and blacklist context_track_user
        perf tests: Add test for closing dso objects on EMFILE error
        perf tests: Add test for caching dso file descriptors
        perf tests: Allow reuse of test_file function
        perf tests: Spawn child for each test
        perf tools: Add dso__data_* interface descriptons
        perf tools: Allow to close dso fd in case of open failure
        perf tools: Add file size check and factor dso__data_read_offset
        perf tools: Cache dso data file descriptor
        perf tools: Add global count of opened dso objects
        perf tools: Add global list of opened dso objects
        perf tools: Add data_fd into dso object
        perf tools: Separate dso data related variables
        perf tools: Cache register accesses for unwind processing
        perf record: Fix to honor user freq/interval properly
        perf timechart: Reflow documentation
        perf probe: Improve error messages in --line option
        perf probe: Improve an error message of perf probe --vars mode
        perf probe: Show error code and description in verbose mode
        perf probe: Improve error message for unknown member of data structure
        ...
      401c58fc
    • Linus Torvalds's avatar
      Merge branch 'locking-urgent-for-linus.patch' of... · 7b08d618
      Linus Torvalds authored
      Merge branch 'locking-urgent-for-linus.patch' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
      
      Pull rtmutex fixes from Thomas Gleixner:
       "Another three patches to make the rtmutex code more robust.  That's
        the last urgent fallout from the big futex/rtmutex investigation"
      
      * 'locking-urgent-for-linus.patch' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        rtmutex: Plug slow unlock race
        rtmutex: Detect changes in the pi lock chain
        rtmutex: Handle deadlock detection smarter
      7b08d618
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 7a8e9c80
      Linus Torvalds authored
      Pull s390 patches from Martin Schwidefsky:
       "A couple of bug fixes, a debug change for qdio, an update for the
        default config, and one small extension.
      
        The watchdog module based on diagnose 0x288 is converted to the
        watchdog API and it now works under LPAR as well"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/ccwgroup: use ccwgroup_ungroup wrapper
        s390/ccwgroup: fix an uninitialized return code
        s390/ccwgroup: obtain extra reference for asynchronous processing
        qdio: Keep device-specific dbf entries
        s390/compat: correct ucontext layout for high gprs
        s390/cio: set device name as early as possible
        s390: update default configuration
        s390: avoid format strings leaking into names
        s390/airq: silence lockdep warning
        s390/watchdog: add support for LPAR operation (diag288)
        s390/watchdog: use watchdog API
        s390/sclp_vt220: Enable ASCII console per default
        s390/qdio: replace shift loop by ilog2
        s390/cio: silence lockdep warning
        s390/uaccess: always load the kernel ASCE after task switch
        s390/ap_bus: Make modules parameters visible in sysfs
      7a8e9c80
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://github.com/gxt/linux · f1b35b83
      Linus Torvalds authored
      Pull UniCore32 bug fixes from Guan Xuetao:
       "This includes bugfixes to make unicore32 successfully build under
        defconfig, and some changes for allmodconfig (though not finished)"
      
      * tag 'for-linus' of git://github.com/gxt/linux:
        unicore32: Remove ARCH_HAS_CPUFREQ config option
        UniCore32: Change git tree location information in MAINTAINERS
        arch: unicore32: ksyms: export '__cpuc_coherent_kern_range' to avoid compiling failure
        arch: unicore32: ksyms: export 'pm_power_off' to avoid compiling failure.
        arch: unicore32: ksyms: export additional find_first_*() to avoid compiling failure
        arch:unicore32:mm: add devmem_is_allowed() to support STRICT_DEVMEM
        unicore32: include: asm: add missing ')' for PAGE_* macros in pgtable.h
        arch/unicore32/kernel/setup.c: add generic 'screen_info' to avoid compiling failure
        drivers: scsi: mvsas: fix compiling issue by adding 'MVS_' for "enum pci_interrupt_cause"
        arch: unicore32: kernel: ksyms: remove 'bswapsi2' and 'muldi3' to avoid compiling failure
        arch/unicore32/kernel/ksyms.c: remove 2 export symbols to avoid compiling failure
        drivers/rtc/rtc-puv3.c: remove "&dev->" for typo issue MIME-Version: 1.0
        drivers/rtc/rtc-puv3.c: use dev_dbg() instead of dev_debug() for typo issue
        arch/unicore32/include/asm/io.h: add readl_relaxed() generic definition
        arch/unicore32/include/asm/ptrace.h: add generic definition for profile_pc()
        arch/unicore32/mm/alignment.c: include "asm/pgtable.h" to avoid compiling error
        arch/unicore32/kernel/clock.c: add readl() and writel() for 'PM_' macros
        arch/unicore32/kernel/module.c: use __vmalloc_node_range() instead of __vmalloc_area()
        arch/unicore32/kernel/ksyms.c: remove several undefined exported symbols
      f1b35b83
    • Linus Torvalds's avatar
      Merge tag 'char-misc-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 60761c10
      Linus Torvalds authored
      Pull char / misc driver fixes from Greg KH:
       "Here are 3 patches, one a revert of the UIO patch you objected to in
        3.16-rc1 and that no one wanted to defend, a w1 driver bugfix, and a
        MAINTAINERS update for the vmware balloon driver.
      
        All of these, except for the MAINTAINERS update which just got added,
        have been in linux-next just fine"
      
      * tag 'char-misc-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        MAINTAINERS: add entry for VMware Balloon driver
        w1: mxc_w1: Fix incorrect "presence" status
        Revert "uio: fix vma io range check in mmap"
      60761c10
    • Linus Torvalds's avatar
      Merge tag 'staging-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · e6934ab4
      Linus Torvalds authored
      Pull staging driver fixes from Greg KH:
       "Here are a few fixes for staging and iio drivers that resolve issues
        reported in 3.16-rc1.
      
        All have been in linux-next just fine"
      
      * tag 'staging-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        imx-drm: parallel-display: Fix DPMS default state.
        staging: android: timed_output: fix use after free of dev
        staging: comedi: addi_apci_1564: add addi_watchdog dependency
        staging: rtl8723au: Reference correct firmwarefiles with MODULE_FIRMWARE()
        staging: rtl8723au: Request correct firmware file for A-cut parts
        iio: adc: checking for NULL instead of IS_ERR() in probe
        iio: adc: at91: signedness bug in at91_adc_get_trigger_value_by_name()
        iio: mxs-lradc: fix divider
        iio: Fix endianness issue in ak8975_read_axis()
        staging/iio: IIO_SIMPLE_DUMMY_BUFFER neds IIO_BUFFER
        twl4030-madc: Request processed values in twl4030_get_madc_conversion
        staging: iio: tsl2x7x_core: fix proximity treshold
        iio: Fix two mpl3115 issues in measurement conversion
        iio: hid-sensors: Get feature report from sensor hub after changing power state
      e6934ab4
    • Linus Torvalds's avatar
      Merge tag 'tty-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · c3cb500e
      Linus Torvalds authored
      Pull tty/serial bugfixes from Greg KH:
       "Here are some tty / serial driver bugfixes for 3.16-rc2 that resolve
        some reported issues.  The samsung driver build error itself has been
        reported by a bunch of people, sorry about that one.  The others are
        all tiny and everyone seems to like them in linux-next so far"
      
      * tag 'tty-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        tty/serial: fix 8250 early console option passing to regular console
        tty: Correct INPCK handling
        serial: Fix IGNBRK handling
        serial: samsung: Fix build error
      c3cb500e
    • Linus Torvalds's avatar
      Merge tag 'usb-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 564fbee9
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are some USB fixes for 3.16-rc2 that resolve some reported
        issues.  All of these have been in linux-next for a while with no
        problems"
      
      * tag 'usb-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        USB: usbtest: add a timeout for scatter-gather tests
        USB: EHCI: avoid BIOS handover on the HASEE E200
        usb: fix hub-port pm_runtime_enable() vs runtime pm transitions
        usb: quiet peer failure warning, disable poweroff
        usb: improve "not suspended yet" message in hub_suspend()
        xhci: Fix sleeping with IRQs disabled in xhci_stop_device()
        usb: fix ->update_hub_device() vs hdev->maxchild
      564fbee9
  4. 20 Jun, 2014 9 commits
    • Dmitry Torokhov's avatar
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 3c8fb504
      Linus Torvalds authored
      Pull ACPI and power management fixes from Rafael Wysocki:
       "These are fixes mostly (ia64 regression related to the ACPI
        enumeration of devices, cpufreq regressions, fix for I2C controllers
        included in Intel SoCs, mvebu cpuidle driver fix related to sysfs)
        plus additional kernel command line arguments from Kees to make it
        possible to build kernel images with hibernation and the kernel
        address space randomization included simultaneously, a new ACPI
        battery driver quirk for a system with a broken BIOS and a couple of
        ACPI core cleanups.
      
        Specifics:
      
         - Fix for an ia64 regression introduced during the 3.11 cycle by a
           commit that modified the hardware initialization ordering and made
           device discovery fail on some systems.
      
         - Fix for a build problem on systems where the cpufreq-cpu0 driver is
           built-in and the cpu-thermal driver is modular from Arnd Bergmann.
      
         - Fix for a recently introduced computational mistake in the
           intel_pstate driver that leads to excessive rounding errors from
           Doug Smythies.
      
         - Fix for a failure code path in cpufreq_update_policy() that fails
           to unlock the locks acquired previously from Aaron Plattner.
      
         - Fix for the cpuidle mvebu driver to use shorter state names which
           will prevent the sysfs interface from returning mangled strings.
           From Gregory Clement.
      
         - ACPI LPSS driver fix to make sure that the I2C controllers included
           in BayTrail SoCs are not held in the reset state while they are
           being probed from Mika Westerberg.
      
         - New kernel command line arguments making it possible to build
           kernel images with hibernation and kASLR included at the same time
           and to select which of them will be used via the command line (they
           are still functionally mutually exclusive, though).  From Kees
           Cook.
      
         - ACPI battery driver quirk for Acer Aspire V5-573G that fails to
           send battery status change notifications timely from Alexander
           Mezin.
      
         - Two ACPI core cleanups from Christoph Jaeger and Fabian Frederick"
      
      * tag 'pm+acpi-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpuidle: mvebu: Fix the name of the states
        cpufreq: unlock when failing cpufreq_update_policy()
        intel_pstate: Correct rounding in busy calculation
        ACPI: use kstrto*() instead of simple_strto*()
        ACPI / processor replace __attribute__((packed)) by __packed
        ACPI / battery: add quirk for Acer Aspire V5-573G
        ACPI / battery: use callback for setting up quirks
        ACPI / LPSS: Take I2C host controllers out of reset
        x86, kaslr: boot-time selectable with hibernation
        PM / hibernate: introduce "nohibernate" boot parameter
        cpufreq: cpufreq-cpu0: fix CPU_THERMAL dependency
        ACPI / ia64 / sba_iommu: Restore the working initialization ordering
      3c8fb504
    • Linus Torvalds's avatar
      Merge tag 'sound-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 4ef61076
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "The significant part here is a few security fixes for ALSA core
        control API by Lars.  Besides that, there are a few fixes for ASoC
        sigmadsp (again by Lars) for building properly, and small fixes for
        ASoC rsnd, MMP, PXA and FSL, in addition to a fix for bogus WARNING in
        i915/HD-audio binding"
      
      * tag 'sound-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: control: Make sure that id->index does not overflow
        ALSA: control: Handle numid overflow
        ALSA: control: Don't access controls outside of protected regions
        ALSA: control: Fix replacing user controls
        ALSA: control: Protect user controls against concurrent access
        drm/i915, HD-audio: Don't continue probing when nomodeset is given
        ASoC: fsl: Fix build problem
        ASoC: rsnd: fixup index of src/dst mod when capture
        ASoC: fsl_spdif: Fix integer overflow when calculating divisors
        ASoC: fsl_spdif: Fix incorrect usage of regmap_read()
        ASoC: dapm: Make sure register value is in sync with DAPM kcontrol state
        ASoC: sigmadsp: Split regmap and I2C support into separate modules
        ASoC: MMP audio needs sram support
        ASoC: pxa: add I2C dependencies as needed
      4ef61076
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 0c9bc275
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "This looks bigger than it is, as one of the nouveau firmware fixes
        ("drm/gf100-/gr: report class data to host on fwmthd failure")
        regenerates a bunch of the firmware files after changing the assembly
        by a few lines, without that, its more of a
      
          36 files changed, 370 insertions(+), 129 deletions(-)
      
        It contains some vt.c fixes acked by Greg, for rare hard hangs on i915
        loading, that also fixes hangs on reload and spurious register write
        errors.
      
        drm core: one fix for uninit memory
      
        nouveau: displayport rework caused a few regressions, Ben has been
           fixing them as the appear, along with some other fixes
      
        radeon: pageflipping regression fix, deep color fix, mode validation
           fixes
      
        i915: fbc disable, vga console kick off, backlight fix, divide-by-zero
           fix"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (33 commits)
        drm: fix uninitialized acquire_ctx fields (v2)
        drm/radeon: Fix radeon_irq_kms_pflip_irq_get/put() imbalance
        Revert "drm/radeon: remove drm_vblank_get|put from pflip handling"
        drm/radeon: improve dvi_mode_valid
        drm/radeon: update mode_valid testing for DP
        drm/radeon: Use dce5/6 hdmi deep color clock setup also on dce8+
        drm/nouveau/disp: fix oops in destructor with headless cards
        drm/gf117/i2c: no aux channels on this chipset
        drm/nouveau/doc: update the thermal documentation
        drm/nouveau/pwr: fix typo in fifo wrap handling
        drm/nv50/disp: fix a potential oops in supervisor handling
        drm/nouveau/disp/dp: don't touch link config after success
        drm/nouveau/kms: reference vblank for crtc during pageflip.
        drm/gk104/fb/ram: fixups from an earlier search+replace
        drm/nv50/gr: remove an unneeded write while initialising PGRAPH
        drm/nv50/gr: fix overlap while zeroing zcull regions
        drm/gf100-/gr: report class data to host on fwmthd failure
        drm/gk104/ibus: increase various random timeouts
        drm/gk104/clk: only touch divider for mode we'll be using
        drm/radeon: Bypass hw lut's for > 8 bpc framebuffer scanout.
        ...
      0c9bc275
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · f1d70248
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "A smaller collection of fixes for the block core that would be nice to
        have in -rc2.  This pull request contains:
      
         - Fixes for races in the wait/wakeup logic used in blk-mq from
           Alexander.  No issues have been observed, but it is definitely a
           bit flakey currently.  Alternatively, we may drop the cyclic
           wakeups going forward, but that needs more testing.
      
         - Some cleanups from Christoph.
      
         - Fix for an oops in null_blk if queue_mode=1 and softirq completions
           are used.  From me.
      
         - A fix for a regression caused by the chunk size setting.  It
           inadvertently used max_hw_sectors instead of max_sectors, which is
           incorrect, and causes hangs on btrfs multi-disk setups (where hw
           sectors apparently isn't set).  From me.
      
         - Removal of WQ_POWER_EFFICIENT in the kblockd creation.  This was a
           recent addition as well, but it actually breaks blk-mq which relies
           on strict scheduling.  If the workqueue power_efficient mode is
           turned on, this breaks blk-mq.  From Matias.
      
         - null_blk module parameter description fix from Mike"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        blk-mq: bitmap tag: fix races in bt_get() function
        blk-mq: bitmap tag: fix race on blk_mq_bitmap_tags::wake_cnt
        blk-mq: bitmap tag: fix races on shared ::wake_index fields
        block: blk_max_size_offset() should check ->max_sectors
        null_blk: fix softirq completions for queue_mode == 1
        blk-mq: merge blk_mq_drain_queue and __blk_mq_drain_queue
        blk-mq: properly drain stopped queues
        block: remove WQ_POWER_EFFICIENT from kblockd
        null_blk: fix name and description of 'queue_mode' module parameter
        block: remove elv_abort_queue and blk_abort_flushes
      f1d70248
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 58c72f94
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "A first set of bug fixes that didn't make it for the merge window, and
        two Kconfig cleanups that still make sense at this point.
      
        Unfortunately, one of the two cleanups caused an unintended change in
        the original version, so we had to revert one part of it and do some
        more testing to ensure the rest is really fine.  There was also a
        last-minute rebase of the patches to remove another bad commit"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: use menuconfig for sub-arch menus
        ARM: multi_v7_defconfig: re-enable SDHCI drivers
        ARM: EXYNOS: Fix compilation warning
        ARM: exynos: move sysram info to exynos.c
        ARM: dts: Specify the NAND ECC scheme explicitly on Armada 385 DB board
        ARM: dts: Specify the NAND ECC scheme explicitly on Armada 375 DB board
        ARM: exynos: cleanup kconfig option display
        misc: vexpress: fix error handling vexpress_syscfg_regmap_init()
        ARM: Remove ARCH_HAS_CPUFREQ config option
        ARM: integrator: fix section mismatch problem
        ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size
        ARM: samsung: make SAMSUNG_DMADEV optional
        remoteproc: da8xx: don't select CMA on no-MMU
        bus/arm-cci: add dependency on OF && CPU_V7
        ARM: keystone requires ARM_PATCH_PHYS_VIRT
        ARM: omap2: fix am43xx dependency on l2x0 cache
      58c72f94
    • Alexander Shiyan's avatar
      w1: mxc_w1: Fix incorrect "presence" status · 37014f5b
      Alexander Shiyan authored
      W1 reset_bus() should return zero if slave device is present.
      This patch fix this issue.
      Signed-off-by: default avatarAlexander Shiyan <shc_work@mail.ru>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      37014f5b
    • Denis Carikli's avatar
      imx-drm: parallel-display: Fix DPMS default state. · c026a3f3
      Denis Carikli authored
      If connector->dpms is left untouched, it defaults
      to DRM_MODE_DPMS_ON (0).
      
      As a result, drm_helper_connector_dpms will exit when
      it will be asked to set the state to DRM_MODE_DPMS_ON,
      because it is already set.
      
      That issue prevented displays from turning on at boot.
      Signed-off-by: default avatarDenis Carikli <denis@eukrea.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c026a3f3
    • Yi Zhang's avatar
      staging: android: timed_output: fix use after free of dev · b28e7d58
      Yi Zhang authored
      tdev->dev has been freed in device_destroy(), it's not right to
      use dev_set_drvdata() after that;
      Signed-off-by: default avatarYi Zhang <yizhang@marvell.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b28e7d58