commit 50f9e029a6f9f440b8da4259fb7f9b879361368a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jul 25 11:26:13 2018 +0200

    Linux 4.17.10

commit 1e5e3acc86c8662fa30d6591f25412727d08c84c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Jun 21 16:19:41 2018 +0300

    xhci: Fix perceived dead host due to runtime suspend race with event handler
    
    commit 229bc19fd7aca4f37964af06e3583c1c8f36b5d6 upstream.
    
    Don't rely on event interrupt (EINT) bit alone to detect pending port
    change in resume. If no change event is detected the host may be suspended
    again, oterwise roothubs are resumed.
    
    There is a lag in xHC setting EINT. If we don't notice the pending change
    in resume, and the controller is runtime suspeded again, it causes the
    event handler to assume host is dead as it will fail to read xHC registers
    once PCI puts the controller to D3 state.
    
    [  268.520969] xhci_hcd: xhci_resume: starting port polling.
    [  268.520985] xhci_hcd: xhci_hub_status_data: stopping port polling.
    [  268.521030] xhci_hcd: xhci_suspend: stopping port polling.
    [  268.521040] xhci_hcd: // Setting command ring address to 0x349bd001
    [  268.521139] xhci_hcd: Port Status Change Event for port 3
    [  268.521149] xhci_hcd: resume root hub
    [  268.521163] xhci_hcd: port resume event for port 3
    [  268.521168] xhci_hcd: xHC is not running.
    [  268.521174] xhci_hcd: handle_port_status: starting port polling.
    [  268.596322] xhci_hcd: xhci_hc_died: xHCI host controller not responding, assume dead
    
    The EINT lag is described in a additional note in xhci specs 4.19.2:
    
    "Due to internal xHC scheduling and system delays, there will be a lag
    between a change bit being set and the Port Status Change Event that it
    generated being written to the Event Ring. If SW reads the PORTSC and
    sees a change bit set, there is no guarantee that the corresponding Port
    Status Change Event has already been written into the Event Ring."
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd3702ec5d2d6b08f137a657bbadb49778019262
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Jun 9 09:43:13 2018 -0400

    cxl_getfile(): fix double-iput() on alloc_file() failures
    
    commit d202797f480c0e5918e7642d6716cdc62b3ab5c9 upstream.
    
    Doing iput() after path_put() is wrong.
    
    Cc: stable@vger.kernel.org
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a242b5c4cd3a47b3e8fc8c317b86228d62093b51
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Jun 8 11:17:54 2018 -0400

    drm_mode_create_lease_ioctl(): fix open-coded filp_clone_open()
    
    commit b4e7a7a88b5d060650094b8d3454bc521d669f6a upstream.
    
    Failure of ->open() should *not* be followed by fput().  Fixed by
    using filp_clone_open(), which gets the cleanups right.
    
    Cc: stable@vger.kernel.org
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e354dd0a309f54e27507a1faf5995dd6c33ee1f
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Sun Jul 22 15:07:11 2018 +0100

    alpha: fix osf_wait4() breakage
    
    commit f88a333b44318643282b8acc92af90deda441f5e upstream.
    
    kernel_wait4() expects a userland address for status - it's only
    rusage that goes as a kernel one (and needs a copyout afterwards)
    
    [ Also, fix the prototype of kernel_wait4() to have that __user
      annotation   - Linus ]
    
    Fixes: 92ebce5ac55d ("osf_wait4: switch to kernel_wait4()")
    Cc: stable@kernel.org # v4.13+
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7c57d4b809adcb68e9ee6899c60f1802e7f0720
Author: Alexander Couzens <lynxis@fe80.eu>
Date:   Tue Jul 17 13:17:09 2018 +0200

    net: usb: asix: replace mii_nway_restart in resume path
    
    [ Upstream commit 5c968f48021a9b3faa61ac2543cfab32461c0e05 ]
    
    mii_nway_restart is not pm aware which results in a rtnl deadlock.
    Implement mii_nway_restart manual by setting BMCR_ANRESTART if
    BMCR_ANENABLE is set.
    
    To reproduce:
    * plug an asix based usb network interface
    * wait until the device enters PM (~5 sec)
    * `ip link set eth1 up` will never return
    
    Fixes: d9fe64e51114 ("net: asix: Add in_pm parameter")
    Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3c8f32cb824c563e918444be8b1751644a99cf3
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Jul 13 17:21:42 2018 +0200

    ipv6: make DAD fail with enhanced DAD when nonce length differs
    
    [ Upstream commit e66515999b627368892ccc9b3a13a506f2ea1357 ]
    
    Commit adc176c54722 ("ipv6 addrconf: Implemented enhanced DAD (RFC7527)")
    added enhanced DAD with a nonce length of 6 bytes. However, RFC7527
    doesn't specify the length of the nonce, other than being 6 + 8*k bytes,
    with integer k >= 0 (RFC3971 5.3.2). The current implementation simply
    assumes that the nonce will always be 6 bytes, but others systems are
    free to choose different sizes.
    
    If another system sends a nonce of different length but with the same 6
    bytes prefix, it shouldn't be considered as the same nonce. Thus, check
    that the length of the received nonce is the same as the length we sent.
    
    Ugly scapy test script running on veth0:
    
    def loop():
        pkt=sniff(iface="veth0", filter="icmp6", count=1)
        pkt = pkt[0]
        b = bytearray(pkt[Raw].load)
        b[1] += 1
        b += b'\xde\xad\xbe\xef\xde\xad\xbe\xef'
        pkt[Raw].load = bytes(b)
        pkt[IPv6].plen += 8
        # fixup checksum after modifying the payload
        pkt[IPv6].payload.cksum -= 0x3b44
        if pkt[IPv6].payload.cksum < 0:
            pkt[IPv6].payload.cksum += 0xffff
        sendp(pkt, iface="veth0")
    
    This should result in DAD failure for any address added to veth0's peer,
    but is currently ignored.
    
    Fixes: adc176c54722 ("ipv6 addrconf: Implemented enhanced DAD (RFC7527)")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87389c0afe5d6bbff789ef29dfc86e88cbd3c78d
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Jul 11 02:47:58 2018 -0700

    net: systemport: Fix CRC forwarding check for SYSTEMPORT Lite
    
    [ Upstream commit 9e3bff923913729d76d87f0015848ee7b8ff7083 ]
    
    SYSTEMPORT Lite reversed the logic compared to SYSTEMPORT, the
    GIB_FCS_STRIP bit is set when the Ethernet FCS is stripped, and that bit
    is not set by default. Fix the logic such that we properly check whether
    that bit is set or not and we don't forward an extra 4 bytes to the
    network stack.
    
    Fixes: 44a4524c54af ("net: systemport: Add support for SYSTEMPORT Lite")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa0c60dcc4280214b890693f0c757934d3b182f5
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Sun Jul 15 13:54:39 2018 +0300

    net/mlx4_en: Don't reuse RX page when XDP is set
    
    [ Upstream commit 432e629e56432064761be63bcd5e263c0920430d ]
    
    When a new rx packet arrives, the rx path will decide whether to reuse
    the remainder of the page or not according to one of the below conditions:
    1. frag_info->frag_stride == PAGE_SIZE / 2
    2. frags->page_offset + frag_info->frag_size > PAGE_SIZE;
    
    The first condition is no met for when XDP is set.
    For XDP, page_offset is always set to priv->rx_headroom which is
    XDP_PACKET_HEADROOM and frag_info->frag_size is around mtu size + some
    padding, still the 2nd release condition will hold since
    XDP_PACKET_HEADROOM + 1536 < PAGE_SIZE, as a result the page will not
    be released and will be _wrongly_ reused for next free rx descriptor.
    
    In XDP there is an assumption to have a page per packet and reuse can
    break such assumption and might cause packet data corruptions.
    
    Fix this by adding an extra condition (!priv->rx_headroom) to the 2nd
    case to avoid page reuse when XDP is set, since rx_headroom is set to 0
    for non XDP setup and set to XDP_PACKET_HEADROOM for XDP setup.
    
    No additional cache line is required for the new condition.
    
    Fixes: 34db548bfb95 ("mlx4: add page recycling in receive path")
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Suggested-by: Martin KaFai Lau <kafai@fb.com>
    CC: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6af4a29f8040d8f4a6efc9d67fb8b9a8f77e09ef
