commit ae66ed23c68fc939793f3fe5a6619ee98d3239e9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 8 09:10:07 2020 +0200

    Linux 5.5.16

commit d541416601eed8f771488386dc49d91ce677e3a9
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Apr 1 21:10:58 2020 -0700

    mm: mempolicy: require at least one nodeid for MPOL_PREFERRED
    
    commit aa9f7d5172fac9bf1f09e678c35e287a40a7b7dd upstream.
    
    Using an empty (malformed) nodelist that is not caught during mount option
    parsing leads to a stack-out-of-bounds access.
    
    The option string that was used was: "mpol=prefer:,".  However,
    MPOL_PREFERRED requires a single node number, which is not being provided
    here.
    
    Add a check that 'nodes' is not empty after parsing for MPOL_PREFERRED's
    nodeid.
    
    Fixes: 095f1fc4ebf3 ("mempolicy: rework shmem mpol parsing and display")
    Reported-by: Entropy Moe <3ntr0py1337@gmail.com>
    Reported-by: syzbot+b055b1a6b2b958707a21@syzkaller.appspotmail.com
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Tested-by: syzbot+b055b1a6b2b958707a21@syzkaller.appspotmail.com
    Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
    Link: http://lkml.kernel.org/r/89526377-7eb6-b662-e1d8-4430928abde9@infradead.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 141a37be67abbf16553e84bdf6bca1a3028ccdf0
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Tue Dec 3 14:31:11 2019 -0500

    padata: always acquire cpu_hotplug_lock before pinst->lock
    
    commit 38228e8848cd7dd86ccb90406af32de0cad24be3 upstream.
    
    lockdep complains when padata's paths to update cpumasks via CPU hotplug
    and sysfs are both taken:
    
      # echo 0 > /sys/devices/system/cpu/cpu1/online
      # echo ff > /sys/kernel/pcrypt/pencrypt/parallel_cpumask
    
      ======================================================
      WARNING: possible circular locking dependency detected
      5.4.0-rc8-padata-cpuhp-v3+ #1 Not tainted
      ------------------------------------------------------
      bash/205 is trying to acquire lock:
      ffffffff8286bcd0 (cpu_hotplug_lock.rw_sem){++++}, at: padata_set_cpumask+0x2b/0x120
    
      but task is already holding lock:
      ffff8880001abfa0 (&pinst->lock){+.+.}, at: padata_set_cpumask+0x26/0x120
    
      which lock already depends on the new lock.
    
    padata doesn't take cpu_hotplug_lock and pinst->lock in a consistent
    order.  Which should be first?  CPU hotplug calls into padata with
    cpu_hotplug_lock already held, so it should have priority.
    
    Fixes: 6751fb3c0e0c ("padata: Use get_online_cpus/put_online_cpus")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: Eric Biggers <ebiggers@kernel.org>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c86ca4215d366339ce2d618ebf19e034c7bb7310
Author: Ursula Braun <ubraun@linux.ibm.com>
Date:   Tue Feb 25 16:34:36 2020 +0100

    net/smc: fix cleanup for linkgroup setup failures
    
    commit 51e3dfa8906ace90c809235b3d3afebc166b6433 upstream.
    
    If an SMC connection to a certain peer is setup the first time,
    a new linkgroup is created. In case of setup failures, such a
    linkgroup is unusable and should disappear. As a first step the
    linkgroup is removed from the linkgroup list in smc_lgr_forget().
    
    There are 2 problems:
    smc_listen_decline() might be called before linkgroup creation
    resulting in a crash due to calling smc_lgr_forget() with
    parameter NULL.
    If a setup failure occurs after linkgroup creation, the connection
    is never unregistered from the linkgroup, preventing linkgroup
    freeing.
    
    This patch introduces an enhanced smc_lgr_cleanup_early() function
    which
    * contains a linkgroup check for early smc_listen_decline()
      invocations
    * invokes smc_conn_free() to guarantee unregistering of the
      connection.
    * schedules fast linkgroup removal of the unusable linkgroup
    
    And the unused function smcd_conn_free() is removed from smc_core.h.
    
    Fixes: 3b2dec2603d5b ("net/smc: restructure client and server code in af_smc")
    Fixes: 2a0674fffb6bc ("net/smc: improve abnormal termination of link groups")
    Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
    Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e02b6db652833d07869e6f4b60eec9379d08fd96
