commit d071951e08ee23cd725c2336d7ab4582bb93b0af
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 3 08:36:50 2017 -0700

    Linux 4.9.26

commit 6d10a6cfe85e86f6cc48fbd2e0a8ef6efbc9f9c9
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cbf4337a51dfc886e15a526cb47660404eb2a61
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Sun Jan 8 19:45:48 2017 -0800

    ARCv2: save r30 on kernel entry as gcc uses it for code-gen
    
    commit ecd43afdbe72017aefe48080631eb625e177ef4d upstream.
    
    This is not exposed to userspace debugers yet, which can be done
    independently as a seperate patch !
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4684be169a6700a1c1c5647d6f83f987f45d81fa
Author: Maksim Salau <maksim.salau@gmail.com>
Date:   Sun Apr 23 20:31:40 2017 +0300

    net: can: usb: gs_usb: Fix buffer on stack
    
    commit b05c73bd1e3ec60357580eb042ee932a5ed754d5 upstream.
    
    Allocate buffers on HEAP instead of STACK for local structures
    that are to be sent using usb_control_msg().
    
    Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07389a140f48a3d5d223881bb01cef9f389e2844
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Apr 21 23:14:48 2017 +0200

    macsec: avoid heap overflow in skb_to_sgvec
    
    commit 4d6fa57b4dab0d77f4d8e9d9c73d1e63f6fe8fee upstream.
    
    While this may appear as a humdrum one line change, it's actually quite
    important. An sk_buff stores data in three places:
    
    1. A linear chunk of allocated memory in skb->data. This is the easiest
       one to work with, but it precludes using scatterdata since the memory
       must be linear.
    2. The array skb_shinfo(skb)->frags, which is of maximum length
       MAX_SKB_FRAGS. This is nice for scattergather, since these fragments
       can point to different pages.
    3. skb_shinfo(skb)->frag_list, which is a pointer to another sk_buff,
       which in turn can have data in either (1) or (2).
    
    The first two are rather easy to deal with, since they're of a fixed
    maximum length, while the third one is not, since there can be
    potentially limitless chains of fragments. Fortunately dealing with
    frag_list is opt-in for drivers, so drivers don't actually have to deal
    with this mess. For whatever reason, macsec decided it wanted pain, and
    so it explicitly specified NETIF_F_FRAGLIST.
    
    Because dealing with (1), (2), and (3) is insane, most users of sk_buff
    doing any sort of crypto or paging operation calls a convenient function
    called skb_to_sgvec (which happens to be recursive if (3) is in use!).
    This takes a sk_buff as input, and writes into its output pointer an
    array of scattergather list items. Sometimes people like to declare a
    fixed size scattergather list on the stack; othertimes people like to
    allocate a fixed size scattergather list on the heap. However, if you're
    doing it in a fixed-size fashion, you really shouldn't be using
    NETIF_F_FRAGLIST too (unless you're also ensuring the sk_buff and its
    frag_list children arent't shared and then you check the number of
    fragments in total required.)
    
    Macsec specifically does this:
    
            size += sizeof(struct scatterlist) * (MAX_SKB_FRAGS + 1);
            tmp = kmalloc(size, GFP_ATOMIC);
            *sg = (struct scatterlist *)(tmp + sg_offset);
            ...
            sg_init_table(sg, MAX_SKB_FRAGS + 1);
            skb_to_sgvec(skb, sg, 0, skb->len);
    
    Specifying MAX_SKB_FRAGS + 1 is the right answer usually, but not if you're
    using NETIF_F_FRAGLIST, in which case the call to skb_to_sgvec will
    overflow the heap, and disaster ensues.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36e0be3187c232e99ed460acc21283160d02f923