Author: Igor Russkikh <igor.russkikh@aquantia.com>
Date:   Thu Jul 5 17:01:09 2018 +0300

    net: aquantia: vlan unicast address list correct handling
    
    [ Upstream commit 94b3b542303f3055c326df74ef144a8a790d7d7f ]
    
    Setting up macvlan/macvtap networks over atlantic NIC results
    in no traffic over these networks because ndo_set_rx_mode did
    not listed UC MACs as registered in unicast filter.
    
    Here we fix that taking into account maximum number of UC
    filters supported by hardware. If more than MAX addresses were
    registered, we just enable promisc  and/or allmulti to pass
    the traffic in.
    
    We also remove MULTICAST_ADDRESS_MAX constant from aq_cfg since
    thats not a configurable parameter at all.
    
    Fixes: b21f502 ("net:ethernet:aquantia: Fix for multicast filter handling.")
    Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7933909aa37fb4b8b23957eab94250b4e30dde25
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Tue Jul 17 17:11:13 2018 +0000

    hv_netvsc: Fix napi reschedule while receive completion is busy
    
    [ Upstream commit 6b81b193b83e87da1ea13217d684b54fccf8ee8a ]
    
    If out ring is full temporarily and receive completion cannot go out,
    we may still need to reschedule napi if certain conditions are met.
    Otherwise the napi poll might be stopped forever, and cause network
    disconnect.
    
    Fixes: 7426b1a51803 ("netvsc: optimize receive completions")
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d706d7854636b1b8cf2b774e843adf17f19fa28
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Jul 3 16:30:47 2018 +0800

    sctp: fix the issue that pathmtu may be set lower than MINSEGMENT
    
    [ Upstream commit a65925475571953da12a9bc2082aec29d4e2c0e7 ]
    
    After commit b6c5734db070 ("sctp: fix the handling of ICMP Frag Needed
    for too small MTUs"), sctp_transport_update_pmtu would refetch pathmtu
    from the dst and set it to transport's pathmtu without any check.
    
    The new pathmtu may be lower than MINSEGMENT if the dst is obsolete and
    updated by .get_dst() in sctp_transport_update_pmtu. In this case, it
    could have a smaller MTU as well, and thus we should validate it
    against MINSEGMENT instead.
    
    Syzbot reported a warning in sctp_mtu_payload caused by this.
    
    This patch refetches the pathmtu by calling sctp_dst_mtu where it does
    the check against MINSEGMENT.
    
    v1->v2:
      - refetch the pathmtu by calling sctp_dst_mtu instead as Marcelo's
        suggestion.
    
    Fixes: b6c5734db070 ("sctp: fix the handling of ICMP Frag Needed for too small MTUs")
    Reported-by: syzbot+f0d9d7cba052f9344b03@syzkaller.appspotmail.com
    Suggested-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@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 1ef66ca6fc045d9da6e4eb0231b2b38da2ce5604
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Thu Apr 26 16:58:57 2018 -0300

    sctp: introduce sctp_dst_mtu
    
    [ Upstream commit 6ff0f871c20ec1769a481edca86f23c76b2b06d3 ]
    
    Which makes sure that the MTU respects the minimum value of
    SCTP_DEFAULT_MINSEGMENT and that it is correctly aligned.
    
    Signed-off-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 41822076f67fd02693f38350d05988c8b18dc989
Author: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Date:   Fri Jul 13 14:40:50 2018 +0900

    net: ip6_gre: get ipv6hdr after skb_cow_head()
    
    [ Upstream commit b7ed879425be371905d856410d19e9a42a62bcf3 ]
    
    A KASAN:use-after-free bug was found related to ip6-erspan
    while running selftests/net/ip6_gre_headroom.sh
    
    It happens because of following sequence:
    - ipv6hdr pointer is obtained from skb
    - skb_cow_head() is called, skb->head memory is reallocated
    - old data is accessed using ipv6hdr pointer
    
    skb_cow_head() call was added in e41c7c68ea77 ("ip6erspan: make sure
    enough headroom at xmit."), but looking at the history there was a
    chance of similar bug because gre_handle_offloads() and pskb_trim()
    can also reallocate skb->head memory. Fixes tag points to commit
    which introduced possibility of this bug.
    
    This patch moves ipv6hdr pointer assignment after skb_cow_head() call.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    Reviewed-by: Greg Rose <gvrose8192@gmail.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de3896afb5378da296d50067d0b5f582a61d8f2d
Author: Sanjeev Bansal <sanjeevb.bansal@broadcom.com>
Date:   Mon Jul 16 11:13:32 2018 +0530

    tg3: Add higher cpu clock for 5762.
    
    [ Upstream commit 3a498606bb04af603a46ebde8296040b2de350d1 ]
    
    This patch has fix for TX timeout while running bi-directional
    traffic with 100 Mbps using 5762.
    
    Signed-off-by: Sanjeev Bansal <sanjeevb.bansal@broadcom.com>
    Signed-off-by: Siva Reddy Kallam <siva.kallam@broadcom.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7edf5b7301699c0910a97b3af4893e659ff0a0d
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Tue Jul 10 14:22:27 2018 -0700

    sch_fq_codel: zero q->flows_cnt when fq_codel_init fails
    
    [ Upstream commit 83fe6b8709f65bc505b10235bd82ece12c4c5099 ]
    
    When fq_codel_init fails, qdisc_create_dflt will cleanup by using
    qdisc_destroy. This function calls the ->reset() op prior to calling the
    ->destroy() op.
    
    Unfortunately, during the failure flow for sch_fq_codel, the ->flows
    parameter is not initialized, so the fq_codel_reset function will null
    pointer dereference.
    
       kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
       kernel: IP: fq_codel_reset+0x58/0xd0 [sch_fq_codel]
       kernel: PGD 0 P4D 0
       kernel: Oops: 0000 [#1] SMP PTI
       kernel: Modules linked in: i40iw i40e(OE) xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack tun bridge stp llc devlink ebtable_filter ebtables ip6table_filter ip6_tables rpcrdma ib_isert iscsi_target_mod sunrpc ib_iser libiscsi scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm intel_rapl sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel intel_cstate iTCO_wdt iTCO_vendor_support intel_uncore ib_core intel_rapl_perf mei_me mei joydev i2c_i801 lpc_ich ioatdma shpchp wmi sch_fq_codel xfs libcrc32c mgag200 ixgbe drm_kms_helper isci ttm firewire_ohci
       kernel:  mdio drm igb libsas crc32c_intel firewire_core ptp pps_core scsi_transport_sas crc_itu_t dca i2c_algo_bit ipmi_si ipmi_devintf ipmi_msghandler [last unloaded: i40e]
       kernel: CPU: 10 PID: 4219 Comm: ip Tainted: G           OE    4.16.13custom-fq-codel-test+ #3
       kernel: Hardware name: Intel Corporation S2600CO/S2600CO, BIOS SE5C600.86B.02.05.0004.051120151007 05/11/2015
       kernel: RIP: 0010:fq_codel_reset+0x58/0xd0 [sch_fq_codel]
       kernel: RSP: 0018:ffffbfbf4c1fb620 EFLAGS: 00010246
       kernel: RAX: 0000000000000400 RBX: 0000000000000000 RCX: 00000000000005b9
       kernel: RDX: 0000000000000000 RSI: ffff9d03264a60c0 RDI: ffff9cfd17b31c00
       kernel: RBP: 0000000000000001 R08: 00000000000260c0 R09: ffffffffb679c3e9
       kernel: R10: fffff1dab06a0e80 R11: ffff9cfd163af800 R12: ffff9cfd17b31c00
       kernel: R13: 0000000000000001 R14: ffff9cfd153de600 R15: 0000000000000001
       kernel: FS:  00007fdec2f92800(0000) GS:ffff9d0326480000(0000) knlGS:0000000000000000
       kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       kernel: CR2: 0000000000000008 CR3: 0000000c1956a006 CR4: 00000000000606e0
       kernel: Call Trace:
       kernel:  qdisc_destroy+0x56/0x140
       kernel:  qdisc_create_dflt+0x8b/0xb0
       kernel:  mq_init+0xc1/0xf0
       kernel:  qdisc_create_dflt+0x5a/0xb0
       kernel:  dev_activate+0x205/0x230
       kernel:  __dev_open+0xf5/0x160
       kernel:  __dev_change_flags+0x1a3/0x210
       kernel:  dev_change_flags+0x21/0x60
       kernel:  do_setlink+0x660/0xdf0
       kernel:  ? down_trylock+0x25/0x30
       kernel:  ? xfs_buf_trylock+0x1a/0xd0 [xfs]
       kernel:  ? rtnl_newlink+0x816/0x990
       kernel:  ? _xfs_buf_find+0x327/0x580 [xfs]
       kernel:  ? _cond_resched+0x15/0x30
       kernel:  ? kmem_cache_alloc+0x20/0x1b0
       kernel:  ? rtnetlink_rcv_msg+0x200/0x2f0
       kernel:  ? rtnl_calcit.isra.30+0x100/0x100
       kernel:  ? netlink_rcv_skb+0x4c/0x120
       kernel:  ? netlink_unicast+0x19e/0x260
       kernel:  ? netlink_sendmsg+0x1ff/0x3c0
       kernel:  ? sock_sendmsg+0x36/0x40
       kernel:  ? ___sys_sendmsg+0x295/0x2f0
       kernel:  ? ebitmap_cmp+0x6d/0x90
       kernel:  ? dev_get_by_name_rcu+0x73/0x90
       kernel:  ? skb_dequeue+0x52/0x60
       kernel:  ? __inode_wait_for_writeback+0x7f/0xf0
       kernel:  ? bit_waitqueue+0x30/0x30
       kernel:  ? fsnotify_grab_connector+0x3c/0x60
       kernel:  ? __sys_sendmsg+0x51/0x90
       kernel:  ? do_syscall_64+0x74/0x180
       kernel:  ? entry_SYSCALL_64_after_hwframe+0x3d/0xa2
       kernel: Code: 00 00 48 89 87 00 02 00 00 8b 87 a0 01 00 00 85 c0 0f 84 84 00 00 00 31 ed 48 63 dd 83 c5 01 48 c1 e3 06 49 03 9c 24 90 01 00 00 <48> 8b 73 08 48 8b 3b e8 6c 9a 4f f6 48 8d 43 10 48 c7 03 00 00
       kernel: RIP: fq_codel_reset+0x58/0xd0 [sch_fq_codel] RSP: ffffbfbf4c1fb620
       kernel: CR2: 0000000000000008
       kernel: ---[ end trace e81a62bede66274e ]---
    
    This is caused because flows_cnt is non-zero, but flows hasn't been
    initialized. fq_codel_init has left the private data in a partially
    initialized state.
    
    To fix this, reset flows_cnt to 0 when we fail to initialize.
    Additionally, to make the state more consistent, also cleanup the flows
    pointer when the allocation of backlogs fails.
    
    This fixes the NULL pointer dereference, since both the for-loop and
    memset in fq_codel_reset will be no-ops when flow_cnt is zero.
    
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fb78678d1363343be4c781612e0da90a71d848a
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Jul 8 11:55:51 2018 +0900

    rhashtable: add restart routine in rhashtable_free_and_destroy()
    
    [ Upstream commit 0026129c8629265bfe5079c1e017fa8543796d9f ]
    
    rhashtable_free_and_destroy() cancels re-hash deferred work
    then walks and destroys elements. at this moment, some elements can be
    still in future_tbl. that elements are not destroyed.
    
    test case:
    nft_rhash_destroy() calls rhashtable_free_and_destroy() to destroy
    all elements of sets before destroying sets and chains.
    But rhashtable_free_and_destroy() doesn't destroy elements of future_tbl.
    so that splat occurred.
    
    test script:
       %cat test.nft
       table ip aa {
               map map1 {
                       type ipv4_addr : verdict;
                       elements = {
                               0 : jump a0,
                               1 : jump a0,
                               2 : jump a0,
                               3 : jump a0,
                               4 : jump a0,
                               5 : jump a0,
                               6 : jump a0,
                               7 : jump a0,
                               8 : jump a0,
                               9 : jump a0,
                    }
               }
               chain a0 {
               }
       }
       flush ruleset
       table ip aa {
               map map1 {
                       type ipv4_addr : verdict;
                       elements = {
                               0 : jump a0,
                               1 : jump a0,
                               2 : jump a0,
                               3 : jump a0,
                               4 : jump a0,
                               5 : jump a0,
                               6 : jump a0,
                               7 : jump a0,
                               8 : jump a0,
                               9 : jump a0,
                       }
               }
               chain a0 {
               }
       }
       flush ruleset
    
       %while :; do nft -f test.nft; done
    
    Splat looks like:
    [  200.795603] kernel BUG at net/netfilter/nf_tables_api.c:1363!
    [  200.806944] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [  200.812253] CPU: 1 PID: 1582 Comm: nft Not tainted 4.17.0+ #24
    [  200.820297] Hardware name: To be filled by O.E.M. To be filled by O.E.M./Aptio CRB, BIOS 5.6.5 07/08/2015
    [  200.830309] RIP: 0010:nf_tables_chain_destroy.isra.34+0x62/0x240 [nf_tables]
    [  200.838317] Code: 43 50 85 c0 74 26 48 8b 45 00 48 8b 4d 08 ba 54 05 00 00 48 c7 c6 60 6d 29 c0 48 c7 c7 c0 65 29 c0 4c 8b 40 08 e8 58 e5 fd f8 <0f> 0b 48 89 da 48 b8 00 00 00 00 00 fc ff
    [  200.860366] RSP: 0000:ffff880118dbf4d0 EFLAGS: 00010282
    [  200.866354] RAX: 0000000000000061 RBX: ffff88010cdeaf08 RCX: 0000000000000000
    [  200.874355] RDX: 0000000000000061 RSI: 0000000000000008 RDI: ffffed00231b7e90
    [  200.882361] RBP: ffff880118dbf4e8 R08: ffffed002373bcfb R09: ffffed002373bcfa
    [  200.890354] R10: 0000000000000000 R11: ffffed002373bcfb R12: dead000000000200
    [  200.898356] R13: dead000000000100 R14: ffffffffbb62af38 R15: dffffc0000000000
    [  200.906354] FS:  00007fefc31fd700(0000) GS:ffff88011b800000(0000) knlGS:0000000000000000
    [  200.915533] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  200.922355] CR2: 0000557f1c8e9128 CR3: 0000000106880000 CR4: 00000000001006e0
    [  200.930353] Call Trace:
    [  200.932351]  ? nf_tables_commit+0x26f6/0x2c60 [nf_tables]
    [  200.939525]  ? nf_tables_setelem_notify.constprop.49+0x1a0/0x1a0 [nf_tables]
    [  200.947525]  ? nf_tables_delchain+0x6e0/0x6e0 [nf_tables]
    [  200.952383]  ? nft_add_set_elem+0x1700/0x1700 [nf_tables]
    [  200.959532]  ? nla_parse+0xab/0x230
    [  200.963529]  ? nfnetlink_rcv_batch+0xd06/0x10d0 [nfnetlink]
    [  200.968384]  ? nfnetlink_net_init+0x130/0x130 [nfnetlink]
    [  200.975525]  ? debug_show_all_locks+0x290/0x290
    [  200.980363]  ? debug_show_all_locks+0x290/0x290
    [  200.986356]  ? sched_clock_cpu+0x132/0x170
    [  200.990352]  ? find_held_lock+0x39/0x1b0
    [  200.994355]  ? sched_clock_local+0x10d/0x130
    [  200.999531]  ? memset+0x1f/0x40
    
    V2:
     - free all tables requested by Herbert Xu
    
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbc3f8dd3d76383bb55a2e895da00ef7abc008a8
Author: Matevz Vucnik <vucnikm@gmail.com>
Date:   Wed Jul 4 18:12:48 2018 +0200

    qmi_wwan: add support for Quectel EG91
    
    [ Upstream commit 38cd58ed9c4e389799b507bcffe02a7a7a180b33 ]
    
    This adds the USB id of LTE modem Quectel EG91. It requires the
    same quirk as other Quectel modems to make it work.
    
    Signed-off-by: Matevz Vucnik <vucnikm@gmail.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>

commit 7e6d5d531f87000d6cd61588073971b441068c41
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jul 17 20:17:33 2018 -0500

    ptp: fix missing break in switch
    
    [ Upstream commit 9ba8376ce1e2cbf4ce44f7e4bee1d0648e10d594 ]
    
    It seems that a *break* is missing in order to avoid falling through
    to the default case. Otherwise, checking *chan* makes no sense.
    
    Fixes: 72df7a7244c0 ("ptp: Allow reassigning calibration pin function")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feb31042cf45e07c5aa81f8d6d993290ec1d558e
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Tue Jul 3 22:34:54 2018 +0200

    net: phy: fix flag masking in __set_phy_supported
    
    [ Upstream commit df8ed346d4a806a6eef2db5924285e839604b3f9 ]
    
    Currently also the pause flags are removed from phydev->supported because
    they're not included in PHY_DEFAULT_FEATURES. I don't think this is
    intended, especially when considering that this function can be called
    via phy_set_max_speed() anywhere in a driver. Change the masking to mask
    out only the values we're going to change. In addition remove the
    misleading comment, job of this small function is just to adjust the
    supported and advertised speeds.
    
    Fixes: f3a6bd393c2c ("phylib: Add phy_set_max_speed helper")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eefbcaa3f545f26143249a62dee6013522c3d586
Author: David Ahern <dsahern@gmail.com>
Date:   Sun Jul 15 09:35:19 2018 -0700

    net/ipv6: Do not allow device only routes via the multipath API
    
    [ Upstream commit b5d2d75e079a918be686957b1a8d2f6c5cc95a0a ]
    
    Eric reported that reverting the patch that fixed and simplified IPv6
    multipath routes means reverting back to invalid userspace notifications.
    eg.,
    $ ip -6 route add 2001:db8:1::/64 nexthop dev eth0 nexthop dev eth1
    
    only generates a single notification:
    2001:db8:1::/64 dev eth0 metric 1024 pref medium
    
    While working on a fix for this problem I found another case that is just
    broken completely - a multipath route with a gateway followed by device
    followed by gateway:
        $ ip -6 ro add 2001:db8:103::/64
              nexthop via 2001:db8:1::64
              nexthop dev dummy2
              nexthop via 2001:db8:3::64
    
    In this case the device only route is dropped completely - no notification
    to userpsace but no addition to the FIB either:
    
    $ ip -6 ro ls
    2001:db8:1::/64 dev dummy1 proto kernel metric 256 pref medium
    2001:db8:2::/64 dev dummy2 proto kernel metric 256 pref medium
    2001:db8:3::/64 dev dummy3 proto kernel metric 256 pref medium
    2001:db8:103::/64 metric 1024
            nexthop via 2001:db8:1::64 dev dummy1 weight 1
            nexthop via 2001:db8:3::64 dev dummy3 weight 1 pref medium
    fe80::/64 dev dummy1 proto kernel metric 256 pref medium
    fe80::/64 dev dummy2 proto kernel metric 256 pref medium
    fe80::/64 dev dummy3 proto kernel metric 256 pref medium
    
    Really, IPv6 multipath is just FUBAR'ed beyond repair when it comes to
    device only routes, so do not allow it all.
    
    This change will break any scripts relying on the mpath api for insert,
    but I don't see any other way to handle the permutations. Besides, since
    the routes are added to the FIB as standalone (non-multipath) routes the
    kernel is not doing what the user requested, so it might as well tell the
    user that.
    
    Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: David Ahern <dsahern@gmail.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 410570f9d797823c180a1a69267a86a095374e62
Author: David Ahern <dsahern@gmail.com>
Date:   Sat Jul 7 16:15:26 2018 -0700

    net/ipv4: Set oif in fib_compute_spec_dst
    
    [ Upstream commit e7372197e15856ec4ee66b668020a662994db103 ]
    
    Xin reported that icmp replies may not use the address on the device the
    echo request is received if the destination address is broadcast. Instead
    a route lookup is done without considering VRF context. Fix by setting
    oif in flow struct to the master device if it is enslaved. That directs
    the lookup to the VRF table. If the device is not enslaved, oif is still
    0 so no affect.
    
    Fixes: cd2fbe1b6b51 ("net: Use VRF device index for lookups on RX")
    Reported-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7939f3c0a83e03180da086fa73a67c4f88fd642
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Fri Jul 13 13:21:07 2018 +0200

    skbuff: Unconditionally copy pfmemalloc in __skb_clone()
    
    [ Upstream commit e78bfb0751d4e312699106ba7efbed2bab1a53ca ]
    
    Commit 8b7008620b84 ("net: Don't copy pfmemalloc flag in
    __copy_skb_header()") introduced a different handling for the
    pfmemalloc flag in copy and clone paths.
    
    In __skb_clone(), now, the flag is set only if it was set in the
    original skb, but not cleared if it wasn't. This is wrong and
    might lead to socket buffers being flagged with pfmemalloc even
    if the skb data wasn't allocated from pfmemalloc reserves. Copy
    the flag instead of ORing it.
    
    Reported-by: Sabrina Dubroca <sd@queasysnail.net>
    Fixes: 8b7008620b84 ("net: Don't copy pfmemalloc flag in __copy_skb_header()")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Tested-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b5084610f4ae729b1794e61ec7649e3993f03a0
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Jul 11 14:39:42 2018 +0200

    net: Don't copy pfmemalloc flag in __copy_skb_header()
    
    [ Upstream commit 8b7008620b8452728cadead460a36f64ed78c460 ]
    
    The pfmemalloc flag indicates that the skb was allocated from
    the PFMEMALLOC reserves, and the flag is currently copied on skb
    copy and clone.
    
    However, an skb copied from an skb flagged with pfmemalloc
    wasn't necessarily allocated from PFMEMALLOC reserves, and on
    the other hand an skb allocated that way might be copied from an
    skb that wasn't.
    
    So we should not copy the flag on skb copy, and rather decide
    whether to allow an skb to be associated with sockets unrelated
    to page reclaim depending only on how it was allocated.
    
    Move the pfmemalloc flag before headers_start[0] using an
    existing 1-bit hole, so that __copy_skb_header() doesn't copy
    it.
    
    When cloning, we'll now take care of this flag explicitly,
    contravening to the warning comment of __skb_clone().
    
    While at it, restore the newline usage introduced by commit
    b19372273164 ("net: reorganize sk_buff for faster
    __copy_skb_header()") to visually separate bytes used in
    bitfields after headers_start[0], that was gone after commit
    a9e419dc7be6 ("netfilter: merge ctinfo into nfct pointer storage
    area"), and describe the pfmemalloc flag in the kernel-doc
    structure comment.
    
    This doesn't change the size of sk_buff or cacheline boundaries,
    but consolidates the 15 bits hole before tc_index into a 2 bytes
    hole before csum, that could now be filled more easily.
    
    Reported-by: Patrick Talbert <ptalbert@redhat.com>
    Fixes: c93bdd0e03e8 ("netvm: allow skb allocation to use PFMEMALLOC reserves")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d28b71d05f07d7891e26fec306554d8cc9686ed
Author: Lorenzo Colitti <lorenzo@google.com>
Date:   Sat Jul 7 16:31:40 2018 +0900

    net: diag: Don't double-free TCP_NEW_SYN_RECV sockets in tcp_abort
    
    [ Upstream commit acc2cf4e37174646a24cba42fa53c668b2338d4e ]
    
    When tcp_diag_destroy closes a TCP_NEW_SYN_RECV socket, it first
    frees it by calling inet_csk_reqsk_queue_drop_and_and_put in
    tcp_abort, and then frees it again by calling sock_gen_put.
    
    Since tcp_abort only has one caller, and all the other codepaths
    in tcp_abort don't free the socket, just remove the free in that
    function.
    
    Cc: David Ahern <dsa@cumulusnetworks.com>
    Tested: passes Android sock_diag_test.py, which exercises this codepath
    Fixes: d7226c7a4dd1 ("net: diag: Fix refcnt leak in error path destroying socket")
    Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsa@cumulusnetworks.com>
    Tested-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 561478584f8f884193fbc2bd1dc0eb289d091c42
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Mon Jul 16 13:26:13 2018 -0700

    lib/rhashtable: consider param->min_size when setting initial table size
    
    [ Upstream commit 107d01f5ba10f4162c38109496607eb197059064 ]
    
    rhashtable_init() currently does not take into account the user-passed
    min_size parameter unless param->nelem_hint is set as well. As such,
    the default size (number of buckets) will always be HASH_DEFAULT_SIZE
    even if the smallest allowed size is larger than that. Remediate this
    by unconditionally calling into rounded_hashtable_size() and handling
    things accordingly.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 677f3c02b57a0ce5f7395a93f67ed40eb01f0558
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jul 18 10:48:56 2018 +0200

    ipv6: ila: select CONFIG_DST_CACHE
    
    [ Upstream commit 83ed7d1fe2d2d4a11b30660dec20168bb473d9c1 ]
    
    My randconfig builds came across an old missing dependency for ILA:
    
    ERROR: "dst_cache_set_ip6" [net/ipv6/ila/ila.ko] undefined!
    ERROR: "dst_cache_get" [net/ipv6/ila/ila.ko] undefined!
    ERROR: "dst_cache_init" [net/ipv6/ila/ila.ko] undefined!
    ERROR: "dst_cache_destroy" [net/ipv6/ila/ila.ko] undefined!
    
    We almost never run into this by accident because randconfig builds
    end up selecting DST_CACHE from some other tunnel protocol, and this
    one appears to be the only one missing the explicit 'select'.
    
    >From all I can tell, this problem first appeared in linux-4.9
    when dst_cache support got added to ILA.
    
    Fixes: 79ff2fc31e0f ("ila: Cache a route to translated address")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 684f3623927f9d163991c1e99c8909efee536018
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jul 17 17:12:39 2018 +0100

    ipv6: fix useless rol32 call on hash
    
    [ Upstream commit 169dc027fb02492ea37a0575db6a658cf922b854 ]
    
    The rol32 call is currently rotating hash but the rol'd value is
    being discarded. I believe the current code is incorrect and hash
    should be assigned the rotated value returned from rol32.
    
    Thanks to David Lebrun for spotting this.
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e895f9786d98d49b012d91dae4ef0084825e31d
Author: Tyler Hicks <tyhicks@canonical.com>
Date:   Thu Jul 5 18:49:23 2018 +0000

    ipv4: Return EINVAL when ping_group_range sysctl doesn't map to user ns
    
    [ Upstream commit 70ba5b6db96ff7324b8cfc87e0d0383cf59c9677 ]
    
    The low and high values of the net.ipv4.ping_group_range sysctl were
    being silently forced to the default disabled state when a write to the
    sysctl contained GIDs that didn't map to the associated user namespace.
    Confusingly, the sysctl's write operation would return success and then
    a subsequent read of the sysctl would indicate that the low and high
    values are the overflowgid.
    
    This patch changes the behavior by clearly returning an error when the
    sysctl write operation receives a GID range that doesn't map to the
    associated user namespace. In such a situation, the previous value of
    the sysctl is preserved and that range will be returned in a subsequent
    read of the sysctl.
    
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e84740b043907afeb0b35980b47d8585d44a4bf
Author: Toke Høiland-Jørgensen <toke@toke.dk>
Date:   Mon Jul 2 22:52:20 2018 +0200

    gen_stats: Fix netlink stats dumping in the presence of padding
    
    [ Upstream commit d5a672ac9f48f81b20b1cad1d9ed7bbf4e418d4c ]
    
    The gen_stats facility will add a header for the toplevel nlattr of type
    TCA_STATS2 that contains all stats added by qdisc callbacks. A reference
    to this header is stored in the gnet_dump struct, and when all the
    per-qdisc callbacks have finished adding their stats, the length of the
    containing header will be adjusted to the right value.
    
    However, on architectures that need padding (i.e., that don't set
    CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS), the padding nlattr is added
    before the stats, which means that the stored pointer will point to the
    padding, and so when the header is fixed up, the result is just a very
    big padding nlattr. Because most qdiscs also supply the legacy TCA_STATS
    struct, this problem has been mostly invisible, but we exposed it with
    the netlink attribute-based statistics in CAKE.
    
    Fix the issue by fixing up the stored pointer if it points to a padding
    nlattr.
    
    Tested-by: Pete Heist <pete@heistp.net>
    Tested-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
    Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44c7b7c90d1dabb975bbf9780016e6fca192a973
Author: Lyude Paul <lyude@redhat.com>
Date:   Fri Jul 13 13:06:33 2018 -0400

    drm/nouveau: Avoid looping through fake MST connectors
    
    commit 37afe55b4ae0600deafe7c0e0e658593c4754f1b upstream.
    
    When MST and atomic were introduced to nouveau, another structure that
    could contain a drm_connector embedded within it was introduced; struct
    nv50_mstc. This meant that we no longer would be able to simply loop
    through our connector list and assume that nouveau_connector() would
    return a proper pointer for each connector, since the assertion that
    all connectors coming from nouveau have a full nouveau_connector struct
    became invalid.
    
    Unfortunately, none of the actual code that looped through connectors
    ever got updated, which means that we've been causing invalid memory
    accesses for quite a while now.
    
    An example that was caught by KASAN:
    
    [  201.038698] ==================================================================
    [  201.038792] BUG: KASAN: slab-out-of-bounds in nvif_notify_get+0x190/0x1a0 [nouveau]
    [  201.038797] Read of size 4 at addr ffff88076738c650 by task kworker/0:3/718
    [  201.038800]
    [  201.038822] CPU: 0 PID: 718 Comm: kworker/0:3 Tainted: G           O      4.18.0-rc4Lyude-Test+ #1
    [  201.038825] Hardware name: LENOVO 20EQS64N0B/20EQS64N0B, BIOS N1EET78W (1.51 ) 05/18/2018
    [  201.038882] Workqueue: events nouveau_display_hpd_work [nouveau]
    [  201.038887] Call Trace:
    [  201.038894]  dump_stack+0xa4/0xfd
    [  201.038900]  print_address_description+0x71/0x239
    [  201.038929]  ? nvif_notify_get+0x190/0x1a0 [nouveau]
    [  201.038935]  kasan_report.cold.6+0x242/0x2fe
    [  201.038942]  __asan_report_load4_noabort+0x19/0x20
    [  201.038970]  nvif_notify_get+0x190/0x1a0 [nouveau]
    [  201.038998]  ? nvif_notify_put+0x1f0/0x1f0 [nouveau]
    [  201.039003]  ? kmsg_dump_rewind_nolock+0xe4/0xe4
    [  201.039049]  nouveau_display_init.cold.12+0x34/0x39 [nouveau]
    [  201.039089]  ? nouveau_user_framebuffer_create+0x120/0x120 [nouveau]
    [  201.039133]  nouveau_display_resume+0x5c0/0x810 [nouveau]
    [  201.039173]  ? nvkm_client_ioctl+0x20/0x20 [nouveau]
    [  201.039215]  nouveau_do_resume+0x19f/0x570 [nouveau]
    [  201.039256]  nouveau_pmops_runtime_resume+0xd8/0x2a0 [nouveau]
    [  201.039264]  pci_pm_runtime_resume+0x130/0x250
    [  201.039269]  ? pci_restore_standard_config+0x70/0x70
    [  201.039275]  __rpm_callback+0x1f2/0x5d0
    [  201.039279]  ? rpm_resume+0x560/0x18a0
    [  201.039283]  ? pci_restore_standard_config+0x70/0x70
    [  201.039287]  ? pci_restore_standard_config+0x70/0x70
    [  201.039291]  ? pci_restore_standard_config+0x70/0x70
    [  201.039296]  rpm_callback+0x175/0x210
    [  201.039300]  ? pci_restore_standard_config+0x70/0x70
    [  201.039305]  rpm_resume+0xcc3/0x18a0
    [  201.039312]  ? rpm_callback+0x210/0x210
    [  201.039317]  ? __pm_runtime_resume+0x9e/0x100
    [  201.039322]  ? kasan_check_write+0x14/0x20
    [  201.039326]  ? do_raw_spin_lock+0xc2/0x1c0
    [  201.039333]  __pm_runtime_resume+0xac/0x100
    [  201.039374]  nouveau_display_hpd_work+0x67/0x1f0 [nouveau]
    [  201.039380]  process_one_work+0x7a0/0x14d0
    [  201.039388]  ? cancel_delayed_work_sync+0x20/0x20
    [  201.039392]  ? lock_acquire+0x113/0x310
    [  201.039398]  ? kasan_check_write+0x14/0x20
    [  201.039402]  ? do_raw_spin_lock+0xc2/0x1c0
    [  201.039409]  worker_thread+0x86/0xb50
    [  201.039418]  kthread+0x2e9/0x3a0
    [  201.039422]  ? process_one_work+0x14d0/0x14d0
    [  201.039426]  ? kthread_create_worker_on_cpu+0xc0/0xc0
    [  201.039431]  ret_from_fork+0x3a/0x50
    [  201.039441]
    [  201.039444] Allocated by task 79:
    [  201.039449]  save_stack+0x43/0xd0
    [  201.039452]  kasan_kmalloc+0xc4/0xe0
    [  201.039456]  kmem_cache_alloc_trace+0x10a/0x260
    [  201.039494]  nv50_mstm_add_connector+0x9a/0x340 [nouveau]
    [  201.039504]  drm_dp_add_port+0xff5/0x1fc0 [drm_kms_helper]
    [  201.039511]  drm_dp_send_link_address+0x4a7/0x740 [drm_kms_helper]
    [  201.039518]  drm_dp_check_and_send_link_address+0x1a7/0x210 [drm_kms_helper]
    [  201.039525]  drm_dp_mst_link_probe_work+0x71/0xb0 [drm_kms_helper]
    [  201.039529]  process_one_work+0x7a0/0x14d0
    [  201.039533]  worker_thread+0x86/0xb50
    [  201.039537]  kthread+0x2e9/0x3a0
    [  201.039541]  ret_from_fork+0x3a/0x50
    [  201.039543]
    [  201.039546] Freed by task 0:
    [  201.039549] (stack is not available)
    [  201.039551]
    [  201.039555] The buggy address belongs to the object at ffff88076738c1a8
                                     which belongs to the cache kmalloc-2048 of size 2048
    [  201.039559] The buggy address is located 1192 bytes inside of
                                     2048-byte region [ffff88076738c1a8, ffff88076738c9a8)
    [  201.039563] The buggy address belongs to the page:
    [  201.039567] page:ffffea001d9ce200 count:1 mapcount:0 mapping:ffff88084000d0c0 index:0x0 compound_mapcount: 0
    [  201.039573] flags: 0x8000000000008100(slab|head)
    [  201.039578] raw: 8000000000008100 ffffea001da3be08 ffffea001da25a08 ffff88084000d0c0
    [  201.039582] raw: 0000000000000000 00000000000d000d 00000001ffffffff 0000000000000000
    [  201.039585] page dumped because: kasan: bad access detected
    [  201.039588]
    [  201.039591] Memory state around the buggy address:
    [  201.039594]  ffff88076738c500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  201.039598]  ffff88076738c580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  201.039601] >ffff88076738c600: 00 00 00 00 00 00 00 00 00 00 fc fc fc fc fc fc
    [  201.039604]                                                  ^
    [  201.039607]  ffff88076738c680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  201.039611]  ffff88076738c700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  201.039613] ==================================================================
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Cc: Karol Herbst <karolherbst@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c89b8c6f8dd304feb29e4f6f17efa50951f87971
Author: Lyude Paul <lyude@redhat.com>
Date:   Fri Jul 13 13:06:32 2018 -0400

    drm/nouveau: Use drm_connector_list_iter_* for iterating connectors
    
    commit 22b76bbe089cd901f5260ecb9a3dc41f9edb97a0 upstream.
    
    Every codepath in nouveau that loops through the connector list
    currently does so using the old method, which is prone to race
    conditions from MST connectors being created and destroyed. This has
    been causing a multitude of problems, including memory corruption from
    trying to access connectors that have already been freed!
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Cc: Karol Herbst <karolherbst@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99701888bc061bc3b8a7c73f9911bc2c654776c9
Author: Lyude Paul <lyude@redhat.com>
Date:   Thu Jul 12 13:02:54 2018 -0400

    drm/nouveau: Remove bogus crtc check in pmops_runtime_idle
    
    commit 68fe23a626b67b56c912c496ea43ed537ea9708f upstream.
    
    This both uses the legacy modesetting structures in a racy manner, and
    additionally also doesn't even check the right variable (enabled != the
    CRTC is actually turned on for atomic).
    
    This fixes issues on my P50 regarding the dedicated GPU not entering
    runtime suspend.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9168c089a2122606e2c01f6fbeda85ff950ac189
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Jul 10 12:56:45 2018 -0500

    Revert "drm/amd/display: Don't return ddc result and read_bytes in same return value"
    
    commit 5292221d6ddfed75e5b46cd42237a677094b99f3 upstream.
    
    This reverts commit 018d82e5f02ef3583411bcaa4e00c69786f46f19.
    
    This breaks DDC in certain cases.  Revert for 4.18 and previous kernels.
    For 4.19, this is fixed with the following more extensive patches:
    drm/amd/display: Serialize is_dp_sink_present
    drm/amd/display: Break out function to simply read aux reply
    drm/amd/display: Return aux replies directly to DRM
    drm/amd/display: Right shift AUX reply value sooner than later
    drm/amd/display: Read AUX channel even if only status byte is returned
    
    Link: https://lists.freedesktop.org/archives/amd-gfx/2018-July/023788.html
    Acked-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81dd92f5fab991d7578bb9c5b7476432c858c11f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Jun 14 20:56:25 2018 +0300

    drm/i915: Fix hotplug irq ack on i965/g4x
    
    commit 96a85cc517a9ee4ae5e8d7f5a36cba05023784eb upstream.
    
    Just like with PIPESTAT, the edge triggered IIR on i965/g4x
    also causes problems for hotplug interrupts. To make sure
    we don't get the IIR port interrupt bit stuck low with the
    ISR bit high we must force an edge in ISR. Unfortunately
    we can't borrow the PIPESTAT trick and toggle the enable
    bits in PORT_HOTPLUG_EN as that act itself generates hotplug
    interrupts. Instead we just have to loop until we've cleared
    PORT_HOTPLUG_STAT, or we just give up and WARN.
    
    v2: Don't frob with PORT_HOTPLUG_EN
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180614175625.1615-1-ville.syrjala@linux.intel.com
    Reviewed-by: Imre Deak <imre.deak@intel.com>
    (cherry picked from commit 0ba7c51a6fd80a89236f6ceb52e63f8a7f62bfd3)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e11afb7badb8bb3747128f09bf3ff68d1a20f630
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Mon Jun 25 11:07:17 2018 +0200

    drm/amdgpu: Reserve VM root shared fence slot for command submission (v3)
    
    commit ed6b4b5559769c6c5a0fcb3fac8a9e1f4e58c4ae upstream.
    
    Without this, there could not be enough slots, which could trigger the
    BUG_ON in reservation_object_add_shared_fence.
    
    v2:
    * Jump to the error label instead of returning directly (Jerry Zhang)
    v3:
    * Reserve slots for command submission after VM updates (Christian König)
    
    Cc: stable@vger.kernel.org
    Bugzilla: https://bugs.freedesktop.org/106418
    Reported-by: mikhail.v.gavrilov@gmail.com
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbe7420980c73d0fc61d6412ddf3b6ebf8490fd7
Author: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Date:   Wed Jul 18 14:03:16 2018 +0530

    powerpc/powernv: Fix save/restore of SPRG3 on entry/exit from stop (idle)
    
    commit b03897cf318dfc47de33a7ecbc7655584266f034 upstream.
    
    On 64-bit servers, SPRN_SPRG3 and its userspace read-only mirror
    SPRN_USPRG3 are used as userspace VDSO write and read registers
    respectively.
    
    SPRN_SPRG3 is lost when we enter stop4 and above, and is currently not
    restored.  As a result, any read from SPRN_USPRG3 returns zero on an
    exit from stop4 (Power9 only) and above.
    
    Thus in this situation, on POWER9, any call from sched_getcpu() always
    returns zero, as on powerpc, we call __kernel_getcpu() which relies
    upon SPRN_USPRG3 to report the CPU and NUMA node information.
    
    Fix this by restoring SPRN_SPRG3 on wake up from a deep stop state
    with the sprg_vdso value that is cached in PACA.
    
    Fixes: e1c1cfed5432 ("powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle")
    Cc: stable@vger.kernel.org # v4.14+
    Reported-by: Florian Weimer <fweimer@redhat.com>
    Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Reviewed-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d847e18bc8c8034d1749303edda66f9788e8776
