commit ee52d08d2e09539154f397c8a412c68189c4d6a0
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Dec 16 16:26:04 2017 +0100

    Linux 4.9.70

commit 349130bb039149f0c30a8f5528c483b0804023cd
Author: Leon Romanovsky <leon@kernel.org>
Date:   Wed Oct 25 23:10:19 2017 +0300

    RDMA/cxgb4: Annotate r2 and stag as __be32
    
    
    [ Upstream commit 7d7d065a5eec7e218174d5c64a9f53f99ffdb119 ]
    
    Chelsio cxgb4 HW is big-endian, hence there is need to properly
    annotate r2 and stag fields as __be32 and not __u32 to fix the
    following sparse warnings.
    
      drivers/infiniband/hw/cxgb4/qp.c:614:16:
        warning: incorrect type in assignment (different base types)
          expected unsigned int [unsigned] [usertype] r2
          got restricted __be32 [usertype] <noident>
      drivers/infiniband/hw/cxgb4/qp.c:615:18:
        warning: incorrect type in assignment (different base types)
          expected unsigned int [unsigned] [usertype] stag
          got restricted __be32 [usertype] <noident>
    
    Cc: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Reviewed-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7d3f2b5dca97de98dddbd4992dbe49d5a7723fa
Author: Zdenek Kabelac <zkabelac@redhat.com>
Date:   Wed Nov 8 13:44:56 2017 +0100

    md: free unused memory after bitmap resize
    
    
    [ Upstream commit 0868b99c214a3d55486c700de7c3f770b7243e7c ]
    
    When bitmap is resized, the old kalloced chunks just are not released
    once the resized bitmap starts to use new space.
    
    This fixes in particular kmemleak reports like this one:
    
    unreferenced object 0xffff8f4311e9c000 (size 4096):
      comm "lvm", pid 19333, jiffies 4295263268 (age 528.265s)
      hex dump (first 32 bytes):
        02 80 02 80 02 80 02 80 02 80 02 80 02 80 02 80  ................
        02 80 02 80 02 80 02 80 02 80 02 80 02 80 02 80  ................
      backtrace:
        [<ffffffffa69471ca>] kmemleak_alloc+0x4a/0xa0
        [<ffffffffa628c10e>] kmem_cache_alloc_trace+0x14e/0x2e0
        [<ffffffffa676cfec>] bitmap_checkpage+0x7c/0x110
        [<ffffffffa676d0c5>] bitmap_get_counter+0x45/0xd0
        [<ffffffffa676d6b3>] bitmap_set_memory_bits+0x43/0xe0
        [<ffffffffa676e41c>] bitmap_init_from_disk+0x23c/0x530
        [<ffffffffa676f1ae>] bitmap_load+0xbe/0x160
        [<ffffffffc04c47d3>] raid_preresume+0x203/0x2f0 [dm_raid]
        [<ffffffffa677762f>] dm_table_resume_targets+0x4f/0xe0
        [<ffffffffa6774b52>] dm_resume+0x122/0x140
        [<ffffffffa6779b9f>] dev_suspend+0x18f/0x290
        [<ffffffffa677a3a7>] ctl_ioctl+0x287/0x560
        [<ffffffffa677a693>] dm_ctl_ioctl+0x13/0x20
        [<ffffffffa62d6b46>] do_vfs_ioctl+0xa6/0x750
        [<ffffffffa62d7269>] SyS_ioctl+0x79/0x90
        [<ffffffffa6956d41>] entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    Signed-off-by: Zdenek Kabelac <zkabelac@redhat.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93dedcf5a17779c73a7609b9306b519555b9edb8
Author: Paul Moore <paul@paul-moore.com>
Date:   Fri Sep 1 09:44:34 2017 -0400

    audit: ensure that 'audit=1' actually enables audit for PID 1
    
    
    [ Upstream commit 173743dd99a49c956b124a74c8aacb0384739a4c ]
    
    Prior to this patch we enabled audit in audit_init(), which is too
    late for PID 1 as the standard initcalls are run after the PID 1 task
    is forked.  This means that we never allocate an audit_context (see
    audit_alloc()) for PID 1 and therefore miss a lot of audit events
    generated by PID 1.
    
    This patch enables audit as early as possible to help ensure that when
    PID 1 is forked it can allocate an audit_context if required.
    
    Reviewed-by: Richard Guy Briggs <rgb@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a625a16c8aea00aeff6dd95aebe384bf309b261a