Author: Amritha Nambiar <amritha.nambiar@intel.com>
Date:   Mon Feb 24 10:56:00 2020 -0800

    net: Fix Tx hash bound checking
    
    commit 6e11d1578fba8d09d03a286740ffcf336d53928c upstream.
    
    Fixes the lower and upper bounds when there are multiple TCs and
    traffic is on the the same TC on the same device.
    
    The lower bound is represented by 'qoffset' and the upper limit for
    hash value is 'qcount + qoffset'. This gives a clean Rx to Tx queue
    mapping when there are multiple TCs, as the queue indices for upper TCs
    will be offset by 'qoffset'.
    
    v2: Fixed commit description based on comments.
    
    Fixes: 1b837d489e06 ("net: Revoke export for __skb_tx_hash, update it to just be static skb_tx_hash")
    Fixes: eadec877ce9c ("net: Add support for subordinate traffic classes to netdev_pick_tx")
    Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
    Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b449baa8feb7c987b56a2c46b1a75ccc16045af
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Feb 21 19:42:13 2020 +0100

    net: genetlink: return the error code when attribute parsing fails.
    
    commit 39f3b41aa7cae917f928ef9f31d09da28188e5ed upstream.
    
    Currently if attribute parsing fails and the genl family
    does not support parallel operation, the error code returned
    by __nlmsg_parse() is discarded by genl_family_rcv_msg_attrs_parse().
    
    Be sure to report the error for all genl families.
    
    Fixes: c10e6cf85e7d ("net: genetlink: push attrbuf allocation and parsing to a separate function")
    Fixes: ab5b526da048 ("net: genetlink: always allocate separate attrs for dumpit ops")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 940bbedcdc078fdb9e7f434da4fa05ea01b9651f
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Feb 26 16:21:22 2020 +0300

    i2c: i801: Do not add ICH_RES_IO_SMI for the iTCO_wdt device
    
    commit 04bbb97d1b732b2d197f103c5818f5c214a4cf81 upstream.
    
    Martin noticed that nct6775 driver does not load properly on his system
    in v5.4+ kernels. The issue was bisected to commit b84398d6d7f9 ("i2c:
    i801: Use iTCO version 6 in Cannon Lake PCH and beyond") but it is
    likely not the culprit because the faulty code has been in the driver
    already since commit 9424693035a5 ("i2c: i801: Create iTCO device on
    newer Intel PCHs"). So more likely some commit that added PCI IDs of
    recent chipsets made the driver to create the iTCO_wdt device on Martins
    system.
    
    The issue was debugged to be PCI configuration access to the PMC device
    that is not present. This returns all 1's when read and this caused the
    iTCO_wdt driver to accidentally request resourses used by nct6775.
    
    It turns out that the SMI resource is only required for some ancient
    systems, not the ones supported by this driver. For this reason do not
    populate the SMI resource at all and drop all the related code. The
    driver now always populates the main I/O resource and only in case of SPT
    (Intel Sunrisepoint) compatible devices it adds another resource for the
    NO_REBOOT bit. These two resources are of different types so
    platform_get_resource() used by the iTCO_wdt driver continues to find
    the both resources at index 0.
    
    Link: https://lore.kernel.org/linux-hwmon/CAM1AHpQ4196tyD=HhBu-2donSsuogabkfP03v1YF26Q7_BgvgA@mail.gmail.com/
    Fixes: 9424693035a5 ("i2c: i801: Create iTCO device on newer Intel PCHs")
    [wsa: complete fix needs all of http://patchwork.ozlabs.org/project/linux-i2c/list/?series=160959&state=*]
    Reported-by: Martin Volf <martin.volf.42@gmail.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37cdf64d218754cb9eaa4266f7574aba902f8cc1
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Feb 26 16:21:21 2020 +0300

    watchdog: iTCO_wdt: Make ICH_RES_IO_SMI optional
    
    commit e42b0c24389d5a1602e77db4f6def0d5a19e3e43 upstream.
    
    The iTCO_wdt driver only needs ICH_RES_IO_SMI I/O resource when either
    turn_SMI_watchdog_clear_off module parameter is set to match ->iTCO_version
    (or higher), and when legacy iTCO_vendorsupport is set. Modify the driver
    so that ICH_RES_IO_SMI is optional if the two conditions are not met.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4494e0a06a5c07def59ee0573716f3504422c562
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Feb 26 16:21:20 2020 +0300

    watchdog: iTCO_wdt: Export vendorsupport
    
    commit 7ca6ee38909109751bfab79e9f6c570d2ed258c6 upstream.
    
    In preparation for making ->smi_res optional the iTCO_wdt driver needs
    to know whether vendorsupport is being set to non-zero. For this reason
    export the variable.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8038ddeef2482a2e075bf7c7dc5617bff102fb8f
Author: Neal Cardwell <ncardwell@google.com>
Date:   Sat Feb 22 11:21:15 2020 -0500

    tcp: fix TFO SYNACK undo to avoid double-timestamp-undo
    
    commit dad8cea7add96a353fa1898b5ccefbb72da66f29 upstream.
    
    In a rare corner case the new logic for undo of SYNACK RTO could
    result in triggering the warning in tcp_fastretrans_alert() that says:
            WARN_ON(tp->retrans_out != 0);
    
    The warning looked like:
    
    WARNING: CPU: 1 PID: 1 at net/ipv4/tcp_input.c:2818 tcp_ack+0x13e0/0x3270
    
    The sequence that tickles this bug is:
     - Fast Open server receives TFO SYN with data, sends SYNACK
     - (client receives SYNACK and sends ACK, but ACK is lost)
     - server app sends some data packets
     - (N of the first data packets are lost)
     - server receives client ACK that has a TS ECR matching first SYNACK,
       and also SACKs suggesting the first N data packets were lost
        - server performs TS undo of SYNACK RTO, then immediately
          enters recovery
        - buggy behavior then performed a *second* undo that caused
          the connection to be in CA_Open with retrans_out != 0
    
    Basically, the incoming ACK packet with SACK blocks causes us to first
    undo the cwnd reduction from the SYNACK RTO, but then immediately
    enters fast recovery, which then makes us eligible for undo again. And
    then tcp_rcv_synrecv_state_fastopen() accidentally performs an undo
    using a "mash-up" of state from two different loss recovery phases: it
    uses the timestamp info from the ACK of the original SYNACK, and the
    undo_marker from the fast recovery.
    
    This fix refines the logic to only invoke the tcp_try_undo_loss()
    inside tcp_rcv_synrecv_state_fastopen() if the connection is still in
    CA_Loss.  If peer SACKs triggered fast recovery, then
    tcp_rcv_synrecv_state_fastopen() can't safely undo.
    
    Fixes: 794200d66273 ("tcp: undo cwnd on Fast Open spurious SYNACK retransmit")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27f0d9bf8d747ab4c38325548ca2d99041de6356
Author: Jiri Pirko <jiri@mellanox.com>
Date:   Tue Feb 25 13:54:12 2020 +0100

    sched: act: count in the size of action flags bitfield
    
    commit 1521a67e6016664941f0917d50cb20053a8826a2 upstream.
    
    The put of the flags was added by the commit referenced in fixes tag,
    however the size of the message was not extended accordingly.
    
    Fix this by adding size of the flags bitfield to the message size.
    
    Fixes: e38226786022 ("net: sched: update action implementations to support flags")
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 758bff91450ef050e4e9f3c25b5cbb3768bcadcc
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Fri Mar 20 16:02:10 2020 -0400

    IB/hfi1: Ensure pq is not left on waitlist
    
    commit 9a293d1e21a6461a11b4217b155bf445e57f4131 upstream.
    
    The following warning can occur when a pq is left on the dmawait list and
    the pq is then freed:
    
      WARNING: CPU: 47 PID: 3546 at lib/list_debug.c:29 __list_add+0x65/0xc0
      list_add corruption. next->prev should be prev (ffff939228da1880), but was ffff939cabb52230. (next=ffff939cabb52230).
      Modules linked in: mmfs26(OE) mmfslinux(OE) tracedev(OE) 8021q garp mrp ib_isert iscsi_target_mod target_core_mod crc_t10dif crct10dif_generic opa_vnic rpcrdma ib_iser libiscsi scsi_transport_iscsi ib_ipoib(OE) bridge stp llc iTCO_wdt iTCO_vendor_support intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm irqbypass crct10dif_pclmul crct10dif_common crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd ast ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm pcspkr joydev drm_panel_orientation_quirks i2c_i801 mei_me lpc_ich mei wmi ipmi_si ipmi_devintf ipmi_msghandler nfit libnvdimm acpi_power_meter acpi_pad hfi1(OE) rdmavt(OE) rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm ib_core binfmt_misc numatools(OE) xpmem(OE) ip_tables
      nfsv3 nfs_acl nfs lockd grace sunrpc fscache igb ahci libahci i2c_algo_bit dca libata ptp pps_core crc32c_intel [last unloaded: i2c_algo_bit]
      CPU: 47 PID: 3546 Comm: wrf.exe Kdump: loaded Tainted: G W OE ------------ 3.10.0-957.41.1.el7.x86_64 #1
      Hardware name: HPE.COM HPE SGI 8600-XA730i Gen10/X11DPT-SB-SG007, BIOS SBED1229 01/22/2019
      Call Trace:
      [<ffffffff91f65ac0>] dump_stack+0x19/0x1b
      [<ffffffff91898b78>] __warn+0xd8/0x100
      [<ffffffff91898bff>] warn_slowpath_fmt+0x5f/0x80
      [<ffffffff91a1dabe>] ? ___slab_alloc+0x24e/0x4f0
      [<ffffffff91b97025>] __list_add+0x65/0xc0
      [<ffffffffc03926a5>] defer_packet_queue+0x145/0x1a0 [hfi1]
      [<ffffffffc0372987>] sdma_check_progress+0x67/0xa0 [hfi1]
      [<ffffffffc03779d2>] sdma_send_txlist+0x432/0x550 [hfi1]
      [<ffffffff91a20009>] ? kmem_cache_alloc+0x179/0x1f0
      [<ffffffffc0392973>] ? user_sdma_send_pkts+0xc3/0x1990 [hfi1]
      [<ffffffffc0393e3a>] user_sdma_send_pkts+0x158a/0x1990 [hfi1]
      [<ffffffff918ab65e>] ? try_to_del_timer_sync+0x5e/0x90
      [<ffffffff91a3fe1a>] ? __check_object_size+0x1ca/0x250
      [<ffffffffc0395546>] hfi1_user_sdma_process_request+0xd66/0x1280 [hfi1]
      [<ffffffffc034e0da>] hfi1_aio_write+0xca/0x120 [hfi1]
      [<ffffffff91a4245b>] do_sync_readv_writev+0x7b/0xd0
      [<ffffffff91a4409e>] do_readv_writev+0xce/0x260
      [<ffffffff918df69f>] ? pick_next_task_fair+0x5f/0x1b0
      [<ffffffff918db535>] ? sched_clock_cpu+0x85/0xc0
      [<ffffffff91f6b16a>] ? __schedule+0x13a/0x860
      [<ffffffff91a442c5>] vfs_writev+0x35/0x60
      [<ffffffff91a4447f>] SyS_writev+0x7f/0x110
      [<ffffffff91f78ddb>] system_call_fastpath+0x22/0x27
    
    The issue happens when wait_event_interruptible_timeout() returns a value
    <= 0.
    
    In that case, the pq is left on the list. The code continues sending
    packets and potentially can complete the current request with the pq still
    on the dmawait list provided no descriptor shortage is seen.
    
    If the pq is torn down in that state, the sdma interrupt handler could
    find the now freed pq on the list with list corruption or memory
    corruption resulting.
    
    Fix by adding a flush routine to ensure that the pq is never on a list
    after processing a request.
    
    A follow-up patch series will address issues with seqlock surfaced in:
    https://lore.kernel.org/r/20200320003129.GP20941@ziepe.ca
    
    The seqlock use for sdma will then be converted to a spin lock since the
    list_empty() doesn't need the protection afforded by the sequence lock
    currently in use.
    
    Fixes: a0d406934a46 ("staging/rdma/hfi1: Add page lock limit check for SDMA requests")
    Link: https://lore.kernel.org/r/20200320200200.23203.37777.stgit@awfm-01.aw.intel.com
    Reviewed-by: Kaike Wan <kaike.wan@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3ec164d9c67fa8c6fdc1e9837768c26f480e8a2
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 13 17:30:27 2020 +0000

    rxrpc: Fix sendmsg(MSG_WAITALL) handling
    
    commit 498b577660f08cef5d9e78e0ed6dcd4c0939e98c upstream.
    
    Fix the handling of sendmsg() with MSG_WAITALL for userspace to round the
    timeout for when a signal occurs up to at least two jiffies as a 1 jiffy
    timeout may end up being effectively 0 if jiffies wraps at the wrong time.
    
    Fixes: bc5e3a546d55 ("rxrpc: Use MSG_WAITALL to tell sendmsg() to temporarily ignore signals")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c087b2e0d7ee9bc5aa913a9d2dde7ea466a39879
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Fri Mar 6 15:16:25 2020 +0200

    iwlwifi: dbg: don't abort if sending DBGC_SUSPEND_RESUME fails
    
    commit 699b760bd29edba736590fffef7654cb079c753e upstream.
    
    If the firmware is in a bad state or not initialized fully, sending
    the DBGC_SUSPEND_RESUME command fails but we can still collect logs.
    
    Instead of aborting the entire dump process, simply ignore the error.
    By removing the last callpoint that was checking the return value, we
    can also convert the function to return void.
    
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Fixes: 576058330f2d ("iwlwifi: dbg: support debug recording suspend resume command")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20200306151129.dcec37b2efd4.I8dcd190431d110a6a0e88095ce93591ccfb3d78d@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77d4cdf6d29c3ea4478dce85ac13840cf8c4448d
Author: Mordechay Goodstein <mordechay.goodstein@intel.com>
Date:   Fri Mar 6 15:16:24 2020 +0200

    iwlwifi: yoyo: don't add TLV offset when reading FIFOs
    
    commit a5688e600e78f9fc68102bf0fe5c797fc2826abe upstream.
    
    The TLV offset is only used to read registers, while the offset used for
    the FIFO addresses are hard coded in the driver and not given by the
    TLV.
    
    If we try to apply the TLV offset when reading the FIFOs, we'll read
    from invalid addresses, causing the driver to hang.
    
    Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
    Fixes: 8d7dea25ada7 ("iwlwifi: dbg_ini: implement Rx fifos dump")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20200306151129.fbab869c26fa.I4ddac20d02f9bce41855a816aa6855c89bc3874e@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bffa3b0c7396a3ef61a75129bf277c6284320f7
Author: Mordechay Goodstein <mordechay.goodstein@intel.com>
Date:   Fri Mar 6 15:16:22 2020 +0200

    iwlwifi: consider HE capability when setting LDPC
    
    commit cb377dfda1755b3bc01436755d866c8e5336a762 upstream.
    
    The AP may set the LDPC capability only in HE (IEEE80211_HE_PHY_CAP1),
    but we were checking it only in the HT capabilities.
    
    If we don't use this capability when required, the DSP gets the wrong
    configuration in HE and doesn't work properly.
    
    Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
    Fixes: befebbb30af0 ("iwlwifi: rs: consider LDPC capability in case of HE")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20200306151128.492d167c1a25.I1ad1353dbbf6c99ae57814be750f41a1c9f7f4ac@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c00f98ff5177e5e3d29f0314dbc22517ba03b32
Author: Tariq Toukan <tariqt@mellanox.com>
Date:   Mon Feb 24 13:56:53 2020 +0200

    net/mlx5e: kTLS, Fix wrong value in record tracker enum
    
    commit f28ca65efa87b3fb8da3d69ca7cb1ebc0448de66 upstream.
    
    Fix to match the HW spec: TRACKING state is 1, SEARCHING is 2.
    No real issue for now, as these values are not currently used.
    
    Fixes: d2ead1f360e8 ("net/mlx5e: Add kTLS TX HW offload support")
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Reviewed-by: Boris Pismenny <borisp@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce96751f44eff35477295afe63d598833c8e714a
Author: Bibby Hsieh <bibby.hsieh@mediatek.com>
Date:   Fri Feb 14 12:35:45 2020 +0800

    soc: mediatek: knows_txdone needs to be set in Mediatek CMDQ helper
    
    commit ce35e21d82bcac8b3fd5128888f9e233f8444293 upstream.
    
    Mediatek CMDQ driver have a mechanism to do TXDONE_BY_ACK,
    so we should set knows_txdone.
    
    Fixes:576f1b4bc802 ("soc: mediatek: Add Mediatek CMDQ helper")
    
    Cc: stable@vger.kernel.org # v5.0+
    Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
    Reviewed-by: CK Hu <ck.hu@mediatek.com>
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7491919b27a52ae6fe09fc9605a097a16dc11b58
Author: Geoffrey Allott <geoffrey@allott.email>
Date:   Thu Mar 19 14:00:48 2020 +0000

    ALSA: hda/ca0132 - Add Recon3Di quirk to handle integrated sound on EVGA X99 Classified motherboard
    
    commit e9097e47e349b747dee50f935216de0ffb662962 upstream.
    
    I have a system which has an EVGA X99 Classified motherboard. The pin
    assignments for the HD Audio controller are not correct under Linux.
    Windows 10 works fine and informs me that it's using the Recon3Di
    driver, and on Linux, `cat
    /sys/class/sound/card0/device/subsystem_{vendor,device}` yields
    
    0x3842
    0x1038
    
    This patch adds a corresponding entry to the quirk list.
    
    Signed-off-by: Geoffrey Allott <geoffrey@allott.email>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/a6cd56b678c00ce2db3685e4278919f2584f8244.camel@allott.email
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b655182e880201d2572a0e48bd1a8800d3eb503
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Thu Apr 2 19:36:26 2020 -0400

    Revert "dm: always call blk_queue_split() in dm_process_bio()"
    
    commit 120c9257f5f19e5d1e87efcbb5531b7cd81b7d74 upstream.
    
    This reverts commit effd58c95f277744f75d6e08819ac859dbcbd351.
    
    blk_queue_split() is causing excessive IO splitting -- because
    blk_max_size_offset() depends on 'chunk_sectors' limit being set and
    if it isn't (as is the case for DM targets!) it falls back to
    splitting on a 'max_sectors' boundary regardless of offset.
    
    "Fix" this by reverting back to _not_ using blk_queue_split() in
    dm_process_bio() for normal IO (reads and writes).  Long-term fix is
    still TBD but it should focus on training blk_max_size_offset() to
    call into a DM provided hook (to call DM's max_io_len()).
    
    Test results from simple misaligned IO test on 4-way dm-striped device
    with chunksize of 128K and stripesize of 512K:
    
    xfs_io -d -c 'pread -b 2m 224s 4072s' /dev/mapper/stripe_dev
    
    before this revert:
    
    253,0   21        1     0.000000000  2206  Q   R 224 + 4072 [xfs_io]
    253,0   21        2     0.000008267  2206  X   R 224 / 480 [xfs_io]
    253,0   21        3     0.000010530  2206  X   R 224 / 256 [xfs_io]
    253,0   21        4     0.000027022  2206  X   R 480 / 736 [xfs_io]
    253,0   21        5     0.000028751  2206  X   R 480 / 512 [xfs_io]
    253,0   21        6     0.000033323  2206  X   R 736 / 992 [xfs_io]
    253,0   21        7     0.000035130  2206  X   R 736 / 768 [xfs_io]
    253,0   21        8     0.000039146  2206  X   R 992 / 1248 [xfs_io]
    253,0   21        9     0.000040734  2206  X   R 992 / 1024 [xfs_io]
    253,0   21       10     0.000044694  2206  X   R 1248 / 1504 [xfs_io]
    253,0   21       11     0.000046422  2206  X   R 1248 / 1280 [xfs_io]
    253,0   21       12     0.000050376  2206  X   R 1504 / 1760 [xfs_io]
    253,0   21       13     0.000051974  2206  X   R 1504 / 1536 [xfs_io]
    253,0   21       14     0.000055881  2206  X   R 1760 / 2016 [xfs_io]
    253,0   21       15     0.000057462  2206  X   R 1760 / 1792 [xfs_io]
    253,0   21       16     0.000060999  2206  X   R 2016 / 2272 [xfs_io]
    253,0   21       17     0.000062489  2206  X   R 2016 / 2048 [xfs_io]
    253,0   21       18     0.000066133  2206  X   R 2272 / 2528 [xfs_io]
    253,0   21       19     0.000067507  2206  X   R 2272 / 2304 [xfs_io]
    253,0   21       20     0.000071136  2206  X   R 2528 / 2784 [xfs_io]
    253,0   21       21     0.000072764  2206  X   R 2528 / 2560 [xfs_io]
    253,0   21       22     0.000076185  2206  X   R 2784 / 3040 [xfs_io]
    253,0   21       23     0.000077486  2206  X   R 2784 / 2816 [xfs_io]
    253,0   21       24     0.000080885  2206  X   R 3040 / 3296 [xfs_io]
    253,0   21       25     0.000082316  2206  X   R 3040 / 3072 [xfs_io]
    253,0   21       26     0.000085788  2206  X   R 3296 / 3552 [xfs_io]
    253,0   21       27     0.000087096  2206  X   R 3296 / 3328 [xfs_io]
    253,0   21       28     0.000093469  2206  X   R 3552 / 3808 [xfs_io]
    253,0   21       29     0.000095186  2206  X   R 3552 / 3584 [xfs_io]
    253,0   21       30     0.000099228  2206  X   R 3808 / 4064 [xfs_io]
    253,0   21       31     0.000101062  2206  X   R 3808 / 3840 [xfs_io]
    253,0   21       32     0.000104956  2206  X   R 4064 / 4096 [xfs_io]
    253,0   21       33     0.001138823     0  C   R 4096 + 200 [0]
    
    after this revert:
    
    253,0   18        1     0.000000000  4430  Q   R 224 + 3896 [xfs_io]
    253,0   18        2     0.000018359  4430  X   R 224 / 256 [xfs_io]
    253,0   18        3     0.000028898  4430  X   R 256 / 512 [xfs_io]
    253,0   18        4     0.000033535  4430  X   R 512 / 768 [xfs_io]
    253,0   18        5     0.000065684  4430  X   R 768 / 1024 [xfs_io]
    253,0   18        6     0.000091695  4430  X   R 1024 / 1280 [xfs_io]
    253,0   18        7     0.000098494  4430  X   R 1280 / 1536 [xfs_io]
    253,0   18        8     0.000114069  4430  X   R 1536 / 1792 [xfs_io]
    253,0   18        9     0.000129483  4430  X   R 1792 / 2048 [xfs_io]
    253,0   18       10     0.000136759  4430  X   R 2048 / 2304 [xfs_io]
    253,0   18       11     0.000152412  4430  X   R 2304 / 2560 [xfs_io]
    253,0   18       12     0.000160758  4430  X   R 2560 / 2816 [xfs_io]
    253,0   18       13     0.000183385  4430  X   R 2816 / 3072 [xfs_io]
    253,0   18       14     0.000190797  4430  X   R 3072 / 3328 [xfs_io]
    253,0   18       15     0.000197667  4430  X   R 3328 / 3584 [xfs_io]
    253,0   18       16     0.000218751  4430  X   R 3584 / 3840 [xfs_io]
    253,0   18       17     0.000226005  4430  X   R 3840 / 4096 [xfs_io]
    253,0   18       18     0.000250404  4430  Q   R 4120 + 176 [xfs_io]
    253,0   18       19     0.000847708     0  C   R 4096 + 24 [0]
    253,0   18       20     0.000855783     0  C   R 4120 + 176 [0]
    
    Fixes: effd58c95f27774 ("dm: always call blk_queue_split() in dm_process_bio()")
    Cc: stable@vger.kernel.org
    Reported-by: Andreas Gruenbacher <agruenba@redhat.com>
    Tested-by: Barry Marson <bmarson@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 405d6db2264cfc6f7459862c2644904dda39c20f
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Feb 23 16:32:08 2020 +0100

    power: supply: axp288_charger: Add special handling for HP Pavilion x2 10
    
    commit 9c80662a74cd2a5d1113f5c69d027face963a556 upstream.
    
    Some HP Pavilion x2 10 models use an AXP288 for charging and fuel-gauge.
    We use a native power_supply / PMIC driver in this case, because on most
    models with an AXP288 the ACPI AC / Battery code is either completely
    missing or relies on custom / proprietary ACPI OpRegions which Linux
    does not implement.
    
    The native drivers mostly work fine, but there are 2 problems:
    
    1. These model uses a Type-C connector for charging which the AXP288 does
    not support. As long as a Type-A charger (which uses the USB data pins for
    charger type detection) is used everything is fine. But if a Type-C
    charger is used (such as the charger shipped with the device) then the
    charger is not recognized.
    
    So we end up slowly discharging the device even though a charger is
    connected, because we are limiting the current from the charger to 500mA.
    To make things worse this happens with the device's official charger.
    
    Looking at the ACPI tables HP has "solved" the problem of the AXP288 not
    being able to recognize Type-C chargers by simply always programming the
    input-current-limit at 3000mA and relying on a Vhold setting of 4.7V
    (normally 4.4V) to limit the current intake if the charger cannot handle
    this.
    
    2. If no charger is connected when the machine boots then it boots with the
    vbus-path disabled. On other devices this is done when a 5V boost converter
    is active to avoid the PMIC trying to charge from the 5V boost output.
    This is done when an OTG host cable is inserted and the ID pin on the
    micro-B receptacle is pulled low, the ID pin has an ACPI event handler
    associated with it which re-enables the vbus-path when the ID pin is pulled
    high when the OTG cable is removed. The Type-C connector has no ID pin,
    there is no ID pin handler and there appears to be no 5V boost converter,
    so we end up not charging because the vbus-path is disabled, until we
    unplug the charger which automatically clears the vbus-path disable bit and
    then on the second plug-in of the adapter we start charging.
    
    The HP Pavilion x2 10 models with an AXP288 do have mostly working ACPI
    AC / Battery code which does not rely on custom / proprietary ACPI
    OpRegions. So one possible solution would be to blacklist the AXP288
    native power_supply drivers and add the HP Pavilion x2 10 with AXP288
    DMI ids to the list of devices which should use the ACPI AC / Battery
    code even though they have an AXP288 PMIC. This would require changes to
    4 files: drivers/acpi/ac.c, drivers/power/supply/axp288_charger.c,
    drivers/acpi/battery.c and drivers/power/supply/axp288_fuel_gauge.c.
    
    Beside needing adding the same DMI matches to 4 different files, this
    approach also triggers problem 2. from above, but then when suspended,
    during suspend the machine will not wakeup because the vbus path is
    disabled by the AML code when not charging, so the Vbus low-to-high
    IRQ is not triggered, the CPU never wakes up and the device does not
    charge even though the user likely things it is charging, esp. since
    the charge status LED is directly coupled to an adapter being plugged
    in and does not reflect actual charging.
    
    This could be worked by enabling vbus-path explicitly from say the
    axp288_charger driver's suspend handler.
    
    So neither situation is ideal, in both cased we need to explicitly enable
    the vbus-path to work around different variants of problem 2 above, this
    requires a quirk in the axp288_charger code.
    
    If we go the route of using the ACPI AC / Battery drivers then we need
    modifications to 3 other drivers; and we need to partially disable the
    axp288_charger code, while at the same time keeping it around to enable
    vbus-path on suspend.
    
    OTOH we can copy the hardcoding of 3A input-current-limit (we never touch
    Vhold, so that would stay at 4.7V) to the axp288_charger code, which needs
    changes regardless, then we concentrate all special handling of this
    interesting device model in the axp288_charger code. That is what this
    commit does.
    
    Cc: stable@vger.kernel.org
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1791098
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44eff85b1daf4a82e5ead6f58d723280c565dcf5
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 23 22:59:39 2020 +0100

    extcon: axp288: Add wakeup support
    
    commit 9c94553099efb2ba873cbdddfd416a8a09d0e5f1 upstream.
    
    On devices with an AXP288, we need to wakeup from suspend when a charger
    is plugged in, so that we can do charger-type detection and so that the
    axp288-charger driver, which listens for our extcon events, can configure
    the input-current-limit accordingly.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86e9688556f96675b3404b4c4d8f4b637753c8e0
Author: Freeman Liu <freeman.liu@unisoc.com>
Date:   Mon Mar 23 15:00:03 2020 +0000

    nvmem: sprd: Fix the block lock operation
    
    commit c66ebde4d988b592e8f0008e04c47cc4950a49d3 upstream.
    
    According to the Spreadtrum eFuse specification, we should write 0 to
    the block to trigger the lock operation.
    
    Fixes: 096030e7f449 ("nvmem: sprd: Add Spreadtrum SoCs eFuse support")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Freeman Liu <freeman.liu@unisoc.com>
    Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20200323150007.7487-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ce5bcfffd1c9286c961698d962e02fe7f71250a
Author: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
Date:   Tue Mar 10 13:22:52 2020 +0000

    nvmem: check for NULL reg_read and reg_write before dereferencing
    
    commit 3c91ef69a3e94f78546b246225ed573fbf1735b4 upstream.
    
    Return -EPERM if reg_read is NULL in bin_attr_nvmem_read() or if
    reg_write is NULL in bin_attr_nvmem_write().
    
    This prevents NULL dereferences such as the one described in
    03cd45d2e219 ("thunderbolt: Prevent crash if non-active NVMem file is
    read")
    
    Signed-off-by: Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20200310132257.23358-10-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b83bb34c0bb65204c4300689cce2ad376676cb71
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Tue Mar 24 23:07:30 2020 +0200

    mei: me: add cedar fork device ids
    
    commit 99397d33b763dc554d118aaa38cc5abc6ce985de upstream.
    
    Add Cedar Fork (CDF) device ids, those belongs to the cannon point family.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20200324210730.17672-1-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a708ff02fc756bf8ef15dc7ce7773f53aaf196b
Author: Eugene Syromiatnikov <esyr@redhat.com>
Date:   Tue Mar 24 05:22:13 2020 +0100

    coresight: do not use the BIT() macro in the UAPI header
    
    commit 9b6eaaf3db5e5888df7bca7fed7752a90f7fd871 upstream.
    
    The BIT() macro definition is not available for the UAPI headers
    (moreover, it can be defined differently in the user space); replace
    its usage with the _BITUL() macro that is defined in <linux/const.h>.
    
    Fixes: 237483aa5cf4 ("coresight: stm: adding driver for CoreSight STM component")
    Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20200324042213.GA10452@asgard.redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87882e2f474d2c86b37df612c26118ab1d7033a5
Author: Kelsey Skunberg <kelsey.skunberg@gmail.com>
Date:   Wed Mar 25 09:17:08 2020 -0600

    PCI: sysfs: Revert "rescan" file renames
    
    commit bd641fd8303a371e789e924291086268256766b0 upstream.
    
    We changed these sysfs filenames:
    
      .../pci_bus/<domain:bus>/rescan  ->  .../pci_bus/<domain:bus>/bus_rescan
      .../<domain:bus:dev.fn>/rescan   ->  .../<domain:bus:dev.fn>/dev_rescan
    
    and Ruslan reported [1] that this broke a userspace application.
    
    Revert these name changes so both files are named "rescan" again.
    
    Note that we have to use __ATTR() to assign custom C symbols, i.e.,
    "struct device_attribute <symbol>".
    
    [1] https://lore.kernel.org/r/CAB=otbSYozS-ZfxB0nCiNnxcbqxwrHOSYxJJtDKa63KzXbXgpw@mail.gmail.com
    
    [bhelgaas: commit log, use __ATTR() both places so we don't have to rename
    the attributes]
    Fixes: 8bdfa145f582 ("PCI: sysfs: Define device attributes with DEVICE_ATTR*()")
    Fixes: 4e2b79436e4f ("PCI: sysfs: Change DEVICE_ATTR() to DEVICE_ATTR_WO()")
    Link: https://lore.kernel.org/r/20200325151708.32612-1-skunberg.kelsey@gmail.com
    Signed-off-by: Kelsey Skunberg <kelsey.skunberg@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable@vger.kernel.org      # v5.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8669f20f613462a40f195c8086331207d89d2990
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Tue Mar 17 15:31:54 2020 +0530

    misc: pci_endpoint_test: Avoid using module parameter to determine irqtype
    
    commit b2ba9225e0313b1de631a44b7b48c109032bffec upstream.
    
    commit e03327122e2c ("pci_endpoint_test: Add 2 ioctl commands")
    uses module parameter 'irqtype' in pci_endpoint_test_set_irq()
    to check if IRQ vectors of a particular type (MSI or MSI-X or
    LEGACY) is already allocated. However with multi-function devices,
    'irqtype' will not correctly reflect the IRQ type of the PCI device.
    
    Fix it here by adding 'irqtype' for each PCI device to show the
    IRQ type of a particular PCI device.
    
    Fixes: e03327122e2c ("pci_endpoint_test: Add 2 ioctl commands")
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd886553f0c7f9adca48e9fa23da935b008bba3e
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Tue Mar 17 15:31:57 2020 +0530

    misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
    
    commit 6b443e5c80b67a7b8a85b33d052d655ef9064e90 upstream.
    
    Adding more than 10 pci-endpoint-test devices results in
    "kobject_add_internal failed for pci-endpoint-test.1 with -EEXIST, don't
    try to register things with the same name in the same directory". This
    is because commit 2c156ac71c6b ("misc: Add host side PCI driver for PCI
    test function device") limited the length of the "name" to 20 characters.
    Change the length of the name to 24 in order to support upto 10000
    pci-endpoint-test devices.
    
    Fixes: 2c156ac71c6b ("misc: Add host side PCI driver for PCI test function device")
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e898f0d0fd62d5bcfff8fe55c11b85b0939f0d9
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Mar 26 11:26:18 2020 +0800

    misc: rtsx: set correct pcr_ops for rts522A
    
    commit 10cea23b6aae15e8324f4101d785687f2c514fe5 upstream.
    
    rts522a should use rts522a_pcr_ops, which is
    diffrent with rts5227 in phy/hw init setting.
    
    Fixes: ce6a5acc9387 ("mfd: rtsx: Add support for rts522A")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200326032618.20472-1-yuehaibing@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b0c20f436b693a44971ad5c73f905e23825992b
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Fri Jan 31 05:07:55 2020 -0500

    XArray: Fix xa_find_next for large multi-index entries
    
    [ Upstream commit bd40b17ca49d7d110adf456e647701ce74de2241 ]
    
    Coverity pointed out that xas_sibling() was shifting xa_offset without
    promoting it to an unsigned long first, so the shift could cause an
    overflow and we'd get the wrong answer.  The fix is obvious, and the
    new test-case provokes UBSAN to report an error:
    runtime error: shift exponent 60 is too large for 32-bit type 'int'
    
    Fixes: 19c30f4dd092 ("XArray: Fix xa_find_after with multi-index entries")
    Reported-by: Bjorn Helgaas <bhelgaas@google.com>
    Reported-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b3e6c11d430471beee643b537a3d6071857c40b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Jan 28 14:14:57 2020 -0800

    brcmfmac: abort and release host after error
    
    [ Upstream commit 863844ee3bd38219c88e82966d1df36a77716f3e ]
    
    With commit 216b44000ada ("brcmfmac: Fix use after free in
    brcmf_sdio_readframes()") applied, we see locking timeouts in
    brcmf_sdio_watchdog_thread().
    
    brcmfmac: brcmf_escan_timeout: timer expired
    INFO: task brcmf_wdog/mmc1:621 blocked for more than 120 seconds.
    Not tainted 4.19.94-07984-g24ff99a0f713 #1
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    brcmf_wdog/mmc1 D    0   621      2 0x00000000 last_sleep: 2440793077.  last_runnable: 2440766827
    [<c0aa1e60>] (__schedule) from [<c0aa2100>] (schedule+0x98/0xc4)
    [<c0aa2100>] (schedule) from [<c0853830>] (__mmc_claim_host+0x154/0x274)
    [<c0853830>] (__mmc_claim_host) from [<bf10c5b8>] (brcmf_sdio_watchdog_thread+0x1b0/0x1f8 [brcmfmac])
    [<bf10c5b8>] (brcmf_sdio_watchdog_thread [brcmfmac]) from [<c02570b8>] (kthread+0x178/0x180)
    
    In addition to restarting or exiting the loop, it is also necessary to
    abort the command and to release the host.
    
    Fixes: 216b44000ada ("brcmfmac: Fix use after free in brcmf_sdio_readframes()")
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Cc: Brian Norris <briannorris@chromium.org>
    Cc: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: franky.lin@broadcom.com
    Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb2f67674017cdee071fcd6505151c5c7470152b
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Mon Feb 10 13:11:00 2020 -0500

    padata: fix uninitialized return value in padata_replace()
    
    [ Upstream commit 41ccdbfd5427bbbf3ed58b16750113b38fad1780 ]
    
    According to Geert's report[0],
    
      kernel/padata.c: warning: 'err' may be used uninitialized in this
        function [-Wuninitialized]:  => 539:2
    
    Warning is seen only with older compilers on certain archs.  The
    runtime effect is potentially returning garbage down the stack when
    padata's cpumasks are modified before any pcrypt requests have run.
    
    Simplest fix is to initialize err to the success value.
    
    [0] http://lkml.kernel.org/r/20200210135506.11536-1-geert@linux-m68k.org
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Fixes: bbefa1dd6a6d ("crypto: pcrypt - Avoid deadlock by using per-instance padata queues")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0af4216afe5878267ba1c9e7fb32143177051532
Author: Len Brown <len.brown@intel.com>
Date:   Thu Mar 19 23:24:17 2020 -0400

    tools/power turbostat: Fix 32-bit capabilities warning
    
    [ Upstream commit fcaa681c03ea82193e60d7f2cdfd94fbbcd4cae9 ]
    
    warning: `turbostat' uses 32-bit capabilities (legacy support in use)
    
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e490a054cdbeba1c294bfec82edc1feec2609b10
Author: Len Brown <len.brown@intel.com>
Date:   Thu Mar 19 18:26:05 2020 -0400

    tools/power turbostat: Fix missing SYS_LPI counter on some Chromebooks
    
    [ Upstream commit 1f81c5efc020314b2db30d77efe228b7e117750d ]
    
    Some Chromebook BIOS' do not export an ACPI LPIT, which is how
    Linux finds the residency counter for CPU and SYSTEM low power states,
    that is exports in /sys/devices/system/cpu/cpuidle/*residency_us
    
    When these sysfs attributes are missing, check the debugfs attrubte
    from the pmc_core driver, which accesses the same counter value.
    
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 786957fe9c6f1b32e62e5295b7101db84d6398b9
Author: Len Brown <len.brown@intel.com>
Date:   Thu Mar 19 18:33:12 2020 -0400

    tools/power turbostat: Fix gcc build warnings
    
    [ Upstream commit d8d005ba6afa502ca37ced5782f672c4d2fc1515 ]
    
    Warning: ‘__builtin_strncpy’ specified bound 20 equals destination size
            [-Wstringop-truncation]
    
    reduce param to strncpy, to guarantee that a null byte is always copied
    into destination buffer.
    
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0dde8bc8f983156bd5eb75f5ec2cf6e06fc9e8ae
Author: James Zhu <James.Zhu@amd.com>
Date:   Wed Mar 18 17:09:05 2020 -0400

    drm/amdgpu: fix typo for vcn1 idle check
    
    [ Upstream commit acfc62dc68770aa665cc606891f6df7d6d1e52c0 ]
    
    fix typo for vcn1 idle check
    
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3f3b3f34753d94b848149cd102fb54e4146b843d
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon Mar 16 14:25:19 2020 +0300

    initramfs: restore default compression behavior
    
    [ Upstream commit 785d74ec3bbf26ac7f6e92e6e96a259aec0f107a ]
    
    Even though INITRAMFS_SOURCE kconfig option isn't set in most of
    defconfigs it is used (set) extensively by various build systems.
    Commit f26661e12765 ("initramfs: make initramfs compression choice
    non-optional") has changed default compression mode. Previously we
    compress initramfs using available compression algorithm. Now
    we don't use any compression at all by default.
    It significantly increases the image size in case of build system
    chooses embedded initramfs. Initially I faced with this issue while
    using buildroot.
    
    As of today it's not possible to set preferred compression mode
    in target defconfig as this option depends on INITRAMFS_SOURCE
    being set. Modification of all build systems either doesn't look
    like good option.
    
    Let's instead rewrite initramfs compression mode choices list
    the way that "INITRAMFS_COMPRESSION_NONE" will be the last option
    in the list. In that case it will be chosen only if all other
    options (which implements any compression) are not available.
    
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebc0d48b55c8c838aaabf50a0cb682715dbc205a
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Fri Mar 13 09:41:52 2020 +0100

    drm/bochs: downgrade pci_request_region failure from error to warning
    
    [ Upstream commit 8c34cd1a7f089dc03933289c5d4a4d1489549828 ]
    
    Shutdown of firmware framebuffer has a bunch of problems.  Because
    of this the framebuffer region might still be reserved even after
    drm_fb_helper_remove_conflicting_pci_framebuffers() returned.
    
    Don't consider pci_request_region() failure for the framebuffer
    region as fatal error to workaround this issue.
    
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Link: http://patchwork.freedesktop.org/patch/msgid/20200313084152.2734-1-kraxel@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00b45d70f49e993d300b55a9bd0faf451b05eb27
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Fri Feb 28 22:36:07 2020 +0100

    drm/amd/display: Add link_rate quirk for Apple 15" MBP 2017
    
    [ Upstream commit dec9de2ada523b344eb2428abfedf9d6cd0a0029 ]
    
    This fixes a problem found on the MacBookPro 2017 Retina panel:
    
    The panel reports 10 bpc color depth in its EDID, and the
    firmware chooses link settings at boot which support enough
    bandwidth for 10 bpc (324000 kbit/sec aka LINK_RATE_RBR2
    aka 0xc), but the DP_MAX_LINK_RATE dpcd register only reports
    2.7 Gbps (multiplier value 0xa) as possible, in direct
    contradiction of what the firmware successfully set up.
    
    This restricts the panel to 8 bpc, not providing the full
    color depth of the panel on Linux <= 5.5. Additionally, commit
    '4a8ca46bae8a ("drm/amd/display: Default max bpc to 16 for eDP")'
    introduced into Linux 5.6-rc1 will unclamp panel depth to
    its full 10 bpc, thereby requiring a eDP bandwidth for all
    modes that exceeds the bandwidth available and causes all modes
    to fail validation -> No modes for the laptop panel -> failure
    to set any mode -> Panel goes dark.
    
    This patch adds a quirk specific to the MBP 2017 15" Retina
    panel to override reported max link rate to the correct maximum
    of 0xc = LINK_RATE_RBR2 to fix the darkness and reduced display
    precision.
    
    Please apply for Linux 5.6+ to avoid regressing Apple MBP panel
    support.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e171e726b22348f646ce5bb604502ee2ff9bde39
Author: Evan Quan <evan.quan@amd.com>
Date:   Wed Mar 11 14:15:27 2020 +0800

    drm/amdgpu: add fbdev suspend/resume on gpu reset
    
    [ Upstream commit 063e768ebd27d3ec0d6908b7f8ea9b0a732b9949 ]
    
    This can fix the baco reset failure seen on Navi10.
    And this should be a low risk fix as the same sequence
    is already used for system suspend/resume.
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 036ee5ccf9b19acc0284983b8f9c6bb78c088e55
Author: Jérôme Pouiller <jerome.pouiller@silabs.com>
Date:   Tue Mar 10 11:13:52 2020 +0100

    staging: wfx: fix warning about freeing in-use mutex during device unregister
    
    [ Upstream commit bab0a0b03442a62fe3abefcb2169e0b9ff95990c ]
    
    After hif_shutdown(), communication with the chip is no more possible.
    It the only request that never reply. Therefore, hif_cmd.lock is never
    unlocked. hif_shutdown() unlock itself hif_cmd.lock to avoid a potential
    warning during disposal of device. hif_cmd.key_renew_lock should also
    been unlocked for the same reason.
    
    Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
    Link: https://lore.kernel.org/r/20200310101356.182818-2-Jerome.Pouiller@silabs.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b02b760e7cac5c1815de16775c6582248072f0c
Author: Prabhath Sajeepa <psajeepa@purestorage.com>
Date:   Mon Mar 9 15:07:53 2020 -0600

    nvme-rdma: Avoid double freeing of async event data
    
    [ Upstream commit 9134ae2a2546cb96abddcd4469a79c77ee3a4480 ]
    
    The timeout of identify cmd, which is invoked as part of admin queue
    creation, can result in freeing of async event data both in
    nvme_rdma_timeout handler and error handling path of
    nvme_rdma_configure_admin queue thus causing NULL pointer reference.
    Call Trace:
     ? nvme_rdma_setup_ctrl+0x223/0x800 [nvme_rdma]
     nvme_rdma_create_ctrl+0x2ba/0x3f7 [nvme_rdma]
     nvmf_dev_write+0xa54/0xcc6 [nvme_fabrics]
     __vfs_write+0x1b/0x40
     vfs_write+0xb2/0x1b0
     ksys_write+0x61/0xd0
     __x64_sys_write+0x1a/0x20
     do_syscall_64+0x60/0x1e0
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Reviewed-by: Roland Dreier <roland@purestorage.com>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Prabhath Sajeepa <psajeepa@purestorage.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2bc1fe7c83e7d02ef415d2879e5cf7848f4393c7
Author: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Date:   Tue Mar 31 12:39:35 2020 +0300

    net: macb: Fix handling of fixed-link node
    
    [ Upstream commit 79540d133ed6f65a37dacb54b7a704cc8a24c52d ]
    
    fixed-link nodes are treated as PHY nodes by of_mdiobus_child_is_phy().
    We must check if the interface is a fixed-link before looking up for PHY
    nodes.
    
    Fixes: 7897b071ac3b ("net: macb: convert to phylink")
    Tested-by: Cristian Birsan <cristian.birsan@microchip.com>
    Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6372215ba4c68d8a1f7c8f340af7ecf8130c6249
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Fri Mar 27 11:07:51 2020 +0800

    sctp: fix refcount bug in sctp_wfree
    
    [ Upstream commit 5c3e82fe159622e46e91458c1a6509c321a62820 ]
    
    We should iterate over the datamsgs to move
    all chunks(skbs) to newsk.
    
    The following case cause the bug:
    for the trouble SKB, it was in outq->transmitted list
    
    sctp_outq_sack
            sctp_check_transmitted
                    SKB was moved to outq->sacked list
            then throw away the sack queue
                    SKB was deleted from outq->sacked
    (but it was held by datamsg at sctp_datamsg_to_asoc
    So, sctp_wfree was not called here)
    
    then migrate happened
    
            sctp_for_each_tx_datachunk(
            sctp_clear_owner_w);
            sctp_assoc_migrate();
            sctp_for_each_tx_datachunk(
            sctp_set_owner_w);
    SKB was not in the outq, and was not changed to newsk
    
    finally
    
    __sctp_outq_teardown
            sctp_chunk_put (for another skb)
                    sctp_datamsg_put
                            __kfree_skb(msg->frag_list)
                                    sctp_wfree (for SKB)
            SKB->sk was still oldsk (skb->sk != asoc->base.sk).
    
    Reported-and-tested-by: syzbot+cea71eec5d6de256d54d@syzkaller.appspotmail.com
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d686670d53940d020daf21409b3343fa287a8bb0
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Thu Mar 26 20:47:46 2020 -0300

    sctp: fix possibly using a bad saddr with a given dst
    
    [ Upstream commit 582eea230536a6f104097dd46205822005d5fe3a ]
    
    Under certain circumstances, depending on the order of addresses on the
    interfaces, it could be that sctp_v[46]_get_dst() would return a dst
    with a mismatched struct flowi.
    
    For example, if when walking through the bind addresses and the first
    one is not a match, it saves the dst as a fallback (added in
    410f03831c07), but not the flowi. Then if the next one is also not a
    match, the previous dst will be returned but with the flowi information
    for the 2nd address, which is wrong.
    
    The fix is to use a locally stored flowi that can be used for such
    attempts, and copy it to the parameter only in case it is a possible
    match, together with the corresponding dst entry.
    
    The patch updates IPv6 code mostly just to be in sync. Even though the issue
    is also present there, it fallback is not expected to work with IPv6.
    
    Fixes: 410f03831c07 ("sctp: add routing output fallback")
    Reported-by: Jin Meng <meng.a.jin@nokia-sbell.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Tested-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6dd2c0d7a80d3cbb13dc299c0a02a6eea92837ab
Author: William Dauchy <w.dauchy@criteo.com>
Date:   Fri Mar 27 19:56:39 2020 +0100

    net, ip_tunnel: fix interface lookup with no key
    
    [ Upstream commit 25629fdaff2ff509dd0b3f5ff93d70a75e79e0a1 ]
    
    when creating a new ipip interface with no local/remote configuration,
    the lookup is done with TUNNEL_NO_KEY flag, making it impossible to
    match the new interface (only possible match being fallback or metada
    case interface); e.g: `ip link add tunl1 type ipip dev eth0`
    
    To fix this case, adding a flag check before the key comparison so we
    permit to match an interface with no local/remote config; it also avoids
    breaking possible userland tools relying on TUNNEL_NO_KEY flag and
    uninitialised key.
    
    context being on my side, I'm creating an extra ipip interface attached
    to the physical one, and moving it to a dedicated namespace.
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: William Dauchy <w.dauchy@criteo.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a51b950bdb86a28c46500c97c462ec48b45180b
Author: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Date:   Tue Mar 31 12:36:51 2020 +0300

    net: dsa: ksz: Select KSZ protocol tag
    
    [ Upstream commit f772148eb757b0823fbfdc2fe592d5e06c7f19b0 ]
    
    KSZ protocol tag is needed by the KSZ DSA drivers.
    
    Fixes: 0b9f9dfbfab4 ("dsa: Allow tag drivers to be built as modules")
    Tested-by: Cristian Birsan <cristian.birsan@microchip.com>
    Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d134b01ab7f351ccb6aafb6221ef6ad6025b49a
Author: Qian Cai <cai@lca.pw>
Date:   Wed Mar 25 18:01:00 2020 -0400

    ipv4: fix a RCU-list lock in fib_triestat_seq_show
    
    [ Upstream commit fbe4e0c1b298b4665ee6915266c9d6c5b934ef4a ]
    
    fib_triestat_seq_show() calls hlist_for_each_entry_rcu(tb, head,
    tb_hlist) without rcu_read_lock() will trigger a warning,
    
     net/ipv4/fib_trie.c:2579 RCU-list traversed in non-reader section!!
    
     other info that might help us debug this:
    
     rcu_scheduler_active = 2, debug_locks = 1
     1 lock held by proc01/115277:
      #0: c0000014507acf00 (&p->lock){+.+.}-{3:3}, at: seq_read+0x58/0x670
    
     Call Trace:
      dump_stack+0xf4/0x164 (unreliable)
      lockdep_rcu_suspicious+0x140/0x164
      fib_triestat_seq_show+0x750/0x880
      seq_read+0x1a0/0x670
      proc_reg_read+0x10c/0x1b0
      __vfs_read+0x3c/0x70
      vfs_read+0xac/0x170
      ksys_read+0x7c/0x140
      system_call+0x5c/0x68
    
    Fix it by adding a pair of rcu_read_lock/unlock() and use
    cond_resched_rcu() to avoid the situation where walking of a large
    number of items  may prevent scheduling for a long time.
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    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>