Author: Isaac J. Manjarres <isaacm@codeaurora.org>
Date:   Tue Jul 3 15:02:14 2018 -0700

    stop_machine: Disable preemption when waking two stopper threads
    
    commit 9fb8d5dc4b649dd190e1af4ead670753e71bf907 upstream.
    
    When cpu_stop_queue_two_works() begins to wake the stopper threads, it does
    so without preemption disabled, which leads to the following race
    condition:
    
    The source CPU calls cpu_stop_queue_two_works(), with cpu1 as the source
    CPU, and cpu2 as the destination CPU. When adding the stopper threads to
    the wake queue used in this function, the source CPU stopper thread is
    added first, and the destination CPU stopper thread is added last.
    
    When wake_up_q() is invoked to wake the stopper threads, the threads are
    woken up in the order that they are queued in, so the source CPU's stopper
    thread is woken up first, and it preempts the thread running on the source
    CPU.
    
    The stopper thread will then execute on the source CPU, disable preemption,
    and begin executing multi_cpu_stop(), and wait for an ack from the
    destination CPU's stopper thread, with preemption still disabled. Since the
    worker thread that woke up the stopper thread on the source CPU is affine
    to the source CPU, and preemption is disabled on the source CPU, that
    thread will never run to dequeue the destination CPU's stopper thread from
    the wake queue, and thus, the destination CPU's stopper thread will never
    run, causing the source CPU's stopper thread to wait forever, and stall.
    
    Disable preemption when waking the stopper threads in
    cpu_stop_queue_two_works().
    
    Fixes: 0b26351b910f ("stop_machine, sched: Fix migrate_swap() vs. active_balance() deadlock")
    Co-Developed-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Co-Developed-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
    Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
    Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Cc: matt@codeblueprint.co.uk
    Cc: bigeasy@linutronix.de
    Cc: gregkh@linuxfoundation.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1530655334-4601-1-git-send-email-isaacm@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a40ad277cfd0586ffe09c6025cbcbedf4019c99
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Tue Jul 17 17:19:12 2018 +1000

    vfio/spapr: Use IOMMU pageshift rather than pagesize
    
    commit 1463edca6734d42ab4406fa2896e20b45478ea36 upstream.
    
    The size is always equal to 1 page so let's use this. Later on this will
    be used for other checks which use page shifts to check the granularity
    of access.
    
    This should cause no behavioral change.
    
    Cc: stable@vger.kernel.org # v4.12+
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Acked-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4218d03f3505c0082c5f15f8ff914fa0c784dc92
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jul 17 12:39:00 2018 -0500

    vfio/pci: Fix potential Spectre v1
    
    commit 0e714d27786ce1fb3efa9aac58abc096e68b1c2a upstream.
    
    info.index can be indirectly controlled by user-space, hence leading
    to a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/vfio/pci/vfio_pci.c:734 vfio_pci_ioctl()
    warn: potential spectre issue 'vdev->region'
    
    Fix this by sanitizing info.index before indirectly using it to index
    vdev->region
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02a0f9adbf42604f3a0ed0ac7a63230354ad0b54
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Jul 18 13:38:37 2018 +0200

    cpufreq: intel_pstate: Register when ACPI PCCH is present
    
    commit 95d6c0857e54b788982746071130d822a795026b upstream.
    
    Currently, intel_pstate doesn't register if _PSS is not present on
    HP Proliant systems, because it expects the firmware to take over
    CPU performance scaling in that case.  However, if ACPI PCCH is
    present, the firmware expects the kernel to use it for CPU
    performance scaling and the pcc-cpufreq driver is loaded for that.
    
    Unfortunately, the firmware interface used by that driver is not
    scalable for fundamental reasons, so pcc-cpufreq is way suboptimal
    on systems with more than just a few CPUs.  In fact, it is better to
    avoid using it at all.
    
    For this reason, modify intel_pstate to look for ACPI PCCH if _PSS
    is not present and register if it is there.  Also prevent the
    pcc-cpufreq driver from trying to initialize itself if intel_pstate
    has been registered already.
    
    Fixes: fbbcdc0744da (intel_pstate: skip the driver if ACPI has power mgmt option)
    Reported-by: Andreas Herrmann <aherrmann@suse.com>
    Reviewed-by: Andreas Herrmann <aherrmann@suse.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Tested-by: Andreas Herrmann <aherrmann@suse.com>
    Cc: 4.16+ <stable@vger.kernel.org> # 4.16+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2defc1c00db7849ea1a7433c15e61d3409585478
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Jul 20 17:53:45 2018 -0700

    mm/huge_memory.c: fix data loss when splitting a file pmd
    
    commit e1f1b1572e8db87a56609fd05bef76f98f0e456a upstream.
    
    __split_huge_pmd_locked() must check if the cleared huge pmd was dirty,
    and propagate that to PageDirty: otherwise, data may be lost when a huge
    tmpfs page is modified then split then reclaimed.
    
    How has this taken so long to be noticed?  Because there was no problem
    when the huge page is written by a write system call (shmem_write_end()
    calls set_page_dirty()), nor when the page is allocated for a write fault
    (fault_dirty_shared_page() calls set_page_dirty()); but when allocated for
    a read fault (which MAP_POPULATE simulates), no set_page_dirty().
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1807111741430.1106@eggly.anvils
    Fixes: d21b9e57c74c ("thp: handle file pages in split_huge_pmd()")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reported-by: Ashwin Chaugule <ashwinch@google.com>
    Reviewed-by: Yang Shi <yang.shi@linux.alibaba.com>
    Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: <stable@vger.kernel.org>    [4.8+]
    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 214a9fcd055480c661d316199db72530faa82a1e
