commit d7d78c937183fc6920cbc09076a1652831bfccc9
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Oct 21 08:46:24 2018 +0100

    Linux 3.16.60

commit 87b0687a0643c1e2b4ca36db985dc101389047b7
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Mar 2 12:17:22 2017 -0800

    give up on gcc ilog2() constant optimizations
    
    commit 474c90156c8dcc2fa815e6716cc9394d7930cb9c upstream.
    
    gcc-7 has an "optimization" pass that completely screws up, and
    generates the code expansion for the (impossible) case of calling
    ilog2() with a zero constant, even when the code gcc compiles does not
    actually have a zero constant.
    
    And we try to generate a compile-time error for anybody doing ilog2() on
    a constant where that doesn't make sense (be it zero or negative).  So
    now gcc7 will fail the build due to our sanity checking, because it
    created that constant-zero case that didn't actually exist in the source
    code.
    
    There's a whole long discussion on the kernel mailing about how to work
    around this gcc bug.  The gcc people themselevs have discussed their
    "feature" in
    
       https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
    
    but it's all water under the bridge, because while it looked at one
    point like it would be solved by the time gcc7 was released, that was
    not to be.
    
    So now we have to deal with this compiler braindamage.
    
    And the only simple approach seems to be to just delete the code that
    tries to warn about bad uses of ilog2().
    
    So now "ilog2()" will just return 0 not just for the value 1, but for
    any non-positive value too.
    
    It's not like I can recall anybody having ever actually tried to use
    this function on any invalid value, but maybe the sanity check just
    meant that such code never made it out in public.
    
    Reported-by: Laura Abbott <labbott@redhat.com>
    Cc: John Stultz <john.stultz@linaro.org>,
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: There's only one log2.h file]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95bd9e47cd54136c0eed9f2176243f0160db7754
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Thu May 31 10:59:32 2018 +0200

    ip_tunnel: restore binding to ifaces with a large mtu
    
    commit 82612de1c98e610d194e34178bde3cca7dedce41 upstream.
    
    After commit f6cc9c054e77, the following conf is broken (note that the
    default loopback mtu is 65536, ie IP_MAX_MTU + 1):
    
    $ ip tunnel add gre1 mode gre local 10.125.0.1 remote 10.125.0.2 dev lo
    add tunnel "gre0" failed: Invalid argument
    $ ip l a type dummy
    $ ip l s dummy1 up
    $ ip l s dummy1 mtu 65535
    $ ip tunnel add gre1 mode gre local 10.125.0.1 remote 10.125.0.2 dev dummy1
    add tunnel "gre0" failed: Invalid argument
    
    dev_set_mtu() doesn't allow to set a mtu which is too large.
    First, let's cap the mtu returned by ip_tunnel_bind_dev(). Second, remove
    the magic value 0xFFF8 and use IP_MAX_MTU instead.
    0xFFF8 seems to be there for ages, I don't know why this value was used.
    
    With a recent kernel, it's also possible to set a mtu > IP_MAX_MTU:
    $ ip l s dummy1 mtu 66000
    After that patch, it's also possible to bind an ip tunnel on that kind of
    interface.
    
    CC: Petr Machata <petrm@mellanox.com>
    CC: Ido Schimmel <idosch@mellanox.com>
    Link: https://git.kernel.org/pub/scm/linux/kernel/git/davem/netdev-vger-cvs.git/commit/?id=e5afd356a411a
    Fixes: f6cc9c054e77 ("ip_tunnel: Emit events for post-register MTU changes")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Drop change in ip_tunnel_create()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 19d751c873288da008fe4bef536ef0c4b5d21504
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu May 31 09:44:49 2018 +0300

    net: ethernet: davinci_emac: fix error handling in probe()
    
    commit 8005b09d99fac78e6f5fb9da30b5ae94840af03b upstream.
    
    The current error handling code has an issue where it does:
    
            if (priv->txchan)
                    cpdma_chan_destroy(priv->txchan);
    
    The problem is that ->txchan is either valid or an error pointer (which
    would lead to an Oops).  I've changed it to use multiple error labels so
    that the test can be removed.
    
    Also there were some missing calls to netif_napi_del().
    
    Fixes: 3ef0fdb2342c ("net: davinci_emac: switch to new cpdma layer")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c028ed9a2030509cef39512e9cf82f53536d155
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Jan 15 14:45:10 2015 -0800

    net: davinci_emac: Fix runtime pm calls for davinci_emac
    
    commit b5133e7a988b2cf8e1cd2b23231f36aff35ceffc upstream.
    
    Commit 3ba97381343b ("net: ethernet: davinci_emac: add pm_runtime support")
    added support for runtime PM, but it causes issues on omap3 related devices
    that actually gate the clocks:
    
    Unhandled fault: external abort on non-linefetch (0x1008)
    ...
    [<c04160f0>] (emac_dev_getnetstats) from [<c04d6a3c>] (dev_get_stats+0x78/0xc8)
    [<c04d6a3c>] (dev_get_stats) from [<c04e9ccc>] (rtnl_fill_ifinfo+0x3b8/0x938)
    [<c04e9ccc>] (rtnl_fill_ifinfo) from [<c04eade4>] (rtmsg_ifinfo+0x68/0xd8)
    [<c04eade4>] (rtmsg_ifinfo) from [<c04dd35c>] (register_netdevice+0x3a0/0x4ec)
    [<c04dd35c>] (register_netdevice) from [<c04dd4bc>] (register_netdev+0x14/0x24)
    [<c04dd4bc>] (register_netdev) from [<c041755c>] (davinci_emac_probe+0x408/0x5c8)
    [<c041755c>] (davinci_emac_probe) from [<c0396d78>] (platform_drv_probe+0x48/0xa4)
    
    Let's fix it by moving the pm_runtime_get() call earlier, and also add it to
    the emac_dev_getnetstats(). Also note that we want to use pm_runtime_get_sync()
    as we don't want to have deferred_resume happen. And let's also check the
    return value for pm_runtime_get_sync() as noted by Felipe Balbi <balbi@ti.com>.
    
    Cc: Brian Hutchinson <b.hutchman@gmail.com>
    Acked-by: Mark A. Greer <mgreer@animalcreek.com>
    Reviewed-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 74f27440fb90a4032899796f8978d68265909656
Author: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Date:   Tue Dec 12 23:06:35 2017 +0200

    net: ethernet: ti: cpdma: correct error handling for chan create
    
    commit 8a83c5d7969b8433584e3cf658a8d76c4dc37f4d upstream.
    
    It's not correct to return NULL when that is actually an error and
    function returns errors in any other wrong case. In the same time,
    the cpsw driver and davinci emac doesn't check error case while
    creating channel and it can miss actual error. Also remove WARNs
    replacing them on dev_err msgs.
    
    Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
    Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Channel pointers are stored in different fields
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1fade11efe36d837e294b9286f2107260a05efd8
Author: Sachin Grover <sgrover@codeaurora.org>
Date:   Fri May 25 14:01:39 2018 +0530

    selinux: KASAN: slab-out-of-bounds in xattr_getsecurity
    
    commit efe3de79e0b52ca281ef6691480c8c68c82a4657 upstream.
    
    Call trace:
     [<ffffff9203a8d7a8>] dump_backtrace+0x0/0x428
     [<ffffff9203a8dbf8>] show_stack+0x28/0x38
     [<ffffff920409bfb8>] dump_stack+0xd4/0x124
     [<ffffff9203d187e8>] print_address_description+0x68/0x258
     [<ffffff9203d18c00>] kasan_report.part.2+0x228/0x2f0
     [<ffffff9203d1927c>] kasan_report+0x5c/0x70
     [<ffffff9203d1776c>] check_memory_region+0x12c/0x1c0
     [<ffffff9203d17cdc>] memcpy+0x34/0x68
     [<ffffff9203d75348>] xattr_getsecurity+0xe0/0x160
     [<ffffff9203d75490>] vfs_getxattr+0xc8/0x120
     [<ffffff9203d75d68>] getxattr+0x100/0x2c8
     [<ffffff9203d76fb4>] SyS_fgetxattr+0x64/0xa0
     [<ffffff9203a83f70>] el0_svc_naked+0x24/0x28
    
    If user get root access and calls security.selinux setxattr() with an
    embedded NUL on a file and then if some process performs a getxattr()
    on that file with a length greater than the actual length of the string,
    it would result in a panic.
    
    To fix this, add the actual length of the string to the security context
    instead of the length passed by the userspace process.
    
    Signed-off-by: Sachin Grover <sgrover@codeaurora.org>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c2b7ca4c73460ffd721dd1c9f3295c69830bb29b
Author: Ondrej Zary <linux@rainbow-software.org>
Date:   Fri Mar 9 23:22:04 2018 +0100

    drm/i915: Disable LVDS on Radiant P845
    
    commit b3fb22733ae61050f8d10a1d6a8af176c5c5db1a upstream.
    
    Radiant P845 does not have LVDS, only VGA.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105468
    Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180309222204.4771-1-linux@rainbow-software.org
    (cherry picked from commit 7f7105f99b75aca4f8c2a748ed6b82c7f8be3293)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7efdc388130873dce3dfe34fc8677668f8801668
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Sun May 27 20:54:44 2018 -0400

    tracing: Fix crash when freeing instances with event triggers
    
    commit 86b389ff22bd6ad8fd3cb98e41cd271886c6d023 upstream.
    
    If a instance has an event trigger enabled when it is freed, it could cause
    an access of free memory. Here's the case that crashes:
    
     # cd /sys/kernel/tracing
     # mkdir instances/foo
     # echo snapshot > instances/foo/events/initcall/initcall_start/trigger
     # rmdir instances/foo
    
    Would produce:
    
     general protection fault: 0000 [#1] PREEMPT SMP PTI
     Modules linked in: tun bridge ...
     CPU: 5 PID: 6203 Comm: rmdir Tainted: G        W         4.17.0-rc4-test+ #933
     Hardware name: Hewlett-Packard HP Compaq Pro 6300 SFF/339A, BIOS K01 v03.03 07/14/2016
     RIP: 0010:clear_event_triggers+0x3b/0x70
     RSP: 0018:ffffc90003783de0 EFLAGS: 00010286
     RAX: 0000000000000000 RBX: 6b6b6b6b6b6b6b2b RCX: 0000000000000000
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8800c7130ba0
     RBP: ffffc90003783e00 R08: ffff8801131993f8 R09: 0000000100230016
     R10: ffffc90003783d80 R11: 0000000000000000 R12: ffff8800c7130ba0
     R13: ffff8800c7130bd8 R14: ffff8800cc093768 R15: 00000000ffffff9c
     FS:  00007f6f4aa86700(0000) GS:ffff88011eb40000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007f6f4a5aed60 CR3: 00000000cd552001 CR4: 00000000001606e0
     Call Trace:
      event_trace_del_tracer+0x2a/0xc5
      instance_rmdir+0x15c/0x200
      tracefs_syscall_rmdir+0x52/0x90
      vfs_rmdir+0xdb/0x160
      do_rmdir+0x16d/0x1c0
      __x64_sys_rmdir+0x17/0x20
      do_syscall_64+0x55/0x1a0
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    This was due to the call the clears out the triggers when an instance is
    being deleted not removing the trigger from the link list.
    
    Fixes: 85f2b08268c01 ("tracing: Add basic event trigger framework")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 09f81c482d427f076a038027fa06cb1e46b72e49
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Fri May 25 14:47:57 2018 -0700

    kernel/sys.c: fix potential Spectre v1 issue
    
    commit 23d6aef74da86a33fa6bb75f79565e0a16ee97c2 upstream.
    
    `resource' can be controlled by user-space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
      kernel/sys.c:1474 __do_compat_sys_old_getrlimit() warn: potential spectre issue 'get_current()->signal->rlim' (local cap)
      kernel/sys.c:1455 __do_sys_old_getrlimit() warn: potential spectre issue 'get_current()->signal->rlim' (local cap)
    
    Fix this by sanitizing *resource* before using it to index
    current->signal->rlim
    
    Notice that given that speculation windows are large, the policy is to
    kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Link: http://lkml.kernel.org/r/20180515030038.GA11822@embeddedor.com
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Drop changes to compat implementation, which is a wrapper for the
       regular implementation here
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 302eeac47d97a95fb3dd3dba17076bbe4593157d
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri May 25 14:47:30 2018 -0700

    ipc/shm: fix shmat() nil address after round-down when remapping
    
    commit 8f89c007b6dec16a1793cb88de88fcc02117bbbc upstream.
    
    shmat()'s SHM_REMAP option forbids passing a nil address for; this is in
    fact the very first thing we check for.  Andrea reported that for
    SHM_RND|SHM_REMAP cases we can end up bypassing the initial addr check,
    but we need to check again if the address was rounded down to nil.  As
    of this patch, such cases will return -EINVAL.
    
    Link: http://lkml.kernel.org/r/20180503204934.kk63josdu6u53fbd@linux-n805
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b2df875d0341bd42ddeb1a4bb47764700365c1d
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri May 25 14:47:27 2018 -0700

    Revert "ipc/shm: Fix shmat mmap nil-page protection"
    
    commit a73ab244f0dad8fffb3291b905f73e2d3eaa7c00 upstream.
    
    Patch series "ipc/shm: shmat() fixes around nil-page".
    
    These patches fix two issues reported[1] a while back by Joe and Andrea
    around how shmat(2) behaves with nil-page.
    
    The first reverts a commit that it was incorrectly thought that mapping
    nil-page (address=0) was a no no with MAP_FIXED.  This is not the case,
    with the exception of SHM_REMAP; which is address in the second patch.
    
    I chose two patches because it is easier to backport and it explicitly
    reverts bogus behaviour.  Both patches ought to be in -stable and ltp
    testcases need updated (the added testcase around the cve can be
    modified to just test for SHM_RND|SHM_REMAP).
    
    [1] lkml.kernel.org/r/20180430172152.nfa564pvgpk3ut7p@linux-n805
    
    This patch (of 2):
    
    Commit 95e91b831f87 ("ipc/shm: Fix shmat mmap nil-page protection")
    worked on the idea that we should not be mapping as root addr=0 and
    MAP_FIXED.  However, it was reported that this scenario is in fact
    valid, thus making the patch both bogus and breaks userspace as well.
    
    For example X11's libint10.so relies on shmat(1, SHM_RND) for lowmem
    initialization[1].
    
    [1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/os-support/linux/int10/linux.c#n347
    Link: http://lkml.kernel.org/r/20180503203243.15045-2-dave@stgolabs.net
    Fixes: 95e91b831f87 ("ipc/shm: Fix shmat mmap nil-page protection")
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ed143625e678d08528a9e757a5fb0716fa551e81
Author: Govindarajulu Varadarajan <gvaradar@cisco.com>
Date:   Wed May 23 11:17:39 2018 -0700

    enic: set DMA mask to 47 bit
    
    commit 322eaa06d55ebc1402a4a8d140945cff536638b4 upstream.
    
    In commit 624dbf55a359b ("driver/net: enic: Try DMA 64 first, then
    failover to DMA") DMA mask was changed from 40 bits to 64 bits.
    Hardware actually supports only 47 bits.
    
    Fixes: 624dbf55a359b ("driver/net: enic: Try DMA 64 first, then failover to DMA")
    Signed-off-by: Govindarajulu Varadarajan <gvaradar@cisco.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4675fb410d04191762139bd1811d31e2ec1b8790
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed May 23 14:37:38 2018 -0700

    ppp: remove the PPPIOCDETACH ioctl
    
    commit af8d3c7c001ae7df1ed2b2715f058113efc86187 upstream.
    
    The PPPIOCDETACH ioctl effectively tries to "close" the given ppp file
    before f_count has reached 0, which is fundamentally a bad idea.  It
    does check 'f_count < 2', which excludes concurrent operations on the
    file since they would only be possible with a shared fd table, in which
    case each fdget() would take a file reference.  However, it fails to
    account for the fact that even with 'f_count == 1' the file can still be
    linked into epoll instances.  As reported by syzbot, this can trivially
    be used to cause a use-after-free.
    
    Yet, the only known user of PPPIOCDETACH is pppd versions older than
    ppp-2.4.2, which was released almost 15 years ago (November 2003).
    Also, PPPIOCDETACH apparently stopped working reliably at around the
    same time, when the f_count check was added to the kernel, e.g. see
    https://lkml.org/lkml/2002/12/31/83.  Also, the current 'f_count < 2'
    check makes PPPIOCDETACH only work in single-threaded applications; it
    always fails if called from a multithreaded application.
    
    All pppd versions released in the last 15 years just close() the file
    descriptor instead.
    
    Therefore, instead of hacking around this bug by exporting epoll
    internals to modules, and probably missing other related bugs, just
    remove the PPPIOCDETACH ioctl and see if anyone actually notices.  Leave
    a stub in place that prints a one-time warning and returns EINVAL.
    
    Reported-by: syzbot+16363c99d4134717c05b@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Reviewed-by: Guillaume Nault <g.nault@alphalink.fr>
    Tested-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2f3c2f0155a711b56e8ce72320f88d1a019746d7
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Jan 10 16:24:45 2018 +0100

    ppp: unlock all_ppp_mutex before registering device
    
    commit 0171c41835591e9aa2e384b703ef9a6ae367c610 upstream.
    
    ppp_dev_uninit(), which is the .ndo_uninit() handler of PPP devices,
    needs to lock pn->all_ppp_mutex. Therefore we mustn't call
    register_netdevice() with pn->all_ppp_mutex already locked, or we'd
    deadlock in case register_netdevice() fails and calls .ndo_uninit().
    
    Fortunately, we can unlock pn->all_ppp_mutex before calling
    register_netdevice(). This lock protects pn->units_idr, which isn't
    used in the device registration process.
    
    However, keeping pn->all_ppp_mutex locked during device registration
    did ensure that no device in transient state would be published in
    pn->units_idr. In practice, unlocking it before calling
    register_netdevice() doesn't change this property: ppp_unit_register()
    is called with 'ppp_mutex' locked and all searches done in
    pn->units_idr hold this lock too.
    
    Fixes: 8cb775bc0a34 ("ppp: fix device unregistration upon netns deletion")
    Reported-and-tested-by: syzbot+367889b9c9e279219175@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6bf2b03aa461c35ec7bf724cafe3caa3792eaefd
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Oct 12 20:58:04 2018 +0100

    ppp: Fix null pointer dereference on registration failure
    
    register_netdevice() will call the device's ndo_uninit operation if
    registration fails after it calls the ndo_init operation.  However
    ppp_dev_uninit() uses ppp->ppp_net which is currently not set until
    after register_netdevice() returns.
    
    This was fixed upstream as part of commit 96d934c70db6 "ppp: add
    rtnetlink device creation support".
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e6e23cc5ec5c319c68f1dfc49e4f2f169b111e12
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 6 17:05:49 2017 +0200

    ppp: fix race in ppp device destruction
    
    commit 6151b8b37b119e8e3a8401b080d532520c95faf4 upstream.
    
    ppp_release() tries to ensure that netdevices are unregistered before
    decrementing the unit refcount and running ppp_destroy_interface().
    
    This is all fine as long as the the device is unregistered by
    ppp_release(): the unregister_netdevice() call, followed by
    rtnl_unlock(), guarantee that the unregistration process completes
    before rtnl_unlock() returns.
    
    However, the device may be unregistered by other means (like
    ppp_nl_dellink()). If this happens right before ppp_release() calling
    rtnl_lock(), then ppp_release() has to wait for the concurrent
    unregistration code to release the lock.
    But rtnl_unlock() releases the lock before completing the device
    unregistration process. This allows ppp_release() to proceed and
    eventually call ppp_destroy_interface() before the unregistration
    process completes. Calling free_netdev() on this partially unregistered
    device will BUG():
    
     ------------[ cut here ]------------
     kernel BUG at net/core/dev.c:8141!
     invalid opcode: 0000 [#1] SMP
    
     CPU: 1 PID: 1557 Comm: pppd Not tainted 4.14.0-rc2+ #4
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1.fc26 04/01/2014
    
     Call Trace:
      ppp_destroy_interface+0xd8/0xe0 [ppp_generic]
      ppp_disconnect_channel+0xda/0x110 [ppp_generic]
      ppp_unregister_channel+0x5e/0x110 [ppp_generic]
      pppox_unbind_sock+0x23/0x30 [pppox]
      pppoe_connect+0x130/0x440 [pppoe]
      SYSC_connect+0x98/0x110
      ? do_fcntl+0x2c0/0x5d0
      SyS_connect+0xe/0x10
      entry_SYSCALL_64_fastpath+0x1a/0xa5
    
     RIP: free_netdev+0x107/0x110 RSP: ffffc28a40573d88
     ---[ end trace ed294ff0cc40eeff ]---
    
    We could set the ->needs_free_netdev flag on PPP devices and move the
    ppp_destroy_interface() logic in the ->priv_destructor() callback. But
    that'd be quite intrusive as we'd first need to unlink from the other
    channels and units that depend on the device (the ones that used the
    PPPIOCCONNECT and PPPIOCATTACH ioctls).
    
    Instead, we can just let the netdevice hold a reference on its
    ppp_file. This reference is dropped in ->priv_destructor(), at the very
    end of the unregistration process, so that neither ppp_release() nor
    ppp_disconnect_channel() can call ppp_destroy_interface() in the interim.
    
    Reported-by: Beniamino Galvani <bgalvani@redhat.com>
    Fixes: 8cb775bc0a34 ("ppp: fix device unregistration upon netns deletion")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: Set net_device::destructor instead of
     priv_destructor, and call ppp_dev_priv_destructor() if register_netdevice()
     fails after call ppp_dev_init().]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3ed5d49337a863b6a2ae84da802d76c2b4fcc75d
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Sep 24 12:54:01 2015 +0200

    ppp: fix lockdep splat in ppp_dev_uninit()
    
    commit 58a89ecaca53736aa465170530acea4f8be34ab4 upstream.
    
    ppp_dev_uninit() locks all_ppp_mutex while under rtnl mutex protection.
    ppp_create_interface() must then lock these mutexes in that same order
    to avoid possible deadlock.
    
    [  120.880011] ======================================================
    [  120.880011] [ INFO: possible circular locking dependency detected ]
    [  120.880011] 4.2.0 #1 Not tainted
    [  120.880011] -------------------------------------------------------
    [  120.880011] ppp-apitest/15827 is trying to acquire lock:
    [  120.880011]  (&pn->all_ppp_mutex){+.+.+.}, at: [<ffffffffa0145f56>] ppp_dev_uninit+0x64/0xb0 [ppp_generic]
    [  120.880011]
    [  120.880011] but task is already holding lock:
    [  120.880011]  (rtnl_mutex){+.+.+.}, at: [<ffffffff812e4255>] rtnl_lock+0x12/0x14
    [  120.880011]
    [  120.880011] which lock already depends on the new lock.
    [  120.880011]
    [  120.880011]
    [  120.880011] the existing dependency chain (in reverse order) is:
    [  120.880011]
    [  120.880011] -> #1 (rtnl_mutex){+.+.+.}:
    [  120.880011]        [<ffffffff81073a6f>] lock_acquire+0xcf/0x10e
    [  120.880011]        [<ffffffff813ab18a>] mutex_lock_nested+0x56/0x341
    [  120.880011]        [<ffffffff812e4255>] rtnl_lock+0x12/0x14
    [  120.880011]        [<ffffffff812d9d94>] register_netdev+0x11/0x27
    [  120.880011]        [<ffffffffa0147b17>] ppp_ioctl+0x289/0xc98 [ppp_generic]
    [  120.880011]        [<ffffffff8113b367>] do_vfs_ioctl+0x4ea/0x532
    [  120.880011]        [<ffffffff8113b3fd>] SyS_ioctl+0x4e/0x7d
    [  120.880011]        [<ffffffff813ad7d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
    [  120.880011]
    [  120.880011] -> #0 (&pn->all_ppp_mutex){+.+.+.}:
    [  120.880011]        [<ffffffff8107334e>] __lock_acquire+0xb07/0xe76
    [  120.880011]        [<ffffffff81073a6f>] lock_acquire+0xcf/0x10e
    [  120.880011]        [<ffffffff813ab18a>] mutex_lock_nested+0x56/0x341
    [  120.880011]        [<ffffffffa0145f56>] ppp_dev_uninit+0x64/0xb0 [ppp_generic]
    [  120.880011]        [<ffffffff812d5263>] rollback_registered_many+0x19e/0x252
    [  120.880011]        [<ffffffff812d5381>] rollback_registered+0x29/0x38
    [  120.880011]        [<ffffffff812d53fa>] unregister_netdevice_queue+0x6a/0x77
    [  120.880011]        [<ffffffffa0146a94>] ppp_release+0x42/0x79 [ppp_generic]
    [  120.880011]        [<ffffffff8112d9f6>] __fput+0xec/0x192
    [  120.880011]        [<ffffffff8112dacc>] ____fput+0x9/0xb
    [  120.880011]        [<ffffffff8105447a>] task_work_run+0x66/0x80
    [  120.880011]        [<ffffffff81001801>] prepare_exit_to_usermode+0x8c/0xa7
    [  120.880011]        [<ffffffff81001900>] syscall_return_slowpath+0xe4/0x104
    [  120.880011]        [<ffffffff813ad931>] int_ret_from_sys_call+0x25/0x9f
    [  120.880011]
    [  120.880011] other info that might help us debug this:
    [  120.880011]
    [  120.880011]  Possible unsafe locking scenario:
    [  120.880011]
    [  120.880011]        CPU0                    CPU1
    [  120.880011]        ----                    ----
    [  120.880011]   lock(rtnl_mutex);
    [  120.880011]                                lock(&pn->all_ppp_mutex);
    [  120.880011]                                lock(rtnl_mutex);
    [  120.880011]   lock(&pn->all_ppp_mutex);
    [  120.880011]
    [  120.880011]  *** DEADLOCK ***
    
    Fixes: 8cb775bc0a34 ("ppp: fix device unregistration upon netns deletion")
    Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
    Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01a78e1a54b51373e33d10abe8fc2f530feb1894
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Aug 14 10:42:56 2015 +0200

    ppp: fix device unregistration upon netns deletion
    
    commit 8cb775bc0a34dc596837e7da03fd22c747be618b upstream.
    
    PPP devices may get automatically unregistered when their network
    namespace is getting removed. This happens if the ppp control plane
    daemon (e.g. pppd) exits while it is the last user of this namespace.
    
    This leads to several races:
    
      * ppp_exit_net() may destroy the per namespace idr (pn->units_idr)
        before all file descriptors were released. Successive ppp_release()
        calls may then cleanup PPP devices with ppp_shutdown_interface() and
        try to use the already destroyed idr.
    
      * Automatic device unregistration may also happen before the
        ppp_release() call for that device gets executed. Once called on
        the file owning the device, ppp_release() will then clean it up and
        try to unregister it a second time.
    
    To fix these issues, operations defined in ppp_shutdown_interface() are
    moved to the PPP device's ndo_uninit() callback. This allows PPP
    devices to be properly cleaned up by unregister_netdev() and friends.
    So checking for ppp->owner is now an accurate test to decide if a PPP
    device should be unregistered.
    
    Setting ppp->owner is done in ppp_create_interface(), before device
    registration, in order to avoid unprotected modification of this field.
    
    Finally, ppp_exit_net() now starts by unregistering all remaining PPP
    devices to ensure that none will get unregistered after the call to
    idr_destroy().
    
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 045bb8be33ccf7f16b3ea09472a621d8b3375505
Author: Wei Huang <wei@redhat.com>
Date:   Tue May 1 09:49:54 2018 -0500

    KVM: x86: Update cpuid properly when CR4.OSXAVE or CR4.PKE is changed
    
    commit c4d2188206bafa177ea58e9a25b952baa0bf7712 upstream.
    
    The CPUID bits of OSXSAVE (function=0x1) and OSPKE (func=0x7, leaf=0x0)
    allows user apps to detect if OS has set CR4.OSXSAVE or CR4.PKE. KVM is
    supposed to update these CPUID bits when CR4 is updated. Current KVM
    code doesn't handle some special cases when updates come from emulator.
    Here is one example:
    
      Step 1: guest boots
      Step 2: guest OS enables XSAVE ==> CR4.OSXSAVE=1 and CPUID.OSXSAVE=1
      Step 3: guest hot reboot ==> QEMU reset CR4 to 0, but CPUID.OSXAVE==1
      Step 4: guest os checks CPUID.OSXAVE, detects 1, then executes xgetbv
    
    Step 4 above will cause an #UD and guest crash because guest OS hasn't
    turned on OSXAVE yet. This patch solves the problem by comparing the the
    old_cr4 with cr4. If the related bits have been changed,
    kvm_update_cpuid() needs to be called.
    
    Signed-off-by: Wei Huang <wei@redhat.com>
    Reviewed-by: Bandan Das <bsd@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [bwh: Backported to 3.16: PKE is not supported]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b6e92da40d2ecb7ae6705754f44c48895cb9ff5
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Thu May 24 11:12:16 2018 +0300

    ahci: Add PCI ID for Cannon Lake PCH-LP AHCI
    
    commit 4544e403eb25552aed7f0ee181a7a506b8800403 upstream.
    
    This one should be using the default LPM policy for mobile chipsets so
    add the PCI ID to the driver list of supported revices.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [bwh: Backported to 3.16: Use board_ahci as we don't have board_ahci_mobile]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 72532e920424424543918ad26736bea3acb744e2
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Wed May 16 16:39:58 2018 +0100

    MIPS: ptrace: Fix PTRACE_PEEKUSR requests for 64-bit FGRs
    
    commit c7e814628df65f424fe197dde73bfc67e4a244d7 upstream.
    
    Use 64-bit accesses for 64-bit floating-point general registers with
    PTRACE_PEEKUSR, removing the truncation of their upper halves in the
    FR=1 mode, caused by commit bbd426f542cb ("MIPS: Simplify FP context
    access"), which inadvertently switched them to using 32-bit accesses.
    
    The PTRACE_POKEUSR side is fine as it's never been broken and continues
    using 64-bit accesses.
    
    Fixes: bbd426f542cb ("MIPS: Simplify FP context access")
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/19334/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f63f8cba620e33de092dd46f0bd74a2eed61ff7a
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed May 23 22:53:22 2018 -0400

    fix io_destroy()/aio_complete() race
    
    commit 4faa99965e027cc057c5145ce45fa772caa04e8d upstream.
    
    If io_destroy() gets to cancelling everything that can be cancelled and
    gets to kiocb_cancel() calling the function driver has left in ->ki_cancel,
    it becomes vulnerable to a race with IO completion.  At that point req
    is already taken off the list and aio_complete() does *NOT* spin until
    we (in free_ioctx_users()) releases ->ctx_lock.  As the result, it proceeds
    to kiocb_free(), freing req just it gets passed to ->ki_cancel().
    
    Fix is simple - remove from the list after the call of kiocb_cancel().  All
    instances of ->ki_cancel() already have to cope with the being called with
    iocb still on list - that's what happens in io_cancel(2).
    
    Fixes: 0460fef2a921 "aio: use cancellation list lazily"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 457a18336aeaa99ee275e842fea312fc7415820e
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Wed May 23 10:41:59 2018 +0300

    net/mlx4: Fix irq-unsafe spinlock usage
    
    commit d546b67cda015fb92bfee93d5dc0ceadb91deaee upstream.
    
    spin_lock/unlock was used instead of spin_un/lock_irq
    in a procedure used in process space, on a spinlock
    which can be grabbed in an interrupt.
    
    This caused the stack trace below to be displayed (on kernel
    4.17.0-rc1 compiled with Lock Debugging enabled):
    
    [  154.661474] WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
    [  154.668909] 4.17.0-rc1-rdma_rc_mlx+ #3 Tainted: G          I
    [  154.675856] -----------------------------------------------------
    [  154.682706] modprobe/10159 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
    [  154.690254] 00000000f3b0e495 (&(&qp_table->lock)->rlock){+.+.}, at: mlx4_qp_remove+0x20/0x50 [mlx4_core]
    [  154.700927]
    and this task is already holding:
    [  154.707461] 0000000094373b5d (&(&cq->lock)->rlock/1){....}, at: destroy_qp_common+0x111/0x560 [mlx4_ib]
    [  154.718028] which would create a new lock dependency:
    [  154.723705]  (&(&cq->lock)->rlock/1){....} -> (&(&qp_table->lock)->rlock){+.+.}
    [  154.731922]
    but this new dependency connects a SOFTIRQ-irq-safe lock:
    [  154.740798]  (&(&cq->lock)->rlock){..-.}
    [  154.740800]
    ... which became SOFTIRQ-irq-safe at:
    [  154.752163]   _raw_spin_lock_irqsave+0x3e/0x50
    [  154.757163]   mlx4_ib_poll_cq+0x36/0x900 [mlx4_ib]
    [  154.762554]   ipoib_tx_poll+0x4a/0xf0 [ib_ipoib]
    ...
    to a SOFTIRQ-irq-unsafe lock:
    [  154.815603]  (&(&qp_table->lock)->rlock){+.+.}
    [  154.815604]
    ... which became SOFTIRQ-irq-unsafe at:
    [  154.827718] ...
    [  154.827720]   _raw_spin_lock+0x35/0x50
    [  154.833912]   mlx4_qp_lookup+0x1e/0x50 [mlx4_core]
    [  154.839302]   mlx4_flow_attach+0x3f/0x3d0 [mlx4_core]
    
    Since mlx4_qp_lookup() is called only in process space, we can
    simply replace the spin_un/lock calls with spin_un/lock_irq calls.
    
    Fixes: 6dc06c08bef1 ("net/mlx4: Fix the check in attaching steering rules")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2de1b262fe0beb51a1c529bbd00ee09628f9f2ad
Author: Julian Anastasov <ja@ssi.bg>
Date:   Sat May 19 18:22:35 2018 +0300

    ipvs: fix buffer overflow with sync daemon and service
    
    commit 52f96757905bbf0edef47f3ee6c7c784e7f8ff8a upstream.
    
    syzkaller reports for buffer overflow for interface name
    when starting sync daemons [1]
    
    What we do is that we copy user structure into larger stack
    buffer but later we search NUL past the stack buffer.
    The same happens for sched_name when adding/editing virtual server.
    
    We are restricted by IP_VS_SCHEDNAME_MAXLEN and IP_VS_IFNAME_MAXLEN
    being used as size in include/uapi/linux/ip_vs.h, so they
    include the space for NUL.
    
    As using strlcpy is wrong for unsafe source, replace it with
    strscpy and add checks to return EINVAL if source string is not
    NUL-terminated. The incomplete strlcpy fix comes from 2.6.13.
    
    For the netlink interface reduce the len parameter for
    IPVS_DAEMON_ATTR_MCAST_IFN and IPVS_SVC_ATTR_SCHED_NAME,
    so that we get proper EINVAL.
    
    [1]
    kernel BUG at lib/string.c:1052!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 373 Comm: syz-executor936 Not tainted 4.17.0-rc4+ #45
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:fortify_panic+0x13/0x20 lib/string.c:1051
    RSP: 0018:ffff8801c976f800 EFLAGS: 00010282
    RAX: 0000000000000022 RBX: 0000000000000040 RCX: 0000000000000000
    RDX: 0000000000000022 RSI: ffffffff8160f6f1 RDI: ffffed00392edef6
    RBP: ffff8801c976f800 R08: ffff8801cf4c62c0 R09: ffffed003b5e4fb0
    R10: ffffed003b5e4fb0 R11: ffff8801daf27d87 R12: ffff8801c976fa20
    R13: ffff8801c976fae4 R14: ffff8801c976fae0 R15: 000000000000048b
    FS:  00007fd99f75e700(0000) GS:ffff8801daf00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000200001c0 CR3: 00000001d6843000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      strlen include/linux/string.h:270 [inline]
      strlcpy include/linux/string.h:293 [inline]
      do_ip_vs_set_ctl+0x31c/0x1d00 net/netfilter/ipvs/ip_vs_ctl.c:2388
      nf_sockopt net/netfilter/nf_sockopt.c:106 [inline]
      nf_setsockopt+0x7d/0xd0 net/netfilter/nf_sockopt.c:115
      ip_setsockopt+0xd8/0xf0 net/ipv4/ip_sockglue.c:1253
      udp_setsockopt+0x62/0xa0 net/ipv4/udp.c:2487
      ipv6_setsockopt+0x149/0x170 net/ipv6/ipv6_sockglue.c:917
      tcp_setsockopt+0x93/0xe0 net/ipv4/tcp.c:3057
      sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3046
      __sys_setsockopt+0x1bd/0x390 net/socket.c:1903
      __do_sys_setsockopt net/socket.c:1914 [inline]
      __se_sys_setsockopt net/socket.c:1911 [inline]
      __x64_sys_setsockopt+0xbe/0x150 net/socket.c:1911
      do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x447369
    RSP: 002b:00007fd99f75dda8 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 00000000006e39e4 RCX: 0000000000447369
    RDX: 000000000000048b RSI: 0000000000000000 RDI: 0000000000000003
    RBP: 0000000000000000 R08: 0000000000000018 R09: 0000000000000000
    R10: 00000000200001c0 R11: 0000000000000246 R12: 00000000006e39e0
    R13: 75a1ff93f0896195 R14: 6f745f3168746576 R15: 0000000000000001
    Code: 08 5b 41 5c 41 5d 41 5e 41 5f 5d c3 0f 0b 48 89 df e8 d2 8f 48 fa eb
    de 55 48 89 fe 48 c7 c7 60 65 64 88 48 89 e5 e8 91 dd f3 f9 <0f> 0b 90 90
    90 90 90 90 90 90 90 90 90 55 48 89 e5 41 57 41 56
    RIP: fortify_panic+0x13/0x20 lib/string.c:1051 RSP: ffff8801c976f800
    
    Reported-and-tested-by: syzbot+aac887f77319868646df@syzkaller.appspotmail.com
    Fixes: e4ff67513096 ("ipvs: add sync_maxlen parameter for the sync daemon")
    Fixes: 4da62fc70d7c ("[IPVS]: Fix for overflows")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16: Interface name is copied in start_sync_thread(),
     not do_ip_vs_set_ctl()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d340e2cecdc6bfd05bdf73201d2b2c40ea4383e5
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 20 16:46:23 2018 -0400

    aio: fix io_destroy(2) vs. lookup_ioctx() race
    
    commit baf10564fbb66ea222cae66fbff11c444590ffd9 upstream.
    
    kill_ioctx() used to have an explicit RCU delay between removing the
    reference from ->ioctx_table and percpu_ref_kill() dropping the refcount.
    At some point that delay had been removed, on the theory that
    percpu_ref_kill() itself contained an RCU delay.  Unfortunately, that was
    the wrong kind of RCU delay and it didn't care about rcu_read_lock() used
    by lookup_ioctx().  As the result, we could get ctx freed right under
    lookup_ioctx().  Tejun has fixed that in a6d7cff472e ("fs/aio: Add explicit
    RCU grace period when freeing kioctx"); however, that fix is not enough.
    
    Suppose io_destroy() from one thread races with e.g. io_setup() from another;
    CPU1 removes the reference from current->mm->ioctx_table[...] just as CPU2
    has picked it (under rcu_read_lock()).  Then CPU1 proceeds to drop the
    refcount, getting it to 0 and triggering a call of free_ioctx_users(),
    which proceeds to drop the secondary refcount and once that reaches zero
    calls free_ioctx_reqs().  That does
            INIT_RCU_WORK(&ctx->free_rwork, free_ioctx);
            queue_rcu_work(system_wq, &ctx->free_rwork);
    and schedules freeing the whole thing after RCU delay.
    
    In the meanwhile CPU2 has gotten around to percpu_ref_get(), bumping the
    refcount from 0 to 1 and returned the reference to io_setup().
    
    Tejun's fix (that queue_rcu_work() in there) guarantees that ctx won't get
    freed until after percpu_ref_get().  Sure, we'd increment the counter before
    ctx can be freed.  Now we are out of rcu_read_lock() and there's nothing to
    stop freeing of the whole thing.  Unfortunately, CPU2 assumes that since it
    has grabbed the reference, ctx is *NOT* going away until it gets around to
    dropping that reference.
    
    The fix is obvious - use percpu_ref_tryget_live() and treat failure as miss.
    It's not costlier than what we currently do in normal case, it's safe to
    call since freeing *is* delayed and it closes the race window - either
    lookup_ioctx() comes before percpu_ref_kill() (in which case ctx->users
    won't reach 0 until the caller of lookup_ioctx() drops it) or lookup_ioctx()
    fails, ctx->users is unaffected and caller of lookup_ioctx() doesn't see
    the object in question at all.
    
    Fixes: a6d7cff472e "fs/aio: Add explicit RCU grace period when freeing kioctx"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 678d91f3fe1919f8d714945c8d48dcc46771dc2e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu May 17 17:18:30 2018 -0400

    ext2: fix a block leak
    
    commit 5aa1437d2d9a068c0334bd7c9dafa8ec4f97f13b upstream.
    
    open file, unlink it, then use ioctl(2) to make it immutable or
    append only.  Now close it and watch the blocks *not* freed...
    
    Immutable/append-only checks belong in ->setattr().
    Note: the bug is old and backport to anything prior to 737f2e93b972
    ("ext2: convert to use the new truncate convention") will need
    these checks lifted into ext2_setattr().
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15934a3d163577babaa46a4601dd9b20ba1e5b60
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 6 12:15:20 2018 -0400

    affs_lookup(): close a race with affs_remove_link()
    
    commit 30da870ce4a4e007c901858a96e9e394a1daa74a upstream.
    
    we unlock the directory hash too early - if we are looking at secondary
    link and primary (in another directory) gets removed just as we unlock,
    we could have the old primary moved in place of the secondary, leaving
    us to look into freed entry (and leaving our dentry with ->d_fsdata
    pointing to a freed entry).
    
    Acked-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 755bb66a2a2c94210e964e027efef0d8c501e1e1
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Sat May 19 22:29:36 2018 +0100

    libata: blacklist Micron 500IT SSD with MU01 firmware
    
    commit 136d769e0b3475d71350aa3648a116a6ee7a8f6c upstream.
    
    While whitelisting Micron M500DC drives, the tweaked blacklist entry
    enabled queued TRIM from M500IT variants also. But these do not support
    queued TRIM. And while using those SSDs with the latest kernel we have
    seen errors and even the partition table getting corrupted.
    
    Some part from the dmesg:
    [    6.727384] ata1.00: ATA-9: Micron_M500IT_MTFDDAK060MBD, MU01, max UDMA/133
    [    6.727390] ata1.00: 117231408 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
    [    6.741026] ata1.00: supports DRM functions and may not be fully accessible
    [    6.759887] ata1.00: configured for UDMA/133
    [    6.762256] scsi 0:0:0:0: Direct-Access     ATA      Micron_M500IT_MT MU01 PQ: 0 ANSI: 5
    
    and then for the error:
    [  120.860334] ata1.00: exception Emask 0x1 SAct 0x7ffc0007 SErr 0x0 action 0x6 frozen
    [  120.860338] ata1.00: irq_stat 0x40000008
    [  120.860342] ata1.00: failed command: SEND FPDMA QUEUED
    [  120.860351] ata1.00: cmd 64/01:00:00:00:00/00:00:00:00:00/a0 tag 0 ncq dma 512 out
             res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x5 (timeout)
    [  120.860353] ata1.00: status: { DRDY }
    [  120.860543] ata1: hard resetting link
    [  121.166128] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
    [  121.166376] ata1.00: supports DRM functions and may not be fully accessible
    [  121.186238] ata1.00: supports DRM functions and may not be fully accessible
    [  121.204445] ata1.00: configured for UDMA/133
    [  121.204454] ata1.00: device reported invalid CHS sector 0
    [  121.204541] sd 0:0:0:0: [sda] tag#18 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
    [  121.204546] sd 0:0:0:0: [sda] tag#18 Sense Key : 0x5 [current]
    [  121.204550] sd 0:0:0:0: [sda] tag#18 ASC=0x21 ASCQ=0x4
    [  121.204555] sd 0:0:0:0: [sda] tag#18 CDB: opcode=0x93 93 08 00 00 00 00 00 04 28 80 00 00 00 30 00 00
    [  121.204559] print_req_error: I/O error, dev sda, sector 272512
    
    After few reboots with these errors, and the SSD is corrupted.
    After blacklisting it, the errors are not seen and the SSD does not get
    corrupted any more.
    
    Fixes: 243918be6393 ("libata: Do not blacklist Micron M500DC")
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [bwh: Backported to 3.16: Drop ATA_HORKAGE_ZERO_AFTER_TRIM flag]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 365f12db3d29f1b922827f4199461ec7d5c150bc
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun May 13 05:04:29 2018 +0100

    ARM: 8772/1: kprobes: Prohibit kprobes on get_user functions
    
    commit 0d73c3f8e7f6ee2aab1bb350f60c180f5ae21a2c upstream.
    
    Since do_undefinstr() uses get_user to get the undefined
    instruction, it can be called before kprobes processes
    recursive check. This can cause an infinit recursive
    exception.
    Prohibit probing on get_user functions.
    
    Fixes: 24ba613c9d6c ("ARM kprobes: core code")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    [bwh: Backported to 3.16: Drop changes to __get_user_{8,32_t_8,64t_{1,2,4}}]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8e4ef2dfb3779ca2b120db4aa939f80a84725f3
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun May 13 05:04:16 2018 +0100

    ARM: 8771/1: kprobes: Prohibit kprobes on do_undefinstr
    
    commit eb0146daefdde65665b7f076fbff7b49dade95b9 upstream.
    
    Prohibit kprobes on do_undefinstr because kprobes on
    arm is implemented by undefined instruction. This means
    if we probe do_undefinstr(), it can cause infinit
    recursive exception.
    
    Fixes: 24ba613c9d6c ("ARM kprobes: core code")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit daf3ce621e904d1eccc1b5bdd51590689055b522
Author: Łukasz Stelmach <l.stelmach@samsung.com>
Date:   Tue Apr 3 09:04:57 2018 +0100

    ARM: 8753/1: decompressor: add a missing parameter to the addruart macro
    
    commit e07e3c33b9c0b5751ade624f44325c9bf2487ea6 upstream.
    
    In commit 639da5ee374b ("ARM: add an extra temp register to the low
    level debugging addruart macro") an additional temporary register was
    added to the addruart macro, but the decompressor code wasn't updated.
    
    Fixes: 639da5ee374b ("ARM: add an extra temp register to the low level debugging addruart macro")
    Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4eebfa0d41b3c8c7d45dde494f9c48caa084b889
Author: Joe Jin <joe.jin@oracle.com>
Date:   Thu May 17 12:33:28 2018 -0700

    xen-swiotlb: fix the check condition for xen_swiotlb_free_coherent
    
    commit 4855c92dbb7b3b85c23e88ab7ca04f99b9677b41 upstream.
    
    When run raidconfig from Dom0 we found that the Xen DMA heap is reduced,
    but Dom Heap is increased by the same size. Tracing raidconfig we found
    that the related ioctl() in megaraid_sas will call dma_alloc_coherent()
    to apply memory. If the memory allocated by Dom0 is not in the DMA area,
    it will exchange memory with Xen to meet the requiment. Later drivers
    call dma_free_coherent() to free the memory, on xen_swiotlb_free_coherent()
    the check condition (dev_addr + size - 1 <= dma_mask) is always false,
    it prevents calling xen_destroy_contiguous_region() to return the memory
    to the Xen DMA heap.
    
    This issue introduced by commit 6810df88dcfc2 "xen-swiotlb: When doing
    coherent alloc/dealloc check before swizzling the MFNs.".
    
    Signed-off-by: Joe Jin <joe.jin@oracle.com>
    Tested-by: John Sobecki <john.sobecki@oracle.com>
    Reviewed-by: Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8eab414e1b5a31bb9e3ab6b6bc7cb9c8df3f3e5b
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Thu May 17 22:34:39 2018 +0100

    ALSA: timer: Fix pause event notification
    
    commit 3ae180972564846e6d794e3615e1ab0a1e6c4ef9 upstream.
    
    Commit f65e0d299807 ("ALSA: timer: Call notifier in the same spinlock")
    combined the start/continue and stop/pause functions, and in doing so
    changed the event code for the pause case to SNDRV_TIMER_EVENT_CONTINUE.
    Change it back to SNDRV_TIMER_EVENT_PAUSE.
    
    Fixes: f65e0d299807 ("ALSA: timer: Call notifier in the same spinlock")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b7153f5dc0f4dd00f5ac3dcbf984484a07473e6f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 10 12:47:03 2016 +0100

    ALSA: timer: Call notifier in the same spinlock
    
    commit f65e0d299807d8a11812845c972493c3f9a18e10 upstream.
    
    snd_timer_notify1() is called outside the spinlock and it retakes the
    lock after the unlock.  This is rather racy, and it's safer to move
    snd_timer_notify() call inside the main spinlock.
    
    The patch also contains a slight refactoring / cleanup of the code.
    Now all start/stop/continue/pause look more symmetric and a bit better
    readable.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16:
     - Fix up another use of "event" in _snd_timer_stop()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a167f7a1ea699f50c47cbce48e00b2fa62f5e3fb
Author: Michael Neuling <mikey@neuling.org>
Date:   Fri May 18 11:37:42 2018 +1000

    powerpc/64s: Clear PCR on boot
    
    commit faf37c44a105f3608115785f17cbbf3500f8bc71 upstream.
    
    Clear the PCR (Processor Compatibility Register) on boot to ensure we
    are not running in a compatibility mode.
    
    We've seen this cause problems when a crash (and kdump) occurs while
    running compat mode guests. The kdump kernel then runs with the PCR
    set and causes problems. The symptom in the kdump kernel (also seen in
    petitboot after fast-reboot) is early userspace programs taking
    sigills on newer instructions (seen in libc).
    
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: Drop changes in __{setup,restore}_cpu_power9
     and __restore_cpu_cpufeatures()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 464f6f04bca1173c8f89c505cefea61691b2a1d2
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu May 17 13:13:29 2018 -0400

    net: test tailroom before appending to linear skb
    
    commit 113f99c3358564a0647d444c2ae34e8b1abfd5b9 upstream.
    
    Device features may change during transmission. In particular with
    corking, a device may toggle scatter-gather in between allocating
    and writing to an skb.
    
    Do not unconditionally assume that !NETIF_F_SG at write time implies
    that the same held at alloc time and thus the skb has sufficient
    tailroom.
    
    This issue predates git history.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 05e362bb0df2d4f68229740f10ce0a61d073a4c5
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue May 15 01:59:47 2018 +1000

    powerpc/powernv: Fix NVRAM sleep in invalid context when crashing
    
    commit c1d2a31397ec51f0370f6bd17b19b39152c263cb upstream.
    
    Similarly to opal_event_shutdown, opal_nvram_write can be called in
    the crash path with irqs disabled. Special case the delay to avoid
    sleeping in invalid context.
    
    Fixes: 3b8070335f75 ("powerpc/powernv: Fix OPAL NVRAM driver OPAL_BUSY loops")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9257151618971b19a555c8f7dc767a6ef7198221
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Apr 27 10:45:31 2018 +0200

    netfilter: ebtables: handle string from userspace with care
    
    commit 94c752f99954797da583a84c4907ff19e92550a4 upstream.
    
    strlcpy() can't be safely used on a user-space provided string,
    as it can try to read beyond the buffer's end, if the latter is
    not NULL terminated.
    
    Leveraging the above, syzbot has been able to trigger the following
    splat:
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300
    [inline]
    BUG: KASAN: stack-out-of-bounds in compat_mtw_from_user
    net/bridge/netfilter/ebtables.c:1957 [inline]
    BUG: KASAN: stack-out-of-bounds in ebt_size_mwt
    net/bridge/netfilter/ebtables.c:2059 [inline]
    BUG: KASAN: stack-out-of-bounds in size_entry_mwt
    net/bridge/netfilter/ebtables.c:2155 [inline]
    BUG: KASAN: stack-out-of-bounds in compat_copy_entries+0x96c/0x14a0
    net/bridge/netfilter/ebtables.c:2194
    Write of size 33 at addr ffff8801b0abf888 by task syz-executor0/4504
    
    CPU: 0 PID: 4504 Comm: syz-executor0 Not tainted 4.17.0-rc2+ #40
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0x1b9/0x294 lib/dump_stack.c:113
      print_address_description+0x6c/0x20b mm/kasan/report.c:256
      kasan_report_error mm/kasan/report.c:354 [inline]
      kasan_report.cold.7+0x242/0x2fe mm/kasan/report.c:412
      check_memory_region_inline mm/kasan/kasan.c:260 [inline]
      check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
      memcpy+0x37/0x50 mm/kasan/kasan.c:303
      strlcpy include/linux/string.h:300 [inline]
      compat_mtw_from_user net/bridge/netfilter/ebtables.c:1957 [inline]
      ebt_size_mwt net/bridge/netfilter/ebtables.c:2059 [inline]
      size_entry_mwt net/bridge/netfilter/ebtables.c:2155 [inline]
      compat_copy_entries+0x96c/0x14a0 net/bridge/netfilter/ebtables.c:2194
      compat_do_replace+0x483/0x900 net/bridge/netfilter/ebtables.c:2285
      compat_do_ebt_set_ctl+0x2ac/0x324 net/bridge/netfilter/ebtables.c:2367
      compat_nf_sockopt net/netfilter/nf_sockopt.c:144 [inline]
      compat_nf_setsockopt+0x9b/0x140 net/netfilter/nf_sockopt.c:156
      compat_ip_setsockopt+0xff/0x140 net/ipv4/ip_sockglue.c:1279
      inet_csk_compat_setsockopt+0x97/0x120 net/ipv4/inet_connection_sock.c:1041
      compat_tcp_setsockopt+0x49/0x80 net/ipv4/tcp.c:2901
      compat_sock_common_setsockopt+0xb4/0x150 net/core/sock.c:3050
      __compat_sys_setsockopt+0x1ab/0x7c0 net/compat.c:403
      __do_compat_sys_setsockopt net/compat.c:416 [inline]
      __se_compat_sys_setsockopt net/compat.c:413 [inline]
      __ia32_compat_sys_setsockopt+0xbd/0x150 net/compat.c:413
      do_syscall_32_irqs_on arch/x86/entry/common.c:323 [inline]
      do_fast_syscall_32+0x345/0xf9b arch/x86/entry/common.c:394
      entry_SYSENTER_compat+0x70/0x7f arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7fb3cb9
    RSP: 002b:00000000fff0c26c EFLAGS: 00000282 ORIG_RAX: 000000000000016e
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000000000
    RDX: 0000000000000080 RSI: 0000000020000300 RDI: 00000000000005f4
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    
    The buggy address belongs to the page:
    page:ffffea0006c2afc0 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    flags: 0x2fffc0000000000()
    raw: 02fffc0000000000 0000000000000000 0000000000000000 00000000ffffffff
    raw: 0000000000000000 ffffea0006c20101 0000000000000000 0000000000000000
    page dumped because: kasan: bad access detected
    
    Fix the issue replacing the unsafe function with strscpy() and
    taking care of possible errors.
    
    Fixes: 81e675c227ec ("netfilter: ebtables: add CONFIG_COMPAT support")
    Reported-and-tested-by: syzbot+4e42a04e0bc33cb6c087@syzkaller.appspotmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a648dc92acd6187bcf76fa3afeceabd762cf5df1
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Apr 29 12:52:04 2015 -0400

    string: provide strscpy()
    
    commit 30035e45753b708e7d47a98398500ca005e02b86 upstream.
    
    The strscpy() API is intended to be used instead of strlcpy(),
    and instead of most uses of strncpy().
    
    - Unlike strlcpy(), it doesn't read from memory beyond (src + size).
    
    - Unlike strlcpy() or strncpy(), the API provides an easy way to check
      for destination buffer overflow: an -E2BIG error return value.
    
    - The provided implementation is robust in the face of the source
      buffer being asynchronously changed during the copy, unlike the
      current implementation of strlcpy().
    
    - Unlike strncpy(), the destination buffer will be NUL-terminated
      if the string in the source buffer is too long.
    
    - Also unlike strncpy(), the destination buffer will not be updated
      beyond the NUL termination, avoiding strncpy's behavior of zeroing
      the entire tail end of the destination buffer.  (A memset() after
      the strscpy() can be used if this behavior is desired.)
    
    - The implementation should be reasonably performant on all
      platforms since it uses the asm/word-at-a-time.h API rather than
      simple byte copy.  Kernel-to-kernel string copy is not considered
      to be performance critical in any case.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 58888d72b6a5e42208da609e40476085af3085cc
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Tue Oct 6 13:35:10 2015 -0400

    word-at-a-time.h: fix some Kbuild files
    
    commit 19c22f3a29fa8669c477f20a65f6c7c27108972a upstream.
    
    arch/tile added word-at-a-time.h after the patch that added generic-y
    entries; the generic-y entry is now stale.
    
    arch/h8300 is newer than the generic-y patch for word-at-a-time.h,
    and needs a generic-y entry.
    
    arch/powerpc seems to have gotten a generic-y entry by mistake in
    the first patch; this change removes it.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    [bwh: Backported to 3.16:
     - Drop change in arch/h8300, which doesn't exist here
     - Drop change in arch/tile, which is still using the generic implementation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a45cee23a3cba600f23e14daeabbe9a50fd0ecde
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Apr 29 12:48:40 2015 -0400

    Make asm/word-at-a-time.h available on all architectures
    
    commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2 upstream.
    
    Added the x86 implementation of word-at-a-time to the
    generic version, which previously only supported big-endian.
    
    Omitted the x86-specific load_unaligned_zeropad(), which in
    any case is also not present for the existing BE-only
    implementation of a word-at-a-time, and is only used under
    CONFIG_DCACHE_WORD_ACCESS.
    
    Added as a "generic-y" to the Kbuilds of all architectures
    that didn't previously have it.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    [bwh: Backported to 3.16:
     - Drop change in arch/nios2
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef54e80e9a5f863d49a4d463c0b3449f64aef31e
Author: David Howells <dhowells@redhat.com>
Date:   Wed May 16 21:25:46 2018 +0100

    afs: Fix directory permissions check
    
    commit 378831e4daec75fbba6d3612bcf3b4dd00ddbf08 upstream.
    
    Doing faccessat("/afs/some/directory", 0) triggers a BUG in the permissions
    check code.
    
    Fix this by just removing the BUG section.  If no permissions are asked
    for, just return okay if the file exists.
    
    Also:
    
     (1) Split up the directory check so that it has separate if-statements
         rather than if-else-if (e.g. checking for MAY_EXEC shouldn't skip the
         check for MAY_READ and MAY_WRITE).
    
     (2) Check for MAY_CHDIR as MAY_EXEC.
    
    Without the main fix, the following BUG may occur:
    
     kernel BUG at fs/afs/security.c:386!
     invalid opcode: 0000 [#1] SMP PTI
     ...
     RIP: 0010:afs_permission+0x19d/0x1a0 [kafs]
     ...
     Call Trace:
      ? inode_permission+0xbe/0x180
      ? do_faccessat+0xdc/0x270
      ? do_syscall_64+0x60/0x1f0
      ? entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 00d3b7a4533e ("[AFS]: Add security support.")
    Reported-by: Jonathan Billings <jsbillings@jsbillings.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e59e856e62cd5b87d4a77bfb5e2a8192c5db1b15
Author: Marc Dionne <marc.dionne@auristor.com>
Date:   Thu Jul 6 15:50:18 2017 +0100

    afs: Ignore AFS_ACE_READ and AFS_ACE_WRITE for directories
    
    commit fd2498211a551fd42b2d6b9050d649d43536e75c upstream.
    
    The AFS_ACE_READ and AFS_ACE_WRITE permission bits should not
    be used to make access decisions for the directory itself.  They
    are meant to control access for the objects contained in that
    directory.
    
    Reading a directory is allowed if the AFS_ACE_LOOKUP bit is set.
    This would cause an incorrect access denied error for a directory
    with AFS_ACE_LOOKUP but not AFS_ACE_READ.
    
    The AFS_ACE_WRITE bit does not allow operations that modify the
    directory.  For a directory with AFS_ACE_WRITE but neither
    AFS_ACE_INSERT nor AFS_ACE_DELETE, this would result in trying
    operations that would ultimately be denied by the server.
    
    Signed-off-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0da162e05f65a8073ef1dc3c7598b82a9b9caa70
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 14 21:14:26 2018 -0700

    tcp: purge write queue in tcp_connect_init()
    
    commit 7f582b248d0a86bae5788c548d7bb5bca6f7691a upstream.
    
    syzkaller found a reliable way to crash the host, hitting a BUG()
    in __tcp_retransmit_skb()
    
    Malicous MSG_FASTOPEN is the root cause. We need to purge write queue
    in tcp_connect_init() at the point we init snd_una/write_seq.
    
    This patch also replaces the BUG() by a less intrusive WARN_ON_ONCE()
    
    kernel BUG at net/ipv4/tcp_output.c:2837!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 5276 Comm: syz-executor0 Not tainted 4.17.0-rc3+ #51
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__tcp_retransmit_skb+0x2992/0x2eb0 net/ipv4/tcp_output.c:2837
    RSP: 0000:ffff8801dae06ff8 EFLAGS: 00010206
    RAX: ffff8801b9fe61c0 RBX: 00000000ffc18a16 RCX: ffffffff864e1a49
    RDX: 0000000000000100 RSI: ffffffff864e2e12 RDI: 0000000000000005
    RBP: ffff8801dae073a0 R08: ffff8801b9fe61c0 R09: ffffed0039c40dd2
    R10: ffffed0039c40dd2 R11: ffff8801ce206e93 R12: 00000000421eeaad
    R13: ffff8801ce206d4e R14: ffff8801ce206cc0 R15: ffff8801cd4f4a80
    FS:  0000000000000000(0000) GS:ffff8801dae00000(0063) knlGS:00000000096bc900
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 0000000020000000 CR3: 00000001c47b6000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <IRQ>
     tcp_retransmit_skb+0x2e/0x250 net/ipv4/tcp_output.c:2923
     tcp_retransmit_timer+0xc50/0x3060 net/ipv4/tcp_timer.c:488
     tcp_write_timer_handler+0x339/0x960 net/ipv4/tcp_timer.c:573
     tcp_write_timer+0x111/0x1d0 net/ipv4/tcp_timer.c:593
     call_timer_fn+0x230/0x940 kernel/time/timer.c:1326
     expire_timers kernel/time/timer.c:1363 [inline]
     __run_timers+0x79e/0xc50 kernel/time/timer.c:1666
     run_timer_softirq+0x4c/0x70 kernel/time/timer.c:1692
     __do_softirq+0x2e0/0xaf5 kernel/softirq.c:285
     invoke_softirq kernel/softirq.c:365 [inline]
     irq_exit+0x1d1/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:525 [inline]
     smp_apic_timer_interrupt+0x17e/0x710 arch/x86/kernel/apic/apic.c:1052
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:863
    
    Fixes: cf60af03ca4e ("net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN)")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fc8f570b7e338b4004d2aeafd5a35d653ba82c92
Author: Dexuan Cui <decui@microsoft.com>
Date:   Tue May 15 19:52:50 2018 +0000

    tick/broadcast: Use for_each_cpu() specially on UP kernels
    
    commit 5596fe34495cf0f645f417eb928ef224df3e3cb4 upstream.
    
    for_each_cpu() unintuitively reports CPU0 as set independent of the actual
    cpumask content on UP kernels. This causes an unexpected PIT interrupt
    storm on a UP kernel running in an SMP virtual machine on Hyper-V, and as
    a result, the virtual machine can suffer from a strange random delay of 1~20
    minutes during boot-up, and sometimes it can hang forever.
    
    Protect if by checking whether the cpumask is empty before entering the
    for_each_cpu() loop.
    
    [ tglx: Use !IS_ENABLED(CONFIG_SMP) instead of #ifdeffery ]
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Josh Poulson <jopoulso@microsoft.com>
    Cc: "Michael Kelley (EOSG)" <Michael.H.Kelley@microsoft.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Rakib Mullick <rakib.mullick@gmail.com>
    Cc: Jork Loeser <Jork.Loeser@microsoft.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: KY Srinivasan <kys@microsoft.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Link: https://lkml.kernel.org/r/KL1P15301MB000678289FE55BA365B3279ABF990@KL1P15301MB0006.APCP153.PROD.OUTLOOK.COM
    Link: https://lkml.kernel.org/r/KL1P15301MB0006FA63BC22BEB64902EAA0BF930@KL1P15301MB0006.APCP153.PROD.OUTLOOK.COM
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f31c9ff725b2b0ff4b949a244748b33a61d0ff87
Author: Sekhar Nori <nsekhar@ti.com>
Date:   Fri May 11 20:51:36 2018 +0530

    ARM: davinci: board-dm646x-evm: set VPIF capture card name
    
    commit bb7298a7e87cf3430eb62be8746e5d7a07ca9d7c upstream.
    
    VPIF capture driver expects card name to be set since it
    uses it without checking for NULL. The commit which
    introduced VPIF display and capture support added card
    name only for display, not for capture.
    
    Set it in platform data to probe driver successfully.
    
    While at it, also fix the display card name to something more
    appropriate.
    
    Fixes: 85609c1ccda6 ("DaVinci: DM646x - platform changes for vpif capture and display drivers")
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5abeb589294167c3a17836b1b971e147f7a9d140
Author: Peter Rosin <peda@axentia.se>
Date:   Wed May 9 21:47:48 2018 +0200

    i2c: viperboard: return message count on master_xfer success
    
    commit 35cd67a0caf767aba472452865dcb4471fcce2b1 upstream.
    
    Returning zero is wrong in this case.
    
    Signed-off-by: Peter Rosin <peda@axentia.se>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Fixes: 174a13aa8669 ("i2c: Add viperboard i2c master driver")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 42efe1487cf42df30cd02be88fb238b6aabfd70f
Author: Peter Rosin <peda@axentia.se>
Date:   Wed May 9 21:46:30 2018 +0200

    i2c: pmcmsp: fix error return from master_xfer
    
    commit 12d9bbc5a7f347eaa65ff2a9d34995cadc05eb1b upstream.
    
    Returning -1 (-EPERM) is not appropriate here, go with -EIO.
    
    Signed-off-by: Peter Rosin <peda@axentia.se>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Fixes: 1b144df1d7d6 ("i2c: New PMC MSP71xx TWI bus driver")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e85c7a70eb59d57ee5d10cdd9f5bc7af965f18dc
Author: Peter Rosin <peda@axentia.se>
Date:   Wed May 9 21:46:29 2018 +0200

    i2c: pmcmsp: return message count on master_xfer success
    
    commit de9a8634f1cb4560a35696d472cc7f1383d9b866 upstream.
    
    Returning zero is wrong in this case.
    
    Signed-off-by: Peter Rosin <peda@axentia.se>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Fixes: 1b144df1d7d6 ("i2c: New PMC MSP71xx TWI bus driver")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f14be54a0f633c885a194baea0e83cb4e6b1458b
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Wed May 2 08:28:34 2018 +0200

    s390/qdio: don't release memory in qdio_setup_irq()
    
    commit 2e68adcd2fb21b7188ba449f0fab3bee2910e500 upstream.
    
    Calling qdio_release_memory() on error is just plain wrong. It frees
    the main qdio_irq struct, when following code still uses it.
    
    Also, no other error path in qdio_establish() does this. So trust
    callers to clean up via qdio_free() if some step of the QDIO
    initialization fails.
    
    Fixes: 779e6e1c724d ("[S390] qdio: new qdio driver.")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1deb39cc69053942d5d3a99cf1a4e646ef7f77b8
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Wed May 2 08:48:43 2018 +0200

    s390/qdio: fix access to uninitialized qdio_q fields
    
    commit e521813468f786271a87e78e8644243bead48fad upstream.
    
    Ever since CQ/QAOB support was added, calling qdio_free() straight after
    qdio_alloc() results in qdio_release_memory() accessing uninitialized
    memory (ie. q->u.out.use_cq and q->u.out.aobs). Followed by a
    kmem_cache_free() on the random AOB addresses.
    
    For older kernels that don't have 6e30c549f6ca, the same applies if
    qdio_establish() fails in the DEV_STATE_ONLINE check.
    
    While initializing q->u.out.use_cq would be enough to fix this
    particular bug, the more future-proof change is to just zero-alloc the
    whole struct.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ee60e293b33a7e98361b14f86b2b2e6d97bb4e2a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat May 19 09:29:11 2018 -0700

    mmap: relax file size limit for regular files
    
    commit 423913ad4ae5b3e8fb8983f70969fb522261ba26 upstream.
    
    Commit be83bbf80682 ("mmap: introduce sane default mmap limits") was
    introduced to catch problems in various ad-hoc character device drivers
    doing mmap and getting the size limits wrong.  In the process, it used
    "known good" limits for the normal cases of mapping regular files and
    block device drivers.
    
    It turns out that the "s_maxbytes" limit was less "known good" than I
    thought.  In particular, /proc doesn't set it, but exposes one regular
    file to mmap: /proc/vmcore.  As a result, that file got limited to the
    default MAX_INT s_maxbytes value.
    
    This went unnoticed for a while, because apparently the only thing that
    needs it is the s390 kernel zfcpdump, but there might be other tools
    that use this too.
    
    Vasily suggested just changing s_maxbytes for all of /proc, which isn't
    wrong, but makes me nervous at this stage.  So instead, just make the
    new mmap limit always be MAX_LFS_FILESIZE for regular files, which won't
    affect anything else.  It wasn't the regular file case I was worried
    about.
    
    I'd really prefer for maxsize to have been per-inode, but that is not
    how things are today.
    
    Fixes: be83bbf80682 ("mmap: introduce sane default mmap limits")
    Reported-by: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 54c959e5279eb678db8c977740fe830258c72387
Author: Dave Airlie <airlied@redhat.com>
Date:   Tue May 15 13:38:15 2018 +1000

    drm: set FMODE_UNSIGNED_OFFSET for drm files
    
    commit 76ef6b28ea4f81c3d511866a9b31392caa833126 upstream.
    
    Since we have the ttm and gem vma managers using a subset
    of the file address space for objects, and these start at
    0x100000000 they will overflow the new mmap checks.
    
    I've checked all the mmap routines I could see for any
    bad behaviour but overall most people use GEM/TTM VMA
    managers even the legacy drivers have a hashtable.
    
    Reported-and-Tested-by: Arthur Marsh (amarsh04 on #radeon)
    Fixes: be83bbf8068 (mmap: introduce sane default mmap limits)
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 72d8a061cbfbee3a357d38ef80688df9e878de43
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri May 11 09:52:01 2018 -0700

    mmap: introduce sane default mmap limits
    
    commit be83bbf806822b1b89e0a0f23cd87cddc409e429 upstream.
    
    The internal VM "mmap()" interfaces are based on the mmap target doing
    everything using page indexes rather than byte offsets, because
    traditionally (ie 32-bit) we had the situation that the byte offset
    didn't fit in a register.  So while the mmap virtual address was limited
    by the word size of the architecture, the backing store was not.
    
    So we're basically passing "pgoff" around as a page index, in order to
    be able to describe backing store locations that are much bigger than
    the word size (think files larger than 4GB etc).
    
    But while this all makes a ton of sense conceptually, we've been dogged
    by various drivers that don't really understand this, and internally
    work with byte offsets, and then try to work with the page index by
    turning it into a byte offset with "pgoff << PAGE_SHIFT".
    
    Which obviously can overflow.
    
    Adding the size of the mapping to it to get the byte offset of the end
    of the backing store just exacerbates the problem, and if you then use
    this overflow-prone value to check various limits of your device driver
    mmap capability, you're just setting yourself up for problems.
    
    The correct thing for drivers to do is to do their limit math in page
    indices, the way the interface is designed.  Because the generic mmap
    code _does_ test that the index doesn't overflow, since that's what the
    mmap code really cares about.
    
    HOWEVER.
    
    Finding and fixing various random drivers is a sisyphean task, so let's
    just see if we can just make the core mmap() code do the limiting for
    us.  Realistically, the only "big" backing stores we need to care about
    are regular files and block devices, both of which are known to do this
    properly, and which have nice well-defined limits for how much data they
    can access.
    
    So let's special-case just those two known cases, and then limit other
    random mmap users to a backing store that still fits in "unsigned long".
    Realistically, that's not much of a limit at all on 64-bit, and on
    32-bit architectures the only worry might be the GPU drivers, which can
    have big physical address spaces.
    
    To make it possible for drivers like that to say that they are 64-bit
    clean, this patch does repurpose the "FMODE_UNSIGNED_OFFSET" bit in the
    file flags to allow drivers to mark their file descriptors as safe in
    the full 64-bit mmap address space.
    
    [ The timing for doing this is less than optimal, and this should really
      go in a merge window. But realistically, this needs wide testing more
      than it needs anything else, and being main-line is the only way to do
      that.
    
      So the earlier the better, even if it's outside the proper development
      cycle        - Linus ]
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4781c6209bf4b3e626cd5068b1a20e187eb54913
Author: hpreg@vmware.com <hpreg@vmware.com>
Date:   Mon May 14 08:14:34 2018 -0400

    vmxnet3: set the DMA mask before the first DMA map operation
    
    commit 61aeecea40afb2b89933e27cd4adb10fc2e75cfd upstream.
    
    The DMA mask must be set before, not after, the first DMA map operation, or
    the first DMA map operation could in theory fail on some systems.
    
    Fixes: b0eb57cb97e78 ("VMXNET3: Add support for virtual IOMMU")
    Signed-off-by: Regis Duchesne <hpreg@vmware.com>
    Acked-by: Ronak Doshi <doshir@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: Bump version from 1.2.1.0-k to 1.2.2.0-k, which
     wasn't used in mainline]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94b7f949a60d4327cacf16bd80d72da1b5f04022
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Oct 15 00:01:20 2016 +0300

    vmxnet3: avoid assumption about invalid dma_pa in vmxnet3_set_mc()
    
    commit fb5c6cfaec126d9a96b9dd471d4711bf4c737a6f upstream.
    
    vmxnet3_set_mc() checks new_table_pa returned by dma_map_single()
    with dma_mapping_error(), but even there it assumes zero is invalid pa
    (it assumes dma_mapping_error(...,0) returns true if new_table is NULL).
    
    The patch adds an explicit variable to track status of new_table_pa.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    v2: use "bool" and "true"/"false" for boolean variables.
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4584c87917f1e523c55f5688497e1839cad57ce8
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Nov 28 01:29:30 2015 +0300

    vmxnet3: fix checks for dma mapping errors
    
    commit 5738a09d58d5ad2871f1f9a42bf6a3aa9ece5b3c upstream.
    
    vmxnet3_drv does not check dma_addr with dma_mapping_error()
    after mapping dma memory. The patch adds the checks and
    tries to handle failures.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Acked-by: Shrikrishna Khare <skhare@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b9ba0e3675af303d0f390c0000e0d318640766d
Author: Andy King <acking@vmware.com>
Date:   Tue Sep 2 13:13:44 2014 -0700

    VMXNET3: Check for map error in vmxnet3_set_mc
    
    commit 4ad9a64f53c619969dede1143d56ccda1a453c39 upstream.
    
    We should check if the map of the table actually succeeds, and also free
    resources accordingly.
    
    Version bumped to 1.2.1.0
    
    Acked-by: Shelley Gong <shelleygong@vmware.com>
    Acked-by: Bhavesh Davda <bhavesh@vmware.com>
    Signed-off-by: Andy King <acking@vmware.com>
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 69b281653487096bff05241beff7c34cb4ee3b1c
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon May 14 16:49:43 2018 +0100

    MIPS: Fix ptrace(2) PTRACE_PEEKUSR and PTRACE_POKEUSR accesses to o32 FGRs
    
    commit 9a3a92ccfe3620743d4ae57c987dc8e9c5f88996 upstream.
    
    Check the TIF_32BIT_FPREGS task setting of the tracee rather than the
    tracer in determining the layout of floating-point general registers in
    the floating-point context, correcting access to odd-numbered registers
    for o32 tracees where the setting disagrees between the two processes.
    
    Fixes: 597ce1723e0f ("MIPS: Support for 64-bit FP with O32 binaries")
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a7d77a483f260eb75c3d5de09f33d91235460eb2
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon May 14 18:23:50 2018 +0100

    KVM: Fix spelling mistake: "cop_unsuable" -> "cop_unusable"
    
    commit ba3696e94d9d590d9a7e55f68e81c25dba515191 upstream.
    
    Trivial fix to spelling mistake in debugfs_entries text.
    
    Fixes: 669e846e6c4e ("KVM/MIPS32: MIPS arch specific APIs for KVM")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kernel-janitors@vger.kernel.org
    Signed-off-by: James Hogan <jhogan@kernel.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a87ddffa10841e81721ad3d8592c334d652015c2
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Apr 30 15:56:47 2018 +0100

    MIPS: ptrace: Expose FIR register through FP regset
    
    commit 71e909c0cdad28a1df1fa14442929e68615dee45 upstream.
    
    Correct commit 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    and expose the FIR register using the unused 4 bytes at the end of the
    NT_PRFPREG regset.  Without that register included clients cannot use
    the PTRACE_GETREGSET request to retrieve the complete FPU register set
    and have to resort to one of the older interfaces, either PTRACE_PEEKUSR
    or PTRACE_GETFPREGS, to retrieve the missing piece of data.  Also the
    register is irreversibly missing from core dumps.
    
    This register is architecturally hardwired and read-only so the write
    path does not matter.  Ignore data supplied on writes then.
    
    Fixes: 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/19273/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit be5be29dce4ca8a877046ff45be53659f873667c
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed May 9 14:36:09 2018 -0400

    tracing/x86/xen: Remove zero data size trace events trace_xen_mmu_flush_tlb{_all}
    
    commit 45dd9b0666a162f8e4be76096716670cf1741f0e upstream.
    
    Doing an audit of trace events, I discovered two trace events in the xen
    subsystem that use a hack to create zero data size trace events. This is not
    what trace events are for. Trace events add memory footprint overhead, and
    if all you need to do is see if a function is hit or not, simply make that
    function noinline and use function tracer filtering.
    
    Worse yet, the hack used was:
    
     __array(char, x, 0)
    
    Which creates a static string of zero in length. There's assumptions about
    such constructs in ftrace that this is a dynamic string that is nul
    terminated. This is not the case with these tracepoints and can cause
    problems in various parts of ftrace.
    
    Nuke the trace events!
    
    Link: http://lkml.kernel.org/r/20180509144605.5a220327@gandalf.local.home
    
    Fixes: 95a7d76897c1e ("xen/mmu: Use Xen specific TLB flush instead of the generic one.")
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b779249f870b4fe6373db32216d6faac7f916b9e
Author: Tarick Bedeir <tarick@google.com>
Date:   Sun May 13 16:38:45 2018 -0700

    net/mlx4_core: Fix error handling in mlx4_init_port_info.
    
    commit 57f6f99fdad9984801cde05c1db68fe39b474a10 upstream.
    
    Avoid exiting the function with a lingering sysfs file (if the first
    call to device_create_file() fails while the second succeeds), and avoid
    calling devlink_port_unregister() twice.
    
    In other words, either mlx4_init_port_info() succeeds and returns zero, or
    it fails, returns non-zero, and requires no cleanup.
    
    Fixes: 096335b3f983 ("mlx4_core: Allow dynamic MTU configuration for IB ports")
    Signed-off-by: Tarick Bedeir <tarick@google.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 200c43915fadb3965174100d50852fa142469279
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Thu May 10 14:24:20 2018 +0100

    ARM: keystone: fix platform_domain_notifier array overrun
    
    commit 9954b80b8c0e8abc98e17bba0fccd9876211ceaa upstream.
    
    platform_domain_notifier contains a variable sized array, which the
    pm_clk_notify() notifier treats as a NULL terminated array:
    
         for (con_id = clknb->con_ids; *con_id; con_id++)
                 pm_clk_add(dev, *con_id);
    
    Omitting the initialiser for con_ids means that the array is zero
    sized, and there is no NULL terminator.  This leads to pm_clk_notify()
    overrunning into what ever structure follows, which may not be NULL.
    This leads to an oops:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000008c
    pgd = c0003000
    [0000008c] *pgd=80000800004003c, *pmd=00000000c
    Internal error: Oops: 206 [#1] PREEMPT SMP ARM
    Modules linked in:c
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.16.0+ #9
    Hardware name: Keystone
    PC is at strlen+0x0/0x34
    LR is at kstrdup+0x18/0x54
    pc : [<c0623340>]    lr : [<c0111d6c>]    psr: 20000013
    sp : eec73dc0  ip : eed780c0  fp : 00000001
    r10: 00000000  r9 : 00000000  r8 : eed71e10
    r7 : 0000008c  r6 : 0000008c  r5 : 014000c0  r4 : c03a6ff4
    r3 : c09445d0  r2 : 00000000  r1 : 014000c0  r0 : 0000008c
    Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
    Control: 30c5387d  Table: 00003000  DAC: fffffffd
    Process swapper/0 (pid: 1, stack limit = 0xeec72210)
    Stack: (0xeec73dc0 to 0xeec74000)
    ...
    [<c0623340>] (strlen) from [<c0111d6c>] (kstrdup+0x18/0x54)
    [<c0111d6c>] (kstrdup) from [<c03a6ff4>] (__pm_clk_add+0x58/0x120)
    [<c03a6ff4>] (__pm_clk_add) from [<c03a731c>] (pm_clk_notify+0x64/0xa8)
    [<c03a731c>] (pm_clk_notify) from [<c004614c>] (notifier_call_chain+0x44/0x84)
    [<c004614c>] (notifier_call_chain) from [<c0046320>] (__blocking_notifier_call_chain+0x48/0x60)
    [<c0046320>] (__blocking_notifier_call_chain) from [<c0046350>] (blocking_notifier_call_chain+0x18/0x20)
    [<c0046350>] (blocking_notifier_call_chain) from [<c0390234>] (device_add+0x36c/0x534)
    [<c0390234>] (device_add) from [<c047fc00>] (of_platform_device_create_pdata+0x70/0xa4)
    [<c047fc00>] (of_platform_device_create_pdata) from [<c047fea0>] (of_platform_bus_create+0xf0/0x1ec)
    [<c047fea0>] (of_platform_bus_create) from [<c047fff8>] (of_platform_populate+0x5c/0xac)
    [<c047fff8>] (of_platform_populate) from [<c08b1f04>] (of_platform_default_populate_init+0x8c/0xa8)
    [<c08b1f04>] (of_platform_default_populate_init) from [<c000a78c>] (do_one_initcall+0x3c/0x164)
    [<c000a78c>] (do_one_initcall) from [<c087bd9c>] (kernel_init_freeable+0x10c/0x1d0)
    [<c087bd9c>] (kernel_init_freeable) from [<c0628db0>] (kernel_init+0x8/0xf0)
    [<c0628db0>] (kernel_init) from [<c00090d8>] (ret_from_fork+0x14/0x3c)
    Exception stack(0xeec73fb0 to 0xeec73ff8)
    3fa0:                                     00000000 00000000 00000000 00000000
    3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    Code: e3520000 1afffff7 e12fff1e c0801730 (e5d02000)
    ---[ end trace cafa8f148e262e80 ]---
    
    Fix this by adding the necessary initialiser.
    
    Fixes: fc20ffe1213b ("ARM: keystone: add PM domain support for clock management")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc3ca0b2b28507fa2bf9061b7419c8607b42aeba
Author: Robbie Ko <robbieko@synology.com>
Date:   Mon May 14 10:51:34 2018 +0800

    Btrfs: send, fix invalid access to commit roots due to concurrent snapshotting
    
    commit 6f2f0b394b54e2b159ef969a0b5274e9bbf82ff2 upstream.
    
    [BUG]
    btrfs incremental send BUG happens when creating a snapshot of snapshot
    that is being used by send.
    
    [REASON]
    The problem can happen if while we are doing a send one of the snapshots
    used (parent or send) is snapshotted, because snapshoting implies COWing
    the root of the source subvolume/snapshot.
    
    1. When doing an incremental send, the send process will get the commit
       roots from the parent and send snapshots, and add references to them
       through extent_buffer_get().
    
    2. When a snapshot/subvolume is snapshotted, its root node is COWed
       (transaction.c:create_pending_snapshot()).
    
    3. COWing releases the space used by the node immediately, through:
    
       __btrfs_cow_block()
       --btrfs_free_tree_block()
       ----btrfs_add_free_space(bytenr of node)
    
    4. Because send doesn't hold a transaction open, it's possible that
       the transaction used to create the snapshot commits, switches the
       commit root and the old space used by the previous root node gets
       assigned to some other node allocation. Allocation of a new node will
       use the existing extent buffer found in memory, which we previously
       got a reference through extent_buffer_get(), and allow the extent
       buffer's content (pages) to be modified:
    
       btrfs_alloc_tree_block
       --btrfs_reserve_extent
       ----find_free_extent (get bytenr of old node)
       --btrfs_init_new_buffer (use bytenr of old node)
       ----btrfs_find_create_tree_block
       ------alloc_extent_buffer
       --------find_extent_buffer (get old node)
    
    5. So send can access invalid memory content and have unpredictable
       behaviour.
    
    [FIX]
    So we fix the problem by copying the commit roots of the send and
    parent snapshots and use those copies.
    
    CallTrace looks like this:
     ------------[ cut here ]------------
     kernel BUG at fs/btrfs/ctree.c:1861!
     invalid opcode: 0000 [#1] SMP
     CPU: 6 PID: 24235 Comm: btrfs Tainted: P           O 3.10.105 #23721
     ffff88046652d680 ti: ffff88041b720000 task.ti: ffff88041b720000
     RIP: 0010:[<ffffffffa08dd0e8>] read_node_slot+0x108/0x110 [btrfs]
     RSP: 0018:ffff88041b723b68  EFLAGS: 00010246
     RAX: ffff88043ca6b000 RBX: ffff88041b723c50 RCX: ffff880000000000
     RDX: 000000000000004c RSI: ffff880314b133f8 RDI: ffff880458b24000
     RBP: 0000000000000000 R08: 0000000000000001 R09: ffff88041b723c66
     R10: 0000000000000001 R11: 0000000000001000 R12: ffff8803f3e48890
     R13: ffff8803f3e48880 R14: ffff880466351800 R15: 0000000000000001
     FS:  00007f8c321dc8c0(0000) GS:ffff88047fcc0000(0000)
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     R2: 00007efd1006d000 CR3: 0000000213a24000 CR4: 00000000003407e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Stack:
     ffff88041b723c50 ffff8803f3e48880 ffff8803f3e48890 ffff8803f3e48880
     ffff880466351800 0000000000000001 ffffffffa08dd9d7 ffff88041b723c50
     ffff8803f3e48880 ffff88041b723c66 ffffffffa08dde85 a9ff88042d2c4400
     Call Trace:
     [<ffffffffa08dd9d7>] ? tree_move_down.isra.33+0x27/0x50 [btrfs]
     [<ffffffffa08dde85>] ? tree_advance+0xb5/0xc0 [btrfs]
     [<ffffffffa08e83d4>] ? btrfs_compare_trees+0x2d4/0x760 [btrfs]
     [<ffffffffa0982050>] ? finish_inode_if_needed+0x870/0x870 [btrfs]
     [<ffffffffa09841ea>] ? btrfs_ioctl_send+0xeda/0x1050 [btrfs]
     [<ffffffffa094bd3d>] ? btrfs_ioctl+0x1e3d/0x33f0 [btrfs]
     [<ffffffff81111133>] ? handle_pte_fault+0x373/0x990
     [<ffffffff8153a096>] ? atomic_notifier_call_chain+0x16/0x20
     [<ffffffff81063256>] ? set_task_cpu+0xb6/0x1d0
     [<ffffffff811122c3>] ? handle_mm_fault+0x143/0x2a0
     [<ffffffff81539cc0>] ? __do_page_fault+0x1d0/0x500
     [<ffffffff81062f07>] ? check_preempt_curr+0x57/0x90
     [<ffffffff8115075a>] ? do_vfs_ioctl+0x4aa/0x990
     [<ffffffff81034f83>] ? do_fork+0x113/0x3b0
     [<ffffffff812dd7d7>] ? trace_hardirqs_off_thunk+0x3a/0x6c
     [<ffffffff81150cc8>] ? SyS_ioctl+0x88/0xa0
     [<ffffffff8153e422>] ? system_call_fastpath+0x16/0x1b
     ---[ end trace 29576629ee80b2e1 ]---
    
    Fixes: 7069830a9e38 ("Btrfs: add btrfs_compare_trees function")
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: s/fs_info/left_root->fs_info/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd55b13e6434a47a82080e1b34b1b29cca8fe98e
Author: Matthew Auld <matthew.auld@intel.com>
Date:   Wed May 2 20:50:21 2018 +0100

    drm/i915/userptr: reject zero user_size
    
    commit 20943f984967477c906522112d2b6b5a29f94684 upstream.
    
    Operating on a zero sized GEM userptr object will lead to explosions.
    
    Fixes: 5cc9ed4b9a7a ("drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl")
    Testcase: igt/gem_userptr_blits/input-checking
    Signed-off-by: Matthew Auld <matthew.auld@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502195021.30900-1-matthew.auld@intel.com
    (cherry picked from commit c11c7bfd213495784b22ef82a69b6489f8d0092f)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aed502ba48e1c68b51b8f43c0c0a96f3bff9ed8b
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat May 12 02:49:30 2018 -0700

    xfrm6: avoid potential infinite loop in _decode_session6()
    
    commit d9f92772e8ec388d070752ee8f187ef8fa18621f upstream.
    
    syzbot found a way to trigger an infinitie loop by overflowing
    @offset variable that has been forced to use u16 for some very
    obscure reason in the past.
    
    We probably want to look at NEXTHDR_FRAGMENT handling which looks
    wrong, in a separate patch.
    
    In net-next, we shall try to use skb_header_pointer() instead of
    pskb_may_pull().
    
    watchdog: BUG: soft lockup - CPU#1 stuck for 134s! [syz-executor738:4553]
    Modules linked in:
    irq event stamp: 13885653
    hardirqs last  enabled at (13885652): [<ffffffff878009d5>] restore_regs_and_return_to_kernel+0x0/0x2b
    hardirqs last disabled at (13885653): [<ffffffff87800905>] interrupt_entry+0xb5/0xf0 arch/x86/entry/entry_64.S:625
    softirqs last  enabled at (13614028): [<ffffffff84df0809>] tun_napi_alloc_frags drivers/net/tun.c:1478 [inline]
    softirqs last  enabled at (13614028): [<ffffffff84df0809>] tun_get_user+0x1dd9/0x4290 drivers/net/tun.c:1825
    softirqs last disabled at (13614032): [<ffffffff84df1b6f>] tun_get_user+0x313f/0x4290 drivers/net/tun.c:1942
    CPU: 1 PID: 4553 Comm: syz-executor738 Not tainted 4.17.0-rc3+ #40
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:check_kcov_mode kernel/kcov.c:67 [inline]
    RIP: 0010:__sanitizer_cov_trace_pc+0x20/0x50 kernel/kcov.c:101
    RSP: 0018:ffff8801d8cfe250 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff13
    RAX: ffff8801d88a8080 RBX: ffff8801d7389e40 RCX: 0000000000000006
    RDX: 0000000000000000 RSI: ffffffff868da4ad RDI: ffff8801c8a53277
    RBP: ffff8801d8cfe250 R08: ffff8801d88a8080 R09: ffff8801d8cfe3e8
    R10: ffffed003b19fc87 R11: ffff8801d8cfe43f R12: ffff8801c8a5327f
    R13: 0000000000000000 R14: ffff8801c8a4e5fe R15: ffff8801d8cfe3e8
    FS:  0000000000d88940(0000) GS:ffff8801daf00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffff600400 CR3: 00000001acab3000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     _decode_session6+0xc1d/0x14f0 net/ipv6/xfrm6_policy.c:150
     __xfrm_decode_session+0x71/0x140 net/xfrm/xfrm_policy.c:2368
     xfrm_decode_session_reverse include/net/xfrm.h:1213 [inline]
     icmpv6_route_lookup+0x395/0x6e0 net/ipv6/icmp.c:372
     icmp6_send+0x1982/0x2da0 net/ipv6/icmp.c:551
     icmpv6_send+0x17a/0x300 net/ipv6/ip6_icmp.c:43
     ip6_input_finish+0x14e1/0x1a30 net/ipv6/ip6_input.c:305
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip6_input+0xe1/0x5e0 net/ipv6/ip6_input.c:327
     dst_input include/net/dst.h:450 [inline]
     ip6_rcv_finish+0x29c/0xa10 net/ipv6/ip6_input.c:71
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ipv6_rcv+0xeb8/0x2040 net/ipv6/ip6_input.c:208
     __netif_receive_skb_core+0x2468/0x3650 net/core/dev.c:4646
     __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:4711
     netif_receive_skb_internal+0x126/0x7b0 net/core/dev.c:4785
     napi_frags_finish net/core/dev.c:5226 [inline]
     napi_gro_frags+0x631/0xc40 net/core/dev.c:5299
     tun_get_user+0x3168/0x4290 drivers/net/tun.c:1951
     tun_chr_write_iter+0xb9/0x154 drivers/net/tun.c:1996
     call_write_iter include/linux/fs.h:1784 [inline]
     do_iter_readv_writev+0x859/0xa50 fs/read_write.c:680
     do_iter_write+0x185/0x5f0 fs/read_write.c:959
     vfs_writev+0x1c7/0x330 fs/read_write.c:1004
     do_writev+0x112/0x2f0 fs/read_write.c:1039
     __do_sys_writev fs/read_write.c:1112 [inline]
     __se_sys_writev fs/read_write.c:1109 [inline]
     __x64_sys_writev+0x75/0xb0 fs/read_write.c:1109
     do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reported-by: syzbot+0053c8...@syzkaller.appspotmail.com
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4f981b33bdc778b0faadebef912c6bc2bb398730
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri May 4 07:59:58 2018 +0200

    efi: Avoid potential crashes, fix the 'struct efi_pci_io_protocol_32' definition for mixed mode
    
    commit 0b3225ab9407f557a8e20f23f37aa7236c10a9b1 upstream.
    
    Mixed mode allows a kernel built for x86_64 to interact with 32-bit
    EFI firmware, but requires us to define all struct definitions carefully
    when it comes to pointer sizes.
    
    'struct efi_pci_io_protocol_32' currently uses a 'void *' for the
    'romimage' field, which will be interpreted as a 64-bit field
    on such kernels, potentially resulting in bogus memory references
    and subsequent crashes.
    
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180504060003.19618-13-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3b7fa44d9050e235610ca45baf71a6b88da6404b
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed May 9 19:42:20 2018 +0900

    x86/kexec: Avoid double free_page() upon do_kexec_load() failure
    
    commit a466ef76b815b86748d9870ef2a430af7b39c710 upstream.
    
    >From ff82bedd3e12f0d3353282054ae48c3bd8c72012 Mon Sep 17 00:00:00 2001
    From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Date: Wed, 9 May 2018 12:12:39 +0900
    Subject: [PATCH v3] x86/kexec: avoid double free_page() upon do_kexec_load() failure.
    
    syzbot is reporting crashes after memory allocation failure inside
    do_kexec_load() [1]. This is because free_transition_pgtable() is called
    by both init_transition_pgtable() and machine_kexec_cleanup() when memory
    allocation failed inside init_transition_pgtable().
    
    Regarding 32bit code, machine_kexec_free_page_tables() is called by both
    machine_kexec_alloc_page_tables() and machine_kexec_cleanup() when memory
    allocation failed inside machine_kexec_alloc_page_tables().
    
    Fix this by leaving the error handling to machine_kexec_cleanup()
    (and optionally setting NULL after free_page()).
    
    [1] https://syzkaller.appspot.com/bug?id=91e52396168cf2bdd572fe1e1bc0bc645c1c6b40
    
    Fixes: f5deb79679af6eb4 ("x86: kexec: Use one page table in x86_64 machine_kexec")
    Fixes: 92be3d6bdf2cb349 ("kexec/i386: allocate page table pages dynamically")
    Reported-by: syzbot <syzbot+d96f60296ef613fe1d69@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: prudo@linux.vnet.ibm.com
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: syzkaller-bugs@googlegroups.com
    Cc: takahiro.akashi@linaro.org
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: akpm@linux-foundation.org
    Cc: dyoung@redhat.com
    Cc: kirill.shutemov@linux.intel.com
    Link: https://lkml.kernel.org/r/201805091942.DGG12448.tMFVFSJFQOOLHO@I-love.SAKURA.ne.jp
    [bwh: Backported to 3.16: No need to handle a P4D]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d918677d6d4c0bed8d488d80e11705294660fa43
Author: Federico Cuello <fedux@fedux.com.ar>
Date:   Wed May 9 00:13:38 2018 +0200

    ALSA: usb: mixer: volume quirk for CM102-A+/102S+
    
    commit 21493316a3c4598f308d5a9fa31cc74639c4caff upstream.
    
    Currently it's not possible to set volume lower than 26% (it just mutes).
    
    Also fixes this warning:
    
      Warning! Unlikely big volume range (=9472), cval->res is probably wrong.
      [13] FU [PCM Playback Volume] ch = 2, val = -9473/-1/1
    
    , and volume works fine for full range.
    
    Signed-off-by: Federico Cuello <fedux@fedux.com.ar>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 250335bbf19b4a9a9525d20d567f21f1970cada6
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Sat May 5 13:38:03 2018 -0500

    ALSA: control: fix a redundant-copy issue
    
    commit 3f12888dfae2a48741c4caa9214885b3aaf350f9 upstream.
    
    In snd_ctl_elem_add_compat(), the fields of the struct 'data' need to be
    copied from the corresponding fields of the struct 'data32' in userspace.
    This is achieved by invoking copy_from_user() and get_user() functions. The
    problem here is that the 'type' field is copied twice. One is by
    copy_from_user() and one is by get_user(). Given that the 'type' field is
    not used between the two copies, the second copy is *completely* redundant
    and should be removed for better performance and cleanup. Also, these two
    copies can cause inconsistent data: as the struct 'data32' resides in
    userspace and a malicious userspace process can race to change the 'type'
    field between the two copies to cause inconsistent data. Depending on how
    the data is used in the future, such an inconsistency may cause potential
    security risks.
    
    For above reasons, we should take out the second copy.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3134c5a32810c510f1f447c135cec346acbb71c3
Author: Marek Lindner <mareklindner@neomailbox.ch>
Date:   Sat May 12 00:23:07 2018 +0800

    batman-adv: prevent TT request storms by not sending inconsistent TT TLVLs
    
    commit 16116dac23396e73c01eeee97b102e4833a4b205 upstream.
    
    A translation table TVLV changset sent with an OGM consists
    of a number of headers (one per VLAN) plus the changeset
    itself (addition and/or deletion of entries).
    
    The per-VLAN headers are used by OGM recipients for consistency
    checks. Said consistency check might determine that a full
    translation table request is needed to restore consistency. If
    the TT sender adds per-VLAN headers of empty VLANs into the OGM,
    recipients are led to believe to have reached an inconsistent
    state and thus request a full table update. The full table does
    not contain empty VLANs (due to missing entries) the cycle
    restarts when the next OGM is issued.
    
    Consequently, when the translation table TVLV headers are
    composed, empty VLANs are to be excluded.
    
    Fixes: 21a57f6e7a3b ("batman-adv: make the TT CRC logic VLAN specific")
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6d968ad895e8bf453a880fd7a0c0dbc0fa6be2f8
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Thu May 10 19:44:28 2018 +0200

    batman-adv: Fix TT sync flags for intermediate TT responses
    
    commit 7072337e52b3e9d5460500d8dc9cbc1ba2db084c upstream.
    
    The previous TT sync fix so far only fixed TT responses issued by the
    target node directly. So far, TT responses issued by intermediate nodes
    still lead to the wrong flags being added, leading to CRC mismatches.
    
    This behaviour was observed at Freifunk Hannover in a 800 nodes setup
    where a considerable amount of nodes were still infected with 'WI'
    TT flags even with (most) nodes having the previous TT sync fix applied.
    
    I was able to reproduce the issue with intermediate TT responses in a
    four node test setup and this patch fixes this issue by ensuring to
    use the per originator instead of the summarized, OR'd ones.
    
    Fixes: e9c00136a475 ("batman-adv: fix tt_global_entries flags update")
    Reported-by: Leonardo Mörlein <me@irrelefant.net>
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [bwh: Backported to 3.16:
     - Drop inapplicable comment changes
     - Change return types of batadv_tt_{local,global}_valid() to bool, done
       as part of a larger conversion upstream
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d6fc6d7915322e3cc58a5ce919fe0c7a18d59be6
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri May 4 08:23:01 2018 -0400

    do d_instantiate/unlock_new_inode combinations safely
    
    commit 1e2e547a93a00ebc21582c06ca3c6cfea2a309ee upstream.
    
    For anything NFS-exported we do _not_ want to unlock new inode
    before it has grown an alias; original set of fixes got the
    ordering right, but missed the nasty complication in case of
    lockdep being enabled - unlock_new_inode() does
            lockdep_annotate_inode_mutex_key(inode)
    which can only be done before anyone gets a chance to touch
    ->i_mutex.  Unfortunately, flipping the order and doing
    unlock_new_inode() before d_instantiate() opens a window when
    mkdir can race with open-by-fhandle on a guessed fhandle, leading
    to multiple aliases for a directory inode and all the breakage
    that follows from that.
    
            Correct solution: a new primitive (d_instantiate_new())
    combining these two in the right order - lockdep annotate, then
    d_instantiate(), then the rest of unlock_new_inode().  All
    combinations of d_instantiate() with unlock_new_inode() should
    be converted to that.
    
    Tested-by: Mike Marshall <hubcap@omnibond.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16:
     - Drop changes in orangefs
     - Apply similar change to ext3
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 78cf460924e0a19633322c21609b606ab65c73a1
Author: Jan Kara <jack@suse.cz>
Date:   Tue Jun 2 11:26:34 2015 +0200

    ufs: Fix possible deadlock when looking up directories
    
    commit 514d748f69c97a51a2645eb198ac5c6218f22ff9 upstream.
    
    Commit e4502c63f56aeca88 (ufs: deal with nfsd/iget races) made ufs
    create inodes with I_NEW flag set. However ufs_mkdir() never cleared
    this flag. Thus if someone ever tried to lookup the directory by inode
    number, he would deadlock waiting for I_NEW to be cleared. Luckily this
    mostly happens only if the filesystem is exported over NFS since
    otherwise we have the inode attached to dentry and don't look it up by
    inode number. In rare cases dentry can get freed without inode being
    freed and then we'd hit the deadlock even without NFS export.
    
    Fix the problem by clearing I_NEW before instantiating new directory
    inode.
    
    Fixes: e4502c63f56aeca887ced37f24e0def1ef11cec8
    Reported-by: Fabian Frederick <fabf@skynet.be>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 403150926ea53e2ef769a61b4c71be76984740e6
Author: Jan Kara <jack@suse.cz>
Date:   Mon Jun 1 14:52:04 2015 +0200

    ufs: Fix warning from unlock_new_inode()
    
    commit 12ecbb4b1d765a5076920999298d9625439dbe58 upstream.
    
    Commit e4502c63f56aeca88 (ufs: deal with nfsd/iget races) introduced
    unlock_new_inode() call into ufs_add_nondir(). However that function
    gets called also from ufs_link() which hands it already initialized
    inode and thus unlock_new_inode() complains. The problem is harmless but
    annoying.
    
    Fix the problem by opencoding necessary stuff in ufs_link()
    
    Fixes: e4502c63f56aeca887ced37f24e0def1ef11cec8
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a5ba77a3220fbb04f79ee874fdfea6aa81db1a2
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 26 21:17:52 2014 -0400

    ufs: deal with nfsd/iget races
    
    commit e4502c63f56aeca887ced37f24e0def1ef11cec8 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a04784d0aea523e9e288ba9ba1077057e5f6a0ef
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 4 09:38:11 2014 -0400

    udf: fix the udf_iget() vs. udf_new_inode() races
    
    commit b231509616feb911c2a7a8814d58c0014ef5b17f upstream.
    
    Currently udf_iget() (triggered by NFS) can race with udf_new_inode()
    leading to two inode structures with the same inode number:
    
    nfsd: iget_locked() creates inode
    nfsd: try to read from disk, block on that.
    udf_new_inode(): allocate inode with that inumber
    udf_new_inode(): insert it into icache, set it up and dirty
    udf_write_inode(): write inode into buffer cache
    nfsd: get CPU again, look into buffer cache, see nice and sane on-disk
      inode, set the in-core inode from it
    
    Fix the problem by putting inode into icache in locked state (I_NEW set)
    and unlocking it only after it's fully set up.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 529eb82eaa2723cc8522be9f3968f0dc94c30792
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 4 09:34:14 2014 -0400

    udf: merge the pieces inserting a new non-directory object into directory
    
    commit d2be51cb34dc501791f3b8c01a99a3f2064bd8d1 upstream.
    
    boilerplate code in udf_{create,mknod,symlink} taken to new helper
    
    symlink case converted to unique id calculated by udf_new_inode() - no
    point finding a new one.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8ddd741252dbf04e30bc7d6a6c14967d05ee2d1
Author: Chao Yu <chao2.yu@samsung.com>
Date:   Sat Aug 9 09:49:31 2014 +0800

    udf: avoid unneeded up_write when fail to add entry in ->symlink
    
    commit 85cd083b498572fb9fa575cce3ed910c8ee84294 upstream.
    
    We have released the ->i_data_sem before invoking udf_add_entry(),
    so in following error path, we should not release this lock again.
    
    Signed-off-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9f8c9c26c8d00e2fcda9fa90efcc5b545cddd4b4
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Sun Aug 16 12:38:15 2015 -0700

    f2fs: go out for insert_inode_locked failure
    
    commit a21c20f0c812925085204fced932ac95f2a76bf0 upstream.
    
    We should not call unlock_new_inode when insert_inode_locked failed.
    
    Reviewed-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 551b02acda9079305e7d085eb604bc134aae6058
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Thu Sep 25 11:55:53 2014 -0700

    f2fs: call f2fs_unlock_op after error was handled
    
    commit 44c16156512f33c81e382a1e1df9524e26a7026a upstream.
    
    This patch relocates f2fs_unlock_op in every directory operations to be called
    after any error was processed.
    Otherwise, the checkpoint can be entered with valid node ids without its
    dentry when -ENOSPC is occurred.
    
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [bwh: Backported to 3.16:
     - Drop changes in f2fs_tmpfile()
     - Use F2FS_SB() instead of F2FS_I_SB()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 73125a16898206a96038de6c427ed27b036d8204
Author: Chao Yu <chao2.yu@samsung.com>
Date:   Sat Aug 30 09:52:34 2014 +0800

    f2fs: reposition unlock_new_inode to prevent accessing invalid inode
    
    commit b73e52824c8920a5ff754e3c8ff68466a7dd61f9 upstream.
    
    As the race condition on the inode cache, following scenario can appear:
    [Thread a]                              [Thread b]
                                            ->f2fs_mkdir
                                              ->f2fs_add_link
                                                ->__f2fs_add_link
                                                  ->init_inode_metadata failed here
    ->gc_thread_func
      ->f2fs_gc
        ->do_garbage_collect
          ->gc_data_segment
            ->f2fs_iget
              ->iget_locked
                ->wait_on_inode
                                              ->unlock_new_inode
            ->move_data_page
                                              ->make_bad_inode
                                              ->iput
    
    When we fail in create/symlink/mkdir/mknod/tmpfile, the new allocated inode
    should be set as bad to avoid being accessed by other thread. But in above
    scenario, it allows f2fs to access the invalid inode before this inode was set
    as bad.
    This patch fix the potential problem, and this issue was found by code review.
    
    change log from v1:
     o Add condition judgment in gc_data_segment() suggested by Changman Lee.
     o use iget_failed to simplify code.
    
    Signed-off-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [bwh: Backported to 3.16: Drop changes in f2fs_tmpfile()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 34e4f1accbc8d937fd0378e2892378581ab2b76d
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Dec 31 18:08:24 2015 +0000

    Btrfs: don't leave dangling dentry if symlink creation failed
    
    commit d50866d00fb39fcf72307001763ee9cc92625a43 upstream.
    
    When we are creating a symlink we might fail with an error after we
    created its inode and added the corresponding directory indexes to its
    parent inode. In this case we end up never removing the directory indexes
    because the inode eviction handler, called for our symlink inode on the
    final iput(), only removes items associated with the symlink inode and
    not with the parent inode.
    
    Example:
    
      $ mkfs.btrfs -f /dev/sdi
      $ mount /dev/sdi /mnt
      $ touch /mnt/foo
      $ ln -s /mnt/foo /mnt/bar
      ln: failed to create symbolic link ‘bar’: Cannot allocate memory
      $ umount /mnt
      $ btrfsck /dev/sdi
      Checking filesystem on /dev/sdi
      UUID: d5acb5ba-31bd-42da-b456-89dca2e716e1
      checking extents
      checking free space cache
      checking fs roots
      root 5 inode 258 errors 2001, no inode item, link count wrong
            unresolved ref dir 256 index 3 namelen 3 name bar filetype 7 errors 4, no inode ref
      found 131073 bytes used err is 1
      total csum bytes: 0
      total tree bytes: 131072
      total fs tree bytes: 32768
      total extent tree bytes: 16384
      btree space waste bytes: 124305
      file data blocks allocated: 262144
       referenced 262144
      btrfs-progs v4.2.3
    
    So fix this by adding the directory index entries as the very last
    step of symlink creation.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 46854f654fc6fea1399a3b94b67e43f2d6475bce
Author: Chris Mason <clm@fb.com>
Date:   Mon Sep 8 13:08:51 2014 -0700

    Btrfs: use insert_inode_locked4 for inode creation
    
    commit b0d5d10f41a0f1cd839408dd94427f2db3553bca upstream.
    
    Btrfs was inserting inodes into the hash table before we had fully
    set the inode up on disk.  This leaves us open to rare races that allow
    two different inodes in memory for the same [root, inode] pair.
    
    This patch fixes things by using insert_inode_locked4 to insert an I_NEW
    inode and unlock_new_inode when we're ready for the rest of the kernel
    to use the inode.
    
    It also makes sure to init the operations pointers on the inode before
    going into the error handling paths.
    
    Signed-off-by: Chris Mason <clm@fb.com>
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2d649af138cf50353681169377b6512d585ea13
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Aug 1 00:10:32 2014 +0100

    Btrfs: ensure tmpfile inode is always persisted with link count of 0
    
    commit 5762b5c958abbecb7fb9f4596a6476d1ce91ecf6 upstream.
    
    If we open a file with O_TMPFILE, don't do any further operation on
    it (so that the inode item isn't updated) and then force a transaction
    commit, we get a persisted inode item with a link count of 1, and not 0
    as it should be.
    
    Steps to reproduce it (requires a modern xfs_io with -T support):
    
        $ mkfs.btrfs -f /dev/sdd
        $ mount -o /dev/sdd /mnt
        $ xfs_io -T /mnt &
        $ sync
    
    Then btrfs-debug-tree shows the inode item with a link count of 1:
    
        $ btrfs-debug-tree /dev/sdd
        (...)
        fs tree key (FS_TREE ROOT_ITEM 0)
        leaf 29556736 items 4 free space 15851 generation 6 owner 5
        fs uuid f164d01b-1b92-481d-a4e4-435fb0f843d0
        chunk uuid 0e3d0e56-bcca-4a1c-aa5f-cec2c6f4f7a6
            item 0 key (256 INODE_ITEM 0) itemoff 16123 itemsize 160
                    inode generation 3 transid 6 size 0 block group 0 mode 40755 links 1
            item 1 key (256 INODE_REF 256) itemoff 16111 itemsize 12
                    inode ref index 0 namelen 2 name: ..
            item 2 key (257 INODE_ITEM 0) itemoff 15951 itemsize 160
                    inode generation 6 transid 6 size 0 block group 0 mode 100600 links 1
            item 3 key (ORPHAN ORPHAN_ITEM 257) itemoff 15951 itemsize 0
                    orphan item
        checksum tree key (CSUM_TREE ROOT_ITEM 0)
        (...)
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3bf105df9fffa34150682ef7ee51b3abe44eebf4
Author: Andrey Ignatov <rdna@fb.com>
Date:   Thu May 10 10:59:34 2018 -0700

    ipv4: fix memory leaks in udp_sendmsg, ping_v4_sendmsg
    
    commit 1b97013bfb11d66f041de691de6f0fec748ce016 upstream.
    
    Fix more memory leaks in ip_cmsg_send() callers. Part of them were fixed
    earlier in 919483096bfe.
    
    * udp_sendmsg one was there since the beginning when linux sources were
      first added to git;
    * ping_v4_sendmsg one was copy/pasted in c319b4d76b9e.
    
    Whenever return happens in udp_sendmsg() or ping_v4_sendmsg() IP options
    have to be freed if they were allocated previously.
    
    Add label so that future callers (if any) can use it instead of kfree()
    before return that is easy to forget.
    
    Fixes: c319b4d76b9e (net: ipv4: add IPPROTO_ICMP socket kind)
    Signed-off-by: Andrey Ignatov <rdna@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f6d736f3c4e94d614a909c22e1e11dcc4483695e
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed May 9 11:59:32 2018 -0400

    tracing: Fix regex_match_front() to not over compare the test string
    
    commit dc432c3d7f9bceb3de6f5b44fb9c657c9810ed6d upstream.
    
    The regex match function regex_match_front() in the tracing filter logic,
    was fixed to test just the pattern length from testing the entire test
    string. That is, it went from strncmp(str, r->pattern, len) to
    strcmp(str, r->pattern, r->len).
    
    The issue is that str is not guaranteed to be nul terminated, and if r->len
    is greater than the length of str, it can access more memory than is
    allocated.
    
    The solution is to add a simple test if (len < r->len) return 0.
    
    Fixes: 285caad415f45 ("tracing/filters: Fix MATCH_FRONT_ONLY filter matching")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1f663e013de3ad506c673f3d07f143b391f56dea
Author: Steve French <smfrench@gmail.com>
Date:   Thu May 10 10:59:37 2018 -0500

    smb3: directory sync should not return an error
    
    commit 6e70c267e68d77679534dcf4aaf84e66f2cf1425 upstream.
    
    As with NFS, which ignores sync on directory handles,
    fsync on a directory handle is a noop for CIFS/SMB3.
    Do not return an error on it.  It breaks some database
    apps otherwise.
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 86eea88ed7f448dd9e9677f35fcdd9826ec1ebfe
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Wed May 9 18:35:13 2018 +0300

    net/mlx4_en: Verify coalescing parameters are in range
    
    commit 6ad4e91c6d796b38a7f0e724db1de28eeb122bad upstream.
    
    Add check of coalescing parameters received through ethtool are within
    range of values supported by the HW.
    Driver gets the coalescing rx/tx-usecs and rx/tx-frames as set by the
    users through ethtool. The ethtool support up to 32 bit value for each.
    However, mlx4 modify cq limits the coalescing time parameter and
    coalescing frames parameters to 16 bits.
    Return out of range error if user tries to set these parameters to
    higher values.
    Change type of sample-interval and adaptive_rx_coal parameters in mlx4
    driver to u32 as the ethtool holds them as u32 and these parameters are
    not limited due to mlx4 HW.
    
    Fixes: c27a02cd94d6 ('mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC')
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4c6210cc32055ddb470cead884e8f8783fbbadf5
Author: Sven Eckelmann <sven@narfation.org>
Date:   Wed May 9 21:07:40 2018 +0200

    batman-adv: Avoid race in TT TVLV allocator helper
    
    commit 8ba0f9bd3bdea1058c2b2676bec7905724418e40 upstream.
    
    The functions batadv_tt_prepare_tvlv_local_data and
    batadv_tt_prepare_tvlv_global_data are responsible for preparing a buffer
    which can be used to store the TVLV container for TT and add the VLAN
    information to it.
    
    This will be done in three phases:
    
    1. count the number of VLANs and their entries
    2. allocate the buffer using the counters from the previous step and limits
       from the caller (parameter tt_len)
    3. insert the VLAN information to the buffer
    
    The step 1 and 3 operate on a list which contains the VLANs. The access to
    these lists must be protected with an appropriate lock or otherwise they
    might operate on on different entries. This could for example happen when
    another context is adding VLAN entries to this list.
    
    This could lead to a buffer overflow in these functions when enough entries
    were added between step 1 and 3 to the VLAN lists that the buffer room for
    the entries (*tt_change) is smaller then the now required extra buffer for
    new VLAN entries.
    
    Fixes: 7ea7b4a14275 ("batman-adv: make the TT CRC logic VLAN specific")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 17aa2271b216c29d92c9dae2c3cd582c25464f60
Author: Long Li <longli@microsoft.com>
Date:   Wed Apr 25 11:30:04 2018 -0700

    cifs: Allocate validate negotiation request through kmalloc
    
    commit 2796d303e3c5ec213c578ed3a66872205c126eb8 upstream.
    
    The data buffer allocated on the stack can't be DMA'ed, ib_dma_map_page will
    return an invalid DMA address for a buffer on stack. Even worse, this
    incorrect address can't be detected by ib_dma_mapping_error. Sending data
    from this address to hardware will not fail, but the remote peer will get
    junk data.
    
    Fix this by allocating the request on the heap in smb3_validate_negotiate.
    
    Changes in v2:
    Removed duplicated code on freeing buffers on function exit.
    (Thanks to Parav Pandit <parav@mellanox.com>)
    Fixed typo in the patch title.
    
    Changes in v3:
    Added "Fixes" to the patch.
    Changed several sizeof() to use *pointer in place of struct.
    
    Changes in v4:
    Added detailed comments on the failure through RDMA.
    Allocate request buffer using GPF_NOFS.
    Fixed possible memory leak.
    
    Changes in v5:
    Removed variable ret for checking return value.
    Changed to use pneg_inbuf->Dialects[0] to calculate unused space in pneg_inbuf.
    
    Fixes: ff1c038addc4 ("Check SMB3 dialects against downgrade attacks")
    Signed-off-by: Long Li <longli@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Tom Talpey <ttalpey@microsoft.com>
    [bwh: Backported to 3.16: We only ever pass one dialect]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dd928eae0c98b4685eb36b474e61710546875b7d
Author: Yishai Hadas <yishaih@mellanox.com>
Date:   Mon May 7 10:20:01 2018 +0300

    RDMA/mlx5: Don't assume that medium blueFlame register exists
    
    commit 18b0362e87dfa09e355093b897b9db854e360d28 upstream.
    
    User can leave system without medium BlueFlames registers,
    however the code assumed that at least one such register exists.
    
    This patch fixes that assumption.
    
    Fixes: c1be5232d21d ("IB/mlx5: Fix micro UAR allocator")
    Reported-by: Rohit Zambre <rzambre@uci.edu>
    Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16:
     - s/bfreg/uuar/g
     - Neither alloc_med_class_uuar() nor num_med_uuar() takes a mlx5_ib_dev
       pointer, so first_med_uuar() doesn't need to take one
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8807d1c48ac7c18c439a4f18e8bbfe07c58178fe
Author: Tejun Heo <tj@kernel.org>
Date:   Tue May 8 14:21:56 2018 -0700

    libata: Blacklist some Sandisk SSDs for NCQ
    
    commit 322579dcc865b94b47345ad1b6002ad167f85405 upstream.
    
    Sandisk SSDs SD7SN6S256G and SD8SN8U256G are regularly locking up
    regularly under sustained moderate load with NCQ enabled.  Blacklist
    for now.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cdb39e45062e5916358aa23915391adbac81fb27
Author: Hendrik Brueckner <brueckner@linux.ibm.com>
Date:   Thu May 3 15:56:15 2018 +0200

    s390/cpum_sf: ensure sample frequency of perf event attributes is non-zero
    
    commit 4bbaf2584b86b0772413edeac22ff448f36351b1 upstream.
    
    Correct a trinity finding for the perf_event_open() system call with
    a perf event attribute structure that uses a frequency but has the
    sampling frequency set to zero.  This causes a FP divide exception during
    the sample rate initialization for the hardware sampling facility.
    
    Fixes: 8c069ff4bd606 ("s390/perf: add support for the CPU-Measurement Sampling Facility")
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e9423efe8748f830e3a613df5d1d392273dff765
Author: Florent Flament <contact@florentflament.com>
Date:   Thu Apr 19 19:07:00 2018 +0300

    drm/i915: Fix drm:intel_enable_lvds ERROR message in kernel log
    
    commit e8f48f96db7e482995743f461b3e8a5c1a102533 upstream.
    
    Fix `[drm:intel_enable_lvds] *ERROR* timed out waiting for panel to
    power on` in kernel log at boot time.
    
    Toshiba Satellite Z930 laptops needs between 1 and 2 seconds to power
    on its screen during Intel i915 DRM initialization. This currently
    results in a `[drm:intel_enable_lvds] *ERROR* timed out waiting for
    panel to power on` message appearing in the kernel log during boot
    time and when stopping the machine.
    
    This change increases the timeout of the `intel_enable_lvds` function
    from 1 to 5 seconds, letting enough time for the Satellite 930 LCD
    screen to power on, and suppressing the error message from the kernel
    log.
    
    This patch has been successfully tested on Linux 4.14 running on a
    Toshiba Satellite Z930.
    
    [vsyrjala: bump the timeout from 2 to 5 seconds to match the DP
     code and properly cover the max hw timeout of ~4 seconds, and
     drop the comment about the specific machine since this is not
     a particulary surprising issue, nor specific to that one machine]
    
    Signed-off-by: Florent Flament <contact@florentflament.com>
    Cc: Pavel Petrovic <ppetrovic@acm.org>
    Cc: Sérgio M. Basto <sergio@serjux.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103414
    References: https://bugzilla.kernel.org/show_bug.cgi?id=57591
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180419160700.19828-1-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 280b54ade5914d3b4abe4f0ebe083ddbd4603246)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3641b0365c054633bf6104250f7f596aa5e6bffc
Author: Julian Anastasov <ja@ssi.bg>
Date:   Thu May 3 22:02:18 2018 +0300

    ipvs: fix stats update from local clients
    
    commit d5e032fc5697b6c0d6b4958bcacb981a08f8174e upstream.
    
    Local clients are not properly synchronized on 32-bit CPUs when
    updating stats (3.10+). Now it is possible estimation_timer (timer),
    a stats reader, to interrupt the local client in the middle of
    write_seqcount_{begin,end} sequence leading to loop (DEADLOCK).
    The same interrupt can happen from received packet (SoftIRQ)
    which updates the same per-CPU stats.
    
    Fix it by disabling BH while updating stats.
    
    Found with debug:
    
    WARNING: inconsistent lock state
    4.17.0-rc2-00105-g35cb6d7-dirty #2 Not tainted
    --------------------------------
    inconsistent {IN-SOFTIRQ-R} -> {SOFTIRQ-ON-W} usage.
    ftp/2545 [HC0[0]:SC0[0]:HE1:SE1] takes:
    86845479 (&syncp->seq#6){+.+-}, at: ip_vs_schedule+0x1c5/0x59e [ip_vs]
    {IN-SOFTIRQ-R} state was registered at:
     lock_acquire+0x44/0x5b
     estimation_timer+0x1b3/0x341 [ip_vs]
     call_timer_fn+0x54/0xcd
     run_timer_softirq+0x10c/0x12b
     __do_softirq+0xc1/0x1a9
     do_softirq_own_stack+0x1d/0x23
     irq_exit+0x4a/0x64
     smp_apic_timer_interrupt+0x63/0x71
     apic_timer_interrupt+0x3a/0x40
     default_idle+0xa/0xc
     arch_cpu_idle+0x9/0xb
     default_idle_call+0x21/0x23
     do_idle+0xa0/0x167
     cpu_startup_entry+0x19/0x1b
     start_secondary+0x133/0x182
     startup_32_smp+0x164/0x168
    irq event stamp: 42213
    
    other info that might help us debug this:
    Possible unsafe locking scenario:
    
          CPU0
          ----
     lock(&syncp->seq#6);
     <Interrupt>
       lock(&syncp->seq#6);
    
    *** DEADLOCK ***
    
    Fixes: ac69269a45e8 ("ipvs: do not disable bh for long time")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16:
     - Drop change in ip_vs_conn_stats(), which doesn't use a seqlock
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 35771209eb5a7b163eec3f7be75d7a955f89eca7
Author: Jimmy Assarsson <extja@kvaser.com>
Date:   Fri Apr 20 14:38:46 2018 +0200

    can: kvaser_usb: Increase correct stats counter in kvaser_usb_rx_can_msg()
    
    commit 6ee00865ffe4e8c8ba4a68d26db53c7ec09bbb89 upstream.
    
    Increase rx_dropped, if alloc_can_skb() fails, not tx_dropped.
    
    Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e4afa283d78e198f5a6840028ab8329fde799fb1
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 7 09:02:25 2018 -0700

    llc: better deal with too small mtu
    
    commit 2c5d5b13c6eb79f5677e206b8aad59b3a2097f60 upstream.
    
    syzbot loves to set very small mtu on devices, since it brings joy.
    We must make llc_ui_sendmsg() fool proof.
    
    usercopy: Kernel memory overwrite attempt detected to wrapped address (offset 0, size 18446612139802320068)!
    
    kernel BUG at mm/usercopy.c:100!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 17464 Comm: syz-executor1 Not tainted 4.17.0-rc3+ #36
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:usercopy_abort+0xbb/0xbd mm/usercopy.c:88
    RSP: 0018:ffff8801868bf800 EFLAGS: 00010282
    RAX: 000000000000006c RBX: ffffffff87d2fb00 RCX: 0000000000000000
    RDX: 000000000000006c RSI: ffffffff81610731 RDI: ffffed0030d17ef6
    RBP: ffff8801868bf858 R08: ffff88018daa4200 R09: ffffed003b5c4fb0
    R10: ffffed003b5c4fb0 R11: ffff8801dae27d87 R12: ffffffff87d2f8e0
    R13: ffffffff87d2f7a0 R14: ffffffff87d2f7a0 R15: ffffffff87d2f7a0
    FS:  00007f56a14ac700(0000) GS:ffff8801dae00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2bc21000 CR3: 00000001abeb1000 CR4: 00000000001426f0
    DR0: 0000000020000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000030602
    Call Trace:
     check_bogus_address mm/usercopy.c:153 [inline]
     __check_object_size+0x5d9/0x5d9 mm/usercopy.c:256
     check_object_size include/linux/thread_info.h:108 [inline]
     check_copy_size include/linux/thread_info.h:139 [inline]
     copy_from_iter_full include/linux/uio.h:121 [inline]
     memcpy_from_msg include/linux/skbuff.h:3305 [inline]
     llc_ui_sendmsg+0x4b1/0x1530 net/llc/af_llc.c:941
     sock_sendmsg_nosec net/socket.c:629 [inline]
     sock_sendmsg+0xd5/0x120 net/socket.c:639
     __sys_sendto+0x3d7/0x670 net/socket.c:1789
     __do_sys_sendto net/socket.c:1801 [inline]
     __se_sys_sendto net/socket.c:1797 [inline]
     __x64_sys_sendto+0xe1/0x1a0 net/socket.c:1797
     do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x455979
    RSP: 002b:00007f56a14abc68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f56a14ac6d4 RCX: 0000000000455979
    RDX: 0000000000000000 RSI: 0000000020000000 RDI: 0000000000000018
    RBP: 000000000072bea0 R08: 00000000200012c0 R09: 0000000000000010
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000548 R14: 00000000006fbf60 R15: 0000000000000000
    Code: 55 c0 e8 c0 55 bb ff ff 75 c8 48 8b 55 c0 4d 89 f9 ff 75 d0 4d 89 e8 48 89 d9 4c 89 e6 41 56 48 c7 c7 80 fa d2 87 e8 a0 0b a3 ff <0f> 0b e8 95 55 bb ff e8 c0 a8 f7 ff 8b 95 14 ff ff ff 4d 89 e8
    RIP: usercopy_abort+0xbb/0xbd mm/usercopy.c:88 RSP: ffff8801868bf800
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4efb1513b0cb4f96e08b6e390452a48dc42f0851
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Thu May 3 13:52:47 2018 +0200

    scsi: zfcp: fix infinite iteration on ERP ready list
    
    commit fa89adba1941e4f3b213399b81732a5c12fd9131 upstream.
    
    zfcp_erp_adapter_reopen() schedules blocking of all of the adapter's
    rports via zfcp_scsi_schedule_rports_block() and enqueues a reopen
    adapter ERP action via zfcp_erp_action_enqueue(). Both are separately
    processed asynchronously and concurrently.
    
    Blocking of rports is done in a kworker by zfcp_scsi_rport_work(). It
    calls zfcp_scsi_rport_block(), which then traces a DBF REC "scpdely" via
    zfcp_dbf_rec_trig().  zfcp_dbf_rec_trig() acquires the DBF REC spin lock
    and then iterates with list_for_each() over the adapter's ERP ready list
    without holding the ERP lock. This opens a race window in which the
    current list entry can be moved to another list, causing list_for_each()
    to iterate forever on the wrong list, as the erp_ready_head is never
    encountered as terminal condition.
    
    Meanwhile the ERP action can be processed in the ERP thread by
    zfcp_erp_thread(). It calls zfcp_erp_strategy(), which acquires the ERP
    lock and then calls zfcp_erp_action_to_running() to move the ERP action
    from the ready to the running list.  zfcp_erp_action_to_running() can
    move the ERP action using list_move() just during the aforementioned
    race window. It then traces a REC RUN "erator1" via zfcp_dbf_rec_run().
    zfcp_dbf_rec_run() tries to acquire the DBF REC spin lock. If this is
    held by the infinitely looping kworker, it effectively spins forever.
    
    Example Sequence Diagram:
    
    Process                ERP Thread             rport_work
    -------------------    -------------------    -------------------
    zfcp_erp_adapter_reopen()
    zfcp_erp_adapter_block()
    zfcp_scsi_schedule_rports_block()
    lock ERP                                      zfcp_scsi_rport_work()
    zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_ADAPTER)
    list_add_tail() on ready                      !(rport_task==RPORT_ADD)
    wake_up() ERP thread                          zfcp_scsi_rport_block()
    zfcp_dbf_rec_trig()    zfcp_erp_strategy()    zfcp_dbf_rec_trig()
    unlock ERP                                    lock DBF REC
    zfcp_erp_wait()        lock ERP
    |                      zfcp_erp_action_to_running()
    |                                             list_for_each() ready
    |                      list_move()              current entry
    |                        ready to running
    |                      zfcp_dbf_rec_run()       endless loop over running
    |                      zfcp_dbf_rec_run_lvl()
    |                      lock DBF REC spins forever
    
    Any adapter recovery can trigger this, such as setting the device offline
    or reboot.
    
    V4.9 commit 4eeaa4f3f1d6 ("zfcp: close window with unblocked rport
    during rport gone") introduced additional tracing of (un)blocking of
    rports. It missed that the adapter->erp_lock must be held when calling
    zfcp_dbf_rec_trig().
    
    This fix uses the approach formerly introduced by commit aa0fec62391c
    ("[SCSI] zfcp: Fix sparse warning by providing new entry in dbf") that got
    later removed by commit ae0904f60fab ("[SCSI] zfcp: Redesign of the debug
    tracing for recovery actions.").
    
    Introduce zfcp_dbf_rec_trig_lock(), a wrapper for zfcp_dbf_rec_trig() that
    acquires and releases the adapter->erp_lock for read.
    
    Reported-by: Sebastian Ott <sebott@linux.ibm.com>
    Signed-off-by: Jens Remus <jremus@linux.ibm.com>
    Fixes: 4eeaa4f3f1d6 ("zfcp: close window with unblocked rport during rport gone")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 117e3d24f191ad47f74a42c832d788329b6c9433
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Apr 26 09:31:52 2018 +0200

    rfkill: gpio: fix memory leak in probe error path
    
    commit 4bf01ca21e2e0e4561d1a03c48c3d740418702db upstream.
    
    Make sure to free the rfkill device in case registration fails during
    probe.
    
    Fixes: 5e7ca3937fbe ("net: rfkill: gpio: convert to resource managed allocation")
    Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4a43cb432852bb79dccf57029c6c6d4fcd7bd4ac
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:06:29 2018 +0200

    perf/x86: Fix possible Spectre-v1 indexing for hw_perf_event cache_*
    
    commit ef9ee4ad38445a30909c48998624861716f2a994 upstream.
    
    > arch/x86/events/core.c:319 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_event_ids[cache_type]' (local cap)
    > arch/x86/events/core.c:319 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_event_ids' (local cap)
    > arch/x86/events/core.c:328 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_extra_regs[cache_type]' (local cap)
    > arch/x86/events/core.c:328 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_extra_regs' (local cap)
    
    Userspace controls @config which contains 3 (byte) fields used for a 3
    dimensional array deref.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01885ef6fd708842af825ff74440e219ac0877ad
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:08:58 2018 +0200

    perf/x86: Fix possible Spectre-v1 indexing for x86_pmu::event_map()
    
    commit 46b1b577229a091b137831becaa0fae8690ee15a upstream.
    
    > arch/x86/events/intel/cstate.c:307 cstate_pmu_event_init() warn: potential spectre issue 'pkg_msr' (local cap)
    > arch/x86/events/intel/core.c:337 intel_pmu_event_map() warn: potential spectre issue 'intel_perfmon_event_map'
    > arch/x86/events/intel/knc.c:122 knc_pmu_event_map() warn: potential spectre issue 'knc_perfmon_event_map'
    > arch/x86/events/intel/p4.c:722 p4_pmu_event_map() warn: potential spectre issue 'p4_general_events'
    > arch/x86/events/intel/p6.c:116 p6_pmu_event_map() warn: potential spectre issue 'p6_perfmon_event_map'
    > arch/x86/events/amd/core.c:132 amd_pmu_event_map() warn: potential spectre issue 'amd_perfmon_event_map'
    
    Userspace controls @attr, sanitize @attr->config before passing it on
    to x86_pmu::event_map().
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c25a8160cf98afcf6bbc9dd89f0b98a60d2ef5a
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 15:03:45 2018 +0200

    sched/autogroup: Fix possible Spectre-v1 indexing for sched_prio_to_weight[]
    
    commit 354d7793070611b4df5a79fbb0f12752d0ed0cc5 upstream.
    
    > kernel/sched/autogroup.c:230 proc_sched_autogroup_set_nice() warn: potential spectre issue 'sched_prio_to_weight'
    
    Userspace controls @nice, sanitize the array index.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5ce8570b4c35df2d2f663bb3cfd5d5e938423ec7
Author: Mike Galbraith <efault@gmx.de>
Date:   Wed Nov 23 11:33:37 2016 +0100

    sched/autogroup: Fix 64-bit kernel nice level adjustment
    
    commit 83929cce95251cc77e5659bf493bd424ae0e7a67 upstream.
    
    Michael Kerrisk reported:
    
    > Regarding the previous paragraph...  My tests indicate
    > that writing *any* value to the autogroup [nice priority level]
    > file causes the task group to get a lower priority.
    
    Because autogroup didn't call the then meaningless scale_load()...
    
    Autogroup nice level adjustment has been broken ever since load
    resolution was increased for 64-bit kernels.  Use scale_load() to
    scale group weight.
    
    Michael Kerrisk tested this patch to fix the problem:
    
    > Applied and tested against 4.9-rc6 on an Intel u7 (4 cores).
    > Test setup:
    >
    > Terminal window 1: running 40 CPU burner jobs
    > Terminal window 2: running 40 CPU burner jobs
    > Terminal window 1: running  1 CPU burner job
    >
    > Demonstrated that:
    > * Writing "0" to the autogroup file for TW1 now causes no change
    >   to the rate at which the process on the terminal consume CPU.
    > * Writing -20 to the autogroup file for TW1 caused those processes
    >   to get the lion's share of CPU while TW2 TW3 get a tiny amount.
    > * Writing -20 to the autogroup files for TW1 and TW3 allowed the
    >   process on TW3 to get as much CPU as it was getting as when
    >   the autogroup nice values for both terminals were 0.
    
    Reported-by: Michael Kerrisk <mtk.manpages@gmail.com>
    Tested-by: Michael Kerrisk <mtk.manpages@gmail.com>
    Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-man <linux-man@vger.kernel.org>
    Link: http://lkml.kernel.org/r/1479897217.4306.6.camel@gmx.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: s/sched_prio_to_weight/prio_to_weight/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 687182f68a06d0d06bbeba4890fe9e9f365af2f9
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:29:51 2018 +0200

    sched/core: Fix possible Spectre-v1 indexing for sched_prio_to_weight[]
    
    commit 7281c8dec8a87685cb54d503d8cceef5a0fc2fdd upstream.
    
    > kernel/sched/core.c:6921 cpu_weight_nice_write_s64() warn: potential spectre issue 'sched_prio_to_weight'
    
    Userspace controls @nice, so sanitize the value before using it to
    index an array.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: Vulnerable array lookup is in set_load_weight()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ccf444350a8d63743f8a6750f4b907efcd82cad2
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu May 3 13:45:58 2018 -0500

    net: atm: Fix potential Spectre v1
    
    commit acf784bd0ce257fe43da7ca266f7a10b837479d2 upstream.
    
    ioc_data.dev_num can be controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    net/atm/lec.c:702 lec_vcc_attach() warn: potential spectre issue
    'dev_lec'
    
    Fix this by sanitizing ioc_data.dev_num before using it to index
    dev_lec. Also, notice that there is another instance in which array
    dev_lec is being indexed using ioc_data.dev_num at line 705:
    lec_vcc_added(netdev_priv(dev_lec[ioc_data.dev_num]),
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 36125f63b1d3631aa858d3ba8fc61b960533f84a
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu May 3 13:17:12 2018 -0500

    atm: zatm: Fix potential Spectre v1
    
    commit 2be147f7459db5bbf292e0a6f135037b55e20b39 upstream.
    
    pool can be indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/atm/zatm.c:1462 zatm_ioctl() warn: potential spectre issue
    'zatm_dev->pool_info' (local cap)
    
    Fix this by sanitizing pool before using it to index
    zatm_dev->pool_info
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c01baf2b66db6bf6cce6268880f63c1fbc0c001
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 3 18:26:26 2018 +0200

    bdi: Fix oops in wb_workfn()
    
    commit b8b784958eccbf8f51ebeee65282ca3fd59ea391 upstream.
    
    Syzbot has reported that it can hit a NULL pointer dereference in
    wb_workfn() due to wb->bdi->dev being NULL. This indicates that
    wb_workfn() was called for an already unregistered bdi which should not
    happen as wb_shutdown() called from bdi_unregister() should make sure
    all pending writeback works are completed before bdi is unregistered.
    Except that wb_workfn() itself can requeue the work with:
    
            mod_delayed_work(bdi_wq, &wb->dwork, 0);
    
    and if this happens while wb_shutdown() is waiting in:
    
            flush_delayed_work(&wb->dwork);
    
    the dwork can get executed after wb_shutdown() has finished and
    bdi_unregister() has cleared wb->bdi->dev.
    
    Make wb_workfn() use wakeup_wb() for requeueing the work which takes all
    the necessary precautions against racing with bdi unregistration.
    
    CC: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    CC: Tejun Heo <tj@kernel.org>
    Fixes: 839a8e8660b6777e7fe4e80af1a048aebe2b5977
    Reported-by: syzbot <syzbot+9873874c735f2892e7e9@syzkaller.appspotmail.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [bwh: Backported to 3.16:
     - Use bdi_wakeup_thread() instead of wb_wakeup()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 89fee40cc5e42e234998aca5280be943dae7ca6a
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 3 09:39:20 2018 -0700

    dccp: fix tasklet usage
    
    commit a8d7aa17bbc970971ccdf71988ea19230ab368b1 upstream.
    
    syzbot reported a crash in tasklet_action_common() caused by dccp.
    
    dccp needs to make sure socket wont disappear before tasklet handler
    has completed.
    
    This patch takes a reference on the socket when arming the tasklet,
    and moves the sock_put() from dccp_write_xmit_timer() to dccp_write_xmitlet()
    
    kernel BUG at kernel/softirq.c:514!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 17 Comm: ksoftirqd/1 Not tainted 4.17.0-rc3+ #30
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:tasklet_action_common.isra.19+0x6db/0x700 kernel/softirq.c:515
    RSP: 0018:ffff8801d9b3faf8 EFLAGS: 00010246
    dccp_close: ABORT with 65423 bytes unread
    RAX: 1ffff1003b367f6b RBX: ffff8801daf1f3f0 RCX: 0000000000000000
    RDX: ffff8801cf895498 RSI: 0000000000000004 RDI: 0000000000000000
    RBP: ffff8801d9b3fc40 R08: ffffed0039f12a95 R09: ffffed0039f12a94
    dccp_close: ABORT with 65423 bytes unread
    R10: ffffed0039f12a94 R11: ffff8801cf8954a3 R12: 0000000000000000
    R13: ffff8801d9b3fc18 R14: dffffc0000000000 R15: ffff8801cf895490
    FS:  0000000000000000(0000) GS:ffff8801daf00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2bc28000 CR3: 00000001a08a9000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     tasklet_action+0x1d/0x20 kernel/softirq.c:533
     __do_softirq+0x2e0/0xaf5 kernel/softirq.c:285
    dccp_close: ABORT with 65423 bytes unread
     run_ksoftirqd+0x86/0x100 kernel/softirq.c:646
     smpboot_thread_fn+0x417/0x870 kernel/smpboot.c:164
     kthread+0x345/0x410 kernel/kthread.c:238
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:412
    Code: 48 8b 85 e8 fe ff ff 48 8b 95 f0 fe ff ff e9 94 fb ff ff 48 89 95 f0 fe ff ff e8 81 53 6e 00 48 8b 95 f0 fe ff ff e9 62 fb ff ff <0f> 0b 48 89 cf 48 89 8d e8 fe ff ff e8 64 53 6e 00 48 8b 8d e8
    RIP: tasklet_action_common.isra.19+0x6db/0x700 kernel/softirq.c:515 RSP: ffff8801d9b3faf8
    
    Fixes: dc841e30eaea ("dccp: Extend CCID packet dequeueing interface")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>
    Cc: dccp@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: Timer parameter is still an unsigned long]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 56d83c67605b63f7e9574b77b5a426e4b8bef7bf
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu May 3 11:04:48 2018 -0400

    USB: Accept bulk endpoints with 1024-byte maxpacket
    
    commit fb5ee84ea72c5f1b6cabdd1c9d6e8648995ca7c6 upstream.
    
    Some non-compliant high-speed USB devices have bulk endpoints with a
    1024-byte maxpacket size.  Although such endpoints don't work with
    xHCI host controllers, they do work with EHCI controllers.  We used to
    accept these invalid sizes (with a warning), but we no longer do
    because of an unintentional change introduced by commit aed9d65ac327
    ("USB: validate wMaxPacketValue entries in endpoint descriptors").
    
    This patch restores the old behavior, so that people with these
    peculiar devices can use them without patching their kernels by hand.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Suggested-by: Elvinas <elvinas@veikia.lt>
    Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7caa211b78a4ac5dc31529462070b75d332daed1
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed May 2 22:22:54 2018 +0200

    qmi_wwan: do not steal interfaces from class drivers
    
    commit 5697db4a696c41601a1d15c1922150b4dbf5726c upstream.
    
    The USB_DEVICE_INTERFACE_NUMBER matching macro assumes that
    the { vendorid, productid, interfacenumber } set uniquely
    identifies one specific function.  This has proven to fail
    for some configurable devices. One example is the Quectel
    EM06/EP06 where the same interface number can be either
    QMI or MBIM, without the device ID changing either.
    
    Fix by requiring the vendor-specific class for interface number
    based matching.  Functions of other classes can and should use
    class based matching instead.
    
    Fixes: 03304bcb5ec4 ("net: qmi_wwan: use fixed interface number matching")
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a912d065772c1c1be43efcdb9a67589e3889b5eb
Author: Julian Anastasov <ja@ssi.bg>
Date:   Wed May 2 09:41:19 2018 +0300

    ipv4: fix fnhe usage by non-cached routes
    
    commit 94720e3aee6884d8c8beb678001629da60ec6366 upstream.
    
    Allow some non-cached routes to use non-expired fnhe:
    
    1. ip_del_fnhe: moved above and now called by find_exception.
    The 4.5+ commit deed49df7390 expires fnhe only when caching
    routes. Change that to:
    
    1.1. use fnhe for non-cached local output routes, with the help
    from (2)
    
    1.2. allow __mkroute_input to detect expired fnhe (outdated
    fnhe_gw, for example) when do_cache is false, eg. when itag!=0
    for unicast destinations.
    
    2. __mkroute_output: keep fi to allow local routes with orig_oif != 0
    to use fnhe info even when the new route will not be cached into fnhe.
    After commit 839da4d98960 ("net: ipv4: set orig_oif based on fib
    result for local traffic") it means all local routes will be affected
    because they are not cached. This change is used to solve a PMTU
    problem with IPVS (and probably Netfilter DNAT) setups that redirect
    local clients from target local IP (local route to Virtual IP)
    to new remote IP target, eg. IPVS TUN real server. Loopback has
    64K MTU and we need to create fnhe on the local route that will
    keep the reduced PMTU for the Virtual IP. Without this change
    fnhe_pmtu is updated from ICMP but never exposed to non-cached
    local routes. This includes routes with flowi4_oif!=0 for 4.6+ and
    with flowi4_oif=any for 4.14+).
    
    3. update_or_create_fnhe: make sure fnhe_expires is not 0 for
    new entries
    
    Fixes: 839da4d98960 ("net: ipv4: set orig_oif based on fib result for local traffic")
    Fixes: d6d5e999e5df ("route: do not cache fib route info on local routes with oif")
    Fixes: deed49df7390 ("route: check and remove route cache when we get route")
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 461b95b34d30f69008d9126f25a58a0a36dab7d7
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 2 10:03:30 2018 -0700

    net_sched: fq: take care of throttled flows before reuse
    
    commit 7df40c2673a1307c3260aab6f9d4b9bf97ca8fd7 upstream.
    
    Normally, a socket can not be freed/reused unless all its TX packets
    left qdisc and were TX-completed. However connect(AF_UNSPEC) allows
    this to happen.
    
    With commit fc59d5bdf1e3 ("pkt_sched: fq: clear time_next_packet for
    reused flows") we cleared f->time_next_packet but took no special
    action if the flow was still in the throttled rb-tree.
    
    Since f->time_next_packet is the key used in the rb-tree searches,
    blindly clearing it might break rb-tree integrity. We need to make
    sure the flow is no longer in the rb-tree to avoid this problem.
    
    Fixes: fc59d5bdf1e3 ("pkt_sched: fq: clear time_next_packet for reused flows")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 78216b0b66ba87b2f90a0c02d5eb1a4c5f5a0e03
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed May 2 20:12:22 2018 +0200

    bpf, x64: fix memleak when not converging after image
    
    commit 3aab8884c9eb99189a3569ac4e6b205371c9ac0b upstream.
    
    While reviewing x64 JIT code, I noticed that we leak the prior allocated
    JIT image in the case where proglen != oldproglen during the JIT passes.
    Prior to the commit e0ee9c12157d ("x86: bpf_jit: fix two bugs in eBPF JIT
    compiler") we would just break out of the loop, and using the image as the
    JITed prog since it could only shrink in size anyway. After e0ee9c12157d,
    we would bail out to out_addrs label where we free addrs and jit_data but
    not the image coming from bpf_jit_binary_alloc().
    
    Fixes: e0ee9c12157d ("x86: bpf_jit: fix two bugs in eBPF JIT compiler")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [bwh: Backported to 3.16: Deleted code is slightly different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 744ed911ee3f7554151f25a6a9728324e2f5e2da
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed May 2 13:45:12 2018 +0800

    sctp: fix the issue that the cookie-ack with auth can't get processed
    
    commit ce402f044e4e432c296f90eaabb8dbe8f3624391 upstream.
    
    When auth is enabled for cookie-ack chunk, in sctp_inq_pop, sctp
    processes auth chunk first, then continues to the next chunk in
    this packet if chunk_end + chunk_hdr size < skb_tail_pointer().
    Otherwise, it will go to the next packet or discard this chunk.
    
    However, it missed the fact that cookie-ack chunk's size is equal
    to chunk_hdr size, which couldn't match that check, and thus this
    chunk would not get processed.
    
    This patch fixes it by changing the check to chunk_end + chunk_hdr
    size <= skb_tail_pointer().
    
    Fixes: 26b87c788100 ("net: sctp: fix remote memory pressure from excessive queueing")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a3cb38ea147c7495644f137434294a39e7c67567
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Apr 30 12:00:11 2018 +0200

    clocksource: Initialize cs->wd_list
    
    commit 5b9e886a4af97574ca3ce1147f35545da0e7afc7 upstream.
    
    A number of places relies on list_empty(&cs->wd_list), however the
    list_head does not get initialized. Do so upon registration, such that
    thereafter it is possible to rely on list_empty() correctly reflecting
    the list membership status.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Diego Viola <diego.viola@gmail.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: len.brown@intel.com
    Cc: rjw@rjwysocki.net
    Cc: rui.zhang@intel.com
    Link: https://lkml.kernel.org/r/20180430100344.472662715@infradead.org
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8dd9cd5a0074bc7500967644e8fd9944cddfd6b6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 29 17:41:55 2018 +0200

    USB: serial: visor: handle potential invalid device configuration
    
    commit 4842ed5bfcb9daf6660537d70503c18d38dbdbb8 upstream.
    
    If we get an invalid device configuration from a palm 3 type device, we
    might incorrectly parse things, and we have the potential to crash in
    "interesting" ways.
    
    Fix this up by verifying the size of the configuration passed to us by
    the device, and only if it is correct, will we handle it.
    
    Note that this also fixes an information leak of slab data.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Reviewed-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ johan: add comment about the info leak ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 21adb5bfa9a4ea26ccbe4d2d971ad8351a99ef3a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed May 2 08:48:46 2018 +0200

    ALSA: pcm: Check PCM state at xfern compat ioctl
    
    commit f13876e2c33a657a71bcbb10f767c0951b165020 upstream.
    
    Since snd_pcm_ioctl_xfern_compat() has no PCM state check, it may go
    further and hit the sanity check pcm_sanity_check() when the ioctl is
    called right after open.  It may eventually spew a kernel warning, as
    triggered by syzbot, depending on kconfig.
    
    The lack of PCM state check there was just an oversight.  Although
    it's no real crash, the spurious kernel warning is annoying, so let's
    add the proper check.
    
    Reported-by: syzbot+1dac3a4f6bc9c1c675d4@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b75501089325c2dbbaf301a2f6dc074a0d3530c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 29 18:55:20 2018 -0700

    tcp: fix TCP_REPAIR_QUEUE bound checking
    
    commit bf2acc943a45d2b2e8a9f1a5ddff6b6e43cc69d9 upstream.
    
    syzbot is able to produce a nasty WARN_ON() in tcp_verify_left_out()
    with following C-repro :
    
    socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
    setsockopt(3, SOL_TCP, TCP_REPAIR, [1], 4) = 0
    setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
    bind(3, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
    sendto(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
            1242, MSG_FASTOPEN, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("127.0.0.1")}, 16) = 1242
    setsockopt(3, SOL_TCP, TCP_REPAIR_WINDOW, "\4\0\0@+\205\0\0\377\377\0\0\377\377\377\177\0\0\0\0", 20) = 0
    writev(3, [{"\270", 1}], 1)             = 1
    setsockopt(3, SOL_TCP, TCP_REPAIR_OPTIONS, "\10\0\0\0\0\0\0\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 386) = 0
    writev(3, [{"\210v\r[\226\320t\231qwQ\204\264l\254\t\1\20\245\214p\350H\223\254;\\\37\345\307p$"..., 3144}], 1) = 3144
    
    The 3rd system call looks odd :
    setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
    
    This patch makes sure bound checking is using an unsigned compare.
    
    Fixes: ee9952831cfd ("tcp: Initial repair mode")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f662c848f8c5c1526257e9b69153a2a2f231f632
Author: Bin Liu <b-liu@ti.com>
Date:   Mon Apr 30 11:20:53 2018 -0500

    usb: musb: host: fix potential NULL pointer dereference
    
    commit 2b63f1329df2cd814c1f8353fae4853ace6521d1 upstream.
    
    musb_start_urb() doesn't check the pass-in parameter if it is NULL.  But
    in musb_bulk_nak_timeout() the parameter passed to musb_start_urb() is
    returned from first_qh(), which could be NULL.
    
    So wrap the musb_start_urb() call here with a if condition check to
    avoid the potential NULL pointer dereference.
    
    Fixes: f283862f3b5c ("usb: musb: NAK timeout scheme on bulk TX endpoint")
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef85a17cbe9baeda1484a40b0dfe75cf3d405599
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Thu Mar 15 08:44:24 2018 -0400

    tracepoint: Do not warn on ENOMEM
    
    commit d66a270be3310d7aa132fec0cea77d3d32a0ff75 upstream.
    
    Tracepoint should only warn when a kernel API user does not respect the
    required preconditions (e.g. same tracepoint enabled twice, or called
    to remove a tracepoint that does not exist).
    
    Silence warning in out-of-memory conditions, given that the error is
    returned to the caller.
    
    This ensures that out-of-memory error-injection testing does not trigger
    warnings in tracepoint.c, which were seen by syzbot.
    
    Link: https://lkml.kernel.org/r/001a114465e241a8720567419a72@google.com
    Link: https://lkml.kernel.org/r/001a1140e0de15fc910567464190@google.com
    Link: http://lkml.kernel.org/r/20180315124424.32319-1-mathieu.desnoyers@efficios.com
    
    CC: Peter Zijlstra <peterz@infradead.org>
    CC: Jiri Olsa <jolsa@redhat.com>
    CC: Arnaldo Carvalho de Melo <acme@kernel.org>
    CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    CC: Namhyung Kim <namhyung@kernel.org>
    Fixes: de7b2973903c6 ("tracepoint: Use struct pointer instead of name hash for reg/unreg tracepoints")
    Reported-by: syzbot+9c0d616860575a73166a@syzkaller.appspotmail.com
    Reported-by: syzbot+4e9ae7fa46233396f64d@syzkaller.appspotmail.com
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2cc9870240ae9876eb9888b1a2fea51ae738ac3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 30 10:06:48 2018 +0200

    ALSA: aloop: Add missing cable lock to ctl API callbacks
    
    commit 76b3421b39bd610546931fc923edcf90c18fa395 upstream.
    
    Some control API callbacks in aloop driver are too lazy to take the
    loopback->cable_lock and it results in possible races of cable access
    while it's being freed.  It eventually lead to a UAF, as reported by
    fuzzer recently.
    
    This patch covers such control API callbacks and add the proper mutex
    locks.
    
    Reported-by: DaeRyong Jeong <threeearcat@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b2a8059c3c1ff4d198eaf1308458c14202b18172
Author: Lance Richardson <lance.richardson.net@gmail.com>
Date:   Wed Apr 25 10:21:54 2018 -0400

    net: support compat 64-bit time in {s,g}etsockopt
    
    commit 988bf7243e03ef69238381594e0334a79cef74a6 upstream.
    
    For the x32 ABI, struct timeval has two 64-bit fields. However
    the kernel currently interprets the user-space values used for
    the SO_RCVTIMEO and SO_SNDTIMEO socket options as having a pair
    of 32-bit fields.
    
    When the seconds portion of the requested timeout is less than 2**32,
    the seconds portion of the effective timeout is correct but the
    microseconds portion is zero.  When the seconds portion of the
    requested timeout is zero and the microseconds portion is non-zero,
    the kernel interprets the timeout as zero (never timeout).
    
    Fix by using 64-bit time for SO_RCVTIMEO/SO_SNDTIMEO as required
    for the ABI.
    
    The code included below demonstrates the problem.
    
    Results before patch:
        $ gcc -m64 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 2.008181 seconds
        send time: 2.015985 seconds
    
        $ gcc -m32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 2.016763 seconds
        send time: 2.016062 seconds
    
        $ gcc -mx32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 1.007239 seconds
        send time: 1.023890 seconds
    
    Results after patch:
        $ gcc -m64 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.010062 seconds
        send time: 2.015836 seconds
    
        $ gcc -m32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.013974 seconds
        send time: 2.015981 seconds
    
        $ gcc -mx32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.030257 seconds
        send time: 2.013383 seconds
    
     #include <stdio.h>
     #include <stdlib.h>
     #include <sys/socket.h>
     #include <sys/types.h>
     #include <sys/time.h>
    
     void checkrc(char *str, int rc)
     {
             if (rc >= 0)
                     return;
    
             perror(str);
             exit(1);
     }
    
     static char buf[1024];
     int main(int argc, char **argv)
     {
             int rc;
             int socks[2];
             struct timeval tv;
             struct timeval start, end, delta;
    
             rc = socketpair(AF_UNIX, SOCK_STREAM, 0, socks);
             checkrc("socketpair", rc);
    
             /* set timeout to 1.999999 seconds */
             tv.tv_sec = 1;
             tv.tv_usec = 999999;
             rc = setsockopt(socks[0], SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv);
             rc = setsockopt(socks[0], SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv);
             checkrc("setsockopt", rc);
    
             /* measure actual receive timeout */
             gettimeofday(&start, NULL);
             rc = recv(socks[0], buf, sizeof buf, 0);
             gettimeofday(&end, NULL);
             timersub(&end, &start, &delta);
    
             printf("recv time: %ld.%06ld seconds\n",
                    (long)delta.tv_sec, (long)delta.tv_usec);
    
             /* fill send buffer */
             do {
                     rc = send(socks[0], buf, sizeof buf, 0);
             } while (rc > 0);
    
             /* measure actual send timeout */
             gettimeofday(&start, NULL);
             rc = send(socks[0], buf, sizeof buf, 0);
             gettimeofday(&end, NULL);
             timersub(&end, &start, &delta);
    
             printf("send time: %ld.%06ld seconds\n",
                    (long)delta.tv_sec, (long)delta.tv_usec);
             exit(0);
     }
    
    Fixes: 515c7af85ed9 ("x32: Use compat shims for {g,s}etsockopt")
    Reported-by: Gopal RajagopalSai <gopalsr83@gmail.com>
    Signed-off-by: Lance Richardson <lance.richardson.net@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcfd056fb6385a83aa8ca50aa6a5c5e101b02bcb
Author: Bharat Potnuri <bharat@chelsio.com>
Date:   Fri Apr 27 16:41:16 2018 +0530

    iw_cxgb4: Atomically flush per QP HW CQEs
    
    commit 2df19e19ae90d94fd8724083f161f368a2797537 upstream.
    
    When a CQ is shared by multiple QPs, c4iw_flush_hw_cq() needs to acquire
    corresponding QP lock before moving the CQEs into its corresponding SW
    queue and accessing the SQ contents for completing a WR.
    Ignore CQEs if corresponding QP is already flushed.
    
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Reviewed-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e8e50d7bba9670503ad7e8df1625781ce3673e8a
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Apr 25 17:24:04 2018 +0100

    RDMA/iwpm: fix memory leak on map_info
    
    commit f96416cea7bce9afe619c15e87fced70f93f9098 upstream.
    
    In the cases where iwpm_hash_bucket is NULL and where function
    get_mapinfo_hash_bucket returns NULL then the map_info is never added
    to hash_bucket_head and hence there is a leak of map_info. Fix this
    by nullifying hash_bucket_head and if that is null we know that
    that map_info was not added to hash_bucket_head and hence map_info
    should be free'd.
    
    Detected by CoverityScan, CID#1222481 ("Resource Leak")
    
    Fixes: 30dc5e63d6a5 ("RDMA/core: Add support for iWARP Port Mapper user space service")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit debcd769b4763a2c2c60d0a5229af51dafba1da6
Author: Raju Rangoju <rajur@chelsio.com>
Date:   Mon Apr 23 21:42:37 2018 +0530

    RDMA/cxgb4: release hw resources on device removal
    
    commit 26bff1bd74a4f7417509a83295614e9dab995b2a upstream.
    
    The c4iw_rdev_close() logic was not releasing all the hw
    resources (PBL and RQT memory) during the device removal
    event (driver unload / system reboot). This can cause panic
    in gen_pool_destroy().
    
    The module remove function will wait for all the hw
    resources to be released during the device removal event.
    
    Fixes c12a67fe(iw_cxgb4: free EQ queue memory on last deref)
    Signed-off-by: Raju Rangoju <rajur@chelsio.com>
    Reviewed-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01235231a6ae839e834afe21ffdf50f81b5ed751
Author: SZ Lin (林上智) <sz.lin@moxa.com>
Date:   Thu Apr 26 14:30:13 2018 +0800

    NET: usb: qmi_wwan: add support for ublox R410M PID 0x90b2
    
    commit 9306b38e42cb266f98bff6f6f4c1c652aa79ba45 upstream.
    
    This patch adds support for PID 0x90b2 of ublox R410M.
    
    qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
    [/dev/cdc-wdm0] Device manufacturer retrieved:
            Manufacturer: 'u-blox'
    
    qmicli -d /dev/cdc-wdm0 --dms-get-model
    [/dev/cdc-wdm0] Device model retrieved:
            Model: 'SARA-R410M-02B'
    
    Signed-off-by: SZ Lin (林上智) <sz.lin@moxa.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3810bf43ecfb49f00c54cbcdc4f9632b17c4737f
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 26 14:13:57 2018 +0800

    sctp: handle two v4 addrs comparison in sctp_inet6_cmp_addr
    
    commit d625329b06e46bd20baf9ee40847d11982569204 upstream.
    
    Since sctp ipv6 socket also supports v4 addrs, it's possible to
    compare two v4 addrs in pf v6 .cmp_addr, sctp_inet6_cmp_addr.
    
    However after Commit 1071ec9d453a ("sctp: do not check port in
    sctp_inet6_cmp_addr"), it no longer calls af1->cmp_addr, which
    in this case is sctp_v4_cmp_addr, but calls __sctp_v6_cmp_addr
    where it handles them as two v6 addrs. It would cause a out of
    bounds crash.
    
    syzbot found this crash when trying to bind two v4 addrs to a
    v6 socket.
    
    This patch fixes it by adding the process for two v4 addrs in
    sctp_inet6_cmp_addr.
    
    Fixes: 1071ec9d453a ("sctp: do not check port in sctp_inet6_cmp_addr")
    Reported-by: syzbot+cd494c1dd681d4d93ebb@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a26b9a4b32d3c299083476d500c51d52df867623
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Apr 26 09:17:45 2018 +0200

    ALSA: seq: Fix races at MIDI encoding in snd_virmidi_output_trigger()
    
    commit 8f22e52528cc372b218b5f100457469615c733ce upstream.
    
    The sequencer virmidi code has an open race at its output trigger
    callback: namely, virmidi keeps only one event packet for processing
    while it doesn't protect for concurrent output trigger calls.
    
    snd_virmidi_output_trigger() tries to process the previously
    unfinished event before starting encoding the given MIDI stream, but
    this is done without any lock.  Meanwhile, if another rawmidi stream
    starts the output trigger, this proceeds further, and overwrites the
    event package that is being processed in another thread.  This
    eventually corrupts and may lead to the invalid memory access if the
    event type is like SYSEX.
    
    The fix is just to move the spinlock to cover both the pending event
    and the new stream.
    
    The bug was spotted by a new fuzzer, RaceFuzzer.
    
    BugLink: http://lkml.kernel.org/r/20180426045223.GA15307@dragonet.kaist.ac.kr
    Reported-by: DaeRyong Jeong <threeearcat@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b822bbae88e3831c8279ef2da3fe044601d915bf
Author: Danit Goldberg <danitg@mellanox.com>
Date:   Mon Apr 23 17:01:54 2018 +0300

    IB/mlx5: Use unlimited rate when static rate is not supported
    
    commit 4f32ac2e452c2180cd2df581cbadac183e27ecd0 upstream.
    
    Before the change, if the user passed a static rate value different
    than zero and the FW doesn't support static rate,
    it would end up configuring rate of 2.5 GBps.
    
    Fix this by using rate 0; unlimited, in cases where FW
    doesn't support static rate configuration.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Reviewed-by: Majd Dibbiny <majd@mellanox.com>
    Signed-off-by: Danit Goldberg <danitg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf6f019a59931ddbbacf894da6f5126f7d0c6a39
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Mon Apr 23 17:01:53 2018 +0300

    RDMA/mlx5: Protect from shift operand overflow
    
    commit 002bf2282b2d7318e444dca9ffcb994afc5d5f15 upstream.
    
    Ensure that user didn't supply values too large that can cause overflow.
    
    UBSAN: Undefined behaviour in drivers/infiniband/hw/mlx5/qp.c:263:23
    shift exponent -2147483648 is negative
    CPU: 0 PID: 292 Comm: syzkaller612609 Not tainted 4.16.0-rc1+ #131
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.0-0-g63451fca13-prebuilt.qemu-project.org 04/01/2014 Call
    Trace:
    dump_stack+0xde/0x164
    ubsan_epilogue+0xe/0x81
    set_rq_size+0x7c2/0xa90
    create_qp_common+0xc18/0x43c0
    mlx5_ib_create_qp+0x379/0x1ca0
    create_qp.isra.5+0xc94/0x2260
    ib_uverbs_create_qp+0x21b/0x2a0
    ib_uverbs_write+0xc2c/0x1010
    vfs_write+0x1b0/0x550
    SyS_write+0xc7/0x1a0
    do_syscall_64+0x1aa/0x740
    entry_SYSCALL_64_after_hwframe+0x26/0x9b
    RIP: 0033:0x433569
    RSP: 002b:00007ffc6e62f448 EFLAGS: 00000217 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00000000004002f8 RCX: 0000000000433569
    RDX: 0000000000000070 RSI: 00000000200042c0 RDI: 0000000000000003
    RBP: 00000000006d5018 R08: 00000000004002f8 R09: 00000000004002f8
    R10: 00000000004002f8 R11: 0000000000000217 R12: 0000000000000000
    R13: 000000000040c9f0 R14: 000000000040ca80 R15: 0000000000000006
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Cc: syzkaller <syzkaller@googlegroups.com>
    Reported-by: Noa Osherovich <noaos@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 269e1ce26dc4b56a2eb30fa99cdff984d4c58b6f
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 22:32:21 2018 +0200

    libata: Apply NOLPM quirk for SanDisk SD7UB3Q*G1001 SSDs
    
    commit 184add2ca23ce5edcac0ab9c3b9be13f91e7b567 upstream.
    
    Richard Jones has reported that using med_power_with_dipm on a T450s
    with a Sandisk SD7UB3Q256G1001 SSD (firmware version X2180501) is
    causing the machine to hang.
    
    Switching the LPM to max_performance fixes this, so it seems that
    this Sandisk SSD does not handle LPM well.
    
    Note in the past there have been bug-reports about the following
    Sandisk models not working with min_power, so we may need to extend
    the quirk list in the future: name - firmware
    Sandisk SD6SB2M512G1022I   - X210400
    Sandisk SD6PP4M-256G-1006  - A200906
    
    Cc: Richard W.M. Jones <rjones@redhat.com>
    Reported-and-tested-by: Richard W.M. Jones <rjones@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b19c1ec1337c53aa96fc564f59afa192558119e
Author: Song Liu <songliubraving@fb.com>
Date:   Mon Apr 23 10:21:34 2018 -0700

    tracing: Fix bad use of igrab in trace_uprobe.c
    
    commit 0c92c7a3c5d416f47b32c5f20a611dfeca5d5f2e upstream.
    
    As Miklos reported and suggested:
    
      This pattern repeats two times in trace_uprobe.c and in
      kernel/events/core.c as well:
    
          ret = kern_path(filename, LOOKUP_FOLLOW, &path);
          if (ret)
              goto fail_address_parse;
    
          inode = igrab(d_inode(path.dentry));
          path_put(&path);
    
      And it's wrong.  You can only hold a reference to the inode if you
      have an active ref to the superblock as well (which is normally
      through path.mnt) or holding s_umount.
    
      This way unmounting the containing filesystem while the tracepoint is
      active will give you the "VFS: Busy inodes after unmount..." message
      and a crash when the inode is finally put.
    
      Solution: store path instead of inode.
    
    This patch fixes two instances in trace_uprobe.c. struct path is added to
    struct trace_uprobe to keep the inode and containing mount point
    referenced.
    
    Link: http://lkml.kernel.org/r/20180423172135.4050588-1-songliubraving@fb.com
    
    Fixes: f3f096cfedf8 ("tracing: Provide trace events interface for uprobes")
    Fixes: 33ea4b24277b ("perf/core: Implement the 'perf_uprobe' PMU")
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Howard McLauchlan <hmclauchlan@fb.com>
    Cc: Josef Bacik <jbacik@fb.com>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Acked-by: Miklos Szeredi <mszeredi@redhat.com>
    Reported-by: Miklos Szeredi <miklos@szeredi.hu>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    [bwh: Backported to 3.16:
     - Open-code d_real_inode(), d_is_reg()
     - Drop changes in create_local_trace_uprobe()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3ebb4e8bf6f5ea9cf5ea8d33373437843decef49
Author: Markus Elfring <elfring@users.sourceforge.net>
Date:   Sun Nov 16 14:46:28 2014 +0100

    tracing: Deletion of an unnecessary check before iput()
    
    commit 16a8ef2751801346f1f76a18685b2beb63cd170f upstream.
    
    The iput() function tests whether its argument is NULL and then
    returns immediately. Thus the test around the call is not needed.
    
    This issue was detected by using the Coccinelle software.
    
    Link: http://lkml.kernel.org/r/5468F875.7080907@users.sourceforge.net
    
    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e2e01b26323b3dff61e1163abbfebc4eef57798
Author: Kenny Yu <kennyyu@fb.com>
Date:   Fri Jan 13 08:58:34 2017 -0800

    uprobe: Find last occurrence of ':' when parsing uprobe PATH:OFFSET
    
    commit 6496bb72bf20c1c7e4d6be44dfa663163e709116 upstream.
    
    Previously, `create_trace_uprobe` found the *first* occurence
    of the ':' character when parsing `PATH:OFFSET` for a uprobe.
    However, if the path contains a ':' character, then the function
    would parse the path incorrectly. Even worse, if the path does not
    exist, the subsequent call to `kern_path()` would set `ret` to
    `ENOENT`, leading to very cryptic errno values in user space.
    
    The fix is to find the *last* occurence of ':'.
    
    How to repro:: The write fails with "No such file or directory", suggesting
    incorrectly that the `uprobe_events` file does not exist.
    
      $ mkdir testing && cd testing
      $ cp /bin/bash .
      $ cp /bin/bash ./bash:with:colon
      $ echo "p:uprobes/p__root_testing_bash_0x6 /root/testing/bash:0x6" > /sys/kernel/debug/tracing/uprobe_events     # this works
      $ echo "p:uprobes/p__root_testing_bash_with_colon_0x6 /root/testing/bash:with:colon:0x6" >> /sys/kernel/debug/tracing/uprobe_events     # this doesn't
      -bash: echo: write error: No such file or directory
    
    With the patch:
    
      $ echo "p:uprobes/p__root_testing_bash_0x6 /root/testing/bash:0x6" > /sys/kernel/debug/tracing/uprobe_events     # this still works
      $ echo "p:uprobes/p__root_testing_bash_with_colon_0x6 /root/testing/bash:with:colon:0x6" >> /sys/kernel/debug/tracing/uprobe_events     # this works now too!
      $ cat /sys/kernel/debug/tracing/uprobe_events
      p:uprobes/p__root_testing_bash_0x6 /root/testing/bash:0x0000000000000006
      p:uprobes/p__root_testing_bash_with_colon_0x6 /root/testing/bash:with:colon:0x0000000000000006
    
    Link: http://lkml.kernel.org/r/20170113165834.4081016-1-kennyyu@fb.com
    
    Signed-off-by: Kenny Yu <kennyyu@fb.com>
    Reviewed-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1eb16c36ea2013871c952e412c61d3e0a0ac06f2
Author: Dmitry Safonov <dsafonov@virtuozzo.com>
Date:   Thu Aug 25 18:21:09 2016 +0300

    tracing/uprobe: Drop isdigit() check in create_trace_uprobe
    
    commit 5ba8a4a96f6eaa6af88e24c7794f142217aa3b6f upstream.
    
    It's useless. Before:
      [tracing]# echo 'p:test /a:0x0' >> uprobe_events
      [tracing]# echo 'p:test a:0x0' >> uprobe_events
      -bash: echo: write error: No such file or directory
      [tracing]# echo 'p:test 1:0x0' >> uprobe_events
      -bash: echo: write error: Invalid argument
    
    After:
      [tracing]# echo 'p:test 1:0x0' >> uprobe_events
      -bash: echo: write error: No such file or directory
    
    Link: http://lkml.kernel.org/r/20160825152110.25663-3-dsafonov@virtuozzo.com
    
    Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 33419c086efbdffa3e91834c8aec3ba0b5795fad
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Tue Apr 24 19:10:55 2018 +0200

    libceph: validate con->state at the top of try_write()
    
    commit 9c55ad1c214d9f8c4594ac2c3fa392c1c32431a7 upstream.
    
    ceph_con_workfn() validates con->state before calling try_read() and
    then try_write().  However, try_read() temporarily releases con->mutex,
    notably in process_message() and ceph_con_in_msg_alloc(), opening the
    window for ceph_con_close() to sneak in, close the connection and
    release con->sock.  When try_write() is called on the assumption that
    con->state is still valid (i.e. not STANDBY or CLOSED), a NULL sock
    gets passed to the networking stack:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      IP: selinux_socket_sendmsg+0x5/0x20
    
    Make sure con->state is valid at the top of try_write() and add an
    explicit BUG_ON for this, similar to try_read().
    
    Link: https://tracker.ceph.com/issues/23706
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7c7a0627b27cfb0e638cf03d15dcd8f7fa01df06
Author: Yazen Ghannam <yazen.ghannam@amd.com>
Date:   Tue Apr 3 09:02:28 2018 -0500

    x86/smpboot: Don't use mwait_play_dead() on AMD systems
    
    commit da6fa7ef67f07108a1b0cb9fd9e7fcaabd39c051 upstream.
    
    Recent AMD systems support using MWAIT for C1 state. However, MWAIT will
    not allow deeper cstates than C1 on current systems.
    
    play_dead() expects to use the deepest state available.  The deepest state
    available on AMD systems is reached through SystemIO or HALT. If MWAIT is
    available, it is preferred over the other methods, so the CPU never reaches
    the deepest possible state.
    
    Don't try to use MWAIT to play_dead() on AMD systems. Instead, use CPUIDLE
    to enter the deepest state advertised by firmware. If CPUIDLE is not
    available then fallback to HALT.
    
    Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Link: https://lkml.kernel.org/r/20180403140228.58540-1-Yazen.Ghannam@amd.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6143a3c2ba64d5f88860279fc050b90901ddf283
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 21:00:13 2018 +0300

    virtio_console: reset on out of memory
    
    commit 5c60300d68da32ca77f7f978039dc72bfc78b06b upstream.
    
    When out of memory and we can't add ctrl vq buffers,
    probe fails. Unfortunately the error handling is
    out of spec: it calls del_vqs without bothering
    to reset the device first.
    
    To fix, call the full cleanup function in this case.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit da1ced7c0d74651b94b2eba07a2c0ca2004163c4
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:51:18 2018 +0300

    virtio_console: move removal code
    
    commit aa44ec867030a72e8aa127977e37dec551d8df19 upstream.
    
    Will make it reusable for error handling.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f268061069b414d02d4abb0dfd28bb7d5cbafcc
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:49:04 2018 +0300

    virtio_console: drop custom control queue cleanup
    
    commit 61a8950c5c5708cf2068b29ffde94e454e528208 upstream.
    
    We now cleanup all VQs on device removal - no need
    to handle the control VQ specially.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f92b16b815efe8207090a9b5a767618fd89542ca
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:24:23 2018 +0300

    virtio_console: free buffers after reset
    
    commit a7a69ec0d8e4a58be7db88d33cbfa2912807bb2b upstream.
    
    Console driver is out of spec. The spec says:
            A driver MUST NOT decrement the available idx on a live
            virtqueue (ie. there is no way to “unexpose” buffers).
    and it does exactly that by trying to detach unused buffers
    without doing a device reset first.
    
    Defer detaching the buffers until device unplug.
    
    Of course this means we might get an interrupt for
    a vq without an attached port now. Handle that by
    discarding the consumed buffer.
    
    Reported-by: Tiwei Bie <tiwei.bie@intel.com>
    Fixes: b3258ff1d6 ("virtio: Decrement avail idx on buffer detach")
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e6f6239cbf96824545f3ecdc2f79af5e5fda9d47
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 20:22:40 2018 +0300

    virtio: add ability to iterate over vqs
    
    commit 24a7e4d20783c0514850f24a5c41ede46ab058f0 upstream.
    
    For cleanup it's helpful to be able to simply scan all vqs and discard
    all data. Add an iterator to do that.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c963adcada4b6b8277e7ce7dab11ee52c21443b3
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Apr 20 19:54:23 2018 +0300

    virtio_console: don't tie bufs to a vq
    
    commit 2855b33514d290c51d52d94e25d3ef942cd4d578 upstream.
    
    an allocated buffer doesn't need to be tied to a vq -
    only vq->vdev is ever used. Pass the function the
    just what it needs - the vdev.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c84cc80b249f249a707bc1bc2b1d29c9db9f15c2
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed Apr 25 20:12:31 2018 +0900

    tty: Use __GFP_NOFAIL for tty_ldisc_get()
    
    commit bcdd0ca8cb8730573afebcaae4138f8f4c8eaa20 upstream.
    
    syzbot is reporting crashes triggered by memory allocation fault injection
    at tty_ldisc_get() [1]. As an attempt to handle OOM in a graceful way, we
    have tried commit 5362544bebe85071 ("tty: don't panic on OOM in
    tty_set_ldisc()"). But we reverted that attempt by commit a8983d01f9b7d600
    ("Revert "tty: don't panic on OOM in tty_set_ldisc()"") due to reproducible
    crash. We should spend resource for finding and fixing race condition bugs
    rather than complicate error paths for 2 * sizeof(void *) bytes allocation
    failure.
    
    [1] https://syzkaller.appspot.com/bug?id=489d33fa386453859ead58ff5171d43772b13aa3
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+40b7287c2dc987c48c81@syzkaller.appspotmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vegard Nossum <vegard.nossum@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 31ba7f2f7d0e7de013392731eefbb959d91cd3be
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:04:41 2018 +0200

    ALSA: rme9652: Hardening for potential Spectre v1
    
    commit f526afcd8f71945c23ce581d7864ace93de8a4f7 upstream.
    
    As recently Smatch suggested, one place in RME9652 driver may expand
    the array directly from the user-space value with speculation:
      sound/pci/rme9652/rme9652.c:2074 snd_rme9652_channel_info() warn: potential spectre issue 'rme9652->channel_map' (local cap)
    
    This patch puts array_index_nospec() for hardening against it.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01d4acf218f4721df8d44a9787c794291301917c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:03:14 2018 +0200

    ALSA: hdspm: Hardening for potential Spectre v1
    
    commit 10513142a7114d251670361ad40cba2c61403406 upstream.
    
    As recently Smatch suggested, a couple of places in HDSP MADI driver
    may expand the array directly from the user-space value with
    speculation:
      sound/pci/rme9652/hdspm.c:5717 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_out' (local cap)
      sound/pci/rme9652/hdspm.c:5734 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_in' (local cap)
    
    This patch puts array_index_nospec() for hardening against them.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 14f4dd7cffa3697bbc08d97293dbfa067382ab4f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 08:01:48 2018 +0200

    ALSA: asihpi: Hardening for potential Spectre v1
    
    commit f9d94b57e30fd1575b4935045b32d738668aa74b upstream.
    
    As recently Smatch suggested, a couple of places in ASIHPI driver may
    expand the array directly from the user-space value with speculation:
      sound/pci/asihpi/hpimsginit.c:70 hpi_init_response() warn: potential spectre issue 'res_size' (local cap)
      sound/pci/asihpi/hpioctl.c:189 asihpi_hpi_ioctl() warn: potential spectre issue 'adapters'
    
    This patch puts array_index_nospec() for hardening against them.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc98b76ebc3dd2e1418669671ca3b78782abb9ff
Author: Eliot Blennerhassett <eliot@blennerhassett.gen.nz>
Date:   Thu Nov 20 16:22:57 2014 +1300

    ALSA: asihpi: used parts of message/response are zeroed before use
    
    commit 51e6f47dd2e3463dac6f37128fd7b7cb40c500de upstream.
    
    Signed-off-by: Eliot Blennerhassett <eliot@blennerhassett.gen.nz>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 116c19f0b014bba112393be7224845d79f770fc5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:56:07 2018 +0200

    ALSA: opl3: Hardening for potential Spectre v1
    
    commit 7f054a5bee0987f1e2d4e59daea462421c76f2cb upstream.
    
    As recently Smatch suggested, one place in OPL3 driver may expand the
    array directly from the user-space value with speculation:
      sound/drivers/opl3/opl3_synth.c:476 snd_opl3_set_voice() warn: potential spectre issue 'snd_opl3_regmap'
    
    This patch puts array_index_nospec() for hardening against it.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8b823689f201ed01bf663a89c16f8143d7f3a883
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:50:50 2018 +0200

    ALSA: hda: Hardening for potential Spectre v1
    
    commit 69fa6f19b95597618ab30438a27b67ad93daa7c7 upstream.
    
    As recently Smatch suggested, one place in HD-audio hwdep ioctl codes
    may expand the array directly from the user-space value with
    speculation:
      sound/pci/hda/hda_local.h:467 get_wcaps() warn: potential spectre issue 'codec->wcaps'
    
    As get_wcaps() itself is a fairly frequently called inline function,
    and there is only one single call with a user-space value, we replace
    only the latter one to open-code locally with array_index_nospec()
    hardening in this patch.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: s/core\.//g]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d2de586f9cd1839dd0e98e9887c53b4f4ce89ed9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:45:56 2018 +0200

    ALSA: control: Hardening for potential Spectre v1
    
    commit 088e861edffb84879cf0c0d1b02eda078c3a0ffe upstream.
    
    As recently Smatch suggested, a few places in ALSA control core codes
    may expand the array directly from the user-space value with
    speculation:
    
      sound/core/control.c:1003 snd_ctl_elem_lock() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:1031 snd_ctl_elem_unlock() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:844 snd_ctl_elem_info() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:891 snd_ctl_elem_read() warn: potential spectre issue 'kctl->vd'
      sound/core/control.c:939 snd_ctl_elem_write() warn: potential spectre issue 'kctl->vd'
    
    Although all these seem doing only the first load without further
    reference, we may want to stay in a safer side, so hardening with
    array_index_nospec() would still make sense.
    
    In this patch, we put array_index_nospec() to the common
    snd_ctl_get_ioff*() helpers instead of each caller.  These helpers are
    also referred from some drivers, too, and basically all usages are to
    calculate the array index from the user-space value, hence it's better
    to cover there.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6f40f117653c20388878d4d59460a2f5dce95a11
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:31:54 2018 +0200

    ALSA: seq: oss: Hardening for potential Spectre v1
    
    commit 8d218dd8116695ecda7164f97631c069938aa22e upstream.
    
    As Smatch recently suggested, a few places in OSS sequencer codes may
    expand the array directly from the user-space value with speculation,
    namely there are a significant amount of references to either
    info->ch[] or dp->synths[] array:
    
      sound/core/seq/oss/seq_oss_event.c:315 note_on_event() warn: potential spectre issue 'info->ch' (local cap)
      sound/core/seq/oss/seq_oss_event.c:362 note_off_event() warn: potential spectre issue 'info->ch' (local cap)
      sound/core/seq/oss/seq_oss_synth.c:470 snd_seq_oss_synth_load_patch() warn: potential spectre issue 'dp->synths' (local cap)
      sound/core/seq/oss/seq_oss_event.c:293 note_on_event() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_event.c:353 note_off_event() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_synth.c:506 snd_seq_oss_synth_sysex() warn: potential spectre issue 'dp->synths'
      sound/core/seq/oss/seq_oss_synth.c:580 snd_seq_oss_synth_ioctl() warn: potential spectre issue 'dp->synths'
    
    Although all these seem doing only the first load without further
    reference, we may want to stay in a safer side, so hardening with
    array_index_nospec() would still make sense.
    
    We may put array_index_nospec() at each place, but here we take a
    different approach:
    
    - For dp->synths[], change the helpers to retrieve seq_oss_synthinfo
      pointer directly instead of the array expansion at each place
    
    - For info->ch[], harden in a normal way, as there are only a couple
      of places
    
    As a result, the existing helper, snd_seq_oss_synth_is_valid() is
    replaced with snd_seq_oss_synth_info().  Also, we cover MIDI device
    where a similar array expansion is done, too, although it wasn't
    reported by Smatch.
    
    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e79f31fe781125ca370091d5aafb3abb222f8b8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 07:26:59 2018 +0200

    ALSA: seq: oss: Fix unbalanced use lock for synth MIDI device
    
    commit f5e94b4c6ebdabe0f602d796e0430180927521a0 upstream.
    
    When get_synthdev() is called for a MIDI device, it returns the fixed
    midi_synth_dev without the use refcounting.  OTOH, the caller is
    supposed to unreference unconditionally after the usage, so this would
    lead to unbalanced refcount.
    
    This patch corrects the behavior and keep up the refcount balance also
    for the MIDI synth device.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9fbd4f88fbb01577fda99ed8307480e78a38be58
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Apr 23 17:37:03 2018 -0400

    packet: fix bitfield update race
    
    commit a6361f0ca4b25460f2cdf3235ebe8115f622901e upstream.
    
    Updates to the bitfields in struct packet_sock are not atomic.
    Serialize these read-modify-write cycles.
    
    Move po->running into a separate variable. Its writes are protected by
    po->bind_lock (except for one startup case at packet_create). Also
    replace a textual precondition warning with lockdep annotation.
    
    All others are set only in packet_setsockopt. Serialize these
    updates by holding the socket lock. Analogous to other field updates,
    also hold the lock when testing whether a ring is active (pg_vec).
    
    Fixes: 8dc419447415 ("[PACKET]: Add optional checksum computation for recvmsg")
    Reported-by: DaeRyong Jeong <threeearcat@gmail.com>
    Reported-by: Byoungyoung Lee <byoungyoung@purdue.edu>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d0d52c00355397972742d3c00f37669f81c4b42
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Thu Mar 1 14:39:41 2018 +0100

    mtd: cfi: cmdset_0002: Do not allow read/write to suspend erase block.
    
    commit 7b70eb14392a7cf505f9b358d06c33b5af73d1e7 upstream.
    
    Currently it is possible to read and/or write to suspend EB's.
    Writing /dev/mtdX or /dev/mtdblockX from several processes may
    break the flash state machine.
    
    Taken from cfi_cmdset_0001 driver.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a256e48a12753b732f0a3d6c445e80142ec4b9a
Author: Joakim Tjernlund <joakim.tjernlund@transmode.se>
Date:   Thu Mar 1 14:39:40 2018 +0100

    mtd: cfi: cmdset_0001: Workaround Micron Erase suspend bug.
    
    commit 46a16a2283f9e678a4e26829175e0c37a5191860 upstream.
    
    Some Micron chips does not work well wrt Erase suspend for
    boot blocks. This avoids the issue by not allowing Erase suspend
    for the boot blocks for the 28F00AP30(1GBit) chip.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c2f62b940c273dabf6fb6189e42e12936d0e912
Author: Joakim Tjernlund <joakim.tjernlund@transmode.se>
Date:   Thu Mar 1 14:39:39 2018 +0100

    mtd: cfi: cmdset_0001: Do not allow read/write to suspend erase block.
    
    commit 6510bbc88e3258631831ade49033537081950605 upstream.
    
    Currently it is possible to read and/or write to suspend EB's.
    Writing /dev/mtdX or /dev/mtdblockX from several processes may
    break the flash state machine.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e519a6c47c522656859b5ecb29837ee3ea0345a3
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Apr 24 14:33:37 2018 +0800

    team: fix netconsole setup over team
    
    commit 9cf2f437ca5b39828984064fad213e68fc17ef11 upstream.
    
    The same fix in Commit dbe173079ab5 ("bridge: fix netconsole
    setup over bridge") is also needed for team driver.
    
    While at it, remove the unnecessary parameter *team from
    team_port_enable_netpoll().
    
    v1->v2:
      - fix it in a better way, as does bridge.
    
    Fixes: 0fb52a27a04a ("team: cleanup netpoll clode")
    Reported-by: João Avelino Bellomo Filho <jbellomo@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88dfef9cc40e094a9d6a21f10b3a64d1a49ba257
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 24 11:11:48 2018 +0200

    ALSA: usb-audio: Skip broken EU on Dell dock USB-audio
    
    commit 1d8d6428d1da642ddd75b0be2d1bb1123ff8e017 upstream.
    
    The Dell Dock USB-audio device with 0bda:4014 is behaving notoriously
    bad, and we have already applied some workaround to avoid the firmware
    hiccup.  Yet we still need to skip one thing, the Extension Unit at ID
    4, which doesn't react correctly to the mixer ctl access.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1090658
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit de2995e67ee0bae6de03dec254a1d7bc300467ed
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 23 16:38:27 2018 +0200

    pppoe: check sockaddr length in pppoe_connect()
    
    commit a49e2f5d5fb141884452ddb428f551b123d436b5 upstream.
    
    We must validate sockaddr_len, otherwise userspace can pass fewer data
    than we expect and we end up accessing invalid data.
    
    Fixes: 224cf5ad14c0 ("ppp: Move the PPP drivers")
    Reported-by: syzbot+4f03bdf92fdf9ef5ddab@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8439b2c53ee6bafd0ea630a80996972dde482df5
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 23 16:15:14 2018 +0200

    l2tp: check sockaddr length in pppol2tp_connect()
    
    commit eb1c28c05894a4b1f6b56c5bf072205e64cfa280 upstream.
    
    Check sockaddr_len before dereferencing sp->sa_protocol, to ensure that
    it actually points to valid data.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Reported-by: syzbot+a70ac890b23b1bf29f5c@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0306778621c49c421398577708a3af17b417292d
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 22 18:29:23 2018 -0700

    ipv6: add RTA_TABLE and RTA_PREFSRC to rtm_ipv6_policy
    
    commit aa8f8778493c85fff480cdf8b349b1e1dcb5f243 upstream.
    
    KMSAN reported use of uninit-value that I tracked to lack
    of proper size check on RTA_TABLE attribute.
    
    I also believe RTA_PREFSRC lacks a similar check.
    
    Fixes: 86872cb57925 ("[IPv6] route: FIB6 configuration using struct fib6_config")
    Fixes: c3968a857a6b ("ipv6: RTA_PREFSRC support for ipv6 route source address selection")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7436b7ada628dc32e3a0da7531e4971b50725f15
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Apr 22 19:11:50 2018 +0800

    bonding: do not set slave_dev npinfo before slave_enable_netpoll in bond_enslave
    
    commit ddea788c63094f7c483783265563dd5b50052e28 upstream.
    
    After Commit 8a8efa22f51b ("bonding: sync netpoll code with bridge"), it
    would set slave_dev npinfo in slave_enable_netpoll when enslaving a dev
    if bond->dev->npinfo was set.
    
    However now slave_dev npinfo is set with bond->dev->npinfo before calling
    slave_enable_netpoll. With slave_dev npinfo set, __netpoll_setup called
    in slave_enable_netpoll will not call slave dev's .ndo_netpoll_setup().
    It causes that the lower dev of this slave dev can't set its npinfo.
    
    One way to reproduce it:
    
      # modprobe bonding
      # brctl addbr br0
      # brctl addif br0 eth1
      # ifconfig bond0 192.168.122.1/24 up
      # ifenslave bond0 eth2
      # systemctl restart netconsole
      # ifenslave bond0 br0
      # ifconfig eth2 down
      # systemctl restart netconsole
    
    The netpoll won't really work.
    
    This patch is to remove that slave_dev npinfo setting in bond_enslave().
    
    Fixes: 8a8efa22f51b ("bonding: sync netpoll code with bridge")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 07f8cb31051bb937ba5ca7c3a0f825524f919957
Author: Roland Dreier <roland@purestorage.com>
Date:   Thu Apr 19 08:28:11 2018 -0700

    RDMA/ucma: Allow resolving address w/o specifying source address
    
    commit 09abfe7b5b2f442a85f4c4d59ecf582ad76088d7 upstream.
    
    The RDMA CM will select a source device and address by consulting
    the routing table if no source address is passed into
    rdma_resolve_address().  Userspace will ask for this by passing an
    all-zero source address in the RESOLVE_IP command.  Unfortunately
    the new check for non-zero address size rejects this with EINVAL,
    which breaks valid userspace applications.
    
    Fix this by explicitly allowing a zero address family for the source.
    
    Fixes: 2975d5de6428 ("RDMA/ucma: Check AF family prior resolving address")
    Signed-off-by: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bc392383d9aa0f28abff9f39038b49a8fce06e7
Author: Roland Dreier <roland@purestorage.com>
Date:   Wed Mar 28 11:27:22 2018 -0700

    RDMA/ucma: Introduce safer rdma_addr_size() variants
    
    commit 84652aefb347297aa08e91e283adf7b18f77c2d5 upstream.
    
    There are several places in the ucma ABI where userspace can pass in a
    sockaddr but set the address family to AF_IB.  When that happens,
    rdma_addr_size() will return a size bigger than sizeof struct sockaddr_in6,
    and the ucma kernel code might end up copying past the end of a buffer
    not sized for a struct sockaddr_ib.
    
    Fix this by introducing new variants
    
        int rdma_addr_size_in6(struct sockaddr_in6 *addr);
        int rdma_addr_size_kss(struct __kernel_sockaddr_storage *addr);
    
    that are type-safe for the types used in the ucma ABI and return 0 if the
    size computed is bigger than the size of the type passed in.  We can use
    these new variants to check what size userspace has passed in before
    copying any addresses.
    
    Reported-by: <syzbot+6800425d54ed3ed8135d@syzkaller.appspotmail.com>
    Signed-off-by: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18a92b6a3e014589b82a91a529905542fc2d0d81
Author: Jann Horn <jannh@google.com>
Date:   Fri Apr 20 15:57:30 2018 +0200

    tcp: don't read out-of-bounds opsize
    
    commit 7e5a206ab686f098367b61aca989f5cdfa8114a3 upstream.
    
    The old code reads the "opsize" variable from out-of-bounds memory (first
    byte behind the segment) if a broken TCP segment ends directly after an
    opcode that is neither EOL nor NOP.
    
    The result of the read isn't used for anything, so the worst thing that
    could theoretically happen is a pagefault; and since the physmap is usually
    mostly contiguous, even that seems pretty unlikely.
    
    The following C reproducer triggers the uninitialized read - however, you
    can't actually see anything happen unless you put something like a
    pr_warn() in tcp_parse_md5sig_option() to print the opsize.
    
    ====================================
    #define _GNU_SOURCE
    #include <arpa/inet.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <stdarg.h>
    #include <net/if.h>
    #include <linux/if.h>
    #include <linux/ip.h>
    #include <linux/tcp.h>
    #include <linux/in.h>
    #include <linux/if_tun.h>
    #include <err.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/ioctl.h>
    #include <assert.h>
    
    void systemf(const char *command, ...) {
      char *full_command;
      va_list ap;
      va_start(ap, command);
      if (vasprintf(&full_command, command, ap) == -1)
        err(1, "vasprintf");
      va_end(ap);
      printf("systemf: <<<%s>>>\n", full_command);
      system(full_command);
    }
    
    char *devname;
    
    int tun_alloc(char *name) {
      int fd = open("/dev/net/tun", O_RDWR);
      if (fd == -1)
        err(1, "open tun dev");
      static struct ifreq req = { .ifr_flags = IFF_TUN|IFF_NO_PI };
      strcpy(req.ifr_name, name);
      if (ioctl(fd, TUNSETIFF, &req))
        err(1, "TUNSETIFF");
      devname = req.ifr_name;
      printf("device name: %s\n", devname);
      return fd;
    }
    
    #define IPADDR(a,b,c,d) (((a)<<0)+((b)<<8)+((c)<<16)+((d)<<24))
    
    void sum_accumulate(unsigned int *sum, void *data, int len) {
      assert((len&2)==0);
      for (int i=0; i<len/2; i++) {
        *sum += ntohs(((unsigned short *)data)[i]);
      }
    }
    
    unsigned short sum_final(unsigned int sum) {
      sum = (sum >> 16) + (sum & 0xffff);
      sum = (sum >> 16) + (sum & 0xffff);
      return htons(~sum);
    }
    
    void fix_ip_sum(struct iphdr *ip) {
      unsigned int sum = 0;
      sum_accumulate(&sum, ip, sizeof(*ip));
      ip->check = sum_final(sum);
    }
    
    void fix_tcp_sum(struct iphdr *ip, struct tcphdr *tcp) {
      unsigned int sum = 0;
      struct {
        unsigned int saddr;
        unsigned int daddr;
        unsigned char pad;
        unsigned char proto_num;
        unsigned short tcp_len;
      } fakehdr = {
        .saddr = ip->saddr,
        .daddr = ip->daddr,
        .proto_num = ip->protocol,
        .tcp_len = htons(ntohs(ip->tot_len) - ip->ihl*4)
      };
      sum_accumulate(&sum, &fakehdr, sizeof(fakehdr));
      sum_accumulate(&sum, tcp, tcp->doff*4);
      tcp->check = sum_final(sum);
    }
    
    int main(void) {
      int tun_fd = tun_alloc("inject_dev%d");
      systemf("ip link set %s up", devname);
      systemf("ip addr add 192.168.42.1/24 dev %s", devname);
    
      struct {
        struct iphdr ip;
        struct tcphdr tcp;
        unsigned char tcp_opts[20];
      } __attribute__((packed)) syn_packet = {
        .ip = {
          .ihl = sizeof(struct iphdr)/4,
          .version = 4,
          .tot_len = htons(sizeof(syn_packet)),
          .ttl = 30,
          .protocol = IPPROTO_TCP,
          /* FIXUP check */
          .saddr = IPADDR(192,168,42,2),
          .daddr = IPADDR(192,168,42,1)
        },
        .tcp = {
          .source = htons(1),
          .dest = htons(1337),
          .seq = 0x12345678,
          .doff = (sizeof(syn_packet.tcp)+sizeof(syn_packet.tcp_opts))/4,
          .syn = 1,
          .window = htons(64),
          .check = 0 /*FIXUP*/
        },
        .tcp_opts = {
          /* INVALID: trailing MD5SIG opcode after NOPs */
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 19
        }
      };
      fix_ip_sum(&syn_packet.ip);
      fix_tcp_sum(&syn_packet.ip, &syn_packet.tcp);
      while (1) {
        int write_res = write(tun_fd, &syn_packet, sizeof(syn_packet));
        if (write_res != sizeof(syn_packet))
          err(1, "packet write failed");
      }
    }
    ====================================
    
    Fixes: cfb6eeb4c860 ("[TCP]: MD5 Signature Option (RFC2385) support.")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 05042c35d721871eb66a168df472b032fae4aac2
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Apr 22 18:16:54 2018 -0700

    hwmon: (nct6683) Enable EC access if disabled at boot
    
    commit dbac00f0cf634120d77edee10d25e3f6899d7636 upstream.
    
    On Asrock Z370M Pro4, it was observed that EC access was disabled after
    initially booting the system. As a result, the driver failed to load
    with
            nct6683: EC is disabled
    After a suspend/resume cycle, the driver loaded correctly.
            nct6683: Found NCT6683D or compatible chip at 0x2e:0xa20
            nct6683 nct6683.2592: NCT6683D EC firmware version 1.0 build 07/18/16
    
    Enable EC access after identifying the chip if disabled to fix the problem.
    Warn the user that the data it reports may be unusable, similar to other
    drivers for chips from Nuvoton.
    
    Fixes: 41082d66bfd6f ("hwmon: Driver for NCT6683D")
    Reported-by: Jonathan Sims <jonathan.625266@earthlink.net>
    Tested-by: Jonathan Sims <jonathan.625266@earthlink.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18b95e54fa5acf97134da61b0e5ed5af3e9f4d33
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Thu Apr 5 19:40:16 2018 +0900

    tty: Don't call panic() at tty_ldisc_init()
    
    commit 903f9db10f18f735e62ba447147b6c434b6af003 upstream.
    
    syzbot is reporting kernel panic [1] triggered by memory allocation failure
    at tty_ldisc_get() from tty_ldisc_init(). But since both tty_ldisc_get()
    and caller of tty_ldisc_init() can cleanly handle errors, tty_ldisc_init()
    does not need to call panic() when tty_ldisc_get() failed.
    
    [1] https://syzkaller.appspot.com/bug?id=883431818e036ae6a9981156a64b821110f39187
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0d4116a6a63f241d6daeea90cac52cbe4d87cf2e
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Apr 16 20:06:34 2018 +0900

    tty: Avoid possible error pointer dereference at tty_ldisc_restore().
    
    commit 598c2d41ff44889dd8eced4f117403e472158d85 upstream.
    
    syzbot is reporting crashes [1] triggered by memory allocation failure at
    tty_ldisc_get() from tty_ldisc_restore(). While syzbot stops at WARN_ON()
    due to panic_on_warn == true, panic_on_warn == false will after all trigger
    an OOPS by dereferencing old->ops->num if IS_ERR(old) == true.
    
    We can simplify tty_ldisc_restore() as three calls (old->ops->num, N_TTY,
    N_NULL) to tty_ldisc_failto() in addition to avoiding possible error
    pointer dereference.
    
    If someone reports kernel panic triggered by forcing all memory allocations
    for tty_ldisc_restore() to fail, we can consider adding __GFP_NOFAIL for
    tty_ldisc_restore() case.
    
    [1] https://syzkaller.appspot.com/bug?id=6ac359c61e71d22e06db7f8f88243feb11d927e7
    
    Reported-by: syzbot+40b7287c2dc987c48c81@syzkaller.appspotmail.com
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: tty_name() requires a buffer]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a6a35a2a03c2fecc1d6dbf552a262fa7321b7adf
Author: Alan Cox <alan@llwyncelyn.cymru>
Date:   Fri Jun 2 13:49:30 2017 +0100

    tty: handle the case where we cannot restore a line discipline
    
    commit 8a8dabf2dd68caff842d38057097c23bc514ea6e upstream.
    
    Historically the N_TTY driver could never fail but this has become broken over
    time. Rather than trying to rewrite half the ldisc layer to fix the breakage
    introduce a second level of fallback with an N_NULL ldisc which cannot fail,
    and thus restore the guarantees required by the ldisc layer.
    
    We still try and fail to N_TTY first. It's much more useful to find yourself
    back in your old ldisc (first attempt) or in N_TTY (second attempt), and while
    I'm not aware of any code out there that makes those assumptions it's good to
    drive(r) defensively.
    
    Signed-off-by: Alan Cox <alan@linux.intel.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d377a2199617414a0599f8fe512b42a4967bdc3
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Sun Jul 13 01:44:00 2014 +0200

    drivers: tty: Fix use-after-free in pty_common_install
    
    commit 07584d4a356ef52c084e1e4fedc22858ffc2f8b2 upstream.
    
    In 2c964a2f "drivers: tty: Merge alloc_tty_struct and
    initialize_tty_struct", I messed up the refactorization of
    pty_common_install, causing use-after-free and NULL pointer derefs on
    various error paths. This should fix it.
    
    Reported-by: Julia Lawall <julia.lawall@lip6.fr>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0dc346827709deb0bce5056ffbcb9d2b8521ab68
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Thu Jul 10 21:01:22 2014 +0200

    drivers: tty: Merge alloc_tty_struct and initialize_tty_struct
    
    commit 2c964a2f4191f2229566895f1a0e85f8339f5dd1 upstream.
    
    The two functions alloc_tty_struct and initialize_tty_struct are
    always called together. Merge them into alloc_tty_struct, updating its
    prototype and the only two callers of these functions.
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e0431b808e0c48b9ebe9dae956c4ba2497413d33
Author: David Henningsson <diwic@ubuntu.com>
Date:   Sat Apr 21 14:57:40 2018 +0200

    ALSA: core: Report audio_tstamp in snd_pcm_sync_ptr
    
    commit f853dcaae2f5bbe021161e421bd1576845bae8f6 upstream.
    
    It looks like a simple mistake that this struct member
    was forgotten.
    
    Audio_tstamp isn't used much, and on some archs (such as x86) this
    ioctl is not used by default, so that might be the reason why this
    has slipped for so long.
    
    Fixes: 4eeaaeaea1ce ("ALSA: core: add hooks for audio timestamps")
    Signed-off-by: David Henningsson <diwic@ubuntu.com>
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c3925a3da617f61e050ac8c2fead85ab317e5b4e
Author: Stefan Haberland <sth@linux.vnet.ibm.com>
Date:   Thu Apr 12 13:38:22 2018 +0200

    s390/dasd: fix IO error for newly defined devices
    
    commit 5d27a2bf6e14f5c7d1033ad1e993fcd0eba43e83 upstream.
    
    When a new CKD storage volume is defined at the storage server, Linux
    may be relying on outdated information about that volume, which leads to
    the following errors:
    
    1. Command Reject Errors for minidisk on z/VM:
    
    dasd-eckd.b3193d: 0.0.XXXX: An error occurred in the DASD device driver,
                      reason=09
    dasd(eckd): I/O status report for device 0.0.XXXX:
    dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:02 CS:00
                RC:0
    dasd(eckd): device 0.0.2046: Failing CCW: 00000000XXXXXXXX
    dasd(eckd): Sense(hex)  0- 7: 80 00 00 00 00 00 00 00
    dasd(eckd): Sense(hex)  8-15: 00 00 00 00 00 00 00 00
    dasd(eckd): Sense(hex) 16-23: 00 00 00 00 e1 00 0f 00
    dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 00 00 00
    dasd(eckd): 24 Byte: 0 MSG 0, no MSGb to SYSOP
    
    2. Equipment Check errors on LPAR or for dedicated devices on z/VM:
    
    dasd(eckd): I/O status report for device 0.0.XXXX:
    dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:0E CS:40
                fcxs:01 schxs:00 RC:0
    dasd(eckd): device 0.0.9713: Failing TCW: 00000000XXXXXXXX
    dasd(eckd): Sense(hex)  0- 7: 10 00 00 00 13 58 4d 0f
    dasd(eckd): Sense(hex)  8-15: 67 00 00 00 00 00 00 04
    dasd(eckd): Sense(hex) 16-23: e5 18 05 33 97 01 0f 0f
    dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 04 58 0d
    dasd(eckd): 24 Byte: 0 MSG f, no MSGb to SYSOP
    
    Fix this problem by using the up-to-date information provided during
    online processing via the device specific SNEQ to detect the case of
    outdated LCU data. If there is a difference, perform a re-read of that
    data.
    
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16:
     - Move up assignment of "private"
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffc521314da3c5776139142f453499e723216717
Author: Sebastian Ott <sebott@linux.ibm.com>
Date:   Wed Apr 11 11:21:17 2018 +0200

    s390/cio: update chpid descriptor after resource accessibility event
    
    commit af2e460ade0b0180d0f3812ca4f4f59cc9597f3e upstream.
    
    Channel path descriptors have been seen as something stable (as
    long as the chpid is configured). Recent tests have shown that the
    descriptor can also be altered when the link state of a channel path
    changes. Thus it is necessary to update the descriptor during
    handling of resource accessibility events.
    
    Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
    Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abf605c7814b74377798ae5bbfd5785b440f04e1
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Apr 19 21:54:34 2018 -0700

    llc: fix NULL pointer deref for SOCK_ZAPPED
    
    commit 3a04ce7130a7e5dad4e78d45d50313747f8c830f upstream.
    
    For SOCK_ZAPPED socket, we don't need to care about llc->sap,
    so we should just skip these refcount functions in this case.
    
    Fixes: f7e43672683b ("llc: hold llc_sap before release_sock()")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6d96b4112e56aac39ee62ae0d6bc0078f6b05da9
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Wed Apr 18 11:51:56 2018 -0700

    llc: hold llc_sap before release_sock()
    
    commit f7e43672683b097bb074a8fe7af9bc600a23f231 upstream.
    
    syzbot reported we still access llc->sap in llc_backlog_rcv()
    after it is freed in llc_sap_remove_socket():
    
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1b9/0x294 lib/dump_stack.c:113
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0x242/0x2fe mm/kasan/report.c:412
     __asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:430
     llc_conn_ac_send_sabme_cmd_p_set_x+0x3a8/0x460 net/llc/llc_c_ac.c:785
     llc_exec_conn_trans_actions net/llc/llc_conn.c:475 [inline]
     llc_conn_service net/llc/llc_conn.c:400 [inline]
     llc_conn_state_process+0x4e1/0x13a0 net/llc/llc_conn.c:75
     llc_backlog_rcv+0x195/0x1e0 net/llc/llc_conn.c:891
     sk_backlog_rcv include/net/sock.h:909 [inline]
     __release_sock+0x12f/0x3a0 net/core/sock.c:2335
     release_sock+0xa4/0x2b0 net/core/sock.c:2850
     llc_ui_release+0xc8/0x220 net/llc/af_llc.c:204
    
    llc->sap is refcount'ed and llc_sap_remove_socket() is paired
    with llc_sap_add_socket(). This can be amended by holding its refcount
    before llc_sap_remove_socket() and releasing it after release_sock().
    
    Reported-by: <syzbot+6e181fc95081c2cf9051@syzkaller.appspotmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7572683d5c509459d33c77375ab86dc1cf83404b
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Apr 19 16:20:48 2018 +0200

    l2tp: fix {pppol2tp, l2tp_dfs}_seq_stop() in case of seq_file overflow
    
    commit 5411b6187adf62909e3b998ac782e722904c7487 upstream.
    
    Commit 0e0c3fee3a59 ("l2tp: hold reference on tunnels printed in pppol2tp proc file")
    assumed that if pppol2tp_seq_stop() was called with non-NULL private
    data (the 'v' pointer), then pppol2tp_seq_start() would not be called
    again. It turns out that this isn't guaranteed, and overflowing the
    seq_file's buffer in pppol2tp_seq_show() is a way to get into this
    situation.
    
    Therefore, pppol2tp_seq_stop() needs to reset pd->tunnel, so that
    pppol2tp_seq_start() won't drop a reference again if it gets called.
    We also have to clear pd->session, because the rest of the code expects
    a non-NULL tunnel when pd->session is set.
    
    The l2tp_debugfs module has the same issue. Fix it in the same way.
    
    Fixes: 0e0c3fee3a59 ("l2tp: hold reference on tunnels printed in pppol2tp proc file")
    Fixes: f726214d9b23 ("l2tp: hold reference on tunnels printed in l2tp/tunnels debugfs file")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f5b51bd501841b5ae335f732fbfbb4c65f9ed19e
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Thu Apr 19 12:52:08 2018 +0200

    s390/qeth: handle failure on workqueue creation
    
    commit a936b1ef37ce1e996533878f4b23944f9444dcdf upstream.
    
    Creating the global workqueue during driver init may fail, deal with it.
    Also, destroy the created workqueue on any subsequent error.
    
    Fixes: 0f54761d167f ("qeth: Support VEPA mode")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6e85d0b3d0e3a5c52029049025cdd9db876f7ad
Author: Kamil Lulko <kamilx.lulko@intel.com>
Date:   Thu Apr 19 16:54:02 2018 -0700

    usb: core: Add quirk for HP v222w 16GB Mini
    
    commit 3180dabe08e3653bf0a838553905d88f3773f29c upstream.
    
    Add DELAY_INIT quirk to fix the following problem with HP
    v222w 16GB Mini:
    
    usb 1-3: unable to read config index 0 descriptor/start: -110
    usb 1-3: can't read configurations, error -110
    usb 1-3: can't set config #1, error -110
    
    Signed-off-by: Kamil Lulko <kamilx.lulko@intel.com>
    Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 697502be99621876abdcc54f6d24d90bc063ede2
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Apr 2 14:52:32 2018 -0600

    usbip: vhci_hcd: Fix usb device and sockfd leaks
    
    commit 9020a7efe537856eb3e826ebebdf38a5d07a7857 upstream.
    
    vhci_hcd fails to do reset to put usb device and sockfd in the
    module remove/stop paths. Fix the leak.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2660b8211dfb410fc85328405318ccf17708fb37
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Apr 5 16:31:49 2018 -0600

    usbip: vhci_hcd: check rhport before using in vhci_hub_control()
    
    commit 5b22f676118ff25049382041da0db8012e57c9e8 upstream.
    
    Validate !rhport < 0 before using it to access port_status array.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Drop changes to the SetPortFeature
       USB_PORT_FEAT_{SUSPEND,POWER,BH_PORT_RESET} cases
     - Add the "error" label
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8ad23f7d0b4602bc8160cb3f5edcb1d02ae1aa2
Author: Ravi Chandra Sadineni <ravisadineni@chromium.org>
Date:   Fri Apr 20 11:08:21 2018 -0700

    USB: Increment wakeup count on remote wakeup.
    
    commit 83a62c51ba7b3c0bf45150c4eac7aefc6c785e94 upstream.
    
    On chromebooks we depend on wakeup count to identify the wakeup source.
    But currently USB devices do not increment the wakeup count when they
    trigger the remote wake. This patch addresses the same.
    
    Resume condition is reported differently on USB 2.0 and USB 3.0 devices.
    
    On USB 2.0 devices, a wake capable device, if wake enabled, drives
    resume signal to indicate a remote wake (USB 2.0 spec section 7.1.7.7).
    The upstream facing port then sets C_PORT_SUSPEND bit and reports a
    port change event (USB 2.0 spec section 11.24.2.7.2.3). Thus if a port
    has resumed before driving the resume signal from the host and
    C_PORT_SUSPEND is set, then the device attached to the given port might
    be the reason for the last system wakeup. Increment the wakeup count for
    the same.
    
    On USB 3.0 devices, a function may signal that it wants to exit from device
    suspend by sending a Function Wake Device Notification to the host (USB3.0
    spec section 8.5.6.4) Thus on receiving the Function Wake, increment the
    wakeup count.
    
    Signed-off-by: Ravi Chandra Sadineni <ravisadineni@chromium.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 566860e69880e97badc0c2deaa99dfdc8f537cca
Author: Matthew Wilcox <mawilcox@microsoft.com>
Date:   Fri Apr 20 14:56:20 2018 -0700

    mm/filemap.c: fix NULL pointer in page_cache_tree_insert()
    
    commit abc1be13fd113ddef5e2d807a466286b864caed3 upstream.
    
    f2fs specifies the __GFP_ZERO flag for allocating some of its pages.
    Unfortunately, the page cache also uses the mapping's GFP flags for
    allocating radix tree nodes.  It always masked off the __GFP_HIGHMEM
    flag, and masks off __GFP_ZERO in some paths, but not all.  That causes
    radix tree nodes to be allocated with a NULL list_head, which causes
    backtraces like:
    
      __list_del_entry+0x30/0xd0
      list_lru_del+0xac/0x1ac
      page_cache_tree_insert+0xd8/0x110
    
    The __GFP_DMA and __GFP_DMA32 flags would also be able to sneak through
    if they are ever used.  Fix them all by using GFP_RECLAIM_MASK at the
    innermost location, and remove it from earlier in the callchain.
    
    Link: http://lkml.kernel.org/r/20180411060320.14458-2-willy@infradead.org
    Fixes: 449dd6984d0e ("mm: keep page cache radix tree nodes in check")
    Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
    Reported-by: Chris Fries <cfries@google.com>
    Debugged-by: Minchan Kim <minchan@kernel.org>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Drop change in page_cache_read(), which always passes GFP_KERNEL
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2cfb882e346a4d24c13b12a735df75adb4777bc5
Author: Ian Kent <raven@themaw.net>
Date:   Fri Apr 20 14:55:59 2018 -0700

    autofs: mount point create should honour passed in mode
    
    commit 1e6306652ba18723015d1b4967fe9de55f042499 upstream.
    
    The autofs file system mkdir inode operation blindly sets the created
    directory mode to S_IFDIR | 0555, ingoring the passed in mode, which can
    cause selinux dac_override denials.
    
    But the function also checks if the caller is the daemon (as no-one else
    should be able to do anything here) so there's no point in not honouring
    the passed in mode, allowing the daemon to set appropriate mode when
    required.
    
    Link: http://lkml.kernel.org/r/152361593601.8051.14014139124905996173.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent <raven@themaw.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7773c0bf3e69fb203129f797ba05ad0e5a939e7a
Author: Steve French <smfrench@gmail.com>
Date:   Fri Apr 20 12:19:07 2018 -0500

    cifs: do not allow creating sockets except with SMB1 posix exensions
    
    commit 1d0cffa674cfa7d185a302c8c6850fc50b893bed upstream.
    
    RHBZ: 1453123
    
    Since at least the 3.10 kernel and likely a lot earlier we have
    not been able to create unix domain sockets in a cifs share
    when mounted using the SFU mount option (except when mounted
    with the cifs unix extensions to Samba e.g.)
    Trying to create a socket, for example using the af_unix command from
    xfstests will cause :
    BUG: unable to handle kernel NULL pointer dereference at 00000000
    00000040
    
    Since no one uses or depends on being able to create unix domains sockets
    on a cifs share the easiest fix to stop this vulnerability is to simply
    not allow creation of any other special files than char or block devices
    when sfu is used.
    
    Added update to Ronnie's patch to handle a tcon link leak, and
    to address a buf leak noticed by Gustavo and Colin.
    
    Acked-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    CC:  Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reported-by: Eryu Guan <eguan@redhat.com>
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c16c01b2fed10e9a83212658b3e4ca174e0a70b5
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Apr 20 16:52:50 2018 +0300

    xhci: Fix USB ports for Dell Inspiron 5775
    
    commit 621faf4f6a181b6e012c1d1865213f36f4159b7f upstream.
    
    The Dell Inspiron 5775 is a Raven Ridge. The Enable Slot command timed
    out when a USB device gets plugged:
    [ 212.156326] xhci_hcd 0000:03:00.3: Error while assigning device slot ID
    [ 212.156340] xhci_hcd 0000:03:00.3: Max number of devices this xHCI host supports is 64.
    [ 212.156348] usb usb2-port3: couldn't allocate usb_device
    
    AMD suggests that a delay before xHC suspends can fix the issue.
    
    I can confirm it fixes the issue, so use the suspend delay quirk for
    Raven Ridge's xHC.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f3f4666a9d6da0332e984c2a91198491e87074a
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Apr 19 22:03:08 2018 -0400

    Don't leak MNT_INTERNAL away from internal mounts
    
    commit 16a34adb9392b2fe4195267475ab5b472e55292c upstream.
    
    We want it only for the stuff created by SB_KERNMOUNT mounts, *not* for
    their copies.  As it is, creating a deep stack of bindings of /proc/*/ns/*
    somewhere in a new namespace and exiting yields a stack overflow.
    
    Reported-by: Alexander Aring <aring@mojatatu.com>
    Bisected-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Tested-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Tested-by: Alexander Aring <aring@mojatatu.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96d879e5b6b2807347e154a2959b945cc7860c81
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Apr 19 18:16:15 2018 +0200

    ALSA: rawmidi: Fix missing input substream checks in compat ioctls
    
    commit 8a56ef4f3ffba9ebf4967b61ef600b0a7ba10f11 upstream.
    
    Some rawmidi compat ioctls lack of the input substream checks
    (although they do check only for rfile->output).  This many eventually
    lead to an Oops as NULL substream is passed to the rawmidi core
    functions.
    
    Fix it by adding the proper checks before each function call.
    
    The bug was spotted by syzkaller.
    
    Reported-by: syzbot+f7a0348affc3b67bc617@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c8c5f27c65b455c88467ca1d27ddd3d8627de510
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Tue Apr 3 23:38:45 2018 +0100

    drm/msm: Fix possible null dereference on failure of get_pages()
    
    commit 3976626ea3d2011f8fd3f3a47070a8b792018253 upstream.
    
    Commit 62e3a3e342af changed get_pages() to initialise
    msm_gem_object::pages before trying to initialise msm_gem_object::sgt,
    so that put_pages() would properly clean up pages in the failure
    case.
    
    However, this means that put_pages() now needs to check that
    msm_gem_object::sgt is not null before trying to clean it up, and
    this check was only applied to part of the cleanup code.  Move
    it all into the conditional block.  (Strictly speaking we don't
    need to make the kfree() conditional, but since we can't avoid
    checking for null ourselves we may as well do so.)
    
    Fixes: 62e3a3e342af ("drm/msm: fix leak in failed get_pages")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8dcde37f36dfc26a28701529041b4f5d1e9c7919
Author: Prakash Kamliya <pkamliya@codeaurora.org>
Date:   Mon Dec 4 19:10:15 2017 +0530

    drm/msm: fix leak in failed get_pages
    
    commit 62e3a3e342af3c313ab38603811ecdb1fcc79edb upstream.
    
    get_pages doesn't keep a reference of the pages allocated
    when it fails later in the code path. This can lead to
    a memory leak. Keep reference of the allocated pages so
    that it can be freed when msm_gem_free_object gets called
    later during cleanup.
    
    Signed-off-by: Prakash Kamliya <pkamliya@codeaurora.org>
    Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 808d51236a5c96ee9fe37c1cac464847c07e92e8
Author: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
Date:   Tue Apr 17 17:03:12 2018 +0530

    scsi: sd: Defer spinning up drive while SANITIZE is in progress
    
    commit 505aa4b6a8834a2300971c5220c380c3271ebde3 upstream.
    
    A drive being sanitized will return NOT READY / ASC 0x4 / ASCQ
    0x1b ("LOGICAL UNIT NOT READY. SANITIZE IN PROGRESS").
    
    Prevent spinning up the drive until this condition clears.
    
    [mkp: tweaked commit message]
    
    Signed-off-by: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8787ef3d7bc273663bed0ee26bbfec0a34149fd
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Wed Apr 18 22:54:59 2018 -0400

    scsi: mptsas: Disable WRITE SAME
    
    commit 94e5395d2403c8bc2504a7cbe4c4caaacb7b8b84 upstream.
    
    First generation MPT Fusion controllers can not translate WRITE SAME
    when the attached device is a SATA drive. Disable WRITE SAME support.
    
    Reported-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e87e32c548692f61c4736f262718c6c99200ea7e
Author: Michael Neuling <mikey@neuling.org>
Date:   Wed Apr 11 13:37:58 2018 +1000

    powerpc/eeh: Fix enabling bridge MMIO windows
    
    commit 13a83eac373c49c0a081cbcd137e79210fe78acd upstream.
    
    On boot we save the configuration space of PCIe bridges. We do this so
    when we get an EEH event and everything gets reset that we can restore
    them.
    
    Unfortunately we save this state before we've enabled the MMIO space
    on the bridges. Hence if we have to reset the bridge when we come back
    MMIO is not enabled and we end up taking an PE freeze when the driver
    starts accessing again.
    
    This patch forces the memory/MMIO and bus mastering on when restoring
    bridges on EEH. Ideally we'd do this correctly by saving the
    configuration space writes later, but that will have to come later in
    a larger EEH rewrite. For now we have this simple fix.
    
    The original bug can be triggered on a boston machine by doing:
      echo 0x8000000000000000 > /sys/kernel/debug/powerpc/PCI0001/err_injct_outbound
    On boston, this PHB has a PCIe switch on it.  Without this patch,
    you'll see two EEH events, 1 expected and 1 the failure we are fixing
    here. The second EEH event causes the anything under the PHB to
    disappear (i.e. the i40e eth).
    
    With this patch, only 1 EEH event occurs and devices properly recover.
    
    Fixes: 652defed4875 ("powerpc/eeh: Check PCIe link after reset")
    Reported-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Acked-by: Russell Currey <ruscur@russell.cc>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 41185781f69b972b664b3440334525e6b221b7e5
Author: Matt Redfearn <matt.redfearn@mips.com>
Date:   Tue Apr 17 16:40:01 2018 +0100

    MIPS: uaccess: Add micromips clobbers to bzero invocation
    
    commit b3d7e55c3f886493235bfee08e1e5a4a27cbcce8 upstream.
    
    The micromips implementation of bzero additionally clobbers registers t7
    & t8. Specify this in the clobbers list when invoking bzero.
    
    Fixes: 26c5e07d1478 ("MIPS: microMIPS: Optimise 'memset' core library function.")
    Reported-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/19110/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e4c63743a8d5790de9effcdc3623ccc972190c85
Author: Matt Redfearn <matt.redfearn@mips.com>
Date:   Tue Apr 17 16:40:00 2018 +0100

    MIPS: memset.S: Fix clobber of v1 in last_fixup
    
    commit c96eebf07692e53bf4dd5987510d8b550e793598 upstream.
    
    The label .Llast_fixup\@ is jumped to on page fault within the final
    byte set loop of memset (on < MIPSR6 architectures). For some reason, in
    this fault handler, the v1 register is randomly set to a2 & STORMASK.
    This clobbers v1 for the calling function. This can be observed with the
    following test code:
    
    static int __init __attribute__((optimize("O0"))) test_clear_user(void)
    {
      register int t asm("v1");
      char *test;
      int j, k;
    
      pr_info("\n\n\nTesting clear_user\n");
      test = vmalloc(PAGE_SIZE);
    
      for (j = 256; j < 512; j++) {
        t = 0xa5a5a5a5;
        if ((k = clear_user(test + PAGE_SIZE - 256, j)) != j - 256) {
            pr_err("clear_user (%px %d) returned %d\n", test + PAGE_SIZE - 256, j, k);
        }
        if (t != 0xa5a5a5a5) {
           pr_err("v1 was clobbered to 0x%x!\n", t);
        }
      }
    
      return 0;
    }
    late_initcall(test_clear_user);
    
    Which demonstrates that v1 is indeed clobbered (MIPS64):
    
    Testing clear_user
    v1 was clobbered to 0x1!
    v1 was clobbered to 0x2!
    v1 was clobbered to 0x3!
    v1 was clobbered to 0x4!
    v1 was clobbered to 0x5!
    v1 was clobbered to 0x6!
    v1 was clobbered to 0x7!
    
    Since the number of bytes that could not be set is already contained in
    a2, the andi placing a value in v1 is not necessary and actively
    harmful in clobbering v1.
    
    Reported-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/19109/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b174dbe64623b7f657d88482873055abc1d884b
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Apr 18 11:49:31 2018 -0400

    ext4: set h_journal if there is a failure starting a reserved handle
    
    commit b2569260d55228b617bd82aba6d0db2faeeb4116 upstream.
    
    If ext4 tries to start a reserved handle via
    jbd2_journal_start_reserved(), and the journal has been aborted, this
    can result in a NULL pointer dereference.  This is because the fields
    h_journal and h_transaction in the handle structure share the same
    memory, via a union, so jbd2_journal_start_reserved() will clear
    h_journal before calling start_this_handle().  If this function fails
    due to an aborted handle, h_journal will still be NULL, and the call
    to jbd2_journal_free_reserved() will pass a NULL journal to
    sub_reserve_credits().
    
    This can be reproduced by running "kvm-xfstests -c dioread_nolock
    generic/475".
    
    Fixes: 8f7d89f36829b ("jbd2: transaction reservation support")
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f546b680972bc27c6999b111d107c0442502d1f
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Apr 17 12:07:06 2018 -0700

    KEYS: DNS: limit the length of option strings
    
    commit 9c438d7a3a52dcc2b9ed095cb87d3a5e83cf7e60 upstream.
    
    Adding a dns_resolver key whose payload contains a very long option name
    resulted in that string being printed in full.  This hit the WARN_ONCE()
    in set_precision() during the printk(), because printk() only supports a
    precision of up to 32767 bytes:
    
        precision 1000000 too large
        WARNING: CPU: 0 PID: 752 at lib/vsprintf.c:2189 vsnprintf+0x4bc/0x5b0
    
    Fix it by limiting option strings (combined name + value) to a much more
    reasonable 128 bytes.  The exact limit is arbitrary, but currently the
    only recognized option is formatted as "dnserror=%lu" which fits well
    within this limit.
    
    Also ratelimit the printks.
    
    Reproducer:
    
        perl -e 'print "#", "A" x 1000000, "\x00"' | keyctl padd dns_resolver desc @s
    
    This bug was found using syzkaller.
    
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Fixes: 4a2d789267e0 ("DNS: If the DNS server returns an error, allow that to be cached [ver #2]")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Also stop logging the key serial number
     - Include <linux/ratelimit.h> directly]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7fc0ebb103a566fe514a3bdb679cfa07b037d7bb
Author: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Date:   Tue Apr 17 18:46:14 2018 +0900

    vlan: Fix reading memory beyond skb->tail in skb_vlan_tagged_multi
    
    commit 7ce2367254e84753bceb07327aaf5c953cfce117 upstream.
    
    Syzkaller spotted an old bug which leads to reading skb beyond tail by 4
    bytes on vlan tagged packets.
    This is caused because skb_vlan_tagged_multi() did not check
    skb_headlen.
    
    BUG: KMSAN: uninit-value in eth_type_vlan include/linux/if_vlan.h:283 [inline]
    BUG: KMSAN: uninit-value in skb_vlan_tagged_multi include/linux/if_vlan.h:656 [inline]
    BUG: KMSAN: uninit-value in vlan_features_check include/linux/if_vlan.h:672 [inline]
    BUG: KMSAN: uninit-value in dflt_features_check net/core/dev.c:2949 [inline]
    BUG: KMSAN: uninit-value in netif_skb_features+0xd1b/0xdc0 net/core/dev.c:3009
    CPU: 1 PID: 3582 Comm: syzkaller435149 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:17 [inline]
      dump_stack+0x185/0x1d0 lib/dump_stack.c:53
      kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
      __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
      eth_type_vlan include/linux/if_vlan.h:283 [inline]
      skb_vlan_tagged_multi include/linux/if_vlan.h:656 [inline]
      vlan_features_check include/linux/if_vlan.h:672 [inline]
      dflt_features_check net/core/dev.c:2949 [inline]
      netif_skb_features+0xd1b/0xdc0 net/core/dev.c:3009
      validate_xmit_skb+0x89/0x1320 net/core/dev.c:3084
      __dev_queue_xmit+0x1cb2/0x2b60 net/core/dev.c:3549
      dev_queue_xmit+0x4b/0x60 net/core/dev.c:3590
      packet_snd net/packet/af_packet.c:2944 [inline]
      packet_sendmsg+0x7c57/0x8a10 net/packet/af_packet.c:2969
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg net/socket.c:640 [inline]
      sock_write_iter+0x3b9/0x470 net/socket.c:909
      do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
      do_iter_write+0x30d/0xd40 fs/read_write.c:932
      vfs_writev fs/read_write.c:977 [inline]
      do_writev+0x3c9/0x830 fs/read_write.c:1012
      SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
      SyS_writev+0x56/0x80 fs/read_write.c:1082
      do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x43ffa9
    RSP: 002b:00007fff2cff3948 EFLAGS: 00000217 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043ffa9
    RDX: 0000000000000001 RSI: 0000000020000080 RDI: 0000000000000003
    RBP: 00000000006cb018 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000217 R12: 00000000004018d0
    R13: 0000000000401960 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
      kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
      kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
      kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
      kmsan_slab_alloc+0x11/0x20 mm/kmsan/kmsan.c:321
      slab_post_alloc_hook mm/slab.h:445 [inline]
      slab_alloc_node mm/slub.c:2737 [inline]
      __kmalloc_node_track_caller+0xaed/0x11c0 mm/slub.c:4369
      __kmalloc_reserve net/core/skbuff.c:138 [inline]
      __alloc_skb+0x2cf/0x9f0 net/core/skbuff.c:206
      alloc_skb include/linux/skbuff.h:984 [inline]
      alloc_skb_with_frags+0x1d4/0xb20 net/core/skbuff.c:5234
      sock_alloc_send_pskb+0xb56/0x1190 net/core/sock.c:2085
      packet_alloc_skb net/packet/af_packet.c:2803 [inline]
      packet_snd net/packet/af_packet.c:2894 [inline]
      packet_sendmsg+0x6444/0x8a10 net/packet/af_packet.c:2969
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg net/socket.c:640 [inline]
      sock_write_iter+0x3b9/0x470 net/socket.c:909
      do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
      do_iter_write+0x30d/0xd40 fs/read_write.c:932
      vfs_writev fs/read_write.c:977 [inline]
      do_writev+0x3c9/0x830 fs/read_write.c:1012
      SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
      SyS_writev+0x56/0x80 fs/read_write.c:1082
      do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 58e998c6d239 ("offloading: Force software GSO for multiple vlan tags.")
    Reported-and-tested-by: syzbot+0bbe42c764feafa82c5a@syzkaller.appspotmail.com
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: The unchecked read is in netif_skb_features()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30b45d3cc6efa64695cb052e66200b910e00431b
Author: Matt Redfearn <matt.redfearn@mips.com>
Date:   Tue Apr 17 15:52:21 2018 +0100

    MIPS: memset.S: Fix return of __clear_user from Lpartial_fixup
    
    commit daf70d89f80c6e1772233da9e020114b1254e7e0 upstream.
    
    The __clear_user function is defined to return the number of bytes that
    could not be cleared. From the underlying memset / bzero implementation
    this means setting register a2 to that number on return. Currently if a
    page fault is triggered within the memset_partial block, the value
    loaded into a2 on return is meaningless.
    
    The label .Lpartial_fixup\@ is jumped to on page fault. In order to work
    out how many bytes failed to copy, the exception handler should find how
    many bytes left in the partial block (andi a2, STORMASK), add that to
    the partial block end address (a2), and subtract the faulting address to
    get the remainder. Currently it incorrectly subtracts the partial block
    start address (t1), which has additionally been clobbered to generate a
    jump target in memset_partial. Fix this by adding the block end address
    instead.
    
    This issue was found with the following test code:
          int j, k;
          for (j = 0; j < 512; j++) {
            if ((k = clear_user(NULL, j)) != j) {
               pr_err("clear_user (NULL %d) returned %d\n", j, k);
            }
          }
    Which now passes on Creator Ci40 (MIPS32) and Cavium Octeon II (MIPS64).
    
    Suggested-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/19108/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 943b7d6653dfb46f382ec4c8649f5b33d2583367
Author: Joerg Roedel <jroedel@suse.de>
Date:   Tue Apr 17 15:27:16 2018 +0200

    x86/mm: Prevent kernel Oops in PTDUMP code with HIGHPTE=y
    
    commit d6ef1f194b7569af8b8397876dc9ab07649d63cb upstream.
    
    The walk_pte_level() function just uses __va to get the virtual address of
    the PTE page, but that breaks when the PTE page is not in the direct
    mapping with HIGHPTE=y.
    
    The result is an unhandled kernel paging request at some random address
    when accessing the current_kernel or current_user file.
    
    Use the correct API to access PTE pages.
    
    Fixes: fe770bf0310d ('x86: clean up the page table dumper and add 32-bit support')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: jgross@suse.com
    Cc: JBeulich@suse.com
    Cc: hpa@zytor.com
    Cc: aryabinin@virtuozzo.com
    Cc: kirill.shutemov@linux.intel.com
    Link: https://lkml.kernel.org/r/1523971636-4137-1-git-send-email-joro@8bytes.org
    [bwh: Backported to 3.16:
     - Keep using pte_pgprot() to get protection flags
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b117dd4e47aae56d1f2a74f6b25f6a14925e145a
Author: Dou Liyang <douly.fnst@cn.fujitsu.com>
Date:   Thu Apr 12 09:40:52 2018 +0800

    x86/acpi: Prevent X2APIC id 0xffffffff from being accounted
    
    commit 10daf10ab154e31237a8c07242be3063fb6a9bf4 upstream.
    
    RongQing reported that there are some X2APIC id 0xffffffff in his machine's
    ACPI MADT table, which makes the number of possible CPU inaccurate.
    
    The reason is that the ACPI X2APIC parser has no sanity check for APIC ID
    0xffffffff, which is an invalid id in all APIC types. See "Intel® 64
    Architecture x2APIC Specification", Chapter 2.4.1.
    
    Add a sanity check to acpi_parse_x2apic() which ignores the invalid id.
    
    Reported-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: len.brown@intel.com
    Cc: rjw@rjwysocki.net
    Cc: hpa@zytor.com
    Link: https://lkml.kernel.org/r/20180412014052.25186-1-douly.fnst@cn.fujitsu.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7265c1e8040d4aedfa19c7501bf1b660bde2a870
Author: Xiaoming Gao <gxm.linux.kernel@gmail.com>
Date:   Fri Apr 13 17:48:08 2018 +0800

    x86/tsc: Prevent 32bit truncation in calc_hpet_ref()
    
    commit d3878e164dcd3925a237a20e879432400e369172 upstream.
    
    The TSC calibration code uses HPET as reference. The conversion normalizes
    the delta of two HPET timestamps:
    
        hpetref = ((tshpet1 - tshpet2) * HPET_PERIOD) / 1e6
    
    and then divides the normalized delta of the corresponding TSC timestamps
    by the result to calulate the TSC frequency.
    
        tscfreq = ((tstsc1 - tstsc2 ) * 1e6) / hpetref
    
    This uses do_div() which takes an u32 as the divisor, which worked so far
    because the HPET frequency was low enough that 'hpetref' never exceeded
    32bit.
    
    On Skylake machines the HPET frequency increased so 'hpetref' can exceed
    32bit. do_div() truncates the divisor, which causes the calibration to
    fail.
    
    Use div64_u64() to avoid the problem.
    
    [ tglx: Fixes whitespace mangled patch and rewrote changelog ]
    
    Signed-off-by: Xiaoming Gao <newtongao@tencent.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Cc: hpa@zytor.com
    Link: https://lkml.kernel.org/r/38894564-4fc9-b8ec-353f-de702839e44e@gmail.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit acb7d63b0cedec3bb8eb772ab633828826f9969e
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Apr 4 14:48:24 2018 +0100

    KVM: arm/arm64: Close VMID generation race
    
    commit f0cf47d939d0b4b4f660c5aaa4276fa3488f3391 upstream.
    
    Before entering the guest, we check whether our VMID is still
    part of the current generation. In order to avoid taking a lock,
    we start with checking that the generation is still current, and
    only if not current do we take the lock, recheck, and update the
    generation and VMID.
    
    This leaves open a small race: A vcpu can bump up the global
    generation number as well as the VM's, but has not updated
    the VMID itself yet.
    
    At that point another vcpu from the same VM comes in, checks
    the generation (and finds it not needing anything), and jumps
    into the guest. At this point, we end-up with two vcpus belonging
    to the same VM running with two different VMIDs. Eventually, the
    VMID used by the second vcpu will get reassigned, and things will
    really go wrong...
    
    A simple solution would be to drop this initial check, and always take
    the lock. This is likely to cause performance issues. A middle ground
    is to convert the spinlock to a rwlock, and only take the read lock
    on the fast path. If the check fails at that point, drop it and
    acquire the write lock, rechecking the condition.
    
    This ensures that the above scenario doesn't occur.
    
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Tested-by: Shannon Zhao <zhaoshenglong@huawei.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1fc010f66c5d4dafabdbc7d5be265df0edb706cc
Author: Matt Redfearn <matt.redfearn@mips.com>
Date:   Thu Mar 29 10:28:23 2018 +0100

    MIPS: memset.S: EVA & fault support for small_memset
    
    commit 8a8158c85e1e774a44fbe81106fa41138580dfd1 upstream.
    
    The MIPS kernel memset / bzero implementation includes a small_memset
    branch which is used when the region to be set is smaller than a long (4
    bytes on 32bit, 8 bytes on 64bit). The current small_memset
    implementation uses a simple store byte loop to write the destination.
    There are 2 issues with this implementation:
    
    1. When EVA mode is active, user and kernel address spaces may overlap.
    Currently the use of the sb instruction means kernel mode addressing is
    always used and an intended write to userspace may actually overwrite
    some critical kernel data.
    
    2. If the write triggers a page fault, for example by calling
    __clear_user(NULL, 2), instead of gracefully handling the fault, an OOPS
    is triggered.
    
    Fix these issues by replacing the sb instruction with the EX() macro,
    which will emit EVA compatible instuctions as required. Additionally
    implement a fault fixup for small_memset which sets a2 to the number of
    bytes that could not be cleared (as defined by __clear_user).
    
    Reported-by: Chuanhua Lei <chuanhua.lei@intel.com>
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/18975/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b61cf47b6129f2b7e8294b133cacbe00cbbaf86
Author: Shamir Rabinovitch <shamir.rabinovitch@oracle.com>
Date:   Tue Apr 10 10:26:23 2018 -0400

    RDMA/ucma: ucma_context reference leak in error path
    
    commit ef95a90ae6f4f21990e1f7ced6719784a409e811 upstream.
    
    Validating input parameters should be done before getting the cm_id
    otherwise it can leak a cm_id reference.
    
    Fixes: 6a21dfc0d0db ("RDMA/ucma: Limit possible option size")
    Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f510433b0d7fb8811dab2474c15fe17443af784b
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Apr 10 09:30:27 2018 +0200

    netfilter: nf_tables: can't fail after linking rule into active rule list
    
    commit 569ccae68b38654f04b6842b034aa33857f605fe upstream.
    
    rules in nftables a free'd using kfree, but protected by rcu, i.e. we
    must wait for a grace period to elapse.
    
    Normal removal patch does this, but nf_tables_newrule() doesn't obey
    this rule during error handling.
    
    It calls nft_trans_rule_add() *after* linking rule, and, if that
    fails to allocate memory, it unlinks the rule and then kfree() it --
    this is unsafe.
    
    Switch order -- first add rule to transaction list, THEN link it
    to public list.
    
    Note: nft_trans_rule_add() uses GFP_KERNEL; it will not fail so this
    is not a problem in practice (spotted only during code review).
    
    Fixes: 0628b123c96d12 ("netfilter: nfnetlink: add batch support and use it from nf_tables")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16: Some function names are different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 44718208e2758367df6c1045477d0d5b7d566134
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 15 17:52:04 2018 -0700

    net: af_packet: fix race in PACKET_{R|T}X_RING
    
    commit 5171b37d959641bbc619781caf62e61f7b940871 upstream.
    
    In order to remove the race caught by syzbot [1], we need
    to lock the socket before using po->tp_version as this could
    change under us otherwise.
    
    This means lock_sock() and release_sock() must be done by
    packet_set_ring() callers.
    
    [1] :
    BUG: KMSAN: uninit-value in packet_set_ring+0x1254/0x3870 net/packet/af_packet.c:4249
    CPU: 0 PID: 20195 Comm: syzkaller707632 Not tainted 4.16.0+ #83
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     packet_set_ring+0x1254/0x3870 net/packet/af_packet.c:4249
     packet_setsockopt+0x12c6/0x5a90 net/packet/af_packet.c:3662
     SYSC_setsockopt+0x4b8/0x570 net/socket.c:1849
     SyS_setsockopt+0x76/0xa0 net/socket.c:1828
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x449099
    RSP: 002b:00007f42b5307ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 000000000070003c RCX: 0000000000449099
    RDX: 0000000000000005 RSI: 0000000000000107 RDI: 0000000000000003
    RBP: 0000000000700038 R08: 000000000000001c R09: 0000000000000000
    R10: 00000000200000c0 R11: 0000000000000246 R12: 0000000000000000
    R13: 000000000080eecf R14: 00007f42b53089c0 R15: 0000000000000001
    
    Local variable description: ----req_u@packet_setsockopt
    Variable was created at:
     packet_setsockopt+0x13f/0x5a90 net/packet/af_packet.c:3612
     SYSC_setsockopt+0x4b8/0x570 net/socket.c:1849
    
    Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: PACKET_VNET_HDR is incompatible with
     PACKET_{TX,RX}_RING; fix up the check for that as well]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e4594c74ebe9ae1fafa9389e412661c730fd6ad
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Apr 13 13:59:25 2018 +0200

    team: avoid adding twice the same option to the event list
    
    commit 4fb0534fb7bbc2346ba7d3a072b538007f4135a5 upstream.
    
    When parsing the options provided by the user space,
    team_nl_cmd_options_set() insert them in a temporary list to send
    multiple events with a single message.
    While each option's attribute is correctly validated, the code does
    not check for duplicate entries before inserting into the event
    list.
    
    Exploiting the above, the syzbot was able to trigger the following
    splat:
    
    kernel BUG at lib/list_debug.c:31!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 4466 Comm: syzkaller556835 Not tainted 4.16.0+ #17
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:__list_add_valid+0xaa/0xb0 lib/list_debug.c:29
    RSP: 0018:ffff8801b04bf248 EFLAGS: 00010286
    RAX: 0000000000000058 RBX: ffff8801c8fc7a90 RCX: 0000000000000000
    RDX: 0000000000000058 RSI: ffffffff815fbf41 RDI: ffffed0036097e3f
    RBP: ffff8801b04bf260 R08: ffff8801b0b2a700 R09: ffffed003b604f90
    R10: ffffed003b604f90 R11: ffff8801db027c87 R12: ffff8801c8fc7a90
    R13: ffff8801c8fc7a90 R14: dffffc0000000000 R15: 0000000000000000
    FS:  0000000000b98880(0000) GS:ffff8801db000000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000043fc30 CR3: 00000001afe8e000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      __list_add include/linux/list.h:60 [inline]
      list_add include/linux/list.h:79 [inline]
      team_nl_cmd_options_set+0x9ff/0x12b0 drivers/net/team/team.c:2571
      genl_family_rcv_msg+0x889/0x1120 net/netlink/genetlink.c:599
      genl_rcv_msg+0xc6/0x170 net/netlink/genetlink.c:624
      netlink_rcv_skb+0x172/0x440 net/netlink/af_netlink.c:2448
      genl_rcv+0x28/0x40 net/netlink/genetlink.c:635
      netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
      netlink_unicast+0x58b/0x740 net/netlink/af_netlink.c:1336
      netlink_sendmsg+0x9f0/0xfa0 net/netlink/af_netlink.c:1901
      sock_sendmsg_nosec net/socket.c:629 [inline]
      sock_sendmsg+0xd5/0x120 net/socket.c:639
      ___sys_sendmsg+0x805/0x940 net/socket.c:2117
      __sys_sendmsg+0x115/0x270 net/socket.c:2155
      SYSC_sendmsg net/socket.c:2164 [inline]
      SyS_sendmsg+0x29/0x30 net/socket.c:2162
      do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x4458b9
    RSP: 002b:00007ffd1d4a7278 EFLAGS: 00000213 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 000000000000001b RCX: 00000000004458b9
    RDX: 0000000000000010 RSI: 0000000020000d00 RDI: 0000000000000004
    RBP: 00000000004a74ed R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000213 R12: 00007ffd1d4a7348
    R13: 0000000000402a60 R14: 0000000000000000 R15: 0000000000000000
    Code: 75 e8 eb a9 48 89 f7 48 89 75 e8 e8 d1 85 7b fe 48 8b 75 e8 eb bb 48
    89 f2 48 89 d9 4c 89 e6 48 c7 c7 a0 84 d8 87 e8 ea 67 28 fe <0f> 0b 0f 1f
    40 00 48 b8 00 00 00 00 00 fc ff df 55 48 89 e5 41
    RIP: __list_add_valid+0xaa/0xb0 lib/list_debug.c:29 RSP: ffff8801b04bf248
    
    This changeset addresses the avoiding list_add() if the current
    option is already present in the event list.
    
    Reported-and-tested-by: syzbot+4d4af685432dc0e56c91@syzkaller.appspotmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Fixes: 2fcdb2c9e659 ("team: allow to send multiple set events in one message")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit adc38d397aebfb8ff21a7857f2910d245c04ca0e
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Mon Apr 16 23:25:19 2018 +1000

    powerpc/lib: Fix off-by-one in alternate feature patching
    
    commit b8858581febb050688e276b956796bc4a78299ed upstream.
    
    When we patch an alternate feature section, we have to adjust any
    relative branches that branch out of the alternate section.
    
    But currently we have a bug if we have a branch that points to past
    the last instruction of the alternate section, eg:
    
      FTR_SECTION_ELSE
      1:     b       2f
             or      6,6,6
      2:
      ALT_FTR_SECTION_END(...)
             nop
    
    This will result in a relative branch at 1 with a target that equals
    the end of the alternate section.
    
    That branch does not need adjusting when it's moved to the non-else
    location. Currently we do adjust it, resulting in a branch that goes
    off into the link-time location of the else section, which is junk.
    
    The fix is to not patch branches that have a target == end of the
    alternate section.
    
    Fixes: d20fe50a7b3c ("KVM: PPC: Book3S HV: Branch inside feature section")
    Fixes: 9b1a735de64c ("powerpc: Add logic to patch alternative feature sections")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 28c3f0d955251a9e2ed525605f9a65cf757bc58f
Author: Vasyl Vavrychuk <vvavrychuk@gmail.com>
Date:   Wed Apr 11 17:05:13 2018 +0300

    USB: serial: ftdi_sio: use jtag quirk for Arrow USB Blaster
    
    commit 470b5d6f0cf4674be2d1ec94e54283a1770b6a1a upstream.
    
    Arrow USB Blaster integrated on MAX1000 board uses the same vendor ID
    (0x0403) and product ID (0x6010) as the "original" FTDI device.
    
    This patch avoids picking up by ftdi_sio of the first interface of this
    USB device. After that this device can be used by Arrow user-space JTAG
    driver.
    
    Signed-off-by: Vasyl Vavrychuk <vvavrychuk@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 74dff24324e7abd8120b5399d78e87f764b4f1d4
Author: Kyle Roeschley <kyle.roeschley@ni.com>
Date:   Mon Apr 9 10:23:55 2018 -0500

    USB: serial: cp210x: add ID for NI USB serial console
    
    commit 1e23aace21515a8f7615a1de016c0ea8d4e0cc6e upstream.
    
    Added the USB VID and PID for the USB serial console on some National
    Instruments devices.
    
    Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4943b10f0cd71267d6a2c325df382901fad02bd2
Author: Yan, Zheng <zyan@redhat.com>
Date:   Mon Mar 26 16:46:39 2018 +0800

    ceph: always update atime/mtime/ctime for new inode
    
    commit ffdeec7aa41aa61ca4ee68fddf4669df9ce661d1 upstream.
    
    For new inode, atime/mtime/ctime are uninitialized.  Don't compare
    against them.
    
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 04d482bfdbd763358914922d3126c7b17ad4eddc
Author: Collin May <collin@collinswebsite.com>
Date:   Sat Apr 7 14:32:48 2018 -0700

    USB: serial: simple: add libtransistor console
    
    commit fe710508b6ba9d28730f3021fed70e7043433b2e upstream.
    
    Add simple driver for libtransistor USB console.
    This device is implemented in software:
    https://github.com/reswitched/libtransistor/blob/development/lib/usb_serial.c
    
    Signed-off-by: Collin May <collin@collinswebsite.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ccfbec3dc8607103e9211c80fd338fc75568c454
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Apr 3 01:15:46 2018 -0400

    rpc_pipefs: fix double-dput()
    
    commit 4a3877c4cedd95543f8726b0a98743ed8db0c0fb upstream.
    
    if we ever hit rpc_gssd_dummy_depopulate() dentry passed to
    it has refcount equal to 1.  __rpc_rmpipe() drops it and
    dput() done after that hits an already freed dentry.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68678f8cc31adb5ffa4153b4ca5d9c364c913d86
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Apr 2 23:56:44 2018 -0400

    jffs2_kill_sb(): deal with failed allocations
    
    commit c66b23c2840446a82c389e4cb1a12eb2a71fa2e4 upstream.
    
    jffs2_fill_super() might fail to allocate jffs2_sb_info;
    jffs2_kill_sb() must survive that.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4275985f9f2e8b039f01e3ddea8d22256a7a5961
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Apr 2 23:50:31 2018 -0400

    hypfs_kill_super(): deal with failed allocations
    
    commit a24cd490739586a7d2da3549a1844e1d7c4f4fc4 upstream.
    
    hypfs_fill_super() might fail to allocate sbi; hypfs_kill_super()
    should not oops on that.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8e8c0ed18cd768eace82be30715b0c2503c4835b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Apr 13 15:35:13 2018 -0700

    resource: fix integer overflow at reallocation
    
    commit 60bb83b81169820c691fbfa33a6a4aef32aa4b0b upstream.
    
    We've got a bug report indicating a kernel panic at booting on an x86-32
    system, and it turned out to be the invalid PCI resource assigned after
    reallocation.  __find_resource() first aligns the resource start address
    and resets the end address with start+size-1 accordingly, then checks
    whether it's contained.  Here the end address may overflow the integer,
    although resource_contains() still returns true because the function
    validates only start and end address.  So this ends up with returning an
    invalid resource (start > end).
    
    There was already an attempt to cover such a problem in the commit
    47ea91b4052d ("Resource: fix wrong resource window calculation"), but
    this case is an overseen one.
    
    This patch adds the validity check of the newly calculated resource for
    avoiding the integer overflow problem.
    
    Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1086739
    Link: http://lkml.kernel.org/r/s5hpo37d5l8.wl-tiwai@suse.de
    Fixes: 23c570a67448 ("resource: ability to resize an allocated resource")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Reported-by: Michael Henders <hendersm@shaw.ca>
    Tested-by: Michael Henders <hendersm@shaw.ca>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ram Pai <linuxram@us.ibm.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c712ed63e9b33d9a282fbd92ce25c64918c3129f
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Apr 12 20:50:35 2018 +0200

    l2tp: hold reference on tunnels printed in l2tp/tunnels debugfs file
    
    commit f726214d9b23e5fce8c11937577a289a3202498f upstream.
    
    Use l2tp_tunnel_get_nth() instead of l2tp_tunnel_find_nth(), to be safe
    against concurrent tunnel deletion.
    
    Use the same mechanism as in l2tp_ppp.c for dropping the reference
    taken by l2tp_tunnel_get_nth(). That is, drop the reference just
    before looking up the next tunnel. In case of error, drop the last
    accessed tunnel in l2tp_dfs_seq_stop().
    
    That was the last use of l2tp_tunnel_find_nth().
    
    Fixes: 0ad6614048cf ("l2tp: Add debugfs files for dumping l2tp debug info")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f6104e9ae04462523c372928b1173766a771ef95
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Apr 12 20:50:34 2018 +0200

    l2tp: hold reference on tunnels printed in pppol2tp proc file
    
    commit 0e0c3fee3a59a387aeecc4fca6f3a2e9615a5443 upstream.
    
    Use l2tp_tunnel_get_nth() instead of l2tp_tunnel_find_nth(), to be safe
    against concurrent tunnel deletion.
    
    Unlike sessions, we can't drop the reference held on tunnels in
    pppol2tp_seq_show(). Tunnels are reused across several calls to
    pppol2tp_seq_start() when iterating over sessions. These iterations
    need the tunnel for accessing the next session. Therefore the only safe
    moment for dropping the reference is just before searching for the next
    tunnel.
    
    Normally, the last invocation of pppol2tp_next_tunnel() doesn't find
    any new tunnel, so it drops the last tunnel without taking any new
    reference. However, in case of error, pppol2tp_seq_stop() is called
    directly, so we have to drop the reference there.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ed933fb9786f07fa98d13fc9f2ad0868d8a77aeb
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Apr 12 20:50:33 2018 +0200

    l2tp: hold reference on tunnels in netlink dumps
    
    commit 5846c131c39b6d0add36ec19dc8650700690f930 upstream.
    
    l2tp_tunnel_find_nth() is unsafe: no reference is held on the returned
    tunnel, therefore it can be freed whenever the caller uses it.
    This patch defines l2tp_tunnel_get_nth() which works similarly, but
    also takes a reference on the returned tunnel. The caller then has to
    drop it after it stops using the tunnel.
    
    Convert netlink dumps to make them safe against concurrent tunnel
    deletion.
    
    Fixes: 309795f4bec2 ("l2tp: Add netlink control API for L2TP")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 11cc93ca42e0f2a9d6b3cf7f8c732f5e0bfb28df
Author: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date:   Thu Apr 12 10:46:55 2018 +0200

    net: fix deadlock while clearing neighbor proxy table
    
    commit 53b76cdf7e8fecec1d09e38aad2f8579882591a8 upstream.
    
    When coming from ndisc_netdev_event() in net/ipv6/ndisc.c,
    neigh_ifdown() is called with &nd_tbl, locking this while
    clearing the proxy neighbor entries when eg. deleting an
    interface. Calling the table's pndisc_destructor() with the
    lock still held, however, can cause a deadlock: When a
    multicast listener is available an IGMP packet of type
    ICMPV6_MGM_REDUCTION may be sent out. When reaching
    ip6_finish_output2(), if no neighbor entry for the target
    address is found, __neigh_create() is called with &nd_tbl,
    which it'll want to lock.
    
    Move the elements into their own list, then unlock the table
    and perform the destruction.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199289
    Fixes: 6fd6ce2056de ("ipv6: Do not depend on rt->n in ip6_finish_output2().")
    Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Move the (useless) call to release_net() as well
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a97380aeb387c147bd44e82e82e77f4d2e96614d
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 12 14:24:31 2018 +0800

    sctp: do not check port in sctp_inet6_cmp_addr
    
    commit 1071ec9d453a38023579714b64a951a2fb982071 upstream.
    
    pf->cmp_addr() is called before binding a v6 address to the sock. It
    should not check ports, like in sctp_inet_cmp_addr.
    
    But sctp_inet6_cmp_addr checks the addr by invoking af(6)->cmp_addr,
    sctp_v6_cmp_addr where it also compares the ports.
    
    This would cause that setsockopt(SCTP_SOCKOPT_BINDX_ADD) could bind
    multiple duplicated IPv6 addresses after Commit 40b4f0fd74e4 ("sctp:
    lack the check for ports in sctp_v6_cmp_addr").
    
    This patch is to remove af->cmp_addr called in sctp_inet6_cmp_addr,
    but do the proper check for both v6 addrs and v4mapped addrs.
    
    v1->v2:
      - define __sctp_v6_cmp_addr to do the common address comparison
        used for both pf and af v6 cmp_addr.
    
    Fixes: 40b4f0fd74e4 ("sctp: lack the check for ports in sctp_v6_cmp_addr")
    Reported-by: Jianwen Ji <jiji@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a09574ab0f1dc4381295e30d635bd3aed2d10f5
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 11 14:36:28 2018 -0700

    tcp: md5: reject TCP_MD5SIG or TCP_MD5SIG_EXT on established sockets
    
    commit 7212303268918b9a203aebeacfdbd83b5e87b20d upstream.
    
    syzbot/KMSAN reported an uninit-value in tcp_parse_options() [1]
    
    I believe this was caused by a TCP_MD5SIG being set on live
    flow.
    
    This is highly unexpected, since TCP option space is limited.
    
    For instance, presence of TCP MD5 option automatically disables
    TCP TimeStamp option at SYN/SYNACK time, which we can not do
    once flow has been established.
    
    Really, adding/deleting an MD5 key only makes sense on sockets
    in CLOSE or LISTEN state.
    
    [1]
    BUG: KMSAN: uninit-value in tcp_parse_options+0xd74/0x1a30 net/ipv4/tcp_input.c:3720
    CPU: 1 PID: 6177 Comm: syzkaller192004 Not tainted 4.16.0+ #83
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     tcp_parse_options+0xd74/0x1a30 net/ipv4/tcp_input.c:3720
     tcp_fast_parse_options net/ipv4/tcp_input.c:3858 [inline]
     tcp_validate_incoming+0x4f1/0x2790 net/ipv4/tcp_input.c:5184
     tcp_rcv_established+0xf60/0x2bb0 net/ipv4/tcp_input.c:5453
     tcp_v4_do_rcv+0x6cd/0xd90 net/ipv4/tcp_ipv4.c:1469
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_sendmsg+0xd6/0x100 net/ipv4/tcp.c:1464
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     SYSC_sendto+0x6c3/0x7e0 net/socket.c:1747
     SyS_sendto+0x8a/0xb0 net/socket.c:1715
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x448fe9
    RSP: 002b:00007fd472c64d38 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00000000006e5a30 RCX: 0000000000448fe9
    RDX: 000000000000029f RSI: 0000000020a88f88 RDI: 0000000000000004
    RBP: 00000000006e5a34 R08: 0000000020e68000 R09: 0000000000000010
    R10: 00000000200007fd R11: 0000000000000216 R12: 0000000000000000
    R13: 00007fff074899ef R14: 00007fd472c659c0 R15: 0000000000000009
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmsan_slab_alloc+0x11/0x20 mm/kmsan/kmsan.c:321
     slab_post_alloc_hook mm/slab.h:445 [inline]
     slab_alloc_node mm/slub.c:2737 [inline]
     __kmalloc_node_track_caller+0xaed/0x11c0 mm/slub.c:4369
     __kmalloc_reserve net/core/skbuff.c:138 [inline]
     __alloc_skb+0x2cf/0x9f0 net/core/skbuff.c:206
     alloc_skb include/linux/skbuff.h:984 [inline]
     tcp_send_ack+0x18c/0x910 net/ipv4/tcp_output.c:3624
     __tcp_ack_snd_check net/ipv4/tcp_input.c:5040 [inline]
     tcp_ack_snd_check net/ipv4/tcp_input.c:5053 [inline]
     tcp_rcv_established+0x2103/0x2bb0 net/ipv4/tcp_input.c:5469
     tcp_v4_do_rcv+0x6cd/0xd90 net/ipv4/tcp_ipv4.c:1469
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_sendmsg+0xd6/0x100 net/ipv4/tcp.c:1464
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     SYSC_sendto+0x6c3/0x7e0 net/socket.c:1747
     SyS_sendto+0x8a/0xb0 net/socket.c:1715
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: cfb6eeb4c860 ("[TCP]: MD5 Signature Option (RFC2385) support.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5996372854bbc245b3ef9d962a00531934361c27
Author: Nicolin Chen <nicoleotsuka@gmail.com>
Date:   Sun Apr 8 16:57:35 2018 -0700

    ASoC: fsl_esai: Fix divisor calculation failure at lower ratio
    
    commit c656941df9bc80f7ec65b92ca73c42f8b0b62628 upstream.
    
    When the desired ratio is less than 256, the savesub (tolerance)
    in the calculation would become 0. This will then fail the loop-
    search immediately without reporting any errors.
    
    But if the ratio is smaller enough, there is no need to calculate
    the tolerance because PM divisor alone is enough to get the ratio.
    
    So a simple fix could be just to set PM directly instead of going
    into the loop-search.
    
    Reported-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b746f21c0e06a70c1d023fd614b360b2d4e59b31
Author: Fabián Inostroza <soulsonceonfire@gmail.com>
Date:   Thu Apr 12 00:37:35 2018 -0300

    ALSA: line6: Use correct endpoint type for midi output
    
    commit 7ecb46e9ee9af18e304eb9e7d6804c59a408e846 upstream.
    
    Sending MIDI messages to a PODxt through the USB connection shows
    "usb_submit_urb failed" in dmesg and the message is not received by
    the POD.
    
    The error is caused because in the funcion send_midi_async() in midi.c
    there is a call to usb_sndbulkpipe() for endpoint 3 OUT, but the PODxt
    USB descriptor shows that this endpoint it's an interrupt endpoint.
    
    Patch tested with PODxt only.
    
    [ The bug has been present from the very beginning in the staging
      driver time, but Fixes below points to the commit moving to sound/
      directory so that the fix can be cleanly applied -- tiwai ]
    
    Fixes: 61864d844c29 ("ALSA: move line6 usb driver into sound/usb")
    Signed-off-by: Fabián Inostroza <fabianinostroza@udec.cl>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bcfdeece3e0a4dc5a045fd67c75591db832e5e9
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Tue Apr 10 21:01:13 2018 +0200

    l2tp: fix race in duplicate tunnel detection
    
    commit f6cd651b056ffd3b4e8496afd44d4ed44bf69136 upstream.
    
    We can't use l2tp_tunnel_find() to prevent l2tp_nl_cmd_tunnel_create()
    from creating a duplicate tunnel. A tunnel can be concurrently
    registered after l2tp_tunnel_find() returns. Therefore, searching for
    duplicates must be done at registration time.
    
    Finally, remove l2tp_tunnel_find() entirely as it isn't use anywhere
    anymore.
    
    Fixes: 309795f4bec2 ("l2tp: Add netlink control API for L2TP")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b05006c067d82932535aacc6ec2cdd1e556ec4e2
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Tue Apr 10 21:01:12 2018 +0200

    l2tp: fix races in tunnel creation
    
    commit 6b9f34239b00e6956a267abed2bc559ede556ad6 upstream.
    
    l2tp_tunnel_create() inserts the new tunnel into the namespace's tunnel
    list and sets the socket's ->sk_user_data field, before returning it to
    the caller. Therefore, there are two ways the tunnel can be accessed
    and freed, before the caller even had the opportunity to take a
    reference. In practice, syzbot could crash the module by closing the
    socket right after a new tunnel was returned to pppol2tp_create().
    
    This patch moves tunnel registration out of l2tp_tunnel_create(), so
    that the caller can safely hold a reference before publishing the
    tunnel. This second step is done with the new l2tp_tunnel_register()
    function, which is now responsible for associating the tunnel to its
    socket and for inserting it into the namespace's list.
    
    While moving the code to l2tp_tunnel_register(), a few modifications
    have been done. First, the socket validation tests are done in a helper
    function, for clarity. Also, modifying the socket is now done after
    having inserted the tunnel to the namespace's tunnels list. This will
    allow insertion to fail, without having to revert theses modifications
    in the error path (a followup patch will check for duplicate tunnels
    before insertion). Either the socket is a kernel socket which we
    control, or it is a user-space socket for which we have a reference on
    the file descriptor. In any case, the socket isn't going to be closed
    from under us.
    
    Reported-by: syzbot+fbeeb5c3b538e8545644@syzkaller.appspotmail.com
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Socket setup is open-coded rather than using setup_udp_tunnel_sock()
     - l2tp_nl_cmd_tunnel_create() doesn't call l2tp_tunnel_notify()
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aa41009a595c8666befa90530f4e7d6a2e799bb7
Author: Nico Sneck <nicosneck@hotmail.com>
Date:   Sat Apr 7 15:13:04 2018 +0000

    drm/radeon: add PX quirk for Asus K73TK
    
    commit b1550359d1eb392ee54f7cf47cffcfe0a602f6a7 upstream.
    
    With this the dGPU turns on correctly.
    
    Signed-off-by: Nico Sneck <nicosneck@hotmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 753752b2dfed7dd9b0318c292134b4aa72b579a4
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Tue May 9 10:10:18 2017 -0500

    drm/radeon: make MacBook Pro d3_delay quirk more generic
    
    commit 5938628c51a711ae2169d68b2e3a4f7d93d4dbea upstream.
    
    The PCI Power Management Spec, r1.2, sec 5.6.1, requires a 10 millisecond
    delay when powering on a device, i.e., transitioning from state D3hot to
    D0.
    
    Apparently some devices require more time, and d1f9809ed131 ("drm/radeon:
    add quirk for d3 delay during switcheroo poweron for apple macbooks") added
    an additional delay for the Radeon device in a MacBook Pro.  4807c5a8a0c8
    ("drm/radeon: add a PX quirk list") made the affected device more explicit.
    
    Add a generic PCI quirk to increase the d3_delay.  This means we will use
    the additional delay for *all* wakeups from D3, not just those initiated by
    radeon_switcheroo_set_state().
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Andreas Boll <andreas.boll.dev@gmail.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    CC: Maarten Lankhorst <maarten.lankhorst@canonical.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 53a9216b4f64f398bd16f2393f46112fc1825ef2
Author: Andrew Morton <akpm@linux-foundation.org>
Date:   Tue Apr 10 16:34:41 2018 -0700

    fs/reiserfs/journal.c: add missing resierfs_warning() arg
    
    commit 9ad553abe66f8be3f4755e9fa0a6ba137ce76341 upstream.
    
    One use of the reiserfs_warning() macro in journal_init_dev() is missing
    a parameter, causing the following warning:
    
      REISERFS warning (device loop0): journal_init_dev: Cannot open '%s': %i journal_init_dev:
    
    This also causes a WARN_ONCE() warning in the vsprintf code, and then a
    panic if panic_on_warn is set.
    
      Please remove unsupported %/ in format string
      WARNING: CPU: 1 PID: 4480 at lib/vsprintf.c:2138 format_decode+0x77f/0x830 lib/vsprintf.c:2138
      Kernel panic - not syncing: panic_on_warn set ...
    
    Just add another string argument to the macro invocation.
    
    Addresses https://syzkaller.appspot.com/bug?id=0627d4551fdc39bf1ef5d82cd9eef587047f7718
    
    Link: http://lkml.kernel.org/r/d678ebe1-6f54-8090-df4c-b9affad62293@infradead.org
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: <syzbot+6bd77b88c1977c03f584@syzkaller.appspotmail.com>
    Tested-by: Randy Dunlap <rdunlap@infradead.org>
    Acked-by: Jeff Mahoney <jeffm@suse.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Jan Kara <jack@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f3793cd7ef6d37f3f3eff2d05c3a4182f7d51871
Author: Danilo Krummrich <danilokrummrich@dk-develop.de>
Date:   Tue Apr 10 16:31:38 2018 -0700

    fs/proc/proc_sysctl.c: fix potential page fault while unregistering sysctl table
    
    commit a0b0d1c345d0317efe594df268feb5ccc99f651e upstream.
    
    proc_sys_link_fill_cache() does not take currently unregistering sysctl
    tables into account, which might result into a page fault in
    sysctl_follow_link() - add a check to fix it.
    
    This bug has been present since v3.4.
    
    Link: http://lkml.kernel.org/r/20180228013506.4915-1-danilokrummrich@dk-develop.de
    Fixes: 0e47c99d7fe25 ("sysctl: Replace root_list with links between sysctl_table_sets")
    Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Luis R . Rodriguez" <mcgrof@kernel.org>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d79e2213f2839365d6fdb45195e0888ed5a8be26
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Apr 10 21:49:33 2018 +1000

    powerpc/powernv: Fix OPAL NVRAM driver OPAL_BUSY loops
    
    commit 3b8070335f751aac9f1526ae2e012e6f5b8b0f21 upstream.
    
    The OPAL NVRAM driver does not sleep in case it gets OPAL_BUSY or
    OPAL_BUSY_EVENT from firmware, which causes large scheduling
    latencies, and various lockup errors to trigger (again, BMC reboot
    can cause it).
    
    Fix this by converting it to the standard form OPAL_BUSY loop that
    sleeps.
    
    Fixes: 628daa8d5abf ("powerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks")
    Depends-on: 34dd25de9fe3 ("powerpc/powernv: define a standard delay for OPAL_BUSY type retry loops")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 153da3464b0489c203e444058cfa047efa007381
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Apr 10 21:49:31 2018 +1000

    powerpc/powernv: define a standard delay for OPAL_BUSY type retry loops
    
    commit 34dd25de9fe3f60bfdb31b473bf04b28262d0896 upstream.
    
    This is the start of an effort to tidy up and standardise all the
    delays. Existing loops have a range of delay/sleep periods from 1ms
    to 20ms, and some have no delay. They all loop forever except rtc,
    which times out after 10 retries, and that uses 10ms delays. So use
    10ms as our standard delay. The OPAL maintainer agrees 10ms is a
    reasonable starting point.
    
    The idea is to use the same recipe everywhere, once this is proven to
    work then it will be documented as an OPAL API standard. Then both
    firmware and OS can agree, and if a particular call needs something
    else, then that can be documented with reasoning.
    
    This is not the end-all of this effort, it's just a relatively easy
    change that fixes some existing high latency delays. There should be
    provision for standardising timeouts and/or interruptible loops where
    possible, so non-fatal firmware errors don't cause hangs.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 82067a68db6758536b8bd4a2f99fc174918e5606
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Apr 10 21:20:08 2018 +0900

    tracing/uprobe_event: Fix strncpy corner case
    
    commit 50268a3d266ecfdd6c5873d62b2758d9732fc598 upstream.
    
    Fix string fetch function to terminate with NUL.
    It is OK to drop the rest of string.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: security@kernel.org
    Cc: 范龙飞 <long7573@126.com>
    Fixes: 5baaa59ef09e ("tracing/probes: Implement 'memory' fetch method for uprobes")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 288e4abffd07a6dba8f408a2c08733748b28e5db
Author: Li RongQing <lirongqing@baidu.com>
Date:   Tue Apr 10 09:16:06 2018 +0800

    x86/apic: Fix signedness bug in APIC ID validity checks
    
    commit a774635db5c430cbf21fa5d2f2df3d23aaa8e782 upstream.
    
    The APIC ID as parsed from ACPI MADT is validity checked with the
    apic->apic_id_valid() callback, which depends on the selected APIC type.
    
    For non X2APIC types APIC IDs >= 0xFF are invalid, but values > 0x7FFFFFFF
    are detected as valid. This happens because the 'apicid' argument of the
    apic_id_valid() callback is type 'int'. So the resulting comparison
    
       apicid < 0xFF
    
    evaluates to true for all unsigned int values > 0x7FFFFFFF which are handed
    to default_apic_id_valid(). As a consequence, invalid APIC IDs in !X2APIC
    mode are considered valid and accounted as possible CPUs.
    
    Change the apicid argument type of the apic_id_valid() callback to u32 so
    the evaluation is unsigned and returns the correct result.
    
    [ tglx: Massaged changelog ]
    
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: jgross@suse.com
    Cc: Dou Liyang <douly.fnst@cn.fujitsu.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: hpa@zytor.com
    Link: https://lkml.kernel.org/r/1523322966-10296-1-git-send-email-lirongqing@baidu.com
    [bwh: Backported to 3.16:
     - Drop change to xen_id_always_valid()
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 991c8fb6e676a39b1accb6a676b3a64c1abdd47f
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Tue Apr 3 16:02:15 2018 +0200

    s390/ipl: ensure loadparm valid flag is set
    
    commit 15deb080a6087b73089139569558965750e69d67 upstream.
    
    When loadparm is set in reipl parm block, the kernel should also set
    DIAG308_FLAGS_LP_VALID flag.
    
    This fixes loadparm ignoring during z/VM fcp -> ccw reipl and kvm direct
    boot -> ccw reipl.
    
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec1cefb64e784acdc39e6708efe55c3166193c8f
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Tue Mar 20 21:05:48 2018 +0000

    scsi: qla2xxx: Avoid double completion of abort command
    
    commit 3a9910d7b686546dcc9986e790af17e148f1c888 upstream.
    
    qla2x00_tmf_sp_done() now deletes the timer that will run
    qla2x00_tmf_iocb_timeout(), but doesn't check whether the timer already
    expired.  Check the return value from del_timer() to avoid calling
    complete() a second time.
    
    Fixes: 4440e46d5db7 ("[SCSI] qla2xxx: Add IOCB Abort command asynchronous ...")
    Fixes: 1514839b3664 ("scsi: qla2xxx: Fix NULL pointer crash due to active ...")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Acked-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7191508c1f72003fe18ad94a37c69c83a9108174
Author: himanshu.madhani@cavium.com <himanshu.madhani@cavium.com>
Date:   Mon Feb 12 10:28:14 2018 -0800

    scsi: qla2xxx: Fix NULL pointer crash due to active timer for ABTS
    
    commit 1514839b366417934e2f1328edb50ed1e8a719f5 upstream.
    
    This patch fixes NULL pointer crash due to active timer running for abort
    IOCB.
    
    From crash dump analysis it was discoverd that get_next_timer_interrupt()
    encountered a corrupted entry on the timer list.
    
     #9 [ffff95e1f6f0fd40] page_fault at ffffffff914fe8f8
        [exception RIP: get_next_timer_interrupt+440]
        RIP: ffffffff90ea3088  RSP: ffff95e1f6f0fdf0  RFLAGS: 00010013
        RAX: ffff95e1f6451028  RBX: 000218e2389e5f40  RCX: 00000001232ad600
        RDX: 0000000000000001  RSI: ffff95e1f6f0fdf0  RDI: 0000000001232ad6
        RBP: ffff95e1f6f0fe40   R8: ffff95e1f6451188   R9: 0000000000000001
        R10: 0000000000000016  R11: 0000000000000016  R12: 00000001232ad5f6
        R13: ffff95e1f6450000  R14: ffff95e1f6f0fdf8  R15: ffff95e1f6f0fe10
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
    
    Looking at the assembly of get_next_timer_interrupt(), address came
    from %r8 (ffff95e1f6451188) which is pointing to list_head with single
    entry at ffff95e5ff621178.
    
     0xffffffff90ea307a <get_next_timer_interrupt+426>:      mov    (%r8),%rdx
     0xffffffff90ea307d <get_next_timer_interrupt+429>:      cmp    %r8,%rdx
     0xffffffff90ea3080 <get_next_timer_interrupt+432>:      je     0xffffffff90ea30a7 <get_next_timer_interrupt+471>
     0xffffffff90ea3082 <get_next_timer_interrupt+434>:      nopw   0x0(%rax,%rax,1)
     0xffffffff90ea3088 <get_next_timer_interrupt+440>:      testb  $0x1,0x18(%rdx)
    
     crash> rd ffff95e1f6451188 10
     ffff95e1f6451188:  ffff95e5ff621178 ffff95e5ff621178   x.b.....x.b.....
     ffff95e1f6451198:  ffff95e1f6451198 ffff95e1f6451198   ..E.......E.....
     ffff95e1f64511a8:  ffff95e1f64511a8 ffff95e1f64511a8   ..E.......E.....
     ffff95e1f64511b8:  ffff95e77cf509a0 ffff95e77cf509a0   ...|.......|....
     ffff95e1f64511c8:  ffff95e1f64511c8 ffff95e1f64511c8   ..E.......E.....
    
     crash> rd ffff95e5ff621178 10
     ffff95e5ff621178:  0000000000000001 ffff95e15936aa00   ..........6Y....
     ffff95e5ff621188:  0000000000000000 00000000ffffffff   ................
     ffff95e5ff621198:  00000000000000a0 0000000000000010   ................
     ffff95e5ff6211a8:  ffff95e5ff621198 000000000000000c   ..b.............
     ffff95e5ff6211b8:  00000f5800000000 ffff95e751f8d720   ....X... ..Q....
    
     ffff95e5ff621178 belongs to freed mempool object at ffff95e5ff621080.
    
     CACHE            NAME                 OBJSIZE  ALLOCATED     TOTAL  SLABS  SSIZE
     ffff95dc7fd74d00 mnt_cache                384      19785     24948    594    16k
       SLAB              MEMORY            NODE  TOTAL  ALLOCATED  FREE
       ffffdc5dabfd8800  ffff95e5ff620000     1     42         29    13
       FREE / [ALLOCATED]
        ffff95e5ff621080  (cpu 6 cache)
    
    Examining the contents of that memory reveals a pointer to a constant string
    in the driver, "abort\0", which is set by qla24xx_async_abort_cmd().
    
     crash> rd ffffffffc059277c 20
     ffffffffc059277c:  6e490074726f6261 0074707572726574   abort.Interrupt.
     ffffffffc059278c:  00676e696c6c6f50 6920726576697244   Polling.Driver i
     ffffffffc059279c:  646f6d207325206e 6974736554000a65   n %s mode..Testi
     ffffffffc05927ac:  636976656420676e 786c252074612065   ng device at %lx
     ffffffffc05927bc:  6b63656843000a2e 646f727020676e69   ...Checking prod
     ffffffffc05927cc:  6f20444920746375 0a2e706968632066   uct ID of chip..
     ffffffffc05927dc:  5120646e756f4600 204130303232414c   .Found QLA2200A
     ffffffffc05927ec:  43000a2e70696843 20676e696b636568   Chip...Checking
     ffffffffc05927fc:  65786f626c69616d 6c636e69000a2e73   mailboxes...incl
     ffffffffc059280c:  756e696c2f656475 616d2d616d642f78   ude/linux/dma-ma
    
     crash> struct -ox srb_iocb
     struct srb_iocb {
               union {
                   struct {...} logio;
                   struct {...} els_logo;
                   struct {...} tmf;
                   struct {...} fxiocb;
                   struct {...} abt;
                   struct ct_arg ctarg;
                   struct {...} mbx;
                   struct {...} nack;
        [0x0 ] } u;
        [0xb8] struct timer_list timer;
        [0x108] void (*timeout)(void *);
     }
     SIZE: 0x110
    
     crash> ! bc
     ibase=16
     obase=10
     B8+40
     F8
    
    The object is a srb_t, and at offset 0xf8 within that structure
    (i.e. ffff95e5ff621080 + f8 -> ffff95e5ff621178) is a struct timer_list.
    
    Fixes: 4440e46d5db7 ("[SCSI] qla2xxx: Add IOCB Abort command asynchronous handling.")
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f25e94a7d584304191a31b603f53f241d2ce4e3a
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Wed Apr 4 23:42:18 2018 +0300

    fanotify: fix logic of events on child
    
    commit 54a307ba8d3cd00a3902337ffaae28f436eeb1a4 upstream.
    
    When event on child inodes are sent to the parent inode mark and
    parent inode mark was not marked with FAN_EVENT_ON_CHILD, the event
    will not be delivered to the listener process. However, if the same
    process also has a mount mark, the event to the parent inode will be
    delivered regadless of the mount mark mask.
    
    This behavior is incorrect in the case where the mount mark mask does
    not contain the specific event type. For example, the process adds
    a mark on a directory with mask FAN_MODIFY (without FAN_EVENT_ON_CHILD)
    and a mount mark with mask FAN_CLOSE_NOWRITE (without FAN_ONDIR).
    
    A modify event on a file inside that directory (and inside that mount)
    should not create a FAN_MODIFY event, because neither of the marks
    requested to get that event on the file.
    
    Fixes: 1968f5eed54c ("fanotify: use both marks when possible")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94cae1fa6501fa16447079b6877d3a99a1d0bda1
Author: Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Date:   Fri Apr 6 01:09:36 2018 +0200

    HID: hidraw: Fix crash on HIDIOCGFEATURE with a destroyed device
    
    commit a955358d54695e4ad9f7d6489a7ac4d69a8fc711 upstream.
    
    Doing `ioctl(HIDIOCGFEATURE)` in a tight loop on a hidraw device
    and then disconnecting the device, or unloading the driver, can
    cause a NULL pointer dereference.
    
    When a hidraw device is destroyed it sets 0 to `dev->exist`.
    Most functions check 'dev->exist' before doing its work, but
    `hidraw_get_report()` was missing that check.
    
    Signed-off-by: Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 519131e2c873e1dcd381a9c950c471db954263cc
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 17:15:22 2018 -0700

    sctp: do not leak kernel memory to user space
    
    commit 6780db244d6b1537d139dea0ec8aad10cf9e4adb upstream.
    
    syzbot produced a nice report [1]
    
    Issue here is that a recvmmsg() managed to leak 8 bytes of kernel memory
    to user space, because sin_zero (padding field) was not properly cleared.
    
    [1]
    BUG: KMSAN: uninit-value in copy_to_user include/linux/uaccess.h:184 [inline]
    BUG: KMSAN: uninit-value in move_addr_to_user+0x32e/0x530 net/socket.c:227
    CPU: 1 PID: 3586 Comm: syzkaller481044 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
     kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
     copy_to_user include/linux/uaccess.h:184 [inline]
     move_addr_to_user+0x32e/0x530 net/socket.c:227
     ___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
     SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
     SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x4401c9
    RSP: 002b:00007ffc56f73098 EFLAGS: 00000217 ORIG_RAX: 000000000000012b
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004401c9
    RDX: 0000000000000001 RSI: 0000000020003ac0 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 0000000020003bc0 R09: 0000000000000010
    R10: 0000000000000000 R11: 0000000000000217 R12: 0000000000401af0
    R13: 0000000000401b80 R14: 0000000000000000 R15: 0000000000000000
    
    Local variable description: ----addr@___sys_recvmsg
    Variable was created at:
     ___sys_recvmsg+0xd5/0x810 net/socket.c:2172
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
    
    Bytes 8-15 of 16 are uninitialized
    
    ==================================================================
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 3586 Comm: syzkaller481044 Tainted: G    B            4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     panic+0x39d/0x940 kernel/panic.c:183
     kmsan_report+0x238/0x240 mm/kmsan/kmsan.c:1083
     kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
     kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
     copy_to_user include/linux/uaccess.h:184 [inline]
     move_addr_to_user+0x32e/0x530 net/socket.c:227
     ___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
     SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
     SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc:     Vlad Yasevich <vyasevich@gmail.com>
    Cc:     Neil Horman <nhorman@tuxdriver.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 528c441bce68a469759bb875c27f36d5d075c144
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:43 2018 -0700

    soreuseport: initialise timewait reuseport field
    
    commit 3099a52918937ab86ec47038ad80d377ba16c531 upstream.
    
    syzbot reported an uninit-value in inet_csk_bind_conflict() [1]
    
    It turns out we never propagated sk->sk_reuseport into timewait socket.
    
    [1]
    BUG: KMSAN: uninit-value in inet_csk_bind_conflict+0x5f9/0x990 net/ipv4/inet_connection_sock.c:151
    CPU: 1 PID: 3589 Comm: syzkaller008242 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     inet_csk_bind_conflict+0x5f9/0x990 net/ipv4/inet_connection_sock.c:151
     inet_csk_get_port+0x1d28/0x1e40 net/ipv4/inet_connection_sock.c:320
     inet6_bind+0x121c/0x1820 net/ipv6/af_inet6.c:399
     SYSC_bind+0x3f2/0x4b0 net/socket.c:1474
     SyS_bind+0x54/0x80 net/socket.c:1460
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x4416e9
    RSP: 002b:00007ffce6d15c88 EFLAGS: 00000217 ORIG_RAX: 0000000000000031
    RAX: ffffffffffffffda RBX: 0100000000000000 RCX: 00000000004416e9
    RDX: 000000000000001c RSI: 0000000020402000 RDI: 0000000000000004
    RBP: 0000000000000000 R08: 00000000e6d15e08 R09: 00000000e6d15e08
    R10: 0000000000000004 R11: 0000000000000217 R12: 0000000000009478
    R13: 00000000006cd448 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     tcp_time_wait+0xf17/0xf50 net/ipv4/tcp_minisocks.c:283
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     inet_twsk_alloc+0xaef/0xc00 net/ipv4/inet_timewait_sock.c:182
     tcp_time_wait+0xd9/0xf50 net/ipv4/tcp_minisocks.c:258
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmem_cache_alloc+0xaab/0xb90 mm/slub.c:2756
     inet_twsk_alloc+0x13b/0xc00 net/ipv4/inet_timewait_sock.c:163
     tcp_time_wait+0xd9/0xf50 net/ipv4/tcp_minisocks.c:258
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: da5e36308d9f ("soreuseport: TCP/IPv4 implementation")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 84ee831c508c399bd5d1b5bcc825ebff352d9732
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:40 2018 -0700

    net: fix uninit-value in __hw_addr_add_ex()
    
    commit 77d36398d99f2565c0a8d43a86fd520a82e64bb8 upstream.
    
    syzbot complained :
    
    BUG: KMSAN: uninit-value in memcmp+0x119/0x180 lib/string.c:861
    CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: ipv6_addrconf addrconf_dad_work
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     memcmp+0x119/0x180 lib/string.c:861
     __hw_addr_add_ex net/core/dev_addr_lists.c:60 [inline]
     __dev_mc_add+0x1c2/0x8e0 net/core/dev_addr_lists.c:670
     dev_mc_add+0x6d/0x80 net/core/dev_addr_lists.c:687
     igmp6_group_added+0x2db/0xa00 net/ipv6/mcast.c:662
     ipv6_dev_mc_inc+0xe9e/0x1130 net/ipv6/mcast.c:914
     addrconf_join_solict net/ipv6/addrconf.c:2078 [inline]
     addrconf_dad_begin net/ipv6/addrconf.c:3828 [inline]
     addrconf_dad_work+0x427/0x2150 net/ipv6/addrconf.c:3954
     process_one_work+0x12c6/0x1f60 kernel/workqueue.c:2113
     worker_thread+0x113c/0x24f0 kernel/workqueue.c:2247
     kthread+0x539/0x720 kernel/kthread.c:239
    
    Fixes: f001fde5eadd ("net: introduce a list of device addresses dev_addr_list (v6)")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 767b9131baffe7f67a4a6b44de433124cffb3286
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:39 2018 -0700

    net: initialize skb->peeked when cloning
    
    commit b13dda9f9aa7caceeee61c080c2e544d5f5d85e5 upstream.
    
    syzbot reported __skb_try_recv_from_queue() was using skb->peeked
    while it was potentially unitialized.
    
    We need to clear it in __skb_clone()
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3c000397b7dd4cc4f5d2f0e4cc7d0495fda5b55c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:38 2018 -0700

    net: fix rtnh_ok()
    
    commit b1993a2de12c9e75c35729e2ffbc3a92d50c0d31 upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in rtnh_ok include/net/nexthop.h:11 [inline]
    BUG: KMSAN: uninit-value in fib_count_nexthops net/ipv4/fib_semantics.c:469 [inline]
    BUG: KMSAN: uninit-value in fib_create_info+0x554/0x8d20 net/ipv4/fib_semantics.c:1091
    
    @remaining is an integer, coming from user space.
    If it is negative we want rtnh_ok() to return false.
    
    Fixes: 4e902c57417c ("[IPv4]: FIB configuration using struct fib_config")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8fe0e06e4829b75c83878431d97af7956af0a2d0
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:37 2018 -0700

    netlink: fix uninit-value in netlink_sendmsg
    
    commit 6091f09c2f79730d895149bcfe3d66140288cd0e upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in ffs arch/x86/include/asm/bitops.h:432 [inline]
    BUG: KMSAN: uninit-value in netlink_sendmsg+0xb26/0x1310 net/netlink/af_netlink.c:1851
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8aa698134a884c5597ef45274d16601ba63065ed
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:36 2018 -0700

    crypto: af_alg - fix possible uninit-value in alg_bind()
    
    commit a466856e0b7ab269cdf9461886d007e88ff575b0 upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in alg_bind+0xe3/0xd90 crypto/af_alg.c:162
    
    We need to check addr_len before dereferencing sa (or uaddr)
    
    Fixes: bb30b8848c85 ("crypto: af_alg - whitelist mask and type")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Stephan Mueller <smueller@chronox.de>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d720b91ae0ba14c4547e9b523ccb409e62570a03
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Apr 7 11:48:58 2018 +0200

    ALSA: pcm: Fix endless loop for XRUN recovery in OSS emulation
    
    commit e15dc99dbb9cf99f6432e8e3c0b3a8f7a3403a86 upstream.
    
    The commit 02a5d6925cd3 ("ALSA: pcm: Avoid potential races between OSS
    ioctls and read/write") split the PCM preparation code to a locked
    version, and it added a sanity check of runtime->oss.prepare flag
    along with the change.  This leaded to an endless loop when the stream
    gets XRUN: namely, snd_pcm_oss_write3() and co call
    snd_pcm_oss_prepare() without setting runtime->oss.prepare flag and
    the loop continues until the PCM state reaches to another one.
    
    As the function is supposed to execute the preparation
    unconditionally, drop the invalid state check there.
    
    The bug was triggered by syzkaller.
    
    Fixes: 02a5d6925cd3 ("ALSA: pcm: Avoid potential races between OSS ioctls and read/write")
    Reported-by: syzbot+150189c103427d31a053@syzkaller.appspotmail.com
    Reported-by: syzbot+7e3f31a52646f939c052@syzkaller.appspotmail.com
    Reported-by: syzbot+4f2016cf5185da7759dc@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 35e52c4d32a1fcc07385712a19404825cb16cd42
Author: Jeff Moyer <jmoyer@redhat.com>
Date:   Thu Apr 5 16:25:01 2018 -0700

    block_invalidatepage(): only release page if the full page was invalidated
    
    commit 3172485f4f8032649c144e4aafa550e1e6179332 upstream.
    
    Prior to commit d47992f86b30 ("mm: change invalidatepage prototype to
    accept length"), an offset of 0 meant that the full page was being
    invalidated.  After that commit, we need to instead check the length.
    
    Jan said:
    :
    : The only possible issue is that try_to_release_page() was called more
    : often than necessary.  Otherwise the issue is harmless but still it's good
    : to have this fixed.
    
    Link: http://lkml.kernel.org/r/x49fu5rtnzs.fsf@segfault.boston.devel.redhat.com
    Fixes: d47992f86b307 ("mm: change invalidatepage prototype to accept length")
    Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: Lukas Czerner <lczerner@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 82b08ed0e287dfb7ced9de93f682d19342683398
Author: piaojun <piaojun@huawei.com>
Date:   Thu Apr 5 16:19:11 2018 -0700

    ocfs2/dlm: wait for dlm recovery done when migrating all lock resources
    
    commit 60c7ec9ee4a3410c2cb08850102d363c7e207f48 upstream.
    
    Wait for dlm recovery done when migrating all lock resources in case that
    new lock resource left after leaving dlm domain.  And the left lock
    resource will cause other nodes BUG.
    
            NodeA                       NodeB                NodeC
    
      umount:
        dlm_unregister_domain()
          dlm_migrate_all_locks()
    
                                       NodeB down
    
      do recovery for NodeB
      and collect a new lockres
      form other live nodes:
    
        dlm_do_recovery
          dlm_remaster_locks
            dlm_request_all_locks:
    
        dlm_mig_lockres_handler
          dlm_new_lockres
            __dlm_insert_lockres
    
      at last NodeA become the
      master of the new lockres
      and leave domain:
        dlm_leave_domain()
    
                                                        mount:
                                                          dlm_join_domain()
    
                                                        touch file and request
                                                        for the owner of the new
                                                        lockres, but all the
                                                        other nodes said 'NO',
                                                        so NodeC decide to be
                                                        the owner, and send do
                                                        assert msg to other
                                                        nodes:
                                                        dlmlock()
                                                          dlm_get_lock_resource()
                                                            dlm_do_assert_master()
    
                                                        other nodes receive the msg
                                                        and found two masters exist.
                                                        at last cause BUG in
                                                        dlm_assert_master_handler()
                                                        -->BUG();
    
    Link: http://lkml.kernel.org/r/5AAA6E25.7090303@huawei.com
    Fixes: bc9838c4d44a ("dlm: allow dlm do recovery during shutdown")
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Alex Chen <alex.chen@huawei.com>
    Reviewed-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Acked-by: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b9beff69cd84917c7881c176c241db933a3f7f7d
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Apr 5 16:18:21 2018 -0700

    hugetlbfs: fix bug in pgoff overflow checking
    
    commit 5df63c2a149ae65a9ec239e7c2af44efa6f79beb upstream.
    
    This is a fix for a regression in 32 bit kernels caused by an invalid
    check for pgoff overflow in hugetlbfs mmap setup.  The check incorrectly
    specified that the size of a loff_t was the same as the size of a long.
    The regression prevents mapping hugetlbfs files at offsets greater than
    4GB on 32 bit kernels.
    
    On 32 bit kernels conversion from a page based unsigned long can not
    overflow a loff_t byte offset.  Therefore, skip this check if
    sizeof(unsigned long) != sizeof(loff_t).
    
    Link: http://lkml.kernel.org/r/20180330145402.5053-1-mike.kravetz@oracle.com
    Fixes: 63489f8e8211 ("hugetlbfs: check for pgoff value overflow")
    Reported-by: Dan Rue <dan.rue@linaro.org>
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Tested-by: Anders Roxell <anders.roxell@linaro.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Yisheng Xie <xieyisheng1@huawei.com>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Nic Losby <blurbdust@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b998a0ba5085f532bdc9d57e5c2ac8910176cf6
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Apr 5 16:18:18 2018 -0700

    zboot: fix stack protector in compressed boot phase
    
    commit 7bbaf27d9c83037b6e60a818e57bdbedf6bc15be upstream.
    
    Calling __stack_chk_guard_setup() in decompress_kernel() is too late
    that stack checking always fails for decompress_kernel() itself.  So
    remove __stack_chk_guard_setup() and initialize __stack_chk_guard before
    we call decompress_kernel().
    
    Original code comes from ARM but also used for MIPS and SH, so fix them
    together.  If without this fix, compressed booting of these archs will
    fail because stack checking is enabled by default (>=4.16).
    
    Link: http://lkml.kernel.org/r/1522226933-29317-1-git-send-email-chenhc@lemote.com
    Fixes: 8779657d29c0 ("stackprotector: Introduce CONFIG_CC_STACKPROTECTOR_STRONG")
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Acked-by: James Hogan <jhogan@kernel.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Acked-by: Rich Felker <dalias@libc.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: Only ARM has this problem]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 237b8372dbea01fc6eb7f2559e7414b73b896687
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:31 2018 -0700

    vti6: better validate user provided tunnel names
    
    commit 537b361fbcbcc3cd6fe2bb47069fd292b9256d16 upstream.
    
    Use valid_name() to make sure user does not provide illegal
    device name.
    
    Fixes: ed1efb2aefbb ("ipv6: Add support for IPsec virtual tunnel interfaces")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8852307d392e1242331cb64e5edeeed2d6eb081
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:30 2018 -0700

    ip6_tunnel: better validate user provided tunnel names
    
    commit db7a65e3ab78e5b1c4b17c0870ebee35a4ee3257 upstream.
    
    Use valid_name() to make sure user does not provide illegal
    device name.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Don't touch err as ip6_tnl_create() does not return an error code
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d521034ca1d8dac7e513bdef8aa6fe9facda3862
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:29 2018 -0700

    ip6_gre: better validate user provided tunnel names
    
    commit 5f42df013b8bc1b6511af7a04bf93b014884ae2a upstream.
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
    Write of size 20 at addr ffff8801afb9f7b8 by task syzkaller851048/4466
    
    CPU: 1 PID: 4466 Comm: syzkaller851048 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
     ip6gre_tunnel_ioctl+0x69d/0x12e0 net/ipv6/ip6_gre.c:1195
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit afe68da6b60dc0077f407e29f79d81e0f8f0c0c6
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:28 2018 -0700

    ipv6: sit: better validate user provided tunnel names
    
    commit b95211e066fc3494b7c115060b2297b4ba21f025 upstream.
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
    Write of size 33 at addr ffff8801b64076d8 by task syzkaller932654/4453
    
    CPU: 0 PID: 4453 Comm: syzkaller932654 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
     ipip6_tunnel_ioctl+0xe71/0x241b net/ipv6/sit.c:1221
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 00dd92ff651d9353cbcc09508dca699c8f0d1205
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:27 2018 -0700

    ip_tunnel: better validate user provided tunnel names
    
    commit 9cb726a212a82c88c98aa9f0037fd04777cd8fe5 upstream.
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
    Write of size 20 at addr ffff8801ac79f810 by task syzkaller268107/4482
    
    CPU: 0 PID: 4482 Comm: syzkaller268107 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
     ip_tunnel_create net/ipv4/ip_tunnel.c:352 [inline]
     ip_tunnel_ioctl+0x818/0xd40 net/ipv4/ip_tunnel.c:861
     ipip_tunnel_ioctl+0x1c5/0x420 net/ipv4/ipip.c:350
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bec862d29b28a6bf4932d8f4b90ca9c9671fa9f8
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Thu Apr 5 10:40:15 2018 +0300

    btrfs: Fix possible softlock on single core machines
    
    commit 1e1c50a929bc9e49bc3f9935b92450d9e69f8158 upstream.
    
    do_chunk_alloc implements a loop checking whether there is a pending
    chunk allocation and if so causes the caller do loop. Generally this
    loop is executed only once, however testing with btrfs/072 on a single
    core vm machines uncovered an extreme case where the system could loop
    indefinitely. This is due to a missing cond_resched when loop which
    doesn't give a chance to the previous chunk allocator finish its job.
    
    The fix is to simply add the missing cond_resched.
    
    Fixes: 6d74119f1a3e ("Btrfs: avoid taking the chunk_mutex in do_chunk_alloc")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a344af28753129bfbfdba05a1c00104829901fa4
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Tue Apr 3 01:59:48 2018 +0800

    Btrfs: bail out on error during replay_dir_deletes
    
    commit b98def7ca6e152ee55e36863dddf6f41f12d1dc6 upstream.
    
    If errors were returned by btrfs_next_leaf(), replay_dir_deletes needs
    to bail out, otherwise @ret would be forced to be 0 after 'break;' and
    the caller won't be aware of it.
    
    Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a2b7ef459098a10c13cb1351a7b73e9a7736957
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Tue Apr 3 01:59:47 2018 +0800

    Btrfs: fix NULL pointer dereference in log_dir_items
    
    commit 80c0b4210a963e31529e15bf90519708ec947596 upstream.
    
    0, 1 and <0 can be returned by btrfs_next_leaf(), and when <0 is
    returned, path->nodes[0] could be NULL, log_dir_items lacks such a
    check for <0 and we may run into a null pointer dereference panic.
    
    Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d00551004a692481e284ff20d4b97867e3364dc
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Wed Mar 28 13:59:22 2018 -0400

    media: v4l2-compat-ioctl32: don't oops on overlay
    
    commit 85ea29f19eab56ec16ec6b92bc67305998706afa upstream.
    
    At put_v4l2_window32(), it tries to access kp->clips. However,
    kp points to an userspace pointer. So, it should be obtained
    via get_user(), otherwise it can OOPS:
    
     vivid-000: ==================  END STATUS  ==================
     BUG: unable to handle kernel paging request at 00000000fffb18e0
     IP: [<ffffffffc05468d9>] __put_v4l2_format32+0x169/0x220 [videodev]
     PGD 3f5776067 PUD 3f576f067 PMD 3f5769067 PTE 800000042548f067
     Oops: 0001 [#1] SMP
     Modules linked in: vivid videobuf2_vmalloc videobuf2_memops v4l2_dv_timings videobuf2_core v4l2_common videodev media xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack tun bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables bluetooth rfkill binfmt_misc snd_hda_codec_hdmi i915 snd_hda_intel snd_hda_controller snd_hda_codec intel_rapl x86_pkg_temp_thermal snd_hwdep intel_powerclamp snd_pcm coretemp snd_seq_midi kvm_intel kvm snd_seq_midi_event snd_rawmidi i2c_algo_bit drm_kms_helper snd_seq drm crct10dif_pclmul e1000e snd_seq_device crc32_pclmul snd_timer ghash_clmulni_intel snd mei_me mei ptp pps_core soundcore lpc_ich video crc32c_intel [last unloaded: media]
     CPU: 2 PID: 28332 Comm: v4l2-compliance Not tainted 3.18.102+ #107
     Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0364.2017.0511.0949 05/11/2017
     task: ffff8804293f8000 ti: ffff8803f5640000 task.ti: ffff8803f5640000
     RIP: 0010:[<ffffffffc05468d9>]  [<ffffffffc05468d9>] __put_v4l2_format32+0x169/0x220 [videodev]
     RSP: 0018:ffff8803f5643e28  EFLAGS: 00010246
     RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00000000fffb1ab4
     RDX: 00000000fffb1a68 RSI: 00000000fffb18d8 RDI: 00000000fffb1aa8
     RBP: ffff8803f5643e48 R08: 0000000000000001 R09: ffff8803f54b0378
     R10: 0000000000000000 R11: 0000000000000168 R12: 00000000fffb18c0
     R13: 00000000fffb1a94 R14: 00000000fffb18c8 R15: 0000000000000000
     FS:  0000000000000000(0000) GS:ffff880456d00000(0063) knlGS:00000000f7100980
     CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
     CR2: 00000000fffb18e0 CR3: 00000003f552b000 CR4: 00000000003407e0
     Stack:
      00000000fffb1a94 00000000c0cc5640 0000000000000056 ffff8804274f3600
      ffff8803f5643ed0 ffffffffc0547e16 0000000000000003 ffff8803f5643eb0
      ffffffff81301460 ffff88009db44b01 ffff880441942520 ffff8800c0d05640
     Call Trace:
      [<ffffffffc0547e16>] v4l2_compat_ioctl32+0x12d6/0x1b1d [videodev]
      [<ffffffff81301460>] ? file_has_perm+0x70/0xc0
      [<ffffffff81252a2c>] compat_SyS_ioctl+0xec/0x1200
      [<ffffffff8173241a>] sysenter_dispatch+0x7/0x21
     Code: 00 00 48 8b 80 48 c0 ff ff 48 83 e8 38 49 39 c6 0f 87 2b ff ff ff 49 8d 45 1c e8 a3 ce e3 c0 85 c0 0f 85 1a ff ff ff 41 8d 40 ff <4d> 8b 64 24 20 41 89 d5 48 8d 44 40 03 4d 8d 34 c4 eb 15 0f 1f
     RIP  [<ffffffffc05468d9>] __put_v4l2_format32+0x169/0x220 [videodev]
     RSP <ffff8803f5643e28>
     CR2: 00000000fffb18e0
    
    Tested with vivid driver on Kernel v3.18.102.
    
    Same bug happens upstream too:
    
     BUG: KASAN: user-memory-access in __put_v4l2_format32+0x98/0x4d0 [videodev]
     Read of size 8 at addr 00000000ffe48400 by task v4l2-compliance/8713
    
     CPU: 0 PID: 8713 Comm: v4l2-compliance Not tainted 4.16.0-rc4+ #108
     Hardware name:  /NUC5i7RYB, BIOS RYBDWi35.86A.0364.2017.0511.0949 05/11/2017
     Call Trace:
      dump_stack+0x5c/0x7c
      kasan_report+0x164/0x380
      ? __put_v4l2_format32+0x98/0x4d0 [videodev]
      __put_v4l2_format32+0x98/0x4d0 [videodev]
      v4l2_compat_ioctl32+0x1aec/0x27a0 [videodev]
      ? __fsnotify_inode_delete+0x20/0x20
      ? __put_v4l2_format32+0x4d0/0x4d0 [videodev]
      compat_SyS_ioctl+0x646/0x14d0
      ? do_ioctl+0x30/0x30
      do_fast_syscall_32+0x191/0x3f4
      entry_SYSENTER_compat+0x6b/0x7a
     ==================================================================
     Disabling lock debugging due to kernel taint
     BUG: unable to handle kernel paging request at 00000000ffe48400
     IP: __put_v4l2_format32+0x98/0x4d0 [videodev]
     PGD 3a22fb067 P4D 3a22fb067 PUD 39b6f0067 PMD 39b6f1067 PTE 80000003256af067
     Oops: 0001 [#1] SMP KASAN
     Modules linked in: vivid videobuf2_vmalloc videobuf2_dma_contig videobuf2_memops v4l2_tpg v4l2_dv_timings videobuf2_v4l2 videobuf2_common v4l2_common videodev xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack libcrc32c tun bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables bluetooth rfkill ecdh_generic binfmt_misc snd_hda_codec_hdmi intel_rapl x86_pkg_temp_thermal intel_powerclamp i915 coretemp snd_hda_intel snd_hda_codec kvm_intel snd_hwdep snd_hda_core kvm snd_pcm irqbypass crct10dif_pclmul crc32_pclmul snd_seq_midi ghash_clmulni_intel snd_seq_midi_event i2c_algo_bit intel_cstate snd_rawmidi intel_uncore snd_seq drm_kms_helper e1000e snd_seq_device snd_timer intel_rapl_perf
      drm ptp snd mei_me mei lpc_ich pps_core soundcore video crc32c_intel
     CPU: 0 PID: 8713 Comm: v4l2-compliance Tainted: G    B            4.16.0-rc4+ #108
     Hardware name:  /NUC5i7RYB, BIOS RYBDWi35.86A.0364.2017.0511.0949 05/11/2017
     RIP: 0010:__put_v4l2_format32+0x98/0x4d0 [videodev]
     RSP: 0018:ffff8803b9be7d30 EFLAGS: 00010282
     RAX: 0000000000000000 RBX: ffff8803ac983e80 RCX: ffffffff8cd929f2
     RDX: 1ffffffff1d0a149 RSI: 0000000000000297 RDI: 0000000000000297
     RBP: 00000000ffe485c0 R08: fffffbfff1cf5123 R09: ffffffff8e7a8948
     R10: 0000000000000001 R11: fffffbfff1cf5122 R12: 00000000ffe483e0
     R13: 00000000ffe485c4 R14: ffff8803ac985918 R15: 00000000ffe483e8
     FS:  0000000000000000(0000) GS:ffff880407400000(0063) knlGS:00000000f7a46980
     CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
     CR2: 00000000ffe48400 CR3: 00000003a83f2003 CR4: 00000000003606f0
     Call Trace:
      v4l2_compat_ioctl32+0x1aec/0x27a0 [videodev]
      ? __fsnotify_inode_delete+0x20/0x20
      ? __put_v4l2_format32+0x4d0/0x4d0 [videodev]
      compat_SyS_ioctl+0x646/0x14d0
      ? do_ioctl+0x30/0x30
      do_fast_syscall_32+0x191/0x3f4
      entry_SYSENTER_compat+0x6b/0x7a
     Code: 4c 89 f7 4d 8d 7c 24 08 e8 e6 a4 69 cb 48 8b 83 98 1a 00 00 48 83 e8 10 49 39 c7 0f 87 9d 01 00 00 49 8d 7c 24 20 e8 c8 a4 69 cb <4d> 8b 74 24 20 4c 89 ef 4c 89 fe ba 10 00 00 00 e8 23 d9 08 cc
     RIP: __put_v4l2_format32+0x98/0x4d0 [videodev] RSP: ffff8803b9be7d30
     CR2: 00000000ffe48400
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c11fff921784c570c9fa491f980216751b62339e
Author: Ondrej Zary <linux@rainbow-software.org>
Date:   Tue Apr 3 10:24:34 2018 -0700

    Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad
    
    commit 04bb1719c4de94700056241d4c0fe3c1413f5aff upstream.
    
    The touch sensor buttons on Sony VAIO VGN-CS series laptops (e.g.
    VGN-CS31S) are a separate PS/2 device. As the MUX is disabled for all
    VAIO machines by the nomux blacklist, the data from touch sensor
    buttons and touchpad are combined. The protocol used by the buttons is
    probably similar to the touchpad protocol (both are Synaptics) so both
    devices get enabled. The controller combines the data, creating a mess
    which results in random button clicks, touchpad stopping working and
    lost sync error messages:
    psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 4
    psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
    psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
    psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
    psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1
    psmouse serio1: issuing reconnect request
    
    Add a new i8042_dmi_forcemux_table whitelist with VGN-CS.
    With MUX enabled, touch sensor buttons are detected as separate device
    (and left disabled as there's currently no driver), fixing all touchpad
    problems.
    
    Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 898f78e0d5c45346e64a2e75e3631f91313dbbef
Author: Richard Weinberger <richard@nod.at>
Date:   Sat Mar 3 11:45:54 2018 +0100

    ubi: Reject MLC NAND
    
    commit b5094b7f135be34630e3ea8a98fa215715d0f29d upstream.
    
    While UBI and UBIFS seem to work at first sight with MLC NAND, you will
    most likely lose all your data upon a power-cut or due to read/write
    disturb.
    In order to protect users from bad surprises, refuse to attach to MLC
    NAND.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Acked-by: Artem Bityutskiy <dedekind1@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 389751407708d34f91b43869a6f37fa8a70c2d5e
Author: Romain Izard <romain.izard.pro@gmail.com>
Date:   Mon Jan 29 11:18:20 2018 +0100

    ubi: Fix error for write access
    
    commit 78a8dfbabbece22bee58ac4cb26cab10e7a19c5d upstream.
    
    When opening a device with write access, ubiblock_open returns an error
    code. Currently, this error code is -EPERM, but this is not the right
    value.
    
    The open function for other block devices returns -EROFS when opening
    read-only devices with FMODE_WRITE set. When used with dm-verity, the
    veritysetup userspace tool is expecting EROFS, and refuses to use the
    ubiblock device.
    
    Use -EROFS for ubiblock as well. As a result, veritysetup accepts the
    ubiblock device as valid.
    
    Fixes: 9d54c8a33eec (UBI: R/O block driver on top of UBI volumes)
    Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 353a1a581c51b75e83fbff213c42a635772bacd5
Author: Richard Weinberger <richard@nod.at>
Date:   Wed Jan 17 19:12:42 2018 +0100

    ubifs: Check ubifs_wbuf_sync() return code
    
    commit aac17948a7ce01fb60b9ee6cf902967a47b3ce26 upstream.
    
    If ubifs_wbuf_sync() fails we must not write a master node with the
    dirty marker cleared.
    Otherwise it is possible that in case of an IO error while syncing we
    mark the filesystem as clean and UBIFS refuses to recover upon next
    mount.
    
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f4febd4500a2a23639146608fd74955b776ec31e
Author: Peng Hao <peng.hao2@zte.com.cn>
Date:   Mon Apr 2 09:15:32 2018 +0800

    kvm: x86: fix a compile warning
    
    commit 3140c156e919b0f5fad5c5f6cf7876c39d1d4f06 upstream.
    
    fix a "warning: no previous prototype".
    
    Signed-off-by: Peng Hao <peng.hao2@zte.com.cn>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e75f9791d2ccbb25ee41527e1fab629d2252a465
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 2 15:58:56 2018 -0700

    net: systemport: Fix sparse warnings in bcm_sysport_insert_tsb()
    
    commit c0eb05585d4184596453622b5abba7d13dd20667 upstream.
    
    skb->protocol is a __be16 which we would be calling htons() against,
    while this is not wrong per-se as it correctly results in swapping the
    value on LE hosts, this still upsets sparse. Adopt a similar pattern to
    what other drivers do and just assign ip_ver to skb->protocol, and then
    use htons() against the different constants such that the compiler can
    resolve the values at build time.
    
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ac74a32685b1bb497b412fdaab0bcde902fccb26
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Apr 2 15:58:55 2018 -0700

    net: bcmgenet: Fix sparse warnings in bcmgenet_put_tx_csum()
    
    commit 6f89421180f15867dc1472d9edf68f82b0ed5ee6 upstream.
    
    skb->protocol is a __be16 which we would be calling htons() against,
    while this is not wrong per-se as it correctly results in swapping the
    value on LE hosts, this still upsets sparse. Adopt a similar pattern to
    what other drivers do and just assign ip_ver to skb->protocol, and then
    use htons() against the different constants such that the compiler can
    resolve the values at build time.
    
    Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e02bc51c216468de6084e0e1d08b29d7e0008ecf
Author: Alex Smith <alex.smith@imgtec.com>
Date:   Wed Mar 28 18:00:43 2018 -0300

    mmc: jz4740: Fix race condition in IRQ mask update
    
    commit a04f0017c22453613d5f423326b190c61e3b4f98 upstream.
    
    A spinlock is held while updating the internal copy of the IRQ mask,
    but not while writing it to the actual IMASK register. After the lock
    is released, an IRQ can occur before the IMASK register is written.
    If handling this IRQ causes the mask to be changed, when the handler
    returns back to the middle of the first mask update, a stale value
    will be written to the mask register.
    
    If this causes an IRQ to become unmasked that cannot have its status
    cleared by writing a 1 to it in the IREG register, e.g. the SDIO IRQ,
    then we can end up stuck with the same IRQ repeatedly being fired but
    not handled. Normally the MMC IRQ handler attempts to clear any
    unexpected IRQs by writing IREG, but for those that cannot be cleared
    in this way then the IRQ will just repeatedly fire.
    
    This was resulting in lockups after a while of using Wi-Fi on the
    CI20 (GitHub issue #19).
    
    Resolve by holding the spinlock until after the IMASK register has
    been updated.
    
    Link: https://github.com/MIPS/CI20_linux/issues/19
    Fixes: 61bfbdb85687 ("MMC: Add support for the controller on JZ4740 SoCs.")
    Tested-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Alex Smith <alex.smith@imgtec.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d083268bd9ec08fd35fd2cce8faffa4dcdb06d24
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date:   Fri Mar 30 17:34:08 2018 +0530

    powerpc/mm/hugetlb: initialize the pagetable cache correctly for hugetlb
    
    commit 6fa504835d6969144b2bd3699684dd447c789ba2 upstream.
    
    With 64k page size, we have hugetlb pte entries at the pmd and pud level for
    book3s64. We don't need to create a separate page table cache for that. With 4k
    we need to make sure hugepd page table cache for 16M is placed at PUD level
    and 16G at the PGD level.
    
    Simplify all these by not using HUGEPD_PD_SHIFT which is confusing for book3s64.
    
    Without this patch, with 64k page size we create pagetable caches with shift
    value 10 and 7 which are not used at all.
    
    Fixes: 419df06eea5b ("powerpc: Reduce the PTE_INDEX_SIZE")
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: Don't use an #ifdef because this implementation of
     hugetlbpage_init() is only used if CONFIG_PPC_BOOK3S_64 is enabled.]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ad9569a1e82e1307e80ca47f54459ae055517852
Author: Roland Dreier <roland@purestorage.com>
Date:   Tue Apr 3 15:33:01 2018 -0700

    RDMA/ucma: Don't allow setting RDMA_OPTION_IB_PATH without an RDMA device
    
    commit 8435168d50e66fa5eae01852769d20a36f9e5e83 upstream.
    
    Check to make sure that ctx->cm_id->device is set before we use it.
    Otherwise userspace can trigger a NULL dereference by doing
    RDMA_USER_CM_CMD_SET_OPTION on an ID that is not bound to a device.
    
    Reported-by: <syzbot+a67bc93e14682d92fc2f@syzkaller.appspotmail.com>
    Signed-off-by: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d63fcea91f2e25ede4624bce4ac5e34c7851c9b3
Author: Paul Parsons <lost.distance@yahoo.com>
Date:   Sat Apr 2 12:32:30 2016 +0100

    drm/radeon: Fix PCIe lane width calculation
    
    commit 85e290d92b4b794d0c758c53007eb4248d385386 upstream.
    
    Two years ago I tried an AMD Radeon E8860 embedded GPU with the drm driver.
    The dmesg output included driver warnings about an invalid PCIe lane width.
    Tracking the problem back led to si_set_pcie_lane_width_in_smc().
    The calculation of the lane widths via ATOM_PPLIB_PCIE_LINK_WIDTH_MASK and
    ATOM_PPLIB_PCIE_LINK_WIDTH_SHIFT macros did not increment the resulting
    value, per the comment in pptable.h ("lanes - 1"), and per usage elsewhere.
    Applying the increment silenced the warnings.
    The code has not changed since, so either my analysis was incorrect or the
    bug has gone unnoticed. Hence submitting this as an RFC.
    
    Acked-by: Christian König <christian.koenig@amd.com>
    Acked-by: Chunming Zhou <david1.zhou@amd.com>
    Signed-off-by: Paul Parsons <lost.distance@yahoo.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c3124fdd7eb82df3f0e3fcb601cccaefa6d59d0
Author: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Date:   Wed Mar 28 20:14:05 2018 +0100

    rtc: snvs: Fix usage of snvs_rtc_enable
    
    commit 1485991c024603b2fb4ae77beb7a0d741128a48e upstream.
    
    commit 179a502f8c46 ("rtc: snvs: add Freescale rtc-snvs driver") introduces
    the SNVS RTC driver with a function snvs_rtc_enable().
    
    snvs_rtc_enable() can return an error on the enable path however this
    driver does not currently trap that failure on the probe() path and
    consequently if enabling the RTC fails we encounter a later error spinning
    forever in rtc_write_sync_lp().
    
    [   36.093481] [<c010d630>] (__irq_svc) from [<c0c2e9ec>] (_raw_spin_unlock_irqrestore+0x34/0x44)
    [   36.102122] [<c0c2e9ec>] (_raw_spin_unlock_irqrestore) from [<c072e32c>] (regmap_read+0x4c/0x5c)
    [   36.110938] [<c072e32c>] (regmap_read) from [<c085d0f4>] (rtc_write_sync_lp+0x6c/0x98)
    [   36.118881] [<c085d0f4>] (rtc_write_sync_lp) from [<c085d160>] (snvs_rtc_alarm_irq_enable+0x40/0x4c)
    [   36.128041] [<c085d160>] (snvs_rtc_alarm_irq_enable) from [<c08567b4>] (rtc_timer_do_work+0xd8/0x1a8)
    [   36.137291] [<c08567b4>] (rtc_timer_do_work) from [<c01441b8>] (process_one_work+0x28c/0x76c)
    [   36.145840] [<c01441b8>] (process_one_work) from [<c01446cc>] (worker_thread+0x34/0x58c)
    [   36.153961] [<c01446cc>] (worker_thread) from [<c014aee4>] (kthread+0x138/0x150)
    [   36.161388] [<c014aee4>] (kthread) from [<c0107e14>] (ret_from_fork+0x14/0x20)
    [   36.168635] rcu_sched kthread starved for 2602 jiffies! g496 c495 f0x2 RCU_GP_WAIT_FQS(3) ->state=0x0 ->cpu=0
    [   36.178564] rcu_sched       R  running task        0     8      2 0x00000000
    [   36.185664] [<c0c288b0>] (__schedule) from [<c0c29134>] (schedule+0x3c/0xa0)
    [   36.192739] [<c0c29134>] (schedule) from [<c0c2db80>] (schedule_timeout+0x78/0x4e0)
    [   36.200422] [<c0c2db80>] (schedule_timeout) from [<c01a7ab0>] (rcu_gp_kthread+0x648/0x1864)
    [   36.208800] [<c01a7ab0>] (rcu_gp_kthread) from [<c014aee4>] (kthread+0x138/0x150)
    [   36.216309] [<c014aee4>] (kthread) from [<c0107e14>] (ret_from_fork+0x14/0x20)
    
    This patch fixes by parsing the result of rtc_write_sync_lp() and
    propagating both in the probe and elsewhere. If the RTC doesn't start we
    don't proceed loading the driver and don't get into this loop mess later
    on.
    
    Fixes: 179a502f8c46 ("rtc: snvs: add Freescale rtc-snvs driver")
    Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
    Acked-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    [bwh: Backported to 3.16:
     - No cleanup is needed on error in snvs_rtc_probe(); just return
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bdeb296a525803f93120f751a22a0207388550f5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 2 22:41:43 2018 +0200

    ALSA: pcm: Fix UAF at PCM release via PCM timer access
    
    commit a820ccbe21e8ce8e86c39cd1d3bc8c7d1cbb949b upstream.
    
    The PCM runtime object is created and freed dynamically at PCM stream
    open / close time.  This is tracked via substream->runtime, and it's
    cleared at snd_pcm_detach_substream().
    
    The runtime object assignment is protected by PCM open_mutex, so for
    all PCM operations, it's safely handled.  However, each PCM substream
    provides also an ALSA timer interface, and user-space can access to
    this while closing a PCM substream.  This may eventually lead to a
    UAF, as snd_pcm_timer_resolution() tries to access the runtime while
    clearing it in other side.
    
    Fortunately, it's the only concurrent access from the PCM timer, and
    it merely reads runtime->timer_resolution field.  So, we can avoid the
    race by reordering kfree() and wrapping the substream->runtime
    clearance with the corresponding timer lock.
    
    Reported-by: syzbot+8e62ff4e07aa2ce87826@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e800c3836e2c34aa32b6c46aba0b73cb2bb00f29
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sun Apr 1 23:21:03 2018 -0400

    ext4: force revalidation of directory pointer after seekdir(2)
    
    commit e40ff213898502d299351cc2fe1e350cd186f0d3 upstream.
    
    A malicious user could force the directory pointer to be in an invalid
    spot by using seekdir(2).  Use the mechanism we already have to notice
    if the directory has changed since the last time we called
    ext4_readdir() to force a revalidation of the pointer.
    
    Reported-by: syzbot+1236ce66f79263e8a862@syzkaller.appspotmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: open-code inode_peek_iversion()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ac73160915f5067339cd6e3380e0f241e3eacc34
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Tue Feb 13 15:42:30 2018 +1100

    cifs: fix memory leak in SMB2_open()
    
    commit b7a73c84eb96dabd6bb8e9d7c56f796d83efee8e upstream.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    [bwh: Backported to 3.16: Only one of the failure paths exists here]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit be0bc017007aef82f074627bd83e6af2a3b0425d
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Sat Mar 31 23:42:03 2018 +0800

    sky2: Increase D3 delay to sky2 stops working after suspend
    
    commit afb133637071be6deeb8b3d0e55593ffbf63c527 upstream.
    
    The sky2 ethernet stops working after system resume from suspend:
    [ 582.852065] sky2 0000:04:00.0: Refused to change power state, currently in D3
    
    The current 150ms delay is not enough, change it to 200ms can solve the
    issue.
    
    BugLink: https://bugs.launchpad.net/bugs/1758507
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1fa695d75aeec2d64d431bafb1e7e080af6d73bd
Author: Michael Neuling <mikey@neuling.org>
Date:   Mon Mar 26 15:17:07 2018 +1100

    powerpc/eeh: Fix race with driver un/bind
    
    commit f0295e047fcf52ccb42561fb7de6942f5201b676 upstream.
    
    The current EEH callbacks can race with a driver unbind. This can
    result in a backtraces like this:
    
      EEH: Frozen PHB#0-PE#1fc detected
      EEH: PE location: S000009, PHB location: N/A
      CPU: 2 PID: 2312 Comm: kworker/u258:3 Not tainted 4.15.6-openpower1 #2
      Workqueue: nvme-wq nvme_reset_work [nvme]
      Call Trace:
        dump_stack+0x9c/0xd0 (unreliable)
        eeh_dev_check_failure+0x420/0x470
        eeh_check_failure+0xa0/0xa4
        nvme_reset_work+0x138/0x1414 [nvme]
        process_one_work+0x1ec/0x328
        worker_thread+0x2e4/0x3a8
        kthread+0x14c/0x154
        ret_from_kernel_thread+0x5c/0xc8
      nvme nvme1: Removing after probe failure status: -19
      <snip>
      cpu 0x23: Vector: 300 (Data Access) at [c000000ff50f3800]
          pc: c0080000089a0eb0: nvme_error_detected+0x4c/0x90 [nvme]
          lr: c000000000026564: eeh_report_error+0xe0/0x110
          sp: c000000ff50f3a80
         msr: 9000000000009033
         dar: 400
       dsisr: 40000000
        current = 0xc000000ff507c000
        paca    = 0xc00000000fdc9d80   softe: 0        irq_happened: 0x01
          pid   = 782, comm = eehd
      Linux version 4.15.6-openpower1 (smc@smc-desktop) (gcc version 6.4.0 (Buildroot 2017.11.2-00008-g4b6188e)) #2 SM                                             P Tue Feb 27 12:33:27 PST 2018
      enter ? for help
        eeh_report_error+0xe0/0x110
        eeh_pe_dev_traverse+0xc0/0xdc
        eeh_handle_normal_event+0x184/0x4c4
        eeh_handle_event+0x30/0x288
        eeh_event_handler+0x124/0x170
        kthread+0x14c/0x154
        ret_from_kernel_thread+0x5c/0xc8
    
    The first part is an EEH (on boot), the second half is the resulting
    crash. nvme probe starts the nvme_reset_work() worker thread. This
    worker thread starts touching the device which see a device error
    (EEH) and hence queues up an event in the powerpc EEH worker
    thread. nvme_reset_work() then continues and runs
    nvme_remove_dead_ctrl_work() which results in unbinding the driver
    from the device and hence releases all resources. At the same time,
    the EEH worker thread starts doing the EEH .error_detected() driver
    callback, which no longer works since the resources have been freed.
    
    This fixes the problem in the same way the generic PCIe AER code (in
    drivers/pci/pcie/aer/aerdrv_core.c) does. It makes the EEH code hold
    the device_lock() while performing the driver EEH callbacks and
    associated code. This ensures either the callbacks are no longer
    register, or if they are registered the driver will not be removed
    from underneath us.
    
    This has been broken forever. The EEH call backs were first introduced
    in 2005 (in 77bd7415610) but it's not clear if a lock was needed back
    then.
    
    Fixes: 77bd74156101 ("[PATCH] powerpc: PCI Error Recovery: PPC64 core recovery routines")
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Reviewed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0bd1227c5da1de5aa05abb027dbcd2716a5e6573
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Mar 30 20:04:11 2018 -0400

    ext4: add extra checks to ext4_xattr_block_get()
    
    commit 54dd0e0a1b255f115f8647fc6fb93273251b01b9 upstream.
    
    Add explicit checks in ext4_xattr_block_get() just in case the
    e_value_offs and e_value_size fields in the the xattr block are
    corrupted in memory after the buffer_verified bit is set on the xattr
    block.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16:
     - Drop change to ext4_xattr_check_entries() which is only needed for the
       xattr-in-inode case
     - Adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9873ed598a2dae5682ce0b8685a1307416d3fc28
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Dec 1 14:57:29 2016 -0500

    ext4: correctly detect when an xattr value has an invalid size
    
    commit d7614cc16146e3f0b4c33e71875c19607602aed5 upstream.
    
    It was possible for an xattr value to have a very large size, which
    would then pass validation on 32-bit architectures due to a pointer
    wraparound.  Fix this by validating the size in a way which avoids
    pointer wraparound.
    
    It was also possible that a value's size would fit in the available
    space but its padded size would not.  This would cause an out-of-bounds
    memory write in ext4_xattr_set_entry when replacing the xattr value.
    For example, if an xattr value of unpadded size 253 bytes went until the
    very end of the inode or block, then using setxattr(2) to replace this
    xattr's value with 256 bytes would cause a write to the 3 bytes past the
    end of the inode or buffer, and the new xattr value would be incorrectly
    truncated.  Fix this by requiring that the padded size fit in the
    available space rather than the unpadded size.
    
    This patch shouldn't have any noticeable effect on
    non-corrupted/non-malicious filesystems.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16:
     - s/EFSCORRUPTED/EIO/
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 529d936876b4745ff08886062cb92a7bc5c14268
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Mar 27 20:44:18 2018 +0800

    btrfs: tests/qgroup: Fix wrong tree backref level
    
    commit 3c0efdf03b2d127f0e40e30db4e7aa0429b1b79a upstream.
    
    The extent tree of the test fs is like the following:
    
     BTRFS info (device (null)): leaf 16327509003777336587 total ptrs 1 free space 3919
      item 0 key (4096 168 4096) itemoff 3944 itemsize 51
              extent refs 1 gen 1 flags 2
              tree block key (68719476736 0 0) level 1
                                               ^^^^^^^
              ref#0: tree block backref root 5
    
    And it's using an empty tree for fs tree, so there is no way that its
    level can be 1.
    
    For REAL (created by mkfs) fs tree backref with no skinny metadata, the
    result should look like:
    
     item 3 key (30408704 EXTENT_ITEM 4096) itemoff 3845 itemsize 51
             refs 1 gen 4 flags TREE_BLOCK
             tree block key (256 INODE_ITEM 0) level 0
                                               ^^^^^^^
             tree block backref root 5
    
    Fix the level to 0, so it won't break later tree level checker.
    
    Fixes: faa2dbf004e8 ("Btrfs: add sanity tests for new qgroup accounting code")
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d523d30a25dffc2cea15caa016458c1a8e4730b9
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Mar 26 23:59:12 2018 +0100

    Btrfs: fix copy_items() return value when logging an inode
    
    commit 8434ec46c6e3232cebc25a910363b29f5c617820 upstream.
    
    When logging an inode, at tree-log.c:copy_items(), if we call
    btrfs_next_leaf() at the loop which checks for the need to log holes, we
    need to make sure copy_items() returns the value 1 to its caller and
    not 0 (on success). This is because the path the caller passed was
    released and is now different from what is was before, and the caller
    expects a return value of 0 to mean both success and that the path
    has not changed, while a return value of 1 means both success and
    signals the caller that it can not reuse the path, it has to perform
    another tree search.
    
    Even though this is a case that should not be triggered on normal
    circumstances or very rare at least, its consequences can be very
    unpredictable (especially when replaying a log tree).
    
    Fixes: 16e7549f045d ("Btrfs: incompatible format change to remove hole extents")
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9fd462925251ca11403f3ca304063622dd85ccf9
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Mar 30 20:00:56 2018 -0400

    ext4: add bounds checking to ext4_xattr_find_entry()
    
    commit 9496005d6ca4cf8f5ee8f828165a8956872dc59d upstream.
    
    Add some paranoia checks to make sure we don't stray beyond the end of
    the valid memory region containing ext4 xattr entries while we are
    scanning for a match.
    
    Also rename the function to xattr_find_entry() since it is static and
    thus only used in fs/ext4/xattr.c
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16:
     - Keep passing an explicit size to xattr_find_entry()
     - s/EFSCORRUPTED/EIO/]]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 044bfc32ebb08ff68bc9840dc3c1f6726b0f1f44
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Mon Mar 12 14:48:09 2018 +0200

    btrfs: Handle error from btrfs_uuid_tree_rem call in _btrfs_ioctl_set_received_subvol
    
    commit d87ff75863e92a500538ab53318c5740f196631e upstream.
    
    As with every function which deals with modifying the btree
    btrfs_uuid_tree_rem can fail for any number of reasons (ie. EIO/ENOMEM).
    Handle return error value from this function gracefully by aborting the
    transaction.
    
    Fixes: dd5f9615fc5c ("Btrfs: maintain subvolume items in the UUID tree")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16:
     - btrfs_{abort,end}_transaction() take a pointer to btrfs_root
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98983aec6b61d08aa0c1d310b57eeadff7c39072
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Thu Sep 28 11:45:26 2017 +0300

    btrfs: Refactor transaction handling in received subvolume ioctl
    
    commit efd38150af45375b46576d0110a323d7fab7e142 upstream.
    
    If btrfs_transaction_commit fails it will proceed to call
    cleanup_transaction, which in turn already does btrfs_abort_transaction.
    So let's remove the unnecessary code duplication. Also let's be explicit
    about handling failure of btrfs_uuid_tree_add by calling
    btrfs_end_transaction.
    
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16:
     - btrfs_{abort,end}_transaction() take a pointer to btrfs_root
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 16ba2d2e9a7cf9402880d9eace27c343d77e0f7f
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Mar 26 08:53:25 2018 +0800

    crypto: ahash - Fix early termination in hash walk
    
    commit 900a081f6912a8985dc15380ec912752cb66025a upstream.
    
    When we have an unaligned SG list entry where there is no leftover
    aligned data, the hash walk code will incorrectly return zero as if
    the entire SG list has been processed.
    
    This patch fixes it by moving onto the next page instead.
    
    Reported-by: Eli Cooper <elicooper@gmx.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aac64fea65760c68003fc068ce760f4007d0418f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Mar 29 12:01:53 2018 +0300

    xen/acpi: off by one in read_acpi_id()
    
    commit c37a3c94775855567b90f91775b9691e10bd2806 upstream.
    
    If acpi_id is == nr_acpi_bits, then we access one element beyond the end
    of the acpi_psd[] array or we set one bit beyond the end of the bit map
    when we do __set_bit(acpi_id, acpi_id_present);
    
    Fixes: 59a568029181 ("xen/acpi-processor: C and P-state driver that uploads said data to hypervisor.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b582d0925e2b8fdf0c16013afa02b6cf65cbf969
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Thu Mar 22 20:41:46 2018 +1000

    powerpc/64: Fix smp_wmb barrier definition use use lwsync consistently
    
    commit 0bfdf598900fd62869659f360d3387ed80eb71cf upstream.
    
    asm/barrier.h is not always included after asm/synch.h, which meant
    it was missing __SUBARCH_HAS_LWSYNC, so in some files smp_wmb() would
    be eieio when it should be lwsync. kernel/time/hrtimer.c is one case.
    
    __SUBARCH_HAS_LWSYNC is only used in one place, so just fold it in
    to where it's used. Previously with my small simulator config, 377
    instances of eieio in the tree. After this patch there are 55.
    
    Fixes: 46d075be585e ("powerpc: Optimise smp_wmb")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8a9a653b0586354232b3e9e53eb091412c343bd
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Mar 27 01:02:33 2018 +1000

    powerpc/powernv: Handle unknown OPAL errors in opal_nvram_write()
    
    commit 741de617661794246f84a21a02fc5e327bffc9ad upstream.
    
    opal_nvram_write currently just assumes success if it encounters an
    error other than OPAL_BUSY or OPAL_BUSY_EVENT. Have it return -EIO
    on other errors instead.
    
    Fixes: 628daa8d5abf ("powerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
    Acked-by: Stewart Smith <stewart@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f5a56515177ffba783957ff15d6eeb60806b2015
Author: Martin Kelly <mkelly@xevo.com>
Date:   Mon Mar 26 14:27:52 2018 -0700

    iio:kfifo_buf: check for uint overflow
    
    commit 3d13de4b027d5f6276c0f9d3a264f518747d83f2 upstream.
    
    Currently, the following causes a kernel OOPS in memcpy:
    
    echo 1073741825 > buffer/length
    echo 1 > buffer/enable
    
    Note that using 1073741824 instead of 1073741825 causes "write error:
    Cannot allocate memory" but no OOPS.
    
    This is because 1073741824 == 2^30 and 1073741825 == 2^30+1. Since kfifo
    rounds up to the nearest power of 2, it will actually call kmalloc with
    roundup_pow_of_two(length) * bytes_per_datum.
    
    Using length == 1073741825 and bytes_per_datum == 2, we get:
    
    kmalloc(roundup_pow_of_two(1073741825) * 2
    or kmalloc(2147483648 * 2)
    or kmalloc(4294967296)
    or kmalloc(UINT_MAX + 1)
    
    so this overflows to 0, causing kmalloc to return ZERO_SIZE_PTR and
    subsequent memcpy to fail once the device is enabled.
    
    Fix this by checking for overflow prior to allocating a kfifo. With this
    check added, the above code returns -EINVAL when enabling the buffer,
    rather than causing an OOPS.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e70dd43a078e3cebcc1a044950d93cd8621b7e2
Author: Martin Kelly <mkelly@xevo.com>
Date:   Mon Mar 26 14:27:51 2018 -0700

    iio:buffer: make length types match kfifo types
    
    commit c043ec1ca5baae63726aae32abbe003192bc6eec upstream.
    
    Currently, we use int for buffer length and bytes_per_datum. However,
    kfifo uses unsigned int for length and size_t for element size. We need
    to make sure these matches or we will have bugs related to overflow (in
    the range between INT_MAX and UINT_MAX for length, for example).
    
    In addition, set_bytes_per_datum uses size_t while bytes_per_datum is an
    int, which would cause bugs for large values of bytes_per_datum.
    
    Change buffer length to use unsigned int and bytes_per_datum to use
    size_t.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [bwh: Backported to 3.16:
     - Drop change in iio_dma_buffer_set_length()
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c06c9284eb36773e8c9e992ac8a4da580906a65f
Author: Heinrich Schuchardt <xypron.glpk@gmx.de>
Date:   Thu Mar 29 10:48:28 2018 -0500

    usb: musb: gadget: misplaced out of bounds check
    
    commit af6f8529098aeb0e56a68671b450cf74e7a64fcd upstream.
    
    musb->endpoints[] has array size MUSB_C_NUM_EPS.
    We must check array bounds before accessing the array and not afterwards.
    
    Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d66cbed98ede5c6a4113ccc3e28afe41e025ea9d
Author: Markus Elfring <elfring@users.sourceforge.net>
Date:   Wed Mar 28 16:34:27 2018 +0200

    video/fbdev/stifb: Return -ENOMEM after a failed kzalloc() in stifb_init_fb()
    
    commit f9815f945aff2204b8afbbb9d2182024eb44a194 upstream.
    
    Replace an error code for the indication of a memory allocation failure
    in this function.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2: Initial git repository build")
    Suggested-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Cc: Helge Deller <deller@gmx.de>
    Cc: "James E. J. Bottomley" <jejb@parisc-linux.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e342e3191f357b679db97456aef824dd9b278cf
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Mar 23 01:11:29 2018 -0500

    ipc/sem: Fix semctl(..., GETPID, ...) between pid namespaces
    
    commit 51d6f2635b39709ee5e62479be23d423b760292c upstream.
    
    Today the last process to update a semaphore is remembered and
    reported in the pid namespace of that process.  If there are processes
    in any other pid namespace querying that process id with GETPID the
    result will be unusable nonsense as it does not make any
    sense in your own pid namespace.
    
    Due to ipc_update_pid I don't think you will be able to get System V
    ipc semaphores into a troublesome cache line ping-pong.  Using struct
    pids from separate process are not a problem because they do not share
    a cache line.  Using struct pid from different threads of the same
    process are unlikely to be a problem as the reference count update
    can be avoided.
    
    Further linux futexes are a much better tool for the job of mutual
    exclusion between processes than System V semaphores.  So I expect
    programs that  are performance limited by their interprocess mutual
    exclusion primitive will be using futexes.
    
    So while it is possible that enhancing the storage of the last
    rocess of a System V semaphore from an integer to a struct pid
    will cause a performance regression because of the effect
    of frequently updating the pid reference count.  I don't expect
    that to happen in practice.
    
    This change updates semctl(..., GETPID, ...) to return the
    process id of the last process to update a semphore inthe
    pid namespace of the calling process.
    
    Fixes: b488893a390e ("pid namespaces: changes to show virtual ids to user")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16:
     - sem_queue::pid was also used to store an error temporarily; add a new
       wake_error field for this purpose
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c88a3aba2f87cc3d835aabe75bf3bb6b04dafe51
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Tue Mar 22 14:27:48 2016 -0700

    ipc/sem: make semctl setting sempid consistent
    
    commit a5f4db877177d2a3d7ae62a7bac3a5a27e083d7f upstream.
    
    As indicated by bug#112271, Linux sets the sempid value upon semctl, and
    not only for semop calls.  However, within semctl we only do this for
    SETVAL, leaving SETALL without updating the field, and therefore rather
    inconsistent behavior when compared to other Unices.
    
    There is really no documentation regarding this and therefore users
    should not make assumptions.  With this patch, along with updating
    semctl.2 manpages, this scenario should become less ambiguous As such,
    set sempid on SETALL cmd.
    
    Also update some in-code documentation, specifying where the sempid is
    set.
    
    Passes ltp and custom testcase where a child (fork) does SETALL to the
    set.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Philip Semanchuk <linux_kernel.20.ick@spamgourmet.com>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Herton R. Krzesinski <herton@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95d16ca7c1af98059f39ca43c17aa2f02d652a0c
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Mar 23 00:42:21 2018 -0500

    ipc/msg: Fix msgctl(..., IPC_STAT, ...) between pid namespaces
    
    commit 39a4940eaa185910bb802ca9829c12268fd2c855 upstream.
    
    Today msg_lspid and msg_lrpid are remembered in the pid namespace of
    the creator and the processes that last send or received a sysvipc
    message.  If you have processes in multiple pid namespaces that is
    just wrong.  The process ids reported will not make the least bit of
    sense.
    
    This fix is slightly more susceptible to a performance problem than
    the related fix for System V shared memory.  By definition the pids
    are updated by msgsnd and msgrcv, the fast path of System V message
    queues.  The only concern over the previous implementation is the
    incrementing and decrementing of the pid reference count.  As that is
    the only difference and multiple updates by of the task_tgid by
    threads in the same process have been shown in af_unix sockets to
    create a cache line ping-pong between cpus of the same processor.
    
    In this case I don't expect cache lines holding pid reference counts
    to ping pong between cpus.  As senders and receivers update different
    pids there is a natural separation there.  Further if multiple threads
    of the same process either send or receive messages the pid will be
    updated to the same value and ipc_update_pid will avoid the reference
    count update.
    
    Which means in the common case I expect msg_lspid and msg_lrpid to
    remain constant, and reference counts not to be updated when messages
    are sent.
    
    In rare cases it may be possible to trigger the issue which was
    observed for af_unix sockets, but it will require multiple processes
    with multiple threads to be either sending or receiving messages.  It
    just does not feel likely that anyone would do that in practice.
    
    This change updates msgctl(..., IPC_STAT, ...) to return msg_lspid and
    msg_lrpid in the pid namespace of the process calling stat.
    
    This change also updates cat /proc/sysvipc/msg to return print msg_lspid
    and msg_lrpid in the pid namespace of the process that opened the proc
    file.
    
    Fixes: b488893a390e ("pid namespaces: changes to show virtual ids to user")
    Reviewed-by: Nagarathnam Muthusamy <nagarathnam.muthusamy@oracle.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b62f4850d9f1572f7e199993f0fee64fe760d43
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Apr 13 15:35:30 2018 -0700

    ipc/shm: fix use-after-free of shm file via remap_file_pages()
    
    commit 3f05317d9889ab75c7190dcd39491d2a97921984 upstream.
    
    syzbot reported a use-after-free of shm_file_data(file)->file->f_op in
    shm_get_unmapped_area(), called via sys_remap_file_pages().
    
    Unfortunately it couldn't generate a reproducer, but I found a bug which
    I think caused it.  When remap_file_pages() is passed a full System V
    shared memory segment, the memory is first unmapped, then a new map is
    created using the ->vm_file.  Between these steps, the shm ID can be
    removed and reused for a new shm segment.  But, shm_mmap() only checks
    whether the ID is currently valid before calling the underlying file's
    ->mmap(); it doesn't check whether it was reused.  Thus it can use the
    wrong underlying file, one that was already freed.
    
    Fix this by making the "outer" shm file (the one that gets put in
    ->vm_file) hold a reference to the real shm file, and by making
    __shm_open() require that the file associated with the shm ID matches
    the one associated with the "outer" file.
    
    Taking the reference to the real shm file is needed to fully solve the
    problem, since otherwise sfd->file could point to a freed file, which
    then could be reallocated for the reused shm ID, causing the wrong shm
    segment to be mapped (and without the required permission checks).
    
    Commit 1ac0b6dec656 ("ipc/shm: handle removed segments gracefully in
    shm_mmap()") almost fixed this bug, but it didn't go far enough because
    it didn't consider the case where the shm ID is reused.
    
    The following program usually reproduces this bug:
    
            #include <stdlib.h>
            #include <sys/shm.h>
            #include <sys/syscall.h>
            #include <unistd.h>
    
            int main()
            {
                    int is_parent = (fork() != 0);
                    srand(getpid());
                    for (;;) {
                            int id = shmget(0xF00F, 4096, IPC_CREAT|0700);
                            if (is_parent) {
                                    void *addr = shmat(id, NULL, 0);
                                    usleep(rand() % 50);
                                    while (!syscall(__NR_remap_file_pages, addr, 4096, 0, 0, 0));
                            } else {
                                    usleep(rand() % 50);
                                    shmctl(id, IPC_RMID, NULL);
                            }
                    }
            }
    
    It causes the following NULL pointer dereference due to a 'struct file'
    being used while it's being freed.  (I couldn't actually get a KASAN
    use-after-free splat like in the syzbot report.  But I think it's
    possible with this bug; it would just take a more extraordinary race...)
    
            BUG: unable to handle kernel NULL pointer dereference at 0000000000000058
            PGD 0 P4D 0
            Oops: 0000 [#1] SMP NOPTI
            CPU: 9 PID: 258 Comm: syz_ipc Not tainted 4.16.0-05140-gf8cf2f16a7c95 #189
            Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-20171110_100015-anatol 04/01/2014
            RIP: 0010:d_inode include/linux/dcache.h:519 [inline]
            RIP: 0010:touch_atime+0x25/0xd0 fs/inode.c:1724
            [...]
            Call Trace:
             file_accessed include/linux/fs.h:2063 [inline]
             shmem_mmap+0x25/0x40 mm/shmem.c:2149
             call_mmap include/linux/fs.h:1789 [inline]
             shm_mmap+0x34/0x80 ipc/shm.c:465
             call_mmap include/linux/fs.h:1789 [inline]
             mmap_region+0x309/0x5b0 mm/mmap.c:1712
             do_mmap+0x294/0x4a0 mm/mmap.c:1483
             do_mmap_pgoff include/linux/mm.h:2235 [inline]
             SYSC_remap_file_pages mm/mmap.c:2853 [inline]
             SyS_remap_file_pages+0x232/0x310 mm/mmap.c:2769
             do_syscall_64+0x64/0x1a0 arch/x86/entry/common.c:287
             entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    [ebiggers@google.com: add comment]
      Link: http://lkml.kernel.org/r/20180410192850.235835-1-ebiggers3@gmail.com
    Link: http://lkml.kernel.org/r/20180409043039.28915-1-ebiggers3@gmail.com
    Reported-by: syzbot+d11f321e7f1923157eac80aa990b446596f46439@syzkaller.appspotmail.com
    Fixes: c8d78c1823f4 ("mm: replace remap_file_pages() syscall with emulation")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: "Eric W . Biederman" <ebiederm@xmission.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ecc23ca1da7596dcf39d2ef98fe33e4e05532a8a
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Mar 23 00:29:57 2018 -0500

    ipc/shm: Fix shmctl(..., IPC_STAT, ...) between pid namespaces.
    
    commit 98f929b1bd4d0b7c7a77d0d9776d1b924db2e454 upstream.
    
    Today shm_cpid and shm_lpid are remembered in the pid namespace of the
    creator and the processes that last touched a sysvipc shared memory
    segment.   If you have processes in multiple pid namespaces that
    is just wrong, and I don't know how this has been over-looked for
    so long.
    
    As only creation and shared memory attach and shared memory detach
    update the pids I do not expect there to be a repeat of the issues
    when struct pid was attached to each af_unix skb, which in some
    notable cases cut the performance in half.  The problem was threads of
    the same process updating same struct pid from different cpus causing
    the cache line to be highly contended and bounce between cpus.
    
    As creation, attach, and detach are expected to be rare operations for
    sysvipc shared memory segments I do not expect that kind of cache line
    ping pong to cause probems.  In addition because the pid is at a fixed
    location in the structure instead of being dynamic on a skb, the
    reference count of the pid does not need to be updated on each
    operation if the pid is the same.  This ability to simply skip the pid
    reference count changes if the pid is unchanging further reduces the
    likelihood of the a cache line holding a pid reference count
    ping-ponging between cpus.
    
    Fixes: b488893a390e ("pid namespaces: changes to show virtual ids to user")
    Reviewed-by: Nagarathnam Muthusamy <nagarathnam.muthusamy@oracle.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f042dd1bdaea0960ac374510b75650ab6c9e765d
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Mar 23 00:22:05 2018 -0500

    ipc/util: Helpers for making the sysvipc operations pid namespace aware
    
    commit 03f1fc09180b345582889a344b012d069b3a6dbe upstream.
    
    Capture the pid namespace when /proc/sysvipc/msg /proc/sysvipc/shm
    and /proc/sysvipc/sem are opened, and make it available through
    the new helper ipc_seq_pid_ns.
    
    This makes it possible to report the pids in these files in the
    pid namespace of the opener of the files.
    
    Implement ipc_update_pid.  A simple impline helper that will only update
    a struct pid pointer if the new value does not equal the old value.  This
    removes the need for wordy code sequences like:
    
            old = object->pid;
            object->pid = new;
            put_pid(old);
    
    and
    
            old = object->pid;
            if (old != new) {
                    object->pid = new;
                    put_pid(old);
            }
    
    Allowing the following to be written instead:
    
            ipc_update_pid(&object->pid, new);
    
    Which is easier to read and ensures that the pid reference count is
    not touched the old and the new values are the same.  Not touching
    the reference count in this case is important to help avoid issues
    like af_unix experienced, where multiple threads of the same
    process managed to bounce the struct pid between cpu cache lines,
    but updating the pids reference count.
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 29f2668de2c42cd45c01d7e0c647b5ff853c737d
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Wed Feb 17 13:11:35 2016 -0800

    ipc/shm: handle removed segments gracefully in shm_mmap()
    
    commit 1ac0b6dec656f3f78d1c3dd216fad84cb4d0a01e upstream.
    
    remap_file_pages(2) emulation can reach file which represents removed
    IPC ID as long as a memory segment is mapped.  It breaks expectations of
    IPC subsystem.
    
    Test case (rewritten to be more human readable, originally autogenerated
    by syzkaller[1]):
    
            #define _GNU_SOURCE
            #include <stdlib.h>
            #include <sys/ipc.h>
            #include <sys/mman.h>
            #include <sys/shm.h>
    
            #define PAGE_SIZE 4096
    
            int main()
            {
                    int id;
                    void *p;
    
                    id = shmget(IPC_PRIVATE, 3 * PAGE_SIZE, 0);
                    p = shmat(id, NULL, 0);
                    shmctl(id, IPC_RMID, NULL);
                    remap_file_pages(p, 3 * PAGE_SIZE, 0, 7, 0);
    
                    return 0;
            }
    
    The patch changes shm_mmap() and code around shm_lock() to propagate
    locking error back to caller of shm_mmap().
    
    [1] http://github.com/google/syzkaller
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3c6440edddde1e24fa39f2d493744dc8316ed5bb
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Wed Sep 9 15:39:20 2015 -0700

    ipc: convert invalid scenarios to use WARN_ON
    
    commit d0edd8528362c07216498340e928159510595e7b upstream.
    
    Considering Linus' past rants about the (ab)use of BUG in the kernel, I
    took a look at how we deal with such calls in ipc.  Given that any errors
    or corruption in ipc code are most likely contained within the set of
    processes participating in the broken mechanisms, there aren't really many
    strong fatal system failure scenarios that would require a BUG call.
    Also, if something is seriously wrong, ipc might not be the place for such
    a BUG either.
    
    1. For example, recently, a customer hit one of these BUG_ONs in shm
       after failing shm_lock().  A busted ID imho does not merit a BUG_ON,
       and WARN would have been better.
    
    2. MSG_COPY functionality of posix msgrcv(2) for checkpoint/restore.
       I don't see how we can hit this anyway -- at least it should be IS_ERR.
        The 'copy' arg from do_msgrcv is always set by calling prepare_copy()
       first and foremost.  We could also probably drop this check altogether.
        Either way, it does not merit a BUG_ON.
    
    3. No ->fault() callback for the fs getting the corresponding page --
       seems selfish to make the system unusable.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 929194e125e29734bd25baa875dd22de1930e7c8
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Tue Jun 30 14:58:36 2015 -0700

    ipc,shm: move BUG_ON check into shm_lock
    
    commit c5c8975b2eb4eb7604e8ce4f762987f56d2a96a2 upstream.
    
    Upon every shm_lock call, we BUG_ON if an error was returned, indicating
    racing either in idr or in shm_destroy.  Move this logic into the locking.
    
    [akpm@linux-foundation.org: simplify code]
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e3957bc637956aaf1dd38df4db528f585f945b24
Author: Helge Deller <deller@gmx.de>
Date:   Sun Mar 25 23:53:22 2018 +0200

    parisc: Fix out of array access in match_pci_device()
    
    commit 615b2665fd20c327b631ff1e79426775de748094 upstream.
    
    As found by the ubsan checker, the value of the 'index' variable can be
    out of range for the bc[] array:
    
    UBSAN: Undefined behaviour in arch/parisc/kernel/drivers.c:655:21
    index 6 is out of range for type 'char [6]'
    Backtrace:
     [<104fa850>] __ubsan_handle_out_of_bounds+0x68/0x80
     [<1019d83c>] check_parent+0xc0/0x170
     [<1019d91c>] descend_children+0x30/0x6c
     [<1059e164>] device_for_each_child+0x60/0x98
     [<1019cd54>] parse_tree_node+0x40/0x54
     [<1019d86c>] check_parent+0xf0/0x170
     [<1019d91c>] descend_children+0x30/0x6c
     [<1059e164>] device_for_each_child+0x60/0x98
     [<1019d938>] descend_children+0x4c/0x6c
     [<1059e164>] device_for_each_child+0x60/0x98
     [<1019cd54>] parse_tree_node+0x40/0x54
     [<1019cffc>] hwpath_to_device+0xa4/0xc4
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d87efad58c99966fd8038ec0b00f59a165d8e8b
Author: Helge Deller <deller@gmx.de>
Date:   Sat Mar 24 21:18:25 2018 +0100

    parisc: Fix HPMC handler by increasing size to multiple of 16 bytes
    
    commit d5654e156bc4d68a87bbaa6d7e020baceddf6e68 upstream.
    
    Make sure that the HPMC (High Priority Machine Check) handler is 16-byte
    aligned and that it's length in the IVT is a multiple of 16 bytes.
    Otherwise PDC may decide not to call the HPMC crash handler.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 56fce9cb2b08ccc668f4c5192c4150a819fb9d80
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Mar 26 19:50:31 2018 -0700

    hwmon: (nct6775) Fix writing pwmX_mode
    
    commit 415eb2a1aaa4881cf85bd86c683356fdd8094a23 upstream.
    
    pwmX_mode is defined in the ABI as 0=DC mode, 1=pwm mode. The chip
    register bit is set to 1 for DC mode. This got mixed up, and writing
    1 into pwmX_mode resulted in DC mode enabled. Fix it up by using
    the ABI definition throughout the driver for consistency.
    
    Fixes: 77eb5b3703d99 ("hwmon: (nct6775) Add support for pwm, pwm_mode, ... ")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e2d899f3cf61d589005608af8d8218b89af23272
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 27 14:32:23 2018 +0200

    ALSA: pcm: Fix mutex unbalance in OSS emulation ioctls
    
    commit f6d297df4dd47ef949540e4a201230d0c5308325 upstream.
    
    The previous fix 40cab6e88cb0 ("ALSA: pcm: Return -EBUSY for OSS
    ioctls changing busy streams") introduced some mutex unbalance; the
    check of runtime->oss.rw_ref was inserted in a wrong place after the
    mutex lock.
    
    This patch fixes the inconsistency by rewriting with the helper
    functions to lock/unlock parameters with the stream check.
    
    Fixes: 40cab6e88cb0 ("ALSA: pcm: Return -EBUSY for OSS ioctls changing busy streams")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit faa5d68d20cea40fd576c52fd73956876448b680
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Mon Mar 5 09:39:38 2018 +0100

    s390/qdio: don't retry EQBS after CCQ 96
    
    commit dae55b6fef58530c13df074bcc182c096609339e upstream.
    
    Immediate retry of EQBS after CCQ 96 means that we potentially misreport
    the state of buffers inspected during the first EQBS call.
    
    This occurs when
    1. the first EQBS finds all inspected buffers still in the initial state
       set by the driver (ie INPUT EMPTY or OUTPUT PRIMED),
    2. the EQBS terminates early with CCQ 96, and
    3. by the time that the second EQBS comes around, the state of those
       previously inspected buffers has changed.
    
    If the state reported by the second EQBS is 'driver-owned', all we know
    is that the previous buffers are driver-owned now as well. But we can't
    tell if they all have the same state. So for instance
    - the second EQBS reports OUTPUT EMPTY, but any number of the previous
      buffers could be OUTPUT ERROR by now,
    - the second EQBS reports OUTPUT ERROR, but any number of the previous
      buffers could be OUTPUT EMPTY by now.
    
    Effectively, this can result in both over- and underreporting of errors.
    
    If the state reported by the second EQBS is 'HW-owned', that doesn't
    guarantee that the previous buffers have not been switched to
    driver-owned in the mean time. So for instance
    - the second EQBS reports INPUT EMPTY, but any number of the previous
      buffers could be INPUT PRIMED (or INPUT ERROR) by now.
    
    This would result in failure to process pending work on the queue. If
    it's the final check before yielding initiative, this can cause
    a (temporary) queue stall due to IRQ avoidance.
    
    Fixes: 25f269f17316 ("[S390] qdio: EQBS retry after CCQ 96")
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4630cdc08b33b563723b05f983b2f371c42a7bf7
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Mar 7 14:01:01 2018 +0100

    s390/qdio: don't merge ERROR output buffers
    
    commit 0cf1e05157b9e5530dcc3ca9fec9bf617fc93375 upstream.
    
    On an Output queue, both EMPTY and PENDING buffer states imply that the
    buffer is ready for completion-processing by the upper-layer drivers.
    
    So for a non-QEBSM Output queue, get_buf_states() merges mixed
    batches of PENDING and EMPTY buffers into one large batch of EMPTY
    buffers. The upper-layer driver (ie. qeth) later distuingishes PENDING
    from EMPTY by inspecting the slsb_state for
    QDIO_OUTBUF_STATE_FLAG_PENDING.
    
    But the merge logic in get_buf_states() contains a bug that causes us to
    erronously also merge ERROR buffers into such a batch of EMPTY buffers
    (ERROR is 0xaf, EMPTY is 0xa1; so ERROR & EMPTY == EMPTY).
    Effectively, most outbound ERROR buffers are currently discarded
    silently and processed as if they had succeeded.
    
    Note that this affects _all_ non-QEBSM device types, not just IQD with CQ.
    
    Fix it by explicitly spelling out the exact conditions for merging.
    
    For extracting the "get initial state" part out of the loop, this relies
    on the fact that get_buf_states() is never called with a count of 0. The
    QEBSM path already strictly requires this, and the two callers with
    variable 'count' make sure of it.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Reviewed-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5274247d030e1c2b6fcfae58fbe304867c159fdd
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Wed Jan 31 17:09:13 2018 -0700

    Btrfs: fix unexpected cow in run_delalloc_nocow
    
    commit 5811375325420052fcadd944792a416a43072b7f upstream.
    
    Fstests generic/475 provides a way to fail metadata reads while
    checking if checksum exists for the inode inside run_delalloc_nocow(),
    and csum_exist_in_range() interprets error (-EIO) as inode having
    checksum and makes its caller enter the cow path.
    
    In case of free space inode, this ends up with a warning in
    cow_file_range().
    
    The same problem applies to btrfs_cross_ref_exist() since it may also
    read metadata in between.
    
    With this, run_delalloc_nocow() bails out when errors occur at the two
    places.
    
    Fixes: 17d217fe970d ("Btrfs: fix nodatasum handling in balancing code")
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4dffb3cadfb91a1b83d3ce0925f78df4ba30f7de
Author: David Lechner <david@lechnology.com>
Date:   Mon Feb 19 15:57:07 2018 -0600

    pinctrl: pinctrl-single: Fix pcs_request_gpio() when bits_per_mux != 0
    
    commit 45dcb54f014d3d1f5cc3919b5f0c97087d7cb3dd upstream.
    
    This fixes pcs_request_gpio() in the pinctrl-single driver when
    bits_per_mux != 0. It appears this was overlooked when the multiple
    pins per register feature was added.
    
    Fixes: 4e7e8017a80e ("pinctrl: pinctrl-single: enhance to configure multiple pins of different modules")
    Signed-off-by: David Lechner <david@lechnology.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0dbf5ca731ebc0adf5dd4ee3ed5f184fc0ccec3e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 23 08:03:26 2018 +0100

    ALSA: pcm: Return -EBUSY for OSS ioctls changing busy streams
    
    commit 40cab6e88cb0b6c56d3f30b7491a20e803f948f6 upstream.
    
    OSS PCM stream management isn't modal but it allows ioctls issued at
    any time for changing the parameters.  In the previous hardening
    patch ("ALSA: pcm: Avoid potential races between OSS ioctls and
    read/write"), we covered these races and prevent the corruption by
    protecting the concurrent accesses via params_lock mutex.  However,
    this means that some ioctls that try to change the stream parameter
    (e.g. channels or format) would be blocked until the read/write
    finishes, and it may take really long.
    
    Basically changing the parameter while reading/writing is an invalid
    operation, hence it's even more user-friendly from the API POV if it
    returns -EBUSY in such a situation.
    
    This patch adds such checks in the relevant ioctls with the addition
    of read/write access refcount.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c4fffbf08fb25f10bc079ee97940cb559aaaa9f6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 22 18:10:14 2018 +0100

    ALSA: pcm: Avoid potential races between OSS ioctls and read/write
    
    commit 02a5d6925cd34c3b774bdb8eefb057c40a30e870 upstream.
    
    Although we apply the params_lock mutex to the whole read and write
    operations as well as snd_pcm_oss_change_params(), we may still face
    some races.
    
    First off, the params_lock is taken inside the read and write loop.
    This is intentional for avoiding the too long locking, but it allows
    the in-between parameter change, which might lead to invalid
    pointers.  We check the readiness of the stream and set up via
    snd_pcm_oss_make_ready() at the beginning of read and write, but it's
    called only once, by assuming that it remains ready in the rest.
    
    Second, many ioctls that may change the actual parameters
    (i.e. setting runtime->oss.params=1) aren't protected, hence they can
    be processed in a half-baked state.
    
    This patch is an attempt to plug these holes.  The stream readiness
    check is moved inside the read/write inner loop, so that the stream is
    always set up in a proper state before further processing.  Also, each
    ioctl that may change the parameter is wrapped with the params_lock
    for avoiding the races.
    
    The issues were triggered by syzkaller in a few different scenarios,
    particularly the one below appearing as GPF in loopback_pos_update.
    
    Reported-by: syzbot+c4227aec125487ec3efa@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8f762a29c254d24cf4251200d51bda7acde654e5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 9 08:51:02 2018 +0100

    ALSA: pcm: Use ERESTARTSYS instead of EINTR in OSS emulation
    
    commit c64ed5dd9feba193c76eb460b451225ac2a0d87b upstream.
    
    Fix the last standing EINTR in the whole subsystem.  Use more correct
    ERESTARTSYS for pending signals.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6e0e1d42acc4cdf87a4b3ae67dd6a741bccc6919
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Feb 12 13:55:23 2018 +0300

    ACPI / hotplug / PCI: Check presence of slot itself in get_slot_status()
    
    commit 13d3047c81505cc0fb9bdae7810676e70523c8bf upstream.
    
    Mike Lothian reported that plugging in a USB-C device does not work
    properly in his Dell Alienware system.  This system has an Intel Alpine
    Ridge Thunderbolt controller providing USB-C functionality.  In these
    systems the USB controller (xHCI) is hotplugged whenever a device is
    connected to the port using ACPI-based hotplug.
    
    The ACPI description of the root port in question is as follows:
    
      Device (RP01)
      {
          Name (_ADR, 0x001C0000)
    
          Device (PXSX)
          {
              Name (_ADR, 0x02)
    
              Method (_RMV, 0, NotSerialized)
              {
                  // ...
              }
          }
    
    Here _ADR 0x02 means device 0, function 2 on the bus under root port (RP01)
    but that seems to be incorrect because device 0 is the upstream port of the
    Alpine Ridge PCIe switch and it has no functions other than 0 (the bridge
    itself).  When we get ACPI Notify() to the root port resulting from
    connecting a USB-C device, Linux tries to read PCI_VENDOR_ID from device 0,
    function 2 which of course always returns 0xffffffff because there is no
    such function and we never find the device.
    
    In Windows this works fine.
    
    Now, since we get ACPI Notify() to the root port and not to the PXSX device
    we should actually start our scan from there as well and not from the
    non-existent PXSX device.  Fix this by checking presence of the slot itself
    (function 0) if we fail to do that otherwise.
    
    While there use pci_bus_read_dev_vendor_id() in get_slot_status(), which is
    the recommended way to read Device and Vendor IDs of devices on PCI buses.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=198557
    Reported-by: Mike Lothian <mike@fireburn.co.uk>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ebf3d2124c5f5fa4eaf4df2ae1cc4508d082aea7
Author: Leonard Crestez <leonard.crestez@nxp.com>
Date:   Tue Mar 13 22:17:23 2018 +0200

    crypto: arm,arm64 - Fix random regeneration of S_shipped
    
    commit 6aaf49b495b446ff6eec0ac983f781ca0dc56a73 upstream.
    
    The decision to rebuild .S_shipped is made based on the relative
    timestamps of .S_shipped and .pl files but git makes this essentially
    random. This means that the perl script might run anyway (usually at
    most once per checkout), defeating the whole purpose of _shipped.
    
    Fix by skipping the rule unless explicit make variables are provided:
    REGENERATE_ARM_CRYPTO or REGENERATE_ARM64_CRYPTO.
    
    This can produce nasty occasional build failures downstream, for example
    for toolchains with broken perl. The solution is minimally intrusive to
    make it easier to push into stable.
    
    Another report on a similar issue here: https://lkml.org/lkml/2018/3/8/1379
    
    Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: Only arm has this problem]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c3acbd429251c56a8cb46ee774427c9cc621edb6
Author: Zhengjun Xing <zhengjun.xing@linux.intel.com>
Date:   Wed Mar 21 13:29:42 2018 +0800

    USB:fix USB3 devices behind USB3 hubs not resuming at hibernate thaw
    
    commit 64627388b50158fd24d6ad88132525b95a5ef573 upstream.
    
    USB3 hubs don't support global suspend.
    
    USB3 specification 10.10, Enhanced SuperSpeed hubs only support selective
    suspend and resume, they do not support global suspend/resume where the
    hub downstream facing ports states are not affected.
    
    When system enters hibernation it first enters freeze process where only
    the root hub enters suspend, usb_port_suspend() is not called for other
    devices, and suspend status flags are not set for them. Other devices are
    expected to suspend globally. Some external USB3 hubs will suspend the
    downstream facing port at global suspend. These devices won't be resumed
    at thaw as the suspend status flag is not set.
    
    A USB3 removable hard disk connected through a USB3 hub that won't resume
    at thaw will fail to synchronize SCSI cache, return “cmd cmplt err -71”
    error, and needs a 60 seconds timeout which causing system hang for 60s
    before the USB host reset the port for the USB3 removable hard disk to
    recover.
    
    Fix this by always calling usb_port_suspend() during freeze for USB3
    devices.
    
    Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96b211cd2ec7698cf75474b0361658865ab5f90e
Author: Clemens Werther <clemens.werther@gmail.com>
Date:   Fri Mar 16 10:20:46 2018 +0100

    USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator
    
    commit 6555ad13a01952c16485c82a52ad1f3e07e34b3a upstream.
    
    Add device id for Harman FirmwareHubEmulator to make the device
    auto-detectable by the driver.
    
    Signed-off-by: Clemens Werther <clemens.werther@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e4e4ff558df3993fe7c733daed0501eb7656f868
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Mar 6 09:32:43 2018 +0100

    USB: serial: cp210x: add ELDAT Easywave RX09 id
    
    commit 1f1e82f74c0947e40144688c9e36abe4b3999f49 upstream.
    
    Add device id for ELDAT Easywave RX09 tranceiver.
    
    Reported-by: Jan Jansen <nattelip@hotmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 93a3a85fe7c78ee8ca7f8b678f711fc257f7cc85
Author: Major Hayden <major@mhtx.net>
Date:   Fri Feb 23 14:29:54 2018 -0600

    USB: serial: ftdi_sio: add RT Systems VX-8 cable
    
    commit 9608e5c0f079390473b484ef92334dfd3431bb89 upstream.
    
    This patch adds a device ID for the RT Systems cable used to
    program Yaesu VX-8R/VX-8DR handheld radios. It uses the main
    FTDI VID instead of the common RT Systems VID.
    
    Signed-off-by: Major Hayden <major@mhtx.net>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a8420aea8a05f7965845a27ebf23d499de4829b8
Author: Eryu Guan <guaneryu@gmail.com>
Date:   Thu Mar 22 11:41:25 2018 -0400

    ext4: protect i_disksize update by i_data_sem in direct write path
    
    commit 73fdad00b208b139cf43f3163fbc0f67e4c6047c upstream.
    
    i_disksize update should be protected by i_data_sem, by either taking
    the lock explicitly or by using ext4_update_i_disksize() helper. But the
    i_disksize updates in ext4_direct_IO_write() are not protected at all,
    which may be racing with i_disksize updates in writeback path in
    delalloc buffer write path.
    
    This is found by code inspection, and I didn't hit any i_disksize
    corruption due to this bug. Thanks to Jan Kara for catching this bug and
    suggesting the fix!
    
    Reported-by: Jan Kara <jack@suse.cz>
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Eryu Guan <guaneryu@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: The relevant code is in ext4_ind_direct_IO()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97adc534a506561e288b2abc12a043f8c9ea5945
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Mon Mar 19 13:07:35 2018 -0700

    usb: dwc3: pci: Properly cleanup resource
    
    commit cabdf83dadfb3d83eec31e0f0638a92dbd716435 upstream.
    
    Platform device is allocated before adding resources. Make sure to
    properly cleanup on error case.
    
    Fixes: f1c7e7108109 ("usb: dwc3: convert to pcim_enable_device()")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: Cleanup label is called "err3"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e949a74f0daa5fd7432f4483922ccdadd302a80
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Tue Mar 13 16:20:05 2018 +0100

    ARM: dts: at91: at91sam9g25: fix mux-mask pinctrl property
    
    commit e8fd0adf105e132fd84545997bbef3d5edc2c9c1 upstream.
    
    There are only 19 PIOB pins having primary names PB0-PB18. Not all of them
    have a 'C' function. So the pinctrl property mask ends up being the same as the
    other SoC of the at91sam9x5 series.
    
    Reported-by: Marek Sieranski <marek.sieranski@microchip.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 14d36e2a0fc4d7a21784b811871b7d299f7116f8
Author: Sean Young <sean@mess.org>
Date:   Tue Mar 6 08:57:57 2018 -0500

    media: rc: oops in ir_timer_keyup after device unplug
    
    commit 8d4068810d9926250dd2435719a080b889eb44c3 upstream.
    
    If there is IR in the raw kfifo when ir_raw_event_unregister() is called,
    then kthread_stop() causes ir_raw_event_thread to be scheduled, decode
    some scancodes and re-arm timer_keyup. The timer_keyup then fires when
    the rc device is long gone.
    
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.16:
     - There's no timer_repeat to move
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1f5e80c014db8346303547d9af50cecbb210945c
Author: James Kelly <jamespeterkelly@gmail.com>
Date:   Mon Mar 19 21:29:50 2018 +1100

    ASoC: ssm2602: Replace reg_default_raw with reg_default
    
    commit a01df75ce737951ad13a08d101306e88c3f57cb2 upstream.
    
    SSM2602 driver is broken on recent kernels (at least
    since 4.9). User space applications such as amixer or
    alsamixer get EIO when attempting to access codec
    controls via the relevant IOCTLs.
    
    Root cause of these failures is the regcache_hw_init
    function in drivers/base/regmap/regcache.c, which
    prevents regmap cache initalization from the
    reg_defaults_raw element of the regmap_config structure
    when registers are write only. It also disables the
    regmap cache entirely when all registers are write only
    or volatile as is the case for the SSM2602 driver.
    
    Using the reg_defaults element of the regmap_config
    structure rather than the reg_defaults_raw element to
    initalize the regmap cache avoids the logic in the
    regcache_hw_init function entirely. It also makes this
    driver consistent with other ASoC codec drivers, as
    this driver was the ONLY codec driver that used the
    reg_defaults_raw element to initalize the cache.
    
    Tested on Digilent Zybo Z7 development board which has
    a SSM2603 codec chip connected to a Xilinx Zynq SoC.
    
    Signed-off-by: James Kelly <jamespeterkelly@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffeabf8808f1f1560694996dbe56446f9c872bb5
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Mar 16 16:24:34 2018 -0300

    perf top: Document --ignore-vmlinux
    
    commit a8403912d04e2c8271653bb5b7f6294dc6d322ac upstream.
    
    We've had this since 2013, document it.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Fixes: fc2be6968e99 ("perf symbols: Add new option --ignore-vmlinux for perf top")
    Link: https://lkml.kernel.org/n/tip-0jwfueooddwfsw9r603belxi@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fa471f6926fddf57b44c7daa7671255a92be327c
Author: Mike Frysinger <vapier@chromium.org>
Date:   Mon Jan 29 17:08:21 2018 -0500

    vt: change SGR 21 to follow the standards
    
    commit 65d9982d7e523a1a8e7c9af012da0d166f72fc56 upstream.
    
    ECMA-48 [1] (aka ISO 6429) has defined SGR 21 as "doubly underlined"
    since at least March 1984.  The Linux kernel has treated it as SGR 22
    "normal intensity" since it was added in Linux-0.96b in June 1992.
    Before that, it was simply ignored.  Other terminal emulators have
    either ignored it, or treat it as double underline now.  xterm for
    example added support in its 304 release (May 2014) [2] where it was
    previously ignoring it.
    
    Changing this behavior shouldn't be an issue:
    - It isn't a named capability in ncurses's terminfo database, so no
      script is using libtinfo/libcurses to look this up, or using tput
      to query & output the right sequence.
    - Any script assuming SGR 21 will reset intensity in all terminals
      already do not work correctly on non-Linux VTs (including running
      under screen/tmux/etc...).
    - If someone has written a script that only runs in the Linux VT, and
      they're using SGR 21 (instead of SGR 22), the output should still
      be readable.
    
    imo it's important to change this as the Linux VT's non-conformance
    is sometimes used as an argument for other terminal emulators to not
    implement SGR 21 at all, or do so incorrectly.
    
    [1]: https://www.ecma-international.org/publications/standards/Ecma-048.htm
    [2]: https://github.com/ThomasDickey/xterm-snapshots/commit/2fd29cb98d214cb536bcafbee00bc73b3f1eeb9d
    
    Signed-off-by: Mike Frysinger <vapier@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 212904f27c5aab98ab638738a6144f591cb943f4
Author: Alexander Gerasiov <gq@redlab-i.ru>
Date:   Sun Feb 4 02:50:22 2018 +0300

    parport_pc: Add support for WCH CH382L PCI-E single parallel port card.
    
    commit 823f7923833c6cc2b16e601546d607dcfb368004 upstream.
    
    WCH CH382L is a PCI-E adapter with 1 parallel port. It is similair to CH382
    but serial ports are not soldered on board. Detected as
    Serial controller: Device 1c00:3050 (rev 10) (prog-if 05 [16850])
    
    Signed-off-by: Alexander Gerasiov <gq@redlab-i.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f874c2de5d2ea58d290b62b518bbfa50120c49cb
Author: Mikhail Lappo <mikhail.lappo@esrlabs.com>
Date:   Fri Feb 2 16:17:46 2018 -0200

    thermal: imx: Fix race condition in imx_thermal_probe()
    
    commit cf1ba1d73a33944d8c1a75370a35434bf146b8a7 upstream.
    
    When device boots with T > T_trip_1 and requests interrupt,
    the race condition takes place. The interrupt comes before
    THERMAL_DEVICE_ENABLED is set. This leads to an attempt to
    reading sensor value from irq and disabling the sensor, based on
    the data->mode field, which expected to be THERMAL_DEVICE_ENABLED,
    but still stays as THERMAL_DEVICE_DISABLED. Afher this issue
    sensor is never re-enabled, as the driver state is wrong.
    
    Fix this problem by setting the 'data' members prior to
    requesting the interrupts.
    
    Fixes: 37713a1e8e4c ("thermal: imx: implement thermal alarm interrupt handling")
    Signed-off-by: Mikhail Lappo <mikhail.lappo@esrlabs.com>
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Acked-by: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6ceff905ae27bc4be3dddf996b808834ef39ced1
Author: Bai Ping <b51503@freescale.com>
Date:   Mon Sep 14 19:09:51 2015 +0800

    thermal: imx: register irq handler later in probe
    
    commit 84866ee5818e95f6e97194656777c10ac24cb9d3 upstream.
    
    The irq handler should be registered after the tempmon
    module has been initialized in a known state and the
    thermal_zone and cpu_cooling device have been registered
    successfully. Otherwise, if the irq is triggled earlier
    before thermal probe has been finished, it may lead to
    'NULL' pointer kernel panic.
    
    Signed-off-by: Bai Ping <b51503@freescale.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 66a0b5cb574dd9a99ae4a479a620b752667b6f5c
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Wed Feb 14 14:43:38 2018 +0100

    clk: fix mux clock documentation
    
    commit fe3f338f0cb2ed4d4f06da054c21ae2f8a36ef2d upstream.
    
    The mux documentation mentions the non-existing parameter width instead
    of mask, so just sed this.
    
    The table field is missing in the documentation of clk_mux.
    Add a small blurb explaining what it is
    
    Fixes: 9d9f78ed9af0 ("clk: basic clock hardware types")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Michael Turquette <mturquette@baylibre.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7516d65d946bcdfd3b8869dda00e03efa732a10c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Mar 10 17:55:47 2018 -0800

    hwmon: (pmbus/adm1275) Accept negative page register values
    
    commit ecb29abd4cb0670c616fb563a078f25d777ce530 upstream.
    
    A negative page register value means that no page needs to be
    selected. This is used by status register read operations and needs
    to be accepted. The failure to do so so results in missed status
    and limit registers.
    
    Fixes: da8e48ab483e1 ("hwmon: (pmbus) Always call _pmbus_read_byte in core driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 34e639dc8ae86d1d35c0877f6714351f8c5cde8c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Mar 10 17:49:47 2018 -0800

    hwmon: (pmbus/max8688) Accept negative page register values
    
    commit a46f8cd696624ef757be0311eb28f119c36778e8 upstream.
    
    A negative page register value means that no page needs to be
    selected. This is used by status register evaluations and needs
    to be accepted.
    
    Fixes: da8e48ab483e1 ("hwmon: (pmbus) Always call _pmbus_read_byte in core driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b8e777874580d78c5935460a609f5f683ef8c8d
Author: Igor Pylypiv <igor.pylypiv@gmail.com>
Date:   Tue Mar 6 23:47:25 2018 -0800

    watchdog: f71808e_wdt: Fix WD_EN register read
    
    commit 977f6f68331f94bb72ad84ee96b7b87ce737d89d upstream.
    
    F71808FG_FLAG_WD_EN defines bit position, not a bitmask
    
    Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 99cc9654e2dc0e072734f6f80232a6b6b59fe63b
Author: Dennis Wassenberg <dennis.wassenberg@secunet.com>
Date:   Thu Mar 8 15:32:09 2018 -0800

    Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list
    
    commit b56af54ac78c54a519d82813836f305d7f76ef27 upstream.
    
    Reset i8042 before probing because of insufficient BIOS initialisation of
    the i8042 serial controller. This makes Synaptics touchpad detection
    possible. Without resetting the Synaptics touchpad is not detected because
    there are always NACK messages from AUX port.
    
    Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 77ef545471788283ae4d4797be506df1e42eb80e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 16 16:52:15 2018 -0500

    media: s3c-camif: fix out-of-bounds array access
    
    commit a398e043637a4819a0e96467bfecaabf3224dd62 upstream.
    
    While experimenting with older compiler versions, I ran
    into a warning that no longer shows up on gcc-4.8 or newer:
    
    drivers/media/platform/s3c-camif/camif-capture.c: In function '__camif_subdev_try_format':
    drivers/media/platform/s3c-camif/camif-capture.c:1265:25: error: array subscript is below array bounds
    
    This is an off-by-one bug, leading to an access before the start of the
    array, while newer compilers silently assume this undefined behavior
    cannot happen and leave the loop at index 0 if no other entry matches.
    
    As Sylvester explains, we actually need to ensure that the
    value is within the range, so this reworks the loop to be
    easier to parse correctly, and an additional check to fall
    back on the first format value for any unexpected input.
    
    I found an existing gcc bug for it and added a reduced version
    of the function there.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69249#c3
    Fixes: babde1c243b2 ("[media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface")
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5406f0c730c54155a9cfd16740baebcaccd94e56
Author: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Date:   Sun Mar 4 03:29:53 2018 +0100

    net: core: dst: Add kernel-doc for 'net' parameter
    
    commit 8eb1a8590f5ca114fabf16ebb26a4bce0255ace9 upstream.
    
    This fixes the following kernel-doc warning:
    
    ./include/net/dst.h:366: warning: Function parameter or member 'net' not described in 'skb_tunnel_rx'
    
    Fixes: ea23192e8e57 ("tunnels: harmonize cleanup done on skb on rx path")
    Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8b216a8f3f9dfcded74677470579a6ff0b258be5
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Feb 19 23:48:12 2018 -0800

    crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one
    
    commit 8f461b1e02ed546fbd0f11611138da67fd85a30f upstream.
    
    With ecb-cast5-avx, if a 128+ byte scatterlist element followed a
    shorter one, then the algorithm accidentally encrypted/decrypted only 8
    bytes instead of the expected 128 bytes.  Fix it by setting the
    encryption/decryption 'fn' correctly.
    
    Fixes: c12ab20b162c ("crypto: cast5/avx - avoid using temporary stack buffers")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e1728746277ff2ad94e831489a0724a5309ec006
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Feb 28 11:28:49 2018 +0000

    staging: rtl8192u: return -ENOMEM on failed allocation of priv->oldaddr
    
    commit e1a7418529e33bc4efc346324557251a16a3e79b upstream.
    
    Currently the allocation of priv->oldaddr is not null checked which will
    lead to subsequent errors when accessing priv->oldaddr.  Fix this with
    a null pointer check and a return of -ENOMEM on allocation failure.
    
    Detected with Coccinelle:
    drivers/staging/rtl8192u/r8192U_core.c:1708:2-15: alloc with no test,
    possible model on line 1723
    
    Fixes: 8fc8598e61f6 ("Staging: Added Realtek rtl8192u driver to staging")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f853f92a6d08bb281bbc039441dd26928d41f0d3
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Feb 15 19:36:14 2018 +0000

    rtc: tx4939: avoid unintended sign extension on a 24 bit shift
    
    commit 347876ad47b9923ce26e686173bbf46581802ffa upstream.
    
    The shifting of buf[5] by 24 bits to the left will be promoted to
    a 32 bit signed int and then sign-extended to an unsigned long. If
    the top bit of buf[5] is set then all then all the upper bits sec
    end up as also being set because of the sign-extension. Fix this by
    casting buf[5] to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#1465292 ("Unintended sign extension")
    
    Fixes: 0e1492330cd2 ("rtc: add rtc-tx4939 driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c9a23b2d8a9732746cc8df3ffb9dc87fa6f2fd5
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Fri Feb 23 14:09:24 2018 -0800

    IB/srp: Fix srp_abort()
    
    commit e68088e78d82920632eba112b968e49d588d02a2 upstream.
    
    Before commit e494f6a72839 ("[SCSI] improved eh timeout handler") it
    did not really matter whether or not abort handlers like srp_abort()
    called .scsi_done() when returning another value than SUCCESS. Since
    that commit however this matters. Hence only call .scsi_done() when
    returning SUCCESS.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [bwh: Backported to 3.16: s/ch/target/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7864fdcbed565a35bf1ea3ecb84d39f5ff29d073
Author: Sudhir Sreedharan <ssreedharan@mvista.com>
Date:   Thu Feb 15 12:52:45 2018 +0530

    rtl8187: Fix NULL pointer dereference in priv->conf_mutex
    
    commit 7972326a26b5bf8dc2adac575c4e03ee7e9d193a upstream.
    
    This can be reproduced by bind/unbind the driver multiple times
    in AM3517 board.
    
    Analysis revealed that rtl8187_start() was invoked before probe
    finishes(ie. before the mutex is initialized).
    
     INFO: trying to register non-static key.
     the code is fine but needs lockdep annotation.
     turning off the locking correctness validator.
     CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
     Hardware name: Generic AM3517 (Flattened Device Tree)
     [<c010e0d8>] (unwind_backtrace) from [<c010beac>] (show_stack+0x10/0x14)
     [<c010beac>] (show_stack) from [<c017401c>] (register_lock_class+0x4f4/0x55c)
     [<c017401c>] (register_lock_class) from [<c0176fe0>] (__lock_acquire+0x74/0x1938)
     [<c0176fe0>] (__lock_acquire) from [<c0178cfc>] (lock_acquire+0xfc/0x23c)
     [<c0178cfc>] (lock_acquire) from [<c08aa2f8>] (mutex_lock_nested+0x50/0x3b0)
     [<c08aa2f8>] (mutex_lock_nested) from [<c05f5bf8>] (rtl8187_start+0x2c/0xd54)
     [<c05f5bf8>] (rtl8187_start) from [<c082dea0>] (drv_start+0xa8/0x320)
     [<c082dea0>] (drv_start) from [<c084d1d4>] (ieee80211_do_open+0x2bc/0x8e4)
     [<c084d1d4>] (ieee80211_do_open) from [<c069be94>] (__dev_open+0xb8/0x120)
     [<c069be94>] (__dev_open) from [<c069c11c>] (__dev_change_flags+0x88/0x14c)
     [<c069c11c>] (__dev_change_flags) from [<c069c1f8>] (dev_change_flags+0x18/0x48)
     [<c069c1f8>] (dev_change_flags) from [<c0710b08>] (devinet_ioctl+0x738/0x840)
     [<c0710b08>] (devinet_ioctl) from [<c067925c>] (sock_ioctl+0x164/0x2f4)
     [<c067925c>] (sock_ioctl) from [<c02883f8>] (do_vfs_ioctl+0x8c/0x9d0)
     [<c02883f8>] (do_vfs_ioctl) from [<c0288da8>] (SyS_ioctl+0x6c/0x7c)
     [<c0288da8>] (SyS_ioctl) from [<c0107760>] (ret_fast_syscall+0x0/0x1c)
     Unable to handle kernel NULL pointer dereference at virtual address 00000000
     pgd = cd1ec000
     [00000000] *pgd=8d1de831, *pte=00000000, *ppte=00000000
     Internal error: Oops: 817 [#1] PREEMPT ARM
     Modules linked in:
     CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
     Hardware name: Generic AM3517 (Flattened Device Tree)
     task: ce73eec0 task.stack: cd1ea000
     PC is at mutex_lock_nested+0xe8/0x3b0
     LR is at mutex_lock_nested+0xd0/0x3b0
    
    Signed-off-by: Sudhir Sreedharan <ssreedharan@mvista.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 270ff9087a24f454d3cea5dadd6994107089a1bc
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:37 2018 +0100

    serial: xuartps: Fix out-of-bounds access through DT alias
    
    commit e7d75e18d0fc3f7193b65282b651f980c778d935 upstream.
    
    The cdns_uart_port[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: 928e9263492069ee ("tty: xuartps: Initialize ports according to aliases")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e5fa16d811f7af915604e30a358a285d469f2de9
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:33 2018 +0100

    serial: pxa: Fix out-of-bounds access through serial port index
    
    commit afc7851fab8329eddcf321c9e0a58c893f351dd6 upstream.
    
    The serial_pxa_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, or from platform data, which may lead to an
    out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: 699c20f3e6310aa2 ("serial: pxa: add OF support")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0130e9ac95bd5bad7dbcd9f938fbe49c97357621
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:32 2018 +0100

    serial: mxs-auart: Fix out-of-bounds access through serial port index
    
    commit dd345a31bfdec350d2593e6de5964e55c7f19c76 upstream.
    
    The auart_port[] array is indexed using a value derived from the
    "serialN" alias in DT, or from platform data, which may lead to an
    out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: 1ea6607d4cdc9179 ("serial: mxs-auart: Allow device tree probing")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Explicitly clean up port on error
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c1a522194c0e9169610dc07e9140bcac04f15ee0
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:31 2018 +0100

    serial: imx: Fix out-of-bounds access through serial port index
    
    commit 5673444821406dda5fc25e4b52aca419f8065a19 upstream.
    
    The imx_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, or from platform data, which may lead to an
    out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: ff05967a07225ab6 ("serial/imx: add of_alias_get_id() reference back")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 037929428959c50ec9233cce2f9915d0a117ae20
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:30 2018 +0100

    serial: fsl_lpuart: Fix out-of-bounds access through DT alias
    
    commit ffab87fdecc655cc676f8be8dd1a2c5e22bd6d47 upstream.
    
    The lpuart_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: c9e2e946fb0ba5d2 ("tty: serial: add Freescale lpuart driver support")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0dc5ffc4058e6a5c5dc2f850cc41d96840870915
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:29 2018 +0100

    serial: arc_uart: Fix out-of-bounds access through DT alias
    
    commit f9f5786987e81d166c60833edcb7d1836aa16944 upstream.
    
    The arc_uart_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Note that the array size is defined by a Kconfig symbol
    (CONFIG_SERIAL_ARC_NR_PORTS), so this can even be triggered using a
    legitimate DTB.
    
    Fixes: ea28fd56fcde69af ("serial/arc-uart: switch to devicetree based probing")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: Put the check in arc_uart_init_one() and move
     initialisation of the uart variable below it]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2fe9d81ea98360124dc9f0ed22401e8d2d9711c4
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Thu Jan 25 14:30:43 2018 +0100

    serial: altera: ensure port->regshift is honored consistently
    
    commit 0e254963b6ba4d63ac911e79537fea38dd03dc50 upstream.
    
    Most register accesses in the altera driver honor port->regshift by
    using altera_uart_writel(). There are a few accesses however that were
    missed when the driver was converted to use port->regshift and some
    others were added later in commit 4d9d7d896d77 ("serial: altera_uart:
    add earlycon support").
    
    Fixes: 2780ad42f5fe ("tty: serial: altera_uart: Use port->regshift to store bus shift")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Acked-by: Tobias Klauser <tklauser@distanz.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: Drop changes in altera_uart_earlycon_setup()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a8ab1e7fed3448dcd2948487e31b95cc4357e8d
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Jan 31 12:33:09 2018 -0500

    media: cx25821: prevent out-of-bounds read on array card
    
    commit 67300abdbe9f1717532aaf4e037222762716d0f6 upstream.
    
    Currently an out of range dev->nr is detected by just reporting the
    issue and later on an out-of-bounds read on array card occurs because
    of this. Fix this by checking the upper range of dev->nr with the size
    of array card (removes the hard coded size), move this check earlier
    and also exit with the error -ENOSYS to avoid the later out-of-bounds
    array read.
    
    Detected by CoverityScan, CID#711191 ("Out-of-bounds-read")
    
    Fixes: commit 02b20b0b4cde ("V4L/DVB (12730): Add conexant cx25821 driver")
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    [hans.verkuil@cisco.com: %ld -> %zd]
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d072a7f7f45c68cd366591171134211d30a9c4f4
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Feb 19 14:16:47 2018 -0500

    ext4: don't update checksum of new initialized bitmaps
    
    commit 044e6e3d74a3d7103a0c8a9305dfd94d64000660 upstream.
    
    When reading the inode or block allocation bitmap, if the bitmap needs
    to be initialized, do not update the checksum in the block group
    descriptor.  That's because we're not set up to journal those changes.
    Instead, just set the verified bit on the bitmap block, so that it's
    not necessary to validate the checksum.
    
    When a block or inode allocation actually happens, at that point the
    checksum will be calculated, and update of the bg descriptor block
    will be properly journalled.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16:
     - Deleted code is slightly different
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 351d1b81d66718f79dce9d7cbafd278e24f03a58
Author: Krzysztof Mazur <krzysiek@podlesie.net>
Date:   Wed Nov 15 11:12:39 2017 +0100

    um: Use POSIX ucontext_t instead of struct ucontext
    
    commit 4d1a535b8ec5e74b42dfd9dc809142653b2597f6 upstream.
    
    glibc 2.26 removed the 'struct ucontext' to "improve" POSIX compliance
    and break programs, including User Mode Linux. Fix User Mode Linux
    by using POSIX ucontext_t.
    
    This fixes:
    
    arch/um/os-Linux/signal.c: In function 'hard_handler':
    arch/um/os-Linux/signal.c:163:22: error: dereferencing pointer to incomplete type 'struct ucontext'
      mcontext_t *mc = &uc->uc_mcontext;
    arch/x86/um/stub_segv.c: In function 'stub_segv_handler':
    arch/x86/um/stub_segv.c:16:13: error: dereferencing pointer to incomplete type 'struct ucontext'
              &uc->uc_mcontext);
    
    Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 507a852a0a839bb925ba6e61aef59458a4df053a
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Feb 19 12:22:53 2018 -0500

    jbd2: if the journal is aborted then don't allow update of the log tail
    
    commit 85e0c4e89c1b864e763c4e3bb15d0b6d501ad5d9 upstream.
    
    This updates the jbd2 superblock unnecessarily, and on an abort we
    shouldn't truncate the log.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cc91ff7b877516dfe7bda5e8d428b45b0a476bae
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Tue Feb 6 19:17:58 2018 +0100

    perf record: Put new line after target override warning
    
    commit c3dec27b7f70a9ad5f777d943d51ecdfcd9824d0 upstream.
    
    There's no new-line after target-override warning, now:
    
      $ perf record -a --per-thread
      Warning:
      SYSTEM/CPU switch overriding PER-THREAD^C[ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.705 MB perf.data (2939 samples) ]
    
    with patch:
    
      $ perf record -a --per-thread
      Warning:
      SYSTEM/CPU switch overriding PER-THREAD
      ^C[ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.705 MB perf.data (2939 samples) ]
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 16ad2ffb822c ("perf tools: Introduce perf_target__strerror()")
    Link: http://lkml.kernel.org/r/20180206181813.10943-3-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffd2e9037f651b13bea1b32dcf86e75718bca10b
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Mon Jan 8 10:41:41 2018 +0800

    HID: core: Fix size as type u32
    
    commit 6de0b13cc0b4ba10e98a9263d7a83b940720b77a upstream.
    
    When size is negative, calling memset will make segment fault.
    Declare the size as type u32 to keep memset safe.
    
    size in struct hid_report is unsigned, fix return type of
    hid_report_len to u32.
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7c61d1d42b48029074f730e24c95c490cc9b7416
Author: Jason Andryuk <jandryuk@gmail.com>
Date:   Fri Jun 22 12:25:49 2018 -0400

    HID: i2c-hid: Fix "incomplete report" noise
    
    commit ef6eaf27274c0351f7059163918f3795da13199c upstream.
    
    Commit ac75a041048b ("HID: i2c-hid: fix size check and type usage") started
    writing messages when the ret_size is <= 2 from i2c_master_recv.  However, my
    device i2c-DLL07D1 returns 2 for a short period of time (~0.5s) after I stop
    moving the pointing stick or touchpad.  It varies, but you get ~50 messages
    each time which spams the log hard.
    
    [  95.925055] i2c_hid i2c-DLL07D1:01: i2c_hid_get_input: incomplete report (83/2)
    
    This has also been observed with a i2c-ALP0017.
    
    [ 1781.266353] i2c_hid i2c-ALP0017:00: i2c_hid_get_input: incomplete report (30/2)
    
    Only print the message when ret_size is totally invalid and less than 2 to cut
    down on the log spam.
    
    Fixes: ac75a041048b ("HID: i2c-hid: fix size check and type usage")
    Reported-by: John Smith <john-s-84@gmx.net>
    Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e74a8d8084650331df98e21c545c4943365c781
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Mon Jan 8 10:41:40 2018 +0800

    HID: i2c-hid: fix size check and type usage
    
    commit ac75a041048b8c1f7418e27621ca5efda8571043 upstream.
    
    When convert char array with signed int, if the inbuf[x] is negative then
    upper bits will be set to 1. Fix this by using u8 instead of char.
    
    ret_size has to be at least 3, hid_input_report use it after minus 2 bytes.
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0cccd69f37f709bc265b3ae756b2f5d31d0e356a
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Fri Jan 12 23:12:05 2018 +0300

    drm: rcar-du: lvds: Fix LVDS startup on R-Car Gen2
    
    commit 8525d04ba8a6a9ecfa4bd619c988ca873a5fc2a4 upstream.
    
    According to the latest revision 2.00 of the R-Car Gen2 manual, the LVDS
    and the bias circuit must be enabled after the LVDS I/O pins are
    enabled, not before. Fix the Gen2 LVDS startup sequence accordingly.
    
    While at it, also fix the comment preceding the first LVDCR0 write that
    still talks about hardcoding the LVDS mode 0.
    
    Fixes: 90374b5c25c9 ("drm/rcar-du: Add internal LVDS encoder support")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Tested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    [bwh: Backported to 3.16:
     - Mode is always 0
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7e412b847ad91de38b26ee7da7e9f90f99c87e8
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Feb 12 18:15:46 2018 +0000

    regmap: Don't use format_val in regmap_bulk_read
    
    commit 9ae27a8d1f3ebff09191fb8cb1341414547293b2 upstream.
    
    A bulk read can be implemented either through regmap_raw_read, or
    by reading each register individually using regmap_read.  Both
    regmap_read and regmap_bulk_read should return values in native
    endian. In the individual case the current implementation calls
    format_val to put the data into the output array, which can cause
    endian issues. The regmap_read will have already converted the data
    into native endian, if the hosts endian differs from the device then
    format_val will switch the endian back again.
    
    Rather than using format_val simply use the code that is called if
    there is no format_val function. This code supports all cases except
    24-bit but there don't appear to be any users of regmap_bulk_read for
    24-bit. Additionally, it would have to be a big endian host for the
    old code to actually function correctly anyway.
    
    Fixes: 15b8d2c41fe5 ("regmap: Fix regmap_bulk_read in BE mode")
    Reported-by: David Rhodes <david.rhodes@cirrus.com>
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16:
     - 64-bit I/O is not supported
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7fc5abb728e2d489d0e060a0781329fccde76f2
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Aug 28 20:04:53 2015 +0100

    regmap: Support bulk reads for devices without raw formatting
    
    commit d5b98eb12420ce856caaf57dc5256eedc56a3747 upstream.
    
    When doing a bulk read from a device which lacks raw I/O support we fall
    back to doing register at a time reads but we still use the raw
    formatters in order to render the data into the word size used by the
    device (since bulk reads still operate on the device word size rather
    than unsigned ints).  This means that devices without raw formatting
    such as those that provide reg_read() are not supported.  Provide
    handling for them by copying the values read into native endian values
    of the appropriate size.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b5b9da8552bbfb29113a93cbd4a87b66e35d6a6
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Feb 12 18:15:45 2018 +0000

    regmap: Correct offset handling in regmap_volatile_range
    
    commit b8f9a03b741ddfdde4aa8b607fa7d88eb63a6338 upstream.
    
    The current implementation is broken for regmaps that have a reg_stride,
    since it doesn't take the stride into account. Correct this by using the
    helper function to calculate the register offset.
    
    Fixes: f01ee60fffa4 ("regmap: implement register striding")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16: Use simple multiplication instead of
     regmap_get_offset()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 288aba7ed19bc8b39de19f564dbd4bde97332c3c
Author: Michal Srb <msrb@suse.com>
Date:   Mon Feb 5 16:04:38 2018 +0000

    drm/i915/cmdparser: Do not check past the cmd length.
    
    commit 3aec7f871c65eb5f76b4125fda432593c834a6f2 upstream.
    
    The command MEDIA_VFE_STATE checks bits at offset +2 dwords. However, it is
    possible to have MEDIA_VFE_STATE command with length = 0 + LENGTH_BIAS = 2.
    In that case check_cmd will read bits from the following command, or even past
    the end of the buffer.
    
    If the offset ends up outside of the command length, reject the command.
    
    Fixes: 351e3db2b363 ("drm/i915: Implement command buffer parsing logic")
    Signed-off-by: Michal Srb <msrb@suse.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180205151745.29292-1-msrb@suse.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180205160438.3267-2-chris@chris-wilson.co.uk
    [bwh: Backported to 3.16: Log ring->id rather than engine->name]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c166be1b3aea6eaa9c167656b53c018aa1a9089e
Author: Francisco Jerez <currojerez@riseup.net>
Date:   Fri May 29 16:44:13 2015 +0300

    drm/i915: Fix command parser to validate multiple register access with the same command.
    
    commit 6a65c5b9326c9dd391afb1b3df75cbedffbaccdb upstream.
    
    Until now the software command checker assumed that commands could
    read or write at most a single register per packet.  This is not
    necessarily the case, MI_LOAD_REGISTER_IMM expects a variable-length
    list of offset/value pairs and writes them in sequence.  The previous
    code would only check whether the first entry was valid, effectively
    allowing userspace to write unrestricted registers of the MMIO space
    by sending a multi-register write with a legal first register, with
    potential security implications on Gen6 and 7 hardware.
    
    Fix it by extending the drm_i915_cmd_descriptor table to represent
    multi-register access and making validate_cmd() iterate for all
    register offsets present in the command packet.
    
    Signed-off-by: Francisco Jerez <currojerez@riseup.net>
    Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 74ae7ea79a607470802eb9ca49a361d0bcad4568
Author: Brad Volkin <bradley.d.volkin@intel.com>
Date:   Thu Sep 18 16:26:27 2014 -0700

    drm/i915: Log a message when rejecting LRM to OACONTROL
    
    commit 00caf0199f66871b0e2c28d7c2079de0ce1d646c upstream.
    
    The other paths in the command parser that reject a batch all
    log a message indicating the reason. We simply missed this one.
    
    Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f28a516dba3a5fa582e24b83f1b035262a8935c9
Author: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Date:   Sun Dec 31 23:34:54 2017 +0100

    drm/i915: Try EDID bitbanging on HDMI after failed read
    
    commit cfb926e148e99acc02351d72e8b85e32b5f786ef upstream.
    
    The ACK/NACK implementation as found in e.g. the G965 has the falling
    clock edge and the release of the data line after the ACK for the received
    byte happen at the same time.
    
    This is conformant with the I2C specification, which allows a zero hold
    time, see footnote [3]: "A device must internally provide a hold time of
    at least 300 ns for the SDA signal (with respect to the V IH(min) of the
    SCL signal) to bridge the undefined region of the falling edge of SCL."
    
    Some HDMI-to-VGA converters apparently fail to adhere to this requirement
    and latch SDA at the falling clock edge, so instead of an ACK
    sometimes a NACK is read and the slave (i.e. the EDID ROM) ends the
    transfer.
    
    The bitbanging releases the data line for the ACK only 1/4 bit time after
    the falling clock edge, so a slave will see the correct value no matter
    if it samples at the rising or the falling clock edge or in the center.
    
    Fallback to bitbanging is already done for the CRT connector.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92685
    Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/a39f080b-81a5-4c93-b3f7-7cb0a58daca3@rwthex-w2-a.rwth-ad.de
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>