commit 8c26eee9ed5d108328b4f533268cc1849968dd8e
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu May 4 11:03:43 2017 +0200

    Linux 3.12.74

commit fda92b86ad13946a273ff571e17161e6ab4a7299
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Apr 13 17:53:55 2017 -0500

    ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
    
    commit 34a477e5297cbaa6ecc6e17c042a866e1cbe80d6 upstream.
    
    On x86-32, with CONFIG_FIRMWARE and multiple CPUs, if you enable function
    graph tracing and then suspend to RAM, it will triple fault and reboot when
    it resumes.
    
    The first fault happens when booting a secondary CPU:
    
    startup_32_smp()
      load_ucode_ap()
        prepare_ftrace_return()
          ftrace_graph_is_dead()
            (accesses 'kill_ftrace_graph')
    
    The early head_32.S code calls into load_ucode_ap(), which has an an
    ftrace hook, so it calls prepare_ftrace_return(), which calls
    ftrace_graph_is_dead(), which tries to access the global
    'kill_ftrace_graph' variable with a virtual address, causing a fault
    because the CPU is still in real mode.
    
    The fix is to add a check in prepare_ftrace_return() to make sure it's
    running in protected mode before continuing.  The check makes sure the
    stack pointer is a virtual kernel address.  It's a bit of a hack, but
    it's not very intrusive and it works well enough.
    
    For reference, here are a few other (more difficult) ways this could
    have potentially been fixed:
    
    - Move startup_32_smp()'s call to load_ucode_ap() down to *after* paging
      is enabled.  (No idea what that would break.)
    
    - Track down load_ucode_ap()'s entire callee tree and mark all the
      functions 'notrace'.  (Probably not realistic.)
    
    - Pause graph tracing in ftrace_suspend_notifier_call() or bringup_cpu()
      or __cpu_up(), and ensure that the pause facility can be queried from
      real mode.
    
    Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Tested-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>
    Cc: linux-acpi@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Len Brown <lenb@kernel.org>
    Link: http://lkml.kernel.org/r/5c1272269a580660703ed2eccf44308e790c7a98.1492123841.git.jpoimboe@redhat.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7a6875988a7fce567e4ee22481d6e7dd82a33eff
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Fri Apr 21 16:10:18 2017 -0400

    nfsd: check for oversized NFSv2/v3 arguments
    
    commit e6838a29ecb484c97e4efef9429643b9851fba6e upstream.
    
    A client can append random data to the end of an NFSv2 or NFSv3 RPC call
    without our complaining; we'll just stop parsing at the end of the
    expected data and ignore the rest.
    
    Encoded arguments and replies are stored together in an array of pages,
    and if a call is too large it could leave inadequate space for the
    reply.  This is normally OK because NFS RPC's typically have either
    short arguments and long replies (like READ) or long arguments and short
    replies (like WRITE).  But a client that sends an incorrectly long reply
    can violate those assumptions.  This was observed to cause crashes.
    
    Also, several operations increment rq_next_page in the decode routine
    before checking the argument size, which can leave rq_next_page pointing
    well past the end of the page array, causing trouble later in
    svc_free_pages.
    
    So, following a suggestion from Neil Brown, add a central check to
    enforce our expectation that no NFSv2/v3 call has both a large call and
    a large reply.
    
    As followup we may also want to rewrite the encoding routines to check
    more carefully that they aren't running off the end of the page array.
    
    We may also consider rejecting calls that have any extra garbage
    appended.  That would be safer, and within our rights by spec, but given
    the age of our server and the NFS protocol, and the fact that we've
    never enforced this before, we may need to balance that against the
    possibility of breaking some oddball client.
    
    Reported-by: Tuomas Haanpää <thaan@synopsys.com>
    Reported-by: Ari Kauppi <ari@synopsys.com>
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2d8c6eef0612ceb5a827c532c62dca0d3a218a4e
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Thu Apr 13 15:36:31 2017 -0700

    Input: i8042 - add Clevo P650RS to the i8042 reset list
    
    commit 7c5bb4ac2b76d2a09256aec8a7d584bf3e2b0466 upstream.
    
    Clevo P650RS and other similar devices require i8042 to be reset in order
    to detect Synaptics touchpad.
    
    Reported-by: Paweł Bylica <chfast@gmail.com>
    Tested-by: Ed Bordin <edbordin@gmail.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=190301
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a8ece68c56153be505ef9b3ef55e4bcd3cef9331
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Apr 14 17:22:18 2017 -0400

    p9_client_readdir() fix
    
    commit 71d6ad08379304128e4bdfaf0b4185d54375423e upstream.
    
    Don't assume that server is sane and won't return more data than
    asked for.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit eff3cc735c263d86c83045eef67590770d248c37
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Mar 30 16:06:02 2017 +0100

    MIPS: KGDB: Use kernel context for sleeping threads
    
    commit 162b270c664dca2e0944308e92f9fcc887151a72 upstream.
    
    KGDB is a kernel debug stub and it can't be used to debug userland as it
    can only safely access kernel memory.
    
    On MIPS however KGDB has always got the register state of sleeping
    processes from the userland register context at the beginning of the
    kernel stack. This is meaningless for kernel threads (which never enter
    userland), and for user threads it prevents the user seeing what it is
    doing while in the kernel:
    
    (gdb) info threads
      Id   Target Id         Frame
      ...
      3    Thread 2 (kthreadd) 0x0000000000000000 in ?? ()
      2    Thread 1 (init)   0x000000007705c4b4 in ?? ()
      1    Thread -2 (shadowCPU0) 0xffffffff8012524c in arch_kgdb_breakpoint () at arch/mips/kernel/kgdb.c:201
    
    Get the register state instead from the (partial) kernel register
    context stored in the task's thread_struct for resume() to restore. All
    threads now correctly appear to be in context_switch():
    
    (gdb) info threads
      Id   Target Id         Frame
      ...
      3    Thread 2 (kthreadd) context_switch (rq=<optimized out>, cookie=..., next=<optimized out>, prev=0x0) at kernel/sched/core.c:2903
      2    Thread 1 (init)   context_switch (rq=<optimized out>, cookie=..., next=<optimized out>, prev=0x0) at kernel/sched/core.c:2903
      1    Thread -2 (shadowCPU0) 0xffffffff8012524c in arch_kgdb_breakpoint () at arch/mips/kernel/kgdb.c:201
    
    Call clobbered registers which aren't saved and exception registers
    (BadVAddr & Cause) which can't be easily determined without stack
    unwinding are reported as 0. The PC is taken from the return address,
    such that the state presented matches that found immediately after
    returning from resume().
    
    Fixes: 8854700115ec ("[MIPS] kgdb: add arch support for the kernel's kgdb core")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Jason Wessel <jason.wessel@windriver.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/15829/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 47da45deafcf8f83a93c81558e2b60486e14b0de
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Apr 9 10:41:27 2017 +0200

    ALSA: seq: Don't break snd_use_lock_sync() loop by timeout
    
    commit 4e7655fd4f47c23e5249ea260dc802f909a64611 upstream.
    
    The snd_use_lock_sync() (thus its implementation
    snd_use_lock_sync_helper()) has the 5 seconds timeout to break out of
    the sync loop.  It was introduced from the beginning, just to be
    "safer", in terms of avoiding the stupid bugs.
    
    However, as Ben Hutchings suggested, this timeout rather introduces a
    potential leak or use-after-free that was apparently fixed by the
    commit 2d7d54002e39 ("ALSA: seq: Fix race during FIFO resize"):
    for example, snd_seq_fifo_event_in() -> snd_seq_event_dup() ->
    copy_from_user() could block for a long time, and snd_use_lock_sync()
    goes timeout and still leaves the cell at releasing the pool.
    
    For fixing such a problem, we remove the break by the timeout while
    still keeping the warning.
    
    Suggested-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 97254930bc706c411f49084a7fc30123ab9fb099