Author: Keefe Liu <liuqifa@huawei.com>
Date:   Thu Nov 9 20:09:31 2017 +0800

    ipvlan: fix ipv6 outbound device
    
    
    [ Upstream commit ca29fd7cce5a6444d57fb86517589a1a31c759e1 ]
    
    When process the outbound packet of ipv6, we should assign the master
    device to output device other than input device.
    
    Signed-off-by: Keefe Liu <liuqifa@huawei.com>
    Acked-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97c6687021262fc63d5482cb76b226ebb46feffd
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Oct 12 18:22:25 2017 +0900

    kbuild: do not call cc-option before KBUILD_CFLAGS initialization
    
    
    [ Upstream commit 433dc2ebe7d17dd21cba7ad5c362d37323592236 ]
    
    Some $(call cc-option,...) are invoked very early, even before
    KBUILD_CFLAGS, etc. are initialized.
    
    The returned string from $(call cc-option,...) depends on
    KBUILD_CPPFLAGS, KBUILD_CFLAGS, and GCC_PLUGINS_CFLAGS.
    
    Since they are exported, they are not empty when the top Makefile
    is recursively invoked.
    
    The recursion occurs in several places.  For example, the top
    Makefile invokes itself for silentoldconfig.  "make tinyconfig",
    "make rpm-pkg" are the cases, too.
    
    In those cases, the second call of cc-option from the same line
    runs a different shell command due to non-pristine KBUILD_CFLAGS.
    
    To get the same result all the time, KBUILD_* and GCC_PLUGINS_CFLAGS
    must be initialized before any call of cc-option.  This avoids
    garbage data in the .cache.mk file.
    
    Move all calls of cc-option below the config targets because target
    compiler flags are unnecessary for Kconfig.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eae3f3ab7fb34732fbdd86fad79410aec48faf1d
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu Nov 3 16:10:55 2016 +1100

    powerpc/64: Fix checksum folding in csum_tcpudp_nofold and ip_fast_csum_nofold
    
    commit b492f7e4e07a28e706db26cf4943bb0911435426 upstream.
    
    These functions compute an IP checksum by computing a 64-bit sum and
    folding it to 32 bits (the "nofold" in their names refers to folding
    down to 16 bits).  However, doing (u32) (s + (s >> 32)) is not
    sufficient to fold a 64-bit sum to 32 bits correctly.  The addition
    can produce a carry out from bit 31, which needs to be added in to
    the sum to produce the correct result.
    
    To fix this, we copy the from64to32() function from lib/checksum.c
    and use that.
    
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9414a6309c7205c38ee3559a871ef165dd44c657
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Nov 16 17:58:17 2017 +0000

    KVM: arm/arm64: vgic-its: Preserve the revious read from the pending table
    
    commit 64afe6e9eb4841f35317da4393de21a047a883b3 upstream.
    
    The current pending table parsing code assumes that we keep the
    previous read of the pending bits, but keep that variable in
    the current block, making sure it is discarded on each loop.
    
    We end-up using whatever is on the stack. Who knows, it might
    just be the right thing...
    
    Fixes: 33d3bc9556a7d ("KVM: arm64: vgic-its: Read initial LPI pending table")
    Cc: stable@vger.kernel.org # 4.8
    Reported-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80c0f4777fd6d092537790903800dd352e5d89e5
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Tue Dec 5 23:27:57 2017 +0000

    fix kcm_clone()
    
    commit a5739435b5a3b8c449f8844ecd71a3b1e89f0a33 upstream.
    
    1) it's fput() or sock_release(), not both
    2) don't do fd_install() until the last failure exit.
    3) not a bug per se, but... don't attach socket to struct file
       until it's set up.
    
    Take reserving descriptor into the caller, move fd_install() to the
    caller, sanitize failure exits and calling conventions.
    
    Acked-by: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16648cbcd3326d3abaa3e4239dfda9c7b39e644f
Author: Vincent Pelletier <plr.vincent@gmail.com>
Date:   Sun Nov 26 06:52:53 2017 +0000

    usb: gadget: ffs: Forbid usb_ep_alloc_request from sleeping
    
    commit 30bf90ccdec1da9c8198b161ecbff39ce4e5a9ba upstream.
    
    Found using DEBUG_ATOMIC_SLEEP while submitting an AIO read operation:
    
    [  100.853642] BUG: sleeping function called from invalid context at mm/slab.h:421
    [  100.861148] in_atomic(): 1, irqs_disabled(): 1, pid: 1880, name: python
    [  100.867954] 2 locks held by python/1880:
    [  100.867961]  #0:  (&epfile->mutex){....}, at: [<f8188627>] ffs_mutex_lock+0x27/0x30 [usb_f_fs]
    [  100.868020]  #1:  (&(&ffs->eps_lock)->rlock){....}, at: [<f818ad4b>] ffs_epfile_io.isra.17+0x24b/0x590 [usb_f_fs]
    [  100.868076] CPU: 1 PID: 1880 Comm: python Not tainted 4.14.0-edison+ #118
    [  100.868085] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48
    [  100.868093] Call Trace:
    [  100.868122]  dump_stack+0x47/0x62
    [  100.868156]  ___might_sleep+0xfd/0x110
    [  100.868182]  __might_sleep+0x68/0x70
    [  100.868217]  kmem_cache_alloc_trace+0x4b/0x200
    [  100.868248]  ? dwc3_gadget_ep_alloc_request+0x24/0xe0 [dwc3]
    [  100.868302]  dwc3_gadget_ep_alloc_request+0x24/0xe0 [dwc3]
    [  100.868343]  usb_ep_alloc_request+0x16/0xc0 [udc_core]
    [  100.868386]  ffs_epfile_io.isra.17+0x444/0x590 [usb_f_fs]
    [  100.868424]  ? _raw_spin_unlock_irqrestore+0x27/0x40
    [  100.868457]  ? kiocb_set_cancel_fn+0x57/0x60
    [  100.868477]  ? ffs_ep0_poll+0xc0/0xc0 [usb_f_fs]
    [  100.868512]  ffs_epfile_read_iter+0xfe/0x157 [usb_f_fs]
    [  100.868551]  ? security_file_permission+0x9c/0xd0
    [  100.868587]  ? rw_verify_area+0xac/0x120
    [  100.868633]  aio_read+0x9d/0x100
    [  100.868692]  ? __fget+0xa2/0xd0
    [  100.868727]  ? __might_sleep+0x68/0x70
    [  100.868763]  SyS_io_submit+0x471/0x680
    [  100.868878]  do_int80_syscall_32+0x4e/0xd0
    [  100.868921]  entry_INT80_32+0x2a/0x2a
    [  100.868932] EIP: 0xb7fbb676
    [  100.868941] EFLAGS: 00000292 CPU: 1
    [  100.868951] EAX: ffffffda EBX: b7aa2000 ECX: 00000002 EDX: b7af8368
    [  100.868961] ESI: b7fbb660 EDI: b7aab000 EBP: bfb6c658 ESP: bfb6c638
    [  100.868973]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
    
    Signed-off-by: Vincent Pelletier <plr.vincent@gmail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47273f0d398d8cc50b63d203230d7f9fb3df4ac0
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Nov 20 12:38:44 2017 +0100

    s390: always save and restore all registers on context switch
    
    commit fbbd7f1a51965b50dd12924841da0d478f3da71b upstream.
    
    The switch_to() macro has an optimization to avoid saving and
    restoring register contents that aren't needed for kernel threads.
    
    There is however the possibility that a kernel thread execve's a user
    space program. In such a case the execve'd process can partially see
    the contents of the previous process, which shouldn't be allowed.
    
    To avoid this, simply always save and restore register contents on
    context switch.
    
    Fixes: fdb6d070effba ("switch_to: dont restore/save access & fpu regs for kernel threads")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8dac5bfbd8e6ff0de933a33975abd7e38818ddd
