commit 2237effd7edc201d9d6bed6bef8ada3cb1499d7b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Nov 4 14:51:56 2018 +0100

    Linux 4.18.17

commit 1757ec69500e8a0b78032b05958d120b535eac97
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Sat Oct 27 12:07:47 2018 +0300

    net: bridge: remove ipv6 zero address check in mcast queries
    
    commit 0fe5119e267f3e3d8ac206895f5922195ec55a8a upstream.
    
    Recently a check was added which prevents marking of routers with zero
    source address, but for IPv6 that cannot happen as the relevant RFCs
    actually forbid such packets:
    RFC 2710 (MLDv1):
    "To be valid, the Query message MUST
     come from a link-local IPv6 Source Address, be at least 24 octets
     long, and have a correct MLD checksum."
    
    Same goes for RFC 3810.
    
    And also it can be seen as a requirement in ipv6_mc_check_mld_query()
    which is used by the bridge to validate the message before processing
    it. Thus any queries with :: source address won't be processed anyway.
    So just remove the check for zero IPv6 source address from the query
    processing function.
    
    Fixes: 5a2de63fd1a5 ("bridge: do not add port to router list when receives query with source 0.0.0.0")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ec673dbb0cd4304b71599451a2363051fd26e14
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Oct 12 10:33:20 2018 -0700

    sparc: Throttle perf events properly.
    
    [ Upstream commit 455adb3174d2c8518cef1a61140c211f6ac224d2 ]
    
    Like x86 and arm, call perf_sample_event_took() in perf event
    NMI interrupt handler.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12176be9fc1438c74476f369b9411d4581ba1ac4
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Oct 17 21:28:01 2018 -0700

    sparc: Fix syscall fallback bugs in VDSO.
    
    [ Upstream commit 776ca1543b5fe673aaf1beb244fcc2429d378083 ]
    
    First, the trap number for 32-bit syscalls is 0x10.
    
    Also, only negate the return value when syscall error is indicated by
    the carry bit being set.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 366187ea2b332c981beeee167a1b53c60bf97e35
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Oct 12 10:31:58 2018 -0700

    sparc: Fix single-pcr perf event counter management.
    
    [ Upstream commit cfdc3170d214046b9509183fe9b9544dc644d40b ]
    
    It is important to clear the hw->state value for non-stopped events
    when they are added into the PMU.  Otherwise when the event is
    scheduled out, we won't read the counter because HES_UPTODATE is still
    set.  This breaks 'perf stat' and similar use cases, causing all the
    events to show zero.
    
    This worked for multi-pcr because we make explicit sparc_pmu_start()
    calls in calculate_multiple_pcrs().  calculate_single_pcr() doesn't do
    this because the idea there is to accumulate all of the counter
    settings into the single pcr value.  So we have to add explicit
    hw->state handling there.
    
    Like x86, we use the PERF_HES_ARCH bit to track truly stopped events
    so that we don't accidently start them on a reload.
    
    Related to all of this, sparc_pmu_start() is missing a userpage update
    so add it.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ce6adbc410a377aae36bf021042fe5dc5d3d159
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Oct 31 18:30:21 2018 -0700

    sparc64: Wire up compat getpeername and getsockname.
    
    [ Upstream commit 1f2b5b8e2df4591fbca430aff9c5a072dcc0f408 ]
    
    Fixes: 8b30ca73b7cc ("sparc: Add all necessary direct socket system calls.")
    Reported-by: Joseph Myers  <joseph@codesourcery.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a756494fb7bdf4ddcfa73e42dc15431b562cf59c
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Oct 14 20:22:28 2018 -0700

    sparc64: Set %l4 properly on trap return after handling signals.
    
    [ Upstream commit d1f1f98c6d1708a90436e1a3b2aff5e93946731b ]
    
    If we did some signal processing, we have to reload the pt_regs
    tstate register because it's value may have changed.
    
    In doing so we also have to extract the %pil value contained in there
    anre load that into %l4.
    
    This value is at bit 20 and thus needs to be shifted down before we
    later write it into the %pil register.
    
    Most of the time this is harmless as we are returning to userspace
    and the %pil is zero for that case.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a47e59c44717bd40a068cd9b995bfa7a9b8a857
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Oct 14 20:19:31 2018 -0700

    sparc64: Make proc_id signed.
    
    [ Upstream commit b3e1eb8e7ac9aaa283989496651d99267c4cad6c ]
    
    So that when it is unset, ie. '-1', userspace can see it
    properly.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f64ff34d414e264f29e9e47f96128048b13c3e8c
Author: David Miller <davem@redhat.com>
Date:   Thu Oct 25 20:36:46 2018 -0700

    sparc64: Make corrupted user stacks more debuggable.
    
    [ Upstream commit 5b4fc3882a649c9411dd0dcad2ddb78e911d340e ]
    
    Right now if we get a corrupted user stack frame we do a
    do_exit(SIGILL) which is not helpful.
    
    If under a debugger, this behavior causes the inferior process to
    exit.  So the register and other state cannot be examined at the time
    of the event.
    
    Instead, conditionally log a rate limited kernel log message and then
    force a SIGSEGV.
    
    With bits and ideas borrowed (as usual) from powerpc.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69e6b8f41fbfdf6835f696c8b22c8495db97da60
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Oct 26 15:11:56 2018 -0700

    sparc64: Export __node_distance.
    
    [ Upstream commit 2b4792eaa9f553764047d157365ed8b7787751a3 ]
    
    Some drivers reference it via node_distance(), for example the
    NVME host driver core.
    
    ERROR: "__node_distance" [drivers/nvme/host/nvme-core.ko] undefined!
    make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a84bdb84df3ed9c59baaf8a45701aa7f7a36677
Author: Shalom Toledo <shalomt@mellanox.com>
Date:   Mon Oct 29 14:26:16 2018 +0000

    mlxsw: core: Fix devlink unregister flow
    
    [ Upstream commit a22712a962912faf257e857ab6857f56a93cfb34 ]
    
    After a failed reload, the driver is still registered to devlink, its
    devlink instance is still allocated and the 'reload_fail' flag is set.
    Then, in the next reload try, the driver's allocated devlink instance will
    be freed without unregistering from devlink and its components (e.g,
    resources). This scenario can cause a use-after-free if the user tries to
    execute command via devlink user-space tool.
    
    Fix by not freeing the devlink instance during reload (failed or not).
    
    Fixes: 24cc68ad6c46 ("mlxsw: core: Add support for reload")
    Signed-off-by: Shalom Toledo <shalomt@mellanox.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d484ce0a878567e8fef8c8484b21531abf77f46
Author: Tariq Toukan <tariqt@mellanox.com>
Date:   Tue Aug 21 14:41:41 2018 +0300

    net/mlx5: WQ, fixes for fragmented WQ buffers API
    
    [ Upstream commit 37fdffb217a45609edccbb8b407d031143f551c0 ]
    
    mlx5e netdevice used to calculate fragment edges by a call to
    mlx5_wq_cyc_get_frag_size(). This calculation did not give the correct
    indication for queues smaller than a PAGE_SIZE, (broken by default on
    PowerPC, where PAGE_SIZE == 64KB).  Here it is replaced by the correct new
    calls/API.
    
    Since (TX/RX) Work Queues buffers are fragmented, here we introduce
    changes to the API in core driver, so that it gets a stride index and
    returns the index of last stride on same fragment, and an additional
    wrapping function that returns the number of physically contiguous
    strides that can be written contiguously to the work queue.
    
    This obsoletes the following API functions, and their buggy
    usage in EN driver:
    * mlx5_wq_cyc_get_frag_size()
    * mlx5_wq_cyc_ctr2fragix()
    
    The new API improves modularity and hides the details of such
    calculation for mlx5e netdevice and mlx5_ib rdma drivers.
    
    New calculation is also more efficient, and improves performance
    as follows:
    
    Packet rate test: pktgen, UDP / IPv4, 64byte, single ring, 8K ring size.
    
    Before: 16,477,619 pps
    After:  17,085,793 pps
    
    3.7% improvement
    
    Fixes: 3a2f70331226 ("net/mlx5: Use order-0 allocations for all WQ types")
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8e70fa84f769416d54199bb2b80d745705b4a59
Author: Dimitris Michailidis <dmichail@google.com>
Date:   Fri Oct 19 17:07:13 2018 -0700

    net: fix pskb_trim_rcsum_slow() with odd trim offset
    
    [ Upstream commit d55bef5059dd057bd077155375c581b49d25be7e ]
    
    We've been getting checksum errors involving small UDP packets, usually
    59B packets with 1 extra non-zero padding byte. netdev_rx_csum_fault()
    has been complaining that HW is providing bad checksums. Turns out the
    problem is in pskb_trim_rcsum_slow(), introduced in commit 88078d98d1bb
    ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends").
    
    The source of the problem is that when the bytes we are trimming start
    at an odd address, as in the case of the 1 padding byte above,
    skb_checksum() returns a byte-swapped value. We cannot just combine this
    with skb->csum using csum_sub(). We need to use csum_block_sub() here
    that takes into account the parity of the start address and handles the
    swapping.
    
    Matches existing code in __skb_postpull_rcsum() and esp_remove_trailer().
    
    Fixes: 88078d98d1bb ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends")
    Signed-off-by: Dimitris Michailidis <dmichail@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4eb93739587374f72feb0d2607d6dd4d2de8919d
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Nov 1 12:02:37 2018 -0700

    net: drop skb on failure in ip_check_defrag()
    
    [ Upstream commit 7de414a9dd91426318df7b63da024b2b07e53df5 ]
    
    Most callers of pskb_trim_rcsum() simply drop the skb when
    it fails, however, ip_check_defrag() still continues to pass
    the skb up to stack. This is suspicious.
    
    In ip_check_defrag(), after we learn the skb is an IP fragment,
    passing the skb to callers makes no sense, because callers expect
    fragments are defrag'ed on success. So, dropping the skb when we
    can't defrag it is reasonable.
    
    Note, prior to commit 88078d98d1bb, this is not a big problem as
    checksum will be fixed up anyway. After it, the checksum is not
    correct on failure.
    
    Found this during code review.
    
    Fixes: 88078d98d1bb ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends")
    Cc: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@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 dc4526d3bfeb5dff90c70d60463e148cd667b453
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Oct 17 00:35:10 2018 +0900

    net: bpfilter: use get_pid_task instead of pid_task
    
    [ Upstream commit 84258438e8ce12d6888b68a1238bba9cb25307e2 ]
    
    pid_task() dereferences rcu protected tasks array.
    But there is no rcu_read_lock() in shutdown_umh() routine so that
    rcu_read_lock() is needed.
    get_pid_task() is wrapper function of pid_task. it holds rcu_read_lock()
    then calls pid_task(). if task isn't NULL, it increases reference count
    of task.
    
    test commands:
       %modprobe bpfilter
       %modprobe -rv bpfilter
    
    splat looks like:
    [15102.030932] =============================
    [15102.030957] WARNING: suspicious RCU usage
    [15102.030985] 4.19.0-rc7+ #21 Not tainted
    [15102.031010] -----------------------------
    [15102.031038] kernel/pid.c:330 suspicious rcu_dereference_check() usage!
    [15102.031063]
                   other info that might help us debug this:
    
    [15102.031332]
                   rcu_scheduler_active = 2, debug_locks = 1
    [15102.031363] 1 lock held by modprobe/1570:
    [15102.031389]  #0: 00000000580ef2b0 (bpfilter_lock){+.+.}, at: stop_umh+0x13/0x52 [bpfilter]
    [15102.031552]
                   stack backtrace:
    [15102.031583] CPU: 1 PID: 1570 Comm: modprobe Not tainted 4.19.0-rc7+ #21
    [15102.031607] 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
    [15102.031628] Call Trace:
    [15102.031676]  dump_stack+0xc9/0x16b
    [15102.031723]  ? show_regs_print_info+0x5/0x5
    [15102.031801]  ? lockdep_rcu_suspicious+0x117/0x160
    [15102.031855]  pid_task+0x134/0x160
    [15102.031900]  ? find_vpid+0xf0/0xf0
    [15102.032017]  shutdown_umh.constprop.1+0x1e/0x53 [bpfilter]
    [15102.032055]  stop_umh+0x46/0x52 [bpfilter]
    [15102.032092]  __x64_sys_delete_module+0x47e/0x570
    [ ... ]
    
    Fixes: d2ba09c17a06 ("net: add skeleton of bpfilter kernel module")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79a6dd1cb8e3763122f288834f68b53adc061314
Author: Petr Machata <petrm@mellanox.com>
Date:   Mon Oct 29 14:26:14 2018 +0000

    mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs
    
    [ Upstream commit ad0b9d94182be8356978d220c82f9837cffeb7a9 ]
    
    Demands to remove FDB entries should be honored even if the FDB entry in
    question was originally learned, and not added by the user. Therefore
    ignore the added_by_user datum for SWITCHDEV_FDB_DEL_TO_DEVICE.
    
    Fixes: 816a3bed9549 ("switchdev: Add fdb.added_by_user to switchdev notifications")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Suggested-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f235cdcf4fc4924327bcd7df2e10444e60cb9d92
Author: Karsten Graul <kgraul@linux.ibm.com>
Date:   Thu Oct 25 13:25:28 2018 +0200

    net/smc: fix smc_buf_unuse to use the lgr pointer
    
    [ Upstream commit fb692ec4117f6fd25044cfb5720d6b79d400dc65 ]
    
    The pointer to the link group is unset in the smc connection structure
    right before the call to smc_buf_unuse. Provide the lgr pointer to
    smc_buf_unuse explicitly.
    And move the call to smc_lgr_schedule_free_work to the end of
    smc_conn_free.
    
    Fixes: a6920d1d130c ("net/smc: handle unregistered buffers")
    Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d09a8fb161034df263d3fcfbf1cb47e0003def55
Author: Talat Batheesh <talatb@mellanox.com>
Date:   Thu Aug 30 16:31:52 2018 +0300

    net/mlx5: Fix memory leak when setting fpga ipsec caps
    
    [ Upstream commit fd7e848077c1a466b9187537adce16658f7cb94b ]
    
    Allocated memory for context should be freed once
    finished working with it.
    
    Fixes: d6c4f0298cec ("net/mlx5: Refactor accel IPSec code")
    Signed-off-by: Talat Batheesh <talatb@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63f8939f793bc4214a9c436bffa1d390cd6fdc9b
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 17 03:06:12 2018 +0800

    sctp: not free the new asoc when sctp_wait_for_connect returns err
    
    [ Upstream commit c863850ce22e1b0bb365d49cadf51f4765153ae4 ]
    
    When sctp_wait_for_connect is called to wait for connect ready
    for sp->strm_interleave in sctp_sendmsg_to_asoc, a panic could
    be triggered if cpu is scheduled out and the new asoc is freed
    elsewhere, as it will return err and later the asoc gets freed
    again in sctp_sendmsg.
    
    [  285.840764] list_del corruption, ffff9f0f7b284078->next is LIST_POISON1 (dead000000000100)
    [  285.843590] WARNING: CPU: 1 PID: 8861 at lib/list_debug.c:47 __list_del_entry_valid+0x50/0xa0
    [  285.846193] Kernel panic - not syncing: panic_on_warn set ...
    [  285.846193]
    [  285.848206] CPU: 1 PID: 8861 Comm: sctp_ndata Kdump: loaded Not tainted 4.19.0-rc7.label #584
    [  285.850559] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    [  285.852164] Call Trace:
    ...
    [  285.872210]  ? __list_del_entry_valid+0x50/0xa0
    [  285.872894]  sctp_association_free+0x42/0x2d0 [sctp]
    [  285.873612]  sctp_sendmsg+0x5a4/0x6b0 [sctp]
    [  285.874236]  sock_sendmsg+0x30/0x40
    [  285.874741]  ___sys_sendmsg+0x27a/0x290
    [  285.875304]  ? __switch_to_asm+0x34/0x70
    [  285.875872]  ? __switch_to_asm+0x40/0x70
    [  285.876438]  ? ptep_set_access_flags+0x2a/0x30
    [  285.877083]  ? do_wp_page+0x151/0x540
    [  285.877614]  __sys_sendmsg+0x58/0xa0
    [  285.878138]  do_syscall_64+0x55/0x180
    [  285.878669]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This is a similar issue with the one fixed in Commit ca3af4dd28cf
    ("sctp: do not free asoc when it is already dead in sctp_sendmsg").
    But this one can't be fixed by returning -ESRCH for the dead asoc
    in sctp_wait_for_connect, as it will break sctp_connect's return
    value to users.
    
    This patch is to simply set err to -ESRCH before it returns to
    sctp_sendmsg when any err is returned by sctp_wait_for_connect
    for sp->strm_interleave, so that no asoc would be freed due to
    this.
    
    When users see this error, they will know the packet hasn't been
    sent. And it also makes sense to not free asoc because waiting
    connect fails, like the second call for sctp_wait_for_connect in
    sctp_sendmsg_to_asoc.
    
    Fixes: 668c9beb9020 ("sctp: implement assign_number for sctp_stream_interleave")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1b1e96cffd287de99e9616959fff1d12ca1e61a
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 17 21:11:27 2018 +0800

    sctp: fix the data size calculation in sctp_data_size
    
    [ Upstream commit 5660b9d9d6a29c2c3cc12f62ae44bfb56b0a15a9 ]
    
    sctp data size should be calculated by subtracting data chunk header's
    length from chunk_hdr->length, not just data header.
    
    Fixes: 668c9beb9020 ("sctp: implement assign_number for sctp_stream_interleave")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81e31abfa81d288baddd8045648d97ae72e6f42d
