commit 90aaf2f25609f99b63fcbed280716f80b4bc5f56
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 31 14:46:16 2018 +0100

    Linux 3.18.93

commit 7303968d539622a5173d7f08e6938c91b48d3cd8
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jan 26 14:54:32 2018 +0100

    hrtimer: Reset hrtimer cpu base proper on CPU hotplug
    
    commit d5421ea43d30701e03cadc56a38854c36a8b4433 upstream.
    
    The hrtimer interrupt code contains a hang detection and mitigation
    mechanism, which prevents that a long delayed hrtimer interrupt causes a
    continous retriggering of interrupts which prevent the system from making
    progress. If a hang is detected then the timer hardware is programmed with
    a certain delay into the future and a flag is set in the hrtimer cpu base
    which prevents newly enqueued timers from reprogramming the timer hardware
    prior to the chosen delay. The subsequent hrtimer interrupt after the delay
    clears the flag and resumes normal operation.
    
    If such a hang happens in the last hrtimer interrupt before a CPU is
    unplugged then the hang_detected flag is set and stays that way when the
    CPU is plugged in again. At that point the timer hardware is not armed and
    it cannot be armed because the hang_detected flag is still active, so
    nothing clears that flag. As a consequence the CPU does not receive hrtimer
    interrupts and no timers expire on that CPU which results in RCU stalls and
    other malfunctions.
    
    Clear the flag along with some other less critical members of the hrtimer
    cpu base to ensure starting from a clean state when a CPU is plugged in.
    
    Thanks to Paul, Sebastian and Anna-Maria for their help to get down to the
    root cause of that hard to reproduce heisenbug. Once understood it's
    trivial and certainly justifies a brown paperbag.
    
    Fixes: 41d2e4949377 ("hrtimer: Tune hrtimer_interrupt hang logic")
    Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Sewior <bigeasy@linutronix.de>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801261447590.2067@nanos
    [bigeasy: backport to v3.18, drop ->next_timer it was introduced later]
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c16fa957e84c8b640dadc4e0264ff0d2dae7aa3
Author: Jim Westfall <jwestfall@surrealistic.net>
Date:   Sun Jan 14 04:18:51 2018 -0800

    ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY
    
    
    [ Upstream commit cd9ff4de0107c65d69d02253bb25d6db93c3dbc1 ]
    
    Map all lookup neigh keys to INADDR_ANY for loopback/point-to-point devices
    to avoid making an entry for every remote ip the device needs to talk to.
    
    This used the be the old behavior but became broken in a263b3093641f
    (ipv4: Make neigh lookups directly in output packet path) and later removed
    in 0bb4087cbec0 (ipv4: Fix neigh lookup keying over loopback/point-to-point
    devices) because it was broken.
    
    Signed-off-by: Jim Westfall <jwestfall@surrealistic.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd3030090c8debb485d3867c17f691cf1af207f6
Author: Mike Maloney <maloney@google.com>
Date:   Wed Jan 10 12:45:10 2018 -0500

    ipv6: fix udpv6 sendmsg crash caused by too small MTU
    
    
    [ Upstream commit 749439bfac6e1a2932c582e2699f91d329658196 ]
    
    The logic in __ip6_append_data() assumes that the MTU is at least large
    enough for the headers.  A device's MTU may be adjusted after being
    added while sendmsg() is processing data, resulting in
    __ip6_append_data() seeing any MTU.  For an mtu smaller than the size of
    the fragmentation header, the math results in a negative 'maxfraglen',
    which causes problems when refragmenting any previous skb in the
    skb_write_queue, leaving it possibly malformed.
    
    Instead sendmsg returns EINVAL when the mtu is calculated to be less
    than IPV6_MIN_MTU.
    
    Found by syzkaller:
    kernel BUG at ./include/linux/skbuff.h:2064!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 14216 Comm: syz-executor5 Not tainted 4.13.0-rc4+ #2
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801d0b68580 task.stack: ffff8801ac6b8000
    RIP: 0010:__skb_pull include/linux/skbuff.h:2064 [inline]
    RIP: 0010:__ip6_make_skb+0x18cf/0x1f70 net/ipv6/ip6_output.c:1617
    RSP: 0018:ffff8801ac6bf570 EFLAGS: 00010216
    RAX: 0000000000010000 RBX: 0000000000000028 RCX: ffffc90003cce000
    RDX: 00000000000001b8 RSI: ffffffff839df06f RDI: ffff8801d9478ca0
    RBP: ffff8801ac6bf780 R08: ffff8801cc3f1dbc R09: 0000000000000000
    R10: ffff8801ac6bf7a0 R11: 43cb4b7b1948a9e7 R12: ffff8801cc3f1dc8
    R13: ffff8801cc3f1d40 R14: 0000000000001036 R15: dffffc0000000000
    FS:  00007f43d740c700(0000) GS:ffff8801dc100000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7834984000 CR3: 00000001d79b9000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     ip6_finish_skb include/net/ipv6.h:911 [inline]
     udp_v6_push_pending_frames+0x255/0x390 net/ipv6/udp.c:1093
     udpv6_sendmsg+0x280d/0x31a0 net/ipv6/udp.c:1363
     inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     SYSC_sendto+0x352/0x5a0 net/socket.c:1750
     SyS_sendto+0x40/0x50 net/socket.c:1718
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x4512e9
    RSP: 002b:00007f43d740bc08 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00000000007180a8 RCX: 00000000004512e9
    RDX: 000000000000002e RSI: 0000000020d08000 RDI: 0000000000000005
    RBP: 0000000000000086 R08: 00000000209c1000 R09: 000000000000001c
    R10: 0000000000040800 R11: 0000000000000216 R12: 00000000004b9c69
    R13: 00000000ffffffff R14: 0000000000000005 R15: 00000000202c2000
    Code: 9e 01 fe e9 c5 e8 ff ff e8 7f 9e 01 fe e9 4a ea ff ff 48 89 f7 e8 52 9e 01 fe e9 aa eb ff ff e8 a8 b6 cf fd 0f 0b e8 a1 b6 cf fd <0f> 0b 49 8d 45 78 4d 8d 45 7c 48 89 85 78 fe ff ff 49 8d 85 ba
    RIP: __skb_pull include/linux/skbuff.h:2064 [inline] RSP: ffff8801ac6bf570
    RIP: __ip6_make_skb+0x18cf/0x1f70 net/ipv6/ip6_output.c:1617 RSP: ffff8801ac6bf570
    
    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 98fcfb3f64a05102768218443b37ea025a0c485d
