commit ce88f02714836c33a4f0173c29fbe378ea402275
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 30 05:49:46 2017 +0200

    Linux 3.18.51

commit 4e340a02d59c230b99460574c6a8fc87dc1a9a47
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 24 19:36:13 2017 -0700

    ping: implement proper locking
    
    commit 43a6684519ab0a6c52024b5e25322476cabad893 upstream.
    
    We got a report of yet another bug in ping
    
    http://www.openwall.com/lists/oss-security/2017/03/24/6
    
    ->disconnect() is not called with socket lock held.
    
    Fix this by acquiring ping rwlock earlier.
    
    Thanks to Daniel, Alexander and Andrey for letting us know this problem.
    
    Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Daniel Jiang <danieljiang0415@gmail.com>
    Reported-by: Solar Designer <solar@openwall.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f63514257efd74108711e1d4e2ca462968170c42
Author: EunTaik Lee <eun.taik.lee@samsung.com>
Date:   Wed Feb 24 04:38:06 2016 +0000

    staging/android/ion : fix a race condition in the ion driver
    
    commit 9590232bb4f4cc824f3425a6e1349afbe6d6d2b7 upstream.
    
    There is a use-after-free problem in the ion driver.
    This is caused by a race condition in the ion_ioctl()
    function.
    
    A handle has ref count of 1 and two tasks on different
    cpus calls ION_IOC_FREE simultaneously.
    
    cpu 0                                   cpu 1
    -------------------------------------------------------
    ion_handle_get_by_id()
    (ref == 2)
                                ion_handle_get_by_id()
                                (ref == 3)
    
    ion_free()
    (ref == 2)
    
    ion_handle_put()
    (ref == 1)
    
                                ion_free()
                                (ref == 0 so ion_handle_destroy() is
                                called
                                and the handle is freed.)
    
                                ion_handle_put() is called and it
                                decreases the slub's next free pointer
    
    The problem is detected as an unaligned access in the
    spin lock functions since it uses load exclusive
     instruction. In some cases it corrupts the slub's
    free pointer which causes a mis-aligned access to the
    next free pointer.(kmalloc returns a pointer like
    ffffc0745b4580aa). And it causes lots of other
    hard-to-debug problems.
    
    This symptom is caused since the first member in the
    ion_handle structure is the reference count and the
    ion driver decrements the reference after it has been
    freed.
    
    To fix this problem client->lock mutex is extended
    to protect all the codes that uses the handle.
    
    Signed-off-by: Eun Taik Lee <eun.taik.lee@samsung.com>
    Reviewed-by: Laura Abbott <labbott@redhat.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    index 7ff2a7ec871f..33b390e7ea31

commit 898ef37a73f7ad23cd5030d1c845d9b00da20721
Author: Vlad Tsyrklevich <vlad@tsyrklevich.net>
Date:   Wed Oct 12 18:51:24 2016 +0200

    vfio/pci: Fix integer overflows, bitmask check
    
    commit 05692d7005a364add85c6e25a6c4447ce08f913a upstream.
    
    The VFIO_DEVICE_SET_IRQS ioctl did not sufficiently sanitize
    user-supplied integers, potentially allowing memory corruption. This
    patch adds appropriate integer overflow checks, checks the range bounds
    for VFIO_IRQ_SET_DATA_NONE, and also verifies that only single element
    in the VFIO_IRQ_SET_DATA_TYPE_MASK bitmask is set.
    VFIO_IRQ_SET_ACTION_TYPE_MASK is already correctly checked later in
    vfio_pci_set_irqs_ioctl().
    
    Furthermore, a kzalloc is changed to a kcalloc because the use of a
    kzalloc with an integer multiplication allowed an integer overflow
    condition to be reached without this patch. kcalloc checks for overflow
    and should prevent a similar occurrence.
    
    Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dff2b1e346b783fb69d736b887005e6d41f34d9b