Author: Jing Xia <jing.xia.mail@gmail.com>
Date:   Fri Jul 20 17:53:48 2018 -0700

    mm: memcg: fix use after free in mem_cgroup_iter()
    
    commit 9f15bde671355c351cf20d9f879004b234353100 upstream.
    
    It was reported that a kernel crash happened in mem_cgroup_iter(), which
    can be triggered if the legacy cgroup-v1 non-hierarchical mode is used.
    
    Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b8f
    ......
    Call trace:
      mem_cgroup_iter+0x2e0/0x6d4
      shrink_zone+0x8c/0x324
      balance_pgdat+0x450/0x640
      kswapd+0x130/0x4b8
      kthread+0xe8/0xfc
      ret_from_fork+0x10/0x20
    
      mem_cgroup_iter():
          ......
          if (css_tryget(css))    <-- crash here
                break;
          ......
    
    The crashing reason is that mem_cgroup_iter() uses the memcg object whose
    pointer is stored in iter->position, which has been freed before and
    filled with POISON_FREE(0x6b).
    
    And the root cause of the use-after-free issue is that
    invalidate_reclaim_iterators() fails to reset the value of iter->position
    to NULL when the css of the memcg is released in non- hierarchical mode.
    
    Link: http://lkml.kernel.org/r/1531994807-25639-1-git-send-email-jing.xia@unisoc.com
    Fixes: 6df38689e0e9 ("mm: memcontrol: fix possible memcg leak due to interrupted reclaim")
    Signed-off-by: Jing Xia <jing.xia.mail@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: <chunyan.zhang@unisoc.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: <stable@vger.kernel.org>
    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 47a8d7bb8c35a156fa6df7df98c4cac45505822e
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Wed Jul 11 10:42:20 2018 -0700

    ARC: mm: allow mprotect to make stack mappings executable
    
    commit 93312b6da4df31e4102ce5420e6217135a16c7ea upstream.
    
    mprotect(EXEC) was failing for stack mappings as default vm flags was
    missing MAYEXEC.
    
    This was triggered by glibc test suite nptl/tst-execstack testcase
    
    What is surprising is that despite running LTP for years on, we didn't
    catch this issue as it lacks a directed test case.
    
    gcc dejagnu tests with nested functions also requiring exec stack work
    fine though because they rely on the GNU_STACK segment spit out by
    compiler and handled in kernel elf loader.
    
    This glibc case is different as the stack is non exec to begin with and
    a dlopen of shared lib with GNU_STACK segment triggers the exec stack
    proceedings using a mprotect(PROT_EXEC) which was broken.
    
    CC: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d94c1605ec79994faa8cc75183bb98259cacdd85