Author: Masamitsu Yamazaki <m-yamazaki@ah.jp.nec.com>
Date:   Wed Nov 15 07:33:14 2017 +0000

    ipmi: Stop timers before cleaning up the module
    
    commit 4f7f5551a760eb0124267be65763008169db7087 upstream.
    
    System may crash after unloading ipmi_si.ko module
    because a timer may remain and fire after the module cleaned up resources.
    
    cleanup_one_si() contains the following processing.
    
            /*
             * Make sure that interrupts, the timer and the thread are
             * stopped and will not run again.
             */
            if (to_clean->irq_cleanup)
                    to_clean->irq_cleanup(to_clean);
            wait_for_timer_and_thread(to_clean);
    
            /*
             * Timeouts are stopped, now make sure the interrupts are off
             * in the BMC.  Note that timers and CPU interrupts are off,
             * so no need for locks.
             */
            while (to_clean->curr_msg || (to_clean->si_state != SI_NORMAL)) {
                    poll(to_clean);
                    schedule_timeout_uninterruptible(1);
            }
    
    si_state changes as following in the while loop calling poll(to_clean).
    
      SI_GETTING_MESSAGES
        => SI_CHECKING_ENABLES
         => SI_SETTING_ENABLES
          => SI_GETTING_EVENTS
           => SI_NORMAL
    
    As written in the code comments above,
    timers are expected to stop before the polling loop and not to run again.
    But the timer is set again in the following process
    when si_state becomes SI_SETTING_ENABLES.
    
      => poll
         => smi_event_handler
           => handle_transaction_done
              // smi_info->si_state == SI_SETTING_ENABLES
             => start_getting_events
               => start_new_msg
                => smi_mod_timer
                  => mod_timer
    
    As a result, before the timer set in start_new_msg() expires,
    the polling loop may see si_state becoming SI_NORMAL
    and the module clean-up finishes.
    
    For example, hard LOCKUP and panic occurred as following.
    smi_timeout was called after smi_event_handler,
    kcs_event and hangs at port_inb()
    trying to access I/O port after release.
    
        [exception RIP: port_inb+19]
        RIP: ffffffffc0473053  RSP: ffff88069fdc3d80  RFLAGS: 00000006
        RAX: ffff8806800f8e00  RBX: ffff880682bd9400  RCX: 0000000000000000
        RDX: 0000000000000ca3  RSI: 0000000000000ca3  RDI: ffff8806800f8e40
        RBP: ffff88069fdc3d80   R8: ffffffff81d86dfc   R9: ffffffff81e36426
        R10: 00000000000509f0  R11: 0000000000100000  R12: 0000000000]:000000
        R13: 0000000000000000  R14: 0000000000000246  R15: ffff8806800f8e00
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0000
     --- <NMI exception stack> ---
    
    To fix the problem I defined a flag, timer_can_start,
    as member of struct smi_info.
    The flag is enabled immediately after initializing the timer
    and disabled immediately before waiting for timer deletion.
    
    Fixes: 0cfec916e86d ("ipmi: Start the timer and thread on internal msgs")
    Signed-off-by: Yamazaki Masamitsu <m-yamazaki@ah.jp.nec.com>
    [Adjusted for recent changes in the driver.]
    [Some fairly major changes went into the IPMI driver in 4.15, so this
     required a backport as the code had changed and moved to a different
     file.  The 4.14 version of this patch moved some code under an
     if statement causing it to not apply to 4.7-4.13.]
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cab694ab7bca62eb42dbfae209c08edc8d229c4
Author: Debabrata Banerjee <dbanerje@akamai.com>
Date:   Wed Dec 13 15:33:37 2017 -0500

    Fix handling of verdicts after NF_QUEUE
    
    [This fix is only needed for v4.9 stable since v4.10+ does not have the issue]
    
    A verdict of NF_STOLEN after NF_QUEUE will cause an incorrect return value
    and a potential kernel panic via double free of skb's
    
    This was broken by commit 7034b566a4e7 ("netfilter: fix nf_queue handling")
    and subsequently fixed in v4.10 by commit c63cbc460419 ("netfilter:
    use switch() to handle verdict cases from nf_hook_slow()"). However that
    commit cannot be cleanly cherry-picked to v4.9
    
    Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>

commit cf00fd3d526cdabaf558e911d71d0a2c303cf0e7
Author: Tommi Rantala <tommi.t.rantala@nokia.com>
Date:   Wed Nov 29 12:48:42 2017 +0200

    tipc: call tipc_rcv() only if bearer is up in tipc_udp_recv()
    
    
    [ Upstream commit c7799c067c2ae33e348508c8afec354f3257ff25 ]
    
    Remove the second tipc_rcv() call in tipc_udp_recv(). We have just
    checked that the bearer is not up, and calling tipc_rcv() with a bearer
    that is not up leads to a TIPC div-by-zero crash in
    tipc_node_calculate_timer(). The crash is rare in practice, but can
    happen like this:
    
      We're enabling a bearer, but it's not yet up and fully initialized.
      At the same time we receive a discovery packet, and in tipc_udp_recv()
      we end up calling tipc_rcv() with the not-yet-initialized bearer,
      causing later the div-by-zero crash in tipc_node_calculate_timer().
    
    Jon Maloy explains the impact of removing the second tipc_rcv() call:
      "link setup in the worst case will be delayed until the next arriving
       discovery messages, 1 sec later, and this is an acceptable delay."
    
    As the tipc_rcv() call is removed, just leave the function via the
    rcu_out label, so that we will kfree_skb().
    
    [   12.590450] Own node address <1.1.1>, network identity 1
    [   12.668088] divide error: 0000 [#1] SMP
    [   12.676952] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.14.2-dirty #1
    [   12.679225] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014
    [   12.682095] task: ffff8c2a761edb80 task.stack: ffffa41cc0cac000
    [   12.684087] RIP: 0010:tipc_node_calculate_timer.isra.12+0x45/0x60 [tipc]
    [   12.686486] RSP: 0018:ffff8c2a7fc838a0 EFLAGS: 00010246
    [   12.688451] RAX: 0000000000000000 RBX: ffff8c2a5b382600 RCX: 0000000000000000
    [   12.691197] RDX: 0000000000000000 RSI: ffff8c2a5b382600 RDI: ffff8c2a5b382600
    [   12.693945] RBP: ffff8c2a7fc838b0 R08: 0000000000000001 R09: 0000000000000001
    [   12.696632] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8c2a5d8949d8
    [   12.699491] R13: ffffffff95ede400 R14: 0000000000000000 R15: ffff8c2a5d894800
    [   12.702338] FS:  0000000000000000(0000) GS:ffff8c2a7fc80000(0000) knlGS:0000000000000000
    [   12.705099] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   12.706776] CR2: 0000000001bb9440 CR3: 00000000bd009001 CR4: 00000000003606e0
    [   12.708847] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   12.711016] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   12.712627] Call Trace:
    [   12.713390]  <IRQ>
    [   12.714011]  tipc_node_check_dest+0x2e8/0x350 [tipc]
    [   12.715286]  tipc_disc_rcv+0x14d/0x1d0 [tipc]
    [   12.716370]  tipc_rcv+0x8b0/0xd40 [tipc]
    [   12.717396]  ? minmax_running_min+0x2f/0x60
    [   12.718248]  ? dst_alloc+0x4c/0xa0
    [   12.718964]  ? tcp_ack+0xaf1/0x10b0
    [   12.719658]  ? tipc_udp_is_known_peer+0xa0/0xa0 [tipc]
    [   12.720634]  tipc_udp_recv+0x71/0x1d0 [tipc]
    [   12.721459]  ? dst_alloc+0x4c/0xa0
    [   12.722130]  udp_queue_rcv_skb+0x264/0x490
    [   12.722924]  __udp4_lib_rcv+0x21e/0x990
    [   12.723670]  ? ip_route_input_rcu+0x2dd/0xbf0
    [   12.724442]  ? tcp_v4_rcv+0x958/0xa40
    [   12.725039]  udp_rcv+0x1a/0x20
    [   12.725587]  ip_local_deliver_finish+0x97/0x1d0
    [   12.726323]  ip_local_deliver+0xaf/0xc0
    [   12.726959]  ? ip_route_input_noref+0x19/0x20
    [   12.727689]  ip_rcv_finish+0xdd/0x3b0
    [   12.728307]  ip_rcv+0x2ac/0x360
    [   12.728839]  __netif_receive_skb_core+0x6fb/0xa90
    [   12.729580]  ? udp4_gro_receive+0x1a7/0x2c0
    [   12.730274]  __netif_receive_skb+0x1d/0x60
    [   12.730953]  ? __netif_receive_skb+0x1d/0x60
    [   12.731637]  netif_receive_skb_internal+0x37/0xd0
    [   12.732371]  napi_gro_receive+0xc7/0xf0
    [   12.732920]  receive_buf+0x3c3/0xd40
    [   12.733441]  virtnet_poll+0xb1/0x250
    [   12.733944]  net_rx_action+0x23e/0x370
    [   12.734476]  __do_softirq+0xc5/0x2f8
    [   12.734922]  irq_exit+0xfa/0x100
    [   12.735315]  do_IRQ+0x4f/0xd0
    [   12.735680]  common_interrupt+0xa2/0xa2
    [   12.736126]  </IRQ>
    [   12.736416] RIP: 0010:native_safe_halt+0x6/0x10
    [   12.736925] RSP: 0018:ffffa41cc0cafe90 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff4d
    [   12.737756] RAX: 0000000000000000 RBX: ffff8c2a761edb80 RCX: 0000000000000000
    [   12.738504] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    [   12.739258] RBP: ffffa41cc0cafe90 R08: 0000014b5b9795e5 R09: ffffa41cc12c7e88
    [   12.740118] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000002
    [   12.740964] R13: ffff8c2a761edb80 R14: 0000000000000000 R15: 0000000000000000
    [   12.741831]  default_idle+0x2a/0x100
    [   12.742323]  arch_cpu_idle+0xf/0x20
    [   12.742796]  default_idle_call+0x28/0x40
    [   12.743312]  do_idle+0x179/0x1f0
    [   12.743761]  cpu_startup_entry+0x1d/0x20
    [   12.744291]  start_secondary+0x112/0x120
    [   12.744816]  secondary_startup_64+0xa5/0xa5
    [   12.745367] Code: b9 f4 01 00 00 48 89 c2 48 c1 ea 02 48 3d d3 07 00
    00 48 0f 47 d1 49 8b 0c 24 48 39 d1 76 07 49 89 14 24 48 89 d1 31 d2 48
    89 df <48> f7 f1 89 c6 e8 81 6e ff ff 5b 41 5c 5d c3 66 90 66 2e 0f 1f
    [   12.747527] RIP: tipc_node_calculate_timer.isra.12+0x45/0x60 [tipc] RSP: ffff8c2a7fc838a0
    [   12.748555] ---[ end trace 1399ab83390650fd ]---
    [   12.749296] Kernel panic - not syncing: Fatal exception in interrupt
    [   12.750123] Kernel Offset: 0x13200000 from 0xffffffff82000000
    (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    [   12.751215] Rebooting in 60 seconds..
    
    Fixes: c9b64d492b1f ("tipc: add replicast peer discovery")
    Signed-off-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cfe6df9383481ab5bda053e2333cf29a471b2d6
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Fri Dec 1 10:14:49 2017 +0100

    s390/qeth: fix thinko in IPv4 multicast address tracking
    
    
    [ Upsteam commit bc3ab70584696cb798b9e1e0ac8e6ced5fd4c3b8 ]
    
    Commit 5f78e29ceebf ("qeth: optimize IP handling in rx_mode callback")
    reworked how secondary addresses are managed for qeth devices.
    Instead of dropping & subsequently re-adding all addresses on every
    ndo_set_rx_mode() call, qeth now keeps track of the addresses that are
    currently registered with the HW.
    On a ndo_set_rx_mode(), we thus only need to do (de-)registration
    requests for the addresses that have actually changed.
    
    On L3 devices, the lookup for IPv4 Multicast addresses checks the wrong
    hashtable - and thus never finds a match. As a result, we first delete
    *all* such addresses, and then re-add them again. So each set_rx_mode()
    causes a short period where the IPv4 Multicast addresses are not
    registered, and the card stops forwarding inbound traffic for them.
    
    Fix this by setting the ->is_multicast flag on the lookup object, thus
    enabling qeth_l3_ip_from_hash() to search the correct hashtable and
    find a match there.
    
    Fixes: 5f78e29ceebf ("qeth: optimize IP handling in rx_mode callback")
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d55222b14bd13724eae360976d4df430ec09495
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Fri Dec 1 10:14:50 2017 +0100

    s390/qeth: fix GSO throughput regression
    
    
    [ Upstream commit 6d69b1f1eb7a2edf8a3547f361c61f2538e054bb ]
    
    Using GSO with small MTUs currently results in a substantial throughput
    regression - which is caused by how qeth needs to map non-linear skbs
    into its IO buffer elements:
    compared to a linear skb, each GSO-segmented skb effectively consumes
    twice as many buffer elements (ie two instead of one) due to the
    additional header-only part. This causes the Output Queue to be
    congested with low-utilized IO buffers.
    
    Fix this as follows:
    If the MSS is low enough so that a non-SG GSO segmentation produces
    order-0 skbs (currently ~3500 byte), opt out from NETIF_F_SG. This is
    where we anticipate the biggest savings, since an SG-enabled
    GSO segmentation produces skbs that always consume at least two
    buffer elements.
    
    Larger MSS values continue to get a SG-enabled GSO segmentation, since
    1) the relative overhead of the additional header-only buffer element
    becomes less noticeable, and
    2) the linearization overhead increases.
    
    With the throughput regression fixed, re-enable NETIF_F_SG by default to
    reap the significant CPU savings of GSO.
    
    Fixes: 5722963a8e83 ("qeth: do not turn on SG per default")
    Reported-by: Nils Hoppmann <niho@de.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbf0dfe7ad9f75e2b09f4f4c84219ed0d0b9b05f
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Fri Dec 1 10:14:51 2017 +0100

    s390/qeth: build max size GSO skbs on L2 devices
    
    
    [ Upstream commit 0cbff6d4546613330a1c5f139f5c368e4ce33ca1 ]
    
    The current GSO skb size limit was copy&pasted over from the L3 path,
    where it is needed due to a TSO limitation.
    As L2 devices don't offer TSO support (and thus all GSO skbs are
    segmented before they reach the driver), there's no reason to restrict
    the stack in how large it may build the GSO skbs.
    
    Fixes: d52aec97e5bc ("qeth: enable scatter/gather in layer 2 mode")
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa0080f1ad0880d1c68108b38579c32756838f51
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Dec 1 10:06:56 2017 -0800

    tcp/dccp: block bh before arming time_wait timer
    
    
    [ Upstream commit cfac7f836a715b91f08c851df915d401a4d52783 ]
    
    Maciej Żenczykowski reported some panics in tcp_twsk_destructor()
    that might be caused by the following bug.
    
    timewait timer is pinned to the cpu, because we want to transition
    timwewait refcount from 0 to 4 in one go, once everything has been
    initialized.
    
    At the time commit ed2e92394589 ("tcp/dccp: fix timewait races in timer
    handling") was merged, TCP was always running from BH habdler.
    
    After commit 5413d1babe8f ("net: do not block BH while processing
    socket backlog") we definitely can run tcp_time_wait() from process
    context.
    
    We need to block BH in the critical section so that the pinned timer
    has still its purpose.
    
    This bug is more likely to happen under stress and when very small RTO
    are used in datacenter flows.
    
    Fixes: 5413d1babe8f ("net: do not block BH while processing socket backlog")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Maciej Żenczykowski <maze@google.com>
    Acked-by: Maciej Żenczykowski <maze@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30985e3beb739c37b8879fe4e1cd4791260b94ce
Author: Lars Persson <lars.persson@axis.com>
Date:   Fri Dec 1 11:12:44 2017 +0100

    stmmac: reset last TSO segment size after device open
    
    
    [ Upstream commit 45ab4b13e46325d00f4acdb365d406e941a15f81 ]
    
    The mss variable tracks the last max segment size sent to the TSO
    engine. We do not update the hardware as long as we receive skb:s with
    the same value in gso_size.
    
    During a network device down/up cycle (mapped to stmmac_release() and
    stmmac_open() callbacks) we issue a reset to the hardware and it
    forgets the setting for mss. However we did not zero out our mss
    variable so the next transmission of a gso packet happens with an
    undefined hardware setting.
    
    This triggers a hang in the TSO engine and eventuelly the netdev
    watchdog will bark.
    
    Fixes: f748be531d70 ("stmmac: support new GMAC4")
    Signed-off-by: Lars Persson <larper@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 564fe3e0e95e0b800ca376ec5c0f20c578494234
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 5 12:45:56 2017 -0800

    net: remove hlist_nulls_add_tail_rcu()
    
    
    [ Upstream commit d7efc6c11b277d9d80b99b1334a78bfe7d7edf10 ]
    
    Alexander Potapenko reported use of uninitialized memory [1]
    
    This happens when inserting a request socket into TCP ehash,
    in __sk_nulls_add_node_rcu(), since sk_reuseport is not initialized.
    
    Bug was added by commit d894ba18d4e4 ("soreuseport: fix ordering for
    mixed v4/v6 sockets")
    
    Note that d296ba60d8e2 ("soreuseport: Resolve merge conflict for v4/v6
    ordering fix") missed the opportunity to get rid of
    hlist_nulls_add_tail_rcu() :
    
    Both UDP sockets and TCP/DCCP listeners no longer use
    __sk_nulls_add_node_rcu() for their hash insertion.
    
    Since all other sockets have unique 4-tuple, the reuseport status
    has no special meaning, so we can always use hlist_nulls_add_head_rcu()
    for them and save few cycles/instructions.
    
    [1]
    
    ==================================================================
    BUG: KMSAN: use of uninitialized memory in inet_ehash_insert+0xd40/0x1050
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.13.0+ #3288
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:16
     dump_stack+0x185/0x1d0 lib/dump_stack.c:52
     kmsan_report+0x13f/0x1c0 mm/kmsan/kmsan.c:1016
     __msan_warning_32+0x69/0xb0 mm/kmsan/kmsan_instr.c:766
     __sk_nulls_add_node_rcu ./include/net/sock.h:684
     inet_ehash_insert+0xd40/0x1050 net/ipv4/inet_hashtables.c:413
     reqsk_queue_hash_req net/ipv4/inet_connection_sock.c:754
     inet_csk_reqsk_queue_hash_add+0x1cc/0x300 net/ipv4/inet_connection_sock.c:765
     tcp_conn_request+0x31e7/0x36f0 net/ipv4/tcp_input.c:6414
     tcp_v4_conn_request+0x16d/0x220 net/ipv4/tcp_ipv4.c:1314
     tcp_rcv_state_process+0x42a/0x7210 net/ipv4/tcp_input.c:5917
     tcp_v4_do_rcv+0xa6a/0xcd0 net/ipv4/tcp_ipv4.c:1483
     tcp_v4_rcv+0x3de0/0x4ab0 net/ipv4/tcp_ipv4.c:1763
     ip_local_deliver_finish+0x6bb/0xcb0 net/ipv4/ip_input.c:216
     NF_HOOK ./include/linux/netfilter.h:248
     ip_local_deliver+0x3fa/0x480 net/ipv4/ip_input.c:257
     dst_input ./include/net/dst.h:477
     ip_rcv_finish+0x6fb/0x1540 net/ipv4/ip_input.c:397
     NF_HOOK ./include/linux/netfilter.h:248
     ip_rcv+0x10f6/0x15c0 net/ipv4/ip_input.c:488
     __netif_receive_skb_core+0x36f6/0x3f60 net/core/dev.c:4298
     __netif_receive_skb net/core/dev.c:4336
     netif_receive_skb_internal+0x63c/0x19c0 net/core/dev.c:4497
     napi_skb_finish net/core/dev.c:4858
     napi_gro_receive+0x629/0xa50 net/core/dev.c:4889
     e1000_receive_skb drivers/net/ethernet/intel/e1000/e1000_main.c:4018
     e1000_clean_rx_irq+0x1492/0x1d30
    drivers/net/ethernet/intel/e1000/e1000_main.c:4474
     e1000_clean+0x43aa/0x5970 drivers/net/ethernet/intel/e1000/e1000_main.c:3819
     napi_poll net/core/dev.c:5500
     net_rx_action+0x73c/0x1820 net/core/dev.c:5566
     __do_softirq+0x4b4/0x8dd kernel/softirq.c:284
     invoke_softirq kernel/softirq.c:364
     irq_exit+0x203/0x240 kernel/softirq.c:405
     exiting_irq+0xe/0x10 ./arch/x86/include/asm/apic.h:638
     do_IRQ+0x15e/0x1a0 arch/x86/kernel/irq.c:263
     common_interrupt+0x86/0x86
    
    Fixes: d894ba18d4e4 ("soreuseport: fix ordering for mixed v4/v6 sockets")
    Fixes: d296ba60d8e2 ("soreuseport: Resolve merge conflict for v4/v6 ordering fix")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Alexander Potapenko <glider@google.com>
    Acked-by: Craig Gallek <kraig@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80ad5bd1b45f5d64fba26046556882fa989b775e
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Dec 6 20:21:24 2017 +0100

    usbnet: fix alignment for frames with no ethernet header
    
    
    [ Upstream commit a4abd7a80addb4a9547f7dfc7812566b60ec505c ]
    
    The qmi_wwan minidriver support a 'raw-ip' mode where frames are
    received without any ethernet header. This causes alignment issues
    because the skbs allocated by usbnet are "IP aligned".
    
    Fix by allowing minidrivers to disable the additional alignment
    offset. This is implemented using a per-device flag, since the same
    minidriver also supports 'ethernet' mode.
    
    Fixes: 32f7adf633b9 ("net: qmi_wwan: support "raw IP" mode")
    Reported-and-tested-by: Jay Foster <jay@systech.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5471afeef41388ec08e6cf610640aaf89805d6db
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Nov 28 08:03:30 2017 -0800

    net/packet: fix a race in packet_bind() and packet_notifier()
    
    
    [ Upstream commit 15fe076edea787807a7cdc168df832544b58eba6 ]
    
    syzbot reported crashes [1] and provided a C repro easing bug hunting.
    
    When/if packet_do_bind() calls __unregister_prot_hook() and releases
    po->bind_lock, another thread can run packet_notifier() and process an
    NETDEV_UP event.
    
    This calls register_prot_hook() and hooks again the socket right before
    first thread is able to grab again po->bind_lock.
    
    Fixes this issue by temporarily setting po->num to 0, as suggested by
    David Miller.
    
    [1]
    dev_remove_pack: ffff8801bf16fa80 not found
    ------------[ cut here ]------------
    kernel BUG at net/core/dev.c:7945!  ( BUG_ON(!list_empty(&dev->ptype_all)); )
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    device syz0 entered promiscuous mode
    CPU: 0 PID: 3161 Comm: syzkaller404108 Not tainted 4.14.0+ #190
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801cc57a500 task.stack: ffff8801cc588000
    RIP: 0010:netdev_run_todo+0x772/0xae0 net/core/dev.c:7945
    RSP: 0018:ffff8801cc58f598 EFLAGS: 00010293
    RAX: ffff8801cc57a500 RBX: dffffc0000000000 RCX: ffffffff841f75b2
    RDX: 0000000000000000 RSI: 1ffff100398b1ede RDI: ffff8801bf1f8810
    device syz0 entered promiscuous mode
    RBP: ffff8801cc58f898 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801bf1f8cd8
    R13: ffff8801cc58f870 R14: ffff8801bf1f8780 R15: ffff8801cc58f7f0
    FS:  0000000001716880(0000) GS:ffff8801db400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020b13000 CR3: 0000000005e25000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     rtnl_unlock+0xe/0x10 net/core/rtnetlink.c:106
     tun_detach drivers/net/tun.c:670 [inline]
     tun_chr_close+0x49/0x60 drivers/net/tun.c:2845
     __fput+0x333/0x7f0 fs/file_table.c:210
     ____fput+0x15/0x20 fs/file_table.c:244
     task_work_run+0x199/0x270 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x9bb/0x1ae0 kernel/exit.c:865
     do_group_exit+0x149/0x400 kernel/exit.c:968
     SYSC_exit_group kernel/exit.c:979 [inline]
     SyS_exit_group+0x1d/0x20 kernel/exit.c:977
     entry_SYSCALL_64_fastpath+0x1f/0x96
    RIP: 0033:0x44ad19
    
    Fixes: 30f7ea1c2b5f ("packet: race condition in packet_bind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Francesco Ruggeri <fruggeri@aristanetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30c573affac8a7d93febe8ed6eff862b33beeb56
Author: Mike Maloney <maloney@google.com>
Date:   Tue Nov 28 10:44:29 2017 -0500

    packet: fix crash in fanout_demux_rollover()
    
    
    syzkaller found a race condition fanout_demux_rollover() while removing
    a packet socket from a fanout group.
    
    po->rollover is read and operated on during packet_rcv_fanout(), via
    fanout_demux_rollover(), but the pointer is currently cleared before the
    synchronization in packet_release().   It is safer to delay the cleanup
    until after synchronize_net() has been called, ensuring all calls to
    packet_rcv_fanout() for this socket have finished.
    
    To further simplify synchronization around the rollover structure, set
    po->rollover in fanout_add() only if there are no errors.  This removes
    the need for rcu in the struct and in the call to
    packet_getsockopt(..., PACKET_ROLLOVER_STATS, ...).
    
    Crashing stack trace:
     fanout_demux_rollover+0xb6/0x4d0 net/packet/af_packet.c:1392
     packet_rcv_fanout+0x649/0x7c8 net/packet/af_packet.c:1487
     dev_queue_xmit_nit+0x835/0xc10 net/core/dev.c:1953
     xmit_one net/core/dev.c:2975 [inline]
     dev_hard_start_xmit+0x16b/0xac0 net/core/dev.c:2995
     __dev_queue_xmit+0x17a4/0x2050 net/core/dev.c:3476
     dev_queue_xmit+0x17/0x20 net/core/dev.c:3509
     neigh_connected_output+0x489/0x720 net/core/neighbour.c:1379
     neigh_output include/net/neighbour.h:482 [inline]
     ip6_finish_output2+0xad1/0x22a0 net/ipv6/ip6_output.c:120
     ip6_finish_output+0x2f9/0x920 net/ipv6/ip6_output.c:146
     NF_HOOK_COND include/linux/netfilter.h:239 [inline]
     ip6_output+0x1f4/0x850 net/ipv6/ip6_output.c:163
     dst_output include/net/dst.h:459 [inline]
     NF_HOOK.constprop.35+0xff/0x630 include/linux/netfilter.h:250
     mld_sendpack+0x6a8/0xcc0 net/ipv6/mcast.c:1660
     mld_send_initial_cr.part.24+0x103/0x150 net/ipv6/mcast.c:2072
     mld_send_initial_cr net/ipv6/mcast.c:2056 [inline]
     ipv6_mc_dad_complete+0x99/0x130 net/ipv6/mcast.c:2079
     addrconf_dad_completed+0x595/0x970 net/ipv6/addrconf.c:4039
     addrconf_dad_work+0xac9/0x1160 net/ipv6/addrconf.c:3971
     process_one_work+0xbf0/0x1bc0 kernel/workqueue.c:2113
     worker_thread+0x223/0x1990 kernel/workqueue.c:2247
     kthread+0x35e/0x430 kernel/kthread.c:231
     ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:432
    
    Fixes: 0648ab70afe6 ("packet: rollover prepare: per-socket state")
    Fixes: 509c7a1ecc860 ("packet: avoid panic in packet_getsockopt()")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Mike Maloney <maloney@google.com>
    Reviewed-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 5f218c3fd11a3198fe388603bad351fc3522fc7c
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Nov 30 10:41:14 2017 +0800

    sit: update frag_off info
    
    
    [ Upstream commit f859b4af1c52493ec21173ccc73d0b60029b5b88 ]
    
    After parsing the sit netlink change info, we forget to update frag_off in
    ipip6_tunnel_update(). Fix it by assigning frag_off with new value.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3259862dd73bfb9d9b7a647ea77cb20ba8b179a4
Author: HÃ¥kon Bugge <Haakon.Bugge@oracle.com>
Date:   Wed Dec 6 17:18:28 2017 +0100

    rds: Fix NULL pointer dereference in __rds_rdma_map
    
    
    [ Upstream commit f3069c6d33f6ae63a1668737bc78aaaa51bff7ca ]
    
    This is a fix for syzkaller719569, where memory registration was
    attempted without any underlying transport being loaded.
    
    Analysis of the case reveals that it is the setsockopt() RDS_GET_MR
    (2) and RDS_GET_MR_FOR_DEST (7) that are vulnerable.
    
    Here is an example stack trace when the bug is hit:
    
    BUG: unable to handle kernel NULL pointer dereference at 00000000000000c0
    IP: __rds_rdma_map+0x36/0x440 [rds]
    PGD 2f93d03067 P4D 2f93d03067 PUD 2f93d02067 PMD 0
    Oops: 0000 [#1] SMP
    Modules linked in: bridge stp llc tun rpcsec_gss_krb5 nfsv4
    dns_resolver nfs fscache rds binfmt_misc sb_edac intel_powerclamp
    coretemp kvm_intel kvm irqbypass crct10dif_pclmul c rc32_pclmul
    ghash_clmulni_intel pcbc aesni_intel crypto_simd glue_helper cryptd
    iTCO_wdt mei_me sg iTCO_vendor_support ipmi_si mei ipmi_devintf nfsd
    shpchp pcspkr i2c_i801 ioatd ma ipmi_msghandler wmi lpc_ich mfd_core
    auth_rpcgss nfs_acl lockd grace sunrpc ip_tables ext4 mbcache jbd2
    mgag200 i2c_algo_bit drm_kms_helper ixgbe syscopyarea ahci sysfillrect
    sysimgblt libahci mdio fb_sys_fops ttm ptp libata sd_mod mlx4_core drm
    crc32c_intel pps_core megaraid_sas i2c_core dca dm_mirror
    dm_region_hash dm_log dm_mod
    CPU: 48 PID: 45787 Comm: repro_set2 Not tainted 4.14.2-3.el7uek.x86_64 #2
    Hardware name: Oracle Corporation ORACLE SERVER X5-2L/ASM,MOBO TRAY,2U, BIOS 31110000 03/03/2017
    task: ffff882f9190db00 task.stack: ffffc9002b994000
    RIP: 0010:__rds_rdma_map+0x36/0x440 [rds]
    RSP: 0018:ffffc9002b997df0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffff882fa2182580 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffc9002b997e40 RDI: ffff882fa2182580
    RBP: ffffc9002b997e30 R08: 0000000000000000 R09: 0000000000000002
    R10: ffff885fb29e3838 R11: 0000000000000000 R12: ffff882fa2182580
    R13: ffff882fa2182580 R14: 0000000000000002 R15: 0000000020000ffc
    FS:  00007fbffa20b700(0000) GS:ffff882fbfb80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000000c0 CR3: 0000002f98a66006 CR4: 00000000001606e0
    Call Trace:
     rds_get_mr+0x56/0x80 [rds]
     rds_setsockopt+0x172/0x340 [rds]
     ? __fget_light+0x25/0x60
     ? __fdget+0x13/0x20
     SyS_setsockopt+0x80/0xe0
     do_syscall_64+0x67/0x1b0
     entry_SYSCALL64_slow_path+0x25/0x25
    RIP: 0033:0x7fbff9b117f9
    RSP: 002b:00007fbffa20aed8 EFLAGS: 00000293 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 00000000000c84a4 RCX: 00007fbff9b117f9
    RDX: 0000000000000002 RSI: 0000400000000114 RDI: 000000000000109b
    RBP: 00007fbffa20af10 R08: 0000000000000020 R09: 00007fbff9dd7860
    R10: 0000000020000ffc R11: 0000000000000293 R12: 0000000000000000
    R13: 00007fbffa20b9c0 R14: 00007fbffa20b700 R15: 0000000000000021
    
    Code: 41 56 41 55 49 89 fd 41 54 53 48 83 ec 18 8b 87 f0 02 00 00 48
    89 55 d0 48 89 4d c8 85 c0 0f 84 2d 03 00 00 48 8b 87 00 03 00 00 <48>
    83 b8 c0 00 00 00 00 0f 84 25 03 00 0 0 48 8b 06 48 8b 56 08
    
    The fix is to check the existence of an underlying transport in
    __rds_rdma_map().
    
    Signed-off-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96b4a8ac9a55dcfd97b03a71776a3ec2b731a8bd
Author: Jon Maloy <jon.maloy@ericsson.com>
Date:   Mon Dec 4 22:00:20 2017 +0100

    tipc: fix memory leak in tipc_accept_from_sock()
    
    
    [ Upstream commit a7d5f107b4978e08eeab599ee7449af34d034053 ]
    
    When the function tipc_accept_from_sock() fails to create an instance of
    struct tipc_subscriber it omits to free the already created instance of
    struct tipc_conn instance before it returns.
    
    We fix that with this commit.
    
    Reported-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20610f5bbd23fd1bafa3c6d91c558ad9b08e346a
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Oct 18 17:40:17 2017 +0200

    s390/qeth: fix early exit from error path
    
    
    [ Upstream commit 83cf79a2fec3cf499eb6cb9eb608656fc2a82776 ]
    
    When the allocation of the addr buffer fails, we need to free
    our refcount on the inetdevice before returning.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32436bf375b07e9126bcb0d46b7242bdea239286
Author: Sebastian Sjoholm <ssjoholm@mac.com>
Date:   Mon Nov 20 19:05:17 2017 +0100

    net: qmi_wwan: add Quectel BG96 2c7c:0296
    
    
    [ Upstream commit f9409e7f086fa6c4623769b4b2f4f17a024d8143 ]
    
    Quectel BG96 is an Qualcomm MDM9206 based IoT modem, supporting both
    CAT-M and NB-IoT. Tested hardware is BG96 mounted on Quectel development
    board (EVB). The USB id is added to qmi_wwan.c to allow QMI
    communication with the BG96.
    
    Signed-off-by: Sebastian Sjoholm <ssjoholm@mac.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>