Author: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Date:   Thu Jan 28 09:22:44 2016 -0200

    xc2028: avoid use after free
    
    commit 8dfbcc4351a0b6d2f2d77f367552f48ffefafe18 upstream.
    
    If struct xc2028_config is passed without a firmware name,
    the following trouble may happen:
    
    [11009.907205] xc2028 5-0061: type set to XCeive xc2028/xc3028 tuner
    [11009.907491] ==================================================================
    [11009.907750] BUG: KASAN: use-after-free in strcmp+0x96/0xb0 at addr ffff8803bd78ab40
    [11009.907992] Read of size 1 by task modprobe/28992
    [11009.907994] =============================================================================
    [11009.907997] BUG kmalloc-16 (Tainted: G        W      ): kasan: bad access detected
    [11009.907999] -----------------------------------------------------------------------------
    
    [11009.908008] INFO: Allocated in xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd] age=0 cpu=3 pid=28992
    [11009.908012]  ___slab_alloc+0x581/0x5b0
    [11009.908014]  __slab_alloc+0x51/0x90
    [11009.908017]  __kmalloc+0x27b/0x350
    [11009.908022]  xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd]
    [11009.908026]  usb_hcd_submit_urb+0x1e8/0x1c60
    [11009.908029]  usb_submit_urb+0xb0e/0x1200
    [11009.908032]  usb_serial_generic_write_start+0xb6/0x4c0
    [11009.908035]  usb_serial_generic_write+0x92/0xc0
    [11009.908039]  usb_console_write+0x38a/0x560
    [11009.908045]  call_console_drivers.constprop.14+0x1ee/0x2c0
    [11009.908051]  console_unlock+0x40d/0x900
    [11009.908056]  vprintk_emit+0x4b4/0x830
    [11009.908061]  vprintk_default+0x1f/0x30
    [11009.908064]  printk+0x99/0xb5
    [11009.908067]  kasan_report_error+0x10a/0x550
    [11009.908070]  __asan_report_load1_noabort+0x43/0x50
    [11009.908074] INFO: Freed in xc2028_set_config+0x90/0x630 [tuner_xc2028] age=1 cpu=3 pid=28992
    [11009.908077]  __slab_free+0x2ec/0x460
    [11009.908080]  kfree+0x266/0x280
    [11009.908083]  xc2028_set_config+0x90/0x630 [tuner_xc2028]
    [11009.908086]  xc2028_attach+0x310/0x8a0 [tuner_xc2028]
    [11009.908090]  em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
    [11009.908094]  em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
    [11009.908098]  em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
    [11009.908101]  em28xx_register_extension+0xd9/0x190 [em28xx]
    [11009.908105]  em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
    [11009.908108]  do_one_initcall+0x141/0x300
    [11009.908111]  do_init_module+0x1d0/0x5ad
    [11009.908114]  load_module+0x6666/0x9ba0
    [11009.908117]  SyS_finit_module+0x108/0x130
    [11009.908120]  entry_SYSCALL_64_fastpath+0x16/0x76
    [11009.908123] INFO: Slab 0xffffea000ef5e280 objects=25 used=25 fp=0x          (null) flags=0x2ffff8000004080
    [11009.908126] INFO: Object 0xffff8803bd78ab40 @offset=2880 fp=0x0000000000000001
    
    [11009.908130] Bytes b4 ffff8803bd78ab30: 01 00 00 00 2a 07 00 00 9d 28 00 00 01 00 00 00  ....*....(......
    [11009.908133] Object ffff8803bd78ab40: 01 00 00 00 00 00 00 00 b0 1d c3 6a 00 88 ff ff  ...........j....
    [11009.908137] CPU: 3 PID: 28992 Comm: modprobe Tainted: G    B   W       4.5.0-rc1+ #43
    [11009.908140] Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0350.2015.0812.1722 08/12/2015
    [11009.908142]  ffff8803bd78a000 ffff8802c273f1b8 ffffffff81932007 ffff8803c6407a80
    [11009.908148]  ffff8802c273f1e8 ffffffff81556759 ffff8803c6407a80 ffffea000ef5e280
    [11009.908153]  ffff8803bd78ab40 dffffc0000000000 ffff8802c273f210 ffffffff8155ccb4
    [11009.908158] Call Trace:
    [11009.908162]  [<ffffffff81932007>] dump_stack+0x4b/0x64
    [11009.908165]  [<ffffffff81556759>] print_trailer+0xf9/0x150
    [11009.908168]  [<ffffffff8155ccb4>] object_err+0x34/0x40
    [11009.908171]  [<ffffffff8155f260>] kasan_report_error+0x230/0x550
    [11009.908175]  [<ffffffff81237d71>] ? trace_hardirqs_off_caller+0x21/0x290
    [11009.908179]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908182]  [<ffffffff8155f5c3>] __asan_report_load1_noabort+0x43/0x50
    [11009.908185]  [<ffffffff8155ea00>] ? __asan_register_globals+0x50/0xa0
    [11009.908189]  [<ffffffff8194cea6>] ? strcmp+0x96/0xb0
    [11009.908192]  [<ffffffff8194cea6>] strcmp+0x96/0xb0
    [11009.908196]  [<ffffffffa13ba4ac>] xc2028_set_config+0x15c/0x630 [tuner_xc2028]
    [11009.908200]  [<ffffffffa13bac90>] xc2028_attach+0x310/0x8a0 [tuner_xc2028]
    [11009.908203]  [<ffffffff8155ea78>] ? memset+0x28/0x30
    [11009.908206]  [<ffffffffa13ba980>] ? xc2028_set_config+0x630/0x630 [tuner_xc2028]
    [11009.908211]  [<ffffffffa157a59a>] em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
    [11009.908215]  [<ffffffffa157aa2a>] ? em28xx_dvb_init.part.3+0x37c/0x5cf4 [em28xx_dvb]
    [11009.908219]  [<ffffffffa157a3a1>] ? hauppauge_hvr930c_init+0x487/0x487 [em28xx_dvb]
    [11009.908222]  [<ffffffffa01795ac>] ? lgdt330x_attach+0x1cc/0x370 [lgdt330x]
    [11009.908226]  [<ffffffffa01793e0>] ? i2c_read_demod_bytes.isra.2+0x210/0x210 [lgdt330x]
    [11009.908230]  [<ffffffff812e87d0>] ? ref_module.part.15+0x10/0x10
    [11009.908233]  [<ffffffff812e56e0>] ? module_assert_mutex_or_preempt+0x80/0x80
    [11009.908238]  [<ffffffffa157af92>] em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
    [11009.908242]  [<ffffffffa157a6ae>] ? em28xx_attach_xc3028.constprop.7+0x30d/0x30d [em28xx_dvb]
    [11009.908245]  [<ffffffff8195222d>] ? string+0x14d/0x1f0
    [11009.908249]  [<ffffffff8195381f>] ? symbol_string+0xff/0x1a0
    [11009.908253]  [<ffffffff81953720>] ? uuid_string+0x6f0/0x6f0
    [11009.908257]  [<ffffffff811a775e>] ? __kernel_text_address+0x7e/0xa0
    [11009.908260]  [<ffffffff8104b02f>] ? print_context_stack+0x7f/0xf0
    [11009.908264]  [<ffffffff812e9846>] ? __module_address+0xb6/0x360
    [11009.908268]  [<ffffffff8137fdc9>] ? is_ftrace_trampoline+0x99/0xe0
    [11009.908271]  [<ffffffff811a775e>] ? __kernel_text_address+0x7e/0xa0
    [11009.908275]  [<ffffffff81240a70>] ? debug_check_no_locks_freed+0x290/0x290
    [11009.908278]  [<ffffffff8104a24b>] ? dump_trace+0x11b/0x300
    [11009.908282]  [<ffffffffa13e8143>] ? em28xx_register_extension+0x23/0x190 [em28xx]
    [11009.908285]  [<ffffffff81237d71>] ? trace_hardirqs_off_caller+0x21/0x290
    [11009.908289]  [<ffffffff8123ff56>] ? trace_hardirqs_on_caller+0x16/0x590
    [11009.908292]  [<ffffffff812404dd>] ? trace_hardirqs_on+0xd/0x10
    [11009.908296]  [<ffffffffa13e8143>] ? em28xx_register_extension+0x23/0x190 [em28xx]
    [11009.908299]  [<ffffffff822dcbb0>] ? mutex_trylock+0x400/0x400
    [11009.908302]  [<ffffffff810021a1>] ? do_one_initcall+0x131/0x300
    [11009.908306]  [<ffffffff81296dc7>] ? call_rcu_sched+0x17/0x20
    [11009.908309]  [<ffffffff8159e708>] ? put_object+0x48/0x70
    [11009.908314]  [<ffffffffa1579f11>] em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
    [11009.908317]  [<ffffffffa13e81f9>] em28xx_register_extension+0xd9/0x190 [em28xx]
    [11009.908320]  [<ffffffffa0150000>] ? 0xffffffffa0150000
    [11009.908324]  [<ffffffffa0150010>] em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
    [11009.908327]  [<ffffffff810021b1>] do_one_initcall+0x141/0x300
    [11009.908330]  [<ffffffff81002070>] ? try_to_run_init_process+0x40/0x40
    [11009.908333]  [<ffffffff8123ff56>] ? trace_hardirqs_on_caller+0x16/0x590
    [11009.908337]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908340]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908343]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908346]  [<ffffffff8155ea37>] ? __asan_register_globals+0x87/0xa0
    [11009.908350]  [<ffffffff8144da7b>] do_init_module+0x1d0/0x5ad
    [11009.908353]  [<ffffffff812f2626>] load_module+0x6666/0x9ba0
    [11009.908356]  [<ffffffff812e9c90>] ? symbol_put_addr+0x50/0x50
    [11009.908361]  [<ffffffffa1580037>] ? em28xx_dvb_init.part.3+0x5989/0x5cf4 [em28xx_dvb]
    [11009.908366]  [<ffffffff812ebfc0>] ? module_frob_arch_sections+0x20/0x20
    [11009.908369]  [<ffffffff815bc940>] ? open_exec+0x50/0x50
    [11009.908374]  [<ffffffff811671bb>] ? ns_capable+0x5b/0xd0
    [11009.908377]  [<ffffffff812f5e58>] SyS_finit_module+0x108/0x130
    [11009.908379]  [<ffffffff812f5d50>] ? SyS_init_module+0x1f0/0x1f0
    [11009.908383]  [<ffffffff81004044>] ? lockdep_sys_exit_thunk+0x12/0x14
    [11009.908394]  [<ffffffff822e6936>] entry_SYSCALL_64_fastpath+0x16/0x76
    [11009.908396] Memory state around the buggy address:
    [11009.908398]  ffff8803bd78aa00: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908401]  ffff8803bd78aa80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908403] >ffff8803bd78ab00: fc fc fc fc fc fc fc fc 00 00 fc fc fc fc fc fc
    [11009.908405]                                            ^
    [11009.908407]  ffff8803bd78ab80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908409]  ffff8803bd78ac00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908411] ==================================================================
    
    In order to avoid it, let's set the cached value of the firmware
    name to NULL after freeing it. While here, return an error if
    the memory allocation fails.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12ebe5ca67dc8743d8cba7ef2019a2f72bb480b7
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue Jun 2 20:43:24 2015 +0100

    ARM: 8383/1: nommu: avoid deprecated source register on mov
    
    commit 970d96f9a81b0dd83ddd8bce0e5e1ba31881c5f5 upstream.
    
    In Thumb2 mode, the stack register r13 is deprecated if the
    destination register is the program counter (r15). Similar to
    head.S, head-nommu.S uses r13 to store the return address used
    after configuring the CPU's CP15 register. However, since we do
    not enable a MMU, there will be no address switch and it is
    possible to use branch with link instruction to call
    __after_proc_init.
    
    Avoid using r13 completely by using bl to call __after_proc_init
    and get rid of __secondary_switched.
    
    Beside removing unnecessary complexity, this also fixes a
    compiler warning when compiling a !MMU kernel:
    Warning: Use of r13 as a source register is deprecated when r15
    is the destination register.
    
    Tested-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39541d00f20c8f89667d257de3a5464b3f73be49
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Sep 1 16:14:47 2016 -0700

    kconfig: tinyconfig: provide whole choice blocks to avoid warnings
    
    commit 236dec051078a8691950f56949612b4b74107e48 upstream.
    
    Using "make tinyconfig" produces a couple of annoying warnings that show
    up for build test machines all the time:
    
        .config:966:warning: override: NOHIGHMEM changes choice state
        .config:965:warning: override: SLOB changes choice state
        .config:963:warning: override: KERNEL_XZ changes choice state
        .config:962:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
        .config:933:warning: override: SLOB changes choice state
        .config:930:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
        .config:870:warning: override: SLOB changes choice state
        .config:868:warning: override: KERNEL_XZ changes choice state
        .config:867:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
    
    I've made a previous attempt at fixing them and we discussed a number of
    alternatives.
    
    I tried changing the Makefile to use "merge_config.sh -n
    $(fragment-list)" but couldn't get that to work properly.
    
    This is yet another approach, based on the observation that we do want
    to see a warning for conflicting 'choice' options, and that we can
    simply make them non-conflicting by listing all other options as
    disabled.  This is a trivial patch that we can apply independent of
    plans for other changes.
    
    Link: http://lkml.kernel.org/r/20160829214952.1334674-2-arnd@arndb.de
    Link: https://storage.kernelci.org/mainline/v4.7-rc6/x86-tinyconfig/build.log
    https://patchwork.kernel.org/patch/9212749/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Josh Triplett <josh@joshtriplett.org>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14a1258fbe60af4e24b83de095ca5ab6a1490a95