Author: Yan, Zheng <zyan@redhat.com>
Date:   Wed Apr 19 10:01:48 2017 +0800

    ceph: fix recursion between ceph_set_acl() and __ceph_setattr()
    
    commit 8179a101eb5f4ef0ac9a915fcea9a9d3109efa90 upstream.
    
    ceph_set_acl() calls __ceph_setattr() if the setacl operation needs
    to modify inode's i_mode. __ceph_setattr() updates inode's i_mode,
    then calls posix_acl_chmod().
    
    The problem is that __ceph_setattr() calls posix_acl_chmod() before
    sending the setattr request. The get_acl() call in posix_acl_chmod()
    can trigger a getxattr request. The reply of the getxattr request
    can restore inode's i_mode to its old value. The set_acl() call in
    posix_acl_chmod() sees old value of inode's i_mode, so it calls
    __ceph_setattr() again.
    
    Link: http://tracker.ceph.com/issues/19688
    Reported-by: Jerry Lee <leisurelysw24@gmail.com>
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Tested-by: Luis Henriques <lhenriques@suse.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7809b9e99bb75e83bdd13dc70ce27df61faf5de
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Fri Apr 21 15:26:30 2017 -0400

    nfsd: stricter decoding of write-like NFSv2/v3 ops
    
    commit 13bf9fbff0e5e099e2b6f003a0ab8ae145436309 upstream.
    
    The NFSv2/v3 code does not systematically check whether we decode past
    the end of the buffer.  This generally appears to be harmless, but there
    are a few places where we do arithmetic on the pointers involved and
    don't account for the possibility that a length could be negative.  Add
    checks to catch these.
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ed0797966fda43d3cfbb5b087dad9e9b0cb97c5
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue Apr 25 16:21:34 2017 -0400

    nfsd4: minor NFSv2/v3 write decoding cleanup
    
    commit db44bac41bbfc0c0d9dd943092d8bded3c9db19b upstream.
    
    Use a couple shortcuts that will simplify a following bugfix.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc6445df466f37291a70937642068bda78802a5b
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b88e4113250dd9d2789ba64d7136ccf4b49855f4
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 990afef90e0817583bf9391fae2e2864438dd7dc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 24 14:09:55 2017 +0200

    ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
    
    commit 6e4cac23c5a648d50b107d1b53e9c4e1120c7943 upstream.
    
    The FE setups of Intel SST bytcr_rt5640 and bytcr_rt5651 drivers carry
    the ignore_suspend flag, and this prevents the suspend/resume working
    properly while the stream is running, since SST core code has the
    check of the running streams and returns -EBUSY.  Drop these
    superfluous flags for fixing the behavior.
    
    Also, the bytcr_rt5640 driver lacks of nonatomic flag in some FE
    definitions, which leads to the kernel Oops at suspend/resume like:
    
      BUG: scheduling while atomic: systemd-sleep/3144/0x00000003
      Call Trace:
       dump_stack+0x5c/0x7a
       __schedule_bug+0x55/0x70
       __schedule+0x63c/0x8c0
       schedule+0x3d/0x90
       schedule_timeout+0x16b/0x320
       ? del_timer_sync+0x50/0x50
       ? sst_wait_timeout+0xa9/0x170 [snd_intel_sst_core]
       ? sst_wait_timeout+0xa9/0x170 [snd_intel_sst_core]
       ? remove_wait_queue+0x60/0x60
       ? sst_prepare_and_post_msg+0x275/0x960 [snd_intel_sst_core]
       ? sst_pause_stream+0x9b/0x110 [snd_intel_sst_core]
       ....
    
    This patch addresses these appropriately, too.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2b93bbeec2de7d0f6a0c404295fd1572de8caee
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92f0ddece7dabeb47a7ce0ecf3f67c1e6fea1cf8
Author: James Cowgill <James.Cowgill@imgtec.com>
Date:   Tue Apr 11 13:51:07 2017 +0100

    MIPS: Avoid BUG warning in arch_check_elf
    
    commit c46f59e90226fa5bfcc83650edebe84ae47d454b upstream.
    
    arch_check_elf contains a usage of current_cpu_data that will call
    smp_processor_id() with preemption enabled and therefore triggers a
    "BUG: using smp_processor_id() in preemptible" warning when an fpxx
    executable is loaded.
    
    As a follow-up to commit b244614a60ab ("MIPS: Avoid a BUG warning during
    prctl(PR_SET_FP_MODE, ...)"), apply the same fix to arch_check_elf by
    using raw_current_cpu_data instead. The rationale quoted from the previous
    commit:
    
    "It is assumed throughout the kernel that if any CPU has an FPU, then
    all CPUs would have an FPU as well, so it is safe to perform the check
    with preemption enabled - change the code to use raw_ variant of the
    check to avoid the warning."
    
    Fixes: 46490b572544 ("MIPS: kernel: elf: Improve the overall ABI and FPU mode checks")
    Signed-off-by: James Cowgill <James.Cowgill@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/15951/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fbb6c02df304dffbadd020e0c0acbbc61ce79ab
Author: James Hogan <james.hogan@imgtec.com>
Date:   Wed Apr 5 16:32:45 2017 +0100

    MIPS: cevt-r4k: Fix out-of-bounds array access
    
    commit 9d7f29cdb4ca53506115cf1d7a02ce6013894df0 upstream.
    
    calculate_min_delta() may incorrectly access a 4th element of buf2[]
    which only has 3 elements. This may trigger undefined behaviour and has
    been reported to cause strange crashes in start_kernel() sometime after
    timer initialization when built with GCC 5.3, possibly due to
    register/stack corruption:
    
    sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns
    CPU 0 Unable to handle kernel paging request at virtual address ffffb0aa, epc == 8067daa8, ra == 8067da84
    Oops[#1]:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.18 #51
    task: 8065e3e0 task.stack: 80644000
    $ 0   : 00000000 00000001 00000000 00000000
    $ 4   : 8065b4d0 00000000 805d0000 00000010
    $ 8   : 00000010 80321400 fffff000 812de408
    $12   : 00000000 00000000 00000000 ffffffff
    $16   : 00000002 ffffffff 80660000 806a666c
    $20   : 806c0000 00000000 00000000 00000000
    $24   : 00000000 00000010
    $28   : 80644000 80645ed0 00000000 8067da84
    Hi    : 00000000
    Lo    : 00000000
    epc   : 8067daa8 start_kernel+0x33c/0x500
    ra    : 8067da84 start_kernel+0x318/0x500
    Status: 11000402 KERNEL EXL
    Cause : 4080040c (ExcCode 03)
    BadVA : ffffb0aa
    PrId  : 0501992c (MIPS 1004Kc)
    Modules linked in:
    Process swapper/0 (pid: 0, threadinfo=80644000, task=8065e3e0, tls=00000000)
    Call Trace:
    [<8067daa8>] start_kernel+0x33c/0x500
    Code: 24050240  0c0131f9  24849c64 <a200b0a8> 41606020  000000c0  0c1a45e6 00000000  0c1a5f44
    
    UBSAN also detects the same issue:
    
    ================================================================
    UBSAN: Undefined behaviour in arch/mips/kernel/cevt-r4k.c:85:41
    load of address 80647e4c with insufficient space
    for an object of type 'unsigned int'
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.18 #47
    Call Trace:
    [<80028f70>] show_stack+0x88/0xa4
    [<80312654>] dump_stack+0x84/0xc0
    [<8034163c>] ubsan_epilogue+0x14/0x50
    [<803417d8>] __ubsan_handle_type_mismatch+0x160/0x168
    [<8002dab0>] r4k_clockevent_init+0x544/0x764
    [<80684d34>] time_init+0x18/0x90
    [<8067fa5c>] start_kernel+0x2f0/0x500
    =================================================================
    
    buf2[] is intentionally only 3 elements so that the last element is the
    median once 5 samples have been inserted, so explicitly prevent the
    possibility of comparing against the 4th element rather than extending
    the array.
    
    Fixes: 1fa405552e33f2 ("MIPS: cevt-r4k: Dynamically calculate min_delta_ns")
    Reported-by: Rabin Vincent <rabinv@axis.com>
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Tested-by: Rabin Vincent <rabinv@axis.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/15892/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4805f8a8a2f6add254c112efa1aba74c09f81b54
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 563300b9ff7f32d02581b366ff63573ad6daf25c
Author: Noam Camus <noamca@mellanox.com>
Date:   Tue Apr 4 11:00:41 2017 +0300

    ARC: [plat-eznps] Fix build error
    
    commit 6492f09e864417d382e22b922ae30693a7ce2982 upstream.
    
    Make ATOMIC_INIT available for all ARC platforms (including plat-eznps)
    
    Signed-off-by: Noam Camus <noamca@mellanox.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59f83369d44cb5f718a1ed54136237b737eaa18f
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26b9b1565baff9be66a3aff29e08a1251f5c1bb6
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Fri Apr 14 12:43:01 2017 +0900

    ALSA: firewire-lib: fix inappropriate assignment between signed/unsigned type
    
    commit dfb00a56935186171abb5280b3407c3f910011f1 upstream.
    
    An abstraction of asynchronous transaction for transmission of MIDI
    messages was introduced in Linux v4.4. Each driver can utilize this
    abstraction to transfer MIDI messages via fixed-length payload of
    transaction to a certain unit address. Filling payload of the transaction
    is done by callback. In this callback, each driver can return negative
    error code, however current implementation assigns the return value to
    unsigned variable.
    
    This commit changes type of the variable to fix the bug.
    
    Reported-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Fixes: 585d7cba5e1f ("ALSA: firewire-lib: add helper functions for asynchronous transactions to transfer MIDI messages")
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 827faa2e4ef715a165449475d001606044c3eed2
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Mon Apr 3 21:13:40 2017 +0900

    ALSA: oxfw: fix regression to handle Stanton SCS.1m/1d
    
    commit 3d016d57fdc5e6caa4cd67896f4b081bccad6e2c upstream.
    
    At a commit 6c29230e2a5f ("ALSA: oxfw: delayed registration of sound
    card"), ALSA oxfw driver fails to handle SCS.1m/1d, due to -EBUSY at a call
    of snd_card_register(). The cause is that the driver manages to register
    two rawmidi instances with the same device number 0. This is a regression
    introduced since kernel 4.7.
    
    This commit fixes the regression, by fixing up device property after
    discovering stream formats.
    
    Fixes: 6c29230e2a5f ("ALSA: oxfw: delayed registration of sound card")
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1fc1b057b8eb26ac2a8f7a54b7e240b419b8458
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1dc1b7b508666a76ba73aed29d49a4cf0359e07a
Author: Wei Wang <weiwan@google.com>
Date:   Tue Apr 25 17:38:02 2017 -0700

    tcp: memset ca_priv data to 0 properly
    
    [ Upstream commit c1201444075009507a6818de6518e2822b9a87c8 ]
    
    Always zero out ca_priv data in tcp_assign_congestion_control() so that
    ca_priv data is cleared out during socket creation.
    Also always zero out ca_priv data in tcp_reinit_congestion_control() so
    that when cc algorithm is changed, ca_priv data is cleared out as well.
    We should still zero out ca_priv data even in TCP_CLOSE state because
    user could call connect() on AF_UNSPEC to disconnect the socket and
    leave it in TCP_CLOSE state and later call setsockopt() to switch cc
    algorithm on this socket.
    
    Fixes: 2b0a8c9ee ("tcp: add CDG congestion control")
    Reported-by: Andrey Konovalov  <andreyknvl@google.com>
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df1926123f0c390d4ccbea5760ac0428b6f7cae4
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Tue Apr 25 14:37:15 2017 -0700

    ipv6: check skb->protocol before lookup for nexthop
    
    [ Upstream commit 199ab00f3cdb6f154ea93fa76fd80192861a821d ]
    
    Andrey reported a out-of-bound access in ip6_tnl_xmit(), this
    is because we use an ipv4 dst in ip6_tnl_xmit() and cast an IPv4
    neigh key as an IPv6 address:
    
            neigh = dst_neigh_lookup(skb_dst(skb),
                                     &ipv6_hdr(skb)->daddr);
            if (!neigh)
                    goto tx_err_link_failure;
    
            addr6 = (struct in6_addr *)&neigh->primary_key; // <=== HERE
            addr_type = ipv6_addr_type(addr6);
    
            if (addr_type == IPV6_ADDR_ANY)
                    addr6 = &ipv6_hdr(skb)->daddr;
    
            memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr));
    
    Also the network header of the skb at this point should be still IPv4
    for 4in6 tunnels, we shold not just use it as IPv6 header.
    
    This patch fixes it by checking if skb->protocol is ETH_P_IPV6: if it
    is, we are safe to do the nexthop lookup using skb_dst() and
    ipv6_hdr(skb)->daddr; if not (aka IPv4), we have no clue about which
    dest address we can pick here, we have to rely on callers to fill it
    from tunnel config, so just fall to ip6_route_output() to make the
    decision.
    
    Fixes: ea3dc9601bda ("ip6_tunnel: Add support for wildcard tunnel endpoints.")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae6a762dcdf0a72baa448dbd8d5d77ad89ca1962
Author: Alexander Kochetkov <al.kochet@gmail.com>
Date:   Thu Apr 20 14:00:04 2017 +0300

    net: phy: fix auto-negotiation stall due to unavailable interrupt
    
    [ Upstream commit f555f34fdc586a56204cd16d9a7c104ec6cb6650 ]
    
    The Ethernet link on an interrupt driven PHY was not coming up if the Ethernet
    cable was plugged before the Ethernet interface was brought up.
    
    The patch trigger PHY state machine to update link state if PHY was requested to
    do auto-negotiation and auto-negotiation complete flag already set.
    
    During power-up cycle the PHY do auto-negotiation, generate interrupt and set
    auto-negotiation complete flag. Interrupt is handled by PHY state machine but
    doesn't update link state because PHY is in PHY_READY state. After some time
    MAC bring up, start and request PHY to do auto-negotiation. If there are no new
    settings to advertise genphy_config_aneg() doesn't start PHY auto-negotiation.
    PHY continue to stay in auto-negotiation complete state and doesn't fire
    interrupt. At the same time PHY state machine expect that PHY started
    auto-negotiation and is waiting for interrupt from PHY and it won't get it.
    
    Fixes: 321beec5047a ("net: phy: Use interrupts when available in NOLINK state")
    Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
    Cc: stable <stable@vger.kernel.org> # v4.9+
    Tested-by: Roger Quadros <rogerq@ti.com>
    Tested-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62817c314af3588fbef2a77e61deb0089f883ede
Author: David Ahern <dsa@cumulusnetworks.com>
Date:   Tue Apr 25 09:17:29 2017 -0700

    net: ipv6: regenerate host route if moved to gc list
    
    [ Upstream commit 8048ced9beb21a52e3305f3332ae82020619f24e ]
    
    Taking down the loopback device wreaks havoc on IPv6 routing. By
    extension, taking down a VRF device wreaks havoc on its table.
    
    Dmitry and Andrey both reported heap out-of-bounds reports in the IPv6
    FIB code while running syzkaller fuzzer. The root cause is a dead dst
    that is on the garbage list gets reinserted into the IPv6 FIB. While on
    the gc (or perhaps when it gets added to the gc list) the dst->next is
    set to an IPv4 dst. A subsequent walk of the ipv6 tables causes the
    out-of-bounds access.
    
    Andrey's reproducer was the key to getting to the bottom of this.
    
    With IPv6, host routes for an address have the dst->dev set to the
    loopback device. When the 'lo' device is taken down, rt6_ifdown initiates
    a walk of the fib evicting routes with the 'lo' device which means all
    host routes are removed. That process moves the dst which is attached to
    an inet6_ifaddr to the gc list and marks it as dead.
    
    The recent change to keep global IPv6 addresses added a new function,
    fixup_permanent_addr, that is called on admin up. That function restarts
    dad for an inet6_ifaddr and when it completes the host route attached
    to it is inserted into the fib. Since the route was marked dead and
    moved to the gc list, re-inserting the route causes the reported
    out-of-bounds accesses. If the device with the address is taken down
    or the address is removed, the WARN_ON in fib6_del is triggered.
    
    All of those faults are fixed by regenerating the host route if the
    existing one has been moved to the gc list, something that can be
    determined by checking if the rt6i_ref counter is 0.
    
    Fixes: f1705ec197e7 ("net: ipv6: Make address flushing on ifdown optional")
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae88c43c019f5f6f5390e42e62fbc762c52bbe9b
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Apr 20 20:55:12 2017 +0800

    macvlan: Fix device ref leak when purging bc_queue
    
    [ Upstream commit f6478218e6edc2a587b8f132f66373baa7b2497c ]
    
    When a parent macvlan device is destroyed we end up purging its
    broadcast queue without dropping the device reference count on
    the packet source device.  This causes the source device to linger.
    
    This patch drops that reference count.
    
    Fixes: 260916dfb48c ("macvlan: Fix potential use-after free for...")
    Reported-by: Joe Ghalam <Joe.Ghalam@dell.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bf657201c211fde8002a82c6c0d7f0b3082fb97
Author: Ilan Tayari <ilant@mellanox.com>
Date:   Thu Mar 2 15:49:45 2017 +0200

    net/mlx5e: Fix ETHTOOL_GRXCLSRLALL handling
    
    [ Upstream commit 5e82c9e4ed60beba83f46a1a5a8307b99a23e982 ]
    
    Handler for ETHTOOL_GRXCLSRLALL must set info->data to the size
    of the table, regardless of the amount of entries in it.
    Existing code does not do that, and this breaks all usage of ethtool -N
    or -n without explicit location, with this error:
    rmgr: Invalid RX class rules table size: Success
    
    Set info->data to the table size.
    
    Tested:
    ethtool -n ens8
    ethtool -N ens8 flow-type ip4 src-ip 1.1.1.1 dst-ip 2.2.2.2 action 1
    ethtool -N ens8 flow-type ip4 src-ip 1.1.1.1 dst-ip 2.2.2.2 action 1 loc 55
    ethtool -n ens8
    ethtool -N ens8 delete 1023
    ethtool -N ens8 delete 55
    
    Fixes: f913a72aa008 ("net/mlx5e: Add support to get ethtool flow rules")
    Signed-off-by: Ilan Tayari <ilant@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3215c31ef5c55ec35479b894178cbb1c0639ee4
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Wed Mar 22 11:44:14 2017 +0200

    net/mlx5e: Fix small packet threshold
    
    [ Upstream commit cbad8cddb6ed7ef3a5f0a9a70f1711d4d7fb9a8f ]
    
    RX packet headers are meant to be contained in SKB linear part,
    and chose a threshold of 128.
    It turns out this is not enough, i.e. for IPv6 packet over VxLAN.
    In this case, UDP/IPv4 needs 42 bytes, GENEVE header is 8 bytes,
    and 86 bytes for TCP/IPv6. In total 136 bytes that is more than
    current 128 bytes. In this case expand header flow is reached.
    The warning in skb_try_coalesce() caused by a wrong truesize
    was already fixed here:
    commit 158f323b9868 ("net: adjust skb->truesize in pskb_expand_head()").
    Still, we prefer to totally avoid the expand header flow for performance reasons.
    Tested regular TCP_STREAM with iperf for 1 and 8 streams, no degradation was found.
    
    Fixes: 461017cb006a ("net/mlx5e: Support RX multi-packet WQE (Striding RQ)")
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03641c4ded853647933e13a7105edf071be95404
Author: Mohamad Haj Yahia <mohamad@mellanox.com>
Date:   Thu Mar 30 17:00:25 2017 +0300

    net/mlx5: Fix driver load bad flow when having fw initializing timeout
    
    [ Upstream commit 55378a238e04b39cc82957d91d16499704ea719b ]
    
    If FW is stuck in initializing state we will skip the driver load, but
    current error handling flow doesn't clean previously allocated command
    interface resources.
    
    Fixes: e3297246c2c8 ('net/mlx5_core: Wait for FW readiness on startup')
    Signed-off-by: Mohamad Haj Yahia <mohamad@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2440a5d3e259958a7775dba5d66eba4423fe6ce
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 291e60458ddf501a1b9fd4f37acc6d4d58663c23
Author: Tushar Dave <tushar.n.dave@oracle.com>
Date:   Thu Apr 20 15:57:31 2017 -0700

    netpoll: Check for skb->queue_mapping
    
    [ Upstream commit c70b17b775edb21280e9de7531acf6db3b365274 ]
    
    Reducing real_num_tx_queues needs to be in sync with skb queue_mapping
    otherwise skbs with queue_mapping greater than real_num_tx_queues
    can be sent to the underlying driver and can result in kernel panic.
    
    One such event is running netconsole and enabling VF on the same
    device. Or running netconsole and changing number of tx queues via
    ethtool on same device.
    
    e.g.
    Unable to handle kernel NULL pointer dereference
    tsk->{mm,active_mm}->context = 0000000000001525
    tsk->{mm,active_mm}->pgd = fff800130ff9a000
                  \|/ ____ \|/
                  "@'/ .. \`@"
                  /_| \__/ |_\
                     \__U_/
    kworker/48:1(475): Oops [#1]
    CPU: 48 PID: 475 Comm: kworker/48:1 Tainted: G           OE
    4.11.0-rc3-davem-net+ #7
    Workqueue: events queue_process
    task: fff80013113299c0 task.stack: fff800131132c000
    TSTATE: 0000004480e01600 TPC: 00000000103f9e3c TNPC: 00000000103f9e40 Y:
    00000000    Tainted: G           OE
    TPC: <ixgbe_xmit_frame_ring+0x7c/0x6c0 [ixgbe]>
    g0: 0000000000000000 g1: 0000000000003fff g2: 0000000000000000 g3:
    0000000000000001
    g4: fff80013113299c0 g5: fff8001fa6808000 g6: fff800131132c000 g7:
    00000000000000c0
    o0: fff8001fa760c460 o1: fff8001311329a50 o2: fff8001fa7607504 o3:
    0000000000000003
    o4: fff8001f96e63a40 o5: fff8001311d77ec0 sp: fff800131132f0e1 ret_pc:
    000000000049ed94
    RPC: <set_next_entity+0x34/0xb80>
    l0: 0000000000000000 l1: 0000000000000800 l2: 0000000000000000 l3:
    0000000000000000
    l4: 000b2aa30e34b10d l5: 0000000000000000 l6: 0000000000000000 l7:
    fff8001fa7605028
    i0: fff80013111a8a00 i1: fff80013155a0780 i2: 0000000000000000 i3:
    0000000000000000
    i4: 0000000000000000 i5: 0000000000100000 i6: fff800131132f1a1 i7:
    00000000103fa4b0
    I7: <ixgbe_xmit_frame+0x30/0xa0 [ixgbe]>
    Call Trace:
     [00000000103fa4b0] ixgbe_xmit_frame+0x30/0xa0 [ixgbe]
     [0000000000998c74] netpoll_start_xmit+0xf4/0x200
     [0000000000998e10] queue_process+0x90/0x160
     [0000000000485fa8] process_one_work+0x188/0x480
     [0000000000486410] worker_thread+0x170/0x4c0
     [000000000048c6b8] kthread+0xd8/0x120
     [0000000000406064] ret_from_fork+0x1c/0x2c
     [0000000000000000]           (null)
    Disabling lock debugging due to kernel taint
    Caller[00000000103fa4b0]: ixgbe_xmit_frame+0x30/0xa0 [ixgbe]
    Caller[0000000000998c74]: netpoll_start_xmit+0xf4/0x200
    Caller[0000000000998e10]: queue_process+0x90/0x160
    Caller[0000000000485fa8]: process_one_work+0x188/0x480
    Caller[0000000000486410]: worker_thread+0x170/0x4c0
    Caller[000000000048c6b8]: kthread+0xd8/0x120
    Caller[0000000000406064]: ret_from_fork+0x1c/0x2c
    Caller[0000000000000000]:           (null)
    
    Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94e5670c933d13cfb2c4a579ecc9040d8e093969
Author: David Ahern <dsa@cumulusnetworks.com>
Date:   Wed Apr 19 14:19:43 2017 -0700

    net: ipv6: RTF_PCPU should not be settable from userspace
    
    [ Upstream commit 557c44be917c322860665be3d28376afa84aa936 ]
    
    Andrey reported a fault in the IPv6 route code:
    
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN
    Modules linked in:
    CPU: 1 PID: 4035 Comm: a.out Not tainted 4.11.0-rc7+ #250
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    task: ffff880069809600 task.stack: ffff880062dc8000
    RIP: 0010:ip6_rt_cache_alloc+0xa6/0x560 net/ipv6/route.c:975
    RSP: 0018:ffff880062dced30 EFLAGS: 00010206
    RAX: dffffc0000000000 RBX: ffff8800670561c0 RCX: 0000000000000006
    RDX: 0000000000000003 RSI: ffff880062dcfb28 RDI: 0000000000000018
    RBP: ffff880062dced68 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: ffff880062dcfb28 R14: dffffc0000000000 R15: 0000000000000000
    FS:  00007feebe37e7c0(0000) GS:ffff88006cb00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000205a0fe4 CR3: 000000006b5c9000 CR4: 00000000000006e0
    Call Trace:
     ip6_pol_route+0x1512/0x1f20 net/ipv6/route.c:1128
     ip6_pol_route_output+0x4c/0x60 net/ipv6/route.c:1212
    ...
    
    Andrey's syzkaller program passes rtmsg.rtmsg_flags with the RTF_PCPU bit
    set. Flags passed to the kernel are blindly copied to the allocated
    rt6_info by ip6_route_info_create making a newly inserted route appear
    as though it is a per-cpu route. ip6_rt_cache_alloc sees the flag set
    and expects rt->dst.from to be set - which it is not since it is not
    really a per-cpu copy. The subsequent call to __ip6_dst_alloc then
    generates the fault.
    
    Fix by checking for the flag and failing with EINVAL.
    
    Fixes: d52d3997f843f ("ipv6: Create percpu rt6_info")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ab89b176b7a6c9366e4c3c309bf69be652e9baa
Author: Ilan Tayari <ilant@mellanox.com>
Date:   Wed Apr 19 21:26:07 2017 +0300

    gso: Validate assumption of frag_list segementation
    
    [ Upstream commit 43170c4e0ba709c79130c3fe5a41e66279950cd0 ]
    
    Commit 07b26c9454a2 ("gso: Support partial splitting at the frag_list
    pointer") assumes that all SKBs in a frag_list (except maybe the last
    one) contain the same amount of GSO payload.
    
    This assumption is not always correct, resulting in the following
    warning message in the log:
        skb_segment: too many frags
    
    For example, mlx5 driver in Striding RQ mode creates some RX SKBs with
    one frag, and some with 2 frags.
    After GRO, the frag_list SKBs end up having different amounts of payload.
    If this frag_list SKB is then forwarded, the aforementioned assumption
    is violated.
    
    Validate the assumption, and fall back to software GSO if it not true.
    
    Change-Id: Ia03983f4a47b6534dd987d7a2aad96d54d46d212
    Fixes: 07b26c9454a2 ("gso: Support partial splitting at the frag_list pointer")
    Signed-off-by: Ilan Tayari <ilant@mellanox.com>
    Signed-off-by: Ilya Lesokhin <ilyal@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcbf5a71a646f03f731d67ad86acfaac2511d29a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Apr 18 22:14:26 2017 +0300

    dp83640: don't recieve time stamps twice
    
    [ Upstream commit 9d386cd9a755c8293e8916264d4d053878a7c9c7 ]
    
    This patch is prompted by a static checker warning about a potential
    use after free.  The concern is that netif_rx_ni() can free "skb" and we
    call it twice.
    
    When I look at the commit that added this, it looks like some stray
    lines were added accidentally.  It doesn't make sense to me that we
    would recieve the same data two times.  I asked the author but never
    recieved a response.
    
    I can't test this code, but I'm pretty sure my patch is correct.
    
    Fixes: 4b063258ab93 ("dp83640: Delay scheduled work.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e344e97fb359ca02c1892d093daae7c2060e965e
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Mon Apr 17 15:55:22 2017 +0300

    sh_eth: unmap DMA buffers when freeing rings
    
    [ Upstream commit 1debdc8f9ebd07daf140e417b3841596911e0066 ]
    
    The DMA API debugging (when enabled) causes:
    
    WARNING: CPU: 0 PID: 1445 at lib/dma-debug.c:519 add_dma_entry+0xe0/0x12c
    DMA-API: exceeded 7 overlapping mappings of cacheline 0x01b2974d
    
    to be  printed after repeated initialization of the Ether device, e.g.
    suspend/resume or 'ifconfig' up/down. This is because DMA buffers mapped
    using dma_map_single() in sh_eth_ring_format() and sh_eth_start_xmit() are
    never unmapped. Resolve this problem by unmapping the buffers when freeing
    the descriptor  rings;  in order  to do it right, we'd have to add an extra
    parameter to sh_eth_txfree() (we rename this function to sh_eth_tx_free(),
    while at it).
    
    Based on the commit a47b70ea86bd ("ravb: unmap descriptors when freeing
    rings").
    
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4580d6f10a3b277669fd1d4cf7cac49ad9c8b77
Author: David Ahern <dsa@cumulusnetworks.com>
Date:   Thu Apr 13 10:57:15 2017 -0600

    net: vrf: Fix setting NLM_F_EXCL flag when adding l3mdev rule
    
    [ Upstream commit 426c87caa2b4578b43cd3f689f02c65b743b2559 ]
    
    Only need 1 l3mdev FIB rule. Fix setting NLM_F_EXCL in the nlmsghdr.
    
    Fixes: 1aa6c4f6b8cd8 ("net: vrf: Add l3mdev rules on first device create")
    Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c04e2acd5371387f5e42e3bab412c291d108391
Author: Willem de Bruijn <willemb@google.com>
Date:   Wed Apr 12 19:24:35 2017 -0400

    net-timestamp: avoid use-after-free in ip_recv_error
    
    [ Upstream commit 1862d6208db0aeca9c8ace44915b08d5ab2cd667 ]
    
    Syzkaller reported a use-after-free in ip_recv_error at line
    
        info->ipi_ifindex = skb->dev->ifindex;
    
    This function is called on dequeue from the error queue, at which
    point the device pointer may no longer be valid.
    
    Save ifindex on enqueue in __skb_complete_tx_timestamp, when the
    pointer is valid or NULL. Store it in temporary storage skb->cb.
    
    It is safe to reference skb->dev here, as called from device drivers
    or dev_queue_xmit. The exception is when called from tcp_ack_tstamp;
    in that case it is NULL and ifindex is set to 0 (invalid).
    
    Do not return a pktinfo cmsg if ifindex is 0. This maintains the
    current behavior of not returning a cmsg if skb->dev was NULL.
    
    On dequeue, the ipv4 path will cast from sock_exterr_skb to
    in_pktinfo. Both have ifindex as their first element, so no explicit
    conversion is needed. This is by design, introduced in commit
    0b922b7a829c ("net: original ingress device index in PKTINFO"). For
    ipv6 ip6_datagram_support_cmsg converts to in6_pktinfo.
    
    Fixes: 829ae9d61165 ("net-timestamp: allow reading recv cmsg on errqueue with origin tstamp")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c86872a43400c1e5df2acbd9bb23e3941ef1c98d
Author: Rabin Vincent <rabinv@axis.com>
Date:   Mon Apr 10 08:36:39 2017 +0200

    ipv6: Fix idev->addr_list corruption
    
    [ Upstream commit a2d6cbb0670d54806f18192cb0db266b4a6d285a ]
    
    addrconf_ifdown() removes elements from the idev->addr_list without
    holding the idev->lock.
    
    If this happens while the loop in __ipv6_dev_get_saddr() is handling the
    same element, that function ends up in an infinite loop:
    
      NMI watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [test:1719]
      Call Trace:
       ipv6_get_saddr_eval+0x13c/0x3a0
       __ipv6_dev_get_saddr+0xe4/0x1f0
       ipv6_dev_get_saddr+0x1b4/0x204
       ip6_dst_lookup_tail+0xcc/0x27c
       ip6_dst_lookup_flow+0x38/0x80
       udpv6_sendmsg+0x708/0xba8
       sock_sendmsg+0x18/0x30
       SyS_sendto+0xb8/0xf8
       syscall_common+0x34/0x58
    
    Fixes: 6a923934c33 (Revert "ipv6: Revert optional address flusing on ifdown.")
    Signed-off-by: Rabin Vincent <rabinv@axis.com>
    Acked-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 479beb4c6554bab1f944a5cfb9672a0f9c6892b2
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 8 08:07:33 2017 -0700

    tcp: clear saved_syn in tcp_disconnect()
    
    [ Upstream commit 17c3060b1701fc69daedb4c90be6325d3d9fca8e ]
    
    In the (very unlikely) case a passive socket becomes a listener,
    we do not want to duplicate its saved SYN headers.
    
    This would lead to double frees, use after free, and please hackers and
    various fuzzers
    
    Tested:
        0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 setsockopt(3, IPPROTO_TCP, TCP_SAVE_SYN, [1], 4) = 0
       +0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
    
       +0 bind(3, ..., ...) = 0
       +0 listen(3, 5) = 0
    
       +0 < S 0:0(0) win 32972 <mss 1460,nop,wscale 7>
       +0 > S. 0:0(0) ack 1 <...>
      +.1 < . 1:1(0) ack 1 win 257
       +0 accept(3, ..., ...) = 4
    
       +0 connect(4, AF_UNSPEC, ...) = 0
       +0 close(3) = 0
       +0 bind(4, ..., ...) = 0
       +0 listen(4, 5) = 0
    
       +0 < S 0:0(0) win 32972 <mss 1460,nop,wscale 7>
       +0 > S. 0:0(0) ack 1 <...>
      +.1 < . 1:1(0) ack 1 win 257
    
    Fixes: cd8ae85299d5 ("tcp: provide SYN headers for passive connections")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02f04309673e3731c57af0764430bc8b3eb9d0c5
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbaaa5890df768e273231303659d1238e7f9ae6c
Author: Florian Larysch <fl@n621.de>
Date:   Mon Apr 3 16:46:09 2017 +0200

    net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
    
    [ Upstream commit a8801799c6975601fd58ae62f48964caec2eb83f ]
    
    inet_rtm_getroute synthesizes a skeletal ICMP skb, which is passed to
    ip_route_input when iif is given. If a multipath route is present for
    the designated destination, ip_multipath_icmp_hash ends up being called,
    which uses the source/destination addresses within the skb to calculate
    a hash. However, those are not set in the synthetic skb, causing it to
    return an arbitrary and incorrect result.
    
    Instead, use UDP, which gets no such special treatment.
    
    Signed-off-by: Florian Larysch <fl@n621.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 425cc775d18aa176bdbd2600c4509be14f5c938d
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 3 13:23:15 2017 +0200

    l2tp: fix PPP pseudo-wire auto-loading
    
    [ Upstream commit 249ee819e24c180909f43c1173c8ef6724d21faf ]
    
    PPP pseudo-wire type is 7 (11 is L2TP_PWTYPE_IP).
    
    Fixes: f1f39f911027 ("l2tp: auto load type modules")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7902607693fb63b3c31af97e93465128e635269
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    net/packet: fix overflow in check for tp_reserve
    
    [ Upstream commit bcc5364bdcfe131e6379363f089e7b4108d35b70 ]
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10452124bac39411e92fc8910dd418648bbb78ac
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
    
    [ Upstream commit 8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b ]
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ae0fc950603dcc1716eba1f3a99d6119509c505
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Mar 29 08:45:29 2017 +0200

    l2tp: purge socket queues in the .destruct() callback
    
    [ Upstream commit e91793bb615cf6cdd59c0b6749fe173687bb0947 ]
    
    The Rx path may grab the socket right before pppol2tp_release(), but
    nothing guarantees that it will enqueue packets before
    skb_queue_purge(). Therefore, the socket can be destroyed without its
    queues fully purged.
    
    Fix this by purging queues in pppol2tp_session_destruct() where we're
    guaranteed nothing is still referencing the socket.
    
    Fixes: 9e9cb6221aa7 ("l2tp: fix userspace reception on plain L2TP sockets")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59bc404b382967a41250cc01299b0419e61392c0
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Mar 29 08:44:59 2017 +0200

    l2tp: hold tunnel socket when handling control frames in l2tp_ip and l2tp_ip6
    
    [ Upstream commit 94d7ee0baa8b764cf64ad91ed69464c1a6a0066b ]
    
    The code following l2tp_tunnel_find() expects that a new reference is
    held on sk. Either sk_receive_skb() or the discard_put error path will
    drop a reference from the tunnel's socket.
    
    This issue exists in both l2tp_ip and l2tp_ip6.
    
    Fixes: a3c18422a4b4 ("l2tp: hold socket before dropping lock in l2tp_ip{, 6}_recv()")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 501299e643814d2367aeeae8439129f0facc4183
Author: Talat Batheesh <talatb@mellanox.com>
Date:   Tue Mar 28 16:13:41 2017 +0300

    net/mlx5: Avoid dereferencing uninitialized pointer
    
    [ Upstream commit e497ec680c4cd51e76bfcdd49363d9ab8d32a757 ]
    
    In NETDEV_CHANGEUPPER event the upper_info field is valid
    only when linking is true. Otherwise it should be ignored.
    
    Fixes: 7907f23adc18 (net/mlx5: Implement RoCE LAG feature)
    Signed-off-by: Talat Batheesh <talatb@mellanox.com>
    Reviewed-by: Aviv Heller <avivh@mellanox.com>
    Reviewed-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ea3c235779ac1eb132ba15e754995090e18a26b
Author: Alexei Starovoitov <ast@fb.com>
Date:   Fri Mar 24 15:57:33 2017 -0700

    bpf: improve verifier packet range checks
    
    [ Upstream commit b1977682a3858b5584ffea7cfb7bd863f68db18d ]
    
    llvm can optimize the 'if (ptr > data_end)' checks to be in the order
    slightly different than the original C code which will confuse verifier.
    Like:
    if (ptr + 16 > data_end)
      return TC_ACT_SHOT;
    // may be followed by
    if (ptr + 14 > data_end)
      return TC_ACT_SHOT;
    while llvm can see that 'ptr' is valid for all 16 bytes,
    the verifier could not.
    Fix verifier logic to account for such case and add a test.
    
    Reported-by: Huapeng Zhou <hzhou@fb.com>
    Fixes: 969bf05eb3ce ("bpf: direct packet access")
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d60d4e8c1b73608b6af3bc384e88c062485fd95e
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Thu Mar 23 11:03:31 2017 -0700

    kcm: return immediately after copy_from_user() failure
    
    [ Upstream commit a80db69e47d764bbcaf2fec54b1f308925e7c490 ]
    
    There is no reason to continue after a copy_from_user()
    failure.
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c63d6180076bbb6c5a508910e573994ddc628e5b
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f99161f2ec5f9ec1570a478cb1395e45034d8f3
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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 512d211207df2a6e7ef0fa5c402f0f9f39b1fe8d
Author: Tom Hromatka <tom.hromatka@oracle.com>
Date:   Fri Mar 31 16:31:42 2017 -0600

    sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
    
    [ Upstream commit 9ae34dbd8afd790cb5f52467e4f816434379eafa ]
    
    This commit moves sparc64's prototype of pmd_write() outside
    of the CONFIG_TRANSPARENT_HUGEPAGE ifdef.
    
    In 2013, commit a7b9403f0e6d ("sparc64: Encode huge PMDs using PTE
    encoding.") exposed a path where pmd_write() could be called without
    CONFIG_TRANSPARENT_HUGEPAGE defined.  This can result in the panic below.
    
    The diff is awkward to read, but the changes are straightforward.
    pmd_write() was moved outside of #ifdef CONFIG_TRANSPARENT_HUGEPAGE.
    Also, __HAVE_ARCH_PMD_WRITE was defined.
    
    kernel BUG at include/asm-generic/pgtable.h:576!
                  \|/ ____ \|/
                  "@'/ .. \`@"
                  /_| \__/ |_\
                     \__U_/
    oracle_8114_cdb(8114): Kernel bad sw trap 5 [#1]
    CPU: 120 PID: 8114 Comm: oracle_8114_cdb Not tainted
    4.1.12-61.7.1.el6uek.rc1.sparc64 #1
    task: fff8400700a24d60 ti: fff8400700bc4000 task.ti: fff8400700bc4000
    TSTATE: 0000004411e01607 TPC: 00000000004609f8 TNPC: 00000000004609fc Y:
    00000005    Not tainted
    TPC: <gup_huge_pmd+0x198/0x1e0>
    g0: 000000000001c000 g1: 0000000000ef3954 g2: 0000000000000000 g3: 0000000000000001
    g4: fff8400700a24d60 g5: fff8001fa5c10000 g6: fff8400700bc4000 g7: 0000000000000720
    o0: 0000000000bc5058 o1: 0000000000000240 o2: 0000000000006000 o3: 0000000000001c00
    o4: 0000000000000000 o5: 0000048000080000 sp: fff8400700bc6ab1 ret_pc: 00000000004609f0
    RPC: <gup_huge_pmd+0x190/0x1e0>
    l0: fff8400700bc74fc l1: 0000000000020000 l2: 0000000000002000 l3: 0000000000000000
    l4: fff8001f93250950 l5: 000000000113f800 l6: 0000000000000004 l7: 0000000000000000
    i0: fff8400700ca46a0 i1: bd0000085e800453 i2: 000000026a0c4000 i3: 000000026a0c6000
    i4: 0000000000000001 i5: fff800070c958de8 i6: fff8400700bc6b61 i7: 0000000000460dd0
    I7: <gup_pud_range+0x170/0x1a0>
    Call Trace:
     [0000000000460dd0] gup_pud_range+0x170/0x1a0
     [0000000000460e84] get_user_pages_fast+0x84/0x120
     [00000000006f5a18] iov_iter_get_pages+0x98/0x240
     [00000000005fa744] do_direct_IO+0xf64/0x1e00
     [00000000005fbbc0] __blockdev_direct_IO+0x360/0x15a0
     [00000000101f74fc] ext4_ind_direct_IO+0xdc/0x400 [ext4]
     [00000000101af690] ext4_ext_direct_IO+0x1d0/0x2c0 [ext4]
     [00000000101af86c] ext4_direct_IO+0xec/0x220 [ext4]
     [0000000000553bd4] generic_file_read_iter+0x114/0x140
     [00000000005bdc2c] __vfs_read+0xac/0x100
     [00000000005bf254] vfs_read+0x54/0x100
     [00000000005bf368] SyS_pread64+0x68/0x80
    
    Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24870a79dad693214b21558388cb04dad6159aa3
Author: bob picco <bob.picco@oracle.com>
Date:   Fri Mar 10 14:31:19 2017 -0500

    sparc64: kern_addr_valid regression
    
    [ Upstream commit adfae8a5d833fa2b46577a8081f350e408851f5b ]
    
    I encountered this bug when using /proc/kcore to examine the kernel. Plus a
    coworker inquired about debugging tools. We computed pa but did
    not use it during the maximum physical address bits test. Instead we used
    the identity mapped virtual address which will always fail this test.
    
    I believe the defect came in here:
    [bpicco@zareason linus.git]$ git describe --contains bb4e6e85daa52
    v3.18-rc1~87^2~4
    .
    
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 7c80a91b8877f68a5c87f4a34df5989323f7fc2f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 27 12:37:20 2017 +0200

    Revert "mmc: sdhci-msm: Enable few quirks"
    
    This reverts commit d84be51d1c1d3fa148a3abdeeb1455690df59e63 which is
    commit a0e3142869d29688de6f77be31aa7a401a4a88f1 upstream.
    
    It causes problems and would need other patches backported to resolve
    it, and it shouldn't have been applied to 4.9-stable.
    
    Reported-by: Georgi Djakov <georgi.djakov@linaro.org>
    Cc: Sahitya Tummala <stummala@codeaurora.org>
    Cc: Ritesh Harjani <riteshh@codeaurora.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>