Author: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Date:   Wed Jun 6 15:59:38 2018 +0300

    ARC: configs: Remove CONFIG_INITRAMFS_SOURCE from defconfigs
    
    commit 64234961c145606b36eaa82c47b11be842b21049 upstream.
    
    We used to have pre-set CONFIG_INITRAMFS_SOURCE with local path
    to intramfs in ARC defconfigs. This was quite convenient for
    in-house development but not that convenient for newcomers
    who obviusly don't have folders like "arc_initramfs" next to
    the Linux source tree. Which leads to quite surprising failure
    of defconfig building:
    ------------------------------->8-----------------------------
      ../scripts/gen_initramfs_list.sh: Cannot open '../../arc_initramfs_hs/'
    ../usr/Makefile:57: recipe for target 'usr/initramfs_data.cpio.gz' failed
    make[2]: *** [usr/initramfs_data.cpio.gz] Error 1
    ------------------------------->8-----------------------------
    
    So now when more and more people start to deal with our defconfigs
    let's make their life easier with removal of CONFIG_INITRAMFS_SOURCE.
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Kevin Hilman <khilman@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c23a42e6a2d6454a439b82dc273d7a79873c0fb
Author: Alexey Brodkin <abrodkin@synopsys.com>
Date:   Thu Jun 28 16:59:14 2018 -0700

    ARC: Fix CONFIG_SWAP
    
    commit 6e3761145a9ba3ce267c330b6bff51cf6a057b06 upstream.
    
    swap was broken on ARC due to silly copy-paste issue.
    
    We encode offset from swapcache page in __swp_entry() as (off << 13) but
    were not decoding back in __swp_offset() as (off >> 13) - it was still
    (off << 13).
    
    This finally fixes swap usage on ARC.
    
    | # mkswap /dev/sda2
    |
    | # swapon -a -e /dev/sda2
    | Adding 500728k swap on /dev/sda2.  Priority:-2 extents:1 across:500728k
    |
    | # free
    |              total       used       free     shared    buffers     cached
    | Mem:        765104      13456     751648       4736          8       4736
    | -/+ buffers/cache:       8712     756392
    | Swap:       500728          0     500728
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d68ac6cba419abaae331112261388dcff0ea1fd1
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Tue Jul 17 15:21:56 2018 -0700

    ARCv2: [plat-hsdk]: Save accl reg pair by default
    
    commit af1fc5baa724c63ce1733dfcf855bad5ef6078e3 upstream.
    
    This manifsted as strace segfaulting on HSDK because gcc was targetting
    the accumulator registers as GPRs, which kernek was not saving/restoring
    by default.
    
    Cc: stable@vger.kernel.org   #4.14+
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e98863e74502b6c0656d79f16ec04e9042866659
Author: Po-Hsu Lin <po-hsu.lin@canonical.com>
Date:   Mon Jul 16 15:50:08 2018 +0800

    ALSA: hda: add mute led support for HP ProBook 455 G5
    
    commit 9a6249d2a145226ec1b294116fcb08744cf7ab56 upstream.
    
    Audio mute led does not work on HP ProBook 455 G5,
    this can be fixed by using CXT_FIXUP_MUTE_LED_GPIO to support it.
    
    BugLink: https://bugs.launchpad.net/bugs/1781763
    Reported-by: James Buren
    Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cae4b483f2761225e097f8ea87057f5611ba0a3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jul 17 17:08:32 2018 +0200

    ALSA: hda/realtek - Yet another Clevo P950 quirk entry
    
    commit f3d737b6340b0c7bacd8bc751605f0ed6203f146 upstream.
    
    The PCI SSID 1558:95e1 needs the same quirk for other Clevo P950
    models, too.  Otherwise no sound comes out of speakers.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1101143
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96b120fa8fe17b20e27056dfa4de1491ae8a42f9
Author: YOKOTA Hiroshi <yokota.hgml@gmail.com>
Date:   Sun Jul 1 18:30:01 2018 +0900

    ALSA: hda/realtek - Add Panasonic CF-SZ6 headset jack quirk
    
    commit 0fca97a29b83e3f315c14ed2372cfd0f9ee0a006 upstream.
    
    This adds some required quirk when uses headset or headphone on
    Panasonic CF-SZ6.
    
    Signed-off-by: YOKOTA Hiroshi <yokota.hgml@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5f3789f192981a482856a69bd2ef38088f0e635
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jul 17 17:26:43 2018 +0200

    ALSA: rawmidi: Change resized buffers atomically
    
    commit 39675f7a7c7e7702f7d5341f1e0d01db746543a0 upstream.
    
    The SNDRV_RAWMIDI_IOCTL_PARAMS ioctl may resize the buffers and the
    current code is racy.  For example, the sequencer client may write to
    buffer while it being resized.
    
    As a simple workaround, let's switch to the resized buffer inside the
    stream runtime lock.
    
    Reported-by: syzbot+52f83f0ea8df16932f7f@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44bbcf08aba01e6f14578f3f9e4a29fb60c8be6c
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Fri Jul 20 17:53:42 2018 -0700

    fat: fix memory allocation failure handling of match_strdup()
    
    commit 35033ab988c396ad7bce3b6d24060c16a9066db8 upstream.
    
    In parse_options(), if match_strdup() failed, parse_options() leaves
    opts->iocharset in unexpected state (i.e.  still pointing the freed
    string).  And this can be the cause of double free.
    
    To fix, this initialize opts->iocharset always when freeing.
    
    Link: http://lkml.kernel.org/r/8736wp9dzc.fsf@mail.parknet.co.jp
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Reported-by: syzbot+90b8e10515ae88228a92@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    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 cf42670fe67fab8b329c7ceb21c3f28f84840acc
Author: Dewet Thibaut <thibaut.dewet@nokia.com>
Date:   Mon Jul 16 10:49:27 2018 +0200

    x86/MCE: Remove min interval polling limitation
    
    commit fbdb328c6bae0a7c78d75734a738b66b86dffc96 upstream.
    
    commit b3b7c4795c ("x86/MCE: Serialize sysfs changes") introduced a min
    interval limitation when setting the check interval for polled MCEs.
    However, the logic is that 0 disables polling for corrected MCEs, see
    Documentation/x86/x86_64/machinecheck. The limitation prevents disabling.
    
    Remove this limitation and allow the value 0 to disable polling again.
    
    Fixes: b3b7c4795c ("x86/MCE: Serialize sysfs changes")
    Signed-off-by: Dewet Thibaut <thibaut.dewet@nokia.com>
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    [ Massage commit message. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180716084927.24869-1-alexander.sverdlin@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16b2d5ad46f7f905ee26ef107e5ac82e2cb6064f
Author: Hugh Dickins <hughd@google.com>
Date:   Sat Jul 14 12:58:07 2018 -0700

    x86/events/intel/ds: Fix bts_interrupt_threshold alignment
    
    commit 2c991e408df6a407476dbc453d725e1e975479e7 upstream.
    
    Markus reported that BTS is sporadically missing the tail of the trace
    in the perf_event data buffer: [decode error (1): instruction overflow]
    shown in GDB; and bisected it to the conversion of debug_store to PTI.
    
    A little "optimization" crept into alloc_bts_buffer(), which mistakenly
    placed bts_interrupt_threshold away from the 24-byte record boundary.
    Intel SDM Vol 3B 17.4.9 says "This address must point to an offset from
    the BTS buffer base that is a multiple of the BTS record size."
    
    Revert "max" from a byte count to a record count, to calculate the
    bts_interrupt_threshold correctly: which turns out to fix problem seen.
    
    Fixes: c1961a4631da ("x86/events/intel/ds: Map debug buffers in cpu_entry_area")
    Reported-and-tested-by: Markus T Metzger <markus.t.metzger@intel.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@intel.com>
    Cc: Andi Kleen <andi.kleen@intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: stable@vger.kernel.org # v4.14+
    Link: https://lkml.kernel.org/r/alpine.LSU.2.11.1807141248290.1614@eggly.anvils
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 822e65c0beea0a974b54cd04c292c4cbcb1f28f6
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jul 9 16:35:34 2018 +0300

    x86/apm: Don't access __preempt_count with zeroed fs
    
    commit 6f6060a5c9cc76fdbc22748264e6aa3779ec2427 upstream.
    
    APM_DO_POP_SEGS does not restore fs/gs which were zeroed by
    APM_DO_ZERO_SEGS. Trying to access __preempt_count with
    zeroed fs doesn't really work.
    
    Move the ibrs call outside the APM_DO_SAVE_SEGS/APM_DO_RESTORE_SEGS
    invocations so that fs is actually restored before calling
    preempt_enable().
    
    Fixes the following sort of oopses:
    [    0.313581] general protection fault: 0000 [#1] PREEMPT SMP
    [    0.313803] Modules linked in:
    [    0.314040] CPU: 0 PID: 268 Comm: kapmd Not tainted 4.16.0-rc1-triton-bisect-00090-gdd84441a7971 #19
    [    0.316161] EIP: __apm_bios_call_simple+0xc8/0x170
    [    0.316161] EFLAGS: 00210016 CPU: 0
    [    0.316161] EAX: 00000102 EBX: 00000000 ECX: 00000102 EDX: 00000000
    [    0.316161] ESI: 0000530e EDI: dea95f64 EBP: dea95f18 ESP: dea95ef0
    [    0.316161]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
    [    0.316161] CR0: 80050033 CR2: 00000000 CR3: 015d3000 CR4: 000006d0
    [    0.316161] Call Trace:
    [    0.316161]  ? cpumask_weight.constprop.15+0x20/0x20
    [    0.316161]  on_cpu0+0x44/0x70
    [    0.316161]  apm+0x54e/0x720
    [    0.316161]  ? __switch_to_asm+0x26/0x40
    [    0.316161]  ? __schedule+0x17d/0x590
    [    0.316161]  kthread+0xc0/0xf0
    [    0.316161]  ? proc_apm_show+0x150/0x150
    [    0.316161]  ? kthread_create_worker_on_cpu+0x20/0x20
    [    0.316161]  ret_from_fork+0x2e/0x38
    [    0.316161] Code: da 8e c2 8e e2 8e ea 57 55 2e ff 1d e0 bb 5d b1 0f 92 c3 5d 5f 07 1f 89 47 0c 90 8d b4 26 00 00 00 00 90 8d b4 26 00 00 00 00 90 <64> ff 0d 84 16 5c b1 74 7f 8b 45 dc 8e e0 8b 45 d8 8e e8 8b 45
    [    0.316161] EIP: __apm_bios_call_simple+0xc8/0x170 SS:ESP: 0068:dea95ef0
    [    0.316161] ---[ end trace 656253db2deaa12c ]---
    
    Fixes: dd84441a7971 ("x86/speculation: Use IBRS if available before calling into firmware")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Cc:  David Woodhouse <dwmw@amazon.co.uk>
    Cc:  "H. Peter Anvin" <hpa@zytor.com>
    Cc:  x86@kernel.org
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Link: https://lkml.kernel.org/r/20180709133534.5963-1-ville.syrjala@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d606a69d987d936ff21ab80be113549df804523
Author: Radim Krčmář <rkrcmar@redhat.com>
Date:   Sun Jul 15 17:43:11 2018 +0200

    x86/kvmclock: set pvti_cpu0_va after enabling kvmclock
    
    commit 94ffba484663ab3fc695ce2a34871e8c3db499f7 upstream.
    
    pvti_cpu0_va is the address of shared kvmclock data structure.
    
    pvti_cpu0_va is currently kept unset (1) on 32 bit systems, (2) when
    kvmclock vsyscall is disabled, and (3) if kvmclock is not stable.
    This poses a problem, because kvm_ptp needs pvti_cpu0_va, but (1) can
    work on 32 bit, (2) has little relation to the vsyscall, and (3) does
    not need stable kvmclock (although kvmclock won't be used for system
    clock if it's not stable, so kvm_ptp is pointless in that case).
    
    Expose pvti_cpu0_va whenever kvmclock is enabled to allow all users to
    work with it.
    
    This fixes a regression found on Gentoo: https://bugs.gentoo.org/658544.
    
    Fixes: 9f08890ab906 ("x86/pvclock: add setter for pvclock_pvti_cpu0_va")
    Cc: stable@vger.kernel.org
    Reported-by: Andreas Steinmetz <ast@domdv.de>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bb53f0cf0308e1b7143adcd6390635bfe992c2d
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Jul 11 19:37:18 2018 +0200

    x86/kvm/vmx: don't read current->thread.{fs,gs}base of legacy tasks
    
    commit b062b794c7831a70bda4dfac202c1a9418e06ac0 upstream.
    
    When we switched from doing rdmsr() to reading FS/GS base values from
    current->thread we completely forgot about legacy 32-bit userspaces which
    we still support in KVM (why?). task->thread.{fsbase,gsbase} are only
    synced for 64-bit processes, calling save_fsgs_for_kvm() and using
    its result from current is illegal for legacy processes.
    
    There's no ARCH_SET_FS/GS prctls for legacy applications. Base MSRs are,
    however, not always equal to zero. Intel's manual says (3.4.4 Segment
    Loading Instructions in IA-32e Mode):
    
    "In order to set up compatibility mode for an application, segment-load
    instructions (MOV to Sreg, POP Sreg) work normally in 64-bit mode. An
    entry is read from the system descriptor table (GDT or LDT) and is loaded
    in the hidden portion of the segment register.
    ...
    The hidden descriptor register fields for FS.base and GS.base are
    physically mapped to MSRs in order to load all address bits supported by
    a 64-bit implementation.
    "
    
    The issue was found by strace test suite where 32-bit ioctl_kvm_run test
    started segfaulting.
    
    Reported-by: Dmitry V. Levin <ldv@altlinux.org>
    Bisected-by: Masatake YAMATO <yamato@redhat.com>
    Fixes: 42b933b59721 ("x86/kvm/vmx: read MSR_{FS,KERNEL_GS}_BASE from current->thread")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 088827be904a0418188251d962dbd6922eb8c01d
Author: Liran Alon <liran.alon@oracle.com>
Date:   Fri Jun 29 22:59:04 2018 +0300

    KVM: VMX: Mark VMXArea with revision_id of physical CPU even when eVMCS enabled
    
    commit 2307af1c4b2e0ad886f30e31739845322cbd328b upstream.
    
    When eVMCS is enabled, all VMCS allocated to be used by KVM are marked
    with revision_id of KVM_EVMCS_VERSION instead of revision_id reported
    by MSR_IA32_VMX_BASIC.
    
    However, even though not explictly documented by TLFS, VMXArea passed
    as VMXON argument should still be marked with revision_id reported by
    physical CPU.
    
    This issue was found by the following setup:
    * L0 = KVM which expose eVMCS to it's L1 guest.
    * L1 = KVM which consume eVMCS reported by L0.
    This setup caused the following to occur:
    1) L1 execute hardware_enable().
    2) hardware_enable() calls kvm_cpu_vmxon() to execute VMXON.
    3) L0 intercept L1 VMXON and execute handle_vmon() which notes
    vmxarea->revision_id != VMCS12_REVISION and therefore fails with
    nested_vmx_failInvalid() which sets RFLAGS.CF.
    4) L1 kvm_cpu_vmxon() don't check RFLAGS.CF for failure and therefore
    hardware_enable() continues as usual.
    5) L1 hardware_enable() then calls ept_sync_global() which executes
    INVEPT.
    6) L0 intercept INVEPT and execute handle_invept() which notes
    !vmx->nested.vmxon and thus raise a #UD to L1.
    7) Raised #UD caused L1 to panic.
    
    Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
    Cc: stable@vger.kernel.org
    Fixes: 773e8a0425c923bc02668a2d6534a5ef5a43cc69
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36ea7aed04cc6740d3200d70e6f0af555a212f11
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Mon May 28 13:31:13 2018 +0200

    KVM: irqfd: fix race between EPOLLHUP and irq_bypass_register_consumer
    
    commit 9432a3175770e06cb83eada2d91fac90c977cb99 upstream.
    
    A comment warning against this bug is there, but the code is not doing what
    the comment says.  Therefore it is possible that an EPOLLHUP races against
    irq_bypass_register_consumer.  The EPOLLHUP handler schedules irqfd_shutdown,
    and if that runs soon enough, you get a use-after-free.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e884c939420fd4b37edc4d47ac214540eb9cc60