Author: John Crispin <john@phrozen.org>
Date:   Tue Dec 20 19:12:46 2016 +0100

    MIPS: ralink: Cosmetic change to prom_init().
    
    commit 9c48568b3692f1a56cbf1935e4eea835e6b185b1 upstream.
    
    Over the years the code has been changed various times leading to
    argc/argv being defined in a different function to where we actually
    use the variables. Clean this up by moving them to prom_init_cmdline().
    
    Signed-off-by: John Crispin <john@phrozen.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14902/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba57c28de48eba5223e0a9a528b4a6108ce3872c
Author: Hannes Reinecke <hare@suse.de>
Date:   Mon Jul 6 13:07:58 2015 +0200

    aic94xx: Skip reading user settings if flash is not found
    
    commit 36dd5acd196574d41de3e81d8264df475bbb7123 upstream.
    
    If no user settings are found it's pointless trying to
    read them from flash. So skip that step.
    This also fixes a compilation warning about uninitialized variables in
    aic94xx.
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b5f1e01764ccd2d97b648e7834aa40954085f8b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 28 17:54:38 2015 +0100

    ARM: 8296/1: cache-l2x0: clean up aurora cache handling
    
    commit 20e783e39e55c2615fb61d1b3d139ee9edcf6772 upstream.
    
    The aurora cache controller is the only remaining user of a couple
    of functions in this file and are completely unused when that is
    disabled, leading to build warnings:
    
    arch/arm/mm/cache-l2x0.c:167:13: warning: 'l2x0_cache_sync' defined but not used [-Wunused-function]
    arch/arm/mm/cache-l2x0.c:184:13: warning: 'l2x0_flush_all' defined but not used [-Wunused-function]
    arch/arm/mm/cache-l2x0.c:194:13: warning: 'l2x0_disable' defined but not used [-Wunused-function]
    
    With the knowledge that the code is now aurora-specific, we can
    simplify it noticeably:
    
    - The pl310 errata workarounds are not needed on aurora and can be removed
    - As confirmed by Thomas Petazzoni from the data sheet, the cache_wait()
      macro is never needed.
    - No need to hold the lock across atomic cache sync
    - We can load the l2x0_base into a local variable across operations
    
    There should be no functional change in this patch, but readability
    and the generated object code improves, along with avoiding the
    warnings.
    
     (on Armada 370 RD and Armada XP GP, boot tested, plus a little bit of
     DMA traffic by reading data from a SD card)
    
    Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adef520a920ebcb81df7d1a05014a933034aa9ea
Author: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Date:   Thu Dec 25 18:21:41 2014 +0900

    btrfs: fix state->private cast on 32 bit machines
    
    commit 6e1103a6e9b19dbdc348077d04a546b626911fc5 upstream.
    
    Suppress the following warning displayed on building 32bit (i686) kernel.
    
    ===============================================================================
    ...
       CC [M]  fs/btrfs/extent_io.o
    fs/btrfs/extent_io.c: In function ‘btrfs_free_io_failure_record’:
    fs/btrfs/extent_io.c:2193:13: warning: cast to pointer from integer of
    different size [-Wint-to-pointer-cast]
        failrec = (struct io_failure_record *)state->private;
    ...
    ===============================================================================
    
    Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Reported-by: Chris Murphy <chris@colorremedies.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d46d31e9aea18e9520c32962d4f5fba50e136d8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 26 13:08:10 2016 -0500

    gfs2: avoid uninitialized variable warning
    
    commit 67893f12e5374bbcaaffbc6e570acbc2714ea884 upstream.
    
    We get a bogus warning about a potential uninitialized variable
    use in gfs2, because the compiler does not figure out that we
    never use the leaf number if get_leaf_nr() returns an error:
    
    fs/gfs2/dir.c: In function 'get_first_leaf':
    fs/gfs2/dir.c:802:9: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
    fs/gfs2/dir.c: In function 'dir_split_leaf':
    fs/gfs2/dir.c:1021:8: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    Changing the 'if (!error)' to 'if (!IS_ERR_VALUE(error))' is
    sufficient to let gcc understand that this is exactly the same
    condition as in IS_ERR() so it can optimize the code path enough
    to understand it.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a73ec766e4ea7525db20cb59c8a97e3d8b955fb8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 24 10:47:27 2015 +0100

    mmc: sunxi: avoid invalid pointer calculation
    
    commit d34712d2e3db9b241d0484a6e3839c6b7ef9df78 upstream.
    
    The sunxi mmc driver tries to calculate a dma address by using pointer
    arithmetic, which causes a warning when dma_addr_t is wider than a pointer:
    
    drivers/mmc/host/sunxi-mmc.c: In function 'sunxi_mmc_init_idma_des':
    drivers/mmc/host/sunxi-mmc.c:296:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      struct sunxi_idma_des *pdes_pa = (struct sunxi_idma_des *)host->sg_dma;
                                       ^
    
    To avoid this warning and to simplify the logic, this changes
    the code to avoid the cast and calculate the correct address
    manually. The behavior should be unchanged.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: David Lanzendörfer <david.lanzendoerfer@o2s.ch>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51af0f4daa3bee48ef9b4ed5c56f8130ede4aed8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Nov 19 11:42:26 2015 +0100

    net: tulip: turn compile-time warning into dev_warn()
    
    commit de92718883ddbcd11b738d36ffcf57617b97fa12 upstream.
    
    The tulip driver causes annoying build-time warnings for allmodconfig
    builds for all recent architectures:
    
    dec/tulip/winbond-840.c:910:2: warning: #warning Processor architecture undefined
    dec/tulip/tulip_core.c:101:2: warning: #warning Processor architecture undefined!
    
    This is the last remaining warning for arm64, and I'd like to get rid of
    it. We don't really know the cache line size, architecturally it would
    be at least 16 bytes, but all implementations I found have 64 or 128
    bytes. Configuring tulip for 32-byte lines as we do on ARM32 seems to
    be the safe but slow default, and nobody who cares about performance these
    days would use a tulip chip anyway, so we can just use that.
    
    To save the next person the job of trying to find out what this is for
    and picking a default for their architecture just to kill off the warning,
    I'm now removing the preprocessor #warning and turning it into a pr_warn
    or dev_warn that prints the equivalent information when the driver gets
    loaded.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Grant Grundler <grundler@parisc-linux.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 375f2a85ce69c29d2093da4213f2c4ef27cca4b5