Author: David Ahern <dsahern@gmail.com>
Date:   Wed Oct 24 13:58:39 2018 -0700

    net/ipv6: Allow onlink routes to have a device mismatch if it is the default route
    
    [ Upstream commit 4ed591c8ab44e711e56b8e021ffaf4f407c045f5 ]
    
    The intent of ip6_route_check_nh_onlink is to make sure the gateway
    given for an onlink route is not actually on a connected route for
    a different interface (e.g., 2001:db8:1::/64 is on dev eth1 and then
    an onlink route has a via 2001:db8:1::1 dev eth2). If the gateway
    lookup hits the default route then it most likely will be a different
    interface than the onlink route which is ok.
    
    Update ip6_route_check_nh_onlink to disregard the device mismatch
    if the gateway lookup hits the default route. Turns out the existing
    onlink tests are passing because there is no default route or it is
    an unreachable default, so update the onlink tests to have a default
    route other than unreachable.
    
    Fixes: fc1e64e1092f6 ("net/ipv6: Add support for onlink flag")
    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 c5038b492cb1656d61a2983adbe794af7c3a4389
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Wed Oct 10 22:00:58 2018 +0200

    net/sched: cls_api: add missing validation of netlink attributes
    
    [ Upstream commit e331473fee3d500bb0d2582a1fe598df3326d8cd ]
    
    Similarly to what has been done in 8b4c3cdd9dd8 ("net: sched: Add policy
    validation for tc attributes"), fix classifier code to add validation of
    TCA_CHAIN and TCA_KIND netlink attributes.
    
    tested with:
     # ./tdc.py -c filter
    
    v2: Let sch_api and cls_api share nla_policy they have in common, thanks
        to David Ahern.
    v3: Avoid EXPORT_SYMBOL(), as validation of those attributes is not done
        by TC modules, thanks to Cong Wang.
        While at it, restore the 'Delete / get qdisc' comment to its orginal
        position, just above tc_get_qdisc() function prototype.
    
    Fixes: 5bc1701881e39 ("net: sched: introduce multichain support for filters")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45675e6e634421bae775437b935bcc674abc318d
Author: Phil Sutter <phil@nwl.cc>
Date:   Thu Oct 18 10:34:26 2018 +0200

    net: sched: Fix for duplicate class dump
    
    [ Upstream commit 3c53ed8fef6881a864f0ee8240ed2793ef73ad0d ]
    
    When dumping classes by parent, kernel would return classes twice:
    
    | # tc qdisc add dev lo root prio
    | # tc class show dev lo
    | class prio 8001:1 parent 8001:
    | class prio 8001:2 parent 8001:
    | class prio 8001:3 parent 8001:
    | # tc class show dev lo parent 8001:
    | class prio 8001:1 parent 8001:
    | class prio 8001:2 parent 8001:
    | class prio 8001:3 parent 8001:
    | class prio 8001:1 parent 8001:
    | class prio 8001:2 parent 8001:
    | class prio 8001:3 parent 8001:
    
    This comes from qdisc_match_from_root() potentially returning the root
    qdisc itself if its handle matched. Though in that case, root's classes
    were already dumped a few lines above.
    
    Fixes: cb395b2010879 ("net: sched: optimize class dumps")
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Reviewed-by: Jiri Pirko <jiri@mellanox.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 11681b07d320a8e416b9bc23d5e2806b481862fa
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Oct 11 15:06:33 2018 -0700

    net: bcmgenet: Poll internal PHY for GENETv5
    
    [ Upstream commit 64bd9c8135751b561f27edaaffe93d07093f81af ]
    
    On GENETv5, there is a hardware issue which prevents the GENET hardware
    from generating a link UP interrupt when the link is operating at
    10Mbits/sec. Since we do not have any way to configure the link
    detection logic, fallback to polling in that case.
    
    Fixes: 421380856d9c ("net: bcmgenet: add support for the GENETv5 hardware")
    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 b9a30ce087b4595630719ba04fef03c9cb4bcc12
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Tue Sep 11 14:58:22 2018 -0500

    net/mlx5: Take only bit 24-26 of wqe.pftype_wq for page fault type
    
    [ Upstream commit a48bc513159d4767f9988f0d857b2b0c38a4d614 ]
    
    The HW spec defines only bits 24-26 of pftype_wq as the page fault type,
    use the required mask to ensure that.
    
    Fixes: d9aaed838765 ("{net,IB}/mlx5: Refactor page fault handling")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Signed-off-by: Eli Cohen <eli@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 739b2449f0cf48c1c18aeb7ba8ace4488eb11f7d
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Wed Oct 17 22:34:34 2018 +0300

    net: ipmr: fix unresolved entry dumps
    
    [ Upstream commit eddf016b910486d2123675a6b5fd7d64f77cdca8 ]
    
    If the skb space ends in an unresolved entry while dumping we'll miss
    some unresolved entries. The reason is due to zeroing the entry counter
    between dumping resolved and unresolved mfc entries. We should just
    keep counting until the whole table is dumped and zero when we move to
    the next as we have a separate table counter.
    
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Fixes: 8fb472c09b9d ("ipmr: improve hash scalability")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8c96597387ed9b15fa192ebdd87dbdf2668608c
Author: Jaime Caamaño Ruiz <jcaamano@suse.com>
Date:   Wed Oct 31 18:52:03 2018 +0100

    openvswitch: Fix push/pop ethernet validation
    
    [ Upstream commit 46ebe2834ba5b541f28ee72e556a3fed42c47570 ]
    
    When there are both pop and push ethernet header actions among the
    actions to be applied to a packet, an unexpected EINVAL (Invalid
    argument) error is obtained. This is due to mac_proto not being reset
    correctly when those actions are validated.
    
    Reported-at:
    https://mail.openvswitch.org/pipermail/ovs-discuss/2018-October/047554.html
    Fixes: 91820da6ae85 ("openvswitch: add Ethernet push and pop actions")
    Signed-off-by: Jaime Caamaño Ruiz <jcaamano@suse.com>
    Tested-by: Greg Rose <gvrose8192@gmail.com>
    Reviewed-by: Greg Rose <gvrose8192@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b73d75ab52ff0ed8e08a7fa18d4ab98ddcaac29
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Oct 18 21:25:07 2018 +0200

    ip6_tunnel: Fix encapsulation layout
    
    [ Upstream commit d4d576f5ab7edcb757bb33e6a5600666a0b1232d ]
    
    Commit 058214a4d1df ("ip6_tun: Add infrastructure for doing
    encapsulation") added the ip6_tnl_encap() call in ip6_tnl_xmit(), before
    the call to ipv6_push_frag_opts() to append the IPv6 Tunnel Encapsulation
    Limit option (option 4, RFC 2473, par. 5.1) to the outer IPv6 header.
    
    As long as the option didn't actually end up in generated packets, this
    wasn't an issue. Then commit 89a23c8b528b ("ip6_tunnel: Fix missing tunnel
    encapsulation limit option") fixed sending of this option, and the
    resulting layout, e.g. for FoU, is:
    
    .-------------------.------------.----------.-------------------.----- - -
    | Outer IPv6 Header | UDP header | Option 4 | Inner IPv6 Header | Payload
    '-------------------'------------'----------'-------------------'----- - -
    
    Needless to say, FoU and GUE (at least) won't work over IPv6. The option
    is appended by default, and I couldn't find a way to disable it with the
    current iproute2.
    
    Turn this into a more reasonable:
    
    .-------------------.----------.------------.-------------------.----- - -
    | Outer IPv6 Header | Option 4 | UDP header | Inner IPv6 Header | Payload
    '-------------------'----------'------------'-------------------'----- - -
    
    With this, and with 84dad55951b0 ("udp6: fix encap return code for
    resubmitting"), FoU and GUE work again over IPv6.
    
    Fixes: 058214a4d1df ("ip6_tun: Add infrastructure for doing encapsulation")
    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 2f75b5a2c8322f2b7d5602ad861bc5b6295c6daa
Author: Tobias Jungel <tobias.jungel@gmail.com>
Date:   Sun Oct 28 12:54:10 2018 +0100

    bonding: fix length of actor system
    
    [ Upstream commit 414dd6fb9a1a1b59983aea7bf0f79f0085ecc5b8 ]
    
    The attribute IFLA_BOND_AD_ACTOR_SYSTEM is sent to user space having the
    length of sizeof(bond->params.ad_actor_system) which is 8 byte. This
    patch aligns the length to ETH_ALEN to have the same MAC address exposed
    as using sysfs.
    
    Fixes: f87fda00b6ed2 ("bonding: prevent out of bound accesses")
    Signed-off-by: Tobias Jungel <tobias.jungel@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e00d0609ebddbde7589fc7c39c21d2fc74e5f2
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Mon Oct 8 10:49:35 2018 -0500

    ethtool: fix a privilege escalation bug
    
    [ Upstream commit 58f5bbe331c566f49c9559568f982202a278aa78 ]
    
    In dev_ethtool(), the eth command 'ethcmd' is firstly copied from the
    use-space buffer 'useraddr' and checked to see whether it is
    ETHTOOL_PERQUEUE. If yes, the sub-command 'sub_cmd' is further copied from
    the user space. Otherwise, 'sub_cmd' is the same as 'ethcmd'. Next,
    according to 'sub_cmd', a permission check is enforced through the function
    ns_capable(). For example, the permission check is required if 'sub_cmd' is
    ETHTOOL_SCOALESCE, but it is not necessary if 'sub_cmd' is
    ETHTOOL_GCOALESCE, as suggested in the comment "Allow some commands to be
    done by anyone". The following execution invokes different handlers
    according to 'ethcmd'. Specifically, if 'ethcmd' is ETHTOOL_PERQUEUE,
    ethtool_set_per_queue() is called. In ethtool_set_per_queue(), the kernel
    object 'per_queue_opt' is copied again from the user-space buffer
    'useraddr' and 'per_queue_opt.sub_command' is used to determine which
    operation should be performed. Given that the buffer 'useraddr' is in the
    user space, a malicious user can race to change the sub-command between the
    two copies. In particular, the attacker can supply ETHTOOL_PERQUEUE and
    ETHTOOL_GCOALESCE to bypass the permission check in dev_ethtool(). Then
    before ethtool_set_per_queue() is called, the attacker changes
    ETHTOOL_GCOALESCE to ETHTOOL_SCOALESCE. In this way, the attacker can
    bypass the permission check and execute ETHTOOL_SCOALESCE.
    
    This patch enforces a check in ethtool_set_per_queue() after the second
    copy from 'useraddr'. If the sub-command is different from the one obtained
    in the first copy in dev_ethtool(), an error code EINVAL will be returned.
    
    Fixes: f38d138a7da6 ("net/ethtool: support set coalesce per queue")
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e30293d0a03aef487c61636d2176737ea8af1fa0
Author: Ake Koomsin <ake@igel.co.jp>
Date:   Wed Oct 17 19:44:12 2018 +0900

    virtio_net: avoid using netif_tx_disable() for serializing tx routine
    
    [ Upstream commit 05c998b738fdd3e5d6a257bcacc8f34b6284d795 ]
    
    Commit 713a98d90c5e ("virtio-net: serialize tx routine during reset")
    introduces netif_tx_disable() after netif_device_detach() in order to
    avoid use-after-free of tx queues. However, there are two issues.
    
    1) Its operation is redundant with netif_device_detach() in case the
       interface is running.
    2) In case of the interface is not running before suspending and
       resuming, the tx does not get resumed by netif_device_attach().
       This results in losing network connectivity.
    
    It is better to use netif_tx_lock_bh()/netif_tx_unlock_bh() instead for
    serializing tx routine during reset. This also preserves the symmetry
    of netif_device_detach() and netif_device_attach().
    
    Fixes commit 713a98d90c5e ("virtio-net: serialize tx routine during reset")
    Signed-off-by: Ake Koomsin <ake@igel.co.jp>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c75d697c8197364323d29e33698a38ab8152d218
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Oct 30 14:10:49 2018 +0800

    vhost: Fix Spectre V1 vulnerability
    
    [ Upstream commit ff002269a4ee9c769dbf9365acef633ebcbd6cbe ]
    
    The idx in vhost_vring_ioctl() was controlled by userspace, hence a
    potential exploitation of the Spectre variant 1 vulnerability.
    
    Fixing this by sanitizing idx before using it to index d->vqs.
    
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 886de7239b165452b3e6b1316759d097dd053c19
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Oct 17 11:44:04 2018 +0200

    udp6: fix encap return code for resubmitting
    
    [ Upstream commit 84dad55951b0d009372ec21760b650634246e144 ]
    
    The commit eb63f2964dbe ("udp6: add missing checks on edumux packet
    processing") used the same return code convention of the ipv4 counterpart,
    but ipv6 uses the opposite one: positive values means resubmit.
    
    This change addresses the issue, using positive return value for
    resubmitting. Also update the related comment, which was broken, too.
    
    Fixes: eb63f2964dbe ("udp6: add missing checks on edumux packet processing")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3c2e8e106df1d271fb7f4e3d3def7f13a47ac74
Author: Tung Nguyen <tung.q.nguyen@dektech.com.au>
Date:   Fri Oct 12 22:46:55 2018 +0200

    tipc: fix unsafe rcu locking when accessing publication list
    
    [ Upstream commit d3092b2efca1cd1d492d0b08499a2066c5ca8cec ]
    
    The binding table's 'cluster_scope' list is rcu protected to handle
    races between threads changing the list and those traversing the list at
    the same moment. We have now found that the function named_distribute()
    uses the regular list_for_each() macro to traverse the said list.
    Likewise, the function tipc_named_withdraw() is removing items from the
    same list using the regular list_del() call. When these two functions
    execute in parallel we see occasional crashes.
    
    This commit fixes this by adding the missing _rcu() suffixes.
    
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 721933262ef72a24595598ad6d20e98fc1b1ab82
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Tue Oct 16 15:18:17 2018 -0300

    sctp: fix race on sctp_id2asoc
    
    [ Upstream commit b336decab22158937975293aea79396525f92bb3 ]
    
    syzbot reported an use-after-free involving sctp_id2asoc.  Dmitry Vyukov
    helped to root cause it and it is because of reading the asoc after it
    was freed:
    
            CPU 1                       CPU 2
    (working on socket 1)            (working on socket 2)
                                     sctp_association_destroy
    sctp_id2asoc
       spin lock
         grab the asoc from idr
       spin unlock
                                       spin lock
                                         remove asoc from idr
                                       spin unlock
                                       free(asoc)
       if asoc->base.sk != sk ... [*]
    
    This can only be hit if trying to fetch asocs from different sockets. As
    we have a single IDR for all asocs, in all SCTP sockets, their id is
    unique on the system. An application can try to send stuff on an id
    that matches on another socket, and the if in [*] will protect from such
    usage. But it didn't consider that as that asoc may belong to another
    socket, it may be freed in parallel (read: under another socket lock).
    
    We fix it by moving the checks in [*] into the protected region. This
    fixes it because the asoc cannot be freed while the lock is held.
    
    Reported-by: syzbot+c7dd55d7aec49d48e49a@syzkaller.appspotmail.com
    Acked-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-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 2645237c90e7adc54a1d6613a1d4c7a87866bf1b
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Mon Oct 29 20:36:43 2018 +0000

    rtnetlink: Disallow FDB configuration for non-Ethernet device
    
    [ Upstream commit da71577545a52be3e0e9225a946e5fd79cfab015 ]
    
    When an FDB entry is configured, the address is validated to have the
    length of an Ethernet address, but the device for which the address is
    configured can be of any type.
    
    The above can result in the use of uninitialized memory when the address
    is later compared against existing addresses since 'dev->addr_len' is
    used and it may be greater than ETH_ALEN, as with ip6tnl devices.
    
    Fix this by making sure that FDB entries are only configured for
    Ethernet devices.
    
    BUG: KMSAN: uninit-value in memcmp+0x11d/0x180 lib/string.c:863
    CPU: 1 PID: 4318 Comm: syz-executor998 Not tainted 4.19.0-rc3+ #49
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0x14b/0x190 lib/dump_stack.c:113
      kmsan_report+0x183/0x2b0 mm/kmsan/kmsan.c:956
      __msan_warning+0x70/0xc0 mm/kmsan/kmsan_instr.c:645
      memcmp+0x11d/0x180 lib/string.c:863
      dev_uc_add_excl+0x165/0x7b0 net/core/dev_addr_lists.c:464
      ndo_dflt_fdb_add net/core/rtnetlink.c:3463 [inline]
      rtnl_fdb_add+0x1081/0x1270 net/core/rtnetlink.c:3558
      rtnetlink_rcv_msg+0xa0b/0x1530 net/core/rtnetlink.c:4715
      netlink_rcv_skb+0x36e/0x5f0 net/netlink/af_netlink.c:2454
      rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4733
      netlink_unicast_kernel net/netlink/af_netlink.c:1317 [inline]
      netlink_unicast+0x1638/0x1720 net/netlink/af_netlink.c:1343
      netlink_sendmsg+0x1205/0x1290 net/netlink/af_netlink.c:1908
      sock_sendmsg_nosec net/socket.c:621 [inline]
      sock_sendmsg net/socket.c:631 [inline]
      ___sys_sendmsg+0xe70/0x1290 net/socket.c:2114
      __sys_sendmsg net/socket.c:2152 [inline]
      __do_sys_sendmsg net/socket.c:2161 [inline]
      __se_sys_sendmsg+0x2a3/0x3d0 net/socket.c:2159
      __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2159
      do_syscall_64+0xb8/0x100 arch/x86/entry/common.c:291
      entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x440ee9
    Code: e8 cc ab 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7
    48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
    ff 0f 83 bb 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fff6a93b518 EFLAGS: 00000213 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000440ee9
    RDX: 0000000000000000 RSI: 0000000020000240 RDI: 0000000000000003
    RBP: 0000000000000000 R08: 00000000004002c8 R09: 00000000004002c8
    R10: 00000000004002c8 R11: 0000000000000213 R12: 000000000000b4b0
    R13: 0000000000401ec0 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
      kmsan_save_stack_with_flags mm/kmsan/kmsan.c:256 [inline]
      kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:181
      kmsan_kmalloc+0x98/0x100 mm/kmsan/kmsan_hooks.c:91
      kmsan_slab_alloc+0x10/0x20 mm/kmsan/kmsan_hooks.c:100
      slab_post_alloc_hook mm/slab.h:446 [inline]
      slab_alloc_node mm/slub.c:2718 [inline]
      __kmalloc_node_track_caller+0x9e7/0x1160 mm/slub.c:4351
      __kmalloc_reserve net/core/skbuff.c:138 [inline]
      __alloc_skb+0x2f5/0x9e0 net/core/skbuff.c:206
      alloc_skb include/linux/skbuff.h:996 [inline]
      netlink_alloc_large_skb net/netlink/af_netlink.c:1189 [inline]
      netlink_sendmsg+0xb49/0x1290 net/netlink/af_netlink.c:1883
      sock_sendmsg_nosec net/socket.c:621 [inline]
      sock_sendmsg net/socket.c:631 [inline]
      ___sys_sendmsg+0xe70/0x1290 net/socket.c:2114
      __sys_sendmsg net/socket.c:2152 [inline]
      __do_sys_sendmsg net/socket.c:2161 [inline]
      __se_sys_sendmsg+0x2a3/0x3d0 net/socket.c:2159
      __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2159
      do_syscall_64+0xb8/0x100 arch/x86/entry/common.c:291
      entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    v2:
    * Make error message more specific (David)
    
    Fixes: 090096bf3db1 ("net: generic fdb support for drivers without ndo_fdb_<op>")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-and-tested-by: syzbot+3a288d5f5530b901310e@syzkaller.appspotmail.com
    Reported-and-tested-by: syzbot+d53ab4e92a1db04110ff@syzkaller.appspotmail.com
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: David Ahern <dsahern@gmail.com>
    Reviewed-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 9ae97da02a5467718e39817f3d0fae5482c6356d
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Oct 18 19:56:01 2018 +0200

    r8169: fix NAPI handling under high load
    
    [ Upstream commit 6b839b6cf9eada30b086effb51e5d6076bafc761 ]
    
    rtl_rx() and rtl_tx() are called only if the respective bits are set
    in the interrupt status register. Under high load NAPI may not be
    able to process all data (work_done == budget) and it will schedule
    subsequent calls to the poll callback.
    rtl_ack_events() however resets the bits in the interrupt status
    register, therefore subsequent calls to rtl8169_poll() won't call
    rtl_rx() and rtl_tx() - chip interrupts are still disabled.
    
    Fix this by calling rtl_rx() and rtl_tx() independent of the bits
    set in the interrupt status register. Both functions will detect
    if there's nothing to do for them.
    
    Fixes: da78dbff2e05 ("r8169: remove work from irq handler.")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c5f9c2de021e6d629fc597a09cfa18b9b974a02
Author: Sean Tranchetti <stranche@codeaurora.org>
Date:   Tue Oct 23 16:04:31 2018 -0600

    net: udp: fix handling of CHECKSUM_COMPLETE packets
    
    [ Upstream commit db4f1be3ca9b0ef7330763d07bf4ace83ad6f913 ]
    
    Current handling of CHECKSUM_COMPLETE packets by the UDP stack is
    incorrect for any packet that has an incorrect checksum value.
    
    udp4/6_csum_init() will both make a call to
    __skb_checksum_validate_complete() to initialize/validate the csum
    field when receiving a CHECKSUM_COMPLETE packet. When this packet
    fails validation, skb->csum will be overwritten with the pseudoheader
    checksum so the packet can be fully validated by software, but the
    skb->ip_summed value will be left as CHECKSUM_COMPLETE so that way
    the stack can later warn the user about their hardware spewing bad
    checksums. Unfortunately, leaving the SKB in this state can cause
    problems later on in the checksum calculation.
    
    Since the the packet is still marked as CHECKSUM_COMPLETE,
    udp_csum_pull_header() will SUBTRACT the checksum of the UDP header
    from skb->csum instead of adding it, leaving us with a garbage value
    in that field. Once we try to copy the packet to userspace in the
    udp4/6_recvmsg(), we'll make a call to skb_copy_and_csum_datagram_msg()
    to checksum the packet data and add it in the garbage skb->csum value
    to perform our final validation check.
    
    Since the value we're validating is not the proper checksum, it's possible
    that the folded value could come out to 0, causing us not to drop the
    packet. Instead, we believe that the packet was checksummed incorrectly
    by hardware since skb->ip_summed is still CHECKSUM_COMPLETE, and we attempt
    to warn the user with netdev_rx_csum_fault(skb->dev);
    
    Unfortunately, since this is the UDP path, skb->dev has been overwritten
    by skb->dev_scratch and is no longer a valid pointer, so we end up
    reading invalid memory.
    
    This patch addresses this problem in two ways:
            1) Do not use the dev pointer when calling netdev_rx_csum_fault()
               from skb_copy_and_csum_datagram_msg(). Since this gets called
               from the UDP path where skb->dev has been overwritten, we have
               no way of knowing if the pointer is still valid. Also for the
               sake of consistency with the other uses of
               netdev_rx_csum_fault(), don't attempt to call it if the
               packet was checksummed by software.
    
            2) Add better CHECKSUM_COMPLETE handling to udp4/6_csum_init().
               If we receive a packet that's CHECKSUM_COMPLETE that fails
               verification (i.e. skb->csum_valid == 0), check who performed
               the calculation. It's possible that the checksum was done in
               software by the network stack earlier (such as Netfilter's
               CONNTRACK module), and if that says the checksum is bad,
               we can drop the packet immediately instead of waiting until
               we try and copy it to userspace. Otherwise, we need to
               mark the SKB as CHECKSUM_NONE, since the skb->csum field
               no longer contains the full packet checksum after the
               call to __skb_checksum_validate_complete().
    
    Fixes: e6afc8ace6dd ("udp: remove headers from UDP packets before queueing")
    Fixes: c84d949057ca ("udp: copy skb->truesize in the first cache line")
    Cc: Sam Kumar <samanthakumar@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Sean Tranchetti <stranche@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbfb26f3eb03c3a708e5604e599f3743d2178bfc