Author: Lan Tianyu <tianyu.lan@intel.com>
Date:   Thu Dec 21 21:10:36 2017 -0500

    KVM/Eventfd: Avoid crash when assign and deassign specific eventfd in parallel.
    
    commit b5020a8e6b54d2ece80b1e7dedb33c79a40ebd47 upstream.
    
    Syzbot reports crashes in kvm_irqfd_assign(), caused by use-after-free
    when kvm_irqfd_assign() and kvm_irqfd_deassign() run in parallel
    for one specific eventfd. When the assign path hasn't finished but irqfd
    has been added to kvm->irqfds.items list, another thead may deassign the
    eventfd and free struct kvm_kernel_irqfd(). The assign path then uses
    the struct kvm_kernel_irqfd that has been freed by deassign path. To avoid
    such issue, keep irqfd under kvm->irq_srcu protection after the irqfd
    has been added to kvm->irqfds.items list, and call synchronize_srcu()
    in irq_shutdown() to make sure that irqfd has been fully initialized in
    the assign path.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Tianyu Lan <tianyu.lan@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db1f278abb2461844469ee01d60404e51901713b
Author: Chuck Anderson <chuck.anderson@oracle.com>
Date:   Mon Jul 2 13:02:00 2018 -0700

    scsi: qla2xxx: Fix NULL pointer dereference for fcport search
    
    commit 36eb8ff672faee83ccce60c191f0fef07c6adce6 upstream.
    
    Crash dump shows following instructions
    
    crash> bt
    PID: 0      TASK: ffffffffbe412480  CPU: 0   COMMAND: "swapper/0"
     #0 [ffff891ee0003868] machine_kexec at ffffffffbd063ef1
     #1 [ffff891ee00038c8] __crash_kexec at ffffffffbd12b6f2
     #2 [ffff891ee0003998] crash_kexec at ffffffffbd12c84c
     #3 [ffff891ee00039b8] oops_end at ffffffffbd030f0a
     #4 [ffff891ee00039e0] no_context at ffffffffbd074643
     #5 [ffff891ee0003a40] __bad_area_nosemaphore at ffffffffbd07496e
     #6 [ffff891ee0003a90] bad_area_nosemaphore at ffffffffbd074a64
     #7 [ffff891ee0003aa0] __do_page_fault at ffffffffbd074b0a
     #8 [ffff891ee0003b18] do_page_fault at ffffffffbd074fc8
     #9 [ffff891ee0003b50] page_fault at ffffffffbda01925
        [exception RIP: qlt_schedule_sess_for_deletion+15]
        RIP: ffffffffc02e526f  RSP: ffff891ee0003c08  RFLAGS: 00010046
        RAX: 0000000000000000  RBX: 0000000000000000  RCX: ffffffffc0307847
        RDX: 00000000000020e6  RSI: ffff891edbc377c8  RDI: 0000000000000000
        RBP: ffff891ee0003c18   R8: ffffffffc02f0b20   R9: 0000000000000250
        R10: 0000000000000258  R11: 000000000000b780  R12: ffff891ed9b43000
        R13: 00000000000000f0  R14: 0000000000000006  R15: ffff891edbc377c8
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
     #10 [ffff891ee0003c20] qla2x00_fcport_event_handler at ffffffffc02853d3 [qla2xxx]
     #11 [ffff891ee0003cf0] __dta_qla24xx_async_gnl_sp_done_333 at ffffffffc0285a1d [qla2xxx]
     #12 [ffff891ee0003de8] qla24xx_process_response_queue at ffffffffc02a2eb5 [qla2xxx]
     #13 [ffff891ee0003e88] qla24xx_msix_rsp_q at ffffffffc02a5403 [qla2xxx]
     #14 [ffff891ee0003ec0] __handle_irq_event_percpu at ffffffffbd0f4c59
     #15 [ffff891ee0003f10] handle_irq_event_percpu at ffffffffbd0f4e02
     #16 [ffff891ee0003f40] handle_irq_event at ffffffffbd0f4e90
     #17 [ffff891ee0003f68] handle_edge_irq at ffffffffbd0f8984
     #18 [ffff891ee0003f88] handle_irq at ffffffffbd0305d5
     #19 [ffff891ee0003fb8] do_IRQ at ffffffffbda02a18
     --- <IRQ stack> ---
     #20 [ffffffffbe403d30] ret_from_intr at ffffffffbda0094e
        [exception RIP: unknown or invalid address]
        RIP: 000000000000001f  RSP: 0000000000000000  RFLAGS: fff3b8c2091ebb3f
        RAX: ffffbba5a0000200  RBX: 0000be8cdfa8f9fa  RCX: 0000000000000018
        RDX: 0000000000000101  RSI: 000000000000015d  RDI: 0000000000000193
        RBP: 0000000000000083   R8: ffffffffbe403e38   R9: 0000000000000002
        R10: 0000000000000000  R11: ffffffffbe56b820  R12: ffff891ee001cf00
        R13: ffffffffbd11c0a4  R14: ffffffffbe403d60  R15: 0000000000000001
        ORIG_RAX: ffff891ee0022ac0  CS: 0000  SS: ffffffffffffffb9
     bt: WARNING: possibly bogus exception frame
     #21 [ffffffffbe403dd8] cpuidle_enter_state at ffffffffbd67c6fd
     #22 [ffffffffbe403e40] cpuidle_enter at ffffffffbd67c907
     #23 [ffffffffbe403e50] call_cpuidle at ffffffffbd0d98f3
     #24 [ffffffffbe403e60] do_idle at ffffffffbd0d9b42
     #25 [ffffffffbe403e98] cpu_startup_entry at ffffffffbd0d9da3
     #26 [ffffffffbe403ec0] rest_init at ffffffffbd81d4aa
     #27 [ffffffffbe403ed0] start_kernel at ffffffffbe67d2ca
     #28 [ffffffffbe403f28] x86_64_start_reservations at ffffffffbe67c675
     #29 [ffffffffbe403f38] x86_64_start_kernel at ffffffffbe67c6eb
     #30 [ffffffffbe403f50] secondary_startup_64 at ffffffffbd0000d5
    
    Fixes: 040036bb0bc1 ("scsi: qla2xxx: Delay loop id allocation at login")
    Cc: <stable@vger.kernel.org> # v4.17+
    Signed-off-by: Chuck Anderson <chuck.anderson@oracle.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbff7f129d34daf52b5c530a980500dd865b0b3c