Author: Stefano Stabellini <sstabellini@kernel.org>
Date:   Fri Apr 15 18:23:00 2016 -0700

    xen/x86: don't lose event interrupts
    
    commit c06b6d70feb32d28f04ba37aa3df17973fd37b6b upstream.
    
    On slow platforms with unreliable TSC, such as QEMU emulated machines,
    it is possible for the kernel to request the next event in the past. In
    that case, in the current implementation of xen_vcpuop_clockevent, we
    simply return -ETIME. To be precise the Xen returns -ETIME and we pass
    it on. However the result of this is a missed event, which simply causes
    the kernel to hang.
    
    Instead it is better to always ask the hypervisor for a timer event,
    even if the timeout is in the past. That way there are no lost
    interrupts and the kernel survives. To do that, remove the
    VCPU_SSHOTTMR_future flag.
    
    Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Juergen Gross <jgross@suse.com>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit bf7a633d28b46b79d293f0262d8eb701251833d0
Author: santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com>
Date:   Thu Apr 14 10:43:27 2016 -0700

    RDS: Fix the atomicity for congestion map update
    
    commit e47db94e10447fc467777a40302f2b393e9af2fa upstream.
    
    Two different threads with different rds sockets may be in
    rds_recv_rcvbuf_delta() via receive path. If their ports
    both map to the same word in the congestion map, then
    using non-atomic ops to update it could cause the map to
    be incorrect. Lets use atomics to avoid such an issue.
    
    Full credit to Wengang <wen.gang.wang@oracle.com> for
    finding the issue, analysing it and also pointing out
    to offending code with spin lock based fix.
    
    Reviewed-by: Leon Romanovsky <leon@leon.nu>
    Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
    Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a2c54e187e64b883e156fcf5a93e4c8b304227db