Author: Niklas Cassel <niklas.cassel@linaro.org>
Date:   Wed Oct 31 16:08:10 2018 +0100

    net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules
    
    [ Upstream commit 30549aab146ccb1275230c3b4b4bc6b4181fd54e ]
    
    When building stmmac, it is only possible to select CONFIG_DWMAC_GENERIC,
    or any of the glue drivers, when CONFIG_STMMAC_PLATFORM is set.
    The only exception is CONFIG_STMMAC_PCI.
    
    When calling of_mdiobus_register(), it will call our ->reset()
    callback, which is set to stmmac_mdio_reset().
    
    Most of the code in stmmac_mdio_reset() is protected by a
    "#if defined(CONFIG_STMMAC_PLATFORM)", which will evaluate
    to false when CONFIG_STMMAC_PLATFORM=m.
    
    Because of this, the phy reset gpio will only be pulled when
    stmmac is built as built-in, but not when built as modules.
    
    Fix this by using "#if IS_ENABLED()" instead of "#if defined()".
    
    Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a04092cebd73ad0974bcab99e8064955d30ef8e1
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Thu Oct 18 09:36:46 2018 -0500

    net: socket: fix a missing-check bug
    
    [ Upstream commit b6168562c8ce2bd5a30e213021650422e08764dc ]
    
    In ethtool_ioctl(), the ioctl command 'ethcmd' is checked through a switch
    statement to see whether it is necessary to pre-process the ethtool
    structure, because, as mentioned in the comment, the structure
    ethtool_rxnfc is defined with padding. If yes, a user-space buffer 'rxnfc'
    is allocated through compat_alloc_user_space(). One thing to note here is
    that, if 'ethcmd' is ETHTOOL_GRXCLSRLALL, the size of the buffer 'rxnfc' is
    partially determined by 'rule_cnt', which is actually acquired from the
    user-space buffer 'compat_rxnfc', i.e., 'compat_rxnfc->rule_cnt', through
    get_user(). After 'rxnfc' is allocated, the data in the original user-space
    buffer 'compat_rxnfc' is then copied to 'rxnfc' through copy_in_user(),
    including the 'rule_cnt' field. However, after this copy, no check is
    re-enforced on 'rxnfc->rule_cnt'. So it is possible that a malicious user
    race to change the value in the 'compat_rxnfc->rule_cnt' between these two
    copies. Through this way, the attacker can bypass the previous check on
    'rule_cnt' and inject malicious data. This can cause undefined behavior of
    the kernel and introduce potential security risk.
    
    This patch avoids the above issue via copying the value acquired by
    get_user() to 'rxnfc->rule_cn', if 'ethcmd' is ETHTOOL_GRXCLSRLALL.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea824d70d6736e7bb02787f92a1c2e79065cf38a
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Fri Oct 26 15:51:06 2018 -0700

    net: sched: gred: pass the right attribute to gred_change_table_def()
    
    [ Upstream commit 38b4f18d56372e1e21771ab7b0357b853330186c ]
    
    gred_change_table_def() takes a pointer to TCA_GRED_DPS attribute,
    and expects it will be able to interpret its contents as
    struct tc_gred_sopt.  Pass the correct gred attribute, instead of
    TCA_OPTIONS.
    
    This bug meant the table definition could never be changed after
    Qdisc was initialized (unless whatever TCA_OPTIONS contained both
    passed netlink validation and was a valid struct tc_gred_sopt...).
    
    Old behaviour:
    $ ip link add type dummy
    $ tc qdisc replace dev dummy0 parent root handle 7: \
         gred setup vqs 4 default 0
    $ tc qdisc replace dev dummy0 parent root handle 7: \
         gred setup vqs 4 default 0
    RTNETLINK answers: Invalid argument
    
    Now:
    $ ip link add type dummy
    $ tc qdisc replace dev dummy0 parent root handle 7: \
         gred setup vqs 4 default 0
    $ tc qdisc replace dev dummy0 parent root handle 7: \
         gred setup vqs 4 default 0
    $ tc qdisc replace dev dummy0 parent root handle 7: \
         gred setup vqs 4 default 0
    
    Fixes: f62d6b936df5 ("[PKT_SCHED]: GRED: Use central VQ change procedure")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7344adab32c7431a629a46b19dea015abc36532e
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Oct 30 00:57:25 2018 -0700

    net/mlx5e: fix csum adjustments caused by RXFCS
    
    [ Upstream commit d48051c5b8376038c2b287c3b1bd55b8d391d567 ]
    
    As shown by Dmitris, we need to use csum_block_add() instead of csum_add()
    when adding the FCS contribution to skb csum.
    
    Before 4.18 (more exactly commit 88078d98d1bb "net: pskb_trim_rcsum()
    and CHECKSUM_COMPLETE are friends"), the whole skb csum was thrown away,
    so RXFCS changes were ignored.
    
    Then before commit d55bef5059dd ("net: fix pskb_trim_rcsum_slow() with
    odd trim offset") both mlx5 and pskb_trim_rcsum_slow() bugs were canceling
    each other.
    
    Now we fixed pskb_trim_rcsum_slow() we need to fix mlx5.
    
    Note that this patch also rewrites mlx5e_get_fcs() to :
    
    - Use skb_header_pointer() instead of reinventing it.
    - Use __get_unaligned_cpu32() to avoid possible non aligned accesses
      as Dmitris pointed out.
    
    Fixes: 902a545904c7 ("net/mlx5e: When RXFCS is set, add FCS data into checksum calculation")
    Reported-by: Paweł Staszewski <pstaszewski@itcare.pl>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Eran Ben Elisha <eranbe@mellanox.com>
    Cc: Saeed Mahameed <saeedm@mellanox.com>
    Cc: Dimitris Michailidis <dmichail@google.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Paweł Staszewski <pstaszewski@itcare.pl>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Tested-By: Maria Pasechnik <mariap@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60a2c3b4a991e730cac8fe5c7d16d3e106bd877a
Author: David Ahern <dsahern@gmail.com>
Date:   Fri Oct 19 10:00:19 2018 -0700

    net/ipv6: Fix index counter for unicast addresses in in6_dump_addrs
    
    [ Upstream commit 4ba4c566ba8448a05e6257e0b98a21f1a0d55315 ]
    
    The loop wants to skip previously dumped addresses, so loops until
    current index >= saved index. If the message fills it wants to save
    the index for the next address to dump - ie., the one that did not
    fit in the current message.
    
    Currently, it is incrementing the index counter before comparing to the
    saved index, and then the saved index is off by 1 - it assumes the
    current address is going to fit in the message.
    
    Change the index handling to increment only after a succesful dump.
    
    Fixes: 502a2ffd7376a ("ipv6: convert idev_list to list macros")
    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 4dcde3a4c5ead3ba97b8819ddc31d39917927909
Author: Fugang Duan <fugang.duan@nxp.com>
Date:   Mon Oct 15 05:19:00 2018 +0000

    net: fec: don't dump RX FIFO register when not available
    
    [ Upstream commit ec20a63aa8b8ec3223fb25cdb2a49f9f9dfda88c ]
    
    Commit db65f35f50e0 ("net: fec: add support of ethtool get_regs") introduce
    ethool "--register-dump" interface to dump all FEC registers.
    
    But not all silicon implementations of the Freescale FEC hardware module
    have the FRBR (FIFO Receive Bound Register) and FRSR (FIFO Receive Start
    Register) register, so we should not be trying to dump them on those that
    don't.
    
    To fix it we create a quirk flag, FEC_QUIRK_HAS_RFREG, and check it before
    dump those RX FIFO registers.
    
    Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc30c16a04cb82949ccf5403c95ebf7304feb229
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Oct 11 11:15:13 2018 -0700

    llc: set SOCK_RCU_FREE in llc_sap_add_socket()
    
    [ Upstream commit 5a8e7aea953bdb6d4da13aff6f1e7f9c62023499 ]
    
    WHen an llc sock is added into the sk_laddr_hash of an llc_sap,
    it is not marked with SOCK_RCU_FREE.
    
    This causes that the sock could be freed while it is still being
    read by __llc_lookup_established() with RCU read lock. sock is
    refcounted, but with RCU read lock, nothing prevents the readers
    getting a zero refcnt.
    
    Fix it by setting SOCK_RCU_FREE in llc_sap_add_socket().
    
    Reported-by: syzbot+11e05f04c15e03be5254@syzkaller.appspotmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23b5d05d91140ecc7ca3be1fa5eacd37a28d1019
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Oct 12 16:22:47 2018 +0200

    ipv6: rate-limit probes for neighbourless routes
    
    [ Upstream commit f547fac624be53ad8b07e9ebca7654a7827ba61b ]
    
    When commit 270972554c91 ("[IPV6]: ROUTE: Add Router Reachability
    Probing (RFC4191).") introduced router probing, the rt6_probe() function
    required that a neighbour entry existed. This neighbour entry is used to
    record the timestamp of the last probe via the ->updated field.
    
    Later, commit 2152caea7196 ("ipv6: Do not depend on rt->n in rt6_probe().")
    removed the requirement for a neighbour entry. Neighbourless routes skip
    the interval check and are not rate-limited.
    
    This patch adds rate-limiting for neighbourless routes, by recording the
    timestamp of the last probe in the fib6_info itself.
    
    Fixes: 2152caea7196 ("ipv6: Do not depend on rt->n in rt6_probe().")
    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 9198d01eb02d262778ff17b8d620485e0a91febc
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Oct 24 14:37:21 2018 +0200

    ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are called
    
    [ Upstream commit ee1abcf689353f36d9322231b4320926096bdee0 ]
    
    Commit a61bbcf28a8c ("[NET]: Store skb->timestamp as offset to a base
    timestamp") introduces a neighbour control buffer and zeroes it out in
    ndisc_rcv(), as ndisc_recv_ns() uses it.
    
    Commit f2776ff04722 ("[IPV6]: Fix address/interface handling in UDP and
    DCCP, according to the scoping architecture.") introduces the usage of the
    IPv6 control buffer in protocol error handlers (e.g. inet6_iif() in
    present-day __udp6_lib_err()).
    
    Now, with commit b94f1c0904da ("ipv6: Use icmpv6_notify() to propagate
    redirect, instead of rt6_redirect()."), we call protocol error handlers
    from ndisc_redirect_rcv(), after the control buffer is already stolen and
    some parts are already zeroed out. This implies that inet6_iif() on this
    path will always return zero.
    
    This gives unexpected results on UDP socket lookup in __udp6_lib_err(), as
    we might actually need to match sockets for a given interface.
    
    Instead of always claiming the control buffer in ndisc_rcv(), do that only
    when needed.
    
    Fixes: b94f1c0904da ("ipv6: Use icmpv6_notify() to propagate redirect, instead of rt6_redirect().")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Reviewed-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 558af64846ca1d05a4332a2ef1ca736a7a80212a
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Oct 12 18:58:53 2018 -0700

    ipv6: mcast: fix a use-after-free in inet6_mc_check
    
    [ Upstream commit dc012f3628eaecfb5ba68404a5c30ef501daf63d ]
    
    syzbot found a use-after-free in inet6_mc_check [1]
    
    The problem here is that inet6_mc_check() uses rcu
    and read_lock(&iml->sflock)
    
    So the fact that ip6_mc_leave_src() is called under RTNL
    and the socket lock does not help us, we need to acquire
    iml->sflock in write mode.
    
    In the future, we should convert all this stuff to RCU.
    
    [1]
    BUG: KASAN: use-after-free in ipv6_addr_equal include/net/ipv6.h:521 [inline]
    BUG: KASAN: use-after-free in inet6_mc_check+0xae7/0xb40 net/ipv6/mcast.c:649
    Read of size 8 at addr ffff8801ce7f2510 by task syz-executor0/22432
    
    CPU: 1 PID: 22432 Comm: syz-executor0 Not tainted 4.19.0-rc7+ #280
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1c4/0x2b4 lib/dump_stack.c:113
     print_address_description.cold.8+0x9/0x1ff mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.9+0x242/0x309 mm/kasan/report.c:412
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
     ipv6_addr_equal include/net/ipv6.h:521 [inline]
     inet6_mc_check+0xae7/0xb40 net/ipv6/mcast.c:649
     __raw_v6_lookup+0x320/0x3f0 net/ipv6/raw.c:98
     ipv6_raw_deliver net/ipv6/raw.c:183 [inline]
     raw6_local_deliver+0x3d3/0xcb0 net/ipv6/raw.c:240
     ip6_input_finish+0x467/0x1aa0 net/ipv6/ip6_input.c:345
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:426
     ip6_mc_input+0x48a/0xd20 net/ipv6/ip6_input.c:503
     dst_input include/net/dst.h:450 [inline]
     ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ipv6_rcv+0x120/0x640 net/ipv6/ip6_input.c:271
     __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4913
     __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5023
     netif_receive_skb_internal+0x12c/0x620 net/core/dev.c:5126
     napi_frags_finish net/core/dev.c:5664 [inline]
     napi_gro_frags+0x75a/0xc90 net/core/dev.c:5737
     tun_get_user+0x3189/0x4250 drivers/net/tun.c:1923
     tun_chr_write_iter+0xb9/0x154 drivers/net/tun.c:1968
     call_write_iter include/linux/fs.h:1808 [inline]
     do_iter_readv_writev+0x8b0/0xa80 fs/read_write.c:680
     do_iter_write+0x185/0x5f0 fs/read_write.c:959
     vfs_writev+0x1f1/0x360 fs/read_write.c:1004
     do_writev+0x11a/0x310 fs/read_write.c:1039
     __do_sys_writev fs/read_write.c:1112 [inline]
     __se_sys_writev fs/read_write.c:1109 [inline]
     __x64_sys_writev+0x75/0xb0 fs/read_write.c:1109
     do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x457421
    Code: 75 14 b8 14 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 34 b5 fb ff c3 48 83 ec 08 e8 1a 2d 00 00 48 89 04 24 b8 14 00 00 00 0f 05 <48> 8b 3c 24 48 89 c2 e8 63 2d 00 00 48 89 d0 48 83 c4 08 48 3d 01
    RSP: 002b:00007f2d30ecaba0 EFLAGS: 00000293 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 000000000000003e RCX: 0000000000457421
    RDX: 0000000000000001 RSI: 00007f2d30ecabf0 RDI: 00000000000000f0
    RBP: 0000000020000500 R08: 00000000000000f0 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000293 R12: 00007f2d30ecb6d4
    R13: 00000000004c4890 R14: 00000000004d7b90 R15: 00000000ffffffff
    
    Allocated by task 22437:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553
     __do_kmalloc mm/slab.c:3718 [inline]
     __kmalloc+0x14e/0x760 mm/slab.c:3727
     kmalloc include/linux/slab.h:518 [inline]
     sock_kmalloc+0x15a/0x1f0 net/core/sock.c:1983
     ip6_mc_source+0x14dd/0x1960 net/ipv6/mcast.c:427
     do_ipv6_setsockopt.isra.9+0x3afb/0x45d0 net/ipv6/ipv6_sockglue.c:743
     ipv6_setsockopt+0xbd/0x170 net/ipv6/ipv6_sockglue.c:933
     rawv6_setsockopt+0x59/0x140 net/ipv6/raw.c:1069
     sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3038
     __sys_setsockopt+0x1ba/0x3c0 net/socket.c:1902
     __do_sys_setsockopt net/socket.c:1913 [inline]
     __se_sys_setsockopt net/socket.c:1910 [inline]
     __x64_sys_setsockopt+0xbe/0x150 net/socket.c:1910
     do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 22430:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521
     kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
     __cache_free mm/slab.c:3498 [inline]
     kfree+0xcf/0x230 mm/slab.c:3813
     __sock_kfree_s net/core/sock.c:2004 [inline]
     sock_kfree_s+0x29/0x60 net/core/sock.c:2010
     ip6_mc_leave_src+0x11a/0x1d0 net/ipv6/mcast.c:2448
     __ipv6_sock_mc_close+0x20b/0x4e0 net/ipv6/mcast.c:310
     ipv6_sock_mc_close+0x158/0x1d0 net/ipv6/mcast.c:328
     inet6_release+0x40/0x70 net/ipv6/af_inet6.c:452
     __sock_release+0xd7/0x250 net/socket.c:579
     sock_close+0x19/0x20 net/socket.c:1141
     __fput+0x385/0xa30 fs/file_table.c:278
     ____fput+0x15/0x20 fs/file_table.c:309
     task_work_run+0x1e8/0x2a0 kernel/task_work.c:113
     tracehook_notify_resume include/linux/tracehook.h:193 [inline]
     exit_to_usermode_loop+0x318/0x380 arch/x86/entry/common.c:166
     prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
     syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
     do_syscall_64+0x6be/0x820 arch/x86/entry/common.c:293
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The buggy address belongs to the object at ffff8801ce7f2500
     which belongs to the cache kmalloc-192 of size 192
    The buggy address is located 16 bytes inside of
     192-byte region [ffff8801ce7f2500, ffff8801ce7f25c0)
    The buggy address belongs to the page:
    page:ffffea000739fc80 count:1 mapcount:0 mapping:ffff8801da800040 index:0x0
    flags: 0x2fffc0000000100(slab)
    raw: 02fffc0000000100 ffffea0006f6e548 ffffea000737b948 ffff8801da800040
    raw: 0000000000000000 ffff8801ce7f2000 0000000100000010 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801ce7f2400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8801ce7f2480: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    >ffff8801ce7f2500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                             ^
     ffff8801ce7f2580: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
     ffff8801ce7f2600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9801a672beb65c22e712a937106bf5236384d384
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Fri Oct 26 10:28:43 2018 +0800

    bridge: do not add port to router list when receives query with source 0.0.0.0
    
    [ Upstream commit 5a2de63fd1a59c30c02526d427bc014b98adf508 ]
    
    Based on RFC 4541, 2.1.1.  IGMP Forwarding Rules
    
      The switch supporting IGMP snooping must maintain a list of
      multicast routers and the ports on which they are attached.  This
      list can be constructed in any combination of the following ways:
    
      a) This list should be built by the snooping switch sending
         Multicast Router Solicitation messages as described in IGMP
         Multicast Router Discovery [MRDISC].  It may also snoop
         Multicast Router Advertisement messages sent by and to other
         nodes.
    
      b) The arrival port for IGMP Queries (sent by multicast routers)
         where the source address is not 0.0.0.0.
    
    We should not add the port to router list when receives query with source
    0.0.0.0.
    
    Reported-by: Ying Xu <yinxu@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b13411edcf717324cbd66d0678f23d5ccf587078
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Thu Jul 5 15:15:27 2018 +0200

    perf tools: Disable parallelism for 'make clean'
    
    [ Upstream commit da15fc2fa9c07b23db8f5e479bd8a9f0d741ca07 ]
    
    The Yocto build system does a 'make clean' when rebuilding due to
    changed dependencies, and that consistently fails for me (causing the
    whole BSP build to fail) with errors such as
    
    | find: '[...]/perf/1.0-r9/perf-1.0/plugin_mac80211.so': No such file or directory
    | find: '[...]/perf/1.0-r9/perf-1.0/plugin_mac80211.so': No such file or directory
    | find: find: '[...]/perf/1.0-r9/perf-1.0/libtraceevent.a''[...]/perf/1.0-r9/perf-1.0/libtraceevent.a': No such file or directory: No such file or directory
    |
    [...]
    | find: cannot delete '/mnt/xfs/devel/pil/yocto/tmp-glibc/work/wandboard-oe-linux-gnueabi/perf/1.0-r9/perf-1.0/util/.pstack.o.cmd': No such file or directory
    
    Apparently (despite the comment), 'make clean' ends up launching
    multiple sub-makes that all want to remove the same things - perhaps
    this only happens in combination with a O=... parameter. In any case, we
    don't lose much by explicitly disabling the parallelism for the clean
    target, and it makes automated builds much more reliable.
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20180705131527.19749-1-linux@rasmusvillemoes.dk
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f1f040bf29b71489ebdd1b9b44bbe3f1ecd14c56
Author: Sasha Levin <sashal@kernel.org>
Date:   Wed Oct 31 11:04:10 2018 -0400

    Revert "netfilter: ipv6: nf_defrag: drop skb dst before queueing"
    
    This reverts commit 84379c9afe011020e797e3f50a662b08a6355dcf.
    
    From Florian Westphal <fw@strlen.de>:
    
            It causes kernel crash for locally generated ipv6 fragments
            when netfilter ipv6 defragmentation is used.
    
            The faulty commit is not essential for -stable, it only
            delays netns teardown for longer than needed when that netns
            still has ipv6 frags queued.  Much better than crash :-/
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d496cdeede289a5c97447fb799db67592bb010b0
Author: Sasha Levin <sashal@kernel.org>
Date:   Fri Oct 26 07:18:59 2018 -0400

    Revert "mm: slowly shrink slabs with a relatively small number of objects"
    
    This reverts commit 62aad93f09c1952ede86405894df1b22012fd5ab.
    
    Which was upstream commit 172b06c32b94 ("mm: slowly shrink slabs with a
    relatively small number of objects").
    
    The upstream commit was found to cause regressions. While there is a
    proposed fix upstream, revent this patch from stable trees for now as
    testing the fix will take some time.
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4afb03f48e7ec5aca272aec3a1b191b3e0a062db
Author: Khazhismel Kumykov <khazhy@google.com>
Date:   Fri Oct 12 21:34:40 2018 -0700

    fs/fat/fatent.c: add cond_resched() to fat_count_free_clusters()
    
    [ Upstream commit ac081c3be3fae6d0cc3e1862507fca3862d30b67 ]
    
    On non-preempt kernels this loop can take a long time (more than 50 ticks)
    processing through entries.
    
    Link: http://lkml.kernel.org/r/20181010172623.57033-1-khazhy@google.com
    Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
    Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9721f5af4d23754cbf1557736a7eff16e21e8ff0
Author: David Howells <dhowells@redhat.com>
Date:   Thu Oct 11 22:45:49 2018 +0100

    afs: Fix cell proc list
    
    [ Upstream commit 6b3944e42e2e554aa5a4be681ecd70dccd459114 ]
    
    Access to the list of cells by /proc/net/afs/cells has a couple of
    problems:
    
     (1) It should be checking against SEQ_START_TOKEN for the keying the
         header line.
    
     (2) It's only holding the RCU read lock, so it can't just walk over the
         list without following the proper RCU methods.
    
    Fix these by using an hlist instead of an ordinary list and using the
    appropriate accessor functions to follow it with RCU.
    
    Since the code that adds a cell to the list must also necessarily change,
    sort the list on insertion whilst we're at it.
    
    Fixes: 989782dcdc91 ("afs: Overhaul cell database management")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9277b65e04d602dfee4a24a14c3587496ea35b89
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Thu Sep 13 13:00:00 2018 +0200

    vmlinux.lds.h: Fix linker warnings about orphan .LPBX sections
    
    [ Upstream commit 52c8ee5bad8f33d02c567f6609f43d69303fc48d ]
    
    Enabling both CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y and
    CONFIG_GCOV_PROFILE_ALL=y results in linker warnings:
    
      warning: orphan section `.data..LPBX1' being placed in
      section `.data..LPBX1'.
    
    LD_DEAD_CODE_DATA_ELIMINATION adds compiler flag -fdata-sections. This
    option causes GCC to create separate data sections for data objects,
    including those generated by GCC internally for gcov profiling. The
    names of these objects start with a dot (.LPBX0, .LPBX1), resulting in
    section names starting with 'data..'.
    
    As section names starting with 'data..' are used for specific purposes
    in the Linux kernel, the linker script does not automatically include
    them in the output data section, resulting in the "orphan section"
    linker warnings.
    
    Fix this by specifically including sections named "data..LPBX*" in the
    data section.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Tested-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e266c397e724e1fec9439570236e66bb11f22e9e
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Thu Sep 13 12:59:59 2018 +0200

    vmlinux.lds.h: Fix incomplete .text.exit discards
    
    [ Upstream commit 8dcf86caa1e3daf4a6ccf38e97f4f752b411f829 ]
    
    Enabling CONFIG_GCOV_PROFILE_ALL=y causes linker errors on ARM:
    
      `.text.exit' referenced in section `.ARM.exidx.text.exit':
      defined in discarded section `.text.exit'
    
      `.text.exit' referenced in section `.fini_array.00100':
      defined in discarded section `.text.exit'
    
    And related errors on NDS32:
    
      `.text.exit' referenced in section `.dtors.65435':
      defined in discarded section `.text.exit'
    
    The gcov compiler flags cause certain compiler versions to generate
    additional destructor-related sections that are not yet handled by the
    linker script, resulting in references between discarded and
    non-discarded sections.
    
    Since destructors are not used in the Linux kernel, fix this by
    discarding these additional sections.
    
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Tested-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Greentime Hu <green.hu@gmail.com>
    Tested-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4659254b9871b541e47bc1f27b7e57fc4d75d86
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Oct 11 10:54:53 2018 +0200

    selftests: udpgso_bench.sh explicitly requires bash
    
    [ Upstream commit 12a2ea962c06efb30764c47b140d2ec9d3cd7cb0 ]
    
    The udpgso_bench.sh script requires several bash-only features. This
    may cause random failures if the default shell is not bash.
    Address the above explicitly requiring bash as the script interpreter
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92e648292600142271727b98768e41598851910b
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Oct 11 10:54:52 2018 +0200

    selftests: rtnetlink.sh explicitly requires bash.
    
    [ Upstream commit 3c718e677c2b35b449992adc36ecce883c467e98 ]
    
    the script rtnetlink.sh requires a bash-only features (sleep with sub-second
    precision). This may cause random test failure if the default shell is not
    bash.
    Address the above explicitly requiring bash as the script interpreter.
    
    Fixes: 33b01b7b4f19 ("selftests: add rtnetlink test script")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 941a8d0b8409c2c3fa8914f43bb5eaaae97d73af
Author: Ka-Cheong Poon <ka-cheong.poon@oracle.com>
Date:   Mon Oct 8 09:17:11 2018 -0700

    rds: RDS (tcp) hangs on sendto() to unresponding address
    
    [ Upstream commit 9a4890bd6d6325a1c88564a20ab310b2d56f6094 ]
    
    In rds_send_mprds_hash(), if the calculated hash value is non-zero and
    the MPRDS connections are not yet up, it will wait.  But it should not
    wait if the send is non-blocking.  In this case, it should just use the
    base c_path for sending the message.
    
    Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87113db1242c7a26fb93e5c5a9ec6d69ac177c4d
Author: Valentine Fatiev <Valentinef@mellanox.com>
Date:   Wed Oct 10 09:56:25 2018 +0300

    IB/mlx5: Unmap DMA addr from HCA before IOMMU
    
    [ Upstream commit dd9a403495704fc80fb9f399003013ef2be2ee23 ]
    
    The function that puts back the MR in cache also removes the DMA address
    from the HCA. Therefore we need to call this function before we remove
    the DMA mapping from MMU. Otherwise the HCA may access a memory that
    is no longer DMA mapped.
    
    Call trace:
    NMI: IOCK error (debug interrupt?) for reason 71 on CPU 0.
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.0-rc6+ #4
    Hardware name: HP ProLiant DL360p Gen8, BIOS P71 08/20/2012
    RIP: 0010:intel_idle+0x73/0x120
    Code: 80 5c 01 00 0f ae 38 0f ae f0 31 d2 65 48 8b 04 25 80 5c 01 00 48 89 d1 0f 60 02
    RSP: 0018:ffffffff9a403e38 EFLAGS: 00000046
    RAX: 0000000000000030 RBX: 0000000000000005 RCX: 0000000000000001
    RDX: 0000000000000000 RSI: ffffffff9a5790c0 RDI: 0000000000000000
    RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000007cf9
    R10: 000000000000030a R11: 0000000000000018 R12: 0000000000000000
    R13: ffffffff9a5792b8 R14: ffffffff9a5790c0 R15: 0000002b48471e4d
    FS:  0000000000000000(0000) GS:ffff9c6caf400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f5737185000 CR3: 0000000590c0a002 CR4: 00000000000606f0
    Call Trace:
     cpuidle_enter_state+0x7e/0x2e0
     do_idle+0x1ed/0x290
     cpu_startup_entry+0x6f/0x80
     start_kernel+0x524/0x544
     ? set_init_arg+0x55/0x55
     secondary_startup_64+0xa4/0xb0
    DMAR: DRHD: handling fault status reg 2
    DMAR: [DMA Read] Request device [04:00.0] fault addr b34d2000 [fault reason 06] PTE Read access is not set
    DMAR: [DMA Read] Request device [01:00.2] fault addr bff8b000 [fault reason 06] PTE Read access is not set
    
    Fixes: f3f134f5260a ("RDMA/mlx5: Fix crash while accessing garbage pointer and freed memory")
    Signed-off-by: Valentine Fatiev <valentinef@mellanox.com>
    Reviewed-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e14b8b11ac50531ee0b670fa1f9fe762b7dd70e1
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Mon Oct 8 09:32:13 2018 -0700

    gpio: Assign gpio_irq_chip::parents to non-stack pointer
    
    [ Upstream commit 3e779a2e7f909015f21428b66834127496110b6d ]
    
    gpiochip_set_cascaded_irqchip() is passed 'parent_irq' as an argument
    and then the address of that argument is assigned to the gpio chips
    gpio_irq_chip 'parents' pointer shortly thereafter. This can't ever
    work, because we've just assigned some stack address to a pointer that
    we plan to dereference later in gpiochip_irq_map(). I ran into this
    issue with the KASAN report below when gpiochip_irq_map() tried to setup
    the parent irq with a total junk pointer for the 'parents' array.
    
    BUG: KASAN: stack-out-of-bounds in gpiochip_irq_map+0x228/0x248
    Read of size 4 at addr ffffffc0dde472e0 by task swapper/0/1
    
    CPU: 7 PID: 1 Comm: swapper/0 Not tainted 4.14.72 #34
    Call trace:
    [<ffffff9008093638>] dump_backtrace+0x0/0x718
    [<ffffff9008093da4>] show_stack+0x20/0x2c
    [<ffffff90096b9224>] __dump_stack+0x20/0x28
    [<ffffff90096b91c8>] dump_stack+0x80/0xbc
    [<ffffff900845a350>] print_address_description+0x70/0x238
    [<ffffff900845a8e4>] kasan_report+0x1cc/0x260
    [<ffffff900845aa14>] __asan_report_load4_noabort+0x2c/0x38
    [<ffffff900897e098>] gpiochip_irq_map+0x228/0x248
    [<ffffff900820cc08>] irq_domain_associate+0x114/0x2ec
    [<ffffff900820d13c>] irq_create_mapping+0x120/0x234
    [<ffffff900820da78>] irq_create_fwspec_mapping+0x4c8/0x88c
    [<ffffff900820e2d8>] irq_create_of_mapping+0x180/0x210
    [<ffffff900917114c>] of_irq_get+0x138/0x198
    [<ffffff9008dc70ac>] spi_drv_probe+0x94/0x178
    [<ffffff9008ca5168>] driver_probe_device+0x51c/0x824
    [<ffffff9008ca6538>] __device_attach_driver+0x148/0x20c
    [<ffffff9008ca14cc>] bus_for_each_drv+0x120/0x188
    [<ffffff9008ca570c>] __device_attach+0x19c/0x2dc
    [<ffffff9008ca586c>] device_initial_probe+0x20/0x2c
    [<ffffff9008ca18bc>] bus_probe_device+0x80/0x154
    [<ffffff9008c9b9b4>] device_add+0x9b8/0xbdc
    [<ffffff9008dc7640>] spi_add_device+0x1b8/0x380
    [<ffffff9008dcbaf0>] spi_register_controller+0x111c/0x1378
    [<ffffff9008dd6b10>] spi_geni_probe+0x4dc/0x6f8
    [<ffffff9008cab058>] platform_drv_probe+0xdc/0x130
    [<ffffff9008ca5168>] driver_probe_device+0x51c/0x824
    [<ffffff9008ca59cc>] __driver_attach+0x100/0x194
    [<ffffff9008ca0ea8>] bus_for_each_dev+0x104/0x16c
    [<ffffff9008ca58c0>] driver_attach+0x48/0x54
    [<ffffff9008ca1edc>] bus_add_driver+0x274/0x498
    [<ffffff9008ca8448>] driver_register+0x1ac/0x230
    [<ffffff9008caaf6c>] __platform_driver_register+0xcc/0xdc
    [<ffffff9009c4b33c>] spi_geni_driver_init+0x1c/0x24
    [<ffffff9008084cb8>] do_one_initcall+0x240/0x3dc
    [<ffffff9009c017d0>] kernel_init_freeable+0x378/0x468
    [<ffffff90096e8240>] kernel_init+0x14/0x110
    [<ffffff9008086fcc>] ret_from_fork+0x10/0x18
    
    The buggy address belongs to the page:
    page:ffffffbf037791c0 count:0 mapcount:0 mapping:          (null) index:0x0
    flags: 0x4000000000000000()
    raw: 4000000000000000 0000000000000000 0000000000000000 00000000ffffffff
    raw: ffffffbf037791e0 ffffffbf037791e0 0000000000000000 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffffffc0dde47180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffffffc0dde47200: f1 f1 f1 f1 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f2 f2
    >ffffffc0dde47280: f2 f2 00 00 00 00 00 00 00 00 00 00 f3 f3 f3 f3
                                                           ^
     ffffffc0dde47300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffffffc0dde47380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Let's leave around one unsigned int in the gpio_irq_chip struct for the
    single parent irq case and repoint the 'parents' array at it. This way
    code is left mostly intact to setup parents and we waste an extra few
    bytes per structure of which there should be only a handful in a system.
    
    Cc: Evan Green <evgreen@chromium.org>
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Grygorii Strashko <grygorii.strashko@ti.com>
    Fixes: e0d897289813 ("gpio: Implement tighter IRQ chip integration")
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e7579cb736eca9d67b111be3f2d8336e76fedcd9
Author: Arthur Kiyanovski <akiyano@amazon.com>
Date:   Tue Oct 9 11:21:29 2018 +0300

    net: ena: fix NULL dereference due to untimely napi initialization
    
    [ Upstream commit 78a55d05def95144ca5fa9a64c49b2a0636a9866 ]
    
    napi poll functions should be initialized before running request_irq(),
    to handle a rare condition where there is a pending interrupt, causing
    the ISR to fire immediately while the poll function wasn't set yet,
    causing a NULL dereference.
    
    Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
    Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2abc117c97993f5787f8c650802c8eccefffff0f
Author: Arthur Kiyanovski <akiyano@amazon.com>
Date:   Tue Oct 9 11:21:28 2018 +0300

    net: ena: fix rare bug when failed restart/resume is followed by driver removal
    
    [ Upstream commit d7703ddbd7c9cb1ab7c08e1b85b314ff8cea38e9 ]
    
    In a rare scenario when ena_device_restore() fails, followed by device
    remove, an FLR will not be issued. In this case, the device will keep
    sending asynchronous AENQ keep-alive events, even after driver removal,
    leading to memory corruption.
    
    Fixes: 8c5c7abdeb2d ("net: ena: add power management ops to the ENA driver")
    Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0af327d145f8a30dde2398d82a6fbd60b4cd65a
Author: Arthur Kiyanovski <akiyano@amazon.com>
Date:   Tue Oct 9 11:21:27 2018 +0300

    net: ena: fix warning in rmmod caused by double iounmap
    
    [ Upstream commit d79c3888bde6581da7ff9f9d6f581900ecb5e632 ]
    
    Memory mapped with devm_ioremap is automatically freed when the driver
    is disconnected from the device. Therefore there is no need to
    explicitly call devm_iounmap.
    
    Fixes: 0857d92f71b6 ("net: ena: add missing unmap bars on device removal")
    Fixes: 411838e7b41c ("net: ena: fix rare kernel crash when bar memory remap fails")
    Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6be48d8274ef4d947bc03311f98f055112b65e0a
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Oct 9 18:35:29 2018 +0200

    KVM: x86: support CONFIG_KVM_AMD=y with CONFIG_CRYPTO_DEV_CCP_DD=m
    
    [ Upstream commit 853c110982eaff0d99dace3f66f1ba58b5bfd9d5 ]
    
    SEV requires access to the AMD cryptographic device APIs, and this
    does not work when KVM is builtin and the crypto driver is a module.
    Actually the Kconfig conditions for CONFIG_KVM_AMD_SEV try to disable
    SEV in that case, but it does not work because the actual crypto
    calls are not culled, only sev_hardware_setup() is.
    
    This patch adds two CONFIG_KVM_AMD_SEV checks that gate all the remaining
    SEV code; it fixes this particular configuration, and drops 5 KiB of
    code when CONFIG_KVM_AMD_SEV=n.
    
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98154205f7a94bc5580767097313238ca39b8dc2
Author: David Howells <dhowells@redhat.com>
Date:   Mon Oct 8 15:46:17 2018 +0100

    rxrpc: Fix connection-level abort handling
    
    [ Upstream commit 647530924f47c93db472ee3cf43b7ef1425581b6 ]
    
    Fix connection-level abort handling to cache the abort and error codes
    properly so that a new incoming call can be properly aborted if it races
    with the parent connection being aborted by another CPU.
    
    The abort_code and error parameters can then be dropped from
    rxrpc_abort_calls().
    
    Fixes: f5c17aaeb2ae ("rxrpc: Calls should only have one terminal state")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47af9661cc87036f9d6ad4036b59187c659255f9
Author: David Howells <dhowells@redhat.com>
Date:   Mon Oct 8 15:46:11 2018 +0100

    rxrpc: Only take the rwind and mtu values from latest ACK
    
    [ Upstream commit 298bc15b2079c324e82d0a6fda39c3d762af7282 ]
    
    Move the out-of-order and duplicate ACK packet check to before the call to
    rxrpc_input_ackinfo() so that the receive window size and MTU size are only
    checked in the latest ACK packet and don't regress.
    
    Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54776c736d4192467596ecfd34b57e79f1186bb7
Author: David Howells <dhowells@redhat.com>
Date:   Mon Oct 8 15:46:05 2018 +0100

    rxrpc: Carry call state out of locked section in rxrpc_rotate_tx_window()
    
    [ Upstream commit dfe995224693798e554ab4770f6d8a096afc60cd ]
    
    Carry the call state out of the locked section in rxrpc_rotate_tx_window()
    rather than sampling it afterwards.  This is only used to select tracepoint
    data, but could have changed by the time we do the tracepoint.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3dcbf121240a775d509b55fda510ca03cd3497a
Author: David Howells <dhowells@redhat.com>
Date:   Mon Oct 8 15:46:01 2018 +0100

    rxrpc: Don't check RXRPC_CALL_TX_LAST after calling rxrpc_rotate_tx_window()
    
    [ Upstream commit c479d5f2c2e1ce609da08c075054440d97ddff52 ]
    
    We should only call the function to end a call's Tx phase if we rotated the
    marked-last packet out of the transmission buffer.
    
    Make rxrpc_rotate_tx_window() return an indication of whether it just
    rotated the packet marked as the last out of the transmit buffer, carrying
    the information out of the locked section in that function.
    
    We can then check the return value instead of examining RXRPC_CALL_TX_LAST.
    
    Fixes: 70790dbe3f66 ("rxrpc: Pass the last Tx packet marker in the annotation buffer")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 903fb78f743653657f1033320a14a3ba83f4e8a1
Author: Milian Wolff <milian.wolff@kdab.com>
Date:   Wed Sep 26 15:52:06 2018 +0200

    perf record: Use unmapped IP for inline callchain cursors
    
    [ Upstream commit 7a8a8fcf7b860e4b2d4edc787c844d41cad9dfcf ]
    
    Only use the mapped IP to find inline frames, but keep using the
    unmapped IP for the callchain cursor. This ensures we properly show the
    unmapped IP when displaying a frame we received via the
    dso__parse_addr_inlines API for a module which does not contain
    sufficient debug symbols to show the srcline.
    
    This is another follow-up to commit 19610184693c ("perf script: Show
    virtual addresses instead of offsets").
    
    Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Sandipan Das <sandipan@linux.ibm.com>
    Fixes: 19610184693c ("perf script: Show virtual addresses instead of offsets")
    Link: http://lkml.kernel.org/r/20180926135207.30263-2-milian.wolff@kdab.com
    Link: http://lkml.kernel.org/r/20181002073949.3297-1-milian.wolff@kdab.com
    [ Squashed a fix from Milian for a problem reported by Ravi, fixed up space damage ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37e241d140949b71bb31ef1a5223dd59aeaa50d9
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Sep 18 16:08:02 2018 -0300

    perf python: Use -Wno-redundant-decls to build with PYTHON=python3
    
    [ Upstream commit 05a2f54679861deb188750ba2a70187000b2c71f ]
    
    When building in ClearLinux using 'make PYTHON=python3' with gcc 8.2.1
    it fails with:
    
        GEN      /tmp/build/perf/python/perf.so
      In file included from /usr/include/python3.7m/Python.h:126,
                       from /git/linux/tools/perf/util/python.c:2:
      /usr/include/python3.7m/import.h:58:24: error: redundant redeclaration of ‘_PyImport_AddModuleObject’ [-Werror=redundant-decls]
       PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *, PyObject *);
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.7m/import.h:47:24: note: previous declaration of ‘_PyImport_AddModuleObject’ was here
       PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *name,
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
      error: command 'gcc' failed with exit status 1
    
    And indeed there is a redundant declaration in that Python.h file, one
    with parameter names and the other without, so just add
    -Wno-error=redundant-decls to the python setup instructions.
    
    Now perf builds with gcc in ClearLinux with the following Dockerfile:
    
      # docker.io/acmel/linux-perf-tools-build-clearlinux:latest
      FROM docker.io/clearlinux:latest
      MAINTAINER Arnaldo Carvalho de Melo <acme@kernel.org>
      RUN swupd update && \
          swupd bundle-add sysadmin-basic-dev
      RUN mkdir -m 777 -p /git /tmp/build/perf /tmp/build/objtool /tmp/build/linux && \
          groupadd -r perfbuilder && \
          useradd -m -r -g perfbuilder perfbuilder && \
          chown -R perfbuilder.perfbuilder /tmp/build/ /git/
      USER perfbuilder
      COPY rx_and_build.sh /
      ENV EXTRA_MAKE_ARGS=PYTHON=python3
      ENTRYPOINT ["/rx_and_build.sh"]
    
    Now to figure out why the build fails with clang, that is present in the
    above container as detected by the rx_and_build.sh script:
    
      clang version 6.0.1 (tags/RELEASE_601/final)
      Target: x86_64-unknown-linux-gnu
      Thread model: posix
      InstalledDir: /usr/sbin
      make: Entering directory '/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ OFF ]
      ...            dwarf_getlocations: [ OFF ]
      ...                         glibc: [ OFF ]
      ...                          gtk2: [ OFF ]
      ...                      libaudit: [ OFF ]
      ...                        libbfd: [ OFF ]
      ...                        libelf: [ OFF ]
      ...                       libnuma: [ OFF ]
      ...        numa_num_possible_cpus: [ OFF ]
      ...                       libperl: [ OFF ]
      ...                     libpython: [ OFF ]
      ...                      libslang: [ OFF ]
      ...                     libcrypto: [ OFF ]
      ...                     libunwind: [ OFF ]
      ...            libdw-dwarf-unwind: [ OFF ]
      ...                          zlib: [ OFF ]
      ...                          lzma: [ OFF ]
      ...                     get_cpuid: [ OFF ]
      ...                           bpf: [ OFF ]
    
      Makefile.config:331: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.
      make[1]: *** [Makefile.perf:206: sub-make] Error 2
      make: *** [Makefile:70: all] Error 2
      make: Leaving directory '/git/linux/tools/perf'
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Thiago Macieira <thiago.macieira@intel.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-c3khb9ac86s00qxzjrueomme@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b401f26406f85d82b9a741795edd4bfa1caa49e
Author: Sascha Hauer <s.hauer@pengutronix.de>
Date:   Wed Sep 12 08:23:01 2018 +0200

    ARM: dts: imx53-qsb: disable 1.2GHz OPP
    
    [ Upstream commit eea96566c189c77e5272585984eb2729881a2f1d ]
    
    The maximum CPU frequency for the i.MX53 QSB is 1GHz, so disable the
    1.2GHz OPP. This makes the board work again with configs that have
    cpufreq enabled like imx_v6_v7_defconfig on which the board stopped
    working with the addition of cpufreq-dt support.
    
    Fixes: 791f416608 ("ARM: dts: imx53: add cpufreq-dt support")
    
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 755b72711bbc5986efe3ef76f38c64a81b7af591
Author: Paul Burton <paul.burton@mips.com>
Date:   Mon Aug 20 15:36:17 2018 -0700

    compiler.h: Allow arch-specific asm/compiler.h
    
    [ Upstream commit 04f264d3a8b0eb25d378127bd78c3c9a0261c828 ]
    
    We have a need to override the definition of
    barrier_before_unreachable() for MIPS, which means we either need to add
    architecture-specific code into linux/compiler-gcc.h or we need to allow
    the architecture to provide a header that can define the macro before
    the generic definition. The latter seems like the better approach.
    
    A straightforward approach to the per-arch header is to make use of
    asm-generic to provide a default empty header & adjust architectures
    which don't need anything specific to make use of that by adding the
    header to generic-y. Unfortunately this doesn't work so well due to
    commit 28128c61e08e ("kconfig.h: Include compiler types to avoid missed
    struct attributes") which caused linux/compiler_types.h to be included
    in the compilation of every C file via the -include linux/kconfig.h flag
    in c_flags.
    
    Because the -include flag is present for all C files we compile, we need
    the architecture-provided header to be present before any C files are
    compiled. If any C files can be compiled prior to the asm-generic header
    wrappers being generated then we hit a build failure due to missing
    header. Such cases do exist - one pointed out by the kbuild test robot
    is the compilation of arch/ia64/kernel/nr-irqs.c, which occurs as part
    of the archprepare target [1].
    
    This leaves us with a few options:
    
      1) Use generic-y & fix any build failures we find by enforcing
         ordering such that the asm-generic target occurs before any C
         compilation, such that linux/compiler_types.h can always include
         the generated asm-generic wrapper which in turn includes the empty
         asm-generic header. This would rely on us finding all the
         problematic cases - I don't know for sure that the ia64 issue is
         the only one.
    
      2) Add an actual empty header to each architecture, so that we don't
         need the generated asm-generic wrapper. This seems messy.
    
      3) Give up & add #ifdef CONFIG_MIPS or similar to
         linux/compiler_types.h. This seems messy too.
    
      4) Include the arch header only when it's actually needed, removing
         the need for the asm-generic wrapper for all other architectures.
    
    This patch allows us to use approach 4, by including an asm/compiler.h
    header from linux/compiler_types.h after the inclusion of the
    compiler-specific linux/compiler-*.h header(s). We do this
    conditionally, only when CONFIG_HAVE_ARCH_COMPILER_H is selected, in
    order to avoid the need for asm-generic wrappers & the associated build
    ordering issue described above. The asm/compiler.h header is included
    after the generic linux/compiler-*.h header(s) for consistency with the
    way linux/compiler-intel.h & linux/compiler-clang.h are included after
    the linux/compiler-gcc.h header that they override.
    
    [1] https://lists.01.org/pipermail/kbuild-all/2018-August/051175.html
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20269/
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-arch@vger.kernel.org
    Cc: linux-kbuild@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff78e12f6587a1b314aa28313d5ff4d54f0f071a
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Sep 19 20:52:45 2018 +0200

    HID: i2c-hid: Remove RESEND_REPORT_DESCR quirk and its handling
    
    [ Upstream commit afbb1169ed5b58cfca017e368b53e019cf285853 ]
    
    Commit 52cf93e63ee6 ("HID: i2c-hid: Don't reset device upon system resume")
    removes the need for the RESEND_REPORT_DESCR quirk for Raydium devices, but
    kept it for the SIS device id 10FB touchscreens, as the author of that
    commit could not determine if the quirk is still necessary there.
    
    I've tested suspend/resume on a Toshiba Click Mini L9W-B which is the
    device for which this quirk was added in the first place and with the
    "Don't reset device upon system resume" fix the quirk is no longer
    necessary, so this commit removes it.
    
    Note even better I also had some other devices with SIS touchscreens which
    suspend/resume issues, where the RESEND_REPORT_DESCR quirk did not help.
    
    I've also tested these devices with the "Don't reset device upon system
    resume" fix and I'm happy to report that that fix also fixes touchscreen
    resume on the following devices:
    
    Asus T100HA
    Asus T200TA
    Peaq C1010
    
    Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e911f46c0cc50b38edce4ac47e7d678940f3ef45
Author: Doron Roberts-Kedes <doronrk@fb.com>
Date:   Thu Jul 26 07:59:36 2018 -0700

    tls: Fix improper revert in zerocopy_from_iter
    
    [ Upstream commit 2da19ed3e4a87db16c0f69039da9f17a9596c350 ]
    
    The current code is problematic because the iov_iter is reverted and
    never advanced in the non-error case. This patch skips the revert in the
    non-error case. This patch also fixes the amount by which the iov_iter
    is reverted. Currently, iov_iter is reverted by size, which can be
    greater than the amount by which the iter was actually advanced.
    Instead, only revert by the amount that the iter was advanced.
    
    Fixes: 4718799817c5 ("tls: Fix zerocopy_from_iter iov handling")
    Signed-off-by: Doron Roberts-Kedes <doronrk@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2033959b7421db8647c509c5feb86be3e1ea1524
Author: Milian Wolff <milian.wolff@kdab.com>
Date:   Wed Sep 26 15:52:05 2018 +0200

    perf report: Don't try to map ip to invalid map
    
    [ Upstream commit ff4ce2885af8f9e8e99864d78dbeb4673f089c76 ]
    
    Fixes a crash when the report encounters an address that could not be
    associated with an mmaped region:
    
      #0  0x00005555557bdc4a in callchain_srcline (ip=<error reading variable: Cannot access memory at address 0x38>, sym=0x0, map=0x0) at util/machine.c:2329
      #1  unwind_entry (entry=entry@entry=0x7fffffff9180, arg=arg@entry=0x7ffff5642498) at util/machine.c:2329
      #2  0x00005555558370af in entry (arg=0x7ffff5642498, cb=0x5555557bdb50 <unwind_entry>, thread=<optimized out>, ip=18446744073709551615) at util/unwind-libunwind-local.c:586
      #3  get_entries (ui=ui@entry=0x7fffffff9620, cb=0x5555557bdb50 <unwind_entry>, arg=0x7ffff5642498, max_stack=<optimized out>) at util/unwind-libunwind-local.c:703
      #4  0x0000555555837192 in _unwind__get_entries (cb=<optimized out>, arg=<optimized out>, thread=<optimized out>, data=<optimized out>, max_stack=<optimized out>) at util/unwind-libunwind-local.c:725
      #5  0x00005555557c310f in thread__resolve_callchain_unwind (max_stack=127, sample=0x7fffffff9830, evsel=0x555555c7b3b0, cursor=0x7ffff5642498, thread=0x555555c7f6f0) at util/machine.c:2351
      #6  thread__resolve_callchain (thread=0x555555c7f6f0, cursor=0x7ffff5642498, evsel=0x555555c7b3b0, sample=0x7fffffff9830, parent=0x7fffffff97b8, root_al=0x7fffffff9750, max_stack=127) at util/machine.c:2378
      #7  0x00005555557ba4ee in sample__resolve_callchain (sample=<optimized out>, cursor=<optimized out>, parent=parent@entry=0x7fffffff97b8, evsel=<optimized out>, al=al@entry=0x7fffffff9750,
          max_stack=<optimized out>) at util/callchain.c:1085
    
    Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
    Tested-by: Sandipan Das <sandipan@linux.ibm.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: 2a9d5050dc84 ("perf script: Show correct offsets for DWARF-based unwinding")
    Link: http://lkml.kernel.org/r/20180926135207.30263-1-milian.wolff@kdab.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15ea940bc3fbfa9196341a072570f070ddab6f08
Author: Daniel Mack <daniel@zonque.org>
Date:   Mon Oct 8 22:03:57 2018 +0200

    libertas: call into generic suspend code before turning off power
    
    [ Upstream commit 4f666675cdff0b986195413215eb062b7da6586f ]
    
    When powering down a SDIO connected card during suspend, make sure to call
    into the generic lbs_suspend() function before pulling the plug. This will
    make sure the card is successfully deregistered from the system to avoid
    communication to the card starving out.
    
    Fixes: 7444a8092906 ("libertas: fix suspend and resume for SDIO connected cards")
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d33c4297bac52c1b5581156d5b37500194775002
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Fri Jul 27 00:27:21 2018 +0200

    clk: mvebu: armada-37xx-periph: Remove unused var num_parents
    
    [ Upstream commit 8927c27b32703e28041ae19bf25ea53461be83a1 ]
    
    When building armada-37xx-periph, num_parents isn't used in function
    clk_pm_cpu_get_parent:
    drivers/clk/mvebu/armada-37xx-periph.c: In function ‘clk_pm_cpu_get_parent’:
    drivers/clk/mvebu/armada-37xx-periph.c:419:6: warning: unused variable ‘num_parents’ [-Wunused-variable]
      int num_parents = clk_hw_get_num_parents(hw);
          ^~~~~~~~~~~
    Remove the declaration of num_parents to dispose the warning.
    
    Fixes: 616bf80d381d ("clk: mvebu: armada-37xx-periph: Fix wrong return value in get_parent")
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e7f8508aca5e1113d0b4784a143e1d0d34f96546
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Sep 19 13:35:53 2018 +0300

    x86/paravirt: Fix some warning messages
    
    [ Upstream commit 571d0563c8881595f4ab027aef9ed1c55e3e7b7c ]
    
    The first argument to WARN_ONCE() is a condition.
    
    Fixes: 5800dc5c19f3 ("x86/paravirt: Fix spectre-v2 mitigations for paravirt guests")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Alok Kataria <akataria@vmware.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: virtualization@lists.linux-foundation.org
    Cc: kernel-janitors@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180919103553.GD9238@mwanda
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3b917cecac61fa360548c409099df702f7cbf638
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Fri Oct 5 15:51:51 2018 -0700

    mm/migrate.c: split only transparent huge pages when allocation fails
    
    [ Upstream commit e6112fc300702f96374f34368513d57795fc6d23 ]
    
    split_huge_page_to_list() fails on HugeTLB pages.  I was experimenting
    with moving 32MB contig HugeTLB pages on arm64 (with a debug patch
    applied) and hit the following stack trace when the kernel crashed.
    
    [ 3732.462797] Call trace:
    [ 3732.462835]  split_huge_page_to_list+0x3b0/0x858
    [ 3732.462913]  migrate_pages+0x728/0xc20
    [ 3732.462999]  soft_offline_page+0x448/0x8b0
    [ 3732.463097]  __arm64_sys_madvise+0x724/0x850
    [ 3732.463197]  el0_svc_handler+0x74/0x110
    [ 3732.463297]  el0_svc+0x8/0xc
    [ 3732.463347] Code: d1000400 f90b0e60 f2fbd5a2 a94982a1 (f9000420)
    
    When unmap_and_move[_huge_page]() fails due to lack of memory, the
    splitting should happen only for transparent huge pages not for HugeTLB
    pages.  PageTransHuge() returns true for both THP and HugeTLB pages.
    Hence the conditonal check should test PagesHuge() flag to make sure that
    given pages is not a HugeTLB one.
    
    Link: http://lkml.kernel.org/r/1537798495-4996-1-git-send-email-anshuman.khandual@arm.com
    Fixes: 94723aafb9 ("mm: unclutter THP migration")
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Zi Yan <zi.yan@cs.rutgers.edu>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28d6d22365647756815e46b5bb6cede250371a2b
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri Oct 5 15:51:44 2018 -0700

    mm/gup_benchmark: fix unsigned comparison to zero in __gup_benchmark_ioctl
    
    [ Upstream commit 51896864579d5a3349740847083f4db5c6487164 ]
    
    get_user_pages_fast() will return negative value if no pages were pinned,
    then be converted to a unsigned, which is compared to zero, giving the
    wrong result.
    
    Link: http://lkml.kernel.org/r/20180921095015.26088-1-yuehaibing@huawei.com
    Fixes: 09e35a4a1ca8 ("mm/gup_benchmark: handle gup failures")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 203711a8820bf6f0e6d3e9c61fbd900730b6f0e5
Author: Larry Chen <lchen@suse.com>
Date:   Fri Oct 5 15:51:37 2018 -0700

    ocfs2: fix crash in ocfs2_duplicate_clusters_by_page()
    
    [ Upstream commit 69eb7765b9c6902444c89c54e7043242faf981e5 ]
    
    ocfs2_duplicate_clusters_by_page() may crash if one of the extent's pages
    is dirty.  When a page has not been written back, it is still in dirty
    state.  If ocfs2_duplicate_clusters_by_page() is called against the dirty
    page, the crash happens.
    
    To fix this bug, we can just unlock the page and wait until the page until
    its not dirty.
    
    The following is the backtrace:
    
    kernel BUG at /root/code/ocfs2/refcounttree.c:2961!
    [exception RIP: ocfs2_duplicate_clusters_by_page+822]
    __ocfs2_move_extent+0x80/0x450 [ocfs2]
    ? __ocfs2_claim_clusters+0x130/0x250 [ocfs2]
    ocfs2_defrag_extent+0x5b8/0x5e0 [ocfs2]
    __ocfs2_move_extents_range+0x2a4/0x470 [ocfs2]
    ocfs2_move_extents+0x180/0x3b0 [ocfs2]
    ? ocfs2_wait_for_recovery+0x13/0x70 [ocfs2]
    ocfs2_ioctl_move_extents+0x133/0x2d0 [ocfs2]
    ocfs2_ioctl+0x253/0x640 [ocfs2]
    do_vfs_ioctl+0x90/0x5f0
    SyS_ioctl+0x74/0x80
    do_syscall_64+0x74/0x140
    entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Once we find the page is dirty, we do not wait until it's clean, rather we
    use write_one_page() to write it back
    
    Link: http://lkml.kernel.org/r/20180829074740.9438-1-lchen@suse.com
    [lchen@suse.com: update comments]
      Link: http://lkml.kernel.org/r/20180830075041.14879-1-lchen@suse.com
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Larry Chen <lchen@suse.com>
    Acked-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72c25b9bf77d2cef2b6a6f9f7a1008ec618580b1
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Fri Oct 5 10:59:36 2018 -0500

    yam: fix a missing-check bug
    
    [ Upstream commit 0781168e23a2fc8dceb989f11fc5b39b3ccacc35 ]
    
    In yam_ioctl(), the concrete ioctl command is firstly copied from the
    user-space buffer 'ifr->ifr_data' to 'ioctl_cmd' and checked through the
    following switch statement. If the command is not as expected, an error
    code EINVAL is returned. In the following execution the buffer
    'ifr->ifr_data' is copied again in the cases of the switch statement to
    specific data structures according to what kind of ioctl command is
    requested. However, after the second copy, no re-check is enforced on the
    newly-copied command. Given that the buffer 'ifr->ifr_data' is in the user
    space, a malicious user can race to change the command between the two
    copies. This way, the attacker can inject inconsistent data and cause
    undefined behavior.
    
    This patch adds a re-check in each case of the switch statement if there is
    a second copy in that case, to re-check whether the command obtained in the
    second copy is the same as the one in the first copy. If not, an error code
    EINVAL will be returned.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4c8345b62cfe0e49ac59557be15107af25d8237e
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Fri Oct 5 08:48:27 2018 -0500

    net: cxgb3_main: fix a missing-check bug
    
    [ Upstream commit 2c05d88818ab6571816b93edce4d53703870d7ae ]
    
    In cxgb_extension_ioctl(), the command of the ioctl is firstly copied from
    the user-space buffer 'useraddr' to 'cmd' and checked through the
    switch statement. If the command is not as expected, an error code
    EOPNOTSUPP is returned. In the following execution, i.e., the cases of the
    switch statement, the whole buffer of 'useraddr' is copied again to a
    specific data structure, according to what kind of command is requested.
    However, after the second copy, there is no re-check on the newly-copied
    command. Given that the buffer 'useraddr' is in the user space, a malicious
    user can race to change the command between the two copies. By doing so,
    the attacker can supply malicious data to the kernel and cause undefined
    behavior.
    
    This patch adds a re-check in each case of the switch statement if there is
    a second copy in that case, to re-check whether the command obtained in the
    second copy is the same as the one in the first copy. If not, an error code
    EINVAL is returned.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3397d28b3e271e8e9f844bc2e757d379aac6467a
Author: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Date:   Fri Sep 28 09:17:32 2018 +0530

    powerpc/numa: Skip onlining a offline node in kdump path
    
    [ Upstream commit ac1788cc7da4ce54edcfd2e499afdb0a23d5c41d ]
    
    With commit 2ea626306810 ("powerpc/topology: Get topology for shared
    processors at boot"), kdump kernel on shared LPAR may crash.
    
    The necessary conditions are
    - Shared LPAR with at least 2 nodes having memory and CPUs.
    - Memory requirement for kdump kernel must be met by the first N-1
      nodes where there are at least N nodes with memory and CPUs.
    
    Example numactl of such a machine.
      $ numactl -H
      available: 5 nodes (0,2,5-7)
      node 0 cpus:
      node 0 size: 0 MB
      node 0 free: 0 MB
      node 2 cpus:
      node 2 size: 255 MB
      node 2 free: 189 MB
      node 5 cpus: 24 25 26 27 28 29 30 31
      node 5 size: 4095 MB
      node 5 free: 4024 MB
      node 6 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
      node 6 size: 6353 MB
      node 6 free: 5998 MB
      node 7 cpus: 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39
      node 7 size: 7640 MB
      node 7 free: 7164 MB
      node distances:
      node   0   2   5   6   7
        0:  10  40  40  40  40
        2:  40  10  40  40  40
        5:  40  40  10  40  40
        6:  40  40  40  10  20
        7:  40  40  40  20  10
    
    Steps to reproduce.
    1. Load / start kdump service.
    2. Trigger a kdump (for example : echo c > /proc/sysrq-trigger)
    
    When booting a kdump kernel with 2048M:
    
      kexec: Starting switchover sequence.
      I'm in purgatory
      Using 1TB segments
      hash-mmu: Initializing hash mmu with SLB
      Linux version 4.19.0-rc5-master+ (srikar@linux-xxu6) (gcc version 4.8.5 (SUSE Linux)) #1 SMP Thu Sep 27 19:45:00 IST 2018
      Found initrd at 0xc000000009e70000:0xc00000000ae554b4
      Using pSeries machine description
      -----------------------------------------------------
      ppc64_pft_size    = 0x1e
      phys_mem_size     = 0x88000000
      dcache_bsize      = 0x80
      icache_bsize      = 0x80
      cpu_features      = 0x000000ff8f5d91a7
        possible        = 0x0000fbffcf5fb1a7
        always          = 0x0000006f8b5c91a1
      cpu_user_features = 0xdc0065c2 0xef000000
      mmu_features      = 0x7c006001
      firmware_features = 0x00000007c45bfc57
      htab_hash_mask    = 0x7fffff
      physical_start    = 0x8000000
      -----------------------------------------------------
      numa:   NODE_DATA [mem 0x87d5e300-0x87d67fff]
      numa:     NODE_DATA(0) on node 6
      numa:   NODE_DATA [mem 0x87d54600-0x87d5e2ff]
      Top of RAM: 0x88000000, Total RAM: 0x88000000
      Memory hole size: 0MB
      Zone ranges:
        DMA      [mem 0x0000000000000000-0x0000000087ffffff]
        DMA32    empty
        Normal   empty
      Movable zone start for each node
      Early memory node ranges
        node   6: [mem 0x0000000000000000-0x0000000087ffffff]
      Could not find start_pfn for node 0
      Initmem setup node 0 [mem 0x0000000000000000-0x0000000000000000]
      On node 0 totalpages: 0
      Initmem setup node 6 [mem 0x0000000000000000-0x0000000087ffffff]
      On node 6 totalpages: 34816
    
      Unable to handle kernel paging request for data at address 0x00000060
      Faulting instruction address: 0xc000000008703a54
      Oops: Kernel access of bad area, sig: 11 [#1]
      LE SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in:
      CPU: 11 PID: 1 Comm: swapper/11 Not tainted 4.19.0-rc5-master+ #1
      NIP:  c000000008703a54 LR: c000000008703a38 CTR: 0000000000000000
      REGS: c00000000b673440 TRAP: 0380   Not tainted  (4.19.0-rc5-master+)
      MSR:  8000000002009033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 24022022  XER: 20000002
      CFAR: c0000000086fc238 IRQMASK: 0
      GPR00: c000000008703a38 c00000000b6736c0 c000000009281900 0000000000000000
      GPR04: 0000000000000000 0000000000000000 fffffffffffff001 c00000000b660080
      GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000220
      GPR12: 0000000000002200 c000000009e51400 0000000000000000 0000000000000008
      GPR16: 0000000000000000 c000000008c152e8 c000000008c152a8 0000000000000000
      GPR20: c000000009422fd8 c000000009412fd8 c000000009426040 0000000000000008
      GPR24: 0000000000000000 0000000000000000 c000000009168bc8 c000000009168c78
      GPR28: c00000000b126410 0000000000000000 c00000000916a0b8 c00000000b126400
      NIP [c000000008703a54] bus_add_device+0x84/0x1e0
      LR [c000000008703a38] bus_add_device+0x68/0x1e0
      Call Trace:
      [c00000000b6736c0] [c000000008703a38] bus_add_device+0x68/0x1e0 (unreliable)
      [c00000000b673740] [c000000008700194] device_add+0x454/0x7c0
      [c00000000b673800] [c00000000872e660] __register_one_node+0xb0/0x240
      [c00000000b673860] [c00000000839a6bc] __try_online_node+0x12c/0x180
      [c00000000b673900] [c00000000839b978] try_online_node+0x58/0x90
      [c00000000b673930] [c0000000080846d8] find_and_online_cpu_nid+0x158/0x190
      [c00000000b673a10] [c0000000080848a0] numa_update_cpu_topology+0x190/0x580
      [c00000000b673c00] [c000000008d3f2e4] smp_cpus_done+0x94/0x108
      [c00000000b673c70] [c000000008d5c00c] smp_init+0x174/0x19c
      [c00000000b673d00] [c000000008d346b8] kernel_init_freeable+0x1e0/0x450
      [c00000000b673dc0] [c0000000080102e8] kernel_init+0x28/0x160
      [c00000000b673e30] [c00000000800b65c] ret_from_kernel_thread+0x5c/0x80
      Instruction dump:
      60000000 60000000 e89e0020 7fe3fb78 4bff87d5 60000000 7c7d1b79 4082008c
      e8bf0050 e93e0098 3b9f0010 2fa50000 <e8690060> 38630018 419e0114 7f84e378
      ---[ end trace 593577668c2daa65 ]---
    
    However a regular kernel with 4096M (2048 gets reserved for crash
    kernel) boots properly.
    
    Unlike regular kernels, which mark all available nodes as online,
    kdump kernel only marks just enough nodes as online and marks the rest
    as offline at boot. However kdump kernel boots with all available
    CPUs. With Commit 2ea626306810 ("powerpc/topology: Get topology for
    shared processors at boot"), all CPUs are onlined on their respective
    nodes at boot time. try_online_node() tries to online the offline
    nodes but fails as all needed subsystems are not yet initialized.
    
    As part of fix, detect and skip early onlining of a offline node.
    
    Fixes: 2ea626306810 ("powerpc/topology: Get topology for shared processors at boot")
    Reported-by: Pavithra Prakash <pavrampu@in.ibm.com>
    Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Tested-by: Hari Bathini <hbathini@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a7af3a2ae4886cdc35bae2bb3df6de4e7d7c0134
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Wed Oct 3 15:20:58 2018 +0200

    be2net: don't flip hw_features when VXLANs are added/deleted
    
    [ Upstream commit 2d52527e80c2dc0c5f43f50adf183781262ec565 ]
    
    the be2net implementation of .ndo_tunnel_{add,del}() changes the value of
    NETIF_F_GSO_UDP_TUNNEL bit in 'features' and 'hw_features', but it forgets
    to call netdev_features_change(). Moreover, ethtool setting for that bit
    can potentially be reverted after a tunnel is added or removed.
    
    GSO already does software segmentation when 'hw_enc_features' is 0, even
    if VXLAN offload is turned on. In addition, commit 096de2f83ebc ("benet:
    stricter vxlan offloading check in be_features_check") avoids hardware
    segmentation of non-VXLAN tunneled packets, or VXLAN packets having wrong
    destination port. So, it's safe to avoid flipping the above feature on
    addition/deletion of VXLAN tunnels.
    
    Fixes: 630f4b70567f ("be2net: Export tunnel offloads only when a VxLAN tunnel is created")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43cb734246c0d7fdea02aab272ae550f76a6949f
Author: Shirish S <shirish.s@amd.com>
Date:   Mon Sep 24 19:01:47 2018 +0530

    drm/amd/display: Signal hw_done() after waiting for flip_done()
    
    [ Upstream commit 987bf116445db5d63a5c2ed94c4479687d9c9973 ]
    
    In amdgpu_dm_commit_tail(), wait until flip_done() is signaled before
    we signal hw_done().
    
    [Why]
    
    This is to temporarily address a paging error that occurs when a
    nonblocking commit contends with another commit, particularly in a
    mirrored display configuration where at least 2 CRTCs are updated.
    The error occurs in drm_atomic_helper_wait_for_flip_done(), when we
    attempt to access the contents of new_crtc_state->commit.
    
    Here's the sequence for a mirrored 2 display setup (irrelevant steps
    left out for clarity):
    
    **THREAD 1**                        | **THREAD 2**
                                        |
    Initialize atomic state for flip    |
                                        |
    Queue worker                        |
                                       ...
    
                                        | Do work for flip
                                        |
                                        | Signal hw_done() on CRTC 1
                                        | Signal hw_done() on CRTC 2
                                        |
                                        | Wait for flip_done() on CRTC 1
    
                                    <---- **PREEMPTED BY THREAD 1**
    
    Initialize atomic state for cursor  |
    update (1)                          |
                                        |
    Do cursor update work on both CRTCs |
                                        |
    Clear atomic state (2)              |
    **DONE**                            |
                                       ...
                                        |
                                        | Wait for flip_done() on CRTC 2
                                        | *ERROR*
                                        |
    
    The issue starts with (1). When the atomic state is initialized, the
    current CRTC states are duplicated to be the new_crtc_states, and
    referenced to be the old_crtc_states. (The new_crtc_states are to be
    filled with update data.)
    
    Some things to note:
    
    * Due to the mirrored configuration, the cursor updates on both CRTCs.
    
    * At this point, the pflip IRQ has already been handled, and flip_done
      signaled on all CRTCs. The cursor commit can therefore continue.
    
    * The old_crtc_states used by the cursor update are the **same states**
      as the new_crtc_states used by the flip worker.
    
    At (2), the old_crtc_state is freed (*), and the cursor commit
    completes. We then context switch back to the flip worker, where we
    attempt to access the new_crtc_state->commit object. This is
    problematic, as this state has already been freed.
    
    (*) Technically, 'state->crtcs[i].state' is freed, which was made to
        reference old_crtc_state in drm_atomic_helper_swap_state()
    
    [How]
    
    By moving hw_done() after wait_for_flip_done(), we're guaranteed that
    the new_crtc_state (from the flip worker's perspective) still exists.
    This is because any other commit will be blocked, waiting for the
    hw_done() signal.
    
    Note that both the i915 and imx drivers have this sequence flipped
    already, masking this problem.
    
    Signed-off-by: Shirish S <shirish.s@amd.com>
    Signed-off-by: Leo Li <sunpeng.li@amd.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76c84d0a2313e51466e7198016fe8db9fad69962
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Oct 2 14:48:49 2018 -0700

    locking/ww_mutex: Fix runtime warning in the WW mutex selftest
    
    [ Upstream commit e4a02ed2aaf447fa849e3254bfdb3b9b01e1e520 ]
    
    If CONFIG_WW_MUTEX_SELFTEST=y is enabled, booting an image
    in an arm64 virtual machine results in the following
    traceback if 8 CPUs are enabled:
    
      DEBUG_LOCKS_WARN_ON(__owner_task(owner) != current)
      WARNING: CPU: 2 PID: 537 at kernel/locking/mutex.c:1033 __mutex_unlock_slowpath+0x1a8/0x2e0
      ...
      Call trace:
       __mutex_unlock_slowpath()
       ww_mutex_unlock()
       test_cycle_work()
       process_one_work()
       worker_thread()
       kthread()
       ret_from_fork()
    
    If requesting b_mutex fails with -EDEADLK, the error variable
    is reassigned to the return value from calling ww_mutex_lock
    on a_mutex again. If this call fails, a_mutex is not locked.
    It is, however, unconditionally unlocked subsequently, causing
    the reported warning. Fix the problem by using two error variables.
    
    With this change, the selftest still fails as follows:
    
      cyclic deadlock not resolved, ret[7/8] = -35
    
    However, the traceback is gone.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Fixes: d1b42b800e5d0 ("locking/ww_mutex: Add kselftests for resolving ww_mutex cyclic deadlocks")
    Link: http://lkml.kernel.org/r/1538516929-9734-1-git-send-email-linux@roeck-us.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ac18a1dbc3f2f1fa67d57db57d85308cbd8680c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Oct 1 21:42:37 2018 -0700

    Revert "serial: 8250_dw: Fix runtime PM handling"
    
    [ Upstream commit beeeac43b6fae5f5eaf707b6fcc2bf1e09deb785 ]
    
    This reverts commit d76c74387e1c978b6c5524a146ab0f3f72206f98.
    
    While commit d76c74387e1c ("serial: 8250_dw: Fix runtime PM handling")
    fixes runtime PM handling when using kgdb, it introduces a traceback for
    everyone else.
    
    BUG: sleeping function called from invalid context at
            /mnt/host/source/src/third_party/kernel/next/drivers/base/power/runtime.c:1034
    in_atomic(): 1, irqs_disabled(): 1, pid: 1, name: swapper/0
    7 locks held by swapper/0/1:
     #0: 000000005ec5bc72 (&dev->mutex){....}, at: __driver_attach+0xb5/0x12b
     #1: 000000005d5fa9e5 (&dev->mutex){....}, at: __device_attach+0x3e/0x15b
     #2: 0000000047e93286 (serial_mutex){+.+.}, at: serial8250_register_8250_port+0x51/0x8bb
     #3: 000000003b328f07 (port_mutex){+.+.}, at: uart_add_one_port+0xab/0x8b0
     #4: 00000000fa313d4d (&port->mutex){+.+.}, at: uart_add_one_port+0xcc/0x8b0
     #5: 00000000090983ca (console_lock){+.+.}, at: vprintk_emit+0xdb/0x217
     #6: 00000000c743e583 (console_owner){-...}, at: console_unlock+0x211/0x60f
    irq event stamp: 735222
    __down_trylock_console_sem+0x4a/0x84
    console_unlock+0x338/0x60f
    __do_softirq+0x4a4/0x50d
    irq_exit+0x64/0xe2
    CPU: 2 PID: 1 Comm: swapper/0 Not tainted 4.19.0-rc5 #6
    Hardware name: Google Caroline/Caroline, BIOS Google_Caroline.7820.286.0 03/15/2017
    Call Trace:
     dump_stack+0x7d/0xbd
     ___might_sleep+0x238/0x259
     __pm_runtime_resume+0x4e/0xa4
     ? serial8250_rpm_get+0x2e/0x44
     serial8250_console_write+0x44/0x301
     ? lock_acquire+0x1b8/0x1fa
     console_unlock+0x577/0x60f
     vprintk_emit+0x1f0/0x217
     printk+0x52/0x6e
     register_console+0x43b/0x524
     uart_add_one_port+0x672/0x8b0
     ? set_io_from_upio+0x150/0x162
     serial8250_register_8250_port+0x825/0x8bb
     dw8250_probe+0x80c/0x8b0
     ? dw8250_serial_inq+0x8e/0x8e
     ? dw8250_check_lcr+0x108/0x108
     ? dw8250_runtime_resume+0x5b/0x5b
     ? dw8250_serial_outq+0xa1/0xa1
     ? dw8250_remove+0x115/0x115
     platform_drv_probe+0x76/0xc5
     really_probe+0x1f1/0x3ee
     ? driver_allows_async_probing+0x5d/0x5d
     driver_probe_device+0xd6/0x112
     ? driver_allows_async_probing+0x5d/0x5d
     bus_for_each_drv+0xbe/0xe5
     __device_attach+0xdd/0x15b
     bus_probe_device+0x5a/0x10b
     device_add+0x501/0x894
     ? _raw_write_unlock+0x27/0x3a
     platform_device_add+0x224/0x2b7
     mfd_add_device+0x718/0x75b
     ? __kmalloc+0x144/0x16a
     ? mfd_add_devices+0x38/0xdb
     mfd_add_devices+0x9b/0xdb
     intel_lpss_probe+0x7d4/0x8ee
     intel_lpss_pci_probe+0xac/0xd4
     pci_device_probe+0x101/0x18e
    ...
    
    Revert the offending patch until a more comprehensive solution
    is available.
    
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Phil Edworthy <phil.edworthy@renesas.com>
    Fixes: d76c74387e1c ("serial: 8250_dw: Fix runtime PM handling")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cf9edba82704c7fc165d5e6de17442d7c68c6e6
Author: Atish Patra <atish.patra@wdc.com>
Date:   Tue Sep 11 11:30:18 2018 -0700

    RISCV: Fix end PFN for low memory
    
    [ Upstream commit ef1f2258748b675422ca0107e5bfb9ceeac675de ]
    
    Use memblock_end_of_DRAM which provides correct last low memory
    PFN. Without that, DMA32 region becomes empty resulting in zero
    pages being allocated for DMA32.
    
    This patch is based on earlier patch from palmer which never
    merged into 4.19. I just edited the commit text to make more
    sense.
    
    Signed-off-by: Atish Patra <atish.patra@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5278d9550d4dfd04d0e8b738c0dcb11bbfde65b8
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Tue Oct 2 14:23:45 2018 +0100

    declance: Fix continuation with the adapter identification message
    
    [ Upstream commit fe3a83af6a50199bf250fa331e94216912f79395 ]
    
    Fix a commit 4bcc595ccd80 ("printk: reinstate KERN_CONT for printing
    continuation lines") regression with the `declance' driver, which caused
    the adapter identification message to be split between two lines, e.g.:
    
    declance.c: v0.011 by Linux MIPS DECstation task force
    tc6: PMAD-AA
    , addr = 08:00:2b:1b:2a:6a, irq = 14
    tc6: registered as eth0.
    
    Address that properly, by printing identification with a single call,
    making the messages now look like:
    
    declance.c: v0.011 by Linux MIPS DECstation task force
    tc6: PMAD-AA, addr = 08:00:2b:1b:2a:6a, irq = 14
    tc6: registered as eth0.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Fixes: 4bcc595ccd80 ("printk: reinstate KERN_CONT for printing continuation lines")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c770ce978ac235af0b5596322ee731ffa5ec6605
Author: Rickard x Andersson <rickaran@axis.com>
Date:   Tue Oct 2 14:49:32 2018 +0200

    net: fec: fix rare tx timeout
    
    [ Upstream commit 657ade07df72847f591ccdb36bd9b91ed0edbac3 ]
    
    During certain heavy network loads TX could time out
    with TX ring dump.
    TX is sometimes never restarted after reaching
    "tx_stop_threshold" because function "fec_enet_tx_queue"
    only tests the first queue.
    
    In addition the TX timeout callback function failed to
    recover because it also operated only on the first queue.
    
    Signed-off-by: Rickard x Andersson <rickaran@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5613fc70844ba07361769a5ca21b2a563f837fd2
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Sep 24 13:20:45 2018 +0300

    thunderbolt: Initialize after IOMMUs
    
    [ Upstream commit eafa717bc145963c944bb0a64d16add683861b35 ]
    
    If IOMMU is enabled and Thunderbolt driver is built into the kernel
    image, it will be probed before IOMMUs are attached to the PCI bus.
    Because of this DMA mappings the driver does will not go through IOMMU
    and start failing right after IOMMUs are enabled.
    
    For this reason move the Thunderbolt driver initialization happen at
    rootfs level.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1699207e9c7c5bcd08fdd02508c96e79663d852f
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Sep 24 13:20:44 2018 +0300

    thunderbolt: Do not handle ICM events after domain is stopped
    
    [ Upstream commit 86da809dda64a63fc27e05a215475325c3aaae92 ]
    
    If there is a long chain of devices connected when the driver is loaded
    ICM sends device connected event for each and those are put to tb->wq
    for later processing. Now if the driver gets unloaded in the middle, so
    that the work queue is not yet empty it gets flushed by tb_domain_stop().
    However, by that time the root switch is already removed so the driver
    crashes when it tries to dereference it in ICM event handling callbacks.
    
    Fix this by checking whether the root switch is already removed. If it
    is we know that the domain is stopped and we should merely skip handling
    the event.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14ad1e0af45fcf0a6816f6999f3e9f0e6a734205
Author: Natarajan, Janakarajan <Janakarajan.Natarajan@amd.com>
Date:   Thu Sep 27 15:51:55 2018 +0000

    perf/x86/amd/uncore: Set ThreadMask and SliceMask for L3 Cache perf events
    
    [ Upstream commit d7cbbe49a9304520181fb8c9272d1327deec8453 ]
    
    In Family 17h, some L3 Cache Performance events require the ThreadMask
    and SliceMask to be set. For other events, these fields do not affect
    the count either way.
    
    Set ThreadMask and SliceMask to 0xFF and 0xF respectively.
    
    Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H . Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Suravee <Suravee.Suthikulpanit@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/Message-ID:
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f1aaaae92ffbe292ec477496df0ab188af5b2c6
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Fri Sep 21 07:07:06 2018 -0700

    perf/x86/intel/uncore: Fix PCI BDF address of M3UPI on SKX
    
    [ Upstream commit 9d92cfeaf5215158d26d2991be7f7ff865cb98f3 ]
    
    The counters on M3UPI Link 0 and Link 3 don't count properly, and writing
    0 to these counters may causes system crash on some machines.
    
    The PCI BDF addresses of the M3UPI in the current code are incorrect.
    
    The correct addresses should be:
    
      D18:F1        0x204D
      D18:F2        0x204E
      D18:F5        0x204D
    
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: cd34cd97b7b4 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Link: http://lkml.kernel.org/r/1537538826-55489-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8764955cc03edd0480fbf1ae73091d0266d675d9
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Sun Sep 23 18:13:43 2018 +0200

    perf/ring_buffer: Prevent concurent ring buffer access
    
    [ Upstream commit cd6fb677ce7e460c25bdd66f689734102ec7d642 ]
    
    Some of the scheduling tracepoints allow the perf_tp_event
    code to write to ring buffer under different cpu than the
    code is running on.
    
    This results in corrupted ring buffer data demonstrated in
    following perf commands:
    
      # perf record -e 'sched:sched_switch,sched:sched_wakeup' perf bench sched messaging
      # Running 'sched/messaging' benchmark:
      # 20 sender and receiver processes per group
      # 10 groups == 400 processes run
    
           Total time: 0.383 [sec]
      [ perf record: Woken up 8 times to write data ]
      0x42b890 [0]: failed to process type: -1765585640
      [ perf record: Captured and wrote 4.825 MB perf.data (29669 samples) ]
    
      # perf report --stdio
      0x42b890 [0]: failed to process type: -1765585640
    
    The reason for the corruption are some of the scheduling tracepoints,
    that have __perf_task dfined and thus allow to store data to another
    cpu ring buffer:
    
      sched_waking
      sched_wakeup
      sched_wakeup_new
      sched_stat_wait
      sched_stat_sleep
      sched_stat_iowait
      sched_stat_blocked
    
    The perf_tp_event function first store samples for current cpu
    related events defined for tracepoint:
    
        hlist_for_each_entry_rcu(event, head, hlist_entry)
          perf_swevent_event(event, count, &data, regs);
    
    And then iterates events of the 'task' and store the sample
    for any task's event that passes tracepoint checks:
    
      ctx = rcu_dereference(task->perf_event_ctxp[perf_sw_context]);
    
      list_for_each_entry_rcu(event, &ctx->event_list, event_entry) {
        if (event->attr.type != PERF_TYPE_TRACEPOINT)
          continue;
        if (event->attr.config != entry->type)
          continue;
    
        perf_swevent_event(event, count, &data, regs);
      }
    
    Above code can race with same code running on another cpu,
    ending up with 2 cpus trying to store under the same ring
    buffer, which is specifically not allowed.
    
    This patch prevents the problem, by allowing only events with the same
    current cpu to receive the event.
    
    NOTE: this requires the use of (per-task-)per-cpu buffers for this
    feature to work; perf-record does this.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    [peterz: small edits to Changelog]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrew Vagin <avagin@openvz.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: e6dab5ffab59 ("perf/trace: Add ability to set a target task for events")
    Link: http://lkml.kernel.org/r/20180923161343.GB15054@krava
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3617d16a574416abd89cfc820d1cf5ab26259a6a
Author: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
Date:   Mon Sep 10 10:47:50 2018 -0400

    perf/x86/intel/uncore: Use boot_cpu_data.phys_proc_id instead of hardcorded physical package ID 0
    
    [ Upstream commit 6265adb9726098b7f4f7ca70bc51992b25fdd9d6 ]
    
    Physical package id 0 doesn't always exist, we should use
    boot_cpu_data.phys_proc_id here.
    
    Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masayoshi Mizuma <msys.mizuma@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20180910144750.6782-1-msys.mizuma@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d318ef466d5fc351bd9f4a84e1107637cb511c64
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Sep 25 17:58:35 2018 +0200

    perf/core: Fix perf_pmu_unregister() locking
    
    [ Upstream commit a9f9772114c8b07ae75bcb3654bd017461248095 ]
    
    When we unregister a PMU, we fail to serialize the @pmu_idr properly.
    Fix that by doing the entire thing under pmu_lock.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 2e80a82a49c4 ("perf: Dynamic pmu types")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f56f220a61e62736c8613da0cea32521bcf9acd
Author: Liran Alon <liran.alon@oracle.com>
Date:   Fri Sep 14 03:25:54 2018 +0300

    KVM: nVMX: Fix emulation of VM_ENTRY_LOAD_BNDCFGS
    
    [ Upstream commit 62cf9bd8118c4009f02c477ef78c723f49e53e16 ]
    
    L2 IA32_BNDCFGS should be updated with vmcs12->guest_bndcfgs only
    when VM_ENTRY_LOAD_BNDCFGS is specified in vmcs12->vm_entry_controls.
    
    Otherwise, L2 IA32_BNDCFGS should be set to vmcs01->guest_bndcfgs which
    is L1 IA32_BNDCFGS.
    
    Reviewed-by: Nikita Leshchenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c81fff77cfdb51974929a190ebbdbe5ac8cd754
Author: Liran Alon <liran.alon@oracle.com>
Date:   Fri Sep 14 03:25:53 2018 +0300

    KVM: x86: Do not use kvm_x86_ops->mpx_supported() directly
    
    [ Upstream commit 503234b3fdcaa578395c07e393ea3e5d13958824 ]
    
    Commit a87036add092 ("KVM: x86: disable MPX if host did not enable
    MPX XSAVE features") introduced kvm_mpx_supported() to return true
    iff MPX is enabled in the host.
    
    However, that commit seems to have missed replacing some calls to
    kvm_x86_ops->mpx_supported() to kvm_mpx_supported().
    
    Complete original commit by replacing remaining calls to
    kvm_mpx_supported().
    
    Fixes: a87036add092 ("KVM: x86: disable MPX if host did not enable
    MPX XSAVE features")
    
    Suggested-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82ba86c25383e9a639fea853de427526eeb22e90
Author: Liran Alon <liran.alon@oracle.com>
Date:   Fri Sep 14 03:25:52 2018 +0300

    KVM: nVMX: Do not expose MPX VMX controls when guest MPX disabled
    
    [ Upstream commit 5f76f6f5ff96587af5acd5930f7d9fea81e0d1a8 ]
    
    Before this commit, KVM exposes MPX VMX controls to L1 guest only based
    on if KVM and host processor supports MPX virtualization.
    However, these controls should be exposed to guest only in case guest
    vCPU supports MPX.
    
    Without this change, a L1 guest running with kernel which don't have
    commit 691bd4340bef ("kvm: vmx: allow host to access guest
    MSR_IA32_BNDCFGS") asserts in QEMU on the following:
            qemu-kvm: error: failed to set MSR 0xd90 to 0x0
            qemu-kvm: .../qemu-2.10.0/target/i386/kvm.c:1801 kvm_put_msrs:
            Assertion 'ret == cpu->kvm_msr_buf->nmsrs failed'
    This is because L1 KVM kvm_init_msr_list() will see that
    vmx_mpx_supported() (As it only checks MPX VMX controls support) and
    therefore KVM_GET_MSR_INDEX_LIST IOCTL will include MSR_IA32_BNDCFGS.
    However, later when L1 will attempt to set this MSR via KVM_SET_MSRS
    IOCTL, it will fail because !guest_cpuid_has_mpx(vcpu).
    
    Therefore, fix the issue by exposing MPX VMX controls to L1 guest only
    when vCPU supports MPX.
    
    Fixes: 36be0b9deb23 ("KVM: x86: Add nested virtualization support for MPX")
    
    Reported-by: Eyal Moscovici <eyal.moscovici@oracle.com>
    Reviewed-by: Nikita Leshchenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2dbf48f8ffb3af73628c67f7289112a56ffe8a69
Author: Yu Zhao <yuzhao@google.com>
Date:   Thu Sep 27 17:05:04 2018 -0600

    cfg80211: fix use-after-free in reg_process_hint()
    
    [ Upstream commit 1db58529454742f67ebd96e3588315e880b72837 ]
    
    reg_process_hint_country_ie() can free regulatory_request and return
    REG_REQ_ALREADY_SET. We shouldn't use regulatory_request after it's
    called. KASAN error was observed when this happens.
    
    BUG: KASAN: use-after-free in reg_process_hint+0x839/0x8aa [cfg80211]
    Read of size 4 at addr ffff8800c430d434 by task kworker/1:3/89
    <snipped>
    Workqueue: events reg_todo [cfg80211]
    Call Trace:
     dump_stack+0xc1/0x10c
     ? _atomic_dec_and_lock+0x1ad/0x1ad
     ? _raw_spin_lock_irqsave+0xa0/0xd2
     print_address_description+0x86/0x26f
     ? reg_process_hint+0x839/0x8aa [cfg80211]
     kasan_report+0x241/0x29b
     reg_process_hint+0x839/0x8aa [cfg80211]
     reg_todo+0x204/0x5b9 [cfg80211]
     process_one_work+0x55f/0x8d0
     ? worker_detach_from_pool+0x1b5/0x1b5
     ? _raw_spin_unlock_irq+0x65/0xdd
     ? _raw_spin_unlock_irqrestore+0xf3/0xf3
     worker_thread+0x5dd/0x841
     ? kthread_parkme+0x1d/0x1d
     kthread+0x270/0x285
     ? pr_cont_work+0xe3/0xe3
     ? rcu_read_unlock_sched_notrace+0xca/0xca
     ret_from_fork+0x22/0x40
    
    Allocated by task 2718:
     set_track+0x63/0xfa
     __kmalloc+0x119/0x1ac
     regulatory_hint_country_ie+0x38/0x329 [cfg80211]
     __cfg80211_connect_result+0x854/0xadd [cfg80211]
     cfg80211_rx_assoc_resp+0x3bc/0x4f0 [cfg80211]
    smsc95xx v1.0.6
     ieee80211_sta_rx_queued_mgmt+0x1803/0x7ed5 [mac80211]
     ieee80211_iface_work+0x411/0x696 [mac80211]
     process_one_work+0x55f/0x8d0
     worker_thread+0x5dd/0x841
     kthread+0x270/0x285
     ret_from_fork+0x22/0x40
    
    Freed by task 89:
     set_track+0x63/0xfa
     kasan_slab_free+0x6a/0x87
     kfree+0xdc/0x470
     reg_process_hint+0x31e/0x8aa [cfg80211]
     reg_todo+0x204/0x5b9 [cfg80211]
     process_one_work+0x55f/0x8d0
     worker_thread+0x5dd/0x841
     kthread+0x270/0x285
     ret_from_fork+0x22/0x40
    <snipped>
    
    Signed-off-by: Yu Zhao <yuzhao@google.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9069c847f3fe332f87cb18ac47a437aa1cdb4d21
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:56 2018 -0700

    smsc95xx: Check for Wake-on-LAN modes
    
    [ Upstream commit c530c471ba37bdd9fe1c7185b01455c00ae606fb ]
    
    The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.
    
    Fixes: e0e474a83c18 ("smsc95xx: add wol magic packet support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f1268db2975b7ec8250d565f57ffa7d2aca0338
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:55 2018 -0700

    smsc75xx: Check for Wake-on-LAN modes
    
    [ Upstream commit 9c734b2769a73eea2e9e9767c0e0bf839ff23679 ]
    
    The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.
    
    Fixes: 6c636503260d ("smsc75xx: add wol magic packet support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3935fa141b89260a5d234ebb8c60ee37d8afd13
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:54 2018 -0700

    r8152: Check for supported Wake-on-LAN Modes
    
    [ Upstream commit f2750df1548bd8a2b060eb609fc43ca82811af4c ]
    
    The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.
    
    Fixes: 21ff2e8976b1 ("r8152: support WOL")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8f4ce7df75e9a308a5833aeb3fd5bae9fc4ad75
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:53 2018 -0700

    sr9800: Check for supported Wake-on-LAN modes
    
    [ Upstream commit c5cb93e994ffb43b7b3b1ff10b9f928f54574a36 ]
    
    The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.
    
    Fixes: 19a38d8e0aa3 ("USB2NET : SR9800 : One chip USB2.0 USB2NET SR9800 Device Driver Support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35c636108bc42ab59a3491916ac81902250bb2c1
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:52 2018 -0700

    lan78xx: Check for supported Wake-on-LAN modes
    
    [ Upstream commit eb9ad088f96653a26b340f7c447c44cf023d5cdc ]
    
    The driver supports a fair amount of Wake-on-LAN modes, but is not
    checking that the user specified one that is supported.
    
    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Woojung Huh <Woojung.Huh@Microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58d2f3f743a19cb13d3f828590c23977fa1fb9de
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:51 2018 -0700

    ax88179_178a: Check for supported Wake-on-LAN modes
    
    [ Upstream commit 5ba6b4aa9a410c5e2c6417df52b5e2118ea9b467 ]
    
    The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.
    
    Fixes: e2ca90c276e1 ("ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit afc7b19402000db244efbc3838963b3e354ec463
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Sep 28 16:18:50 2018 -0700

    asix: Check for supported Wake-on-LAN modes
    
    [ Upstream commit c4ce446e33d7a0e978256ac6fea4c80e59d9de5f ]
    
    The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.
    
    Fixes: 2e55cc7210fe ("[PATCH] USB: usbnet (3/9) module for ASIX Ethernet adapters")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 723b7d86877da81c945dc78c02a4d523c8b238bd
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Sep 24 14:10:04 2018 +0200

    netfilter: avoid erronous array bounds warning
    
    [ Upstream commit 421c119f558761556afca6a62ad183bc2d8659e0 ]
    
    Unfortunately some versions of gcc emit following warning:
      $ make net/xfrm/xfrm_output.o
      linux/compiler.h:252:20: warning: array subscript is above array bounds [-Warray-bounds]
      hook_head = rcu_dereference(net->nf.hooks_arp[hook]);
                                ^~~~~~~~~~~~~~~~~~~~~
    xfrm_output_resume passes skb_dst(skb)->ops->family as its 'pf' arg so compiler
    can't know that we'll never access hooks_arp[].
    (NFPROTO_IPV4 or NFPROTO_IPV6 are only possible cases).
    
    Avoid this by adding an explicit WARN_ON_ONCE() check.
    
    This patch has no effect if the family is a compile-time constant as gcc
    will remove the switch() construct entirely.
    
    Reported-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d3156b3c109dbceea5ece40cfb74b3a22ee2fb1
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Thu Aug 30 17:56:52 2018 +0900

    netfilter: nft_set_rbtree: add missing rb_erase() in GC routine
    
    [ Upstream commit a13f814a67b12a2f29d1decf4b4f4e700658a517 ]
    
    The nft_set_gc_batch_check() checks whether gc buffer is full.
    If gc buffer is full, gc buffer is released by
    the nft_set_gc_batch_complete() internally.
    In case of rbtree, the rb_erase() should be called before calling the
    nft_set_gc_batch_complete(). therefore the rb_erase() should
    be called before calling the nft_set_gc_batch_check() too.
    
    test commands:
       table ip filter {
               set set1 {
                       type ipv4_addr; flags interval, timeout;
                       gc-interval 10s;
                       timeout 1s;
                       elements = {
                               1-2,
                               3-4,
                               5-6,
                               ...
                               10000-10001,
                       }
               }
       }
       %nft -f test.nft
    
    splat looks like:
    [  430.273885] kasan: GPF could be caused by NULL-ptr deref or user memory access
    [  430.282158] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [  430.283116] CPU: 1 PID: 190 Comm: kworker/1:2 Tainted: G    B             4.18.0+ #7
    [  430.283116] Workqueue: events_power_efficient nft_rbtree_gc [nf_tables_set]
    [  430.313559] RIP: 0010:rb_next+0x81/0x130
    [  430.313559] Code: 08 49 bd 00 00 00 00 00 fc ff df 48 bb 00 00 00 00 00 fc ff df 48 85 c0 75 05 eb 58 48 89 d4
    [  430.313559] RSP: 0018:ffff88010cdb7680 EFLAGS: 00010207
    [  430.313559] RAX: 0000000000b84854 RBX: dffffc0000000000 RCX: ffffffff83f01973
    [  430.313559] RDX: 000000000017090c RSI: 0000000000000008 RDI: 0000000000b84864
    [  430.313559] RBP: ffff8801060d4588 R08: fffffbfff09bc349 R09: fffffbfff09bc349
    [  430.313559] R10: 0000000000000001 R11: fffffbfff09bc348 R12: ffff880100f081a8
    [  430.313559] R13: dffffc0000000000 R14: ffff880100ff8688 R15: dffffc0000000000
    [  430.313559] FS:  0000000000000000(0000) GS:ffff88011b400000(0000) knlGS:0000000000000000
    [  430.313559] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  430.313559] CR2: 0000000001551008 CR3: 000000005dc16000 CR4: 00000000001006e0
    [  430.313559] Call Trace:
    [  430.313559]  nft_rbtree_gc+0x112/0x5c0 [nf_tables_set]
    [  430.313559]  process_one_work+0xc13/0x1ec0
    [  430.313559]  ? _raw_spin_unlock_irq+0x29/0x40
    [  430.313559]  ? pwq_dec_nr_in_flight+0x3c0/0x3c0
    [  430.313559]  ? set_load_weight+0x270/0x270
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x40/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x40/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x40/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __switch_to_asm+0x40/0x70
    [  430.313559]  ? __switch_to_asm+0x34/0x70
    [  430.313559]  ? __schedule+0x6d3/0x1f50
    [  430.313559]  ? find_held_lock+0x39/0x1c0
    [  430.313559]  ? __sched_text_start+0x8/0x8
    [  430.313559]  ? cyc2ns_read_end+0x10/0x10
    [  430.313559]  ? save_trace+0x300/0x300
    [  430.313559]  ? sched_clock_local+0xd4/0x140
    [  430.313559]  ? find_held_lock+0x39/0x1c0
    [  430.313559]  ? worker_thread+0x353/0x1120
    [  430.313559]  ? worker_thread+0x353/0x1120
    [  430.313559]  ? lock_contended+0xe70/0xe70
    [  430.313559]  ? __lock_acquire+0x4500/0x4500
    [  430.535635]  ? do_raw_spin_unlock+0xa5/0x330
    [  430.535635]  ? do_raw_spin_trylock+0x101/0x1a0
    [  430.535635]  ? do_raw_spin_lock+0x1f0/0x1f0
    [  430.535635]  ? _raw_spin_lock_irq+0x10/0x70
    [  430.535635]  worker_thread+0x15d/0x1120
    [ ... ]
    
    Fixes: 8d8540c4f5e0 ("netfilter: nft_set_rbtree: add timeout support")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18cb92701a5d4d254d3000d888db7c5b0f2b68b5
Author: David Howells <dhowells@redhat.com>
Date:   Thu Sep 27 15:13:09 2018 +0100

    rxrpc: Fix error distribution
    
    [ Upstream commit f334430316e7fd37c4821ebec627e27714bb5d76 ]
    
    Fix error distribution by immediately delivering the errors to all the
    affected calls rather than deferring them to a worker thread.  The problem
    with the latter is that retries and things can happen in the meantime when we
    want to stop that sooner.
    
    To this end:
    
     (1) Stop the error distributor from removing calls from the error_targets
         list so that peer->lock isn't needed to synchronise against other adds
         and removals.
    
     (2) Require the peer's error_targets list to be accessed with RCU, thereby
         avoiding the need to take peer->lock over distribution.
    
     (3) Don't attempt to affect a call's state if it is already marked complete.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ca2cf672c5b7b0c84c596608de3b2e43ad89873
Author: David Howells <dhowells@redhat.com>
Date:   Thu Sep 27 15:13:09 2018 +0100

    rxrpc: Fix transport sockopts to get IPv4 errors on an IPv6 socket
    
    [ Upstream commit 37a675e768d7606fe8a53e0c459c9b53e121ac20 ]
    
    It seems that enabling IPV6_RECVERR on an IPv6 socket doesn't also turn on
    IP_RECVERR, so neither local errors nor ICMP-transported remote errors from
    IPv4 peer addresses are returned to the AF_RXRPC protocol.
    
    Make the sockopt setting code in rxrpc_open_socket() fall through from the
    AF_INET6 case to the AF_INET case to turn on all the AF_INET options too in
    the AF_INET6 case.
    
    Fixes: f2aeed3a591f ("rxrpc: Fix error reception on AF_INET6 sockets")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a75026c857a1b0bb245fb9d4c00f5c0118031fc
Author: David Howells <dhowells@redhat.com>
Date:   Thu Sep 27 15:13:08 2018 +0100

    rxrpc: Fix RTT gathering
    
    [ Upstream commit b604dd9883f783a94020d772e4fe03160f455372 ]
    
    Fix RTT information gathering in AF_RXRPC by the following means:
    
     (1) Enable Rx timestamping on the transport socket with SO_TIMESTAMPNS.
    
     (2) If the sk_buff doesn't have a timestamp set when rxrpc_data_ready()
         collects it, set it at that point.
    
     (3) Allow ACKs to be requested on the last packet of a client call, but
         not a service call.  We need to be careful lest we undo:
    
            bf7d620abf22c321208a4da4f435e7af52551a21
            Author: David Howells <dhowells@redhat.com>
            Date:   Thu Oct 6 08:11:51 2016 +0100
            rxrpc: Don't request an ACK on the last DATA packet of a call's Tx phase
    
         but that only really applies to service calls that we're handling,
         since the client side gets to send the final ACK (or not).
    
     (4) When about to transmit an ACK or DATA packet, record the Tx timestamp
         before only; don't update the timestamp afterwards.
    
     (5) Switch the ordering between recording the serial and recording the
         timestamp to always set the serial number first.  The serial number
         shouldn't be seen referenced by an ACK packet until we've transmitted
         the packet bearing it - so in the Rx path, we don't need the timestamp
         until we've checked the serial number.
    
    Fixes: cf1a6474f807 ("rxrpc: Add per-peer RTT tracker")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a14d1c9336f46c788010758dd43b40e2d1f8ecc
Author: David Howells <dhowells@redhat.com>
Date:   Thu Sep 27 15:13:08 2018 +0100

    rxrpc: Fix checks as to whether we should set up a new call
    
    [ Upstream commit dc71db34e4f3c06b8277c8f3c2ff014610607a8c ]
    
    There's a check in rxrpc_data_ready() that's checking the CLIENT_INITIATED
    flag in the packet type field rather than in the packet flags field.
    
    Fix this by creating a pair of helper functions to check whether the packet
    is going to the client or to the server and use them generally.
    
    Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 605c374d8d701cf757fce1763f1e3380b7c2c928
Author: Nilesh Javali <nilesh.javali@cavium.com>
Date:   Thu Sep 27 05:15:35 2018 -0700

    scsi: qedi: Initialize the stats mutex lock
    
    [ Upstream commit 3cc5746e5ad7688e274e193fa71278d98aa52759 ]
    
    Fix kernel NULL pointer dereference,
    
    Call Trace:
      [<ffffffff9b7658e6>] __mutex_lock_slowpath+0xa6/0x1d0
      [<ffffffff9b764cef>] mutex_lock+0x1f/0x2f
      [<ffffffffc061b5e1>] qedi_get_protocol_tlv_data+0x61/0x450 [qedi]
      [<ffffffff9b1f9d8e>] ? map_vm_area+0x2e/0x40
      [<ffffffff9b1fc370>] ? __vmalloc_node_range+0x170/0x280
      [<ffffffffc0b81c3d>] ? qed_mfw_process_tlv_req+0x27d/0xbd0 [qed]
      [<ffffffffc0b6461b>] qed_mfw_fill_tlv_data+0x4b/0xb0 [qed]
      [<ffffffffc0b81c59>] qed_mfw_process_tlv_req+0x299/0xbd0 [qed]
      [<ffffffff9b02a59e>] ? __switch_to+0xce/0x580
      [<ffffffffc0b61e5b>] qed_slowpath_task+0x5b/0x80 [qed]
    
    Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa1945964a7ce4dd7bd75ecc686ccd461b79e882
Author: Masashi Honma <masashi.honma@gmail.com>
Date:   Tue Sep 25 11:15:01 2018 +0900

    nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds
    
    [ Upstream commit 1222a16014888ed9733c11e221730d4a8196222b ]
    
    Use array_index_nospec() to sanitize i with respect to speculation.
    
    Note that the user doesn't control i directly, but can make it out
    of bounds by not finding a threshold in the array.
    
    Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
    [add note about user control, as explained by Masashi]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a9bda693628efaf3554d771a9777760e036493a
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 14:42:12 2018 -0700

    qed: Avoid implicit enum conversion in qed_iwarp_parse_rx_pkt
    
    [ Upstream commit 77f2d753819b7d50c16abfb778caf1fe075faed0 ]
    
    Clang warns when one enumerated type is implicitly converted to another.
    
    drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1713:25: warning: implicit
    conversion from enumeration type 'enum tcp_ip_version' to different
    enumeration type 'enum qed_tcp_ip_version' [-Wenum-conversion]
                    cm_info->ip_version = TCP_IPV4;
                                        ~ ^~~~~~~~
    drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1733:25: warning: implicit
    conversion from enumeration type 'enum tcp_ip_version' to different
    enumeration type 'enum qed_tcp_ip_version' [-Wenum-conversion]
                    cm_info->ip_version = TCP_IPV6;
                                        ~ ^~~~~~~~
    2 warnings generated.
    
    Use the appropriate values from the expected type, qed_tcp_ip_version:
    
    TCP_IPV4 = QED_TCP_IPV4 = 0
    TCP_IPV6 = QED_TCP_IPV6 = 1
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/125
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d627d3b8bed3b76d084556822e34614f996a7033
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 15:17:03 2018 -0700

    qed: Avoid constant logical operation warning in qed_vf_pf_acquire
    
    [ Upstream commit 1c492a9d55ba99079210ed901dd8a5423f980487 ]
    
    Clang warns when a constant is used in a boolean context as it thinks a
    bitwise operation may have been intended.
    
    drivers/net/ethernet/qlogic/qed/qed_vf.c:415:27: warning: use of logical
    '&&' with constant operand [-Wconstant-logical-operand]
            if (!p_iov->b_pre_fp_hsi &&
                                     ^
    drivers/net/ethernet/qlogic/qed/qed_vf.c:415:27: note: use '&' for a
    bitwise operation
            if (!p_iov->b_pre_fp_hsi &&
                                     ^~
                                     &
    drivers/net/ethernet/qlogic/qed/qed_vf.c:415:27: note: remove constant
    to silence this warning
            if (!p_iov->b_pre_fp_hsi &&
                                    ~^~
    1 warning generated.
    
    This has been here since commit 1fe614d10f45 ("qed: Relax VF firmware
    requirements") and I am not entirely sure why since 0 isn't a special
    case. Just remove the statement causing Clang to warn since it isn't
    required.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/126
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 02e2aef498f7dd5b1155dbca5cc47a63014ee7dd
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 14:34:53 2018 -0700

    qed: Avoid implicit enum conversion in qed_roce_mode_to_flavor
    
    [ Upstream commit d3a315795b4ce8b105a64a90699103121bde04a8 ]
    
    Clang warns when one enumerated type is implicitly converted to another.
    
    drivers/net/ethernet/qlogic/qed/qed_roce.c:153:12: warning: implicit
    conversion from enumeration type 'enum roce_mode' to different
    enumeration type 'enum roce_flavor' [-Wenum-conversion]
                    flavor = ROCE_V2_IPV6;
                           ~ ^~~~~~~~~~~~
    drivers/net/ethernet/qlogic/qed/qed_roce.c:156:12: warning: implicit
    conversion from enumeration type 'enum roce_mode' to different
    enumeration type 'enum roce_flavor' [-Wenum-conversion]
                    flavor = MAX_ROCE_MODE;
                           ~ ^~~~~~~~~~~~~
    2 warnings generated.
    
    Use the appropriate values from the expected type, roce_flavor:
    
    ROCE_V2_IPV6 = RROCE_IPV6 = 2
    MAX_ROCE_MODE = MAX_ROCE_FLAVOR = 3
    
    While we're add it, ditch the local variable flavor, we can just return
    the value directly from the switch statement.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/125
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b65e6949998011dc4c9f75caece4cd4365ac77f7
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 14:05:27 2018 -0700

    qed: Fix mask parameter in qed_vf_prep_tunn_req_tlv
    
    [ Upstream commit db803f36e56f23b5a2266807e190d1dc11554d54 ]
    
    Clang complains when one enumerated type is implicitly converted to
    another.
    
    drivers/net/ethernet/qlogic/qed/qed_vf.c:686:6: warning: implicit
    conversion from enumeration type 'enum qed_tunn_mode' to different
    enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
                                     QED_MODE_L2GENEVE_TUNN,
                                     ^~~~~~~~~~~~~~~~~~~~~~
    
    Update mask's parameter to expect qed_tunn_mode, which is what was
    intended.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/125
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a2b1a38ad02bdb2586c6fde366e8199cfa06838b
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Sep 24 13:53:34 2018 -0700

    qed: Avoid implicit enum conversion in qed_set_tunn_cls_info
    
    [ Upstream commit a898fba32229efd5e6b6154f83fa86a7145156b9 ]
    
    Clang warns when one enumerated type is implicitly converted to another.
    
    drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:163:25: warning:
    implicit conversion from enumeration type 'enum tunnel_clss' to
    different enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
            p_tun->vxlan.tun_cls = type;
                                 ~ ^~~~
    drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:165:26: warning:
    implicit conversion from enumeration type 'enum tunnel_clss' to
    different enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
            p_tun->l2_gre.tun_cls = type;
                                  ~ ^~~~
    drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:167:26: warning:
    implicit conversion from enumeration type 'enum tunnel_clss' to
    different enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
            p_tun->ip_gre.tun_cls = type;
                                  ~ ^~~~
    drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:169:29: warning:
    implicit conversion from enumeration type 'enum tunnel_clss' to
    different enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
            p_tun->l2_geneve.tun_cls = type;
                                     ~ ^~~~
    drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:171:29: warning:
    implicit conversion from enumeration type 'enum tunnel_clss' to
    different enumeration type 'enum qed_tunn_clss' [-Wenum-conversion]
            p_tun->ip_geneve.tun_cls = type;
                                     ~ ^~~~
    5 warnings generated.
    
    Avoid this by changing type to an int.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/125
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9e005da34ff51ece2edb2c26866fa714b7b5c8b
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Wed Sep 26 18:11:22 2018 +0200

    pxa168fb: prepare the clock
    
    [ Upstream commit d85536cde91fcfed6fb8d983783bd2b92c843939 ]
    
    Add missing prepare/unprepare operations for fbi->clk,
    this fixes following kernel warning:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:874 clk_core_enable+0x2c/0x1b0
      Enabling unprepared disp0_clk
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.18.0-rc8-00032-g02b43ddd4f21-dirty #25
      Hardware name: Marvell MMP2 (Device Tree Support)
      [<c010f7cc>] (unwind_backtrace) from [<c010cc6c>] (show_stack+0x10/0x14)
      [<c010cc6c>] (show_stack) from [<c011dab4>] (__warn+0xd8/0xf0)
      [<c011dab4>] (__warn) from [<c011db10>] (warn_slowpath_fmt+0x44/0x6c)
      [<c011db10>] (warn_slowpath_fmt) from [<c043898c>] (clk_core_enable+0x2c/0x1b0)
      [<c043898c>] (clk_core_enable) from [<c0439ec8>] (clk_core_enable_lock+0x18/0x2c)
      [<c0439ec8>] (clk_core_enable_lock) from [<c0436698>] (pxa168fb_probe+0x464/0x6ac)
      [<c0436698>] (pxa168fb_probe) from [<c04779a0>] (platform_drv_probe+0x48/0x94)
      [<c04779a0>] (platform_drv_probe) from [<c0475bec>] (driver_probe_device+0x328/0x470)
      [<c0475bec>] (driver_probe_device) from [<c0475de4>] (__driver_attach+0xb0/0x124)
      [<c0475de4>] (__driver_attach) from [<c0473c38>] (bus_for_each_dev+0x64/0xa0)
      [<c0473c38>] (bus_for_each_dev) from [<c0474ee0>] (bus_add_driver+0x1b8/0x230)
      [<c0474ee0>] (bus_add_driver) from [<c0476a20>] (driver_register+0xac/0xf0)
      [<c0476a20>] (driver_register) from [<c0102dd4>] (do_one_initcall+0xb8/0x1f0)
      [<c0102dd4>] (do_one_initcall) from [<c0b010a0>] (kernel_init_freeable+0x294/0x2e0)
      [<c0b010a0>] (kernel_init_freeable) from [<c07e9eb8>] (kernel_init+0x8/0x10c)
      [<c07e9eb8>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
      Exception stack(0xd008bfb0 to 0xd008bff8)
      bfa0:                                     00000000 00000000 00000000 00000000
      bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      bfe0: 00000000 00000000 00000000 00000000 00000013 00000000
      ---[ end trace c0af40f9e2ed7cb4 ]---
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    [b.zolnierkie: enhance patch description a bit]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c2222c8f03927cdf13b4e27be25765ed151ef97
Author: Matias Karhumaa <matias.karhumaa@gmail.com>
Date:   Wed Sep 26 09:13:46 2018 +0300

    Bluetooth: SMP: fix crash in unpairing
    
    [ Upstream commit cb28c306b93b71f2741ce1a5a66289db26715f4d ]
    
    In case unpair_device() was called through mgmt interface at the same time
    when pairing was in progress, Bluetooth kernel module crash was seen.
    
    [  600.351225] general protection fault: 0000 [#1] SMP PTI
    [  600.351235] CPU: 1 PID: 11096 Comm: btmgmt Tainted: G           OE     4.19.0-rc1+ #1
    [  600.351238] Hardware name: Dell Inc. Latitude E5440/08RCYC, BIOS A18 05/14/2017
    [  600.351272] RIP: 0010:smp_chan_destroy.isra.10+0xce/0x2c0 [bluetooth]
    [  600.351276] Code: c0 0f 84 b4 01 00 00 80 78 28 04 0f 84 53 01 00 00 4d 85 ed 0f 85 ab 00 00 00 48 8b 08 48 8b 50 08 be 10 00 00 00 48 89 51 08 <48> 89 0a 48 b9 00 02 00 00 00 00 ad de 48 89 48 08 48 8b 83 00 01
    [  600.351279] RSP: 0018:ffffa9be839b3b50 EFLAGS: 00010246
    [  600.351282] RAX: ffff9c999ac565a0 RBX: ffff9c9996e98c00 RCX: ffff9c999aa28b60
    [  600.351285] RDX: dead000000000200 RSI: 0000000000000010 RDI: ffff9c999e403500
    [  600.351287] RBP: ffffa9be839b3b70 R08: 0000000000000000 R09: ffffffff92a25c00
    [  600.351290] R10: ffffa9be839b3ae8 R11: 0000000000000001 R12: ffff9c995375b800
    [  600.351292] R13: 0000000000000000 R14: ffff9c99619a5000 R15: ffff9c9962a01c00
    [  600.351295] FS:  00007fb2be27c700(0000) GS:ffff9c999e880000(0000) knlGS:0000000000000000
    [  600.351298] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  600.351300] CR2: 00007fb2bdadbad0 CR3: 000000041c328001 CR4: 00000000001606e0
    [  600.351302] Call Trace:
    [  600.351325]  smp_failure+0x4f/0x70 [bluetooth]
    [  600.351345]  smp_cancel_pairing+0x74/0x80 [bluetooth]
    [  600.351370]  unpair_device+0x1c1/0x330 [bluetooth]
    [  600.351399]  hci_sock_sendmsg+0x960/0x9f0 [bluetooth]
    [  600.351409]  ? apparmor_socket_sendmsg+0x1e/0x20
    [  600.351417]  sock_sendmsg+0x3e/0x50
    [  600.351422]  sock_write_iter+0x85/0xf0
    [  600.351429]  do_iter_readv_writev+0x12b/0x1b0
    [  600.351434]  do_iter_write+0x87/0x1a0
    [  600.351439]  vfs_writev+0x98/0x110
    [  600.351443]  ? ep_poll+0x16d/0x3d0
    [  600.351447]  ? ep_modify+0x73/0x170
    [  600.351451]  do_writev+0x61/0xf0
    [  600.351455]  ? do_writev+0x61/0xf0
    [  600.351460]  __x64_sys_writev+0x1c/0x20
    [  600.351465]  do_syscall_64+0x5a/0x110
    [  600.351471]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  600.351474] RIP: 0033:0x7fb2bdb62fe0
    [  600.351477] Code: 73 01 c3 48 8b 0d b8 6e 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 69 c7 2c 00 00 75 10 b8 14 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 de 80 01 00 48 89 04 24
    [  600.351479] RSP: 002b:00007ffe062cb8f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000014
    [  600.351484] RAX: ffffffffffffffda RBX: 000000000255b3d0 RCX: 00007fb2bdb62fe0
    [  600.351487] RDX: 0000000000000001 RSI: 00007ffe062cb920 RDI: 0000000000000004
    [  600.351490] RBP: 00007ffe062cb920 R08: 000000000255bd80 R09: 0000000000000000
    [  600.351494] R10: 0000000000000353 R11: 0000000000000246 R12: 0000000000000001
    [  600.351497] R13: 00007ffe062cbbe0 R14: 0000000000000000 R15: 0000000000000000
    [  600.351501] Modules linked in: algif_hash algif_skcipher af_alg cmac ipt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo iptable_nat nf_nat_ipv4 xt_addrtype iptable_filter ip_tables xt_conntrack x_tables nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c br_netfilter bridge stp llc overlay arc4 nls_iso8859_1 dm_crypt intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp dell_laptop kvm_intel crct10dif_pclmul dell_smm_hwmon crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd cryptd glue_helper intel_cstate intel_rapl_perf uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev media hid_multitouch input_leds joydev serio_raw dell_wmi snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic dell_smbios dcdbas sparse_keymap
    [  600.351569]  snd_hda_intel btusb snd_hda_codec btrtl btbcm btintel snd_hda_core bluetooth(OE) snd_hwdep snd_pcm iwlmvm ecdh_generic wmi_bmof dell_wmi_descriptor snd_seq_midi mac80211 snd_seq_midi_event lpc_ich iwlwifi snd_rawmidi snd_seq snd_seq_device snd_timer cfg80211 snd soundcore mei_me mei dell_rbtn dell_smo8800 mac_hid parport_pc ppdev lp parport autofs4 hid_generic usbhid hid i915 nouveau kvmgt vfio_mdev mdev vfio_iommu_type1 vfio kvm irqbypass i2c_algo_bit ttm drm_kms_helper syscopyarea sysfillrect sysimgblt mxm_wmi psmouse ahci sdhci_pci cqhci libahci fb_sys_fops sdhci drm e1000e video wmi
    [  600.351637] ---[ end trace e49e9f1df09c94fb ]---
    [  600.351664] RIP: 0010:smp_chan_destroy.isra.10+0xce/0x2c0 [bluetooth]
    [  600.351666] Code: c0 0f 84 b4 01 00 00 80 78 28 04 0f 84 53 01 00 00 4d 85 ed 0f 85 ab 00 00 00 48 8b 08 48 8b 50 08 be 10 00 00 00 48 89 51 08 <48> 89 0a 48 b9 00 02 00 00 00 00 ad de 48 89 48 08 48 8b 83 00 01
    [  600.351669] RSP: 0018:ffffa9be839b3b50 EFLAGS: 00010246
    [  600.351672] RAX: ffff9c999ac565a0 RBX: ffff9c9996e98c00 RCX: ffff9c999aa28b60
    [  600.351674] RDX: dead000000000200 RSI: 0000000000000010 RDI: ffff9c999e403500
    [  600.351676] RBP: ffffa9be839b3b70 R08: 0000000000000000 R09: ffffffff92a25c00
    [  600.351679] R10: ffffa9be839b3ae8 R11: 0000000000000001 R12: ffff9c995375b800
    [  600.351681] R13: 0000000000000000 R14: ffff9c99619a5000 R15: ffff9c9962a01c00
    [  600.351684] FS:  00007fb2be27c700(0000) GS:ffff9c999e880000(0000) knlGS:0000000000000000
    [  600.351686] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  600.351689] CR2: 00007fb2bdadbad0 CR3: 000000041c328001 CR4: 00000000001606e0
    
    Crash happened because list_del_rcu() was called twice for smp->ltk. This
    was possible if unpair_device was called right after ltk was generated
    but before keys were distributed.
    
    In this commit smp_cancel_pairing was refactored to cancel pairing if it
    is in progress and otherwise just removes keys. Once keys are removed from
    rcu list, pointers to smp context's keys are set to NULL to make sure
    removed list items are not accessed later.
    
    This commit also adjusts the functionality of mgmt unpair_device() little
    bit. Previously pairing was canceled only if pairing was in state that
    keys were already generated. With this commit unpair_device() cancels
    pairing already in earlier states.
    
    Bug was found by fuzzing kernel SMP implementation using Synopsys
    Defensics.
    
    Reported-by: Pekka Oikarainen <pekka.oikarainen@synopsys.com>
    Signed-off-by: Matias Karhumaa <matias.karhumaa@gmail.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68fd462426c44402643d9e50285e106bc6f2e4ca
Author: Martin Willi <martin@strongswan.org>
Date:   Tue Sep 25 09:51:02 2018 +0200

    mac80211_hwsim: do not omit multicast announce of first added radio
    
    [ Upstream commit 28ef8b49a338dc1844e86b7954cfffc7dfa2660a ]
    
    The allocation of hwsim radio identifiers uses a post-increment from 0,
    so the first radio has idx 0. This idx is explicitly excluded from
    multicast announcements ever since, but it is unclear why.
    
    Drop that idx check and announce the first radio as well. This makes
    userspace happy if it relies on these events.
    
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b79f65376d38759c70c4cb9784a985b69e8c6f9
Author: Martin Willi <martin@strongswan.org>
Date:   Tue Sep 25 09:41:14 2018 +0200

    mac80211_hwsim: fix race in radio destruction from netlink notifier
    
    [ Upstream commit f1c47eb61d52379de5747d02bb36be20d7a2d0d3 ]
    
    The asynchronous destruction from a work-queue of radios tagged with
    destroy-on-close may race with the owning namespace about to exit,
    resulting in potential use-after-free of that namespace.
    
    Instead of using a work-queue, move radios about to destroy to a
    temporary list, which can be worked on synchronously after releasing
    the lock. This should be safe to do from the netlink socket notifier,
    as the namespace is guaranteed to not get released.
    
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a245a12394fed81ca779a6c6dd90fc66e2167d85
Author: Martin Willi <martin@strongswan.org>
Date:   Tue Sep 25 09:41:13 2018 +0200

    mac80211_hwsim: fix locking when iterating radios during ns exit
    
    [ Upstream commit 628980e5c8f038f730582c6ee50b7410741cd96e ]
    
    The cleanup of radios during namespace exit has recently been reworked
    to directly delete a radio while temporarily releasing the spinlock,
    fixing a race condition between the work-queue execution and namespace
    exits. However, the temporary unlock allows unsafe modifications on the
    iterated list, resulting in a potential crash when continuing the
    iteration of additional radios.
    
    Move radios about to destroy to a temporary list, and clean that up
    after releasing the spinlock once iteration is complete.
    
    Fixes: 8cfd36a0b53a ("mac80211_hwsim: fix use-after-free bug in hwsim_exit_net")
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de835e3911a39097c5ad9a53cb31476542e62620
Author: Masashi Honma <masashi.honma@gmail.com>
Date:   Tue Sep 25 11:15:00 2018 +0900

    nl80211: Fix possible Spectre-v1 for NL80211_TXRATE_HT
    
    [ Upstream commit 30fe6d50eb088783c8729c7d930f65296b2b3fa7 ]
    
    Use array_index_nospec() to sanitize ridx with respect to speculation.
    
    Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4417f9e05c28e4d17c906eb6ef35d4ecb4c29f59
Author: Zhao Qiang <qiang.zhao@nxp.com>
Date:   Thu Feb 1 14:54:32 2018 +0800

    soc: fsl: qe: Fix copy/paste bug in ucc_get_tdm_sync_shift()
    
    [ Upstream commit 96fc74333f84cfdf8d434c6c07254e215e2aad00 ]
    
    There is a copy and paste bug so we accidentally use the RX_ shift when
    we're in TX_ mode.
    
    Fixes: bb8b2062aff3 ("fsl/qe: setup clock source for TDM mode")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    (cherry picked from commit 3cb31b634052ed458922e0c8e2b4b093d7fb60b9)
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d87e83a55f4b5ffdcab3219b118cd897722be8b1
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Aug 23 23:36:00 2018 +0200

    soc: fsl: qbman: qman: avoid allocating from non existing gen_pool
    
    [ Upstream commit 64e9e22e68512da8df3c9a7430f07621e48db3c2 ]
    
    If the qman driver didn't probe, calling qman_alloc_fqid_range,
    qman_alloc_pool_range or qman_alloc_cgrid_range (as done in dpaa_eth) will
    pass a NULL pointer to gen_pool_alloc, leading to a NULL pointer
    dereference.
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Reviewed-by: Roy Pledge <roy.pledge@nxp.com>
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    (cherry picked from commit f72487a2788aa70c3aee1d0ebd5470de9bac953a)
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da5e35d2f776ec631f6b4c9232b7e7dcb364fcb7
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Tue Sep 25 08:32:50 2018 +0200

    net: macb: Clean 64b dma addresses if they are not detected
    
    [ Upstream commit e1e5d8a9fe737d94ccc0ccbaf0c97f69a8f3e000 ]
    
    Clear ADDR64 dma bit in DMACFG register in case that HW_DMA_CAP_64B is
    not detected on 64bit system.
    The issue was observed when bootloader(u-boot) does not check macb
    feature at DCFG6 register (DAW64_OFFSET) and enabling 64bit dma support
    by default. Then macb driver is reading DMACFG register back and only
    adding 64bit dma configuration but not cleaning it out.
    
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5499ce65ff9c9c66395897fb3709af36a771a235
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Sep 19 17:14:01 2018 -0700

    ARM: dts: BCM63xx: Fix incorrect interrupt specifiers
    
    [ Upstream commit 3ab97942d0213b6583a5408630a8cbbfbf54730f ]
    
    A number of our interrupts were incorrectly specified, fix both the PPI
    and SPI interrupts to be correct.
    
    Fixes: b5762cacc411 ("ARM: bcm63138: add NAND DT support")
    Fixes: 46d4bca0445a ("ARM: BCM63XX: add BCM63138 minimal Device Tree")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a958dc5482c1e478cd8e91bbfdc79f6bf80ca45b
Author: Steve Capper <steve.capper@arm.com>
Date:   Fri Sep 21 16:34:04 2018 +0100

    arm64: hugetlb: Fix handling of young ptes
    
    [ Upstream commit 469ed9d823b7d240d6b9574f061ded7c3834c167 ]
    
    In the contiguous bit hugetlb break-before-make code we assume that all
    hugetlb pages are young.
    
    In fact, remove_migration_pte is able to place an old hugetlb pte so
    this assumption is not valid.
    
    This patch fixes the contiguous hugetlb scanning code to preserve young
    ptes.
    
    Fixes: d8bdcff28764 ("arm64: hugetlb: Add break-before-make logic for contiguous entries")
    Signed-off-by: Steve Capper <steve.capper@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eaab185b06cddfd24e6675209edd953deb1f06fb
Author: zhong jiang <zhongjiang@huawei.com>
Date:   Wed Sep 19 20:21:11 2018 +0800

    netfilter: conntrack: get rid of double sizeof
    
    [ Upstream commit 346fa83d10934cf206e2fd0f514bf8ce186f08fe ]
    
    sizeof(sizeof()) is quite strange and does not seem to be what
    is wanted here.
    
    The issue is detected with the help of Coccinelle.
    
    Fixes: 39215846740a ("netfilter: conntrack: remove nlattr_size pointer from l4proto trackers")
    Signed-off-by: zhong jiang <zhongjiang@huawei.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 044c437547411ef38cbfafa2acb10a050cac0a34
Author: David Ahern <dsahern@gmail.com>
Date:   Mon Sep 17 08:20:36 2018 -0700

    netfilter: bridge: Don't sabotage nf_hook calls from an l3mdev
    
    [ Upstream commit a173f066c7cfc031acb8f541708041e009fc9812 ]
    
    For starters, the bridge netfilter code registers operations that
    are invoked any time nh_hook is called. Specifically, ip_sabotage_in
    watches for nested calls for NF_INET_PRE_ROUTING when a bridge is in
    the stack.
    
    Packet wise, the bridge netfilter hook runs first. br_nf_pre_routing
    allocates nf_bridge, sets in_prerouting to 1 and calls NF_HOOK for
    NF_INET_PRE_ROUTING. It's finish function, br_nf_pre_routing_finish,
    then resets in_prerouting flag to 0 and the packet continues up the
    stack. The packet eventually makes it to the VRF driver and it invokes
    nf_hook for NF_INET_PRE_ROUTING in case any rules have been added against
    the vrf device.
    
    Because of the registered operations the call to nf_hook causes
    ip_sabotage_in to be invoked. That function sees the nf_bridge on the
    skb and that in_prerouting is not set. Thinking it is an invalid nested
    call it steals (drops) the packet.
    
    Update ip_sabotage_in to recognize that the bridge or one of its upper
    devices (e.g., vlan) can be enslaved to a VRF (L3 master device) and
    allow the packet to go through the nf_hook a second time.
    
    Fixes: 73e20b761acf ("net: vrf: Add support for PREROUTING rules on vrf device")
    Reported-by: D'Souza, Nelson <ndsouza@ciena.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b7174a50fb259a6ff0fccc9901e0aeedaf68055
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Mon Aug 27 14:28:50 2018 +0200

    drm/i2c: tda9950: set MAX_RETRIES for errors only
    
    [ Upstream commit e0dccce1193f87597548d0db6ecc942fb92c04cd ]
    
    The CEC_TX_STATUS_MAX_RETRIES should be set for errors only to
    prevent the CEC framework from retrying the transmit. If the
    transmit was successful, then don't set this flag.
    
    Found by running 'cec-compliance -A' on a beaglebone box.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4abac4cf573a607d9c008462176a0423e3b4517e
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sun May 27 22:42:55 2018 +0100

    drm/i2c: tda9950: fix timeout counter check
    
    [ Upstream commit d98627d1360d55e3b28f702caca8b6342c4a4e45 ]
    
    Currently the check to see if the timeout has reached zero is incorrect
    and the check is instead checking if the timeout is non-zero and not
    zero, hence it will break out of the loop on the first iteration and
    the msleep is never executed.  Fix this by breaking from the loop when
    timeout is zero.
    
    Detected by CoverityScan, CID#1469404 ("Logically Dead Code")
    
    Fixes: f0316f93897c ("drm/i2c: tda9950: add CEC driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9981ca44ae4b0f20fca1560d4dd40ba72ba96af5
Author: Sean Tranchetti <stranche@codeaurora.org>
Date:   Wed Sep 19 13:54:56 2018 -0600

    xfrm: validate template mode
    
    [ Upstream commit 32bf94fb5c2ec4ec842152d0e5937cd4bb6738fa ]
    
    XFRM mode parameters passed as part of the user templates
    in the IP_XFRM_POLICY are never properly validated. Passing
    values other than valid XFRM modes can cause stack-out-of-bounds
    reads to occur later in the XFRM processing:
    
    [  140.535608] ================================================================
    [  140.543058] BUG: KASAN: stack-out-of-bounds in xfrm_state_find+0x17e4/0x1cc4
    [  140.550306] Read of size 4 at addr ffffffc0238a7a58 by task repro/5148
    [  140.557369]
    [  140.558927] Call trace:
    [  140.558936] dump_backtrace+0x0/0x388
    [  140.558940] show_stack+0x24/0x30
    [  140.558946] __dump_stack+0x24/0x2c
    [  140.558949] dump_stack+0x8c/0xd0
    [  140.558956] print_address_description+0x74/0x234
    [  140.558960] kasan_report+0x240/0x264
    [  140.558963] __asan_report_load4_noabort+0x2c/0x38
    [  140.558967] xfrm_state_find+0x17e4/0x1cc4
    [  140.558971] xfrm_resolve_and_create_bundle+0x40c/0x1fb8
    [  140.558975] xfrm_lookup+0x238/0x1444
    [  140.558977] xfrm_lookup_route+0x48/0x11c
    [  140.558984] ip_route_output_flow+0x88/0xc4
    [  140.558991] raw_sendmsg+0xa74/0x266c
    [  140.558996] inet_sendmsg+0x258/0x3b0
    [  140.559002] sock_sendmsg+0xbc/0xec
    [  140.559005] SyS_sendto+0x3a8/0x5a8
    [  140.559008] el0_svc_naked+0x34/0x38
    [  140.559009]
    [  140.592245] page dumped because: kasan: bad access detected
    [  140.597981] page_owner info is not active (free page?)
    [  140.603267]
    [  140.653503] ================================================================
    
    Signed-off-by: Sean Tranchetti <stranche@codeaurora.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3dc70478360ecd63e8ca2af90462cb8b1517492b
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Thu Sep 13 16:48:08 2018 +0100

    ARM: 8799/1: mm: fix pci_ioremap_io() offset check
    
    [ Upstream commit 3a58ac65e2d7969bcdf1b6acb70fa4d12a88e53e ]
    
    IO_SPACE_LIMIT is the ending address of the PCI IO space, i.e
    something like 0xfffff (and not 0x100000).
    
    Therefore, when offset = 0xf0000 is passed as argument, this function
    fails even though the offset + SZ_64K fits below the
    IO_SPACE_LIMIT. This makes the last chunk of 64 KB of the I/O space
    not usable as it cannot be mapped.
    
    This patch fixes that by substracing 1 to offset + SZ_64K, so that we
    compare the addrss of the last byte of the I/O space against
    IO_SPACE_LIMIT instead of the address of the first byte of what is
    after the I/O space.
    
    Fixes: c2794437091a4 ("ARM: Add fixed PCI i/o mapping")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c473a489d4098969ffafda913e1ad71da31b1104
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Tue Sep 11 10:31:15 2018 +0200

    xfrm: Fix NULL pointer dereference when skb_dst_force clears the dst_entry.
    
    [ Upstream commit 9e1437937807b0122e8da1ca8765be2adca9aee6 ]
    
    Since commit 222d7dbd258d ("net: prevent dst uses after free")
    skb_dst_force() might clear the dst_entry attached to the skb.
    The xfrm code don't expect this to happen, so we crash with
    a NULL pointer dereference in this case. Fix it by checking
    skb_dst(skb) for NULL after skb_dst_force() and drop the packet
    in cast the dst_entry was cleared.
    
    Fixes: 222d7dbd258d ("net: prevent dst uses after free")
    Reported-by: Tobias Hommel <netdev-list@genoetigt.de>
    Reported-by: Kristian Evensen <kristian.evensen@gmail.com>
    Reported-by: Wolfgang Walter <linux@stwm.de>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53d617654c5014aafb41373e38420cf80c573bb5
Author: Yuan-Chi Pang <fu3mo6goo@gmail.com>
Date:   Thu Sep 6 16:57:48 2018 +0800

    mac80211: fix TX status reporting for ieee80211s
    
    [ Upstream commit c42055105785580563535e6d3143cad95c7ac7ee ]
    
    TX status reporting to ieee80211s is through ieee80211s_update_metric.
    There are two problems about ieee80211s_update_metric:
    
    1. The purpose is to estimate the fail probability
    to a specific link. No need to restrict to data frame.
    
    2. Current implementation does not work if wireless driver does not
    pass tx_status with skb.
    
    Fix this by removing ieee80211_is_data condition, passing
    ieee80211_tx_status directly to ieee80211s_update_metric, and
    putting it in both __ieee80211_tx_status and ieee80211_tx_status_ext.
    
    Signed-off-by: Yuan-Chi Pang <fu3mo6goo@gmail.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd6b693e1d9451148ef5ce1142256026c0e4dc2e
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Sep 5 13:34:02 2018 +0200

    mac80211: TDLS: fix skb queue/priority assignment
    
    [ Upstream commit cb59bc14e830028d2244861216df038165d7625d ]
    
    If the TDLS setup happens over a connection to an AP that
    doesn't have QoS, we nevertheless assign a non-zero TID
    (skb->priority) and queue mapping, which may confuse us or
    drivers later.
    
    Fix it by just assigning the special skb->priority and then
    using ieee80211_select_queue() just like other data frames
    would go through.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9489521a39c8e141a61ddaeb74b90749f07ae27
Author: Jouni Malinen <jouni@codeaurora.org>
Date:   Wed Sep 5 18:52:22 2018 +0300

    cfg80211: Address some corner cases in scan result channel updating
    
    [ Upstream commit 119f94a6fefcc76d47075b83d2b73d04c895df78 ]
    
    cfg80211_get_bss_channel() is used to update the RX channel based on the
    available frame payload information (channel number from DSSS Parameter
    Set element or HT Operation element). This is needed on 2.4 GHz channels
    where frames may be received on neighboring channels due to overlapping
    frequency range.
    
    This might of some use on the 5 GHz band in some corner cases, but
    things are more complex there since there is no n:1 or 1:n mapping
    between channel numbers and frequencies due to multiple different
    starting frequencies in different operating classes. This could result
    in ieee80211_channel_to_frequency() returning incorrect frequency and
    ieee80211_get_channel() returning incorrect channel information (or
    indication of no match). In the previous implementation, this could
    result in some scan results being dropped completely, e.g., for the 4.9
    GHz channels. That prevented connection to such BSSs.
    
    Fix this by using the driver-provided channel pointer if
    ieee80211_get_channel() does not find matching channel data for the
    channel number in the frame payload and if the scan is done with 5 MHz
    or 10 MHz channel bandwidth. While doing this, also add comments
    describing what the function is trying to achieve to make it easier to
    understand what happens here and why.
    
    Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c4739102f0e3cbdf84f1a838d9f6db9727c7f25
Author: Bob Copeland <me@bobcopeland.com>
Date:   Wed Sep 5 06:22:59 2018 -0400

    mac80211: fix pending queue hang due to TX_DROP
    
    [ Upstream commit 6eae4a6c2be387fec41b0d2782c4fffb57159498 ]
    
    In our environment running lots of mesh nodes, we are seeing the
    pending queue hang periodically, with the debugfs queues file showing
    lines such as:
    
        00: 0x00000000/348
    
    i.e. there are a large number of frames but no stop reason set.
    
    One way this could happen is if queue processing from the pending
    tasklet exited early without processing all frames, and without having
    some future event (incoming frame, stop reason flag, ...) to reschedule
    it.
    
    Exactly this can occur today if ieee80211_tx() returns false due to
    packet drops or power-save buffering in the tx handlers.  In the
    past, this function would return true in such cases, and the change
    to false doesn't seem to be intentional.  Fix this case by reverting
    to the previous behavior.
    
    Fixes: bb42f2d13ffc ("mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue")
    Signed-off-by: Bob Copeland <bobcopeland@fb.com>
    Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2953d28476c38c58cd8646b401fd31953279698e
Author: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Date:   Wed Sep 5 08:06:12 2018 +0300

    cfg80211: reg: Init wiphy_idx in regulatory_hint_core()
    
    [ Upstream commit 24f33e64fcd0d50a4b1a8e5b41bd0257aa66b0e8 ]
    
    Core regulatory hints didn't set wiphy_idx to WIPHY_IDX_INVALID. Since
    the regulatory request is zeroed, wiphy_idx was always implicitly set to
    0. This resulted in updating only phy #0.
    Fix that.
    
    Fixes: 806a9e39670b ("cfg80211: make regulatory_request use wiphy_idx instead of wiphy")
    Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    [add fixes tag]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e20c2a6a7144717d899d8a86b023e66bf9e18ffb
Author: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Date:   Wed Sep 5 08:06:13 2018 +0300

    mac80211: Always report TX status
    
    [ Upstream commit 8682250b3c1b75a45feb7452bc413d004cfe3778 ]
    
    If a frame is dropped for any reason, mac80211 wouldn't report the TX
    status back to user space.
    
    As the user space may rely on the TX_STATUS to kick its state
    machines, resends etc, it's better to just report this frame as not
    acked instead.
    
    Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3767729df273b18171d3147673ccfcb023ac8b8
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Mon Sep 3 04:36:53 2018 -0700

    xfrm: reset crypto_done when iterating over multiple input xfrms
    
    [ Upstream commit 782710e333a526780d65918d669cb96646983ba2 ]
    
    We only support one offloaded xfrm (we do not have devices that
    can handle more than one offload), so reset crypto_done in
    xfrm_input() when iterating over multiple transforms in xfrm_input,
    so that we can invoke the appropriate x->type->input for the
    non-offloaded transforms
    
    Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdb06c787b34fd397f28f515105627307d615025
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Mon Sep 3 04:36:52 2018 -0700

    xfrm: reset transport header back to network header after all input transforms ahave been applied
    
    [ Upstream commit bfc0698bebcb16d19ecfc89574ad4d696955e5d3 ]
    
    A policy may have been set up with multiple transforms (e.g., ESP
    and ipcomp). In this situation, the ingress IPsec processing
    iterates in xfrm_input() and applies each transform in turn,
    processing the nexthdr to find any additional xfrm that may apply.
    
    This patch resets the transport header back to network header
    only after the last transformation so that subsequent xfrms
    can find the correct transport header.
    
    Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
    Suggested-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 401979de6e8b8893d723e92192e0fd9714d759b0
Author: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Date:   Fri Aug 31 08:38:49 2018 -0300

    xfrm6: call kfree_skb when skb is toobig
    
    [ Upstream commit 215ab0f021c9fea3c18b75e7d522400ee6a49990 ]
    
    After commit d6990976af7c5d8f55903bfb4289b6fb030bf754 ("vti6: fix PMTU caching
    and reporting on xmit"), some too big skbs might be potentially passed down to
    __xfrm6_output, causing it to fail to transmit but not free the skb, causing a
    leak of skb, and consequentially a leak of dst references.
    
    After running pmtu.sh, that shows as failure to unregister devices in a namespace:
    
    [  311.397671] unregister_netdevice: waiting for veth_b to become free. Usage count = 1
    
    The fix is to call kfree_skb in case of transmit failures.
    
    Fixes: dd767856a36e ("xfrm6: Don't call icmpv6_send on local error")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36ad133bf9871779c742eb75df2fe633682abd5c
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Wed Aug 1 13:45:11 2018 +0200

    xfrm: Validate address prefix lengths in the xfrm selector.
    
    [ Upstream commit 07bf7908950a8b14e81aa1807e3c667eab39287a ]
    
    We don't validate the address prefix lengths in the xfrm
    selector we got from userspace. This can lead to undefined
    behaviour in the address matching functions if the prefix
    is too big for the given address family. Fix this by checking
    the prefixes and refuse SA/policy insertation when a prefix
    is invalid.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Air Icy <icytxw@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>