Author: himanshu.madhani@cavium.com <himanshu.madhani@cavium.com>
Date:   Mon Jul 2 13:01:59 2018 -0700

    scsi: qla2xxx: Fix kernel crash due to late workqueue allocation
    
    commit d48cc67cd4406d589fdbfa8c7d51c86532f86feb upstream.
    
    This patch fixes crash for FCoE adapter. Once driver initialization is
    complete, firmware will start posting Asynchronous Event, However driver
    has not yet allocated workqueue to process and queue up work.  This delay
    of allocating workqueue results into NULL pointer access.
    
    The following stack trace is seen:
    
    [   24.577259] BUG: unable to handle kernel NULL pointer dereference at 0000000000000102
    [   24.623133] PGD 0 P4D 0
    [   24.636760] Oops: 0000 [#1] SMP NOPTI
    [   24.656942] Modules linked in: i2c_algo_bit drm_kms_helper sr_mod(+) syscopyarea sysfillrect sysimgblt cdrom fb_sys_fops ata_generic ttm pata_acpi sd_mod ahci pata_atiixp sfc(+) qla2xxx(+) libahci drm qla4xxx(+) nvme_fc hpsa mdio libiscsi qlcnic(+) nvme_fabrics scsi_transport_sas serio_raw mtd crc32c_intel libata nvme_core i2c_core scsi_transport_iscsi tg3 scsi_transport_fc bnx2 iscsi_boot_sysfs dm_multipath dm_mirror dm_region_hash dm_log dm_mod
    [   24.887449] CPU: 0 PID: 177 Comm: kworker/0:3 Not tainted 4.17.0-rc6 #1
    [   24.925119] Hardware name: HP ProLiant DL385 G7, BIOS A18 08/15/2012
    [   24.962106] Workqueue: events work_for_cpu_fn
    [   24.987098] RIP: 0010:__queue_work+0x1f/0x3a0
    [   25.011672] RSP: 0018:ffff992642ceba10 EFLAGS: 00010082
    [   25.042116] RAX: 0000000000000082 RBX: 0000000000000082 RCX: 0000000000000000
    [   25.083293] RDX: ffff8cf9abc6d7d0 RSI: 0000000000000000 RDI: 0000000000002000
    [   25.123094] RBP: 0000000000000000 R08: 0000000000025a40 R09: ffff8cf9aade2880
    [   25.164087] R10: 0000000000000000 R11: ffff992642ceb6f0 R12: ffff8cf9abc6d7d0
    [   25.202280] R13: 0000000000002000 R14: ffff8cf9abc6d7b8 R15: 0000000000002000
    [   25.242050] FS:  0000000000000000(0000) f9b5c00000(0000) knlGS:0000000000000000
    [   25.977565] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   26.010457] CR2: 0000000000000102 CR3: 000000030760a000 CR4: 00000000000406f0
    [   26.051048] Call Trace:
    [   26.063572]  ? __switch_to_asm+0x34/0x70
    [   26.086079]  queue_work_on+0x24/0x40
    [   26.107090]  qla2x00_post_work+0x81/0xb0 [qla2xxx]
    [   26.133356]  qla2x00_async_event+0x1ad/0x1a20 [qla2xxx]
    [   26.164075]  ? lock_timer_base+0x67/0x80
    [   26.186420]  ? try_to_del_timer_sync+0x4d/0x80
    [   26.212284]  ? del_timer_sync+0x35/0x40
    [   26.234080]  ? schedule_timeout+0x165/0x2f0
    [   26.259575]  qla82xx_poll+0x13e/0x180 [qla2xxx]
    [   26.285740]  qla2x00_mailbox_command+0x74b/0xf50 [qla2xxx]
    [   26.319040]  qla82xx_set_driver_version+0x13b/0x1c0 [qla2xxx]
    [   26.352108]  ? qla2x00_init_rings+0x206/0x3f0 [qla2xxx]
    [   26.381733]  qla2x00_initialize_adapter+0x35c/0x7f0 [qla2xxx]
    [   26.413240]  qla2x00_probe_one+0x1479/0x2390 [qla2xxx]
    [   26.442055]  local_pci_probe+0x3f/0xa0
    [   26.463108]  work_for_cpu_fn+0x10/0x20
    [   26.483295]  process_one_work+0x152/0x350
    [   26.505730]  worker_thread+0x1cf/0x3e0
    [   26.527090]  kthread+0xf5/0x130
    [   26.545085]  ? max_active_store+0x80/0x80
    [   26.568085]  ? kthread_bind+0x10/0x10
    [   26.589533]  ret_from_fork+0x22/0x40
    [   26.610192] Code: 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 57 41 89 ff 41 56 41 55 41 89 fd 41 54 49 89 d4 55 48 89 f5 53 48 83 ec 0 86 02 01 00 00 01 0f 85 80 02 00 00 49 c7 c6 c0 ec 01 00 41
    [   27.308540] RIP: __queue_work+0x1f/0x3a0 RSP: ffff992642ceba10
    [   27.341591] CR2: 0000000000000102
    [   27.360208] ---[ end trace 01b7b7ae2c005cf3 ]---
    
    Cc: <stable@vger.kernel.org> # v4.17+
    Fixes: 9b3e0f4d4147 ("scsi: qla2xxx: Move work element processing out of DPC thread"
    Reported-by: Li Wang <liwang@redhat.com>
    Tested-by: Li Wang <liwang@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d7555604d3a75984496aff33eb36109ad301d50
Author: Quinn Tran <quin.tran@cavium.com>
Date:   Mon Jul 2 13:01:58 2018 -0700

    scsi: qla2xxx: Fix inconsistent DMA mem alloc/free
    
    commit b5f3bc39a0e815a30005da246dd4ad47fd2f88ff upstream.
    
    GPNFT command allocates 2 buffer for switch query. On completion, the same
    buffers were freed using different size, instead of using original size at
    the time of allocation.
    
    This patch saves the size of the request and response buffers and uses that
    to free them.
    
    Following stack trace can be seen when using debug kernel
    
    dump_stack+0x19/0x1b
    __warn+0xd8/0x100
    warn_slowpath_fmt+0x5f/0x80
    check_unmap+0xfb/0xa20
    debug_dma_free_coherent+0x110/0x160
    qla24xx_sp_unmap+0x131/0x1e0 [qla2xxx]
    qla24xx_async_gnnft_done+0xb6/0x550 [qla2xxx]
    qla2x00_do_work+0x1ec/0x9f0 [qla2xxx]
    
    Cc: <stable@vger.kernel.org> # v4.17+
    Fixes: 33b28357dd00 ("scsi: qla2xxx: Fix Async GPN_FT for FCP and FC-NVMe scan")
    Reported-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Himanshu Madhani <hmadhani@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 275f85d8f6226eaaf1dba5d2879a72b7a53c5f58
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Tue Jul 3 15:23:58 2018 +0900

    scsi: sd_zbc: Fix variable type and bogus comment
    
    commit f13cff6c25bd8986627365346d123312ee7baa78 upstream.
    
    Fix the description of sd_zbc_check_zone_size() to correctly explain that
    the returned value is a number of device blocks, not bytes.  Additionally,
    the 32 bits "ret" variable used in this function may truncate the 64 bits
    zone_blocks variable value upon return. To fix this, change "ret" type to
    s64.
    
    Fixes: ccce20fc79 ("sd_zbc: Avoid that resetting a zone fails sporadically")
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Cc: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: stable@kernel.org
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>