Author: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Date:   Sat Aug 30 06:06:25 2014 +0400

    MIPS: MSP71xx: remove odd locking in PCI config space access code
    
    commit c4a305374bbf36414515d2ae00d588c67051e67d upstream.
    
    Caller (generic PCI code) already do proper locking so no need to add
    another one here.
    
    Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
    Cc: Linux MIPS <linux-mips@linux-mips.org>
    Patchwork: https://patchwork.linux-mips.org/patch/7601/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83b7c38b1a3d06439a39f081e299fe98d7aa4014
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jan 28 22:58:28 2016 +0100

    hostap: avoid uninitialized variable use in hfa384x_get_rid
    
    commit 48dc5fb3ba53b20418de8514700f63d88c5de3a3 upstream.
    
    The driver reads a value from hfa384x_from_bap(), which may fail,
    and then assigns the value to a local variable. gcc detects that
    in in the failure case, the 'rlen' variable now contains
    uninitialized data:
    
    In file included from ../drivers/net/wireless/intersil/hostap/hostap_pci.c:220:0:
    drivers/net/wireless/intersil/hostap/hostap_hw.c: In function 'hfa384x_get_rid':
    drivers/net/wireless/intersil/hostap/hostap_hw.c:842:5: warning: 'rec' may be used uninitialized in this function [-Wmaybe-uninitialized]
      if (le16_to_cpu(rec.len) == 0) {
    
    This restructures the function as suggested by Russell King, to
    make it more readable and get more reliable error handling, by
    handling each failure mode using a goto.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0d69335ca0b3f8c68aea40c532b598c673c4890
Author: Richard Leitner <dev@g0hl1n.net>
Date:   Mon Dec 8 16:28:10 2014 +0100

    misc: ioc4: simplify wave period measurement in clock_calibrate
    
    commit 769105aa740dc0428f2585ec99c457d30aaab364 upstream.
    
    The loop for measuring the square wave periods over some cycles is
    refactored to be more easily readable. This includes avoiding a
    "by-hand-implemented" for loop with a "real" one and adding some
    comments.
    
    Furthermore the following compiler warning is avoided by this patch:
    drivers/misc/ioc4.c: In function ‘ioc4_probe’:
    drivers/misc/ioc4.c:194:16: warning: ‘start’ may be used uninitialized
    in this function [-Wmaybe-uninitialized]
      period = (end - start) /
                    ^
    drivers/misc/ioc4.c:148:11: note: ‘start’ was declared here
      uint64_t start, end, period;
               ^
    
    Signed-off-by: Richard Leitner <dev@g0hl1n.net>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db65717e7d005b32a6d03858720844c39bcef0d2
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 29 12:39:13 2016 +0100

    net: vxge: avoid unused function warnings
    
    commit 57e7c8cef224af166b8ec932b5e383641418c005 upstream.
    
    When CONFIG_PCI_MSI is disabled, we get warnings about unused functions
    in the vxge driver:
    
    drivers/net/ethernet/neterion/vxge/vxge-main.c:2121:13: warning: 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
    drivers/net/ethernet/neterion/vxge/vxge-main.c:2149:13: warning: 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
    
    We could add another #ifdef here, but it's nicer to avoid those warnings
    for good by converting the existing #ifdef to if(IS_ENABLED()), which has
    the same effect but provides better compile-time coverage in general,
    and lets the compiler understand better when the function is intentionally
    unused.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c59bad247c60bb54c09c771ef06ba7a434bff7be
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jan 25 22:54:56 2016 +0100

    tty: nozomi: avoid a harmless gcc warning
    
    commit a4f642a8a3c2838ad09fe8313d45db46600e1478 upstream.
    
    The nozomi wireless data driver has its own helper function to
    transfer data from a FIFO, doing an extra byte swap on big-endian
    architectures, presumably to bring the data back into byte-serial
    order after readw() or readl() perform their implicit byteswap.
    
    This helper function is used in the receive_data() function to
    first read the length into a 32-bit variable, which causes
    a compile-time warning:
    
    drivers/tty/nozomi.c: In function 'receive_data':
    drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    The problem is that gcc is unsure whether the data was actually
    read or not. We know that it is at this point, so we can replace
    it with a single readl() to shut up that warning.
    
    I am leaving the byteswap in there, to preserve the existing
    behavior, even though this seems fishy: Reading the length of
    the data into a cpu-endian variable should normally not use
    a second byteswap on big-endian systems, unless the hardware
    is aware of the CPU endianess.
    
    There appears to be a lot more confusion about endianess in this
    driver, so it probably has not worked on big-endian systems in
    a long time, if ever, and I have no way to test it. It's well
    possible that this driver has not been used by anyone in a while,
    the last patch that looks like it was tested on the hardware is
    from 2008.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b342040bee93f1aa89b0ed06d3e97ad37c00d823
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 12 23:54:25 2015 +0200

    brcmfmac: avoid gcc-5.1 warning
    
    commit 22f44150aad7a1d6b074ab6cf59abee61c7187c6 upstream.
    
    gcc-5.0 gained a new warning in the fwsignal portion of the brcmfmac
    driver:
    
    drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c: In function 'brcmf_fws_txs_process':
    drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    This is a false positive, and marking the brcmf_fws_hanger_poppkt function
    as 'static inline' makes the warning go away. I have checked the object
    file output and while a little code gets moved around, the size of
    the binary remains identical.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3f3f11f8b70f9f5a886fe0ce72ae1a9a4018cbc
Author: Kevin Cernekee <cernekee@gmail.com>
Date:   Mon Nov 10 13:09:23 2014 -0800

    Fix signed/unsigned pointer warning
    
    commit 97c7134ae22fbd2b8730211f9d4d4517264a8efe upstream.
    
    Commit 2ae83bf93882d1 ("[CIFS] Fix setting time before epoch (negative
    time values)") changed "u64 t" to "s64 t", which makes do_div() complain
    about a pointer signedness mismatch:
    
          CC      fs/cifs/netmisc.o
        In file included from ./arch/mips/include/asm/div64.h:12:0,
                         from include/linux/kernel.h:124,
                         from include/linux/list.h:8,
                         from include/linux/wait.h:6,
                         from include/linux/net.h:23,
                         from fs/cifs/netmisc.c:25:
        fs/cifs/netmisc.c: In function ‘cifs_NTtimeToUnix’:
        include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer types lacks a cast [enabled by default]
          (void)(((typeof((n)) *)0) == ((uint64_t *)0)); \
                                    ^
        fs/cifs/netmisc.c:941:22: note: in expansion of macro ‘do_div’
           ts.tv_nsec = (long)do_div(t, 10000000) * 100;
    
    Introduce a temporary "u64 abs_t" variable to fix this.
    
    Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5fd3dcbf0973a6a832f81e476c90aa9a027ea87
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 12 23:31:29 2015 +0200

    nfsd: work around a gcc-5.1 warning
    
    commit 6ac75368e1a658903cf57b2bbf66e60d34f55558 upstream.
    
    gcc-5.0 warns about a potential uninitialized variable use in nfsd:
    
    fs/nfsd/nfs4state.c: In function 'nfsd4_process_open2':
    fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used uninitialized in this function [-Wmaybe-uninitialized]
       reset_union_bmap_deny(old_deny_bmap, stp);
       ^
    fs/nfsd/nfs4state.c:3760:16: note: 'old_deny_bmap' was declared here
      unsigned char old_deny_bmap;
                    ^
    
    This is a false positive, the code path that is warned about cannot
    actually be reached.
    
    This adds an initialization for the variable to make the warning go
    away.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 503d2d267caf654d722da7fdfe2fcaaa5c65a042
Author: Markos Chandras <markos.chandras@imgtec.com>
Date:   Tue Nov 18 15:02:32 2014 +0000

    MIPS: asm: compiler: Add new macros to set ISA and arch asm annotations
    
    commit be5136988e25ae0dc8379fcb937efc63d87aba9e upstream.
    
    There are certain places where the code uses .set mips32 or .set mips64
    or .set arch=r4000. In preparation of MIPS R6 support, and in order to
    use as less #ifdefs as possible, we define new macros to set similar
    annotations for MIPS R6.
    
    Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aef5c5b85b269c69927024430c9e553e4b51abe0
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Fri Sep 2 15:22:48 2016 +0100

    net: ti: cpmac: Fix compiler warning due to type confusion
    
    commit 2f5281ba2a8feaf6f0aee93356f350855bb530fc upstream.
    
    cpmac_start_xmit() used the max() macro on skb->len (an unsigned int)
    and ETH_ZLEN (a signed int literal). This led to the following compiler
    warning:
    
      In file included from include/linux/list.h:8:0,
                       from include/linux/module.h:9,
                       from drivers/net/ethernet/ti/cpmac.c:19:
      drivers/net/ethernet/ti/cpmac.c: In function 'cpmac_start_xmit':
      include/linux/kernel.h:748:17: warning: comparison of distinct pointer
      types lacks a cast
        (void) (&_max1 == &_max2);  \
                       ^
      drivers/net/ethernet/ti/cpmac.c:560:8: note: in expansion of macro 'max'
        len = max(skb->len, ETH_ZLEN);
              ^
    
    On top of this, it assigned the result of the max() macro to a signed
    integer whilst all further uses of it result in it being cast to varying
    widths of unsigned integer.
    
    Fix this up by using max_t to ensure the comparison is performed as
    unsigned integers, and for consistency change the type of the len
    variable to unsigned int.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09f7ddc42bdfd9824b36a4b12dc6554e10550ee9
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Tue Jul 26 15:22:17 2016 -0700

    mm/init: fix zone boundary creation
    
    commit 90cae1fe1c3540f791d5b8e025985fa5e699b2bb upstream.
    
    As a part of memory initialisation the architecture passes an array to
    free_area_init_nodes() which specifies the max PFN of each memory zone.
    This array is not necessarily monotonic (due to unused zones) so this
    array is parsed to build monotonic lists of the min and max PFN for each
    zone.  ZONE_MOVABLE is special cased here as its limits are managed by
    the mm subsystem rather than the architecture.  Unfortunately, this
    special casing is broken when ZONE_MOVABLE is the not the last zone in
    the zone list.  The core of the issue is:
    
            if (i == ZONE_MOVABLE)
                    continue;
            arch_zone_lowest_possible_pfn[i] =
                    arch_zone_highest_possible_pfn[i-1];
    
    As ZONE_MOVABLE is skipped the lowest_possible_pfn of the next zone will
    be set to zero.  This patch fixes this bug by adding explicitly tracking
    where the next zone should start rather than relying on the contents
    arch_zone_highest_possible_pfn[].
    
    Thie is low priority.  To get bitten by this you need to enable a zone
    that appears after ZONE_MOVABLE in the zone_type enum.  As far as I can
    tell this means running a kernel with ZONE_DEVICE or ZONE_CMA enabled,
    so I can't see this affecting too many people.
    
    I only noticed this because I've been fiddling with ZONE_DEVICE on
    powerpc and 4.6 broke my test kernel.  This bug, in conjunction with the
    changes in Taku Izumi's kernelcore=mirror patch (d91749c1dda71) and
    powerpc being the odd architecture which initialises max_zone_pfn[] to
    ~0ul instead of 0 caused all of system memory to be placed into
    ZONE_DEVICE at boot, followed a panic since device memory cannot be used
    for kernel allocations.  I've already submitted a patch to fix the
    powerpc specific bits, but I figured this should be fixed too.
    
    Link: http://lkml.kernel.org/r/1462435033-15601-1-git-send-email-oohall@gmail.com
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Cc: Anton Blanchard <anton@samba.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7c1eda42eca7da8e9b084cd349b3ab8c139803c
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Mon Mar 23 19:50:21 2015 -0600

    iommu/vt-d: Remove unused variable
    
    commit 509fca899d5682a6eee3d1fb70bba7c89439034b upstream.
    
    Unused after commit 71684406905f ("iommu/vt-d: Detach domain *only*
    from attached iommus").  Reported by 0-day builder.
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4064f65ae2d7ef04285866f697d94fd6013e22ef
Author: Andre Przywara <andre.przywara@arm.com>
Date:   Thu Apr 23 17:17:40 2015 +0100

    fs/nfs: fix new compiler warning about boolean in switch
    
    commit c7757074839f2cd440521482d76ea180d0d4bdac upstream.
    
    The brand new GCC 5.1.0 warns by default on using a boolean in the
    switch condition. This results in the following warning:
    
    fs/nfs/nfs4proc.c: In function 'nfs4_proc_get_rootfh':
    fs/nfs/nfs4proc.c:3100:10: warning: switch condition has boolean value [-Wswitch-bool]
      switch (auth_probe) {
              ^
    
    This code was obviously using switch to make use of the fall-through
    semantics (without the usual comment, though).
    Rewrite that code using if statements to avoid the warning and make
    the code a bit more readable on the way.
    
    Signed-off-by: Andre Przywara <andre.przywara@arm.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 803e3757c40366d673b7792f6ac07793825fafeb
Author: Peter Zijlstra (Intel) <peterz@infradead.org>
Date:   Tue Dec 16 12:47:34 2014 +0100

    perf: Avoid horrible stack usage
    
    commit 86038c5ea81b519a8a1fcfcd5e4599aab0cdd119 upstream.
    
    Both Linus (most recent) and Steve (a while ago) reported that perf
    related callbacks have massive stack bloat.
    
    The problem is that software events need a pt_regs in order to
    properly report the event location and unwind stack. And because we
    could not assume one was present we allocated one on stack and filled
    it with minimal bits required for operation.
    
    Now, pt_regs is quite large, so this is undesirable. Furthermore it
    turns out that most sites actually have a pt_regs pointer available,
    making this even more onerous, as the stack space is pointless waste.
    
    This patch addresses the problem by observing that software events
    have well defined nesting semantics, therefore we can use static
    per-cpu storage instead of on-stack.
    
    Linus made the further observation that all but the scheduler callers
    of perf_sw_event() have a pt_regs available, so we change the regular
    perf_sw_event() to require a valid pt_regs (where it used to be
    optional) and add perf_sw_event_sched() for the scheduler.
    
    We have a scheduler specific call instead of a more generic _noregs()
    like construct because we can assume non-recursion from the scheduler
    and thereby simplify the code further (_noregs would have to put the
    recursion context call inline in order to assertain which __perf_regs
    element to use).
    
    One last note on the implementation of perf_trace_buf_prepare(); we
    allow .regs = NULL for those cases where we already have a pt_regs
    pointer available and do not need another.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Reported-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Javi Merino <javi.merino@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Petr Mladek <pmladek@suse.cz>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
    Cc: Vaibhav Nagarnaik <vnagarnaik@google.com>
    Link: http://lkml.kernel.org/r/20141216115041.GW3337@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e0aa9da2a47b8d0379e32e9717c6df2cc3bc66b
Author: Alban Bedel <albeu@free.fr>
Date:   Fri Sep 4 14:29:16 2015 +0200

    MIPS: Fix the build on jz4740 after removing the custom gpio.h
    
    commit 5b235dc2647e4977b17b5c41d959d0f455831c3f upstream.
    
    Somehow the wrong version of the patch to remove the use of custom
    gpio.h on mips has been merged. This patch add the missing fixes for a
    build error on jz4740 because linux/gpio.h doesn't provide any machine
    specfics definitions anymore.
    
    Signed-off-by: Alban Bedel <albeu@free.fr>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: Lars-Peter Clausen <lars@metafoo.de>
    Cc: Brian Norris <computersforpeace@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/11089/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9bf6fcfeb37ac9d6bce176a59b79234c9e79d2b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Apr 21 15:41:10 2017 +0200

    dm bufio: hide bogus warning
    
    mips-gcc-5.3 warns about correct code on linux-3.18 and earlier:
    
    In file included from ../include/linux/blkdev.h:4:0,
                     from ../drivers/md/dm-bufio.h:12,
                     from ../drivers/md/dm-bufio.c:9:
    ../drivers/md/dm-bufio.c: In function 'alloc_buffer':
    ../include/linux/sched.h:1975:56: warning: 'noio_flag' may be used uninitialized in this function [-Wmaybe-uninitialized]
      current->flags = (current->flags & ~PF_MEMALLOC_NOIO) | flags;
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
    ../drivers/md/dm-bufio.c:325:11: note: 'noio_flag' was declared here
    
    The warning disappeared on later kernels with this commit: be0c37c985ed
    ("MIPS: Rearrange PTE bits into fixed positions.")  I assume this only
    happened because it changed some inlining decisions.
    
    On 3.18.y, we can shut up the warning by adding an extra initialization.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 279b8b78a229ad47aadfba6d3b46ea9f72a58512
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Apr 21 15:06:12 2017 +0200

    gadgetfs: fix uninitialized variable in error handling
    
    gcc warns about a bug in 3.18.y:
    
    drivers/usb/gadget/legacy/inode.c:648:10: warning: 'value' may be used
    
    This is caused by the backport of f01d35a15fa0416 from 4.0 to 3.18:
    c81fc59be42c6e0 gadgetfs: use-after-free in ->aio_read()
    
    The backported patch was buggy, but the mainline code was rewritten
    in a larger patch directly following this one in a way that fixed the
    bug.
    
    For stable, we should need only a one-line change to make sure we
    return an proper error code. It is very unlikely that anybody ever
    ran into the out-of-memory case here in practice, but the compiler
    is right in theory.
    
    Fixes: c81fc59be42c ("gadgetfs: use-after-free in ->aio_read()")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2d62e629983929083fc8871381451a9479a6fc0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Apr 21 14:45:23 2017 +0200

    clk: at91: usb: fix determine_rate prototype again
    
    We had an incorrect backport of
    4591243102fa ("clk: at91: usb: propagate rate modification to the parent clk")
    that was fixed incorrectly in linux-3.18.y by
    76723e7ed589 ("clk: at91: usb: fix determine_rate prototype")
    
    as shown by this warning:
    
    drivers/clk/at91/clk-usb.c:155:20: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    drivers/clk/at91/clk-usb.c:193:20: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    
    This should fix it properly.
    
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21ffe52cc23f29b9fddb2bb063340d1cda9cc57e
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Jan 18 17:23:41 2017 +0000

    arm64: avoid returning from bad_mode
    
    commit 7d9e8f71b989230bc613d121ca38507d34ada849 upstream.
    
    Generally, taking an unexpected exception should be a fatal event, and
    bad_mode is intended to cater for this. However, it should be possible
    to contain unexpected synchronous exceptions from EL0 without bringing
    the kernel down, by sending a SIGILL to the task.
    
    We tried to apply this approach in commit 9955ac47f4ba1c95 ("arm64:
    don't kill the kernel on a bad esr from el0"), by sending a signal for
    any bad_mode call resulting from an EL0 exception.
    
    However, this also applies to other unexpected exceptions, such as
    SError and FIQ. The entry paths for these exceptions branch to bad_mode
    without configuring the link register, and have no kernel_exit. Thus, if
    we take one of these exceptions from EL0, bad_mode will eventually
    return to the original user link register value.
    
    This patch fixes this by introducing a new bad_el0_sync handler to cater
    for the recoverable case, and restoring bad_mode to its original state,
    whereby it calls panic() and never returns. The recoverable case
    branches to bad_el0_sync with a bl, and returns to userspace via the
    usual ret_to_user mechanism.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Fixes: 9955ac47f4ba1c95 ("arm64: don't kill the kernel on a bad esr from el0")
    Reported-by: Mark Salter <msalter@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f68b351358a77e992279cdb698bdc2f45f08f11
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Mon Apr 3 15:12:43 2017 +0100

    kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd
    
    commit 8b3405e345b5a098101b0c31b264c812bba045d9 upstream.
    
    In kvm_free_stage2_pgd() we don't hold the kvm->mmu_lock while calling
    unmap_stage2_range() on the entire memory range for the guest. This could
    cause problems with other callers (e.g, munmap on a memslot) trying to
    unmap a range. And since we have to unmap the entire Guest memory range
    holding a spinlock, make sure we yield the lock if necessary, after we
    unmap each PUD range.
    
    Fixes: commit d5d8184d35c9 ("KVM: ARM: Memory virtualization setup")
    Cc: Paolo Bonzini <pbonzin@redhat.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Christoffer Dall <christoffer.dall@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    [ Avoid vCPU starvation and lockup detector warnings ]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0420e5585687bc1713dbaea4f4a2348c4bb43b60
Author: Yazen Ghannam <yazen.ghannam@amd.com>
Date:   Thu Mar 30 13:17:14 2017 +0200

    x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
    
    commit 29f72ce3e4d18066ec75c79c857bee0618a3504b upstream.
    
    MCA bank 3 is reserved on systems pre-Fam17h, so it didn't have a name.
    However, MCA bank 3 is defined on Fam17h systems and can be accessed
    using legacy MSRs. Without a name we get a stack trace on Fam17h systems
    when trying to register sysfs files for bank 3 on kernels that don't
    recognize Scalable MCA.
    
    Call MCA bank 3 "decode_unit" since this is what it represents on
    Fam17h. This will allow kernels without SMCA support to see this bank on
    Fam17h+ and prevent the stack trace. This will not affect older systems
    since this bank is reserved on them, i.e. it'll be ignored.
    
    Tested on AMD Fam15h and Fam17h systems.
    
      WARNING: CPU: 26 PID: 1 at lib/kobject.c:210 kobject_add_internal
      kobject: (ffff88085bb256c0): attempted to be registered with empty name!
      ...
      Call Trace:
       kobject_add_internal
       kobject_add
       kobject_create_and_add
       threshold_create_device
       threshold_init_device
    
    Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/1490102285-3659-1-git-send-email-Yazen.Ghannam@amd.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2221b78d1d87050d96e6fbecf616de3220d07a7
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Apr 11 10:38:13 2017 +0530

    powerpc/kprobe: Fix oops when kprobed on 'stdu' instruction
    
    commit 9e1ba4f27f018742a1aa95d11e35106feba08ec1 upstream.
    
    If we set a kprobe on a 'stdu' instruction on powerpc64, we see a kernel
    OOPS:
    
      Bad kernel stack pointer cd93c840 at c000000000009868
      Oops: Bad kernel stack pointer, sig: 6 [#1]
      ...
      GPR00: c000001fcd93cb30 00000000cd93c840 c0000000015c5e00 00000000cd93c840
      ...
      NIP [c000000000009868] resume_kernel+0x2c/0x58
      LR [c000000000006208] program_check_common+0x108/0x180
    
    On a 64-bit system when the user probes on a 'stdu' instruction, the kernel does
    not emulate actual store in emulate_step() because it may corrupt the exception
    frame. So the kernel does the actual store operation in exception return code
    i.e. resume_kernel().
    
    resume_kernel() loads the saved stack pointer from memory using lwz, which only
    loads the low 32-bits of the address, causing the kernel crash.
    
    Fix this by loading the 64-bit value instead.
    
    Fixes: be96f63375a1 ("powerpc: Split out instruction analysis part of emulate_step()")
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Reviewed-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    [mpe: Change log massage, add stable tag]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea1eeb936e38bc76704a6106e3443fb75cab5836
Author: Sebastian Siewior <bigeasy@linutronix.de>
Date:   Wed Feb 22 17:15:21 2017 +0100

    ubi/upd: Always flush after prepared for an update
    
    commit 9cd9a21ce070be8a918ffd3381468315a7a76ba6 upstream.
    
    In commit 6afaf8a484cb ("UBI: flush wl before clearing update marker") I
    managed to trigger and fix a similar bug. Now here is another version of
    which I assumed it wouldn't matter back then but it turns out UBI has a
    check for it and will error out like this:
    
    |ubi0 warning: validate_vid_hdr: inconsistent used_ebs
    |ubi0 error: validate_vid_hdr: inconsistent VID header at PEB 592
    
    All you need to trigger this is? "ubiupdatevol /dev/ubi0_0 file" + a
    powercut in the middle of the operation.
    ubi_start_update() sets the update-marker and puts all EBs on the erase
    list. After that userland can proceed to write new data while the old EB
    aren't erased completely. A powercut at this point is usually not that
    much of a tragedy. UBI won't give read access to the static volume
    because it has the update marker. It will most likely set the corrupted
    flag because it misses some EBs.
    So we are all good. Unless the size of the image that has been written
    differs from the old image in the magnitude of at least one EB. In that
    case UBI will find two different values for `used_ebs' and refuse to
    attach the image with the error message mentioned above.
    
    So in order not to get in the situation, the patch will ensure that we
    wait until everything is removed before it tries to write any data.
    The alternative would be to detect such a case and remove all EBs at the
    attached time after we processed the volume-table and see the
    update-marker set. The patch looks bigger and I doubt it is worth it
    since usually the write() will wait from time to time for a new EB since
    usually there not that many spare EB that can be used.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df5024c30a27fd1f6ddde9915e773e4fcad48377
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Wed Apr 19 10:53:51 2017 +0800

    mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for DDR50 card
    
    commit 9f327845358d3dd0d8a5a7a5436b0aa5c432e757 upstream.
    
    Currently for DDR50 card, it need tuning in default. We meet tuning fail
    issue for DDR50 card and some data CRC error when DDR50 sd card works.
    
    This is because the default pad I/O drive strength can't make sure DDR50
    card work stable. So increase the pad I/O drive strength for DDR50 card,
    and use pins_100mhz.
    
    This fixes DDR50 card support for IMX since DDR50 tuning was enabled from
    commit 9faac7b95ea4 ("mmc: sdhci: enable tuning for DDR50")
    
    Tested-and-reported-by: Tim Harvey <tharvey@gateworks.com>
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Acked-by: Dong Aisheng <aisheng.dong@nxp.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53d2524d3cc8ccf7d8119bf4e643846c3c4f4562
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Apr 19 19:47:04 2017 +0200

    ACPI / power: Avoid maybe-uninitialized warning
    
    commit fe8c470ab87d90e4b5115902dd94eced7e3305c3 upstream.
    
    gcc -O2 cannot always prove that the loop in acpi_power_get_inferred_state()
    is enterered at least once, so it assumes that cur_state might not get
    initialized:
    
    drivers/acpi/power.c: In function 'acpi_power_get_inferred_state':
    drivers/acpi/power.c:222:9: error: 'cur_state' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    This sets the variable to zero at the start of the loop, to ensure that
    there is well-defined behavior even for an empty list. This gets rid of
    the warning.
    
    The warning first showed up when the -Os flag got removed in a bug fix
    patch in linux-4.11-rc5.
    
    I would suggest merging this addon patch on top of that bug fix to avoid
    introducing a new warning in the stable kernels.
    
    Fixes: 61b79e16c68d (ACPI: Fix incompatibility with mcount-based function graph tracing)
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ca9c341821221cafd468134de0582d9798af82c
Author: Thorsten Leemhuis <linux@leemhuis.info>
Date:   Tue Apr 18 11:14:28 2017 -0700

    Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled
    
    commit 704de489e0e3640a2ee2d0daf173e9f7375582ba upstream.
    
    Temporary got a Lifebook E547 into my hands and noticed the touchpad
    only works after running:
    
            echo "1" > /sys/devices/platform/i8042/serio2/crc_enabled
    
    Add it to the list of machines that need this workaround.
    
    Signed-off-by: Thorsten Leemhuis <linux@leemhuis.info>
    Reviewed-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ac3f8b5b877114d8324ef038d145aaaf86f37a2
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Sun Apr 9 22:09:38 2017 +0200

    s390/mm: fix CMMA vs KSM vs others
    
    commit a8f60d1fadf7b8b54449fcc9d6b15248917478ba upstream.
    
    On heavy paging with KSM I see guest data corruption. Turns out that
    KSM will add pages to its tree, where the mapping return true for
    pte_unused (or might become as such later).  KSM will unmap such pages
    and reinstantiate with different attributes (e.g. write protected or
    special, e.g. in replace_page or write_protect_page)). This uncovered
    a bug in our pagetable handling: We must remove the unused flag as
    soon as an entry becomes present again.
    
    Signed-of-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 018a5fb662bdbf94874fb7c000fec6e9f00729ab
Author: Germano Percossi <germano.percossi@citrix.com>
Date:   Fri Apr 7 12:29:37 2017 +0100

    CIFS: remove bad_network_name flag
    
    commit a0918f1ce6a43ac980b42b300ec443c154970979 upstream.
    
    STATUS_BAD_NETWORK_NAME can be received during node failover,
    causing the flag to be set and making the reconnect thread
    always unsuccessful, thereafter.
    
    Once the only place where it is set is removed, the remaining
    bits are rendered moot.
    
    Removing it does not prevent "mount" from failing when a non
    existent share is passed.
    
    What happens when the share really ceases to exist while the
    share is mounted is undefined now as much as it was before.
    
    Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af82fc7d93082d1e2404779f8bf9761ce43b6285
Author: Sachin Prabhu <sprabhu@redhat.com>
Date:   Sun Apr 16 20:37:24 2017 +0100

    cifs: Do not send echoes before Negotiate is complete
    
    commit 62a6cfddcc0a5313e7da3e8311ba16226fe0ac10 upstream.
    
    commit 4fcd1813e640 ("Fix reconnect to not defer smb3 session reconnect
    long after socket reconnect") added support for Negotiate requests to
    be initiated by echo calls.
    
    To avoid delays in calling echo after a reconnect, I added the patch
    introduced by the commit b8c600120fc8 ("Call echo service immediately
    after socket reconnect").
    
    This has however caused a regression with cifs shares which do not have
    support for echo calls to trigger Negotiate requests. On connections
    which need to call Negotiation, the echo calls trigger an error which
    triggers a reconnect which in turn triggers another echo call. This
    results in a loop which is only broken when an operation is performed on
    the cifs share. For an idle share, it can DOS a server.
    
    The patch uses the smb_operation can_echo() for cifs so that it is
    called only if connection has been already been setup.
    
    kernel bz: 194531
    
    Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
    Tested-by: Jonathan Liu <net147@gmail.com>
    Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b83d4b7a052ca6cede13077538862bdc75058ea
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Apr 19 14:29:46 2017 -0400

    ring-buffer: Have ring_buffer_iter_empty() return true when empty
    
    commit 78f7a45dac2a2d2002f98a3a95f7979867868d73 upstream.
    
    I noticed that reading the snapshot file when it is empty no longer gives a
    status. It suppose to show the status of the snapshot buffer as well as how
    to allocate and use it. For example:
    
     ># cat snapshot
     # tracer: nop
     #
     #
     # * Snapshot is allocated *
     #
     # Snapshot commands:
     # echo 0 > snapshot : Clears and frees snapshot buffer
     # echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.
     #                      Takes a snapshot of the main buffer.
     # echo 2 > snapshot : Clears snapshot buffer (but does not allocate or free)
     #                      (Doesn't have to be '2' works with any number that
     #                       is not a '0' or '1')
    
    But instead it just showed an empty buffer:
    
     ># cat snapshot
     # tracer: nop
     #
     # entries-in-buffer/entries-written: 0/0   #P:4
     #
     #                              _-----=> irqs-off
     #                             / _----=> need-resched
     #                            | / _---=> hardirq/softirq
     #                            || / _--=> preempt-depth
     #                            ||| /     delay
     #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
     #              | |       |   ||||       |         |
    
    What happened was that it was using the ring_buffer_iter_empty() function to
    see if it was empty, and if it was, it showed the status. But that function
    was returning false when it was empty. The reason was that the iter header
    page was on the reader page, and the reader page was empty, but so was the
    buffer itself. The check only tested to see if the iter was on the commit
    page, but the commit page was no longer pointing to the reader page, but as
    all pages were empty, the buffer is also.
    
    Fixes: 651e22f2701b ("ring-buffer: Always reset iterator to reader page")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be0ef33ed21e505cb34c727d7e56d08c7ddb62ab
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Apr 19 12:07:08 2017 -0400

    tracing: Allocate the snapshot buffer before enabling probe
    
    commit df62db5be2e5f070ecd1a5ece5945b590ee112e0 upstream.
    
    Currently the snapshot trigger enables the probe and then allocates the
    snapshot. If the probe triggers before the allocation, it could cause the
    snapshot to fail and turn tracing off. It's best to allocate the snapshot
    buffer first, and then enable the trigger. If something goes wrong in the
    enabling of the trigger, the snapshot buffer is still allocated, but it can
    also be freed by the user by writting zero into the snapshot buffer file.
    
    Also add a check of the return status of alloc_snapshot().
    
    Fixes: 77fd5c15e3 ("tracing: Add snapshot trigger to function probes")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6efda2501976288f10895834ba2782d0df093441
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Apr 18 15:31:09 2017 +0100

    KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings
    
    commit c9f838d104fed6f2f61d68164712e3204bf5271b upstream.
    
    This fixes CVE-2017-7472.
    
    Running the following program as an unprivileged user exhausts kernel
    memory by leaking thread keyrings:
    
            #include <keyutils.h>
    
            int main()
            {
                    for (;;)
                            keyctl_set_reqkey_keyring(KEY_REQKEY_DEFL_THREAD_KEYRING);
            }
    
    Fix it by only creating a new thread keyring if there wasn't one before.
    To make things more consistent, make install_thread_keyring_to_cred()
    and install_process_keyring_to_cred() both return 0 if the corresponding
    keyring is already present.
    
    Fixes: d84f4f992cbd ("CRED: Inaugurate COW credentials")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44d6e10f77095133e3882529a16b686b2305e6b0
Author: David Howells <dhowells@redhat.com>
Date:   Tue Apr 18 15:31:08 2017 +0100

    KEYS: Change the name of the dead type to ".dead" to prevent user access
    
    commit c1644fe041ebaf6519f6809146a77c3ead9193af upstream.
    
    This fixes CVE-2017-6951.
    
    Userspace should not be able to do things with the "dead" key type as it
    doesn't have some of the helper functions set upon it that the kernel
    needs.  Attempting to use it may cause the kernel to crash.
    
    Fix this by changing the name of the type to ".dead" so that it's rejected
    up front on userspace syscalls by key_get_type_from_user().
    
    Though this doesn't seem to affect recent kernels, it does affect older
    ones, certainly those prior to:
    
            commit c06cfb08b88dfbe13be44a69ae2fdc3a7c902d81
            Author: David Howells <dhowells@redhat.com>
            Date:   Tue Sep 16 17:36:06 2014 +0100
            KEYS: Remove key_type::match in favour of overriding default by match_preparse
    
    which went in before 3.18-rc1.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44c037827f0aeddbbbb323930fa3d09a7b4fffca
Author: David Howells <dhowells@redhat.com>
Date:   Tue Apr 18 15:31:07 2017 +0100

    KEYS: Disallow keyrings beginning with '.' to be joined as session keyrings
    
    commit ee8f844e3c5a73b999edf733df1c529d6503ec2f upstream.
    
    This fixes CVE-2016-9604.
    
    Keyrings whose name begin with a '.' are special internal keyrings and so
    userspace isn't allowed to create keyrings by this name to prevent
    shadowing.  However, the patch that added the guard didn't fix
    KEYCTL_JOIN_SESSION_KEYRING.  Not only can that create dot-named keyrings,
    it can also subscribe to them as a session keyring if they grant SEARCH
    permission to the user.
    
    This, for example, allows a root process to set .builtin_trusted_keys as
    its session keyring, at which point it has full access because now the
    possessor permissions are added.  This permits root to add extra public
    keys, thereby bypassing module verification.
    
    This also affects kexec and IMA.
    
    This can be tested by (as root):
    
            keyctl session .builtin_trusted_keys
            keyctl add user a a @s
            keyctl list @s
    
    which on my test box gives me:
    
            2 keys in keyring:
            180010936: ---lswrv     0     0 asymmetric: Build time autogenerated kernel key: ae3d4a31b82daa8e1a75b49dc2bba949fd992a05
            801382539: --alswrv     0     0 user: a
    
    
    Fix this by rejecting names beginning with a '.' in the keyctl.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    cc: linux-ima-devel@lists.sourceforge.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>