Author: Corey Minyard <cminyard@mvista.com>
Date:   Mon Apr 11 09:10:19 2016 -0500

    MIPS: Fix crash registers on non-crashing CPUs
    
    commit c80e1b62ffca52e2d1d865ee58bc79c4c0c55005 upstream.
    
    As part of handling a crash on an SMP system, an IPI is send to
    all other CPUs to save their current registers and stop.  It was
    using task_pt_regs(current) to get the registers, but that will
    only be accurate if the CPU was interrupted running in userland.
    Instead allow the architecture to pass in the registers (all
    pass NULL now, but allow for the future) and then use get_irq_regs()
    which should be accurate as we are in an interrupt.  Fall back to
    task_pt_regs(current) if nothing else is available.
    
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Cc: David Daney <ddaney@caviumnetworks.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/13050/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 204c56d845fcec43176160f831b86444d745cf67
Author: Wei Fang <fangwei1@huawei.com>
Date:   Mon Mar 21 19:18:32 2016 +0800

    md:raid1: fix a dead loop when read from a WriteMostly disk
    
    commit 816b0acf3deb6d6be5d0519b286fdd4bafade905 upstream.
    
    If first_bad == this_sector when we get the WriteMostly disk
    in read_balance(), valid disk will be returned with zero
    max_sectors. It'll lead to a dead loop in make_request(), and
    OOM will happen because of endless allocation of struct bio.
    
    Since we can't get data from this disk in this case, so
    continue for another disk.
    
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2021b2605e8a25a1683f9c62012c835b83c9af5f
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue Mar 22 16:13:15 2016 -0400

    ext4: check if in-inode xattr is corrupted in ext4_expand_extra_isize_ea()
    
    commit 9e92f48c34eb2b9af9d12f892e2fe1fce5e8ce35 upstream.
    
    We aren't checking to see if the in-inode extended attribute is
    corrupted before we try to expand the inode's extra isize fields.
    
    This can lead to potential crashes caused by the BUG_ON() check in
    ext4_xattr_shift_entries().
    
    [js] use EIO instead of undefined EFSCORRUPTED in 3.12
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dafd35deb3caa7f312b37d815302b959d427a9a2
Author: Jamie Bainbridge <jbainbri@redhat.com>
Date:   Wed Apr 26 10:43:27 2017 +1000

    ipv6: check raw payload size correctly in ioctl
    
    [ Upstream commit 105f5528b9bbaa08b526d3405a5bcd2ff0c953c8 ]
    
    In situations where an skb is paged, the transport header pointer and
    tail pointer can be the same because the skb contents are in frags.
    
    This results in ioctl(SIOCINQ/FIONREAD) incorrectly returning a
    length of 0 when the length to receive is actually greater than zero.
    
    skb->len is already correctly set in ip6_input_finish() with
    pskb_pull(), so use skb->len as it always returns the correct result
    for both linear and paged data.
    
    Signed-off-by: Jamie Bainbridge <jbainbri@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 791e4bc1efe094ba4eb7ecce8fe5afe65e7f2070
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Fri Apr 21 20:42:16 2017 +0300

    ip6mr: fix notification device destruction
    
    [ Upstream commit 723b929ca0f79c0796f160c2eeda4597ee98d2b8 ]
    
    Andrey Konovalov reported a BUG caused by the ip6mr code which is caused
    because we call unregister_netdevice_many for a device that is already
    being destroyed. In IPv4's ipmr that has been resolved by two commits
    long time ago by introducing the "notify" parameter to the delete
    function and avoiding the unregister when called from a notifier, so
    let's do the same for ip6mr.
    
    The trace from Andrey:
    ------------[ cut here ]------------
    kernel BUG at net/core/dev.c:6813!
    invalid opcode: 0000 [#1] SMP KASAN
    Modules linked in:
    CPU: 1 PID: 1165 Comm: kworker/u4:3 Not tainted 4.11.0-rc7+ #251
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
    01/01/2011
    Workqueue: netns cleanup_net
    task: ffff880069208000 task.stack: ffff8800692d8000
    RIP: 0010:rollback_registered_many+0x348/0xeb0 net/core/dev.c:6813
    RSP: 0018:ffff8800692de7f0 EFLAGS: 00010297
    RAX: ffff880069208000 RBX: 0000000000000002 RCX: 0000000000000001
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88006af90569
    RBP: ffff8800692de9f0 R08: ffff8800692dec60 R09: 0000000000000000
    R10: 0000000000000006 R11: 0000000000000000 R12: ffff88006af90070
    R13: ffff8800692debf0 R14: dffffc0000000000 R15: ffff88006af90000
    FS:  0000000000000000(0000) GS:ffff88006cb00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe7e897d870 CR3: 00000000657e7000 CR4: 00000000000006e0
    Call Trace:
     unregister_netdevice_many.part.105+0x87/0x440 net/core/dev.c:7881
     unregister_netdevice_many+0xc8/0x120 net/core/dev.c:7880
     ip6mr_device_event+0x362/0x3f0 net/ipv6/ip6mr.c:1346
     notifier_call_chain+0x145/0x2f0 kernel/notifier.c:93
     __raw_notifier_call_chain kernel/notifier.c:394
     raw_notifier_call_chain+0x2d/0x40 kernel/notifier.c:401
     call_netdevice_notifiers_info+0x51/0x90 net/core/dev.c:1647
     call_netdevice_notifiers net/core/dev.c:1663
     rollback_registered_many+0x919/0xeb0 net/core/dev.c:6841
     unregister_netdevice_many.part.105+0x87/0x440 net/core/dev.c:7881
     unregister_netdevice_many net/core/dev.c:7880
     default_device_exit_batch+0x4fa/0x640 net/core/dev.c:8333
     ops_exit_list.isra.4+0x100/0x150 net/core/net_namespace.c:144
     cleanup_net+0x5a8/0xb40 net/core/net_namespace.c:463
     process_one_work+0xc04/0x1c10 kernel/workqueue.c:2097
     worker_thread+0x223/0x19c0 kernel/workqueue.c:2231
     kthread+0x35e/0x430 kernel/kthread.c:231
     ret_from_fork+0x31/0x40 arch/x86/entry/entry_64.S:430
    Code: 3c 32 00 0f 85 70 0b 00 00 48 b8 00 02 00 00 00 00 ad de 49 89
    47 78 e9 93 fe ff ff 49 8d 57 70 49 8d 5f 78 eb 9e e8 88 7a 14 fe <0f>
    0b 48 8b 9d 28 fe ff ff e8 7a 7a 14 fe 48 b8 00 00 00 00 00
    RIP: rollback_registered_many+0x348/0xeb0 RSP: ffff8800692de7f0
    ---[ end trace e0b29c57e9b3292c ]---
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 82e52ffaaaa6175e7417cb2cb7ea99f20e430076
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 6 13:10:52 2017 +0800

    sctp: listen on the sock only when it's state is listening or closed
    
    [ Upstream commit 34b2789f1d9bf8dcca9b5cb553d076ca2cd898ee ]
    
    Now sctp doesn't check sock's state before listening on it. It could
    even cause changing a sock with any state to become a listening sock
    when doing sctp_listen.
    
    This patch is to fix it by checking sock's state in sctp_listen, so
    that it will listen on the sock with right state.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 3101698fc8f411a14e4df3b7da1329fcf25094e4
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 3 12:03:13 2017 +0200

    l2tp: take reference on sessions being dumped
    
    [ Upstream commit e08293a4ccbcc993ded0fdc46f1e57926b833d63 ]
    
    Take a reference on the sessions returned by l2tp_session_find_nth()
    (and rename it l2tp_session_get_nth() to reflect this change), so that
    caller is assured that the session isn't going to disappear while
    processing it.
    
    For procfs and debugfs handlers, the session is held in the .start()
    callback and dropped in .show(). Given that pppol2tp_seq_session_show()
    dereferences the associated PPPoL2TP socket and that
    l2tp_dfs_seq_session_show() might call pppol2tp_show(), we also need to
    call the session's .ref() callback to prevent the socket from going
    away from under us.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Fixes: 0ad6614048cf ("l2tp: Add debugfs files for dumping l2tp debug info")
    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>

commit 3253561151693de7bf23ff6269893da4835aeefb
Author: Nathan Sullivan <nathan.sullivan@ni.com>
Date:   Wed Mar 22 15:27:01 2017 -0500

    net: phy: handle state correctly in phy_stop_machine
    
    [ Upstream commit 49d52e8108a21749dc2114b924c907db43358984 ]
    
    If the PHY is halted on stop, then do not set the state to PHY_UP.  This
    ensures the phy will be restarted later in phy_start when the machine is
    started again.
    
    Fixes: 00db8189d984 ("This patch adds a PHY Abstraction Layer to the Linux Kernel, enabling ethernet drivers to remain as ignorant as is reasonable of the connected PHY's design and operation details.")
    Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com>
    Signed-off-by: Brad Mouring <brad.mouring@ni.com>
    Acked-by: Xander Huff <xander.huff@ni.com>
    Acked-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 1337a4ffe5bcf18979e516c3d65e5b110e7edc2a
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Mar 23 12:39:21 2017 -0700

    net: neigh: guard against NULL solicit() method
    
    [ Upstream commit 48481c8fa16410ffa45939b13b6c53c2ca609e5f ]
    
    Dmitry posted a nice reproducer of a bug triggering in neigh_probe()
    when dereferencing a NULL neigh->ops->solicit method.
    
    This can happen for arp_direct_ops/ndisc_direct_ops and similar,
    which can be used for NUD_NOARP neighbours (created when dev->header_ops
    is NULL). Admin can then force changing nud_state to some other state
    that would fire neigh timer.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

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

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

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

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

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

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

commit 36c65fa1834ed4bc54497a4ffae65058b6c6bb63
Author: Hongxu Jia <hongxu.jia@windriver.com>
Date:   Tue Nov 29 21:56:26 2016 -0500

    netfilter: arp_tables: fix invoking 32bit "iptable -P INPUT ACCEPT" failed in 64bit kernel
    
    commit 17a49cd549d9dc8707dc9262210166455c612dde upstream.
    
    Since 09d9686047db ("netfilter: x_tables: do compat validation via
    translate_table"), it used compatr structure to assign newinfo
    structure.  In translate_compat_table of ip_tables.c and ip6_tables.c,
    it used compatr->hook_entry to replace info->hook_entry and
    compatr->underflow to replace info->underflow, but not do the same
    replacement in arp_tables.c.
    
    It caused invoking 32-bit "arptbale -P INPUT ACCEPT" failed in 64bit
    kernel.
    --------------------------------------
    root@qemux86-64:~# arptables -P INPUT ACCEPT
    root@qemux86-64:~# arptables -P INPUT ACCEPT
    ERROR: Policy for `INPUT' offset 448 != underflow 0
    arptables: Incompatible with this kernel
    --------------------------------------
    
    Fixes: 09d9686047db ("netfilter: x_tables: do compat validation via translate_table")
    Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 915ff058627e270b93b3d398b4b0f2c42d27a362
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:22 2017 +0200

    net/packet: fix overflow in check for tp_reserve
    
    commit bcc5364bdcfe131e6379363f089e7b4108d35b70 upstream.
    
    When calculating po->tp_hdrlen + po->tp_reserve the result can overflow.
    
    Fix by checking that tp_reserve <= INT_MAX on assign.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1bfb6e1bc972137a4aa7df3397d5e0fe90e13025
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:21 2017 +0200

    net/packet: fix overflow in check for tp_frame_nr
    
    commit 8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b upstream.
    
    When calculating rb->frames_per_block * req->tp_block_nr the result
    can overflow.
    
    Add a check that tp_block_size * tp_block_nr <= UINT_MAX.
    
    Since frames_per_block <= tp_block_size, the expression would
    never overflow.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

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

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

commit 3bd7a64caab850def8988a5f4ff5550b97bb1e93
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Apr 23 17:27:12 2015 +1000

    powerpc: Reject binutils 2.24 when building little endian
    
    commit 60e065f70bdb0b0e916389024922ad40f3270c96 upstream.
    
    There is a bug in binutils 2.24 which causes miscompilation if we're
    building little endian and using weak symbols (which the kernel does).
    
    It is fixed in binutils commit 57fa7b8c7e59 "Correct elf_merge_st_other
    arguments for weak symbols", which is in binutils 2.25 and has been
    backported to the binutils 2.24 branch and has been picked up by most
    distros it seems.
    
    However if we're running stock 2.24 (no extra version) then the bug is
    present, so check for that and bail.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 36d08048a7d5b5c56d3f2f9d1b90997f5c44a25e
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Dec 29 14:02:29 2015 -0800

    block: fix del_gendisk() vs blkdev_ioctl crash
    
    commit ac34f15e0c6d2fd58480052b6985f6991fb53bcc upstream.
    
    When tearing down a block device early in its lifetime, userspace may
    still be performing discovery actions like blkdev_ioctl() to re-read
    partitions.
    
    The nvdimm_revalidate_disk() implementation depends on
    disk->driverfs_dev to be valid at entry.  However, it is set to NULL in
    del_gendisk() and fatally this is happening *before* the disk device is
    deleted from userspace view.
    
    There's no reason for del_gendisk() to clear ->driverfs_dev.  That
    device is the parent of the disk.  It is guaranteed to not be freed
    until the disk, as a child, drops its ->parent reference.
    
    We could also fix this issue locally in nvdimm_revalidate_disk() by
    using disk_to_dev(disk)->parent, but lets fix it globally since
    ->driverfs_dev follows the lifetime of the parent.  Longer term we
    should probably just add a @parent parameter to add_disk(), and stop
    carrying this pointer in the gendisk.
    
     BUG: unable to handle kernel NULL pointer dereference at           (null)
     IP: [<ffffffffa00340a8>] nvdimm_revalidate_disk+0x18/0x90 [libnvdimm]
     CPU: 2 PID: 538 Comm: systemd-udevd Tainted: G           O    4.4.0-rc5 #2257
     [..]
     Call Trace:
      [<ffffffff8143e5c7>] rescan_partitions+0x87/0x2c0
      [<ffffffff810f37f9>] ? __lock_is_held+0x49/0x70
      [<ffffffff81438c62>] __blkdev_reread_part+0x72/0xb0
      [<ffffffff81438cc5>] blkdev_reread_part+0x25/0x40
      [<ffffffff8143982d>] blkdev_ioctl+0x4fd/0x9c0
      [<ffffffff811246c9>] ? current_kernel_time64+0x69/0xd0
      [<ffffffff812916dd>] block_ioctl+0x3d/0x50
      [<ffffffff81264c38>] do_vfs_ioctl+0x308/0x560
      [<ffffffff8115dbd1>] ? __audit_syscall_entry+0xb1/0x100
      [<ffffffff810031d6>] ? do_audit_syscall_entry+0x66/0x70
      [<ffffffff81264f09>] SyS_ioctl+0x79/0x90
      [<ffffffff81902672>] entry_SYSCALL_64_fastpath+0x12/0x76
    
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jens Axboe <axboe@fb.com>
    Reported-by: Robert Hu <robert.hu@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

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

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

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

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

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

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

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

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

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

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

commit 157c1df068bccf4d908236d3f55689143e113753
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Thu Jun 9 17:08:56 2016 -0700

    Drivers: hv: get rid of timeout in vmbus_open()
    
    commit 396e287fa2ff46e83ae016cdcb300c3faa3b02f6 upstream.
    
    vmbus_teardown_gpadl() can result in infinite wait when it is called on 5
    second timeout in vmbus_open(). The issue is caused by the fact that gpadl
    teardown operation won't ever succeed for an opened channel and the timeout
    isn't always enough. As a guest, we can always trust the host to respond to
    our request (and there is nothing we can do if it doesn't).
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit cf42508f7b9768728d95ac8bfb9d06aa421d8a3a
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Jun 3 17:09:24 2016 -0700

    Drivers: hv: don't leak memory in vmbus_establish_gpadl()
    
    commit 7cc80c98070ccc7940fc28811c92cca0a681015d upstream.
    
    In some cases create_gpadl_header() allocates submessages but we never
    free them.
    
    [sumits] Note for stable:
    Upstream commit 4d63763296ab7865a98bc29cc7d77145815ef89f:
    (Drivers: hv: get rid of redundant messagecount in create_gpadl_header())
    changes the list usage to initialize list header in all cases; that patch
    isn't added to stable, so the current patch is modified a little bit from
    the upstream commit to check if the list is valid or not.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commit 180a602a952853b20275823e4a75170a078f6c75
Author: Mantas M <grawity@gmail.com>
Date:   Fri Dec 16 10:30:59 2016 +0200

    net: ipv6: check route protocol when deleting routes
    
    commit c2ed1880fd61a998e3ce40254a99a2ad000f1a7d upstream.
    
    The protocol field is checked when deleting IPv4 routes, but ignored for
    IPv6, which causes problems with routing daemons accidentally deleting
    externally set routes (observed by multiple bird6 users).
    
    This can be verified using `ip -6 route del <prefix> proto something`.
    
    Signed-off-by: Mantas MikulÄ—nas <grawity@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b078d30e957dc009370967eb208bbb7e7c586c81
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:57:04 2017 +0000

    catc: Use heap buffer for memory size test
    
    commit 2d6a0e9de03ee658a9adc3bfb2f0ca55dff1e478 upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b07cb3c58b99478b763a3b94ff08ba8fdb8bd295
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:56 2017 +0000

    catc: Combine failure cleanup code in catc_probe()
    
    commit d41149145f98fe26dcd0bfd1d6cc095e6e041418 upstream.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 50717c4bde886dff7d393a03848a991f975e7f7a
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:32 2017 +0000

    rtl8150: Use heap buffers for all register access
    
    commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d08cc484408445f6cff91391e1581b4547dc5291
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:03 2017 +0000

    pegasus: Use heap buffers for all register access
    
    commit 5593523f968bc86d42a035c6df47d5e0979b5ace upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    References: https://bugs.debian.org/852556
    Reported-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Tested-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ce08bcbc3e4d70a496246fd774205a188dc86155
Author: Omar Sandoval <osandov@fb.com>
Date:   Wed Feb 1 00:02:27 2017 -0800

    virtio-console: avoid DMA from stack
    
    commit c4baad50297d84bde1a7ad45e50c73adae4a2192 upstream.
    
    put_chars() stuffs the buffer it gets into an sg, but that buffer may be
    on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it
    manifested as printks getting turned into NUL bytes).
    
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Amit Shah <amit.shah@redhat.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 59546b98395d875f4f85cb1cbac0b5396e3ffe45
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Apr 5 09:39:08 2017 -0700

    mm: Tighten x86 /dev/mem with zeroing reads
    
    commit a4866aa812518ed1a37d8ea0c881dc946409de94 upstream.
    
    Under CONFIG_STRICT_DEVMEM, reading System RAM through /dev/mem is
    disallowed. However, on x86, the first 1MB was always allowed for BIOS
    and similar things, regardless of it actually being System RAM. It was
    possible for heap to end up getting allocated in low 1MB RAM, and then
    read by things like x86info or dd, which would trip hardened usercopy:
    
    usercopy: kernel memory exposure attempt detected from ffff880000090000 (dma-kmalloc-256) (4096 bytes)
    
    This changes the x86 exception for the low 1MB by reading back zeros for
    System RAM areas instead of blindly allowing them. More work is needed to
    extend this to mmap, but currently mmap doesn't go through usercopy, so
    hardened usercopy won't Oops the kernel.
    
    Reported-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Tested-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 803bef975326b78e1bdaa69f33f1b17f7ab4dc68
Author: Lee, Chun-Yi <joeyli.kernel@gmail.com>
Date:   Fri Apr 28 16:23:59 2017 +0800

    platform/x86: acer-wmi: setup accelerometer when ACPI device was found
    
    commit f9ac89f5ad613b462339e845aeb8494646fd9be2 upstream.
    
    The 98d610c3739a patch was introduced since v4.11-rc1 that it causes
    that the accelerometer input device will not be created on workable
    machines because the HID string comparing logic is wrong.
    
    And, the patch doesn't prevent that the accelerometer input device
    be created on the machines that have no BST0001. That's because
    the acpi_get_devices() returns success even it didn't find any
    match device.
    
    This patch fixed the HID string comparing logic of BST0001 device.
    And, it also makes sure that the acpi_get_devices() returns
    acpi_handle for BST0001.
    
    Fixes: 98d610c3739a ("acer-wmi: setup accelerometer when machine has appropriate notify event")
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=193761
    Reported-by: Samuel Sieb <samuel-kbugs@sieb.net>
    Signed-off-by: "Lee, Chun-Yi" <jlee@suse.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d8d98430e95edda0ef2e2be92dcf486e56a71fca
Author: Chun-Yi Lee <joeyli.kernel@gmail.com>
Date:   Thu Nov 3 08:18:52 2016 +0800

    platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
    
    commit 98d610c3739ac354319a6590b915f4624d9151e6 upstream.
    
    The accelerometer event relies on the ACERWMID_EVENT_GUID notify.
    So, this patch changes the codes to setup accelerometer input device
    when detected ACERWMID_EVENT_GUID. It avoids that the accel input
    device created on every Acer machines.
    
    In addition, patch adds a clearly parsing logic of accelerometer hid
    to acer_wmi_get_handle_cb callback function. It is positive matching
    the "SENR" name with "BST0001" device to avoid non-supported hardware.
    
    Reported-by: Bjørn Mork <bjorn@mork.no>
    Cc: Darren Hart <dvhart@infradead.org>
    Signed-off-by: Chun-Yi Lee <jlee@suse.com>
    [andy: slightly massage commit message]
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 72ac62ba051d86885a6c72af92b0a7dd43c7a8e8
Author: Daeho Jeong <daeho.jeong@samsung.com>
Date:   Thu Dec 1 11:49:12 2016 -0500

    ext4: fix inode checksum calculation problem if i_extra_size is small
    
    commit 05ac5aa18abd7db341e54df4ae2b4c98ea0e43b7 upstream.
    
    We've fixed the race condition problem in calculating ext4 checksum
    value in commit b47820edd163 ("ext4: avoid modifying checksum fields
    directly during checksum veficationon"). However, by this change,
    when calculating the checksum value of inode whose i_extra_size is
    less than 4, we couldn't calculate the checksum value in a proper way.
    This problem was found and reported by Nix, Thank you.
    
    Reported-by: Nix <nix@esperi.org.uk>
    Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
    Signed-off-by: Youngjin Gil <youngjin.gil@samsung.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 03662cd00e03d0fe34f9f91217313a4544b71c60
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Feb 2 12:36:01 2017 -0200

    dvb-usb-v2: avoid use-after-free
    
    commit 005145378c9ad7575a01b6ce1ba118fb427f583a upstream.
    
    I ran into a stack frame size warning because of the on-stack copy of
    the USB device structure:
    
    drivers/media/usb/dvb-usb-v2/dvb_usb_core.c: In function 'dvb_usbv2_disconnect':
    drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:1029:1: error: the frame size of 1104 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
    
    Copying a device structure like this is wrong for a number of other reasons
    too aside from the possible stack overflow. One of them is that the
    dev_info() call will print the name of the device later, but AFAICT
    we have only copied a pointer to the name earlier and the actual name
    has been freed by the time it gets printed.
    
    This removes the on-stack copy of the device and instead copies the
    device name using kstrdup(). I'm ignoring the possible failure here
    as both printk() and kfree() are able to deal with NULL pointers.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 09baf2201a8b264d6138a96b76530ce84da0bbaa
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Mon Mar 20 17:49:03 2017 +1100

    powerpc: Disable HFSCR[TM] if TM is not supported
    
    commit 7ed23e1bae8bf7e37fd555066550a00b95a3a98b upstream.
    
    On Power8 & Power9 the early CPU inititialisation in __init_HFSCR()
    turns on HFSCR[TM] (Hypervisor Facility Status and Control Register
    [Transactional Memory]), but that doesn't take into account that TM
    might be disabled by CPU features, or disabled by the kernel being built
    with CONFIG_PPC_TRANSACTIONAL_MEM=n.
    
    So later in boot, when we have setup the CPU features, clear HSCR[TM] if
    the TM CPU feature has been disabled. We use CPU_FTR_TM_COMP to account
    for the CONFIG_PPC_TRANSACTIONAL_MEM=n case.
    
    Without this a KVM guest might try use TM, even if told not to, and
    cause an oops in the host kernel. Typically the oops is seen in
    __kvmppc_vcore_entry() and may or may not be fatal to the host, but is
    always bad news.
    
    In practice all shipping CPU revisions do support TM, and all host
    kernels we are aware of build with TM support enabled, so no one should
    actually be able to hit this in the wild.
    
    Fixes: 2a3563b023e5 ("powerpc: Setup in HFSCR for POWER8")
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Tested-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
    [mpe: Rewrite change log with input from Sam, add Fixes/stable]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [sb: Backported to linux-4.4.y: adjusted context]
    Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b356df1b956d691c1268f751eaa30f39189a422d
Author: Minchan Kim <minchan@kernel.org>
Date:   Thu Apr 13 14:56:37 2017 -0700

    zram: do not use copy_page with non-page aligned address
    
    commit d72e9a7a93e4f8e9e52491921d99e0c8aa89eb4e upstream.
    
    The copy_page is optimized memcpy for page-alinged address.  If it is
    used with non-page aligned address, it can corrupt memory which means
    system corruption.  With zram, it can happen with
    
    1. 64K architecture
    2. partial IO
    3. slub debug
    
    Partial IO need to allocate a page and zram allocates it via kmalloc.
    With slub debug, kmalloc(PAGE_SIZE) doesn't return page-size aligned
    address.  And finally, copy_page(mem, cmem) corrupts memory.
    
    So, this patch changes it to memcpy.
    
    Actuaully, we don't need to change zram_bvec_write part because zsmalloc
    returns page-aligned address in case of PAGE_SIZE class but it's not
    good to rely on the internal of zsmalloc.
    
    Note:
     When this patch is merged to stable, clear_page should be fixed, too.
     Unfortunately, recent zram removes it by "same page merge" feature so
     it's hard to backport this patch to -stable tree.
    
    I will handle it when I receive the mail from stable tree maintainer to
    merge this patch to backport.
    
    Fixes: 42e99bd ("zram: optimize memory operations with clear_page()/copy_page()")
    Link: http://lkml.kernel.org/r/1492042622-12074-2-git-send-email-minchan@kernel.org
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1b991103f0a363e22001fd479fa90d27cf6c9381
Author: Max Bires <jbires@google.com>
Date:   Tue Jan 3 08:18:07 2017 -0800

    char: lack of bool string made CONFIG_DEVPORT always on
    
    commit f2cfa58b136e4b06a9b9db7af5ef62fbb5992f62 upstream.
    
    Without a bool string present, using "# CONFIG_DEVPORT is not set" in
    defconfig files would not actually unset devport. This esnured that
    /dev/port was always on, but there are reasons a user may wish to
    disable it (smaller kernel, attack surface reduction) if it's not being
    used. Adding a message here in order to make this user visible.
    
    Signed-off-by: Max Bires <jbires@google.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 932ae8d926eeb0b2247a52df21c9f3b2c4de7fcb
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Mon Apr 11 10:40:55 2016 +0200

    char: Drop bogus dependency of DEVPORT on !M68K
    
    commit 309124e2648d668a0c23539c5078815660a4a850 upstream.
    
    According to full-history-linux commit d3794f4fa7c3edc3 ("[PATCH] M68k
    update (part 25)"), port operations are allowed on m68k if CONFIG_ISA is
    defined.
    
    However, commit 153dcc54df826d2f ("[PATCH] mem driver: fix conditional
    on isa i/o support") accidentally changed an "||" into an "&&",
    disabling it completely on m68k. This logic was retained when
    introducing the DEVPORT symbol in commit 4f911d64e04a44c4 ("Make
    /dev/port conditional on config symbol").
    
    Drop the bogus dependency on !M68K to fix this.
    
    Fixes: 153dcc54df826d2f ("[PATCH] mem driver: fix conditional on isa i/o support")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: Al Stone <ahs3@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 327f4afb61d6028596a8afc94023508fff4d241f
Author: Juergen Gross <jgross@suse.com>
Date:   Fri Apr 7 17:28:23 2017 +0200

    xen, fbfront: fix connecting to backend
    
    commit 9121b15b5628b38b4695282dc18c553440e0f79b upstream.
    
    Connecting to the backend isn't working reliably in xen-fbfront: in
    case XenbusStateInitWait of the backend has been missed the backend
    transition to XenbusStateConnected will trigger the connected state
    only without doing the actions required when the backend has
    connected.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f1fe73d248c295fe60cbd46127da243badb883aa
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Tue Apr 4 10:42:30 2017 -0400

    scsi: sd: Fix capacity calculation with 32-bit sector_t
    
    commit 7c856152cb92f8eee2df29ef325a1b1f43161aff upstream.
    
    We previously made sure that the reported disk capacity was less than
    0xffffffff blocks when the kernel was not compiled with large sector_t
    support (CONFIG_LBDAF). However, this check assumed that the capacity
    was reported in units of 512 bytes.
    
    Add a sanity check function to ensure that we only enable disks if the
    entire reported capacity can be expressed in terms of sector_t.
    
    Reported-by: Steve Magnani <steve.magnani@digidescorp.com>
    Cc: Bart Van Assche <Bart.VanAssche@sandisk.com>
    Reviewed-by: Bart Van Assche <Bart.VanAssche@sandisk.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 61c25738d899f6980f5ed669e350ed50320ca27f
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Fri Mar 17 08:47:14 2017 -0400

    scsi: sr: Sanity check returned mode data
    
    commit a00a7862513089f17209b732f230922f1942e0b9 upstream.
    
    Kefeng Wang discovered that old versions of the QEMU CD driver would
    return mangled mode data causing us to walk off the end of the buffer in
    an attempt to parse it. Sanity check the returned mode sense data.
    
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b13fb8625499504cc09589ca7591718351f7714b
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Sun Apr 2 13:36:44 2017 -0700

    iscsi-target: Drop work-around for legacy GlobalSAN initiator
    
    commit 1c99de981f30b3e7868b8d20ce5479fa1c0fea46 upstream.
    
    Once upon a time back in 2009, a work-around was added to support
    the GlobalSAN iSCSI initiator v3.3 for MacOSX, which during login
    did not propose nor respond to MaxBurstLength, FirstBurstLength,
    DefaultTime2Wait and DefaultTime2Retain keys.
    
    The work-around in iscsi_check_proposer_for_optional_reply()
    allowed the missing keys to be proposed, but did not require
    waiting for a response before moving to full feature phase
    operation.  This allowed GlobalSAN v3.3 to work out-of-the
    box, and for many years we didn't run into login interopt
    issues with any other initiators..
    
    Until recently, when Martin tried a QLogic 57840S iSCSI Offload
    HBA on Windows 2016 which completed login, but subsequently
    failed with:
    
        Got unknown iSCSI OpCode: 0x43
    
    The issue was QLogic MSFT side did not propose DefaultTime2Wait +
    DefaultTime2Retain, so LIO proposes them itself, and immediately
    transitions to full feature phase because of the GlobalSAN hack.
    However, the QLogic MSFT side still attempts to respond to
    DefaultTime2Retain + DefaultTime2Wait, even though LIO has set
    ISCSI_FLAG_LOGIN_NEXT_STAGE3 + ISCSI_FLAG_LOGIN_TRANSIT
    in last login response.
    
    So while the QLogic MSFT side should have been proposing these
    two keys to start, it was doing the correct thing per RFC-3720
    attempting to respond to proposed keys before transitioning to
    full feature phase.
    
    All that said, recent versions of GlobalSAN iSCSI (v5.3.0.541)
    does correctly propose the four keys during login, making the
    original work-around moot.
    
    So in order to allow QLogic MSFT to run unmodified as-is, go
    ahead and drop this long standing work-around.
    
    Reported-by: Martin Svec <martin.svec@zoner.cz>
    Cc: Martin Svec <martin.svec@zoner.cz>
    Cc: Himanshu Madhani <Himanshu.Madhani@cavium.com>
    Cc: Arun Easi <arun.easi@cavium.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a558a51fcfbd7549000e8a85302c007298669156
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Mar 23 17:19:24 2017 -0700

    iscsi-target: Fix TMR reference leak during session shutdown
    
    commit efb2ea770bb3b0f40007530bc8b0c22f36e1c5eb upstream.
    
    This patch fixes a iscsi-target specific TMR reference leak
    during session shutdown, that could occur when a TMR was
    quiesced before the hand-off back to iscsi-target code
    via transport_cmd_check_stop_to_fabric().
    
    The reference leak happens because iscsit_free_cmd() was
    incorrectly skipping the final target_put_sess_cmd() for
    TMRs when transport_generic_free_cmd() returned zero because
    the se_cmd->cmd_kref did not reach zero, due to the missing
    se_cmd assignment in original code.
    
    The result was iscsi_cmd and it's associated se_cmd memory
    would be freed once se_sess->sess_cmd_map where released,
    but the associated se_tmr_req was leaked and remained part
    of se_device->dev_tmr_list.
    
    This bug would manfiest itself as kernel paging request
    OOPsen in core_tmr_lun_reset(), when a left-over se_tmr_req
    attempted to dereference it's se_cmd pointer that had
    already been released during normal session shutdown.
    
    To address this bug, go ahead and treat ISCSI_OP_SCSI_CMD
    and ISCSI_OP_SCSI_TMFUNC the same when there is an extra
    se_cmd->cmd_kref to drop in iscsit_free_cmd(), and use
    op_scsi to signal __iscsit_free_cmd() when the former
    needs to clear any further iscsi related I/O state.
    
    Reported-by: Rob Millner <rlm@daterainc.com>
    Cc: Rob Millner <rlm@daterainc.com>
    Reported-by: Chu Yuan Lin <cyl@datera.io>
    Cc: Chu Yuan Lin <cyl@datera.io>
    Tested-by: Chu Yuan Lin <cyl@datera.io>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3ebb1b606820857986b4310e5012f78352478774
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Apr 10 17:14:28 2017 +0200

    x86/vdso: Plug race between mapping and ELF header setup
    
    commit 6fdc6dd90272ce7e75d744f71535cfbd8d77da81 upstream.
    
    The vsyscall32 sysctl can racy against a concurrent fork when it switches
    from disabled to enabled:
    
        arch_setup_additional_pages()
            if (vdso32_enabled)
               --> No mapping
                                            sysctl.vsysscall32()
                                              --> vdso32_enabled = true
        create_elf_tables()
          ARCH_DLINFO_IA32
            if (vdso32_enabled) {
               --> Add VDSO entry with NULL pointer
    
    Make ARCH_DLINFO_IA32 check whether the VDSO mapping has been set up for
    the newly forked process or not.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Andy Lutomirski <luto@amacapital.net>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Mathias Krause <minipli@googlemail.com>
    Link: http://lkml.kernel.org/r/20170410151723.602367196@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7ac6fcfad1212f888d425ba8ac83a7826d6f5a43
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Apr 11 10:10:28 2017 +0200

    perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32()
    
    commit f2200ac311302fcdca6556fd0c5127eab6c65a3e upstream.
    
    When the perf_branch_entry::{in_tx,abort,cycles} fields were added,
    intel_pmu_lbr_read_32() wasn't updated to initialize them.
    
    [js] there is no cycles in 3.12 yet
    
    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>
    Cc: linux-kernel@vger.kernel.org
    Fixes: 135c5612c460 ("perf/x86/intel: Support Haswell/v4 LBR format")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1a9cc06dc5a94085a30d40f71e222567e2b1d9b4
Author: Cameron Gutman <aicommander@gmail.com>
Date:   Mon Apr 10 20:44:25 2017 -0700

    Input: xpad - add support for Razer Wildcat gamepad
    
    commit 5376366886251e2f8f248704adb620a4bc4c0937 upstream.
    
    Signed-off-by: Cameron Gutman <aicommander@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 21e07ce1a4ad5a6fd74a5bae14570f2cc024e90b
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Jan 16 18:31:37 2017 +0200

    net/mlx4_core: Fix racy CQ (Completion Queue) free
    
    commit 291c566a28910614ce42d0ffe82196eddd6346f4 upstream.
    
    In function mlx4_cq_completion() and mlx4_cq_event(), the
    radix_tree_lookup requires a rcu_read_lock.
    This is mandatory: if another core frees the CQ, it could
    run the radix_tree_node_rcu_free() call_rcu() callback while
    its being used by the radix tree lookup function.
    
    Additionally, in function mlx4_cq_event(), since we are adding
    the rcu lock around the radix-tree lookup, we no longer need to take
    the spinlock. Also, the synchronize_irq() call for the async event
    eliminates the need for incrementing the cq reference count in
    mlx4_cq_event().
    
    Other changes:
    1. In function mlx4_cq_free(), replace spin_lock_irq with spin_lock:
       we no longer take this spinlock in the interrupt context.
       The spinlock here, therefore, simply protects against different
       threads simultaneously invoking mlx4_cq_free() for different cq's.
    
    2. In function mlx4_cq_free(), we move the radix tree delete to before
       the synchronize_irq() calls. This guarantees that we will not
       access this cq during any subsequent interrupts, and therefore can
       safely free the CQ after the synchronize_irq calls. The rcu_read_lock
       in the interrupt handlers only needs to protect against corrupting the
       radix tree; the interrupt handlers may access the cq outside the
       rcu_read_lock due to the synchronize_irq calls which protect against
       premature freeing of the cq.
    
    3. In function mlx4_cq_event(), we change the mlx_warn message to mlx4_dbg.
    
    4. We leave the cq reference count mechanism in place, because it is
       still needed for the cq completion tasklet mechanism.
    
    Fixes: 6d90aa5cf17b ("net/mlx4_core: Make sure there are no pending async events when freeing CQ")
    Fixes: 225c7b1feef1 ("IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Matan Barak <matanb@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3369bc41e1b42b8199fd41a7a9e2b9f5964e57be
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Thu Dec 29 18:37:10 2016 +0200

    net/mlx4_en: Fix bad WQE issue
    
    commit 6496bbf0ec481966ef9ffe5b6660d8d1b55c60cc upstream.
    
    Single send WQE in RX buffer should be stamped with software
    ownership in order to prevent the flow of QP in error in FW
    once UPDATE_QP is called.
    
    Fixes: 9f519f68cfff ('mlx4_en: Not using Shared Receive Queues')
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4626de1ab3ca71dbe25ebc90401eec494f744597
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Dec 1 13:49:59 2016 -0800

    usb: hub: Wait for connection to be reestablished after port reset
    
    commit 22547c4cc4fe20698a6a85a55b8788859134b8e4 upstream.
    
    On a system with a defective USB device connected to an USB hub,
    an endless sequence of port connect events was observed. The sequence
    of events as observed is as follows:
    
    - Port reports connected event (port status=USB_PORT_STAT_CONNECTION).
    - Event handler debounces port and resets it by calling hub_port_reset().
    - hub_port_reset() calls hub_port_wait_reset() to wait for the reset
      to complete.
    - The reset completes, but USB_PORT_STAT_CONNECTION is not immediately
      set in the port status register.
    - hub_port_wait_reset() returns -ENOTCONN.
    - Port initialization sequence is aborted.
    - A few milliseconds later, the port again reports a connected event,
      and the sequence repeats.
    
    This continues either forever or, randomly, stops if the connection
    is already re-established when the port status is read. It results in
    a high rate of udev events. This in turn destabilizes userspace since
    the above sequence holds the device mutex pretty much continuously
    and prevents userspace from actually reading the device status.
    
    To prevent the problem from happening, let's wait for the connection
    to be re-established after a port reset. If the device was actually
    disconnected, the code will still return an error, but it will do so
    only after the long reset timeout.
    
    Cc: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0a39eb8a881e83154aadacc36fc8bda8258f1991
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:20 2017 +0200

    net/packet: fix overflow in check for priv area size
    
    commit 2b6867c2ce76c596676bec7d2d525af525fdc6e2 upstream.
    
    Subtracting tp_sizeof_priv from tp_block_size and casting to int
    to check whether one is less then the other doesn't always work
    (both of them are unsigned ints).
    
    Compare them as is instead.
    
    Also cast tp_sizeof_priv to u64 before using BLK_PLUS_PRIV, as
    it can overflow inside BLK_PLUS_PRIV otherwise.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 68281619e3fa2cd199523bdadbe8a096683b5e14
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Sun Nov 20 16:09:30 2016 +0100

    mtd: bcm47xxpart: fix parsing first block after aligned TRX
    
    commit bd5d21310133921021d78995ad6346f908483124 upstream.
    
    After parsing TRX we should skip to the first block placed behind it.
    Our code was working only with TRX with length not aligned to the
    blocksize. In other cases (length aligned) it was missing the block
    places right after TRX.
    
    This fixes calculation and simplifies the comment.
    
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 45f27a17a0c14a7f80bc44c90947a8e62817eace
Author: Janusz Dziedzic <januszx.dziedzic@intel.com>
Date:   Mon Mar 13 14:11:32 2017 +0200

    usb: dwc3: gadget: delay unmap of bounced requests
    
    commit de288e36fe33f7e06fa272bc8e2f85aa386d99aa upstream.
    
    In the case of bounced ep0 requests, we must delay DMA operation until
    after ->complete() otherwise we might overwrite contents of req->buf.
    
    This caused problems with RNDIS gadget.
    
    Signed-off-by: Janusz Dziedzic <januszx.dziedzic@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9840e8fb9edaa9a930eb6f922f61cfbf91073c51
Author: Chris Salls <salls@cs.ucsb.edu>
Date:   Fri Apr 7 23:48:11 2017 -0700

    mm/mempolicy.c: fix error handling in set_mempolicy and mbind.
    
    commit cf01fb9985e8deb25ccf0ea54d916b8871ae0e62 upstream.
    
    In the case that compat_get_bitmap fails we do not want to copy the
    bitmap to the user as it will contain uninitialized stack data and leak
    sensitive data.
    
    Signed-off-by: Chris Salls <salls@cs.ucsb.edu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 622253b639cd731b3b10e21a4f312db57b1cf2e1
Author: Marcelo Henrique Cerri <marcelo.cerri@canonical.com>
Date:   Mon Mar 13 12:14:58 2017 -0300

    s390/decompressor: fix initrd corruption caused by bss clear
    
    commit d82c0d12c92705ef468683c9b7a8298dd61ed191 upstream.
    
    Reorder the operations in decompress_kernel() to ensure initrd is moved
    to a safe location before the bss section is zeroed.
    
    During decompression bss can overlap with the initrd and this can
    corrupt the initrd contents depending on the size of the compressed
    kernel (which affects where the initrd is placed by the bootloader) and
    the size of the bss section of the decompressor.
    
    Also use the correct initrd size when checking for overlaps with
    parmblock.
    
    Fixes: 06c0dd72aea3 ([S390] fix boot failures with compressed kernels)
    Reviewed-by: Joy Latten <joy.latten@canonical.com>
    Reviewed-by: Vineetha HariPai <vineetha.hari.pai@canonical.com>
    Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1382b3339bfba2351281e4c780ed70a272d90d93
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Tue Apr 4 14:56:05 2017 +1000

    powerpc: Don't try to fix up misaligned load-with-reservation instructions
    
    commit 48fe9e9488743eec9b7c1addd3c93f12f2123d54 upstream.
    
    In the past, there was only one load-with-reservation instruction,
    lwarx, and if a program attempted a lwarx on a misaligned address, it
    would take an alignment interrupt and the kernel handler would emulate
    it as though it was lwzx, which was not really correct, but benign since
    it is loading the right amount of data, and the lwarx should be paired
    with a stwcx. to the same address, which would also cause an alignment
    interrupt which would result in a SIGBUS being delivered to the process.
    
    We now have 5 different sizes of load-with-reservation instruction. Of
    those, lharx and ldarx cause an immediate SIGBUS by luck since their
    entries in aligninfo[] overlap instructions which were not fixed up, but
    lqarx overlaps with lhz and will be emulated as such. lbarx can never
    generate an alignment interrupt since it only operates on 1 byte.
    
    To straighten this out and fix the lqarx case, this adds code to detect
    the l[hwdq]arx instructions and return without fixing them up, resulting
    in a SIGBUS being delivered to the process.
    
    [js] include disassemble.h in 3.12
    
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b2a7dcb4f4b6109be385b11d0a66bf42b9da7445
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue Apr 4 08:51:34 2017 +0100

    metag/usercopy: Add missing fixups
    
    commit b884a190afcecdbef34ca508ea5ee88bb7c77861 upstream.
    
    The rapf copy loops in the Meta usercopy code is missing some extable
    entries for HTP cores with unaligned access checking enabled, where
    faults occur on the instruction immediately after the faulting access.
    
    Add the fixup labels and extable entries for these cases so that corner
    case user copy failures don't cause kernel crashes.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit df7e41c997ff740e2818c146c05e5bc21c109db6
Author: James Hogan <james.hogan@imgtec.com>
Date:   Mon Apr 3 17:41:40 2017 +0100

    metag/usercopy: Fix src fixup in from user rapf loops
    
    commit 2c0b1df88b987a12d95ea1d6beaf01894f3cc725 upstream.
    
    The fixup code to rewind the source pointer in
    __asm_copy_from_user_{32,64}bit_rapf_loop() always rewound the source by
    a single unit (4 or 8 bytes), however this is insufficient if the fault
    didn't occur on the first load in the loop, as the source pointer will
    have been incremented but nothing will have been stored until all 4
    register [pairs] are loaded.
    
    Read the LSM_STEP field of TXSTATUS (which is already loaded into a
    register), a bit like the copy_to_user versions, to determine how many
    iterations of MGET[DL] have taken place, all of which need rewinding.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 70b91d41266ffff8e49101796e51aa1b61966b3b
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue Apr 4 11:43:26 2017 +0100

    metag/usercopy: Set flags before ADDZ
    
    commit fd40eee1290ad7add7aa665e3ce6b0f9fe9734b4 upstream.
    
    The fixup code for the copy_to_user rapf loops reads TXStatus.LSM_STEP
    to decide how far to rewind the source pointer. There is a special case
    for the last execution of an MGETL/MGETD, since it leaves LSM_STEP=0
    even though the number of MGETLs/MGETDs attempted was 4. This uses ADDZ
    which is conditional upon the Z condition flag, but the AND instruction
    which masked the TXStatus.LSM_STEP field didn't set the condition flags
    based on the result.
    
    Fix that now by using ANDS which does set the flags, and also marking
    the condition codes as clobbered by the inline assembly.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1770a86a089f3c302af6881ab67bc4e960430d2e
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Mar 31 11:14:02 2017 +0100

    metag/usercopy: Zero rest of buffer from copy_from_user
    
    commit 563ddc1076109f2b3f88e6d355eab7b6fd4662cb upstream.
    
    Currently we try to zero the destination for a failed read from userland
    in fixup code in the usercopy.c macros. The rest of the destination
    buffer is then zeroed from __copy_user_zeroing(), which is used for both
    copy_from_user() and __copy_from_user().
    
    Unfortunately we fail to zero in the fixup code as D1Ar1 is set to 0
    before the fixup code entry labels, and __copy_from_user() shouldn't even
    be zeroing the rest of the buffer.
    
    Move the zeroing out into copy_from_user() and rename
    __copy_user_zeroing() to raw_copy_from_user() since it no longer does
    any zeroing. This also conveniently matches the name needed for
    RAW_COPY_USER support in a later patch.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 16bcddbe3c1b721d7851178005c8af01fa20230b
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Mar 31 13:35:01 2017 +0100

    metag/usercopy: Add early abort to copy_to_user
    
    commit fb8ea062a8f2e85256e13f55696c5c5f0dfdcc8b upstream.
    
    When copying to userland on Meta, if any faults are encountered
    immediately abort the copy instead of continuing on and repeatedly
    faulting, and worse potentially copying further bytes successfully to
    subsequent valid pages.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e7ef4a6c0e90b122c1e31ccf8284793e76987658
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Mar 31 11:23:18 2017 +0100

    metag/usercopy: Fix alignment error checking
    
    commit 2257211942bbbf6c798ab70b487d7e62f7835a1a upstream.
    
    Fix the error checking of the alignment adjustment code in
    raw_copy_from_user(), which mistakenly considers it safe to skip the
    error check when aligning the source buffer on a 2 or 4 byte boundary.
    
    If the destination buffer was unaligned it may have started to copy
    using byte or word accesses, which could well be at the start of a new
    (valid) source page. This would result in it appearing to have copied 1
    or 2 bytes at the end of the first (invalid) page rather than none at
    all.
    
    Fixes: 373cd784d0fc ("metag: Memory handling")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1ae49ff524caf78b34c81d908d7414fe9274d645
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Mar 31 10:37:44 2017 +0100

    metag/usercopy: Drop unused macros
    
    commit ef62a2d81f73d9cddef14bc3d9097a57010d551c upstream.
    
    Metag's lib/usercopy.c has a bunch of copy_from_user macros for larger
    copies between 5 and 16 bytes which are completely unused. Before fixing
    zeroing lets drop these macros so there is less to fix.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-metag@vger.kernel.org
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b054b318a7eaade12005ffed8a5957fbb23b6a69
Author: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Date:   Fri Jun 17 17:33:59 2016 +0000

    ring-buffer: Fix return value check in test_ringbuffer()
    
    commit 62277de758b155dc04b78f195a1cb5208c37b2df upstream.
    
    In case of error, the function kthread_run() returns ERR_PTR()
    and never returns NULL. The NULL test in the return value check
    should be replaced with IS_ERR().
    
    Link: http://lkml.kernel.org/r/1466184839-14927-1-git-send-email-weiyj_lk@163.com
    
    Fixes: 6c43e554a ("ring-buffer: Add ring buffer startup selftest")
    Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c88a768d1bc53b9e283904368be4d205c520155d
Author: bsegall@google.com <bsegall@google.com>
Date:   Fri Apr 7 16:04:51 2017 -0700

    ptrace: fix PTRACE_LISTEN race corrupting task->state
    
    commit 5402e97af667e35e54177af8f6575518bf251d51 upstream.
    
    In PT_SEIZED + LISTEN mode STOP/CONT signals cause a wakeup against
    __TASK_TRACED.  If this races with the ptrace_unfreeze_traced at the end
    of a PTRACE_LISTEN, this can wake the task /after/ the check against
    __TASK_TRACED, but before the reset of state to TASK_TRACED.  This
    causes it to instead clobber TASK_WAKING, allowing a subsequent wakeup
    against TRACED while the task is still on the rq wake_list, corrupting
    it.
    
    Oleg said:
     "The kernel can crash or this can lead to other hard-to-debug problems.
      In short, "task->state = TASK_TRACED" in ptrace_unfreeze_traced()
      assumes that nobody else can wake it up, but PTRACE_LISTEN breaks the
      contract. Obviusly it is very wrong to manipulate task->state if this
      task is already running, or WAKING, or it sleeps again"
    
    [akpm@linux-foundation.org: coding-style fixes]
    Fixes: 9899d11f ("ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL")
    Link: http://lkml.kernel.org/r/xm26y3vfhmkp.fsf_-_@bsegall-linux.mtv.corp.google.com
    Signed-off-by: Ben Segall <bsegall@google.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6af96798c54cd0e3843926a6c6303d9e916bebe2
Author: Jan-Marek Glogowski <glogow@fbihome.de>
Date:   Mon Feb 20 12:25:58 2017 +0100

    Reset TreeId to zero on SMB2 TREE_CONNECT
    
    commit 806a28efe9b78ffae5e2757e1ee924b8e50c08ab upstream.
    
    Currently the cifs module breaks the CIFS specs on reconnect as
    described in http://msdn.microsoft.com/en-us/library/cc246529.aspx:
    
    "TreeId (4 bytes): Uniquely identifies the tree connect for the
    command. This MUST be 0 for the SMB2 TREE_CONNECT Request."
    
    Signed-off-by: Jan-Marek Glogowski <glogow@fbihome.de>
    Reviewed-by: Aurelien Aptel <aaptel@suse.com>
    Tested-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e7fea2a4fa3719517f9a48389e7f3c8b1cc8c299
Author: Li Qiang <liq3ea@gmail.com>
Date:   Mon Mar 27 20:10:53 2017 -0700

    drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl()
    
    commit e7e11f99564222d82f0ce84bd521e57d78a6b678 upstream.
    
    In vmw_surface_define_ioctl(), the 'num_sizes' is the sum of the
    'req->mip_levels' array. This array can be assigned any value from
    the user space. As both the 'num_sizes' and the array is uint32_t,
    it is easy to make 'num_sizes' overflow. The later 'mip_levels' is
    used as the loop count. This can lead an oob write. Add the check of
    'req->mip_levels' to avoid this.
    
    Signed-off-by: Li Qiang <liqiang6-s@360.cn>
    Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 305316617746c882339287dbf367a2960a5ac1fc
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Mon Mar 27 13:06:05 2017 +0200

    drm/vmwgfx: Remove getparam error message
    
    commit 53e16798b0864464c5444a204e1bb93ae246c429 upstream.
    
    The mesa winsys sometimes uses unimplemented parameter requests to
    check for features. Remove the error message to avoid bloating the
    kernel log.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f3a7cd27612535d9626c80bdf02d854d5282f98b
Author: Murray McAllister <murray.mcallister@insomniasec.com>
Date:   Mon Mar 27 11:15:12 2017 +0200

    drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl()
    
    commit 63774069d9527a1aeaa4aa20e929ef5e8e9ecc38 upstream.
    
    In vmw_get_cap_3d_ioctl(), a user can supply 0 for a size that is
    used in vzalloc(). This eventually calls dump_stack() (in warn_alloc()),
    which can leak useful addresses to dmesg.
    
    Add check to avoid a size of 0.
    
    Signed-off-by: Murray McAllister <murray.mcallister@insomniasec.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 13a6a971c9165237531c2870da03084a6becc905
Author: Murray McAllister <murray.mcallister@insomniasec.com>
Date:   Mon Mar 27 11:12:53 2017 +0200

    drm/vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl()
    
    commit 36274ab8c596f1240c606bb514da329add2a1bcd upstream.
    
    Before memory allocations vmw_surface_define_ioctl() checks the
    upper-bounds of a user-supplied size, but does not check if the
    supplied size is 0.
    
    Add check to avoid NULL pointer dereferences.
    
    Signed-off-by: Murray McAllister <murray.mcallister@insomniasec.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>