Author: Jim Westfall <jwestfall@surrealistic.net>
Date:   Sun Jan 14 04:18:50 2018 -0800

    net: Allow neigh contructor functions ability to modify the primary_key
    
    
    [ Upstream commit 096b9854c04df86f03b38a97d40b6506e5730919 ]
    
    Use n->primary_key instead of pkey to account for the possibility that a neigh
    constructor function may have modified the primary_key value.
    
    Signed-off-by: Jim Westfall <jwestfall@surrealistic.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1414a1ede0ea554364d3cfbfe8dbf650f9d57a29
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Mon Jan 22 16:06:37 2018 -0500

    vmxnet3: repair memory leak
    
    
    [ Upstream commit 848b159835ddef99cc4193083f7e786c3992f580 ]
    
    with the introduction of commit
    b0eb57cb97e7837ebb746404c2c58c6f536f23fa, it appears that rq->buf_info
    is improperly handled.  While it is heap allocated when an rx queue is
    setup, and freed when torn down, an old line of code in
    vmxnet3_rq_destroy was not properly removed, leading to rq->buf_info[0]
    being set to NULL prior to its being freed, causing a memory leak, which
    eventually exhausts the system on repeated create/destroy operations
    (for example, when  the mtu of a vmxnet3 interface is changed
    frequently.
    
    Fix is pretty straight forward, just move the NULL set to after the
    free.
    
    Tested by myself with successful results
    
    Applies to net, and should likely be queued for stable, please
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Reported-By: boyang@redhat.com
    CC: boyang@redhat.com
    CC: Shrikrishna Khare <skhare@vmware.com>
    CC: "VMware, Inc." <pv-drivers@vmware.com>
    CC: David S. Miller <davem@davemloft.net>
    Acked-by: Shrikrishna Khare <skhare@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e34d42ce65b5d0ff26a25be9674549023294062b
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jan 15 17:01:36 2018 +0800

    sctp: return error if the asoc has been peeled off in sctp_wait_for_sndbuf
    
    
    [ Upstream commit a0ff660058b88d12625a783ce9e5c1371c87951f ]
    
    After commit cea0cc80a677 ("sctp: use the right sk after waking up from
    wait_buf sleep"), it may change to lock another sk if the asoc has been
    peeled off in sctp_wait_for_sndbuf.
    
    However, the asoc's new sk could be already closed elsewhere, as it's in
    the sendmsg context of the old sk that can't avoid the new sk's closing.
    If the sk's last one refcnt is held by this asoc, later on after putting
    this asoc, the new sk will be freed, while under it's own lock.
    
    This patch is to revert that commit, but fix the old issue by returning
    error under the old sk's lock.
    
    Fixes: cea0cc80a677 ("sctp: use the right sk after waking up from wait_buf sleep")
    Reported-by: syzbot+ac6ea7baa4432811eb50@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8009d86cc9441149d0711b903edbd90250f39fe0
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jan 15 17:02:00 2018 +0800

    sctp: do not allow the v4 socket to bind a v4mapped v6 address
    
    
    [ Upstream commit c5006b8aa74599ce19104b31d322d2ea9ff887cc ]
    
    The check in sctp_sockaddr_af is not robust enough to forbid binding a
    v4mapped v6 addr on a v4 socket.
    
    The worse thing is that v4 socket's bind_verify would not convert this
    v4mapped v6 addr to a v4 addr. syzbot even reported a crash as the v4
    socket bound a v6 addr.
    
    This patch is to fix it by doing the common sa.sa_family check first,
    then AF_INET check for v4mapped v6 addrs.
    
    Fixes: 7dab83de50c7 ("sctp: Support ipv6only AF_INET6 sockets.")
    Reported-by: syzbot+7b7b518b1228d2743963@syzkaller.appspotmail.com
    Acked-by: Neil Horman <nhorman@tuxdriver.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 0e4c26c860609df87e52ab334cef36993184727c
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Jan 22 18:06:37 2018 +0100

    pppoe: take ->needed_headroom of lower device into account on xmit
    
    
    [ Upstream commit 02612bb05e51df8489db5e94d0cf8d1c81f87b0c ]
    
    In pppoe_sendmsg(), reserving dev->hard_header_len bytes of headroom
    was probably fine before the introduction of ->needed_headroom in
    commit f5184d267c1a ("net: Allow netdevices to specify needed head/tailroom").
    
    But now, virtual devices typically advertise the size of their overhead
    in dev->needed_headroom, so we must also take it into account in
    skb_reserve().
    Allocation size of skb is also updated to take dev->needed_tailroom
    into account and replace the arbitrary 32 bytes with the real size of
    a PPPoE header.
    
    This issue was discovered by syzbot, who connected a pppoe socket to a
    gre device which had dev->header_ops->create == ipgre_header and
    dev->hard_header_len == 0. Therefore, PPPoE didn't reserve any
    headroom, and dev_hard_header() crashed when ipgre_header() tried to
    prepend its header to skb->data.
    
    skbuff: skb_under_panic: text:000000001d390b3a len:31 put:24
    head:00000000d8ed776f data:000000008150e823 tail:0x7 end:0xc0 dev:gre0
    ------------[ cut here ]------------
    kernel BUG at net/core/skbuff.c:104!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 3670 Comm: syzkaller801466 Not tainted
    4.15.0-rc7-next-20180115+ #97
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:skb_panic+0x162/0x1f0 net/core/skbuff.c:100
    RSP: 0018:ffff8801d9bd7840 EFLAGS: 00010282
    RAX: 0000000000000083 RBX: ffff8801d4f083c0 RCX: 0000000000000000
    RDX: 0000000000000083 RSI: 1ffff1003b37ae92 RDI: ffffed003b37aefc
    RBP: ffff8801d9bd78a8 R08: 1ffff1003b37ae8a R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff86200de0
    R13: ffffffff84a981ad R14: 0000000000000018 R15: ffff8801d2d34180
    FS:  00000000019c4880(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000208bc000 CR3: 00000001d9111001 CR4: 00000000001606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      skb_under_panic net/core/skbuff.c:114 [inline]
      skb_push+0xce/0xf0 net/core/skbuff.c:1714
      ipgre_header+0x6d/0x4e0 net/ipv4/ip_gre.c:879
      dev_hard_header include/linux/netdevice.h:2723 [inline]
      pppoe_sendmsg+0x58e/0x8b0 drivers/net/ppp/pppoe.c:890
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg+0xca/0x110 net/socket.c:640
      sock_write_iter+0x31a/0x5d0 net/socket.c:909
      call_write_iter include/linux/fs.h:1775 [inline]
      do_iter_readv_writev+0x525/0x7f0 fs/read_write.c:653
      do_iter_write+0x154/0x540 fs/read_write.c:932
      vfs_writev+0x18a/0x340 fs/read_write.c:977
      do_writev+0xfc/0x2a0 fs/read_write.c:1012
      SYSC_writev fs/read_write.c:1085 [inline]
      SyS_writev+0x27/0x30 fs/read_write.c:1082
      entry_SYSCALL_64_fastpath+0x29/0xa0
    
    Admittedly PPPoE shouldn't be allowed to run on non Ethernet-like
    interfaces, but reserving space for ->needed_headroom is a more
    fundamental issue that needs to be addressed first.
    
    Same problem exists for __pppoe_xmit(), which also needs to take
    dev->needed_headroom into account in skb_cow_head().
    
    Fixes: f5184d267c1a ("net: Allow netdevices to specify needed head/tailroom")
    Reported-by: syzbot+ed0838d0fa4c4f2b528e20286e6dc63effc7c14d@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8dee18861fb17e6f5f59673fc10974f7872c7f4
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 18 19:59:19 2018 -0800

    net: qdisc_pkt_len_init() should be more robust
    
    
    [ Upstream commit 7c68d1a6b4db9012790af7ac0f0fdc0d2083422a ]
    
    Without proper validation of DODGY packets, we might very well
    feed qdisc_pkt_len_init() with invalid GSO packets.
    
    tcp_hdrlen() might access out-of-bound data, so let's use
    skb_header_pointer() and proper checks.
    
    Whole story is described in commit d0c081b49137 ("flow_dissector:
    properly cap thoff field")
    
    We have the goal of validating DODGY packets earlier in the stack,
    so we might very well revert this fix in the future.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Reported-by: syzbot+9da69ebac7dddd804552@syzkaller.appspotmail.com
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaf3179d61514268a863cb9d50d66f6ebce1d5a0
Author: Craig Gallek <kraig@google.com>
Date:   Wed Feb 10 11:50:37 2016 -0500

    tcp: __tcp_hdrlen() helper
    
    commit d9b3fca27385eafe61c3ca6feab6cb1e7dc77482 upstream.
    
    tcp_hdrlen is wasteful if you already have a pointer to struct tcphdr.
    This splits the size calculation into a helper function that can be
    used if a struct tcphdr is already available.
    
    Signed-off-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 483217b88c632e1e510569f6aac6e914f598f21d
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Jan 19 11:50:46 2018 +0100

    net: igmp: fix source address check for IGMPv3 reports
    
    
    [ Upstream commit ad23b750933ea7bf962678972a286c78a8fa36aa ]
    
    Commit "net: igmp: Use correct source address on IGMPv3 reports"
    introduced a check to validate the source address of locally generated
    IGMPv3 packets.
    Instead of checking the local interface address directly, it uses
    inet_ifa_match(fl4->saddr, ifa), which checks if the address is on the
    local subnet (or equal to the point-to-point address if used).
    
    This breaks for point-to-point interfaces, so check against
    ifa->ifa_local directly.
    
    Cc: Kevin Cernekee <cernekee@chromium.org>
    Fixes: a46182b00290 ("net: igmp: Use correct source address on IGMPv3 reports")
    Reported-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 607506a8e7b0faa8ea19ebbad323e74fefe2ef47
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Fri Jan 26 15:14:16 2018 +0300

    dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state
    
    
    [ Upstream commit dd5684ecae3bd8e44b644f50e2c12c7e57fdfef5 ]
    
    ccid2_hc_tx_rto_expire() timer callback always restarts the timer
    again and can run indefinitely (unless it is stopped outside), and after
    commit 120e9dabaf55 ("dccp: defer ccid_hc_tx_delete() at dismantle time"),
    which moved ccid_hc_tx_delete() (also includes sk_stop_timer()) from
    dccp_destroy_sock() to sk_destruct(), this started to happen quite often.
    The timer prevents releasing the socket, as a result, sk_destruct() won't
    be called.
    
    Found with LTP/dccp_ipsec tests running on the bonding device,
    which later couldn't be unloaded after the tests were completed:
    
      unregister_netdevice: waiting for bond0 to become free. Usage count = 148
    
    Fixes: 2a91aa396739 ("[DCCP] CCID2: Initial CCID2 (TCP-Like) implementation")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.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 cf1a60fdfadc1647c4078bdc811601623f72ff52
Author: Dan Streetman <ddstreet@ieee.org>
Date:   Thu Jan 18 16:14:26 2018 -0500

    net: tcp: close sock if net namespace is exiting
    
    
    [ Upstream commit 4ee806d51176ba7b8ff1efd81f271d7252e03a1d ]
    
    When a tcp socket is closed, if it detects that its net namespace is
    exiting, close immediately and do not wait for FIN sequence.
    
    For normal sockets, a reference is taken to their net namespace, so it will
    never exit while the socket is open.  However, kernel sockets do not take a
    reference to their net namespace, so it may begin exiting while the kernel
    socket is still open.  In this case if the kernel socket is a tcp socket,
    it will stay open trying to complete its close sequence.  The sock's dst(s)
    hold a reference to their interface, which are all transferred to the
    namespace's loopback interface when the real interfaces are taken down.
    When the namespace tries to take down its loopback interface, it hangs
    waiting for all references to the loopback interface to release, which
    results in messages like:
    
    unregister_netdevice: waiting for lo to become free. Usage count = 1
    
    These messages continue until the socket finally times out and closes.
    Since the net namespace cleanup holds the net_mutex while calling its
    registered pernet callbacks, any new net namespace initialization is
    blocked until the current net namespace finishes exiting.
    
    After this change, the tcp socket notices the exiting net namespace, and
    closes immediately, releasing its dst(s) and their reference to the
    loopback interface, which lets the net namespace continue exiting.
    
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1711407
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=97811
    Signed-off-by: Dan Streetman <ddstreet@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e292f88f756db5c19a1d4478a8e443687980949
Author: Jia Zhang <zhang.jia@linux.alibaba.com>
Date:   Tue Jan 23 11:41:32 2018 +0100

    x86/microcode/intel: Extend BDW late-loading further with LLC size check
    
    commit 7e702d17ed138cf4ae7c00e8c00681ed464587c7 upstream.
    
    Commit b94b73733171 ("x86/microcode/intel: Extend BDW late-loading with a
    revision check") reduced the impact of erratum BDF90 for Broadwell model
    79.
    
    The impact can be reduced further by checking the size of the last level
    cache portion per core.
    
    Tony: "The erratum says the problem only occurs on the large-cache SKUs.
    So we only need to avoid the update if we are on a big cache SKU that is
    also running old microcode."
    
    For more details, see erratum BDF90 in document #334165 (Intel Xeon
    Processor E7-8800/4800 v4 Product Family Specification Update) from
    September 2017.
    
    Fixes: b94b73733171 ("x86/microcode/intel: Extend BDW late-loading with a revision check")
    Signed-off-by: Jia Zhang <zhang.jia@linux.alibaba.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Tony Luck <tony.luck@intel.com>
    Link: https://lkml.kernel.org/r/1516321542-31161-1-git-send-email-zhang.jia@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 933e32f87f6e9e006d501e6cb6d46f912acb80f2
Author: Greg KH <gregkh@linuxfoundation.org>
Date:   Wed Mar 8 19:03:44 2017 +0100

    eventpoll.h: add missing epoll event masks
    
    commit 7e040726850a106587485c21bdacc0bfc8a0cbed upstream.
    
    [resend due to me forgetting to cc: linux-api the first time around I
    posted these back on Feb 23]
    
    From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    For some reason these values are not in the uapi header file, so any
    libc has to define it themselves.  To prevent them from needing to do
    this, just have the kernel provide the correct values.
    
    Reported-by: Elliott Hughes <enh@google.com>
    Signed-off-by: Greg Hackmann <ghackmann@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdc0646c91cddc06ab84236affe21e78498ceaa4
Author: Johannes Thumshirn <jthumshirn@suse.de>
Date:   Mon Oct 9 13:33:19 2017 +0200

    scsi: libiscsi: fix shifting of DID_REQUEUE host byte
    
    commit eef9ffdf9cd39b2986367bc8395e2772bc1284ba upstream.
    
    The SCSI host byte should be shifted left by 16 in order to have
    scsi_decide_disposition() do the right thing (.i.e. requeue the
    command).
    
    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: 661134ad3765 ("[SCSI] libiscsi, bnx2i: make bound ep check common")
    Cc: Lee Duncan <lduncan@suse.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Bart Van Assche <Bart.VanAssche@sandisk.com>
    Cc: Chris Leech <cleech@redhat.com>
    Acked-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efa42537beb631bffe714e7542982fc5dad9a8fd
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Tue Jun 13 13:35:51 2017 +0200

    fs/fcntl: f_setown, avoid undefined behaviour
    
    commit fc3dc67471461c0efcb1ed22fb7595121d65fad9 upstream.
    
    fcntl(0, F_SETOWN, 0x80000000) triggers:
    UBSAN: Undefined behaviour in fs/fcntl.c:118:7
    negation of -2147483648 cannot be represented in type 'int':
    CPU: 1 PID: 18261 Comm: syz-executor Not tainted 4.8.1-0-syzkaller #1
    ...
    Call Trace:
    ...
     [<ffffffffad8f0868>] ? f_setown+0x1d8/0x200
     [<ffffffffad8f19a9>] ? SyS_fcntl+0x999/0xf30
     [<ffffffffaed1fb00>] ? entry_SYSCALL_64_fastpath+0x23/0xc1
    
    Fix that by checking the arg parameter properly (against INT_MAX) before
    "who = -who". And return immediatelly with -EINVAL in case it is wrong.
    Note that according to POSIX we can return EINVAL:
        http://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
    
        [EINVAL]
            The cmd argument is F_SETOWN and the value of the argument
            is not valid as a process or process group identifier.
    
    [v2] returns an error, v1 used to fail silently
    [v3] implement proper check for the bad value INT_MIN
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jeff Layton <jlayton@poochiereds.net>
    Cc: "J. Bruce Fields" <bfields@fieldses.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f31381a6cc0e0e5fb06371268388c00f8d04df4
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Thu Jun 22 16:35:04 2017 -0400

    reiserfs: don't preallocate blocks for extended attributes
    
    commit 54930dfeb46e978b447af0fb8ab4e181c1bf9d7a upstream.
    
    Most extended attributes will fit in a single block.  More importantly,
    we drop the reference to the inode while holding the transaction open
    so the preallocated blocks aren't released.  As a result, the inode
    may be evicted before it's removed from the transaction's prealloc list
    which can cause memory corruption.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ff49848ab5f2402478dd384d19966a82b9b1f09
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Thu Jun 22 16:47:34 2017 -0400

    reiserfs: fix race in prealloc discard
    
    commit 08db141b5313ac2f64b844fb5725b8d81744b417 upstream.
    
    The main loop in __discard_prealloc is protected by the reiserfs write lock
    which is dropped across schedules like the BKL it replaced.  The problem is
    that it checks the value, calls a routine that schedules, and then adjusts
    the state.  As a result, two threads that are calling
    reiserfs_prealloc_discard at the same time can race when one calls
    reiserfs_free_prealloc_block, the lock is dropped, and the other calls
    reiserfs_free_prealloc_block with the same block number.  In the right
    circumstances, it can cause the prealloc count to go negative.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 115e3505bbd683a01496860646fa632e6533b4e3
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Tue Dec 5 15:42:41 2017 -0800

    netfilter: xt_osf: Add missing permission checks
    
    commit 916a27901de01446bcf57ecca4783f6cff493309 upstream.
    
    The capability check in nfnetlink_rcv() verifies that the caller
    has CAP_NET_ADMIN in the namespace that "owns" the netlink socket.
    However, xt_osf_fingers is shared by all net namespaces on the
    system.  An unprivileged user can create user and net namespaces
    in which he holds CAP_NET_ADMIN to bypass the netlink_net_capable()
    check:
    
        vpnns -- nfnl_osf -f /tmp/pf.os
    
        vpnns -- nfnl_osf -f /tmp/pf.os -d
    
    These non-root operations successfully modify the systemwide OS
    fingerprint list.  Add new capable() checks so that they can't.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4ba1d0e4366d63d1d09c024e8befc99c642e84b
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Sun Dec 3 12:12:45 2017 -0800

    netfilter: nfnetlink_cthelper: Add missing permission checks
    
    commit 4b380c42f7d00a395feede754f0bc2292eebe6e5 upstream.
    
    The capability check in nfnetlink_rcv() verifies that the caller
    has CAP_NET_ADMIN in the namespace that "owns" the netlink socket.
    However, nfnl_cthelper_list is shared by all net namespaces on the
    system.  An unprivileged user can create user and net namespaces
    in which he holds CAP_NET_ADMIN to bypass the netlink_net_capable()
    check:
    
        $ nfct helper list
        nfct v1.4.4: netlink error: Operation not permitted
        $ vpnns -- nfct helper list
        {
                .name = ftp,
                .queuenum = 0,
                .l3protonum = 2,
                .l4protonum = 6,
                .priv_data_len = 24,
                .status = enabled,
        };
    
    Add capable() checks in nfnetlink_cthelper, as this is cleaner than
    trying to generalize the solution.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1a49458d9ef2e02ad7163900eaa8cf15b083b78
Author: Ulrich Weber <ulrich.weber@riverbed.com>
Date:   Mon Oct 24 18:07:23 2016 +0200

    netfilter: nf_conntrack_sip: extend request line validation
    
    commit 444f901742d054a4cd5ff045871eac5131646cfb upstream.
    
    on SIP requests, so a fragmented TCP SIP packet from an allow header starting with
     INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
     Content-Length: 0
    
    will not bet interpreted as an INVITE request. Also Request-URI must start with an alphabetic character.
    
    Confirm with RFC 3261
     Request-Line   =  Method SP Request-URI SP SIP-Version CRLF
    
    Fixes: 30f33e6dee80 ("[NETFILTER]: nf_conntrack_sip: support method specific request/response handling")
    Signed-off-by: Ulrich Weber <ulrich.weber@riverbed.com>
    Acked-by: Marco Angaroni <marcoangaroni@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64f94c222f630b2a407a36bac38c4f543edde668
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Aug 25 15:33:29 2016 +0200

    netfilter: restart search if moved to other chain
    
    commit 95a8d19f28e6b29377a880c6264391a62e07fccc upstream.
    
    In case nf_conntrack_tuple_taken did not find a conflicting entry
    check that all entries in this hash slot were tested and restart
    in case an entry was moved to another chain.
    
    Reported-by: Eric Dumazet <edumazet@google.com>
    Fixes: ea781f197d6a ("netfilter: nf_conntrack: use SLAB_DESTROY_BY_RCU and get rid of call_rcu()")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38a8f8f7f6c61ca1cc6409ee9b0f89b21a8dad79
Author: Liping Zhang <liping.zhang@spreadtrum.com>
Date:   Mon Aug 8 21:57:58 2016 +0800

    netfilter: nf_ct_expect: remove the redundant slash when policy name is empty
    
    commit b173a28f62cf929324a8a6adcc45adadce311d16 upstream.
    
    The 'name' filed in struct nf_conntrack_expect_policy{} is not a
    pointer, so check it is NULL or not will always return true. Even if the
    name is empty, slash will always be displayed like follows:
      # cat /proc/net/nf_conntrack_expect
      297 l3proto = 2 proto=6 src=1.1.1.1 dst=2.2.2.2 sport=1 dport=1025 ftp/
                                                                            ^
    
    Fixes: 3a8fc53a45c4 ("netfilter: nf_ct_helper: allocate 16 bytes for the helper and policy names")
    Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4003d8b836ab6426976e28e0bac6bddc2234b88d
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Dec 14 15:06:07 2016 -0800

    ipc: msg, make msgrcv work with LONG_MIN
    
    commit 999898355e08ae3b92dfd0a08db706e0c6703d30 upstream.
    
    When LONG_MIN is passed to msgrcv, one would expect to recieve any
    message.  But convert_mode does *msgtyp = -*msgtyp and -LONG_MIN is
    undefined.  In particular, with my gcc -LONG_MIN produces -LONG_MIN
    again.
    
    So handle this case properly by assigning LONG_MAX to *msgtyp if
    LONG_MIN was specified as msgtyp to msgrcv.
    
    This code:
      long msg[] = { 100, 200 };
      int m = msgget(IPC_PRIVATE, IPC_CREAT | 0644);
      msgsnd(m, &msg, sizeof(msg), 0);
      msgrcv(m, &msg, sizeof(msg), LONG_MIN, 0);
    
    produces currently nothing:
    
      msgget(IPC_PRIVATE, IPC_CREAT|0644)     = 65538
      msgsnd(65538, {100, "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16, 0) = 0
      msgrcv(65538, ...
    
    Except a UBSAN warning:
    
      UBSAN: Undefined behaviour in ipc/msg.c:745:13
      negation of -9223372036854775808 cannot be represented in type 'long int':
    
    With the patch, I see what I expect:
    
      msgget(IPC_PRIVATE, IPC_CREAT|0644)     = 0
      msgsnd(0, {100, "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16, 0) = 0
      msgrcv(0, {100, "\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16, -9223372036854775808, 0) = 16
    
    Link: http://lkml.kernel.org/r/20161024082633.10148-1-jslaby@suse.cz
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fee959e947ff35e2a278495fe9c55462bf04dd2c
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri May 12 15:46:26 2017 -0700

    hwpoison, memcg: forcibly uncharge LRU pages
    
    commit 18365225f0440d09708ad9daade2ec11275c3df9 upstream.
    
    Laurent Dufour has noticed that hwpoinsoned pages are kept charged.  In
    his particular case he has hit a bad_page("page still charged to
    cgroup") when onlining a hwpoison page.  While this looks like something
    that shouldn't happen in the first place because onlining hwpages and
    returning them to the page allocator makes only little sense it shows a
    real problem.
    
    hwpoison pages do not get freed usually so we do not uncharge them (at
    least not since commit 0a31bc97c80c ("mm: memcontrol: rewrite uncharge
    API")).  Each charge pins memcg (since e8ea14cc6ead ("mm: memcontrol:
    take a css reference for each charged page")) as well and so the
    mem_cgroup and the associated state will never go away.  Fix this leak
    by forcibly uncharging a LRU hwpoisoned page in delete_from_lru_cache().
    We also have to tweak uncharge_list because it cannot rely on zero ref
    count for these pages.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Fixes: 0a31bc97c80c ("mm: memcontrol: rewrite uncharge API")
    Link: http://lkml.kernel.org/r/20170502185507.GB19165@dhcp22.suse.cz
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Tested-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Reviewed-by: Balbir Singh <bsingharora@gmail.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e0f334aaf1f19664e5b21a83e945b23a57ce9e3
Author: Michal Hocko <mhocko@suse.com>
Date:   Mon Jul 10 15:49:51 2017 -0700

    mm/mmap.c: do not blow on PROT_NONE MAP_FIXED holes in the stack
    
    commit 561b5e0709e4a248c67d024d4d94b6e31e3edf2f upstream.
    
    Commit 1be7107fbe18 ("mm: larger stack guard gap, between vmas") has
    introduced a regression in some rust and Java environments which are
    trying to implement their own stack guard page.  They are punching a new
    MAP_FIXED mapping inside the existing stack Vma.
    
    This will confuse expand_{downwards,upwards} into thinking that the
    stack expansion would in fact get us too close to an existing non-stack
    vma which is a correct behavior wrt safety.  It is a real regression on
    the other hand.
    
    Let's work around the problem by considering PROT_NONE mapping as a part
    of the stack.  This is a gros hack but overflowing to such a mapping
    would trap anyway an we only can hope that usespace knows what it is
    doing and handle it propely.
    
    Fixes: 1be7107fbe18 ("mm: larger stack guard gap, between vmas")
    Link: http://lkml.kernel.org/r/20170705182849.GA18027@dhcp22.suse.cz
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Debugged-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a3974ca1195175be22eae4bdcc1c8b81fcd4808
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jan 16 19:30:14 2018 +0100

    can: af_can: canfd_rcv(): replace WARN_ONCE by pr_warn_once
    
    commit d4689846881d160a4d12a514e991a740bcb5d65a upstream.
    
    If an invalid CANFD frame is received, from a driver or from a tun
    interface, a Kernel warning is generated.
    
    This patch replaces the WARN_ONCE by a simple pr_warn_once, so that a
    kernel, bootet with panic_on_warn, does not panic. A printk seems to be
    more appropriate here.
    
    Reported-by: syzbot+e3b775f40babeff6e68b@syzkaller.appspotmail.com
    Suggested-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16d977e9bbf4a8a125da9978b89e32e92a13b1b0
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jan 16 19:30:14 2018 +0100

    can: af_can: can_rcv(): replace WARN_ONCE by pr_warn_once
    
    commit 8cb68751c115d176ec851ca56ecfbb411568c9e8 upstream.
    
    If an invalid CAN frame is received, from a driver or from a tun
    interface, a Kernel warning is generated.
    
    This patch replaces the WARN_ONCE by a simple pr_warn_once, so that a
    kernel, bootet with panic_on_warn, does not panic. A printk seems to be
    more appropriate here.
    
    Reported-by: syzbot+4386709c0c1284dca827@syzkaller.appspotmail.com
    Suggested-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b6f9e3d00443fa0431ddb9bb84f8db1453e7783
Author: Jonathan Dieter <jdieter@lesbg.com>
Date:   Mon Feb 27 10:31:04 2017 +0200

    usbip: Fix implicit fallthrough warning
    
    commit cfd6ed4537a9e938fa76facecd4b9cd65b6d1563 upstream.
    
    GCC 7 now warns when switch statements fall through implicitly, and with
    -Werror enabled in configure.ac, that makes these tools unbuildable.
    
    We fix this by notifying the compiler that this particular case statement
    is meant to fall through.
    
    Reviewed-by: Peter Senna Tschudin <peter.senna@gmail.com>
    Signed-off-by: Jonathan Dieter <jdieter@lesbg.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b9da19c2ec9f7334a2db2e67cbb3fe6e44c655b
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Dec 9 10:24:05 2016 -0800

    x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit kernels
    
    commit 1c52d859cb2d417e7216d3e56bb7fea88444cec9 upstream.
    
    We support various non-Intel CPUs that don't have the CPUID
    instruction, so the M486 test was wrong.  For now, fix it with a big
    hammer: handle missing CPUID on all 32-bit CPUs.
    
    Reported-by: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Matthew Whitehead <tedheadster@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: xen-devel <Xen-devel@lists.xen.org>
    Link: http://lkml.kernel.org/r/685bd083a7c036f7769510b6846315b17d6ba71f.1481307769.git.luto@kernel.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66b64a9358537aea643014b549521f03a10e13a8
Author: Jonas Gorski <jonas.gorski@gmail.com>
Date:   Sun Oct 29 16:27:21 2017 +0100

    MIPS: AR7: ensure the port type's FCR value is used
    
    commit 0a5191efe06b5103909206e4fbcff81d30283f8e upstream.
    
    Since commit aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt
    trigger I/F of FIFO buffers"), the port's default FCR value isn't used
    in serial8250_do_set_termios anymore, but copied over once in
    serial8250_config_port and then modified as needed.
    
    Unfortunately, serial8250_config_port will never be called if the port
    is shared between kernel and userspace, and the port's flag doesn't have
    UPF_BOOT_AUTOCONF, which would trigger a serial8250_config_port as well.
    
    This causes garbled output from userspace:
    
    [    5.220000] random: procd urandom read with 49 bits of entropy available
    ers
       [kee
    
    Fix this by forcing it to be configured on boot, resulting in the
    expected output:
    
    [    5.250000] random: procd urandom read with 50 bits of entropy available
    Press the [f] key and hit [enter] to enter failsafe mode
    Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
    
    Fixes: aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers")
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Nicolas Schichan <nschichan@freebox.fr>
    Cc: linux-mips@linux-mips.org
    Cc: linux-serial@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17544/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e88a123df05b3254dcba42ab857a1ed63c46ff3
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jan 16 10:23:47 2018 +0000

    arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
    
    commit acfb3b883f6d6a4b5d27ad7fdded11f6a09ae6dd upstream.
    
    KVM doesn't follow the SMCCC when it comes to unimplemented calls,
    and inject an UNDEF instead of returning an error. Since firmware
    calls are now used for security mitigation, they are becoming more
    common, and the undef is counter productive.
    
    Instead, let's follow the SMCCC which states that -1 must be returned
    to the caller when getting an unknown function number.
    
    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 7ed7a1ce7e03214e3c98998c36f99034fb8f6575
Author: Dennis Yang <dennisyang@qnap.com>
Date:   Tue Dec 12 18:21:40 2017 +0800

    dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6
    
    commit 490ae017f54e55bde382d45ea24bddfb6d1a0aaf upstream.
    
    For btree removal, there is a corner case that a single thread
    could takes 6 locks which is more than THIN_MAX_CONCURRENT_LOCKS(5)
    and leads to deadlock.
    
    A btree removal might eventually call
    rebalance_children()->rebalance3() to rebalance entries of three
    neighbor child nodes when shadow_spine has already acquired two
    write locks. In rebalance3(), it tries to shadow and acquire the
    write locks of all three child nodes. However, shadowing a child
    node requires acquiring a read lock of the original child node and
    a write lock of the new block. Although the read lock will be
    released after block shadowing, shadowing the third child node
    in rebalance3() could still take the sixth lock.
    (2 write locks for shadow_spine +
     2 write locks for the first two child nodes's shadow +
     1 write lock for the last child node's shadow +
     1 read lock for the last child node)
    
    Signed-off-by: Dennis Yang <dennisyang@qnap.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2da34a807ad1a3d75eb13477f111eca3f46ace64
Author: Joe Thornber <thornber@redhat.com>
Date:   Wed Dec 20 09:56:06 2017 +0000

    dm btree: fix serious bug in btree_split_beneath()
    
    commit bc68d0a43560e950850fc69b58f0f8254b28f6d6 upstream.
    
    When inserting a new key/value pair into a btree we walk down the spine of
    btree nodes performing the following 2 operations:
    
      i) space for a new entry
      ii) adjusting the first key entry if the new key is lower than any in the node.
    
    If the _root_ node is full, the function btree_split_beneath() allocates 2 new
    nodes, and redistibutes the root nodes entries between them.  The root node is
    left with 2 entries corresponding to the 2 new nodes.
    
    btree_split_beneath() then adjusts the spine to point to one of the two new
    children.  This means the first key is never adjusted if the new key was lower,
    ie. operation (ii) gets missed out.  This can result in the new key being
    'lost' for a period; until another low valued key is inserted that will uncover
    it.
    
    This is a serious bug, and quite hard to make trigger in normal use.  A
    reproducing test case ("thin create devices-in-reverse-order") is
    available as part of the thin-provision-tools project:
      https://github.com/jthornber/thin-provisioning-tools/blob/master/functional-tests/device-mapper/dm-tests.scm#L593
    
    Fix the issue by changing btree_split_beneath() so it no longer adjusts
    the spine.  Instead it unlocks both the new nodes, and lets the main
    loop in btree_insert_raw() relock the appropriate one and make any
    neccessary adjustments.
    
    Reported-by: Monty Pavel <monty_pavel@sina.com>
    Signed-off-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e89b22a8b329b84ae4447373436f600fba28b437
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Thu Jan 4 17:53:12 2018 +0100

    ARM: dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7
    
    commit 56aeb07c914a616ab84357d34f8414a69b140cdf upstream.
    
    MPP7 is currently muxed as "gpio", but this function doesn't exist for
    MPP7, only "gpo" is available. This causes the following error:
    
    kirkwood-pinctrl f1010000.pin-controller: unsupported function gpio on pin mpp7
    pinctrl core: failed to register map default (6): invalid type given
    kirkwood-pinctrl f1010000.pin-controller: error claiming hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: could not claim hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: unable to register pinctrl driver
    kirkwood-pinctrl: probe of f1010000.pin-controller failed with error -22
    
    So the pinctrl driver is not probed, all device drivers (including the
    UART driver) do a -EPROBE_DEFER, and therefore the system doesn't
    really boot (well, it boots, but with no UART, and no devices that
    require pin-muxing).
    
    Back when the Device Tree file for this board was introduced, the
    definition was already wrong. The pinctrl driver also always described
    as "gpo" this function for MPP7. However, between Linux 4.10 and 4.11,
    a hog pin failing to be muxed was turned from a simple warning to a
    hard error that caused the entire pinctrl driver probe to bail
    out. This is probably the result of commit 6118714275f0a ("pinctrl:
    core: Fix pinctrl_register_and_init() with pinctrl_enable()").
    
    This commit fixes the Device Tree to use the proper "gpo" function for
    MPP7, which fixes the boot of OpenBlocks A7, which was broken since
    Linux 4.11.
    
    Fixes: f24b56cbcd9d ("ARM: kirkwood: add support for OpenBlocks A7 platform")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40dfccf9bf3729554d3a22df78b748a91bbcd58b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 12 11:12:05 2018 +0100

    phy: work around 'phys' references to usb-nop-xceiv devices
    
    commit b7563e2796f8b23c98afcfea7363194227fa089d upstream.
    
    Stefan Wahren reports a problem with a warning fix that was merged
    for v4.15: we had lots of device nodes with a 'phys' property pointing
    to a device node that is not compliant with the binding documented in
    Documentation/devicetree/bindings/phy/phy-bindings.txt
    
    This generally works because USB HCD drivers that support both the generic
    phy subsystem and the older usb-phy subsystem ignore most errors from
    phy_get() and related calls and then use the usb-phy driver instead.
    
    However, it turns out that making the usb-nop-xceiv device compatible with
    the generic-phy binding changes the phy_get() return code from -EINVAL to
    -EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
    -EPROBE_DEFER from its probe function rather than ignoring the failure,
    breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
    enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
    function, so a reasonable assumption would be that many other platforms
    are affected as well.
    
    I have reviewed all the related patches and concluded that "usb-nop-xceiv"
    is the only USB phy that is affected by the change, and since it is by far
    the most commonly referenced phy, all the other USB phy drivers appear
    to be used in ways that are are either safe in DT (they don't use the
    'phys' property), or in the driver (they already ignore -EPROBE_DEFER
    from generic-phy when usb-phy is available).
    
    To work around the problem, this adds a special case to _of_phy_get()
    so we ignore any PHY node that is compatible with "usb-nop-xceiv",
    as we know that this can never load no matter how much we defer. In the
    future, we might implement a generic-phy driver for "usb-nop-xceiv"
    and then remove this workaround.
    
    Since we generally want older kernels to also want to work with the
    fixed devicetree files, it would be good to backport the patch into
    stable kernels as well (3.13+ are possibly affected), even though they
    don't contain any of the patches that may have caused regressions.
    
    Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
    Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
    Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
    Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
    Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
    Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
    Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
    Link: https://patchwork.kernel.org/patch/10158145/
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Eric Anholt <eric@anholt.net>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b70f4ccbc41d3abfebb600976e2f534a756685ee
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:15:06 2018 -0800

    Input: twl4030-vibra - fix sibling-node lookup
    
    commit 5b189201993ab03001a398de731045bfea90c689 upstream.
    
    A helper purported to look up a child node based on its name was using
    the wrong of-helper and ended up prematurely freeing the parent of-node
    while searching the whole device tree depth-first starting at the parent
    node.
    
    Fixes: 64b9e4d803b1 ("input: twl4030-vibra: Support for DT booted kernel")
    Fixes: e661d0a04462 ("Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ada5b8763130373d961149e3b2950f5f1199c90
Author: Marek Belisko <marek@goldelico.com>
Date:   Wed Jul 29 14:02:19 2015 -0700

    Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning
    
    commit e661d0a04462dd98667f8947141bd8defab5b34a upstream.
    
    Fix following:
    [    8.862274] ERROR: Bad of_node_put() on /ocp/i2c@48070000/twl@48/audio
    [    8.869293] CPU: 0 PID: 1003 Comm: modprobe Not tainted 4.2.0-rc2-letux+ #1175
    [    8.876922] Hardware name: Generic OMAP36xx (Flattened Device Tree)
    [    8.883514] [<c00159e0>] (unwind_backtrace) from [<c0012488>] (show_stack+0x10/0x14)
    [    8.891693] [<c0012488>] (show_stack) from [<c05cb810>] (dump_stack+0x78/0x94)
    [    8.899322] [<c05cb810>] (dump_stack) from [<c02cfd5c>] (kobject_release+0x68/0x7c)
    [    8.907409] [<c02cfd5c>] (kobject_release) from [<bf0040c4>] (twl4030_vibra_probe+0x74/0x188 [twl4030_vibra])
    [    8.917877] [<bf0040c4>] (twl4030_vibra_probe [twl4030_vibra]) from [<c03816ac>] (platform_drv_probe+0x48/0x90)
    [    8.928497] [<c03816ac>] (platform_drv_probe) from [<c037feb4>] (really_probe+0xd4/0x238)
    [    8.937103] [<c037feb4>] (really_probe) from [<c0380160>] (driver_probe_device+0x30/0x48)
    [    8.945678] [<c0380160>] (driver_probe_device) from [<c03801e0>] (__driver_attach+0x68/0x8c)
    [    8.954589] [<c03801e0>] (__driver_attach) from [<c037ea60>] (bus_for_each_dev+0x50/0x84)
    [    8.963226] [<c037ea60>] (bus_for_each_dev) from [<c037f828>] (bus_add_driver+0xcc/0x1e4)
    [    8.971832] [<c037f828>] (bus_add_driver) from [<c0380b60>] (driver_register+0x9c/0xe0)
    [    8.980255] [<c0380b60>] (driver_register) from [<c00097e0>] (do_one_initcall+0x100/0x1b8)
    [    8.988983] [<c00097e0>] (do_one_initcall) from [<c00b8008>] (do_init_module+0x58/0x1c0)
    [    8.997497] [<c00b8008>] (do_init_module) from [<c00b8cac>] (SyS_init_module+0x54/0x64)
    [    9.005950] [<c00b8cac>] (SyS_init_module) from [<c000ed20>] (ret_fast_syscall+0x0/0x54)
    [    9.015838] input: twl4030:vibrator as /devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:audio/input/input2
    
    node passed to of_find_node_by_name is put inside that function and new node
    is returned if found. Free returned node not already freed node.
    
    Signed-off-by: Marek Belisko <marek@goldelico.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12d0592008fd830a61c4cbce9c793e30c4b0d8a4
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:17:48 2018 -0800

    Input: twl6040-vibra - fix child-node lookup
    
    commit dcaf12a8b0bbdbfcfa2be8dff2c4948d9844b4ad upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    Later sanity checks on node properties (which would likely be missing)
    should prevent this from causing much trouble however, especially as the
    original premature free of the parent node has already been fixed
    separately (but that "fix" was apparently never backported to stable).
    
    Fixes: e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    Fixes: c52c545ead97 ("Input: twl6040-vibra - fix DT node memory management")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: H. Nikolaus Schaller <hns@goldelico.com> (on Pyra OMAP5 hardware)
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9765832134fac7d451ebe7bd2e67d16405c9581
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Mon May 9 17:01:01 2016 -0700

    Input: twl6040-vibra - fix DT node memory management
    
    commit c52c545ead97fcc2f4f8ea38f1ae3c23211e09a8 upstream.
    
    commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    
    made the separate vibra DT node to a subnode of the twl6040.
    
    It now calls of_find_node_by_name() to locate the "vibra" subnode.
    This function has a side effect to call of_node_put on() for the twl6040
    parent node passed in as a parameter. This causes trouble later on.
    
    Solution: we must call of_node_get() before of_find_node_by_name()
    
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a499bc7e0351608016bd85fa580b870b383effeb
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:20:18 2018 -0800

    Input: 88pm860x-ts - fix child-node lookup
    
    commit 906bf7daa0618d0ef39f4872ca42218c29a3631f upstream.
    
    Fix child node-lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    To make things worse, the parent node was prematurely freed, while the
    child node was leaked.
    
    Fixes: 2e57d56747e6 ("mfd: 88pm860x: Device tree support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3c49810dc8d90bcff410c4e635ef817af2b2fc1
Author: Joe Lawrence <joe.lawrence@redhat.com>
Date:   Fri Nov 17 15:29:21 2017 -0800

    pipe: avoid round_pipe_size() nr_pages overflow on 32-bit
    
    commit d3f14c485867cfb2e0c48aa88c41d0ef4bf5209c upstream.
    
    round_pipe_size() contains a right-bit-shift expression which may
    overflow, which would cause undefined results in a subsequent
    roundup_pow_of_two() call.
    
      static inline unsigned int round_pipe_size(unsigned int size)
      {
              unsigned long nr_pages;
    
              nr_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
              return roundup_pow_of_two(nr_pages) << PAGE_SHIFT;
      }
    
    PAGE_SIZE is defined as (1UL << PAGE_SHIFT), so:
      - 4 bytes wide on 32-bit (0 to 0xffffffff)
      - 8 bytes wide on 64-bit (0 to 0xffffffffffffffff)
    
    That means that 32-bit round_pipe_size(), nr_pages may overflow to 0:
    
      size=0x00000000    nr_pages=0x0
      size=0x00000001    nr_pages=0x1
      size=0xfffff000    nr_pages=0xfffff
      size=0xfffff001    nr_pages=0x0         << !
      size=0xffffffff    nr_pages=0x0         << !
    
    This is bad because roundup_pow_of_two(n) is undefined when n == 0!
    
    64-bit is not a problem as the unsigned int size is 4 bytes wide
    (similar to 32-bit) and the larger, 8 byte wide unsigned long, is
    sufficient to handle the largest value of the bit shift expression:
    
      size=0xffffffff    nr_pages=100000
    
    Modify round_pipe_size() to return 0 if n == 0 and updates its callers to
    handle accordingly.
    
    Link: http://lkml.kernel.org/r/1507658689-11669-3-git-send-email-joe.lawrence@redhat.com
    Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Dong Jinguang <dongjinguang@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf1feaf5e555cf6f55b4f0e0b336707084d703b4
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:15:23 2017 -0600

    af_key: fix buffer overread in parse_exthdrs()
    
    commit 4e765b4972af7b07adcb1feb16e7a525ce1f6b28 upstream.
    
    If a message sent to a PF_KEY socket ended with an incomplete extension
    header (fewer than 4 bytes remaining), then parse_exthdrs() read past
    the end of the message, into uninitialized memory.  Fix it by returning
    -EINVAL in this case.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[17] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 2;
    
                    write(sock, buf, 17);
            }
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60319ec102135dafcd5fdaa009cfa35f4efe3d85
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:13:05 2017 -0600

    af_key: fix buffer overread in verify_address_len()
    
    commit 06b335cb51af018d5feeff5dd4fd53847ddb675a upstream.
    
    If a message sent to a PF_KEY socket ended with one of the extensions
    that takes a 'struct sadb_address' but there were not enough bytes
    remaining in the message for the ->sa_family member of the 'struct
    sockaddr' which is supposed to follow, then verify_address_len() read
    past the end of the message, into uninitialized memory.  Fix it by
    returning -EINVAL in this case.
    
    This bug was found using syzkaller with KMSAN.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[24] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
                    struct sadb_address *addr = (void *)(msg + 1);
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 3;
                    addr->sadb_address_len = 1;
                    addr->sadb_address_exttype = SADB_EXT_ADDRESS_SRC;
    
                    write(sock, buf, 24);
            }
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82ddf73182bbc2eff323ee35faffd16c75b335d4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 10:53:18 2018 +0100

    ALSA: hda - Apply the existing quirk to iMac 14,1
    
    commit 031f335cda879450095873003abb03ae8ed3b74a upstream.
    
    iMac 14,1 requires the same quirk as iMac 12,2, using GPIO 2 and 3 for
    headphone and speaker output amps.  Add the codec SSID quirk entry
    (106b:0600) accordingly.
    
    BugLink: http://lkml.kernel.org/r/CAEw6Zyteav09VGHRfD5QwsfuWv5a43r0tFBNbfcHXoNrxVz7ew@mail.gmail.com
    Reported-by: Freaky <freaky2000@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdbebd4716bc50d2d965fdefc16d007239402197
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 23:48:05 2018 +0100

    ALSA: pcm: Remove yet superfluous WARN_ON()
    
    commit 23b19b7b50fe1867da8d431eea9cd3e4b6328c2c upstream.
    
    muldiv32() contains a snd_BUG_ON() (which is morphed as WARN_ON() with
    debug option) for checking the case of 0 / 0.  This would be helpful
    if this happens only as a logical error; however, since the hw refine
    is performed with any data set provided by user, the inconsistent
    values that can trigger such a condition might be passed easily.
    Actually, syzbot caught this by passing some zero'ed old hw_params
    ioctl.
    
    So, having snd_BUG_ON() there is simply superfluous and rather
    harmful to give unnecessary confusions.  Let's get rid of it.
    
    Reported-by: syzbot+7e6ee55011deeebce15d@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad211e59c68389b9203f3834c65da7bfe9e6874a
Author: Li Jinyue <lijinyue@huawei.com>
Date:   Thu Dec 14 17:04:54 2017 +0800

    futex: Prevent overflow by strengthen input validation
    
    commit fbe0e839d1e22d88810f3ee3e2f1479be4c0aa4a upstream.
    
    UBSAN reports signed integer overflow in kernel/futex.c:
    
     UBSAN: Undefined behaviour in kernel/futex.c:2041:18
     signed integer overflow:
     0 - -2147483648 cannot be represented in type 'int'
    
    Add a sanity check to catch negative values of nr_wake and nr_requeue.
    
    Signed-off-by: Li Jinyue <lijinyue@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Cc: dvhart@infradead.org
    Link: https://lkml.kernel.org/r/1513242294-31786-1-git-send-email-lijinyue@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cb4b606421771e5c3f0de7677dfc0e14f8a6c9e
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Apr 7 09:34:12 2017 +0200

    scsi: sg: disable SET_FORCE_LOW_DMA
    
    commit 745dfa0d8ec26b24f3304459ff6e9eacc5c8351b upstream.
    
    The ioctl SET_FORCE_LOW_DMA has never worked since the initial git
    check-in, and the respective setting is nowadays handled correctly. So
    disable it entirely.
    
    Signed-off-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Tested-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3758d94e951332186183a6e20bfac257183965da
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Apr 25 17:35:29 2016 +0200

    gcov: disable for COMPILE_TEST
    
    commit cc622420798c4bcf093785d872525087a7798db9 upstream.
    
    Enabling gcov is counterproductive to compile testing: it significantly
    increases the kernel image size, compile time, and it produces lots
    of false positive "may be used uninitialized" warnings as the result
    of missed optimizations.
    
    This is in line with how UBSAN_SANITIZE_ALL and PROFILE_ALL_BRANCHES
    work, both of which have similar problems.
    
    With an ARM allmodconfig kernel, I see the build time drop from
    283 minutes CPU time to 225 minutes, and the vmlinux size drops
    from 43MB to 26MB.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>