commit 56c0ace445bd3aad9b2bee1e9d54cffe37f22205
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 22 12:39:33 2021 +0200

    Linux 5.14.7
    
    Link: https://lore.kernel.org/r/20210920163921.633181900@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7593244dc31ad0eea70319f6110975f9c738dca
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Tue Sep 7 11:58:59 2021 +0200

    s390/bpf: Fix branch shortening during codegen pass
    
    commit 1511df6f5e9ef32826f20db2ee81f8527154dc14 upstream.
    
    EMIT6_PCREL() macro assumes that the previous pass generated 6 bytes
    of code, which is not the case if branch shortening took place. Fix by
    using jit->prg, like all the other EMIT6_PCREL_*() macros.
    
    Reported-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Fixes: 4e9b4a6883dd ("s390/bpf: Use relative long branches")
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a8787093b04057d855822094d63d04a2506444a
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Tue Sep 7 13:41:16 2021 +0200

    s390/bpf: Fix 64-bit subtraction of the -0x80000000 constant
    
    commit 6e61dc9da0b7a0d91d57c2e20b5ea4fd2d4e7e53 upstream.
    
    The JIT uses agfi for subtracting constants, but -(-0x80000000) cannot
    be represented as a 32-bit signed binary integer. Fix by using algfi in
    this particular case.
    
    Reported-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a31ec4d215a800b504de74b248795f8be666f8e
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Mon Sep 6 15:04:14 2021 +0200

    s390/bpf: Fix optimizing out zero-extensions
    
    commit db7bee653859ef7179be933e7d1384644f795f26 upstream.
    
    Currently the JIT completely removes things like `reg32 += 0`,
    however, the BPF_ALU semantics requires the target register to be
    zero-extended in such cases.
    
    Fix by optimizing out only the arithmetic operation, but not the
    subsequent zero-extension.
    
    Reported-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10203c14d608d8ca3ebdc04f52bf3e90efcb72a6
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Sep 16 14:33:35 2021 -0700

    net: dsa: bcm_sf2: Fix array overrun in bcm_sf2_num_active_ports()
    
    commit 02319bf15acf54004216e40ac9c171437f24be24 upstream.
    
    After d12e1c464988 ("net: dsa: b53: Set correct number of ports in the
    DSA struct") we stopped setting dsa_switch::num_ports to DSA_MAX_PORTS,
    which created an off by one error between the statically allocated
    bcm_sf2_priv::port_sts array (of size DSA_MAX_PORTS). When
    dsa_is_cpu_port() is used, we end-up accessing an out of bounds member
    and causing a NPD.
    
    Fix this by iterating with the appropriate port count using
    ds->num_ports.
    
    Fixes: d12e1c464988 ("net: dsa: b53: Set correct number of ports in the DSA struct")
    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 45c0e1ee3e9f442d9a4ee72b10ef926c6b32a8f5
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Sep 12 12:34:47 2021 -0400

    bnxt_en: Fix error recovery regression
    
    commit eca4cf12acda306f851f6d2a05b1c9ef62cf0e81 upstream.
    
    The recent patch has introduced a regression by not reading the reset
    count in the ERROR_RECOVERY async event handler.  We may have just
    gone through a reset and the reset count has just incremented.  If
    we don't update the reset count in the ERROR_RECOVERY event handler,
    the health check timer will see that the reset count has changed and
    will initiate an unintended reset.
    
    Restore the unconditional update of the reset count in
    bnxt_async_event_process() if error recovery watchdog is enabled.
    Also, update the reset count at the end of the reset sequence to
    make it even more robust.
    
    Fixes: 1b2b91831983 ("bnxt_en: Fix possible unintended driver initiated error recovery")
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47b119613dcf086c4f6aa5043ae7deffb80506bf
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Tue Sep 7 20:29:40 2021 +0900

    net: renesas: sh_eth: Fix freeing wrong tx descriptor
    
    [ Upstream commit 0341d5e3d1ee2a36dd5a49b5bef2ce4ad1cfa6b4 ]
    
    The cur_tx counter must be incremented after TACT bit of
    txdesc->status was set. However, a CPU is possible to reorder
    instructions and/or memory accesses between cur_tx and
    txdesc->status. And then, if TX interrupt happened at such a
    timing, the sh_eth_tx_free() may free the descriptor wrongly.
    So, add wmb() before cur_tx++.
    Otherwise NETDEV WATCHDOG timeout is possible to happen.
    
    Fixes: 86a74ff21a7a ("net: sh_eth: add support for Renesas SuperH Ethernet")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45f8ba56d4dd9e63b9715e4dc333e83d0d81e63b
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon Sep 6 22:51:33 2021 +0200

    cxgb3: fix oops on module removal
    
    [ Upstream commit be27a47a760e3ad8ce979a680558776f672efffd ]
    
    When removing the driver module w/o bringing an interface up before
    the error below occurs. Reason seems to be that cancel_work_sync() is
    called in t3_sge_stop() for a queue that hasn't been initialized yet.
    
    [10085.941785] ------------[ cut here ]------------
    [10085.941799] WARNING: CPU: 1 PID: 5850 at kernel/workqueue.c:3074 __flush_work+0x3ff/0x480
    [10085.941819] Modules linked in: vfat snd_hda_codec_hdmi fat snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio led_class ee1004 iTCO_
    wdt intel_tcc_cooling x86_pkg_temp_thermal coretemp aesni_intel crypto_simd cryptd snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hda_core r
    8169 snd_pcm realtek mdio_devres snd_timer snd i2c_i801 i2c_smbus libphy i915 i2c_algo_bit cxgb3(-) intel_gtt ttm mdio drm_kms_helper mei_me s
    yscopyarea sysfillrect sysimgblt mei fb_sys_fops acpi_pad sch_fq_codel crypto_user drm efivarfs ext4 mbcache jbd2 crc32c_intel
    [10085.941944] CPU: 1 PID: 5850 Comm: rmmod Not tainted 5.14.0-rc7-next-20210826+ #6
    [10085.941974] Hardware name: System manufacturer System Product Name/PRIME H310I-PLUS, BIOS 2603 10/21/2019
    [10085.941992] RIP: 0010:__flush_work+0x3ff/0x480
    [10085.942003] Code: c0 74 6b 65 ff 0d d1 bd 78 75 e8 bc 2f 06 00 48 c7 c6 68 b1 88 8a 48 c7 c7 e0 5f b4 8b 45 31 ff e8 e6 66 04 00 e9 4b fe ff ff <0f> 0b 45 31 ff e9 41 fe ff ff e8 72 c1 79 00 85 c0 74 87 80 3d 22
    [10085.942036] RSP: 0018:ffffa1744383fc08 EFLAGS: 00010246
    [10085.942048] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000923
    [10085.942062] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff91c901710a88
    [10085.942076] RBP: ffffa1744383fce8 R08: 0000000000000001 R09: 0000000000000001
    [10085.942090] R10: 00000000000000c2 R11: 0000000000000000 R12: ffff91c901710a88
    [10085.942104] R13: 0000000000000000 R14: ffff91c909a96100 R15: 0000000000000001
    [10085.942118] FS:  00007fe417837740(0000) GS:ffff91c969d00000(0000) knlGS:0000000000000000
    [10085.942134] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [10085.942146] CR2: 000055a8d567ecd8 CR3: 0000000121690003 CR4: 00000000003706e0
    [10085.942160] Call Trace:
    [10085.942166]  ? __lock_acquire+0x3af/0x22e0
    [10085.942177]  ? cancel_work_sync+0xb/0x10
    [10085.942187]  __cancel_work_timer+0x128/0x1b0
    [10085.942197]  ? __pm_runtime_resume+0x5b/0x90
    [10085.942208]  cancel_work_sync+0xb/0x10
    [10085.942217]  t3_sge_stop+0x2f/0x50 [cxgb3]
    [10085.942234]  remove_one+0x26/0x190 [cxgb3]
    [10085.942248]  pci_device_remove+0x39/0xa0
    [10085.942258]  __device_release_driver+0x15e/0x240
    [10085.942269]  driver_detach+0xd9/0x120
    [10085.942278]  bus_remove_driver+0x53/0xd0
    [10085.942288]  driver_unregister+0x2c/0x50
    [10085.942298]  pci_unregister_driver+0x31/0x90
    [10085.942307]  cxgb3_cleanup_module+0x10/0x18c [cxgb3]
    [10085.942324]  __do_sys_delete_module+0x191/0x250
    [10085.942336]  ? syscall_enter_from_user_mode+0x21/0x60
    [10085.942347]  ? trace_hardirqs_on+0x2a/0xe0
    [10085.942357]  __x64_sys_delete_module+0x13/0x20
    [10085.942368]  do_syscall_64+0x40/0x90
    [10085.942377]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [10085.942389] RIP: 0033:0x7fe41796323b
    
    Fixes: 5e0b8928927f ("net:cxgb3: replace tasklets with works")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc2ebd4105b0759969b2c35a52182131cfb90aa8
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Sep 6 17:19:49 2021 -0700

    mfd: lpc_sch: Rename GPIOBASE to prevent build error
    
    [ Upstream commit cdff1eda69326fb46de10c5454212b3efcf4bb41 ]
    
    One MIPS platform (mach-rc32434) defines GPIOBASE. This macro
    conflicts with one of the same name in lpc_sch.c. Rename the latter one
    to prevent the build error.
    
    ../drivers/mfd/lpc_sch.c:25: error: "GPIOBASE" redefined [-Werror]
       25 | #define GPIOBASE        0x44
    ../arch/mips/include/asm/mach-rc32434/rb.h:32: note: this is the location of the previous definition
       32 | #define GPIOBASE        0x050000
    
    Cc: Denis Turischev <denis@compulab.co.il>
    Fixes: e82c60ae7d3a ("mfd: Introduce lpc_sch for Intel SCH LPC bridge")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4666248379e95f659710e2f5ea69883cf799b40b
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Sep 6 10:27:38 2021 -0400

    ip6_gre: Revert "ip6_gre: add validation for csum_start"
    
    [ Upstream commit fe63339ef36bfb1cc12962015a9b254170eea057 ]
    
    This reverts commit 9cf448c200ba9935baa94e7a0964598ce947db9d.
    
    This commit was added for equivalence with a similar fix to ip_gre.
    That fix proved to have a bug. Upon closer inspection, ip6_gre is not
    susceptible to the original bug.
    
    So revert the unnecessary extra check.
    
    In short, ipgre_xmit calls skb_pull to remove ipv4 headers previously
    inserted by dev_hard_header. ip6gre_tunnel_xmit does not.
    
    Link: https://lore.kernel.org/netdev/CA+FuTSe+vJgTVLc9SojGuN-f9YQ+xWLPKE_S4f=f+w+_P2hgUg@mail.gmail.com/#t
    Fixes: 9cf448c200ba ("ip6_gre: add validation for csum_start")
    Signed-off-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 9ae3fccac631caef17fa3e960efa9faa3cce5b38
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Sep 5 14:10:59 2021 -0400

    bnxt_en: Fix possible unintended driver initiated error recovery
    
    [ Upstream commit 1b2b91831983aeac3adcbb469aa8b0dc71453f89 ]
    
    If error recovery is already enabled, bnxt_timer() will periodically
    check the heartbeat register and the reset counter.  If we get an
    error recovery async. notification from the firmware (e.g. change in
    primary/secondary role), we will immediately read and update the
    heartbeat register and the reset counter.  If the timer for the next
    health check expires soon after this, we may read the heartbeat register
    again in quick succession and find that it hasn't changed.  This will
    trigger error recovery unintentionally.
    
    The likelihood is small because we also reset fw_health->tmr_counter
    which will reset the interval for the next health check.  But the
    update is not protected and bnxt_timer() can miss the update and
    perform the health check without waiting for the full interval.
    
    Fix it by only reading the heartbeat register and reset counter in
    bnxt_async_event_process() if error recovery is trasitioning to the
    enabled state.  Also add proper memory barriers so that when enabling
    for the first time, bnxt_timer() will see the tmr_counter interval and
    perform the health check after the full interval has elapsed.
    
    Fixes: 7e914027f757 ("bnxt_en: Enable health monitoring.")
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05935d1da3c78c823116c8782ab3018ca702fe96
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Sep 5 14:10:57 2021 -0400

    bnxt_en: Fix asic.rev in devlink dev info command
    
    [ Upstream commit 6fdab8a3ade2adc123bbf5c4fdec3394560b1fb1 ]
    
    The current asic.rev is incomplete and does not include the metal
    revision.  Add the metal revision and decode the complete asic
    revision into the more common and readable form (A0, B0, etc).
    
    Fixes: 7154917a12b2 ("bnxt_en: Refactor bnxt_dl_info_get().")
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4dc86f679b214b80de36d2691b7ba9f2e8f2e07
Author: Edwin Peer <edwin.peer@broadcom.com>
Date:   Sun Sep 5 14:10:55 2021 -0400

    bnxt_en: fix stored FW_PSID version masks
    
    [ Upstream commit 1656db67233e4259281d2ac35b25f712edbbc20b ]
    
    The FW_PSID version components are 8 bits wide, not 4.
    
    Fixes: db28b6c77f40 ("bnxt_en: Fix devlink info's stored fw.psid version format.")
    Signed-off-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c70b2b2ca0c0d3f3b5475d543c5098a9242d9b4e
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Sun Sep 5 19:23:28 2021 +0200

    net: dsa: b53: Fix IMP port setup on BCM5301x
    
    [ Upstream commit 63f8428b4077de3664eb0b252393c839b0b293ec ]
    
    Broadcom's b53 switches have one IMP (Inband Management Port) that needs
    to be programmed using its own designed register. IMP port may be
    different than CPU port - especially on devices with multiple CPU ports.
    
    For that reason it's required to explicitly note IMP port index and
    check for it when choosing a register to use.
    
    This commit fixes BCM5301x support. Those switches use CPU port 5 while
    their IMP port is 8. Before this patch b53 was trying to program port 5
    with B53_PORT_OVERRIDE_CTRL instead of B53_GMII_PORT_OVERRIDE_CTRL(5).
    
    It may be possible to also replace "cpu_port" usages with
    dsa_is_cpu_port() but that is out of the scope of thix BCM5301x fix.
    
    Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4bf5d5224ffca069df4501ba5fcc6ded9c002ead
Author: Willem de Bruijn <willemb@google.com>
Date:   Sun Sep 5 11:21:09 2021 -0400

    ip_gre: validate csum_start only on pull
    
    [ Upstream commit 8a0ed250f911da31a2aef52101bc707846a800ff ]
    
    The GRE tunnel device can pull existing outer headers in ipge_xmit.
    This is a rare path, apparently unique to this device. The below
    commit ensured that pulling does not move skb->data beyond csum_start.
    
    But it has a false positive if ip_summed is not CHECKSUM_PARTIAL and
    thus csum_start is irrelevant.
    
    Refine to exclude this. At the same time simplify and strengthen the
    test.
    
    Simplify, by moving the check next to the offending pull, making it
    more self documenting and removing an unnecessary branch from other
    code paths.
    
    Strengthen, by also ensuring that the transport header is correct and
    therefore the inner headers will be after skb_reset_inner_headers.
    The transport header is set to csum_start in skb_partial_csum_set.
    
    Link: https://lore.kernel.org/netdev/YS+h%2FtqCJJiQei+W@shredder/
    Fixes: 1d011c4803c7 ("ip_gre: add validation for csum_start")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit faa3bd11de91d34d7d5d2fcbe0d21a9788d7102d
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Sep 2 22:38:11 2021 +0200

    iwlwifi: pnvm: Fix a memory leak in 'iwl_pnvm_get_from_fs()'
    
    [ Upstream commit 45010c080e6e7434fcae73212b0087a03590049f ]
    
    A firmware is requested but never released in this function. This leads to
    a memory leak in the normal execution path.
    
    Add the missing 'release_firmware()' call.
    Also introduce a temp variable (new_len) in order to keep the value of
    'pnvm->size' after the firmware has been released.
    
    Fixes: cdda18fbbefa ("iwlwifi: pnvm: move file loading code to a separate function")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Luca Coelho <luca@coelho.fi>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/1b5d80f54c1dbf85710fd285243932943b498fe7.1630614969.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b5fe5a750923e57625ff5a965e221e594f778217
Author: Dror Moshe <drorx.moshe@intel.com>
Date:   Thu Aug 26 22:47:39 2021 +0300

    iwlwifi: move get pnvm file name to a separate function
    
    [ Upstream commit b05c1d14a177eaffe3aa7fa18b39df3a3e1f3a47 ]
    
    Move code that generates the pnvm file name to a separate function,
    so that it can be reused.
    
    Signed-off-by: Dror Moshe <drorx.moshe@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20210826224715.7d2dd18c75a2.I3652584755b9ab44909ddcd09ff4d80c6690a1ad@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b6c8100c6931f8ad4840c3a8bc7af59ff55714a
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Fri Sep 3 15:35:43 2021 +0800

    qlcnic: Remove redundant unlock in qlcnic_pinit_from_rom
    
    [ Upstream commit 9ddbc2a00d7f63fa9748f4278643193dac985f2d ]
    
    Previous commit 68233c583ab4 removes the qlcnic_rom_lock()
    in qlcnic_pinit_from_rom(), but remains its corresponding
    unlock function, which is odd. I'm not very sure whether the
    lock is missing, or the unlock is redundant. This bug is
    suggested by a static analysis tool, please advise.
    
    Fixes: 68233c583ab4 ("qlcnic: updated reset sequence")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec5150055362615d752d72b3beaa84742b5ef18a
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 3 15:03:43 2021 -0700

    fq_codel: reject silly quantum parameters
    
    [ Upstream commit c7c5e6ff533fe1f9afef7d2fa46678987a1335a7 ]
    
    syzbot found that forcing a big quantum attribute would crash hosts fast,
    essentially using this:
    
    tc qd replace dev eth0 root fq_codel quantum 4294967295
    
    This is because fq_codel_dequeue() would have to loop
    ~2^31 times in :
    
            if (flow->deficit <= 0) {
                    flow->deficit += q->quantum;
                    list_move_tail(&flow->flowchain, &q->old_flows);
                    goto begin;
            }
    
    SFQ max quantum is 2^19 (half a megabyte)
    Lets adopt a max quantum of one megabyte for FQ_CODEL.
    
    Fixes: 4b549a2ef4be ("fq_codel: Fair Queue Codel AQM")
    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: Sasha Levin <sashal@kernel.org>

commit 7d0458a67e6da366a8d2d71e356889af777c4ccb
Author: Benjamin Hesmans <benjamin.hesmans@tessares.net>
Date:   Fri Sep 3 15:23:35 2021 +0200

    netfilter: socket: icmp6: fix use-after-scope
    
    [ Upstream commit 730affed24bffcd1eebd5903171960f5ff9f1f22 ]
    
    Bug reported by KASAN:
    
    BUG: KASAN: use-after-scope in inet6_ehashfn (net/ipv6/inet6_hashtables.c:40)
    Call Trace:
    (...)
    inet6_ehashfn (net/ipv6/inet6_hashtables.c:40)
    (...)
    nf_sk_lookup_slow_v6 (net/ipv6/netfilter/nf_socket_ipv6.c:91
    net/ipv6/netfilter/nf_socket_ipv6.c:146)
    
    It seems that this bug has already been fixed by Eric Dumazet in the
    past in:
    commit 78296c97ca1f ("netfilter: xt_socket: fix a stack corruption bug")
    
    But a variant of the same issue has been introduced in
    commit d64d80a2cde9 ("netfilter: x_tables: don't extract flow keys on early demuxed sks in socket match")
    
    `daddr` and `saddr` potentially hold a reference to ipv6_var that is no
    longer in scope when the call to `nf_socket_get_sock_v6` is made.
    
    Fixes: d64d80a2cde9 ("netfilter: x_tables: don't extract flow keys on early demuxed sks in socket match")
    Acked-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Benjamin Hesmans <benjamin.hesmans@tessares.net>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 864251f267537428f3390ad5bc356a5565712d40
Author: Mat Martineau <mathew.j.martineau@linux.intel.com>
Date:   Thu Sep 2 11:51:19 2021 -0700

    mptcp: Only send extra TCP acks in eligible socket states
    
    [ Upstream commit 340fa6667a696338e707cd5531a9631093d1be29 ]
    
    Recent changes exposed a bug where specifically-timed requests to the
    path manager netlink API could trigger a divide-by-zero in
    __tcp_select_window(), as syzkaller does:
    
    divide error: 0000 [#1] SMP KASAN NOPTI
    CPU: 0 PID: 9667 Comm: syz-executor.0 Not tainted 5.14.0-rc6+ #3
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
    RIP: 0010:__tcp_select_window+0x509/0xa60 net/ipv4/tcp_output.c:3016
    Code: 44 89 ff e8 c9 29 e9 fd 45 39 e7 0f 8d 20 ff ff ff e8 db 28 e9 fd 44 89 e3 e9 13 ff ff ff e8 ce 28 e9 fd 44 89 e0 44 89 e3 99 <f7> 7c 24 04 29 d3 e9 fc fe ff ff e8 b7 28 e9 fd 44 89 f1 48 89 ea
    RSP: 0018:ffff888031ccf020 EFLAGS: 00010216
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000040000
    RDX: 0000000000000000 RSI: ffff88811532c080 RDI: 0000000000000002
    RBP: 0000000000000000 R08: ffffffff835807c2 R09: 0000000000000000
    R10: 0000000000000004 R11: ffffed1020b92441 R12: 0000000000000000
    R13: 1ffff11006399e08 R14: 0000000000000000 R15: 0000000000000000
    FS:  00007fa4c8344700(0000) GS:ffff88811ae00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2f424000 CR3: 000000003e4e2003 CR4: 0000000000770ef0
    PKRU: 55555554
    Call Trace:
     tcp_select_window net/ipv4/tcp_output.c:264 [inline]
     __tcp_transmit_skb+0xc00/0x37a0 net/ipv4/tcp_output.c:1351
     __tcp_send_ack.part.0+0x3ec/0x760 net/ipv4/tcp_output.c:3972
     __tcp_send_ack net/ipv4/tcp_output.c:3978 [inline]
     tcp_send_ack+0x7d/0xa0 net/ipv4/tcp_output.c:3978
     mptcp_pm_nl_addr_send_ack+0x1ab/0x380 net/mptcp/pm_netlink.c:654
     mptcp_pm_remove_addr+0x161/0x200 net/mptcp/pm.c:58
     mptcp_nl_remove_id_zero_address+0x197/0x460 net/mptcp/pm_netlink.c:1328
     mptcp_nl_cmd_del_addr+0x98b/0xd40 net/mptcp/pm_netlink.c:1359
     genl_family_rcv_msg_doit.isra.0+0x225/0x340 net/netlink/genetlink.c:731
     genl_family_rcv_msg net/netlink/genetlink.c:775 [inline]
     genl_rcv_msg+0x341/0x5b0 net/netlink/genetlink.c:792
     netlink_rcv_skb+0x148/0x430 net/netlink/af_netlink.c:2504
     genl_rcv+0x24/0x40 net/netlink/genetlink.c:803
     netlink_unicast_kernel net/netlink/af_netlink.c:1314 [inline]
     netlink_unicast+0x537/0x750 net/netlink/af_netlink.c:1340
     netlink_sendmsg+0x846/0xd80 net/netlink/af_netlink.c:1929
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg+0x14e/0x190 net/socket.c:724
     ____sys_sendmsg+0x709/0x870 net/socket.c:2403
     ___sys_sendmsg+0xff/0x170 net/socket.c:2457
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2486
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    mptcp_pm_nl_addr_send_ack() was attempting to send a TCP ACK on the
    first subflow in the MPTCP socket's connection list without validating
    that the subflow was in a suitable connection state. To address this,
    always validate subflow state when sending extra ACKs on subflows
    for address advertisement or subflow priority change.
    
    Fixes: 84dfe3677a6f ("mptcp: send out dedicated ADD_ADDR packet")
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/229
    Co-developed-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Acked-by: Geliang Tang <geliangtang@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd65986f3e2d559cc0e9e39bf18fb95dea212c6e
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Thu Sep 2 10:30:51 2021 +0200

    net: dsa: b53: Set correct number of ports in the DSA struct
    
    [ Upstream commit d12e1c4649883e8ca5e8ff341e1948b3b6313259 ]
    
    Setting DSA_MAX_PORTS caused DSA to call b53 callbacks (e.g.
    b53_disable_port() during dsa_register_switch()) for invalid
    (non-existent) ports. That made b53 modify unrelated registers and is
    one of reasons for a broken BCM5301x support.
    
    This problem exists for years but DSA_MAX_PORTS usage has changed few
    times. It seems the most accurate to reference commit dropping
    dsa_switch_alloc() in the Fixes tag.
    
    Fixes: 7e99e3470172 ("net: dsa: remove dsa_switch_alloc helper")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c5800c3cab8182a30608a982c761fba0b20be4e
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Thu Sep 2 10:30:50 2021 +0200

    net: dsa: b53: Fix calculating number of switch ports
    
    [ Upstream commit cdb067d31c0fe4cce98b9d15f1f2ef525acaa094 ]
    
    It isn't true that CPU port is always the last one. Switches BCM5301x
    have 9 ports (port 6 being inactive) and they use port 5 as CPU by
    default (depending on design some other may be CPU ports too).
    
    A more reliable way of determining number of ports is to check for the
    last set bit in the "enabled_ports" bitfield.
    
    This fixes b53 internal state, it will allow providing accurate info to
    the DSA and is required to fix BCM5301x support.
    
    Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Reviewed-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 98641c732e9563564cc05964280ba5fb50ec1a0f
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Thu Sep 2 16:36:09 2021 +0800

    net: hso: add failure handler for add_net_device
    
    [ Upstream commit ecdc28defc46af476566fffd9e5cb4495a2f176e ]
    
    If the network devices connected to the system beyond
    HSO_MAX_NET_DEVICES. add_net_device() in hso_create_net_device()
    will be failed for the network_table is full. It will lead to
    business failure which rely on network_table, for example,
    hso_suspend() and hso_resume(). It will also lead to memory leak
    because resource release process can not search the hso_device
    object from network_table in hso_free_interface().
    
    Add failure handler for add_net_device() in hso_create_net_device()
    to solve the above problems.
    
    Fixes: 72dc1c096c70 ("HSO: add option hso driver")
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d37e739f531c7b51801f9247523336d7bc20936
Author: Matthieu Baerts <matthieu.baerts@tessares.net>
Date:   Wed Sep 1 10:15:37 2021 -0700

    selftests: mptcp: clean tmp files in simult_flows
    
    [ Upstream commit bfd862a7e9318dd906844807a713d27cdd1a72b1 ]
    
    '$cin' and '$sin' variables are local to a function: they are then not
    available from the cleanup trap.
    
    Instead, we need to use '$large' and '$small' that are not local and
    defined just before setting the trap.
    
    Without this patch, running this script in a loop might cause a:
    
      write: No space left on device
    
    issue.
    
    Fixes: 1a418cb8e888 ("mptcp: simult flow self-tests")
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e35820fb56415be6924bf552ec223ed5f347b4be
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Sep 1 10:15:36 2021 -0700

    mptcp: fix possible divide by zero
    
    [ Upstream commit 1094c6fe7280e17e0e87934add5ad2585e990def ]
    
    Florian noted that if mptcp_alloc_tx_skb() allocation fails
    in __mptcp_push_pending(), we can end-up invoking
    mptcp_push_release()/tcp_push() with a zero mss, causing
    a divide by 0 error.
    
    This change addresses the issue refactoring the skb allocation
    code checking if skb collapsing will happen for sure and doing
    the skb allocation only after such check. Skb allocation will
    now happen only after the call to tcp_send_mss() which
    correctly initializes mss_now.
    
    As side bonuses we now fill the skb tx cache only when needed,
    and this also clean-up a bit the output path.
    
    v1 -> v2:
     - use lockdep_assert_held_once() - Jakub
     - fix indentation - Jakub
    
    Reported-by: Florian Westphal <fw@strlen.de>
    Fixes: 724cfd2ee8aa ("mptcp: allocate TX skbs in msk context")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 122a20d062e83fa494f8327081746b725dc60d80
Author: James Clark <james.clark@arm.com>
Date:   Mon Aug 16 14:07:05 2021 +0100

    tools build: Fix feature detect clean for out of source builds
    
    [ Upstream commit 8af52e69772d053bc7caab12ad1c59f18ef2e3e2 ]
    
    Currently the clean target when using O= isn't cleaning the feature
    detect output. This is because O= and OUTPUT= are set to canonical
    paths. For example in tools/perf/Makefile:
    
      FULL_O := $(shell cd $(PWD); readlink -f $(O) || echo $(O))
    
    This means that OUTPUT ends in a / and most usages prepend it to a file
    without adding an extra /. This line that was changed adds an extra /
    before the 'feature' folder but not to the end, resulting in a clean
    command like this:
    
      rm -f /tmp/build//featuretest-all.bin ...
    
    After the change the clean command looks like this:
    
      rm -f /tmp/build/feature/test-all.bin ...
    
    Fixes: 762323eb39a257c3 ("perf build: Move feature cleanup under tools/build")
    Signed-off-by: James Clark <james.clark@arm.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Link: http://lore.kernel.org/lkml/20210816130705.1331868-1-james.clark@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e67dcd6556fabf0f3d7afe8d5f5c649c409d7211
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Aug 31 20:50:50 2021 +0200

    net: dsa: tag_rtl4_a: Fix egress tags
    
    [ Upstream commit 0e90dfa7a8d817db755c7b5d89d77b9c485e4180 ]
    
    I noticed that only port 0 worked on the RTL8366RB since we
    started to use custom tags.
    
    It turns out that the format of egress custom tags is actually
    different from ingress custom tags. While the lower bits just
    contain the port number in ingress tags, egress tags need to
    indicate destination port by setting the bit for the
    corresponding port.
    
    It was working on port 0 because port 0 added 0x00 as port
    number in the lower bits, and if you do this the packet appears
    at all ports, including the intended port. Ooops.
    
    Fix this and all ports work again. Use the define for shifting
    the "type A" into place while we're at it.
    
    Tested on the D-Link DIR-685 by sending traffic to each of
    the ports in turn. It works.
    
    Fixes: 86dd9868b878 ("net: dsa: tag_rtl4_a: Support also egress tags")
    Cc: DENG Qingfang <dqfext@gmail.com>
    Cc: Mauri Sandberg <sandberg@mailfence.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-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 fcf7264e8714a0f75828a08950366c74b6b27d9f
Author: Ming Lei <ming.lei@redhat.com>
Date:   Sat Aug 21 23:07:51 2021 +0800

    io_uring: retry in case of short read on block device
    
    [ Upstream commit 7db304375e11741e5940f9bc549155035bfb4dc1 ]
    
    In case of buffered reading from block device, when short read happens,
    we should retry to read more, otherwise the IO will be completed
    partially, for example, the following fio expects to read 2MB, but it
    can only read 1M or less bytes:
    
        fio --name=onessd --filename=/dev/nvme0n1 --filesize=2M \
            --rw=randread --bs=2M --direct=0 --overwrite=0 --numjobs=1 \
            --iodepth=1 --time_based=0 --runtime=2 --ioengine=io_uring \
            --registerfiles --fixedbufs --gtod_reduce=1 --group_reporting
    
    Fix the issue by allowing short read retry for block device, which sets
    FMODE_BUF_RASYNC really.
    
    Fixes: 9a173346bd9e ("io_uring: fix short read retries for non-reg files")
    Cc: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/20210821150751.1290434-1-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e7009e8ecdf627dd241c6aa556fa9ac7dd2c343a
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Aug 20 17:38:13 2021 +0200

    gpio: mpc8xxx: Use 'devm_gpiochip_add_data()' to simplify the code and avoid a leak
    
    [ Upstream commit 889a1b3f35db6ba5ba6a0c23a3a55594570b6a17 ]
    
    If an error occurs after a 'gpiochip_add_data()' call it must be undone by
    a corresponding 'gpiochip_remove()' as already done in the remove function.
    
    To simplify the code a fix a leak in the error handling path of the probe,
    use the managed version instead (i.e. 'devm_gpiochip_add_data()')
    
    Fixes: 698b8eeaed72 ("gpio/mpc8xxx: change irq handler from chained to normal")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 450adfabe05945b55371bfdad8b8db433c2a8f7d
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Aug 20 17:38:03 2021 +0200

    gpio: mpc8xxx: Fix a potential double iounmap call in 'mpc8xxx_probe()'
    
    [ Upstream commit 7d6588931ccd4c09e70a08175cf2e0cf7fc3b869 ]
    
    Commit 76c47d1449fc ("gpio: mpc8xxx: Add ACPI support") has switched to a
    managed version when dealing with 'mpc8xxx_gc->regs'. So the corresponding
    'iounmap()' call in the error handling path and in the remove should be
    removed to avoid a double unmap.
    
    This also allows some simplification in the probe. All the error handling
    paths related to managed resources can be direct returns and a NULL check
    in what remains in the error handling path can be removed.
    
    Fixes: 76c47d1449fc ("gpio: mpc8xxx: Add ACPI support")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c7ba0ec7c45bd07337e62207865215545fb360a
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Aug 20 17:37:55 2021 +0200

    gpio: mpc8xxx: Fix a resources leak in the error handling path of 'mpc8xxx_probe()'
    
    [ Upstream commit 555bda42b0c1a5ffb72d3227c043e8afde778f1f ]
    
    Commit 698b8eeaed72 ("gpio/mpc8xxx: change irq handler from chained to normal")
    has introduced a new 'goto err;' at the very end of the function, but has
    not updated the error handling path accordingly.
    
    Add the now missing 'irq_domain_remove()' call which balances a previous
    'irq_domain_create_linear() call.
    
    Fixes: 698b8eeaed72 ("gpio/mpc8xxx: change irq handler from chained to normal")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17bf84a9e8a2042081a6a783dece158668e78d36
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Wed Aug 25 11:50:37 2021 -0300

    perf bench inject-buildid: Handle writen() errors
    
    [ Upstream commit edf7b4a2d85e37a1ee77156bddaed4aa6af9c5e1 ]
    
    The build on fedora:35 and fedora:rawhide with clang is failing with:
    
      49    41.00 fedora:35                     : FAIL clang version 13.0.0 (Fedora 13.0.0~rc1-1.fc35)
        bench/inject-buildid.c:351:6: error: variable 'len' set but not used [-Werror,-Wunused-but-set-variable]
                u64 len = 0;
                    ^
        1 error generated.
        make[3]: *** [/git/perf-5.14.0-rc7/tools/build/Makefile.build:139: bench] Error 2
      50    41.11 fedora:rawhide                : FAIL clang version 13.0.0 (Fedora 13.0.0~rc1-1.fc35)
        bench/inject-buildid.c:351:6: error: variable 'len' set but not used [-Werror,-Wunused-but-set-variable]
                u64 len = 0;
                    ^
        1 error generated.
        make[3]: *** [/git/perf-5.14.0-rc7/tools/build/Makefile.build:139: bench] Error 2
    
    That 'len' variable is not used at all, so just make sure all the
    synthesize_RECORD() routines return ssize_t to propagate the writen()
    return, as it may fail, ditch the 'ret' var and bail out if those
    routines fail.
    
    Fixes: 0bf02a0d80427f26 ("perf bench: Add build-id injection benchmark")
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Link: http://lore.kernel.org/lkml/CAM9d7cgEZNSor+B+7Y2C+QYGme_v5aH0Zn0RLfxoQ+Fy83EHrg@mail.gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20e60bf86492996e3fa54780287efb04f573f0eb
Author: Li Huafei <lihuafei1@huawei.com>
Date:   Mon Aug 23 21:43:40 2021 +0800

    perf unwind: Do not overwrite FEATURE_CHECK_LDFLAGS-libunwind-{x86,aarch64}
    
    [ Upstream commit cdf32b44678c382a31dc183d9a767306915cda7b ]
    
    When setting LIBUNWIND_DIR, we first set
    
     FEATURE_CHECK_LDFLAGS-libunwind-{aarch64,x86} = -L$(LIBUNWIND_DIR)/lib.
    
    <committer note>
    This happens a bit before, the overwritting, in:
    
      libunwind_arch_set_flags = $(eval $(libunwind_arch_set_flags_code))
      define libunwind_arch_set_flags_code
        FEATURE_CHECK_CFLAGS-libunwind-$(1)  = -I$(LIBUNWIND_DIR)/include
        FEATURE_CHECK_LDFLAGS-libunwind-$(1) = -L$(LIBUNWIND_DIR)/lib
      endef
    
      ifdef LIBUNWIND_DIR
        LIBUNWIND_CFLAGS  = -I$(LIBUNWIND_DIR)/include
        LIBUNWIND_LDFLAGS = -L$(LIBUNWIND_DIR)/lib
        LIBUNWIND_ARCHS = x86 x86_64 arm aarch64 debug-frame-arm debug-frame-aarch64
        $(foreach libunwind_arch,$(LIBUNWIND_ARCHS),$(call libunwind_arch_set_flags,$(libunwind_arch)))
      endif
    
    Look at that 'foreach' on all the LIBUNWIND_ARCHS.
    </>
    
    After commit 5c4d7c82c0dc ("perf unwind: Do not put libunwind-{x86,aarch64}
    in FEATURE_TESTS_BASIC"), FEATURE_CHECK_LDFLAGS-libunwind-{x86,aarch64} is
    overwritten. As a result, the remote libunwind libraries cannot be searched
    from $(LIBUNWIND_DIR)/lib directory during feature check tests. Fix it with
    variable appending.
    
    Before this patch:
    
      perf$ make VF=1 LIBUNWIND_DIR=/opt/libunwind_aarch64
       BUILD:   Doing 'make -j16' parallel build
      <SNIP>
      ...
      ...                    libopencsd: [ OFF ]
      ...                 libunwind-x86: [ OFF ]
      ...              libunwind-x86_64: [ OFF ]
      ...                 libunwind-arm: [ OFF ]
      ...             libunwind-aarch64: [ OFF ]
      ...         libunwind-debug-frame: [ OFF ]
      ...     libunwind-debug-frame-arm: [ OFF ]
      ... libunwind-debug-frame-aarch64: [ OFF ]
      ...                           cxx: [ OFF ]
      <SNIP>
    
      perf$ cat ../build/feature/test-libunwind-aarch64.make.output
      /usr/bin/ld: cannot find -lunwind-aarch64
      /usr/bin/ld: cannot find -lunwind-aarch64
      collect2: error: ld returned 1 exit status
    
    After this patch:
    
      perf$ make VF=1 LIBUNWIND_DIR=/opt/libunwind_aarch64
       BUILD:   Doing 'make -j16' parallel build
      <SNIP>
      ...                    libopencsd: [ OFF ]
      ...                 libunwind-x86: [ OFF ]
      ...              libunwind-x86_64: [ OFF ]
      ...                 libunwind-arm: [ OFF ]
      ...             libunwind-aarch64: [ on  ]
      ...         libunwind-debug-frame: [ OFF ]
      ...     libunwind-debug-frame-arm: [ OFF ]
      ... libunwind-debug-frame-aarch64: [ OFF ]
      ...                           cxx: [ OFF ]
      <SNIP>
    
      perf$ cat ../build/feature/test-libunwind-aarch64.make.output
    
      perf$ ldd ./perf
            linux-vdso.so.1 (0x00007ffdf07da000)
            libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f30953dc000)
            librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f30951d4000)
            libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3094e36000)
            libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3094c32000)
            libelf.so.1 => /usr/lib/x86_64-linux-gnu/libelf.so.1 (0x00007f3094a18000)
            libdw.so.1 => /usr/lib/x86_64-linux-gnu/libdw.so.1 (0x00007f30947cc000)
            libunwind-x86_64.so.8 => /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8 (0x00007f30945ad000)
            libunwind.so.8 => /usr/lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f3094392000)
            liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f309416c000)
            libunwind-aarch64.so.8 => not found
            libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x00007f3093c8a000)
            libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0x00007f309386b000)
            libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f309364e000)
            libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f3093443000)
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3093052000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f3096097000)
            libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f3092e42000)
            libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f3092c3f000)
    
    Fixes: 5c4d7c82c0dceccf ("perf unwind: Do not put libunwind-{x86,aarch64} in FEATURE_TESTS_BASIC")
    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Zhang Jinhao <zhangjinhao2@huawei.com>
    Link: http://lore.kernel.org/lkml/20210823134340.60955-1-lihuafei1@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82d7271c9eaddcee238d9a184432be57ffaa7530
Author: Arnaldo Carvalho de Melo <acme@kernel.org>
Date:   Fri Aug 20 11:13:36 2021 -0300

    perf config: Fix caching and memory leak in perf_home_perfconfig()
    
    [ Upstream commit 261f491133aecb943ccfdc3b3794e2d775607a87 ]
    
    Acaict, perf_home_perfconfig() is supposed to cache the result of
    home_perfconfig, which returns the default location of perfconfig for
    the user, given the HOME environment variable.
    
    However, the current implementation calls home_perfconfig every time
    perf_home_perfconfig() is called (so no caching is actually performed),
    replacing the previous pointer, thus also causing a memory leak.
    
    This patch adds a check of whether either config or failed is set and,
    in that case, directly returns config without calling home_perfconfig at
    each invocation.
    
    Fixes: f5f03e19ce14fc31 ("perf config: Add perf_home_perfconfig function")
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Link: http://lore.kernel.org/lkml/20210820130817.740536-1-rickyman7@gmail.com
    [ Removed needless double check for the 'failed' variable ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb15078cd848ef6f5fc71f2026ba8b0f0ac7df51
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Aug 16 14:05:33 2021 -0700

    ARC: export clear_user_page() for modules
    
    [ Upstream commit 6b5ff0405e4190f23780362ea324b250bc495683 ]
    
    0day bot reports a build error:
      ERROR: modpost: "clear_user_page" [drivers/media/v4l2-core/videobuf-dma-sg.ko] undefined!
    so export it in arch/arc/ to fix the build error.
    
    In most ARCHes, clear_user_page() is a macro. OTOH, in a few
    ARCHes it is a function and needs to be exported.
    PowerPC exported it in 2004. It looks like nds32 and nios2
    still need to have it exported.
    
    Fixes: 4102b53392d63 ("ARC: [mm] Aliasing VIPT dcache support 2/4")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: linux-snps-arc@lists.infradead.org
    Signed-off-by: Vineet Gupta <vgupta@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6989067d55cd83d1b7c883d87ab775a599a64880
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Aug 21 09:58:45 2021 +0200

    mtd: rawnand: cafe: Fix a resource leak in the error handling path of 'cafe_nand_probe()'
    
    [ Upstream commit 6b430c7595e4eb95fae8fb54adc3c3ce002e75ae ]
    
    A successful 'init_rs_non_canonical()' call should be balanced by a
    corresponding 'free_rs()' call in the error handling path of the probe, as
    already done in the remove function.
    
    Update the error handling path accordingly.
    
    Fixes: 8c61b7a7f4d4 ("[MTD] [NAND] Use rslib for CAFÉ ECC")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/fd313d3fb787458bcc73189e349f481133a2cdc9.1629532640.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08a901da171dc5dd4c54148fe3cc9704a4da4f44
Author: Curtis Klein <curtis.klein@hpe.com>
Date:   Tue Jun 22 23:26:23 2021 -0700

    watchdog: Fix NULL pointer dereference when releasing cdev
    
    [ Upstream commit c7b178dae139f8857edc50888cfbf251cd974a38 ]
    
    watchdog_hrtimer_pretimeout_stop needs the watchdog device to have a
    valid pointer to the watchdog core data to stop the pretimeout hrtimer.
    Therefore it needs to be called before the pointers are cleared in
    watchdog_cdev_unregister.
    
    Fixes: 7b7d2fdc8c3e ("watchdog: Add hrtimer-based pretimeout feature")
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Curtis Klein <curtis.klein@hpe.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/1624429583-5720-1-git-send-email-curtis.klein@hpe.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59aba014840409c891e8ab2811a8e02054fbdded
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Aug 13 18:36:19 2021 +0300

    PCI: Sync __pci_register_driver() stub for CONFIG_PCI=n
    
    [ Upstream commit 817f9916a6e96ae43acdd4e75459ef4f92d96eb1 ]
    
    The CONFIG_PCI=y case got a new parameter long time ago.  Sync the stub as
    well.
    
    [bhelgaas: add parameter names]
    Fixes: 725522b5453d ("PCI: add the sysfs driver name to all modules")
    Link: https://lore.kernel.org/r/20210813153619.89574-1-andriy.shevchenko@linux.intel.com
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 638fb35ca3e4a8dd89e2259ac145b2d6c00082f7
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Aug 11 11:59:55 2021 -0700

    PCI/PTM: Remove error message at boot
    
    [ Upstream commit ff3a52ab9cab01a53b168dc667fe789f56b90aa9 ]
    
    Since 39850ed51062 ("PCI/PTM: Save/restore Precision Time Measurement
    Capability for suspend/resume"), devices that have PTM capability but
    don't enable it see this message on calls to pci_save_state():
    
      no suspend buffer for PTM
    
    Drop the message, it's perfectly fine not to use a capability.
    
    Fixes: 39850ed51062 ("PCI/PTM: Save/restore Precision Time Measurement Capability for suspend/resume")
    Link: https://lore.kernel.org/r/20210811185955.3112534-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: David E. Box <david.e.box@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3c9eff1a853f5de286cff4024f9fc3604ff0ba6
Author: Oliver Upton <oupton@google.com>
Date:   Wed Aug 18 20:21:31 2021 +0000

    KVM: arm64: Handle PSCI resets before userspace touches vCPU state
    
    [ Upstream commit 6826c6849b46aaa91300201213701eb861af4ba0 ]
    
    The CPU_ON PSCI call takes a payload that KVM uses to configure a
    destination vCPU to run. This payload is non-architectural state and not
    exposed through any existing UAPI. Effectively, we have a race between
    CPU_ON and userspace saving/restoring a guest: if the target vCPU isn't
    ran again before the VMM saves its state, the requested PC and context
    ID are lost. When restored, the target vCPU will be runnable and start
    executing at its old PC.
    
    We can avoid this race by making sure the reset payload is serviced
    before userspace can access a vCPU's state.
    
    Fixes: 358b28f09f0a ("arm/arm64: KVM: Allow a VCPU to fully reset itself")
    Signed-off-by: Oliver Upton <oupton@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210818202133.1106786-3-oupton@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd5ad57a4dc7446b4d1925be551c32d9549bc6be
Author: Oliver Upton <oupton@google.com>
Date:   Wed Aug 18 20:21:30 2021 +0000

    KVM: arm64: Fix read-side race on updates to vcpu reset state
    
    [ Upstream commit 6654f9dfcb88fea3b9affc180dc3c04333d0f306 ]
    
    KVM correctly serializes writes to a vCPU's reset state, however since
    we do not take the KVM lock on the read side it is entirely possible to
    read state from two different reset requests.
    
    Cure the race for now by taking the KVM lock when reading the
    reset_state structure.
    
    Fixes: 358b28f09f0a ("arm/arm64: KVM: Allow a VCPU to fully reset itself")
    Signed-off-by: Oliver Upton <oupton@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210818202133.1106786-2-oupton@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7655140eda8610850976695f14304f141aef4996
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Tue Aug 17 19:48:57 2021 +0800

    mtd: mtdconcat: Check _read, _write callbacks existence before assignment
    
    [ Upstream commit a89d69a44e282be95ae76125dddc79515541efeb ]
    
    Since 2431c4f5b46c3 ("mtd: Implement mtd_{read,write}() as wrappers
    around mtd_{read,write}_oob()") don't allow _write|_read and
    _write_oob|_read_oob existing at the same time, we should check the
    existence of callbacks "_read and _write" from subdev's master device
    (We can trust master device since it has been registered) before
    assigning, otherwise following warning occurs while making
    concatenated device:
    
      WARNING: CPU: 2 PID: 6728 at drivers/mtd/mtdcore.c:595
      add_mtd_device+0x7f/0x7b0
    
    Fixes: 2431c4f5b46c3 ("mtd: Implement mtd_{read,write}() around ...")
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20210817114857.2784825-3-chengzhihao1@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5cd5c566aaf36c829c3e9656c86a752c398ed8c5
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Tue Aug 17 19:48:56 2021 +0800

    mtd: mtdconcat: Judge callback existence based on the master
    
    [ Upstream commit f9e109a209a8e01e16f37e1252304f1eb3908be4 ]
    
    Since commit 46b5889cc2c5("mtd: implement proper partition handling")
    applied, mtd partition device won't hold some callback functions, such
    as _block_isbad, _block_markbad, etc. Besides, function mtd_block_isbad()
    will get mtd device's master mtd device, then invokes master mtd device's
    callback function. So, following process may result mtd_block_isbad()
    always return 0, even though mtd device has bad blocks:
    
    1. Split a mtd device into 3 partitions: PA, PB, PC
    [ Each mtd partition device won't has callback function _block_isbad(). ]
    2. Concatenate PA and PB as a new mtd device PN
    [ mtd_concat_create() finds out each subdev has no callback function
    _block_isbad(), so PN won't be assigned callback function
    concat_block_isbad(). ]
    Then, mtd_block_isbad() checks "!master->_block_isbad" is true, will
    always return 0.
    
    Reproducer:
    // reproduce.c
    static int __init init_diy_module(void)
    {
            struct mtd_info *mtd[2];
            struct mtd_info *mtd_combine = NULL;
    
            mtd[0] = get_mtd_device_nm("NAND simulator partition 0");
            if (!mtd[0]) {
                    pr_err("cannot find mtd1\n");
                    return -EINVAL;
            }
            mtd[1] = get_mtd_device_nm("NAND simulator partition 1");
            if (!mtd[1]) {
                    pr_err("cannot find mtd2\n");
                    return -EINVAL;
            }
    
            put_mtd_device(mtd[0]);
            put_mtd_device(mtd[1]);
    
            mtd_combine = mtd_concat_create(mtd, 2, "Combine mtd");
            if (mtd_combine == NULL) {
                    pr_err("combine failed\n");
                    return -EINVAL;
            }
    
            mtd_device_register(mtd_combine, NULL, 0);
            pr_info("Combine success\n");
    
            return 0;
    }
    
    1. ID="0x20,0xac,0x00,0x15"
    2. modprobe nandsim id_bytes=$ID parts=50,100 badblocks=100
    3. insmod reproduce.ko
    4. flash_erase /dev/mtd3 0 0
      libmtd: error!: MEMERASE64 ioctl failed for eraseblock 100 (mtd3)
      error 5 (Input/output error)
      // Should be "flash_erase: Skipping bad block at 00c80000"
    
    Fixes: 46b5889cc2c54bac ("mtd: implement proper partition handling")
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20210817114857.2784825-2-chengzhihao1@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a452dc09a5a63f87af8c6915bd257b5e57e4706e
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Aug 10 11:07:14 2021 +0900

    tracing/boot: Fix a hist trigger dependency for boot time tracing
    
    [ Upstream commit 6fe7c745f2acb73e4cc961d7f91125eef5a8861f ]
    
    Fixes a build error when CONFIG_HIST_TRIGGERS=n with boot-time
    tracing. Since the trigger_process_regex() is defined only
    when CONFIG_HIST_TRIGGERS=y, if it is disabled, the 'actions'
    event option also must be disabled.
    
    Link: https://lkml.kernel.org/r/162856123376.203126.582144262622247352.stgit@devnote2
    
    Fixes: 81a59555ff15 ("tracing/boot: Add per-event settings")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3be43a9ac4a98320c94a971bbef0efa70065459f
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Fri Jul 16 12:00:48 2021 +0200

    mfd: tqmx86: Clear GPIO IRQ resource when no IRQ is set
    
    [ Upstream commit a946506c48f3bd09363c9d2b0a178e55733bcbb6 ]
    
    The driver was registering IRQ 0 when no IRQ was set. This leads to
    warnings with newer kernels.
    
    Clear the resource flags, so no resource is registered at all in this
    case.
    
    Fixes: 2f17dd34ffed ("mfd: tqmx86: IO controller with I2C, Wachdog and GPIO")
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1104ea6b8e2a24956116562965e68d2a540e3e37
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 12 10:00:04 2021 +0300

    PCI: Fix pci_dev_str_match_path() alloc while atomic bug
    
    [ Upstream commit 7eb6ea4148579b85540a41d57bcec315b8af8ff8 ]
    
    pci_dev_str_match_path() is often called with a spinlock held so the
    allocation has to be atomic.  The call tree is:
    
      pci_specified_resource_alignment() <-- takes spin_lock();
        pci_dev_str_match()
          pci_dev_str_match_path()
    
    Fixes: 45db33709ccc ("PCI: Allow specifying devices using a base bus and path of devfns")
    Link: https://lore.kernel.org/r/20210812070004.GC31863@kili
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 619b6ad1b13595aef3281f0ffe1fad3c5e48aac5
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Wed Aug 11 16:41:15 2021 +0530

    KVM: arm64: Restrict IPA size to maximum 48 bits on 4K and 16K page size
    
    [ Upstream commit 5e5df9571c319fb107d7a523cc96fcc99961ee70 ]
    
    Even though ID_AA64MMFR0.PARANGE reports 52 bit PA size support, it cannot
    be enabled as guest IPA size on 4K or 16K page size configurations. Hence
    kvm_ipa_limit must be restricted to 48 bits. This change achieves required
    IPA capping.
    
    Before the commit c9b69a0cf0b4 ("KVM: arm64: Don't constrain maximum IPA
    size based on host configuration"), the problem here would have been just
    latent via PHYS_MASK_SHIFT (which earlier in turn capped kvm_ipa_limit),
    which remains capped at 48 bits on 4K and 16K configs.
    
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Alexandru Elisei <alexandru.elisei@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: kvmarm@lists.cs.columbia.edu
    Cc: linux-kernel@vger.kernel.org
    Fixes: c9b69a0cf0b4 ("KVM: arm64: Don't constrain maximum IPA size based on host configuration")
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/1628680275-16578-1-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39880692657c4b5c1ddbecd5be2ded458935584b
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Tue Aug 10 15:59:20 2021 +0300

    netfilter: nft_ct: protect nft_ct_pcpu_template_refcnt with mutex
    
    [ Upstream commit e3245a7b7b34bd2e97f744fd79463add6e9d41f4 ]
    
    Syzbot hit use-after-free in nf_tables_dump_sets. The problem was in
    missing lock protection for nft_ct_pcpu_template_refcnt.
    
    Before commit f102d66b335a ("netfilter: nf_tables: use dedicated
    mutex to guard transactions") all transactions were serialized by global
    mutex, but then global mutex was changed to local per netnamespace
    commit_mutex.
    
    This change causes use-after-free bug, when 2 netnamespaces concurently
    changing nft_ct_pcpu_template_refcnt without proper locking. Fix it by
    adding nft_ct_pcpu_mutex and protect all nft_ct_pcpu_template_refcnt
    changes with it.
    
    Fixes: f102d66b335a ("netfilter: nf_tables: use dedicated mutex to guard transactions")
    Reported-and-tested-by: syzbot+649e339fa6658ee623d3@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.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 408c5b7081b1264d07ade0a70ac0c19b56ac7a1c
Author: Rob Herring <robh@kernel.org>
Date:   Tue Aug 3 15:56:56 2021 -0600

    PCI: iproc: Fix BCMA probe resource handling
    
    [ Upstream commit aeaea8969b402e0081210cc9144404d13996efed ]
    
    In commit 7ef1c871da16 ("PCI: iproc: Use
    pci_parse_request_of_pci_ranges()"), calling
    devm_request_pci_bus_resources() was dropped from the common iProc
    probe code, but is still needed for BCMA bus probing. Without it, there
    will be lots of warnings like this:
    
    pci 0000:00:00.0: BAR 8: no space for [mem size 0x00c00000]
    pci 0000:00:00.0: BAR 8: failed to assign [mem size 0x00c00000]
    
    Add back calling devm_request_pci_bus_resources() and adding the
    resources to pci_host_bridge.windows for BCMA bus probe.
    
    Link: https://lore.kernel.org/r/20210803215656.3803204-2-robh@kernel.org
    Fixes: 7ef1c871da16 ("PCI: iproc: Use pci_parse_request_of_pci_ranges()")
    Reported-by: Rafał Miłecki <zajec5@gmail.com>
    Tested-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Srinath Mannam <srinath.mannam@broadcom.com>
    Cc: Roman Bacik <roman.bacik@broadcom.com>
    Cc: Bharat Gooty <bharat.gooty@broadcom.com>
    Cc: Abhishek Shah <abhishek.shah@broadcom.com>
    Cc: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
    Cc: Ray Jui <ray.jui@broadcom.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: BCM Kernel Feedback <bcm-kernel-feedback-list@broadcom.com>
    Cc: Scott Branden <sbranden@broadcom.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: "Krzysztof Wilczyński" <kw@linux.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43f59fff1fdf41e5e06b7493ff0221e55041ab07
Author: Rob Herring <robh@kernel.org>
Date:   Tue Aug 3 15:56:55 2021 -0600

    PCI: of: Don't fail devm_pci_alloc_host_bridge() on missing 'ranges'
    
    [ Upstream commit d277f6e88c88729b1d57d40bbfb00d0bfc961972 ]
    
    Commit 669cbc708122 ("PCI: Move DT resource setup into
    devm_pci_alloc_host_bridge()") made devm_pci_alloc_host_bridge() fail on
    any DT resource parsing errors, but Broadcom iProc uses
    devm_pci_alloc_host_bridge() on BCMA bus devices that don't have DT
    resources. In particular, there is no 'ranges' property. Fix iProc by
    making 'ranges' optional.
    
    If 'ranges' is required by a platform, there's going to be more errors
    latter on if it is missing.
    
    Link: https://lore.kernel.org/r/20210803215656.3803204-1-robh@kernel.org
    Fixes: 669cbc708122 ("PCI: Move DT resource setup into devm_pci_alloc_host_bridge()")
    Reported-by: Rafał Miłecki <zajec5@gmail.com>
    Tested-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Srinath Mannam <srinath.mannam@broadcom.com>
    Cc: Roman Bacik <roman.bacik@broadcom.com>
    Cc: Bharat Gooty <bharat.gooty@broadcom.com>
    Cc: Abhishek Shah <abhishek.shah@broadcom.com>
    Cc: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
    Cc: Ray Jui <ray.jui@broadcom.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: BCM Kernel Feedback <bcm-kernel-feedback-list@broadcom.com>
    Cc: Scott Branden <sbranden@broadcom.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b4ae6f96d7dbd47602b91c3841aba89b14918b90
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Jun 29 15:20:45 2021 +0200

    PCI: controller: PCI_IXP4XX should depend on ARCH_IXP4XX
    
    [ Upstream commit 9f1168cf263aab0474300f7118107f8ef73e7423 ]
    
    The Intel IXP4xx PCI controller is only present on Intel IXP4xx
    XScale-based network processor SoCs.
    
    Add a dependency on ARCH_IXP4XX, to prevent asking the user about this
    driver when configuring a kernel without support for the XScale
    processor family.
    
    Link: https://lore.kernel.org/r/6a88e55fe58fc280f4ff1ca83c154e4895b6dcbf.1624972789.git.geert+renesas@glider.be
    Fixes: f7821b4934584824 ("PCI: ixp4xx: Add a new driver for IXP4xx")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    [lorenzo.pieralisi@arm.com: commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86bfda3f6cb574261401b967948f2a005babe5ef
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Thu Jul 15 13:36:36 2021 +0200

    backlight: ktd253: Stabilize backlight
    
    [ Upstream commit daa37361518bf2d1f591bbdaa7c68b2a43d7af48 ]
    
    Remove interrupt disablement during backlight setting. It is
    way to dangerous and makes platforms instable by having it
    miss vblank IRQs leading to the graphics derailing.
    
    The code is using ndelay() which is not available on
    platforms such as ARM and will result in 32 * udelay(1)
    which is substantial.
    
    Add some code to detect if an interrupt occurs during the
    tight loop and in that case just redo it from the top.
    
    Fixes: 5317f37e48b9 ("backlight: Add Kinetic KTD253 backlight driver")
    Cc: Stephan Gerhold <stephan@gerhold.net>
    Reported-by: newbyte@disroot.org
    Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31c16809d0bcfdc67b68c97908d72022e5c6fb40
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Jun 29 19:12:39 2021 +0200

    mfd: axp20x: Update AXP288 volatile ranges
    
    [ Upstream commit f949a9ebce7a18005266b859a17f10c891bb13d7 ]
    
    On Cherry Trail devices with an AXP288 PMIC the external SD-card slot
    used the AXP's DLDO2 as card-voltage and either DLDO3 or GPIO1LDO
    (GPIO1 pin in low noise LDO mode) as signal-voltage.
    
    These regulators are turned on/off and in case of the signal-voltage
    also have their output-voltage changed by the _PS0 and _PS3 power-
    management ACPI methods on the MMC-controllers ACPI fwnode as well as
    by the _DSM ACPI method for changing the signal voltage.
    
    The AML code implementing these methods is directly accessing the
    PMIC through ACPI I2C OpRegion accesses, instead of using the special
    PMIC OpRegion handled by drivers/acpi/pmic/intel_pmic_xpower.c .
    
    This means that the contents of the involved PMIC registers can change
    without the change being made through the regmap interface, so regmap
    should not cache the contents of these registers.
    
    Mark the regulator power on/off, the regulator voltage control and the
    GPIO1 control registers as volatile, to avoid regmap caching them.
    
    Specifically this fixes an issue on some models where the i915 driver
    toggles another LDO using the same on/off register on/off through
    MIPI sequences (through intel_soc_pmic_exec_mipi_pmic_seq_element())
    which then writes back a cached on/off register-value where the
    card-voltage is off causing the external sdcard slot to stop working
    when the screen goes blank, or comes back on again.
    
    The regulator register-range now marked volatile also includes the
    buck regulator control registers. This is done on purpose these are
    normally not touched by the AML code, but they are updated directly
    by the SoC's PUNIT which means that they may also change without going
    through regmap.
    
    Note the AXP288 PMIC is only used on Bay- and Cherry-Trail platforms,
    so even though this is an ACPI specific problem there is no need to
    make the new volatile ranges conditional since these platforms always
    use ACPI.
    
    Fixes: dc91c3b6fe66 ("mfd: axp20x: Mark AXP20X_VBUS_IPSOUT_MGMT as volatile")
    Fixes: cd53216625a0 ("mfd: axp20x: Fix axp288 volatile ranges")
    Reported-and-tested-by: Clamshell <clamfly@163.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb3eeb31738507165b26f2ddbb8792750fd1e03e
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Tue Sep 7 18:56:46 2021 +0800

    net: phylink: add suspend/resume support
    
    [ Upstream commit f97493657c6372eeefe70faadd214bf31488c44e ]
    
    Joakim Zhang reports that Wake-on-Lan with the stmmac ethernet driver broke
    when moving the incorrect handling of mac link state out of mac_config().
    This reason this breaks is because the stmmac's WoL is handled by the MAC
    rather than the PHY, and phylink doesn't cater for that scenario.
    
    This patch adds the necessary phylink code to handle suspend/resume events
    according to whether the MAC still needs a valid link or not. This is the
    barest minimum for this support.
    
    Reported-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Tested-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54f62219145cb01e87b685449eeba6b04b584176
Author: zhaoxiao <long870912@gmail.com>
Date:   Mon Sep 6 15:21:07 2021 +0800

    stmmac: dwmac-loongson:Fix missing return value
    
    [ Upstream commit 5289de5929d1758a95477a4d160195397ccffa7b ]
    
    Add the return value when phy_mode < 0.
    
    Signed-off-by: zhaoxiao <long870912@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a308deafe4e38e1e27f2838a3faa10fe4edc7d0a
Author: Yang Li <yang.lee@linux.alibaba.com>
Date:   Mon Jun 7 16:40:36 2021 +0800

    NTB: perf: Fix an error code in perf_setup_inbuf()
    
    [ Upstream commit 0097ae5f7af5684f961a5f803ff7ad3e6f933668 ]
    
    When the function IS_ALIGNED() returns false, the value of ret is 0.
    So, we set ret to -EINVAL to indicate this error.
    
    Clean up smatch warning:
    drivers/ntb/test/ntb_perf.c:602 perf_setup_inbuf() warn: missing error
    code 'ret'.
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
    Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c787064f0a894d73f1e82e4badd06c503d2493a
Author: Yang Li <yang.lee@linux.alibaba.com>
Date:   Mon Jun 7 13:56:20 2021 +0800

    NTB: Fix an error code in ntb_msit_probe()
    
    [ Upstream commit 319f83ac98d7afaabab84ce5281a819a358b9895 ]
    
    When the value of nm->isr_ctx is false, the value of ret is 0.
    So, we set ret to -ENOMEM to indicate this error.
    
    Clean up smatch warning:
    drivers/ntb/test/ntb_msi_test.c:373 ntb_msit_probe() warn: missing
    error code 'ret'.
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
    Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23edad31b8276b90c7a70113a787da57221a7256
Author: Yang Li <yang.lee@linux.alibaba.com>
Date:   Fri Sep 3 14:42:33 2021 +0800

    ethtool: Fix an error code in cxgb2.c
    
    [ Upstream commit 7db8263a12155c7ae4ad97e850f1e499c73765fc ]
    
    When adapter->registered_device_map is NULL, the value of err is
    uncertain, we set err to -EINVAL to avoid ambiguity.
    
    Clean up smatch warning:
    drivers/net/ethernet/chelsio/cxgb/cxgb2.c:1114 init_one() warn: missing
    error code 'err'
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0fc65686c1dec411ff74bed1d6c820c88c2bd9c1
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Thu Sep 2 09:07:35 2021 +0900

    loop: reduce the loop_ctl_mutex scope
    
    [ Upstream commit 1c500ad706383f1a6609e63d0b5d1723fd84dab9 ]
    
    syzbot is reporting circular locking problem at __loop_clr_fd() [1], for
    commit a160c6159d4a0cf8 ("block: add an optional probe callback to
    major_names") is calling the module's probe function with major_names_lock
    held.
    
    Fortunately, since commit 990e78116d38059c ("block: loop: fix deadlock
    between open and remove") stopped holding loop_ctl_mutex in lo_open(),
    current role of loop_ctl_mutex is to serialize access to loop_index_idr
    and loop_add()/loop_remove(); in other words, management of id for IDR.
    To avoid holding loop_ctl_mutex during whole add/remove operation, use
    a bool flag to indicate whether the loop device is ready for use.
    
    loop_unregister_transfer() which is called from cleanup_cryptoloop()
    currently has possibility of use-after-free problem due to lack of
    serialization between kfree() from loop_remove() from loop_control_remove()
    and mutex_lock() from unregister_transfer_cb(). But since lo->lo_encryption
    should be already NULL when this function is called due to module unload,
    and commit 222013f9ac30b9ce ("cryptoloop: add a deprecation warning")
    indicates that we will remove this function shortly, this patch updates
    this function to emit warning instead of checking lo->lo_encryption.
    
    Holding loop_ctl_mutex in loop_exit() is pointless, for all users must
    close /dev/loop-control and /dev/loop$num (in order to drop module's
    refcount to 0) before loop_exit() starts, and nobody can open
    /dev/loop-control or /dev/loop$num afterwards.
    
    Link: https://syzkaller.appspot.com/bug?id=7bb10e8b62f83e4d445cdf4c13d69e407e629558 [1]
    Reported-by: syzbot <syzbot+f61766d5763f9e7a118f@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/adb1e792-fc0e-ee81-7ea0-0906fc36419d@i-love.sakura.ne.jp
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1438181dcee376ab83e524d4853589a5bbd92d4
Author: Vishal Aslot <os.vaslot@gmail.com>
Date:   Wed Aug 18 11:57:51 2021 -0500

    PCI: ibmphp: Fix double unmap of io_mem
    
    [ Upstream commit faa2e05ad0dccf37f995bcfbb8d1980d66c02c11 ]
    
    ebda_rsrc_controller() calls iounmap(io_mem) on the error path. Its caller,
    ibmphp_access_ebda(), also calls iounmap(io_mem) on good and error paths.
    
    Remove the iounmap(io_mem) invocation from ebda_rsrc_controller().
    
    [bhelgaas: remove item from TODO]
    Link: https://lore.kernel.org/r/20210818165751.591185-1-os.vaslot@gmail.com
    Signed-off-by: Vishal Aslot <os.vaslot@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88013a0c5d9971a234afa783f2dee11c3e8675b2
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Mon Aug 2 16:13:52 2021 +0200

    block, bfq: honor already-setup queue merges
    
    [ Upstream commit 2d52c58b9c9bdae0ca3df6a1eab5745ab3f7d80b ]
    
    The function bfq_setup_merge prepares the merging between two
    bfq_queues, say bfqq and new_bfqq. To this goal, it assigns
    bfqq->new_bfqq = new_bfqq. Then, each time some I/O for bfqq arrives,
    the process that generated that I/O is disassociated from bfqq and
    associated with new_bfqq (merging is actually a redirection). In this
    respect, bfq_setup_merge increases new_bfqq->ref in advance, adding
    the number of processes that are expected to be associated with
    new_bfqq.
    
    Unfortunately, the stable-merging mechanism interferes with this
    setup. After bfqq->new_bfqq has been set by bfq_setup_merge, and
    before all the expected processes have been associated with
    bfqq->new_bfqq, bfqq may happen to be stably merged with a different
    queue than the current bfqq->new_bfqq. In this case, bfqq->new_bfqq
    gets changed. So, some of the processes that have been already
    accounted for in the ref counter of the previous new_bfqq will not be
    associated with that queue.  This creates an unbalance, because those
    references will never be decremented.
    
    This commit fixes this issue by reestablishing the previous, natural
    behaviour: once bfqq->new_bfqq has been set, it will not be changed
    until all expected redirections have occurred.
    
    Signed-off-by: Davide Zini <davidezini2@gmail.com>
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Link: https://lore.kernel.org/r/20210802141352.74353-2-paolo.valente@linaro.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 488e251c69871b1328731a68d840b14f42c495bb
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Sep 2 12:51:22 2021 +0200

    net: usb: cdc_mbim: avoid altsetting toggling for Telit LN920
    
    [ Upstream commit aabbdc67f3485b5db27ab4eba01e5fbf1ffea62c ]
    
    Add quirk CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE for Telit LN920
    0x1061 composition in order to avoid bind error.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2bbf4c40bfb2c303c60e2887326f8d258bbe0719
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Thu Sep 2 14:36:17 2021 +0900

    flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common()
    
    [ Upstream commit b9edbfe1adecfc48fd11061dce68afb03d6adbdc ]
    
    Commit 3df98d79215ace13 ("lsm,selinux: pass flowi_common instead of flowi
    to the LSM hooks") introduced flowi{4,6}_to_flowi_common() functions which
    cause UBSAN warning when building with LLVM 11.0.1 on Ubuntu 21.04.
    
     ================================================================================
     UBSAN: object-size-mismatch in ./include/net/flow.h:197:33
     member access within address ffffc9000109fbd8 with insufficient space
     for an object of type 'struct flowi'
     CPU: 2 PID: 7410 Comm: systemd-resolve Not tainted 5.14.0 #51
     Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 02/27/2020
     Call Trace:
      dump_stack_lvl+0x103/0x171
      ubsan_type_mismatch_common+0x1de/0x390
      __ubsan_handle_type_mismatch_v1+0x41/0x50
      udp_sendmsg+0xda2/0x1300
      ? ip_skb_dst_mtu+0x1f0/0x1f0
      ? sock_rps_record_flow+0xe/0x200
      ? inet_send_prepare+0x2d/0x90
      sock_sendmsg+0x49/0x80
      ____sys_sendmsg+0x269/0x370
      __sys_sendmsg+0x15e/0x1d0
      ? syscall_enter_from_user_mode+0xf0/0x1b0
      do_syscall_64+0x3d/0xb0
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f7081a50497
     Code: 0c 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
     RSP: 002b:00007ffc153870f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 000000000000000c RCX: 00007f7081a50497
     RDX: 0000000000000000 RSI: 00007ffc15387140 RDI: 000000000000000c
     RBP: 00007ffc15387140 R08: 0000563f29a5e4fc R09: 000000000000cd28
     R10: 0000563f29a68a30 R11: 0000000000000246 R12: 000000000000000c
     R13: 0000000000000001 R14: 0000563f29a68a30 R15: 0000563f29a5e50c
     ================================================================================
    
    I don't think we need to call flowi{4,6}_to_flowi() from these functions
    because the first member of "struct flowi4" and "struct flowi6" is
    
      struct flowi_common __fl_common;
    
    while the first member of "struct flowi" is
    
      union {
        struct flowi_common __fl_common;
        struct flowi4       ip4;
        struct flowi6       ip6;
        struct flowidn      dn;
      } u;
    
    which should point to the same address without access to "struct flowi".
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a2ada738da62ceb6ee97ae9e99edab20d73edad
Author: Ryoga Saito <contact@proelbtn.com>
Date:   Thu Sep 2 05:20:14 2021 +0000

    Set fc_nlinfo in nh_create_ipv4, nh_create_ipv6
    
    [ Upstream commit 9aca491e0dccf8a9d84a5b478e5eee3c6ea7803b ]
    
    This patch fixes kernel NULL pointer dereference when creating nexthop
    which is bound with SRv6 decapsulation. In the creation of nexthop,
    __seg6_end_dt_vrf_build is called. __seg6_end_dt_vrf_build expects
    fc_lninfo in fib6_config is set correctly, but it isn't set in
    nh_create_ipv6, which causes kernel crash.
    
    Here is steps to reproduce kernel crash:
    
    1. modprobe vrf
    2. ip -6 nexthop add encap seg6local action End.DT4 vrftable 1 dev eth0
    
    We got the following message:
    
    [  901.370336] BUG: kernel NULL pointer dereference, address: 0000000000000ba0
    [  901.371658] #PF: supervisor read access in kernel mode
    [  901.372672] #PF: error_code(0x0000) - not-present page
    [  901.373672] PGD 0 P4D 0
    [  901.374248] Oops: 0000 [#1] SMP PTI
    [  901.374944] CPU: 0 PID: 8593 Comm: ip Not tainted 5.14-051400-generic #202108310811-Ubuntu
    [  901.376404] Hardware name: Red Hat KVM, BIOS 1.11.1-4.module_el8.2.0+320+13f867d7 04/01/2014
    [  901.377907] RIP: 0010:vrf_ifindex_lookup_by_table_id+0x19/0x90 [vrf]
    [  901.379182] Code: c1 e9 72 ff ff ff e8 96 49 01 c2 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55 41 89 f5 41 54 53 8b 05 47 4c 00 00 <48> 8b 97 a0 0b 00 00 48 8b 1c c2 e8 57 27 53 c1 4c 8d a3 88 00 00
    [  901.382652] RSP: 0018:ffffbf2d02043590 EFLAGS: 00010282
    [  901.383746] RAX: 000000000000000b RBX: ffff990808255e70 RCX: ffffbf2d02043aa8
    [  901.385436] RDX: 0000000000000001 RSI: 0000000000000001 RDI: 0000000000000000
    [  901.386924] RBP: ffffbf2d020435b0 R08: 00000000000000c0 R09: ffff990808255e40
    [  901.388537] R10: ffffffff83b08c90 R11: 0000000000000009 R12: 0000000000000000
    [  901.389937] R13: 0000000000000001 R14: 0000000000000000 R15: 000000000000000b
    [  901.391226] FS:  00007fe49381f740(0000) GS:ffff99087dc00000(0000) knlGS:0000000000000000
    [  901.392737] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  901.393803] CR2: 0000000000000ba0 CR3: 000000000e3e8003 CR4: 0000000000770ef0
    [  901.395122] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  901.396496] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  901.397833] PKRU: 55555554
    [  901.398578] Call Trace:
    [  901.399144]  l3mdev_ifindex_lookup_by_table_id+0x3b/0x70
    [  901.400179]  __seg6_end_dt_vrf_build+0x34/0xd0
    [  901.401067]  seg6_end_dt4_build+0x16/0x20
    [  901.401904]  seg6_local_build_state+0x271/0x430
    [  901.402797]  lwtunnel_build_state+0x81/0x130
    [  901.403645]  fib_nh_common_init+0x82/0x100
    [  901.404465]  ? sock_def_readable+0x4b/0x80
    [  901.405285]  fib6_nh_init+0x115/0x7c0
    [  901.406033]  nh_create_ipv6.isra.0+0xe1/0x140
    [  901.406932]  rtm_new_nexthop+0x3b7/0xeb0
    [  901.407828]  rtnetlink_rcv_msg+0x152/0x3a0
    [  901.408663]  ? rtnl_calcit.isra.0+0x130/0x130
    [  901.409535]  netlink_rcv_skb+0x55/0x100
    [  901.410319]  rtnetlink_rcv+0x15/0x20
    [  901.411026]  netlink_unicast+0x1a8/0x250
    [  901.411813]  netlink_sendmsg+0x238/0x470
    [  901.412602]  ? _copy_from_user+0x2b/0x60
    [  901.413394]  sock_sendmsg+0x65/0x70
    [  901.414112]  ____sys_sendmsg+0x218/0x290
    [  901.414929]  ? copy_msghdr_from_user+0x5c/0x90
    [  901.415814]  ___sys_sendmsg+0x81/0xc0
    [  901.416559]  ? fsnotify_destroy_marks+0x27/0xf0
    [  901.417447]  ? call_rcu+0xa4/0x230
    [  901.418153]  ? kmem_cache_free+0x23f/0x410
    [  901.418972]  ? dentry_free+0x37/0x70
    [  901.419705]  ? mntput_no_expire+0x4c/0x260
    [  901.420574]  __sys_sendmsg+0x62/0xb0
    [  901.421297]  __x64_sys_sendmsg+0x1f/0x30
    [  901.422057]  do_syscall_64+0x5c/0xc0
    [  901.422756]  ? syscall_exit_to_user_mode+0x27/0x50
    [  901.423675]  ? __x64_sys_close+0x12/0x40
    [  901.424462]  ? do_syscall_64+0x69/0xc0
    [  901.425219]  ? irqentry_exit_to_user_mode+0x9/0x20
    [  901.426149]  ? irqentry_exit+0x19/0x30
    [  901.426901]  ? exc_page_fault+0x89/0x160
    [  901.427709]  ? asm_exc_page_fault+0x8/0x30
    [  901.428536]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [  901.429514] RIP: 0033:0x7fe493945747
    [  901.430248] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
    [  901.433549] RSP: 002b:00007ffe9932cf68 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    [  901.434981] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fe493945747
    [  901.436303] RDX: 0000000000000000 RSI: 00007ffe9932cfe0 RDI: 0000000000000003
    [  901.437607] RBP: 00000000613053f7 R08: 0000000000000001 R09: 00007ffe9932d07c
    [  901.438990] R10: 000055f4a903a010 R11: 0000000000000246 R12: 0000000000000001
    [  901.440340] R13: 0000000000000001 R14: 000055f4a802b163 R15: 000055f4a8042020
    [  901.441630] Modules linked in: vrf nls_utf8 isofs nls_iso8859_1 dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua intel_rapl_msr intel_rapl_common isst_if_mbox_msr isst_if_common nfit rapl input_leds joydev serio_raw qemu_fw_cfg mac_hid sch_fq_codel drm virtio_rng ip_tables x_tables autofs4 btrfs blake2b_generic zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd virtio_net net_failover cryptd psmouse virtio_blk failover i2c_piix4 pata_acpi floppy
    [  901.450808] CR2: 0000000000000ba0
    [  901.451514] ---[ end trace c27b934b99ade304 ]---
    [  901.452403] RIP: 0010:vrf_ifindex_lookup_by_table_id+0x19/0x90 [vrf]
    [  901.453626] Code: c1 e9 72 ff ff ff e8 96 49 01 c2 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55 41 89 f5 41 54 53 8b 05 47 4c 00 00 <48> 8b 97 a0 0b 00 00 48 8b 1c c2 e8 57 27 53 c1 4c 8d a3 88 00 00
    [  901.456910] RSP: 0018:ffffbf2d02043590 EFLAGS: 00010282
    [  901.457912] RAX: 000000000000000b RBX: ffff990808255e70 RCX: ffffbf2d02043aa8
    [  901.459238] RDX: 0000000000000001 RSI: 0000000000000001 RDI: 0000000000000000
    [  901.460552] RBP: ffffbf2d020435b0 R08: 00000000000000c0 R09: ffff990808255e40
    [  901.461882] R10: ffffffff83b08c90 R11: 0000000000000009 R12: 0000000000000000
    [  901.463208] R13: 0000000000000001 R14: 0000000000000000 R15: 000000000000000b
    [  901.464529] FS:  00007fe49381f740(0000) GS:ffff99087dc00000(0000) knlGS:0000000000000000
    [  901.466058] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  901.467189] CR2: 0000000000000ba0 CR3: 000000000e3e8003 CR4: 0000000000770ef0
    [  901.468515] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  901.469858] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  901.471139] PKRU: 55555554
    
    Signed-off-by: Ryoga Saito <contact@proelbtn.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1680812a0f7d575794aaaf74bda5b9f1b6df4941
Author: Smadar Fuks <smadarf@marvell.com>
Date:   Wed Sep 1 11:08:59 2021 +0530

    octeontx2-af: Add additional register check to rvu_poll_reg()
    
    [ Upstream commit 21274aa1781941884599a97ab59be7f8f36af98c ]
    
    Check one more time before exiting the API with an error.
    Fix API to poll at least twice, in case there are other high priority
    tasks and this API doesn't get CPU cycles for multiple jiffies update.
    
    In addition, increase timeout from usecs_to_jiffies(10000) to
    usecs_to_jiffies(20000), to prevent the case that for CONFIG_100HZ
    timeout will be a single jiffies.
    A single jiffies results actual timeout that can be any time between
    1usec and 10msec. To solve this, a value of usecs_to_jiffies(20000)
    ensures that timeout is 2 jiffies.
    
    Signed-off-by: Smadar Fuks <smadarf@marvell.com>
    Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed0f3b99c5a1444f65db1c62fea5c570d6ab6530
Author: Jan Kiszka <jan.kiszka@siemens.com>
Date:   Sun Aug 1 09:56:25 2021 +0200

    watchdog: Start watchdog in watchdog_set_last_hw_keepalive only if appropriate
    
    [ Upstream commit dbe80cf471f940db3063197b7adb1169f89be9ed ]
    
    We must not pet a running watchdog when handle_boot_enabled is off
    because this will kick off automatic triggering before userland is
    running, defeating the purpose of the handle_boot_enabled control.
    Furthermore, don't ping in case watchdog_set_last_hw_keepalive was
    called incorrectly when the hardware watchdog is actually not running.
    
    Fixed: cef9572e9af3 ("watchdog: add support for adjusting last known HW keepalive time")
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/93d56386-6e37-060b-55ce-84de8cde535f@web.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1d4322f6782f5d29c1ef4ec53af16411a12c9b3
Author: George Cherian <george.cherian@marvell.com>
Date:   Tue Aug 10 17:54:25 2021 +0530

    PCI: Add ACS quirks for Cavium multi-function devices
    
    [ Upstream commit 32837d8a8f63eb95dcb9cd005524a27f06478832 ]
    
    Some Cavium endpoints are implemented as multi-function devices without ACS
    capability, but they actually don't support peer-to-peer transactions.
    
    Add ACS quirks to declare DMA isolation for the following devices:
    
      - BGX device found on Octeon-TX (8xxx)
      - CGX device found on Octeon-TX2 (9xxx)
      - RPM device found on Octeon-TX3 (10xxx)
    
    Link: https://lore.kernel.org/r/20210810122425.1115156-1-george.cherian@marvell.com
    Signed-off-by: George Cherian <george.cherian@marvell.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a87aa051d7bd358fa882a3aae55a467c993661ff
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Wed Aug 11 18:03:35 2021 +0530

    PCI: j721e: Add PCIe support for AM64
    
    [ Upstream commit c8a375a8e15ac31293d7fda08008d6da8f5df3db ]
    
    AM64 has the same PCIe IP as in J7200 with certain erratas not
    applicable (quirk_detect_quiet_flag). Add support for "ti,am64-pcie-host"
    compatible and "ti,am64-pcie-ep" compatible that is specific to AM64.
    
    Link: https://lore.kernel.org/r/20210811123336.31357-5-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1def82a638920d7d60b7c7f4e11e748cff814a77
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Wed Aug 11 18:03:34 2021 +0530

    PCI: j721e: Add PCIe support for J7200
    
    [ Upstream commit f1de58802f0fff364cf49f5e47d1be744baa434f ]
    
    J7200 has the same PCIe IP as in J721E with minor changes in the
    wrapper. J7200 allows byte access of bridge configuration space
    registers and the register field for LINK_DOWN interrupt is different.
    J7200 also requires "quirk_detect_quiet_flag" to be set. Configure these
    changes as part of driver data applicable only to J7200.
    
    Link: https://lore.kernel.org/r/20210811123336.31357-4-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06ef79094f160b43a7eebcb101b296cd7a394ac4
Author: Nadeem Athani <nadeem@cadence.com>
Date:   Wed Aug 11 18:03:33 2021 +0530

    PCI: cadence: Add quirk flag to set minimum delay in LTSSM Detect.Quiet state
    
    [ Upstream commit 09c24094b2e3a15ef3fc44f54a191b3db522fb11 ]
    
    PCIe fails to link up if SERDES lanes not used by PCIe are assigned to
    another protocol. For example, link training fails if lanes 2 and 3 are
    assigned to another protocol while lanes 0 and 1 are used for PCIe to
    form a two lane link. This failure is due to an incorrect tie-off on an
    internal status signal indicating electrical idle.
    
    Status signals going from SERDES to PCIe Controller are tied-off when a
    lane is not assigned to PCIe. Signal indicating electrical idle is
    incorrectly tied-off to a state that indicates non-idle. As a result,
    PCIe sees unused lanes to be out of electrical idle and this causes
    LTSSM to exit Detect.Quiet state without waiting for 12ms timeout to
    occur. If a receiver is not detected on the first receiver detection
    attempt in Detect.Active state, LTSSM goes back to Detect.Quiet and
    again moves forward to Detect.Active state without waiting for 12ms as
    required by PCIe base specification. Since wait time in Detect.Quiet is
    skipped, multiple receiver detect operations are performed back-to-back
    without allowing time for capacitance on the transmit lines to
    discharge. This causes subsequent receiver detection to always fail even
    if a receiver gets connected eventually.
    
    Add a quirk flag "quirk_detect_quiet_flag" to program the minimum
    time the LTSSM should wait on entering Detect.Quiet state here.
    This has to be set for J7200 as it has an incorrect tie-off on unused
    lanes.
    
    Link: https://lore.kernel.org/r/20210811123336.31357-3-kishon@ti.com
    Signed-off-by: Nadeem Athani <nadeem@cadence.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cdade20269a4f6094eac7a718fa873a6a40d56fa
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Wed Aug 11 18:03:32 2021 +0530

    PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
    
    [ Upstream commit f4455748b2126a9ba2bcc9cfb2fbcaa08de29bb2 ]
    
    No functional change. As we are intending to add additional 1-bit
    members in struct j721e_pcie_data/struct cdns_pcie_rc, use bitfields
    instead of bool since it takes less space. As discussed in [1],
    the preference is to use bitfileds instead of bool inside structures.
    
    [1] -> https://lore.kernel.org/linux-fsdevel/CA+55aFzKQ6Pj18TB8p4Yr0M4t+S+BsiHH=BJNmn=76-NcjTj-g@mail.gmail.com/
    
    Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://lore.kernel.org/r/20210811123336.31357-2-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53347ed7cc2efee56a6ed4cfec7ea616224b37ca
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Thu Aug 19 19:26:02 2021 +0900

    tracing/probes: Reject events which have the same name of existing one
    
    [ Upstream commit 8e242060c6a4947e8ae7d29794af6a581db08841 ]
    
    Since kprobe_events and uprobe_events only check whether the
    other same-type probe event has the same name or not, if the
    user gives the same name of the existing tracepoint event (or
    the other type of probe events), it silently fails to create
    the tracefs entry (but registered.) as below.
    
    /sys/kernel/tracing # ls events/task/task_rename
    enable   filter   format   hist     id       trigger
    /sys/kernel/tracing # echo p:task/task_rename vfs_read >> kprobe_events
    [  113.048508] Could not create tracefs 'task_rename' directory
    /sys/kernel/tracing # cat kprobe_events
    p:task/task_rename vfs_read
    
    To fix this issue, check whether the existing events have the
    same name or not in trace_probe_register_event_call(). If exists,
    it rejects to register the new event.
    
    Link: https://lkml.kernel.org/r/162936876189.187130.17558311387542061930.stgit@devnote2
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86ddc7397906772f877e9f32defa819b4edc77c0
Author: Will Deacon <will@kernel.org>
Date:   Fri Aug 13 14:03:36 2021 +0100

    KVM: arm64: Make hyp_panic() more robust when protected mode is enabled
    
    [ Upstream commit ccac96977243d7916053550f62e6489760ad0adc ]
    
    When protected mode is enabled, the host is unable to access most parts
    of the EL2 hypervisor image, including 'hyp_physvirt_offset' and the
    contents of the hypervisor's '.rodata.str' section. Unfortunately,
    nvhe_hyp_panic_handler() tries to read from both of these locations when
    handling a BUG() triggered at EL2; the former for converting the ELR to
    a physical address and the latter for displaying the name of the source
    file where the BUG() occurred.
    
    Hack the EL2 panic asm to pass both physical and virtual ELR values to
    the host and utilise the newly introduced CONFIG_NVHE_EL2_DEBUG so that
    we disable stage-2 protection for the host before returning to the EL1
    panic handler. If the debug option is not enabled, display the address
    instead of the source file:line information.
    
    Cc: Andrew Scull <ascull@google.com>
    Cc: Quentin Perret <qperret@google.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210813130336.8139-1-will@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35f2ecc7a6e53716c533640bbfe8ce8769b332dc
Author: Kenneth Lee <liguozhu@hisilicon.com>
Date:   Wed Jul 28 15:15:57 2021 +0800

    riscv: fix the global name pfn_base confliction error
    
    [ Upstream commit fb31f0a499332a053477ed57312b214e42476e6d ]
    
    RISCV uses a global variable pfn_base for page/pfn translation. But this
    is a common name and will be used elsewhere. In those cases, the
    page-pfn macros which refer to this name will be referred to the
    local/input variable instead. (such as in vfio_pin_pages_remote). This
    make everything wrong.
    
    This patch changes the name from pfn_base to riscv_pfn_base to fix
    this problem.
    
    Signed-off-by: Kenneth Lee <liguozhu@hisilicon.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9910fae78de91ec703c92d34663dd0185b28618
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Thu Apr 8 15:24:02 2021 +0800

    PCI: rcar: Fix runtime PM imbalance in rcar_pcie_ep_probe()
    
    [ Upstream commit 1e29cd9983eba1b596bc07f94d81d728007f8a25 ]
    
    pm_runtime_get_sync() will increase the runtime PM counter
    even it returns an error. Thus a pairing decrement is needed
    to prevent refcount leak. Fix this by replacing this API with
    pm_runtime_resume_and_get(), which will not change the runtime
    PM counter on error.
    
    Link: https://lore.kernel.org/r/20210408072402.15069-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24bc88f6d28e94b0bc5cb60470ee8623188906c4
Author: Marc Zyngier <maz@kernel.org>
Date:   Sun Jul 25 19:07:54 2021 +0100

    mfd: Don't use irq_create_mapping() to resolve a mapping
    
    [ Upstream commit 9ff80e2de36d0554e3a6da18a171719fe8663c17 ]
    
    Although irq_create_mapping() is able to deal with duplicate
    mappings, it really isn't supposed to be a substitute for
    irq_find_mapping(), and can result in allocations that take place
    in atomic context if the mapping didn't exist.
    
    Fix the handful of MFD drivers that use irq_create_mapping() in
    interrupt context by using irq_find_mapping() instead.
    
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Lee Jones <lee.jones@linaro.org>
    Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2edfc28e4a806c9712828f21085224e915590ef4
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue May 4 19:17:42 2021 +0200

    PCI: tegra: Fix OF node reference leak
    
    [ Upstream commit eff21f5da308265678e7e59821795e606f3e560f ]
    
    Commit 9e38e690ace3 ("PCI: tegra: Fix OF node reference leak") has fixed
    some node reference leaks in this function but missed some of them.
    
    In fact, having 'port' referenced in the 'rp' structure is not enough to
    prevent the leak, until 'rp' is actually added in the 'pcie->ports' list.
    
    Add the missing 'goto err_node_put' accordingly.
    
    Link: https://lore.kernel.org/r/55b11e9a7fa2987fbc0869d68ae59888954d65e2.1620148539.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Vidya Sagar <vidyas@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 119f11c0a5fd4f1472c0988b726ddf1413485a6e
Author: Om Prakash Singh <omp@nvidia.com>
Date:   Wed Jun 23 15:35:22 2021 +0530

    PCI: tegra194: Fix MSI-X programming
    
    [ Upstream commit 43537cf7e351264a1f05ed42ad402942bfc9140e ]
    
    Lower order MSI-X address is programmed in MSIX_ADDR_MATCH_HIGH_OFF
    DBI register instead of higher order address. This patch fixes this
    programming mistake.
    
    Link: https://lore.kernel.org/r/20210623100525.19944-3-omp@nvidia.com
    Signed-off-by: Om Prakash Singh <omp@nvidia.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Vidya Sagar <vidyas@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2338e1b025844fa584d0059199ac7a78f35c216e
Author: Om Prakash Singh <omp@nvidia.com>
Date:   Wed Jun 23 15:35:21 2021 +0530

    PCI: tegra194: Fix handling BME_CHGED event
    
    [ Upstream commit ceb1412c1c8ca5b28c4252bdb15f2f1f17b4a1b0 ]
    
    In tegra_pcie_ep_hard_irq(), APPL_INTR_STATUS_L0 is stored in val and again
    APPL_INTR_STATUS_L1_0_0 is also stored in val. So when execution reaches
    "if (val & APPL_INTR_STATUS_L0_PCI_CMD_EN_INT)", val is not correct.
    
    Link: https://lore.kernel.org/r/20210623100525.19944-2-omp@nvidia.com
    Signed-off-by: Om Prakash Singh <omp@nvidia.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Vidya Sagar <vidyas@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cba893f7193a89e605350e6a6cc0d2eab3db5558
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Aug 4 13:22:58 2021 +0200

    fuse: fix use after free in fuse_read_interrupt()
    
    [ Upstream commit e1e71c168813564be0f6ea3d6740a059ca42d177 ]
    
    There is a potential race between fuse_read_interrupt() and
    fuse_request_end().
    
    TASK1
      in fuse_read_interrupt(): delete req->intr_entry (while holding
      fiq->lock)
    
    TASK2
      in fuse_request_end(): req->intr_entry is empty -> skip fiq->lock
      wake up TASK3
    
    TASK3
      request is freed
    
    TASK1
      in fuse_read_interrupt(): dereference req->in.h.unique ***BAM***
    
    Fix by always grabbing fiq->lock if the request was ever interrupted
    (FR_INTERRUPTED set) thereby serializing with concurrent
    fuse_read_interrupt() calls.
    
    FR_INTERRUPTED is set before the request is queued on fiq->interrupts.
    Dequeing the request is done with list_del_init() but FR_INTERRUPTED is not
    cleared in this case.
    
    Reported-by: lijiazi <lijiazi@xiaomi.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd95a58ccd962d0708fe9baa365c82c3b8baab9b
Author: Wasim Khan <wasim.khan@nxp.com>
Date:   Thu Jul 29 14:17:47 2021 +0200

    PCI: Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms
    
    [ Upstream commit d08c8b855140e9f5240b3ffd1b8b9d435675e281 ]
    
    Root Ports in NXP LX2xx0 and LX2xx2, where each Root Port is a Root Complex
    with unique segment numbers, do provide isolation features to disable peer
    transactions and validate bus numbers in requests, but do not provide an
    actual PCIe ACS capability.
    
    Add ACS quirks for NXP LX2xx0 A/C/E/N and LX2xx2 A/C/E/N platforms.
    
      LX2xx0A : without security features + CAN-FD
        LX2160A (0x8d81) - 16 cores
        LX2120A (0x8da1) - 12 cores
        LX2080A (0x8d83) -  8 cores
    
      LX2xx0C : security features + CAN-FD
        LX2160C (0x8d80) - 16 cores
        LX2120C (0x8da0) - 12 cores
        LX2080C (0x8d82) -  8 cores
    
      LX2xx0E : security features + CAN
        LX2160E (0x8d90) - 16 cores
        LX2120E (0x8db0) - 12 cores
        LX2080E (0x8d92) -  8 cores
    
      LX2xx0N : without security features + CAN
        LX2160N (0x8d91) - 16 cores
        LX2120N (0x8db1) - 12 cores
        LX2080N (0x8d93) -  8 cores
    
      LX2xx2A : without security features + CAN-FD
        LX2162A (0x8d89) - 16 cores
        LX2122A (0x8da9) - 12 cores
        LX2082A (0x8d8b) -  8 cores
    
      LX2xx2C : security features + CAN-FD
        LX2162C (0x8d88) - 16 cores
        LX2122C (0x8da8) - 12 cores
        LX2082C (0x8d8a) -  8 cores
    
      LX2xx2E : security features + CAN
        LX2162E (0x8d98) - 16 cores
        LX2122E (0x8db8) - 12 cores
        LX2082E (0x8d9a) -  8 cores
    
      LX2xx2N : without security features + CAN
        LX2162N (0x8d99) - 16 cores
        LX2122N (0x8db9) - 12 cores
        LX2082N (0x8d9b) -  8 cores
    
    [bhelgaas: put PCI_VENDOR_ID_NXP definition next to PCI_VENDOR_ID_FREESCALE
    as a clue that they share the same Device ID namespace]
    Link: https://lore.kernel.org/r/20210729121747.1823086-1-wasim.khan@oss.nxp.com
    Link: https://lore.kernel.org/r/20210803180021.3252886-1-wasim.khan@oss.nxp.com
    Signed-off-by: Wasim Khan <wasim.khan@nxp.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bd777c9cece32d1380c03a978f51e64a359323a
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Mon Aug 2 01:33:13 2021 +0200

    mfd: db8500-prcmu: Adjust map to reality
    
    [ Upstream commit ec343111c056ec3847800302f6dbc57281f833fa ]
    
    These are the actual frequencies reported by the PLL, so let's
    report these. The roundoffs are inappropriate, we should round
    to the frequency that the clock will later report.
    
    Drop some whitespace at the same time.
    
    Cc: phone-devel@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28fd51c1322729003f6ff1ae41442d0ece7ad395
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Thu Mar 11 16:22:51 2021 -0800

    remoteproc: qcom: wcnss: Fix race with iris probe
    
    [ Upstream commit 1fcef985c8bdd542c43da0d87bd9d51980c3859b ]
    
    The remoteproc driver is split between the responsibilities of getting
    the SoC-internal ARM core up and running and the external RF (aka
    "Iris") part configured.
    
    In order to satisfy the regulator framework's need of a struct device *
    to look up supplies this was implemented as two different drivers, using
    of_platform_populate() in the remoteproc part to probe the iris part.
    
    Unfortunately it's possible that the iris part probe defers on yet not
    available regulators and an attempt to start the remoteproc will have to
    be rejected, until this has been resolved. But there's no useful
    mechanism of knowing when this would be.
    
    Instead replace the of_platform_populate() and the iris probe with a
    function that rolls its own struct device, with the relevant of_node
    associated that is enough to acquire regulators and clocks specified in
    the DT node and that may propagate the EPROBE_DEFER back to the wcnss
    device's probe.
    
    Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Reported-by: Anibal Limon <anibal.limon@linaro.org>
    Reported-by: Loic Poulain <loic.poulain@linaro.org>
    Tested-by: Anibal Limon <anibal.limon@linaro.org>
    Link: https://lore.kernel.org/r/20210312002251.3273013-1-bjorn.andersson@linaro.org
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65fa28b7695fc6c5f71b3574e1a6c8373f8ca433
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Thu Jun 10 16:39:45 2021 +0200

    dt-bindings: mtd: gpmc: Fix the ECC bytes vs. OOB bytes equation
    
    [ Upstream commit 778cb8e39f6ec252be50fc3850d66f3dcbd5dd5a ]
    
    "PAGESIZE / 512" is the number of ECC chunks.
    "ECC_BYTES" is the number of bytes needed to store a single ECC code.
    "2" is the space reserved by the bad block marker.
    
    "2 + (PAGESIZE / 512) * ECC_BYTES" should of course be lower or equal
    than the total number of OOB bytes, otherwise it won't fit.
    
    Fix the equation by substituting s/>=/<=/.
    
    Suggested-by: Ryan J. Barnett <ryan.barnett@collins.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/linux-mtd/20210610143945.3504781-1-miquel.raynal@bootlin.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d49e2c649480980b7e64afa7e82b28cd12da5d99
Author: David Thompson <davthompson@nvidia.com>
Date:   Wed Sep 15 14:08:48 2021 -0400

    mlxbf_gige: clear valid_polarity upon open
    
    [ Upstream commit ee8a9600b5391f434905c46bec7f77d34505083e ]
    
    The network interface managed by the mlxbf_gige driver can
    get into a problem state where traffic does not flow.
    In this state, the interface will be up and enabled, but
    will stop processing received packets.  This problem state
    will happen if three specific conditions occur:
        1) driver has received more than (N * RxRingSize) packets but
           less than (N+1 * RxRingSize) packets, where N is an odd number
           Note: the command "ethtool -g <interface>" will display the
           current receive ring size, which currently defaults to 128
        2) the driver's interface was disabled via "ifconfig oob_net0 down"
           during the window described in #1.
        3) the driver's interface is re-enabled via "ifconfig oob_net0 up"
    
    This patch ensures that the driver's "valid_polarity" field is
    cleared during the open() method so that it always matches the
    receive polarity used by hardware.  Without this fix, the driver
    needs to be unloaded and reloaded to correct this problem state.
    
    Fixes: f92e1869d74e ("Add Mellanox BlueField Gigabit Ethernet driver")
    Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cacc8c5f8b80304e40b086f21cd05e39b852051
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Sep 14 16:47:26 2021 +0300

    net: dsa: flush switchdev workqueue before tearing down CPU/DSA ports
    
    [ Upstream commit a57d8c217aadac75530b8e7ffb3a3e1b7bfd0330 ]
    
    Sometimes when unbinding the mv88e6xxx driver on Turris MOX, these error
    messages appear:
    
    mv88e6085 d0032004.mdio-mii:12: port 1 failed to delete be:79:b4:9e:9e:96 vid 1 from fdb: -2
    mv88e6085 d0032004.mdio-mii:12: port 1 failed to delete be:79:b4:9e:9e:96 vid 0 from fdb: -2
    mv88e6085 d0032004.mdio-mii:12: port 1 failed to delete d8:58:d7:00:ca:6d vid 100 from fdb: -2
    mv88e6085 d0032004.mdio-mii:12: port 1 failed to delete d8:58:d7:00:ca:6d vid 1 from fdb: -2
    mv88e6085 d0032004.mdio-mii:12: port 1 failed to delete d8:58:d7:00:ca:6d vid 0 from fdb: -2
    
    (and similarly for other ports)
    
    What happens is that DSA has a policy "even if there are bugs, let's at
    least not leak memory" and dsa_port_teardown() clears the dp->fdbs and
    dp->mdbs lists, which are supposed to be empty.
    
    But deleting that cleanup code, the warnings go away.
    
    => the FDB and MDB lists (used for refcounting on shared ports, aka CPU
    and DSA ports) will eventually be empty, but are not empty by the time
    we tear down those ports. Aka we are deleting them too soon.
    
    The addresses that DSA complains about are host-trapped addresses: the
    local addresses of the ports, and the MAC address of the bridge device.
    
    The problem is that offloading those entries happens from a deferred
    work item scheduled by the SWITCHDEV_FDB_DEL_TO_DEVICE handler, and this
    races with the teardown of the CPU and DSA ports where the refcounting
    is kept.
    
    In fact, not only it races, but fundamentally speaking, if we iterate
    through the port list linearly, we might end up tearing down the shared
    ports even before we delete a DSA user port which has a bridge upper.
    
    So as it turns out, we need to first tear down the user ports (and the
    unused ones, for no better place of doing that), then the shared ports
    (the CPU and DSA ports). In between, we need to ensure that all work
    items scheduled by our switchdev handlers (which only run for user
    ports, hence the reason why we tear them down first) have finished.
    
    Fixes: 161ca59d39e9 ("net: dsa: reference count the MDB entries at the cross-chip notifier level")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20210914134726.2305133-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e8418e361775d16da4fc7d031f2173cee1d25dd
Author: Yanfei Xu <yanfei.xu@windriver.com>
Date:   Wed Sep 15 15:24:26 2021 +0800

    blkcg: fix memory leak in blk_iolatency_init
    
    [ Upstream commit 6f5ddde41069fcd1f0993ec76c9dbbf9d021fd4d ]
    
    BUG: memory leak
    unreferenced object 0xffff888129acdb80 (size 96):
      comm "syz-executor.1", pid 12661, jiffies 4294962682 (age 15.220s)
      hex dump (first 32 bytes):
        20 47 c9 85 ff ff ff ff 20 d4 8e 29 81 88 ff ff   G...... ..)....
        01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff82264ec8>] kmalloc include/linux/slab.h:591 [inline]
        [<ffffffff82264ec8>] kzalloc include/linux/slab.h:721 [inline]
        [<ffffffff82264ec8>] blk_iolatency_init+0x28/0x190 block/blk-iolatency.c:724
        [<ffffffff8225b8c4>] blkcg_init_queue+0xb4/0x1c0 block/blk-cgroup.c:1185
        [<ffffffff822253da>] blk_alloc_queue+0x22a/0x2e0 block/blk-core.c:566
        [<ffffffff8223b175>] blk_mq_init_queue_data block/blk-mq.c:3100 [inline]
        [<ffffffff8223b175>] __blk_mq_alloc_disk+0x25/0xd0 block/blk-mq.c:3124
        [<ffffffff826a9303>] loop_add+0x1c3/0x360 drivers/block/loop.c:2344
        [<ffffffff826a966e>] loop_control_get_free drivers/block/loop.c:2501 [inline]
        [<ffffffff826a966e>] loop_control_ioctl+0x17e/0x2e0 drivers/block/loop.c:2516
        [<ffffffff81597eec>] vfs_ioctl fs/ioctl.c:51 [inline]
        [<ffffffff81597eec>] __do_sys_ioctl fs/ioctl.c:874 [inline]
        [<ffffffff81597eec>] __se_sys_ioctl fs/ioctl.c:860 [inline]
        [<ffffffff81597eec>] __x64_sys_ioctl+0xfc/0x140 fs/ioctl.c:860
        [<ffffffff843fa745>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
        [<ffffffff843fa745>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
        [<ffffffff84600068>] entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Once blk_throtl_init() queue init failed, blkcg_iolatency_exit() will
    not be invoked for cleanup. That leads a memory leak. Swap the
    blk_throtl_init() and blk_iolatency_init() calls can solve this.
    
    Reported-by: syzbot+01321b15cc98e6bf96d6@syzkaller.appspotmail.com
    Fixes: 19688d7f9592 (block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init() calls)
    Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Link: https://lore.kernel.org/r/20210915072426.4022924-1-yanfei.xu@windriver.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2990e56bb82c2d5ad86820db46e0eb80ab7a4110
Author: Daniel Wagner <dwagner@suse.de>
Date:   Thu Sep 2 11:20:02 2021 +0200

    nvme: avoid race in shutdown namespace removal
    
    [ Upstream commit 9edceaf43050f5ba1dd7d0011bcf68a736a17743 ]
    
    When we remove the siblings entry, we update ns->head->list, hence we
    can't separate the removal and test for being empty. They have to be
    in the same critical section to avoid a race.
    
    To avoid breaking the refcounting imbalance again, add a list empty
    check to nvme_find_ns_head.
    
    Fixes: 5396fdac56d8 ("nvme: fix refcounting imbalance when all paths are down")
    Signed-off-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Tested-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0eb2133475b443de3845cc879b80409ef4d93673
Author: Jiaran Zhang <zhangjiaran@huawei.com>
Date:   Mon Sep 13 21:08:24 2021 +0800

    net: hns3: fix the exception when query imp info
    
    [ Upstream commit 472430a7b066f19afa1b55867d621b2d6d323e0d ]
    
    When the command for querying imp info is issued to the firmware,
    if the firmware does not support the command, the returned value
    of bd num is 0.
    Add protection mechanism before alloc memory to prevent apply for
    0-length memory.
    
    Fixes: 0b198b0d80ea ("net: hns3: refactor dump m7 info of debugfs")
    Signed-off-by: Jiaran Zhang <zhangjiaran@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd0015a07cf7b760d2a6ba5da7d84b7dcfa61d29
Author: Aleksander Jan Bajkowski <olek2@wp.pl>
Date:   Sun Sep 12 13:58:07 2021 +0200

    net: dsa: lantiq_gswip: Add 200ms assert delay
    
    [ Upstream commit 111b64e35ea03d58c882832744f571a88bb2e2e2 ]
    
    The delay is especially needed by the xRX300 and xRX330 SoCs. Without
    this patch, some phys are sometimes not properly detected.
    
    The patch was tested on BT Home Hub 5A and D-Link DWR-966.
    
    Fixes: a09d042b0862 ("net: dsa: lantiq: allow to use all GPHYs on xRX300 and xRX330")
    Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4604b3cde1c8857e78059ef2d49207e28b9df25
Author: Ansuel Smith <ansuelsmth@gmail.com>
Date:   Sat Sep 11 17:50:09 2021 +0200

    net: dsa: qca8k: fix kernel panic with legacy mdio mapping
    
    [ Upstream commit ce062a0adbfe933b1932235fdfd874c4c91d1bb0 ]
    
    When the mdio legacy mapping is used the mii_bus priv registered by DSA
    refer to the dsa switch struct instead of the qca8k_priv struct and
    causes a kernel panic. Create dedicated function when the internal
    dedicated mdio driver is used to properly handle the 2 different
    implementation.
    
    Fixes: 759bafb8a322 ("net: dsa: qca8k: add support for internal phy and internal mdio")
    Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2a6d9c240e5aaf66187f8e1aba6813182e5be7b
Author: Dave Ertman <david.m.ertman@intel.com>
Date:   Thu Sep 9 08:12:23 2021 -0700

    ice: Correctly deal with PFs that do not support RDMA
    
    [ Upstream commit bfe84435090a6c85271b02a42b1d83fef9ff7cc7 ]
    
    There are two cases where the current PF does not support RDMA
    functionality.  The first is if the NVM loaded on the device is set
    to not support RDMA (common_caps.rdma is false).  The second is if
    the kernel bonding driver has included the current PF in an active
    link aggregate.
    
    When the driver has determined that this PF does not support RDMA, then
    auxiliary devices should not be created on the auxiliary bus.  Without
    a device on the auxiliary bus, even if the irdma driver is present, there
    will be no RDMA activity attempted on this PF.
    
    Currently, in the reset flow, an attempt to create auxiliary devices is
    performed without regard to the ability of the PF.  There needs to be a
    check in ice_aux_plug_dev (as the central point that creates auxiliary
    devices) to see if the PF is in a state to support the functionality.
    
    When disabling and re-enabling RDMA due to the inclusion/removal of the PF
    in a link aggregate, we also need to set/clear the bit which controls
    auxiliary device creation so that a reset recovery in a link aggregate
    situation doesn't try to create auxiliary devices when it shouldn't.
    
    Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA")
    Reported-by: Yongxin Liu <yongxin.liu@windriver.com>
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 084ba1ace0b90826ec2bde4437bb4796384a90c3
Author: Aya Levin <ayal@nvidia.com>
Date:   Thu Jul 15 10:53:28 2021 +0300

    net/mlx5e: Fix mutual exclusion between CQE compression and HW TS
    
    [ Upstream commit c91c1da72b47fc4c5e353cdd9099ba94ae07d2fa ]
    
    Some profiles of the driver don't support a dedicated PTP-RQ, hence can't
    support HW TS and CQE compression simultaneously. When HW TS is enabled
    the COE compression is disabled, and should be restored when the HW TS
    is turned off. Add rx_filter as an input to modifying CQE compression to
    enforce this restriction.
    
    Fixes: 256f79d13c1d ("net/mlx5e: Fix HW TS with CQE compression according to profile")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 080ce6343eff3abaacd02564873deb2d7f1e7efa
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Tue Aug 31 16:39:16 2021 +0200

    Drivers: hv: vmbus: Fix kernel crash upon unbinding a device from uio_hv_generic driver
    
    [ Upstream commit f1940d4e9cbe6208e7e77e433c587af108152a17 ]
    
    The following crash happens when a never-used device is unbound from
    uio_hv_generic driver:
    
     kernel BUG at mm/slub.c:321!
     invalid opcode: 0000 [#1] SMP PTI
     CPU: 0 PID: 4001 Comm: bash Kdump: loaded Tainted: G               X --------- ---  5.14.0-0.rc2.23.el9.x86_64 #1
     Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090008  12/07/2018
     RIP: 0010:__slab_free+0x1d5/0x3d0
    ...
     Call Trace:
      ? pick_next_task_fair+0x18e/0x3b0
      ? __cond_resched+0x16/0x40
      ? vunmap_pmd_range.isra.0+0x154/0x1c0
      ? __vunmap+0x22d/0x290
      ? hv_ringbuffer_cleanup+0x36/0x40 [hv_vmbus]
      kfree+0x331/0x380
      ? hv_uio_remove+0x43/0x60 [uio_hv_generic]
      hv_ringbuffer_cleanup+0x36/0x40 [hv_vmbus]
      vmbus_free_ring+0x21/0x60 [hv_vmbus]
      hv_uio_remove+0x4f/0x60 [uio_hv_generic]
      vmbus_remove+0x23/0x30 [hv_vmbus]
      __device_release_driver+0x17a/0x230
      device_driver_detach+0x3c/0xa0
      unbind_store+0x113/0x130
    ...
    
    The problem appears to be that we free 'ring_info->pkt_buffer' twice:
    first, when the device is unbound from in-kernel driver (netvsc in this
    case) and second from hv_uio_remove(). Normally, ring buffer is supposed
    to be re-initialized from hv_uio_open() but this happens when UIO device
    is being opened and this is not guaranteed to happen.
    
    Generally, it is OK to call hv_ringbuffer_cleanup() twice for the same
    channel (which is being handed over between in-kernel drivers and UIO) even
    if we didn't call hv_ringbuffer_init() in between. We, however, need to
    avoid kfree() call for an already freed pointer.
    
    Fixes: adae1e931acd ("Drivers: hv: vmbus: Copy packets sent by Hyper-V out of the ring buffer")
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Andrea Parri <parri.andrea@gmail.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20210831143916.144983-1-vkuznets@redhat.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4664ad853f4b6e19436e2f41a29623f5194170dc
Author: Joakim Zhang <qiangqing.zhang@nxp.com>
Date:   Thu Sep 9 17:23:22 2021 +0800

    net: stmmac: platform: fix build warning when with !CONFIG_PM_SLEEP
    
    commit 2a48d96fd58a666ae231c3dd6fe4a458798ac645 upstream.
    
    Use __maybe_unused for noirq_suspend()/noirq_resume() hooks to avoid
    build warning with !CONFIG_PM_SLEEP:
    
    >> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:796:12: error: 'stmmac_pltfr_noirq_resume' defined but not used [-Werror=unused-function]
         796 | static int stmmac_pltfr_noirq_resume(struct device *dev)
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~
    >> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:775:12: error: 'stmmac_pltfr_noirq_suspend' defined but not used [-Werror=unused-function]
         775 | static int stmmac_pltfr_noirq_suspend(struct device *dev)
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
       cc1: all warnings being treated as errors
    
    Fixes: 276aae377206 ("net: stmmac: fix system hang caused by eee_ctrl_timer during suspend/resume")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbf905bcd28addf95e0ea7342571b6e81ee97408
Author: Jiaran Zhang <zhangjiaran@huawei.com>
Date:   Mon Sep 13 21:08:25 2021 +0800

    net: hns3: fix the timing issue of VF clearing interrupt sources
    
    commit 427900d27d86b820c559037a984bd403f910860f upstream.
    
    Currently, the VF does not clear the interrupt source immediately after
    receiving the interrupt. As a result, if the second interrupt task is
    triggered when processing the first interrupt task, clearing the
    interrupt source before exiting will clear the interrupt sources of the
    two tasks at the same time. As a result, no interrupt is triggered for
    the second task. The VF detects the missed message only when the next
    interrupt is generated.
    
    Clearing it immediately after executing check_evt_cause ensures that:
    1. Even if two interrupt tasks are triggered at the same time, they can
    be processed.
    2. If the second task is triggered during the processing of the first
    task and the interrupt source is not cleared, the interrupt is reported
    after vector0 is enabled.
    
    Fixes: b90fcc5bd904 ("net: hns3: add reset handling for VF when doing Core/Global/IMP reset")
    Signed-off-by: Jiaran Zhang <zhangjiaran@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39da2bc7e5ac4ba2401abd79914aee07f0a11e97
Author: Yufeng Mo <moyufeng@huawei.com>
Date:   Mon Sep 13 21:08:23 2021 +0800

    net: hns3: disable mac in flr process
    
    commit b81d8948746520f989e86d66292ff72b5056114a upstream.
    
    The firmware will not disable mac in flr process. Therefore, the driver
    needs to proactively disable mac during flr, which is the same as the
    function reset.
    
    Fixes: 35d93a30040c ("net: hns3: adjust the process of PF reset")
    Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f3d5ea0f8177e62edd800d3bf836f80ec05485c
Author: Yufeng Mo <moyufeng@huawei.com>
Date:   Mon Sep 13 21:08:22 2021 +0800

    net: hns3: change affinity_mask to numa node range
    
    commit 1dc839ec09d3ab2a4156dc98328b8bc3586f2b70 upstream.
    
    Currently, affinity_mask is set to a single cpu. As a result,
    irqbalance becomes invalid in SUBSET or EXACT mode. To solve
    this problem, change affinity_mask to numa node range. In this
    way, irqbalance can be performed on the cpu of the numa node.
    
    Fixes: 0812545487ec ("net: hns3: add interrupt affinity support for misc interrupt")
    Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab73511cb2587a4f00c0a2efafdf4073010acf99
Author: Yufeng Mo <moyufeng@huawei.com>
Date:   Mon Sep 13 21:08:21 2021 +0800

    net: hns3: pad the short tunnel frame before sending to hardware
    
    commit d18e81183b1cb9c309266cbbce9acd3e0c528d04 upstream.
    
    The hardware cannot handle short tunnel frames below 65 bytes,
    and will cause vlan tag missing problem. So pads packet size to
    65 bytes for tunnel frames to fix this bug.
    
    Fixes: 3db084d28dc0("net: hns3: Fix for vxlan tx checksum bug")
    Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acd97a2a900bb9d7a60497d8f60b93c97cf8e1dc
Author: Edwin Peer <edwin.peer@broadcom.com>
Date:   Sun Sep 12 12:34:48 2021 -0400

    bnxt_en: make bnxt_free_skbs() safe to call after bnxt_free_mem()
    
    commit 1affc01fdc6035189a5ab2a24948c9419ee0ecf2 upstream.
    
    The call to bnxt_free_mem(..., false) in the bnxt_half_open_nic() error
    path will deallocate ring descriptor memory via bnxt_free_?x_rings(),
    but because irq_re_init is false, the ring info itself is not freed.
    
    To simplify error paths, deallocation functions have generally been
    written to be safe when called on unallocated memory. It should always
    be safe to call dev_close(), which calls bnxt_free_skbs() a second time,
    even in this semi- allocated ring state.
    
    Calling bnxt_free_skbs() a second time with the rings already freed will
    cause NULL pointer dereference.  Fix it by checking the rings are valid
    before proceeding in bnxt_free_tx_skbs() and
    bnxt_free_one_rx_ring_skbs().
    
    Fixes: 975bc99a4a39 ("bnxt_en: Refactor bnxt_free_rx_skbs().")
    Signed-off-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da15ae0968fa12dc825514653ef84e6226cdd724
Author: David Hildenbrand <david@redhat.com>
Date:   Thu Sep 9 16:59:42 2021 +0200

    s390/pci_mmio: fully validate the VMA before calling follow_pte()
    
    commit a8b92b8c1eac8d655a97b1e90f4d83c25d9b9a18 upstream.
    
    We should not walk/touch page tables outside of VMA boundaries when
    holding only the mmap sem in read mode. Evil user space can modify the
    VMA layout just before this function runs and e.g., trigger races with
    page table removal code since commit dd2283f2605e ("mm: mmap: zap pages
    with read mmap_sem in munmap").
    
    find_vma() does not check if the address is >= the VMA start address;
    use vma_lookup() instead.
    
    Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Fixes: dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in munmap")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 722ee4b29a59b92d725fb48e385e650f8c598e6d
Author: Ganesh Goudar <ganeshgr@linux.ibm.com>
Date:   Thu Sep 9 12:13:30 2021 +0530

    powerpc/mce: Fix access error in mce handler
    
    commit 3a1e92d0896e928ac2a5b58962d05a39afef2e23 upstream.
    
    We queue an irq work for deferred processing of mce event in realmode
    mce handler, where translation is disabled. Queuing of the work may
    result in accessing memory outside RMO region, such access needs the
    translation to be enabled for an LPAR running with hash mmu else the
    kernel crashes.
    
    After enabling translation in mce_handle_error() we used to leave it
    enabled to avoid crashing here, but now with the commit
    74c3354bc1d89 ("powerpc/pseries/mce: restore msr before returning from
    handler") we are restoring the MSR to disable translation.
    
    Hence to fix this enable the translation before queuing the work.
    
    Without this change following trace is seen on injecting SLB multihit in
    an LPAR running with hash mmu.
    
      Oops: Kernel access of bad area, sig: 11 [#1]
      LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
      CPU: 5 PID: 1883 Comm: insmod Tainted: G        OE     5.14.0-mce+ #137
      NIP:  c000000000735d60 LR: c000000000318640 CTR: 0000000000000000
      REGS: c00000001ebff9a0 TRAP: 0300   Tainted: G       OE      (5.14.0-mce+)
      MSR:  8000000000001003 <SF,ME,RI,LE>  CR: 28008228  XER: 00000001
      CFAR: c00000000031863c DAR: c00000027fa8fe08 DSISR: 40000000 IRQMASK: 0
      ...
      NIP llist_add_batch+0x0/0x40
      LR  __irq_work_queue_local+0x70/0xc0
      Call Trace:
        0xc00000001ebffc0c (unreliable)
        irq_work_queue+0x40/0x70
        machine_check_queue_event+0xbc/0xd0
        machine_check_early_common+0x16c/0x1f4
    
    Fixes: 74c3354bc1d89 ("powerpc/pseries/mce: restore msr before returning from handler")
    Signed-off-by: Ganesh Goudar <ganeshgr@linux.ibm.com>
    [mpe: Fix comment formatting, trim oops in change log for readability]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210909064330.312432-1-ganeshgr@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31f2beef3ef1510a641eac84c3c0671ae653b0e8
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed Sep 8 20:17:17 2021 +1000

    powerpc/64s: system call rfscv workaround for TM bugs
    
    commit ae7aaecc3f2f78b76ab3a8d6178610f55aadfa56 upstream.
    
    The rfscv instruction does not work correctly with the fake-suspend mode
    in POWER9, which can end up with the hypervisor restoring an incorrect
    checkpoint.
    
    Work around this by setting the _TIF_RESTOREALL flag if a system call
    returns to a transaction active state, causing rfid to be used instead
    of rfscv to return, which will do the right thing. The contents of the
    registers are irrelevant because they will be overwritten in this case
    anyway.
    
    Fixes: 7fa95f9adaee7 ("powerpc/64s: system call support for scv/rfscv instructions")
    Reported-by: Eirik Fuller <efuller@redhat.com>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210908101718.118522-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9151f0bdc3a1c119a48e0a979c1d533c6a253ec8
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed Sep 8 20:17:18 2021 +1000

    KVM: PPC: Book3S HV: Tolerate treclaim. in fake-suspend mode changing registers
    
    commit 267cdfa21385d78c794768233678756e32b39ead upstream.
    
    POWER9 DD2.2 and 2.3 hardware implements a "fake-suspend" mode where
    certain TM instructions executed in HV=0 mode cause softpatch interrupts
    so the hypervisor can emulate them and prevent problematic processor
    conditions. In this fake-suspend mode, the treclaim. instruction does
    not modify registers.
    
    Unfortunately the rfscv instruction executed by the guest do not
    generate softpatch interrupts, which can cause the hypervisor to lose
    track of the fake-suspend mode, and it can execute this treclaim. while
    not in fake-suspend mode. This modifies GPRs and crashes the hypervisor.
    
    It's not trivial to disable scv in the guest with HFSCR now, because
    they assume a POWER9 has scv available. So this fix saves and restores
    checkpointed registers across the treclaim.
    
    Fixes: 7854f7545bff ("KVM: PPC: Book3S: Rework TM save/restore code and make it C-callable")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210908101718.118522-2-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5bf0fd8f4d1aaecf192b35a89547bcd27eaf063
Author: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Date:   Wed Sep 8 09:58:20 2021 -0700

    ibmvnic: check failover_pending in login response
    
    commit 273c29e944bda9a20a30c26cfc34c9a3f363280b upstream.
    
    If a failover occurs before a login response is received, the login
    response buffer maybe undefined. Check that there was no failover
    before accessing the login response buffer.
    
    Fixes: 032c5e82847a ("Driver for IBM System i/p VNIC protocol")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7b260fd73099e31ef16a6ce022d2bdd5db9b9af
Author: David Heidelberg <david@ixit.cz>
Date:   Sun Sep 12 18:51:20 2021 +0200

    dt-bindings: arm: Fix Toradex compatible typo
    
    commit 55c21d57eafb7b379bb7b3e93baf9ca2695895b0 upstream.
    
    Fix board compatible typo reported by dtbs_check.
    
    Fixes: f4d1577e9bc6 ("dt-bindings: arm: Convert Tegra board/soc bindings to json-schema")
    Signed-off-by: David Heidelberg <david@ixit.cz>
    Link: https://lore.kernel.org/r/20210912165120.188490-1-david@ixit.cz
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 322b40b5094e3aac53b40e0fb64fe8c8cc15c6a8
Author: Aya Levin <ayal@nvidia.com>
Date:   Mon Sep 13 10:53:49 2021 +0300

    udp_tunnel: Fix udp_tunnel_nic work-queue type
    
    commit e50e711351bdc656a8e6ca1022b4293cae8dcd59 upstream.
    
    Turn udp_tunnel_nic work-queue to an ordered work-queue. This queue
    holds the UDP-tunnel configuration commands of the different netdevs.
    When the netdevs are functions of the same NIC the order of
    execution may be crucial.
    
    Problem example:
    NIC with 2 PFs, both PFs declare offload quota of up to 3 UDP-ports.
     $ifconfig eth2 1.1.1.1/16 up
    
     $ip link add eth2_19503 type vxlan id 5049 remote 1.1.1.2 dev eth2 dstport 19053
     $ip link set dev eth2_19503 up
    
     $ip link add eth2_19504 type vxlan id 5049 remote 1.1.1.3 dev eth2 dstport 19054
     $ip link set dev eth2_19504 up
    
     $ip link add eth2_19505 type vxlan id 5049 remote 1.1.1.4 dev eth2 dstport 19055
     $ip link set dev eth2_19505 up
    
     $ip link add eth2_19506 type vxlan id 5049 remote 1.1.1.5 dev eth2 dstport 19056
     $ip link set dev eth2_19506 up
    
    NIC RX port offload infrastructure offloads the first 3 UDP-ports (on
    all devices which sets NETIF_F_RX_UDP_TUNNEL_PORT feature) and not
    UDP-port 19056. So both PFs gets this offload configuration.
    
     $ip link set dev eth2_19504 down
    
    This triggers udp-tunnel-core to remove the UDP-port 19504 from
    offload-ports-list and offload UDP-port 19056 instead.
    
    In this scenario it is important that the UDP-port of 19504 will be
    removed from both PFs before trying to add UDP-port 19056. The NIC can
    stop offloading a UDP-port only when all references are removed.
    Otherwise the NIC may report exceeding of the offload quota.
    
    Fixes: cc4e3835eff4 ("udp_tunnel: add central NIC RX port offload infrastructure")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a791fa9de15c202ff4874f2c2f6bf692741e195
Author: Shai Malin <smalin@marvell.com>
Date:   Fri Sep 10 11:33:56 2021 +0300

    qed: Handle management FW error
    
    commit 20e100f52730cd0db609e559799c1712b5f27582 upstream.
    
    Handle MFW (management FW) error response in order to avoid a crash
    during recovery flows.
    
    Changes from v1:
    - Add "Fixes tag".
    
    Fixes: tag 5e7ba042fd05 ("qed: Fix reading stale configuration information")
    Signed-off-by: Ariel Elior <aelior@marvell.com>
    Signed-off-by: Shai Malin <smalin@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01d93582832502c693ce201addafacdded529b59
Author: Andrea Claudi <aclaudi@redhat.com>
Date:   Sat Sep 11 16:14:18 2021 +0200

    selftest: net: fix typo in altname test
    
    commit 1b704b27beb11ce147d64b21c914e57afbfb5656 upstream.
    
    If altname deletion of the short alternative name fails, the error
    message printed is: "Failed to add short alternative name".
    This is obviously a typo, as we are testing altname deletion.
    
    Fix this using a proper error message.
    
    Fixes: f95e6c9c4617 ("selftest: net: add alternative names test")
    Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88ed682408f160fc2c242e3f9a25d8cd9cea64c8
Author: zhenggy <zhenggy@chinatelecom.cn>
Date:   Tue Sep 14 09:51:15 2021 +0800

    tcp: fix tp->undo_retrans accounting in tcp_sacktag_one()
    
    commit 4f884f3962767877d7aabbc1ec124d2c307a4257 upstream.
    
    Commit 10d3be569243 ("tcp-tso: do not split TSO packets at retransmit
    time") may directly retrans a multiple segments TSO/GSO packet without
    split, Since this commit, we can no longer assume that a retransmitted
    packet is a single segment.
    
    This patch fixes the tp->undo_retrans accounting in tcp_sacktag_one()
    that use the actual segments(pcount) of the retransmitted packet.
    
    Before that commit (10d3be569243), the assumption underlying the
    tp->undo_retrans-- seems correct.
    
    Fixes: 10d3be569243 ("tcp-tso: do not split TSO packets at retransmit time")
    Signed-off-by: zhenggy <zhenggy@chinatelecom.cn>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e50f1df204d56d8eb33deb8e93c275d684a9a8a3
Author: Will Deacon <will@kernel.org>
Date:   Mon Sep 13 17:35:47 2021 +0100

    x86/uaccess: Fix 32-bit __get_user_asm_u64() when CC_HAS_ASM_GOTO_OUTPUT=y
    
    commit a69ae291e1cc2d08ae77c2029579c59c9bde5061 upstream.
    
    Commit 865c50e1d279 ("x86/uaccess: utilize CONFIG_CC_HAS_ASM_GOTO_OUTPUT")
    added an optimised version of __get_user_asm() for x86 using 'asm goto'.
    
    Like the non-optimised code, the 32-bit implementation of 64-bit
    get_user() expands to a pair of 32-bit accesses.  Unlike the
    non-optimised code, the _original_ pointer is incremented to copy the
    high word instead of loading through a new pointer explicitly
    constructed to point at a 32-bit type.  Consequently, if the pointer
    points at a 64-bit type then we end up loading the wrong data for the
    upper 32-bits.
    
    This was observed as a mount() failure in Android targeting i686 after
    b0cfcdd9b967 ("d_path: make 'prepend()' fill up the buffer exactly on
    overflow") because the call to copy_from_kernel_nofault() from
    prepend_copy() ends up in __get_kernel_nofault() and casts the source
    pointer to a 'u64 __user *'.  An attempt to mount at "/debug_ramdisk"
    therefore ends up failing trying to mount "/debumdismdisk".
    
    Use the existing '__gu_ptr' source pointer to unsigned int for 32-bit
    __get_user_asm_u64() instead of the original pointer.
    
    Cc: Bill Wendling <morbo@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: 865c50e1d279 ("x86/uaccess: utilize CONFIG_CC_HAS_ASM_GOTO_OUTPUT")
    Signed-off-by: Will Deacon <will@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 893124376b0a6689d448eb808008e96c4cf39487
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Sep 14 16:43:31 2021 +0300

    net: dsa: destroy the phylink instance on any error in dsa_slave_phy_setup
    
    commit 6a52e73368038f47f6618623d75061dc263b26ae upstream.
    
    DSA supports connecting to a phy-handle, and has a fallback to a non-OF
    based method of connecting to an internal PHY on the switch's own MDIO
    bus, if no phy-handle and no fixed-link nodes were present.
    
    The -ENODEV error code from the first attempt (phylink_of_phy_connect)
    is what triggers the second attempt (phylink_connect_phy).
    
    However, when the first attempt returns a different error code than
    -ENODEV, this results in an unbalance of calls to phylink_create and
    phylink_destroy by the time we exit the function. The phylink instance
    has leaked.
    
    There are many other error codes that can be returned by
    phylink_of_phy_connect. For example, phylink_validate returns -EINVAL.
    So this is a practical issue too.
    
    Fixes: aab9c4067d23 ("net: dsa: Plug in PHYLINK support")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20210914134331.2303380-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43867a55875e21dbef29b64a179fa38001ae2a94
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Sep 8 17:00:29 2021 -0700

    net/af_unix: fix a data-race in unix_dgram_poll
    
    commit 04f08eb44b5011493d77b602fdec29ff0f5c6cd5 upstream.
    
    syzbot reported another data-race in af_unix [1]
    
    Lets change __skb_insert() to use WRITE_ONCE() when changing
    skb head qlen.
    
    Also, change unix_dgram_poll() to use lockless version
    of unix_recvq_full()
    
    It is verry possible we can switch all/most unix_recvq_full()
    to the lockless version, this will be done in a future kernel version.
    
    [1] HEAD commit: 8596e589b787732c8346f0482919e83cc9362db1
    
    BUG: KCSAN: data-race in skb_queue_tail / unix_dgram_poll
    
    write to 0xffff88814eeb24e0 of 4 bytes by task 25815 on cpu 0:
     __skb_insert include/linux/skbuff.h:1938 [inline]
     __skb_queue_before include/linux/skbuff.h:2043 [inline]
     __skb_queue_tail include/linux/skbuff.h:2076 [inline]
     skb_queue_tail+0x80/0xa0 net/core/skbuff.c:3264
     unix_dgram_sendmsg+0xff2/0x1600 net/unix/af_unix.c:1850
     sock_sendmsg_nosec net/socket.c:703 [inline]
     sock_sendmsg net/socket.c:723 [inline]
     ____sys_sendmsg+0x360/0x4d0 net/socket.c:2392
     ___sys_sendmsg net/socket.c:2446 [inline]
     __sys_sendmmsg+0x315/0x4b0 net/socket.c:2532
     __do_sys_sendmmsg net/socket.c:2561 [inline]
     __se_sys_sendmmsg net/socket.c:2558 [inline]
     __x64_sys_sendmmsg+0x53/0x60 net/socket.c:2558
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff88814eeb24e0 of 4 bytes by task 25834 on cpu 1:
     skb_queue_len include/linux/skbuff.h:1869 [inline]
     unix_recvq_full net/unix/af_unix.c:194 [inline]
     unix_dgram_poll+0x2bc/0x3e0 net/unix/af_unix.c:2777
     sock_poll+0x23e/0x260 net/socket.c:1288
     vfs_poll include/linux/poll.h:90 [inline]
     ep_item_poll fs/eventpoll.c:846 [inline]
     ep_send_events fs/eventpoll.c:1683 [inline]
     ep_poll fs/eventpoll.c:1798 [inline]
     do_epoll_wait+0x6ad/0xf00 fs/eventpoll.c:2226
     __do_sys_epoll_wait fs/eventpoll.c:2238 [inline]
     __se_sys_epoll_wait fs/eventpoll.c:2233 [inline]
     __x64_sys_epoll_wait+0xf6/0x120 fs/eventpoll.c:2233
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x3d/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0x0000001b -> 0x00000001
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 25834 Comm: syz-executor.1 Tainted: G        W         5.14.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 86b18aaa2b5b ("skbuff: fix a data race in skb_queue_len()")
    Cc: Qian Cai <cai@lca.pw>
    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 178c282e543fbc167af79cd6c3a7f8f104e67c58
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Sep 8 13:42:09 2021 +0200

    vhost_net: fix OoB on sendmsg() failure.
    
    commit 3c4cea8fa7f71f00c5279547043a84bc2a4d8b8c upstream.
    
    If the sendmsg() call in vhost_tx_batch() fails, both the 'batched_xdp'
    and 'done_idx' indexes are left unchanged. If such failure happens
    when batched_xdp == VHOST_NET_BATCH, the next call to
    vhost_net_build_xdp() will access and write memory outside the xdp
    buffers area.
    
    Since sendmsg() can only error with EBADFD, this change addresses the
    issue explicitly freeing the XDP buffers batch on error.
    
    Fixes: 0a0be13b8fe2 ("vhost_net: batch submitting XDP buffers to underlayer sockets")
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8f84d205910f7ee5a20a6d44b4c702a9a23135e
Author: Kortan <kortanzh@gmail.com>
Date:   Wed Sep 8 11:28:48 2021 +0800

    gen_compile_commands: fix missing 'sys' package
    
    commit ec783c7cb2495c5a3b8ca10db8056d43c528f940 upstream.
    
    We need to import the 'sys' package since the script has called
    sys.exit() method.
    
    Fixes: 6ad7cbc01527 ("Makefile: Add clang-tidy and static analyzer support to makefile")
    Signed-off-by: Kortan <kortanzh@gmail.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5663238281f42daf435c8dd37afdd0c485b5259
Author: Alex Elder <elder@linaro.org>
Date:   Tue Sep 7 12:05:54 2021 -0500

    net: ipa: initialize all filter table slots
    
    commit b5c102238cea985d8126b173d06b9e1de88037ee upstream.
    
    There is an off-by-one problem in ipa_table_init_add(), when
    initializing filter tables.
    
    In that function, the number of filter table entries is determined
    based on the number of set bits in the filter map.  However that
    count does *not* include the extra "slot" in the filter table that
    holds the filter map itself.  Meanwhile, ipa_table_addr() *does*
    include the filter map in the memory it returns, but because the
    count it's provided doesn't include it, it includes one too few
    table entries.
    
    Fix this by including the extra slot for the filter map in the count
    computed in ipa_table_init_add().
    
    Note: ipa_filter_reset_table() does not have this problem; it resets
    filter table entries one by one, but does not overwrite the filter
    bitmap.
    
    Fixes: 2b9feef2b6c2 ("soc: qcom: ipa: filter and routing tables")
    Signed-off-by: Alex Elder <elder@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb84e79f4f794277545f69348c3e906a6b5a5c85
Author: Baptiste Lepers <baptiste.lepers@gmail.com>
Date:   Mon Sep 6 11:53:10 2021 +1000

    events: Reuse value read using READ_ONCE instead of re-reading it
    
    commit b89a05b21f46150ac10a962aa50109250b56b03b upstream.
    
    In perf_event_addr_filters_apply, the task associated with
    the event (event->ctx->task) is read using READ_ONCE at the beginning
    of the function, checked, and then re-read from event->ctx->task,
    voiding all guarantees of the checks. Reuse the value that was read by
    READ_ONCE to ensure the consistency of the task struct throughout the
    function.
    
    Fixes: 375637bc52495 ("perf/core: Introduce address range filtering")
    Signed-off-by: Baptiste Lepers <baptiste.lepers@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210906015310.12802-1-baptiste.lepers@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 398026b3e1fe46433812f568c5964f41e513ac66
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Sep 3 22:57:06 2021 +1000

    powerpc/64s: system call scv tabort fix for corrupt irq soft-mask state
    
    commit b871895b148256f1721bc565d803860242755a0b upstream.
    
    If a system call is made with a transaction active, the kernel
    immediately aborts it and returns. scv system calls disable irqs even
    earlier in their interrupt handler, and tabort_syscall does not fix this
    up.
    
    This can result in irq soft-mask state being messed up on the next
    kernel entry, and crashing at BUG_ON(arch_irq_disabled_regs(regs)) in
    the kernel exit handlers, or possibly worse.
    
    This can't easily be fixed in asm because at this point an async irq may
    have hit, which is soft-masked and marked pending. The pending interrupt
    has to be replayed before returning to userspace. The fix is to move the
    tabort_syscall code to C in the main syscall handler, and just skip the
    system call but otherwise return as usual, which will take care of the
    pending irqs. This also does a bunch of other things including possible
    signal delivery to the process, but the doomed transaction should still
    be aborted when it is eventually returned to.
    
    The sc system call path is changed to use the new C function as well to
    reduce code and path differences. This slows down how quickly system
    calls are aborted when called while a transaction is active, which could
    potentially impact TM performance. But making any system call is already
    bad for performance, and TM is on the way out, so go with simpler over
    faster.
    
    Fixes: 7fa95f9adaee7 ("powerpc/64s: system call support for scv/rfscv instructions")
    Reported-by: Eirik Fuller <efuller@redhat.com>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    [mpe: Use #ifdef rather than IS_ENABLED() to fix build error on 32-bit]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210903125707.1601269-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae66447e99590243ff8a848694052fa3eab7b4f8
Author: Keith Busch <kbusch@kernel.org>
Date:   Thu Sep 9 08:54:52 2021 -0700

    nvme-tcp: fix io_work priority inversion
    
    commit 70f437fb4395ad4d1d16fab9a1ad9fbc9fc0579b upstream.
    
    Dispatching requests inline with the .queue_rq() call may block while
    holding the send_mutex. If the tcp io_work also happens to schedule, it
    may see the req_list is non-empty, leaving "pending" true and remaining
    in TASK_RUNNING. Since io_work is of higher scheduling priority, the
    .queue_rq task may not get a chance to run, blocking forward progress
    and leading to io timeouts.
    
    Instead of checking for pending requests within io_work, let the queueing
    restart io_work outside the send_mutex lock if there is more work to be
    done.
    
    Fixes: a0fdd1418007f ("nvme-tcp: rerun io_work if req_list is not empty")
    Reported-by: Samuel Jones <sjones@kalrayinc.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48e04f88a216bd1de8c4c0583536f5713b3cbb94
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Sep 15 10:19:07 2021 -0700

    igc: fix tunnel offloading
    
    commit 40ee363c844fcb6ae0f1f5cfea68aed7e268c2f4 upstream.
    
    Checking tunnel offloading, it turns out that offloading doesn't work
    as expected.  The following script allows to reproduce the issue.
    Call it as `testscript DEVICE LOCALIP REMOTEIP NETMASK'
    
    === SNIP ===
    if [ $# -ne 4 ]
    then
      echo "Usage $0 DEVICE LOCALIP REMOTEIP NETMASK"
      exit 1
    fi
    DEVICE="$1"
    LOCAL_ADDRESS="$2"
    REMOTE_ADDRESS="$3"
    NWMASK="$4"
    echo "Driver: $(ethtool -i ${DEVICE} | awk '/^driver:/{print $2}') "
    ethtool -k "${DEVICE}" | grep tx-udp
    echo
    echo "Set up NIC and tunnel..."
    ip addr add "${LOCAL_ADDRESS}/${NWMASK}" dev "${DEVICE}"
    ip link set "${DEVICE}" up
    sleep 2
    ip link add vxlan1 type vxlan id 42 \
                       remote "${REMOTE_ADDRESS}" \
                       local "${LOCAL_ADDRESS}" \
                       dstport 0 \
                       dev "${DEVICE}"
    ip addr add fc00::1/64 dev vxlan1
    ip link set vxlan1 up
    sleep 2
    rm -f vxlan.pcap
    echo "Running tcpdump and iperf3..."
    ( nohup tcpdump -i any -w vxlan.pcap >/dev/null 2>&1 ) &
    sleep 2
    iperf3 -c fc00::2 >/dev/null
    pkill tcpdump
    echo
    echo -n "Max. Paket Size: "
    tcpdump -r vxlan.pcap -nnle 2>/dev/null \
    | grep "${LOCAL_ADDRESS}.*> ${REMOTE_ADDRESS}.*OTV" \
    | awk '{print $8}' | awk -F ':' '{print $1}' \
    | sort -n | tail -1
    echo
    ip link del vxlan1
    ip addr del ${LOCAL_ADDRESS}/${NWMASK} dev "${DEVICE}"
    === SNAP ===
    
    The expected outcome is
    
      Max. Paket Size: 64904
    
    This is what you see on igb, the code igc has been taken from.
    However, on igc the output is
    
      Max. Paket Size: 1516
    
    so the GSO aggregate packets are segmented by the kernel before calling
    igc_xmit_frame.  Inside the subsequent call to igc_tso, the check for
    skb_is_gso(skb) fails and the function returns prematurely.
    
    It turns out that this occurs because the feature flags aren't set
    entirely correctly in igc_probe.  In contrast to the original code
    from igb_probe, igc_probe neglects to set the flags required to allow
    tunnel offloading.
    
    Setting the same flags as igb fixes the issue on igc.
    
    Fixes: 34428dff3679 ("igc: Add GSO partial support")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Tested-by: Corinna Vinschen <vinschen@redhat.com>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Nechama Kraus <nechamax.kraus@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2283da2a64fbffdfade5b005ecb42c062b414ade
Author: Joakim Zhang <qiangqing.zhang@nxp.com>
Date:   Wed Sep 8 15:43:35 2021 +0800

    net: stmmac: fix system hang caused by eee_ctrl_timer during suspend/resume
    
    commit 276aae377206d60b9b7b7df4586cd9f2a813f5d0 upstream.
    
    commit 5f58591323bf ("net: stmmac: delete the eee_ctrl_timer after
    napi disabled"), this patch tries to fix system hang caused by eee_ctrl_timer,
    unfortunately, it only can resolve it for system reboot stress test. System
    hang also can be reproduced easily during system suspend/resume stess test
    when mount NFS on i.MX8MP EVK board.
    
    In stmmac driver, eee feature is combined to phylink framework. When do
    system suspend, phylink_stop() would queue delayed work, it invokes
    stmmac_mac_link_down(), where to deactivate eee_ctrl_timer synchronizly.
    In above commit, try to fix issue by deactivating eee_ctrl_timer obviously,
    but it is not enough. Looking into eee_ctrl_timer expire callback
    stmmac_eee_ctrl_timer(), it could enable hareware eee mode again. What is
    unexpected is that LPI interrupt (MAC_Interrupt_Enable.LPIEN bit) is always
    asserted. This interrupt has chance to be issued when LPI state entry/exit
    from the MAC, and at that time, clock could have been already disabled.
    The result is that system hang when driver try to touch register from
    interrupt handler.
    
    The reason why above commit can fix system hang issue in stmmac_release()
    is that, deactivate eee_ctrl_timer not just after napi disabled, further
    after irq freed.
    
    In conclusion, hardware would generate LPI interrupt when clock has been
    disabled during suspend or resume, since hardware is in eee mode and LPI
    interrupt enabled.
    
    Interrupts from MAC, MTL and DMA level are enabled and never been disabled
    when system suspend, so postpone clocks management from suspend stage to
    noirq suspend stage should be more safe.
    
    Fixes: 5f58591323bf ("net: stmmac: delete the eee_ctrl_timer after napi disabled")
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c29323ea0eb65191a43c8cee9b0c02aca366d844
Author: Maor Gottlieb <maorg@nvidia.com>
Date:   Wed Sep 1 11:48:13 2021 +0300

    net/mlx5: Fix potential sleeping in atomic context
    
    commit ee27e330a953595903979ffdb84926843595a9fe upstream.
    
    Fixes the below flow of sleeping in atomic context by releasing
    the RCU lock before calling to free_match_list.
    
    build_match_list() <- disables preempt
    -> free_match_list()
       -> tree_put_node()
          -> down_write_ref_node() <- take write lock
    
    Fixes: 693c6883bbc4 ("net/mlx5: Add hash table for flow groups in flow table")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31aec563de9051df246e84de57c93e988b47dfd3
Author: Saeed Mahameed <saeedm@nvidia.com>
Date:   Wed Aug 18 13:09:26 2021 -0700

    net/mlx5: FWTrace, cancel work on alloc pd error flow
    
    commit dfe6fd72b5f1878b16aa2c8603e031bbcd66b96d upstream.
    
    Handle error flow on mlx5_core_alloc_pd() failure,
    read_fw_strings_work must be canceled.
    
    Fixes: c71ad41ccb0c ("net/mlx5: FW tracer, events handling")
    Reported-by: Pavel Machek (CIP) <pavel@denx.de>
    Suggested-by: Pavel Machek (CIP) <pavel@denx.de>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Reviewed-by: Aya Levin <ayal@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bef2db97a77ca919ea12857b52b3ff58f784acb6
Author: Michael Petlan <mpetlan@redhat.com>
Date:   Mon Jul 19 16:53:32 2021 +0200

    perf machine: Initialize srcline string member in add_location struct
    
    commit 57f0ff059e3daa4e70a811cb1d31a49968262d20 upstream.
    
    It's later supposed to be either a correct address or NULL. Without the
    initialization, it may contain an undefined value which results in the
    following segmentation fault:
    
      # perf top --sort comm -g --ignore-callees=do_idle
    
    terminates with:
    
      #0  0x00007ffff56b7685 in __strlen_avx2 () from /lib64/libc.so.6
      #1  0x00007ffff55e3802 in strdup () from /lib64/libc.so.6
      #2  0x00005555558cb139 in hist_entry__init (callchain_size=<optimized out>, sample_self=true, template=0x7fffde7fb110, he=0x7fffd801c250) at util/hist.c:489
      #3  hist_entry__new (template=template@entry=0x7fffde7fb110, sample_self=sample_self@entry=true) at util/hist.c:564
      #4  0x00005555558cb4ba in hists__findnew_entry (hists=hists@entry=0x5555561d9e38, entry=entry@entry=0x7fffde7fb110, al=al@entry=0x7fffde7fb420,
          sample_self=sample_self@entry=true) at util/hist.c:657
      #5  0x00005555558cba1b in __hists__add_entry (hists=hists@entry=0x5555561d9e38, al=0x7fffde7fb420, sym_parent=<optimized out>, bi=bi@entry=0x0, mi=mi@entry=0x0,
          sample=sample@entry=0x7fffde7fb4b0, sample_self=true, ops=0x0, block_info=0x0) at util/hist.c:288
      #6  0x00005555558cbb70 in hists__add_entry (sample_self=true, sample=0x7fffde7fb4b0, mi=0x0, bi=0x0, sym_parent=<optimized out>, al=<optimized out>, hists=0x5555561d9e38)
          at util/hist.c:1056
      #7  iter_add_single_cumulative_entry (iter=0x7fffde7fb460, al=<optimized out>) at util/hist.c:1056
      #8  0x00005555558cc8a4 in hist_entry_iter__add (iter=iter@entry=0x7fffde7fb460, al=al@entry=0x7fffde7fb420, max_stack_depth=<optimized out>, arg=arg@entry=0x7fffffff7db0)
          at util/hist.c:1231
      #9  0x00005555557cdc9a in perf_event__process_sample (machine=<optimized out>, sample=0x7fffde7fb4b0, evsel=<optimized out>, event=<optimized out>, tool=0x7fffffff7db0)
          at builtin-top.c:842
      #10 deliver_event (qe=<optimized out>, qevent=<optimized out>) at builtin-top.c:1202
      #11 0x00005555558a9318 in do_flush (show_progress=false, oe=0x7fffffff80e0) at util/ordered-events.c:244
      #12 __ordered_events__flush (oe=oe@entry=0x7fffffff80e0, how=how@entry=OE_FLUSH__TOP, timestamp=timestamp@entry=0) at util/ordered-events.c:323
      #13 0x00005555558a9789 in __ordered_events__flush (timestamp=<optimized out>, how=<optimized out>, oe=<optimized out>) at util/ordered-events.c:339
      #14 ordered_events__flush (how=OE_FLUSH__TOP, oe=0x7fffffff80e0) at util/ordered-events.c:341
      #15 ordered_events__flush (oe=oe@entry=0x7fffffff80e0, how=how@entry=OE_FLUSH__TOP) at util/ordered-events.c:339
      #16 0x00005555557cd631 in process_thread (arg=0x7fffffff7db0) at builtin-top.c:1114
      #17 0x00007ffff7bb817a in start_thread () from /lib64/libpthread.so.0
      #18 0x00007ffff5656dc3 in clone () from /lib64/libc.so.6
    
    If you look at the frame #2, the code is:
    
    488      if (he->srcline) {
    489          he->srcline = strdup(he->srcline);
    490          if (he->srcline == NULL)
    491              goto err_rawdata;
    492      }
    
    If he->srcline is not NULL (it is not NULL if it is uninitialized rubbish),
    it gets strdupped and strdupping a rubbish random string causes the problem.
    
    Also, if you look at the commit 1fb7d06a509e, it adds the srcline property
    into the struct, but not initializing it everywhere needed.
    
    Committer notes:
    
    Now I see, when using --ignore-callees=do_idle we end up here at line
    2189 in add_callchain_ip():
    
    2181         if (al.sym != NULL) {
    2182                 if (perf_hpp_list.parent && !*parent &&
    2183                     symbol__match_regex(al.sym, &parent_regex))
    2184                         *parent = al.sym;
    2185                 else if (have_ignore_callees && root_al &&
    2186                   symbol__match_regex(al.sym, &ignore_callees_regex)) {
    2187                         /* Treat this symbol as the root,
    2188                            forgetting its callees. */
    2189                         *root_al = al;
    2190                         callchain_cursor_reset(cursor);
    2191                 }
    2192         }
    
    And the al that doesn't have the ->srcline field initialized will be
    copied to the root_al, so then, back to:
    
    1211 int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
    1212                          int max_stack_depth, void *arg)
    1213 {
    1214         int err, err2;
    1215         struct map *alm = NULL;
    1216
    1217         if (al)
    1218                 alm = map__get(al->map);
    1219
    1220         err = sample__resolve_callchain(iter->sample, &callchain_cursor, &iter->parent,
    1221                                         iter->evsel, al, max_stack_depth);
    1222         if (err) {
    1223                 map__put(alm);
    1224                 return err;
    1225         }
    1226
    1227         err = iter->ops->prepare_entry(iter, al);
    1228         if (err)
    1229                 goto out;
    1230
    1231         err = iter->ops->add_single_entry(iter, al);
    1232         if (err)
    1233                 goto out;
    1234
    
    That al at line 1221 is what hist_entry_iter__add() (called from
    sample__resolve_callchain()) saw as 'root_al', and then:
    
            iter->ops->add_single_entry(iter, al);
    
    will go on with al->srcline with a bogus value, I'll add the above
    sequence to the cset and apply, thanks!
    
    Signed-off-by: Michael Petlan <mpetlan@redhat.com>
    CC: Milian Wolff <milian.wolff@kdab.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Fixes: 1fb7d06a509e ("perf report Use srcline from callchain for hist entries")
    Link: https //lore.kernel.org/r/20210719145332.29747-1-mpetlan@redhat.com
    Reported-by: Juri Lelli <jlelli@redhat.com>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a628e6c8eaa78424cf1dc781d49f34acde6c72c7
Author: Lee Shawn C <shawn.c.lee@intel.com>
Date:   Tue Jul 6 23:25:41 2021 +0800

    drm/i915/dp: return proper DPRX link training result
    
    commit 9af4bf2171c1a9e3f2ebb21140c0e34e60b2a22a upstream.
    
    After DPRX link training, intel_dp_link_train_phy() did not
    return the training result properly. If link training failed,
    i915 driver would not run into link train fallback function.
    And no hotplug uevent would be received by user space application.
    
    Fixes: b30edfd8d0b4 ("drm/i915: Switch to LTTPR non-transparent mode link training")
    Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Cooper Chiou <cooper.chiou@intel.com>
    Cc: William Tseng <william.tseng@intel.com>
    Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com>
    Reviewed-by: Imre Deak <imre.deak@intel.com>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210706152541.25021-1-shawn.c.lee@intel.com
    (cherry picked from commit dab1b47e57e053b2a02c22ead8e7449f79961335)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80e336d29217edf6bc6baa1312b0d002113b12b1
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Mar 5 12:21:40 2021 +0000

    rtc: cmos: Disable irq around direct invocation of cmos_interrupt()
    
    commit 13be2efc390acd2a46a69a359f6efc00ca434599 upstream.
    
    As previously noted in commit 66e4f4a9cc38 ("rtc: cmos: Use
    spin_lock_irqsave() in cmos_interrupt()"):
    
    <4>[  254.192378] WARNING: inconsistent lock state
    <4>[  254.192384] 5.12.0-rc1-CI-CI_DRM_9834+ #1 Not tainted
    <4>[  254.192396] --------------------------------
    <4>[  254.192400] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
    <4>[  254.192409] rtcwake/5309 [HC0[0]:SC0[0]:HE1:SE1] takes:
    <4>[  254.192429] ffffffff8263c5f8 (rtc_lock){?...}-{2:2}, at: cmos_interrupt+0x18/0x100
    <4>[  254.192481] {IN-HARDIRQ-W} state was registered at:
    <4>[  254.192488]   lock_acquire+0xd1/0x3d0
    <4>[  254.192504]   _raw_spin_lock+0x2a/0x40
    <4>[  254.192519]   cmos_interrupt+0x18/0x100
    <4>[  254.192536]   rtc_handler+0x1f/0xc0
    <4>[  254.192553]   acpi_ev_fixed_event_detect+0x109/0x13c
    <4>[  254.192574]   acpi_ev_sci_xrupt_handler+0xb/0x28
    <4>[  254.192596]   acpi_irq+0x13/0x30
    <4>[  254.192620]   __handle_irq_event_percpu+0x43/0x2c0
    <4>[  254.192641]   handle_irq_event_percpu+0x2b/0x70
    <4>[  254.192661]   handle_irq_event+0x2f/0x50
    <4>[  254.192680]   handle_fasteoi_irq+0x9e/0x150
    <4>[  254.192693]   __common_interrupt+0x76/0x140
    <4>[  254.192715]   common_interrupt+0x96/0xc0
    <4>[  254.192732]   asm_common_interrupt+0x1e/0x40
    <4>[  254.192750]   _raw_spin_unlock_irqrestore+0x38/0x60
    <4>[  254.192767]   resume_irqs+0xba/0xf0
    <4>[  254.192786]   dpm_resume_noirq+0x245/0x3d0
    <4>[  254.192811]   suspend_devices_and_enter+0x230/0xaa0
    <4>[  254.192835]   pm_suspend.cold.8+0x301/0x34a
    <4>[  254.192859]   state_store+0x7b/0xe0
    <4>[  254.192879]   kernfs_fop_write_iter+0x11d/0x1c0
    <4>[  254.192899]   new_sync_write+0x11d/0x1b0
    <4>[  254.192916]   vfs_write+0x265/0x390
    <4>[  254.192933]   ksys_write+0x5a/0xd0
    <4>[  254.192949]   do_syscall_64+0x33/0x80
    <4>[  254.192965]   entry_SYSCALL_64_after_hwframe+0x44/0xae
    <4>[  254.192986] irq event stamp: 43775
    <4>[  254.192994] hardirqs last  enabled at (43775): [<ffffffff81c00c42>] asm_sysvec_apic_timer_interrupt+0x12/0x20
    <4>[  254.193023] hardirqs last disabled at (43774): [<ffffffff81aa691a>] sysvec_apic_timer_interrupt+0xa/0xb0
    <4>[  254.193049] softirqs last  enabled at (42548): [<ffffffff81e00342>] __do_softirq+0x342/0x48e
    <4>[  254.193074] softirqs last disabled at (42543): [<ffffffff810b45fd>] irq_exit_rcu+0xad/0xd0
    <4>[  254.193101]
                      other info that might help us debug this:
    <4>[  254.193107]  Possible unsafe locking scenario:
    
    <4>[  254.193112]        CPU0
    <4>[  254.193117]        ----
    <4>[  254.193121]   lock(rtc_lock);
    <4>[  254.193137]   <Interrupt>
    <4>[  254.193142]     lock(rtc_lock);
    <4>[  254.193156]
                       *** DEADLOCK ***
    
    <4>[  254.193161] 6 locks held by rtcwake/5309:
    <4>[  254.193174]  #0: ffff888104861430 (sb_writers#5){.+.+}-{0:0}, at: ksys_write+0x5a/0xd0
    <4>[  254.193232]  #1: ffff88810f823288 (&of->mutex){+.+.}-{3:3}, at: kernfs_fop_write_iter+0xe7/0x1c0
    <4>[  254.193282]  #2: ffff888100cef3c0 (kn->active#285
    <7>[  254.192706] i915 0000:00:02.0: [drm:intel_modeset_setup_hw_state [i915]] [CRTC:51:pipe A] hw state readout: disabled
    <4>[  254.193307] ){.+.+}-{0:0}, at: kernfs_fop_write_iter+0xf0/0x1c0
    <4>[  254.193333]  #3: ffffffff82649fa8 (system_transition_mutex){+.+.}-{3:3}, at: pm_suspend.cold.8+0xce/0x34a
    <4>[  254.193387]  #4: ffffffff827a2108 (acpi_scan_lock){+.+.}-{3:3}, at: acpi_suspend_begin+0x47/0x70
    <4>[  254.193433]  #5: ffff8881019ea178 (&dev->mutex){....}-{3:3}, at: device_resume+0x68/0x1e0
    <4>[  254.193485]
                      stack backtrace:
    <4>[  254.193492] CPU: 1 PID: 5309 Comm: rtcwake Not tainted 5.12.0-rc1-CI-CI_DRM_9834+ #1
    <4>[  254.193514] Hardware name: Google Soraka/Soraka, BIOS MrChromebox-4.10 08/25/2019
    <4>[  254.193524] Call Trace:
    <4>[  254.193536]  dump_stack+0x7f/0xad
    <4>[  254.193567]  mark_lock.part.47+0x8ca/0xce0
    <4>[  254.193604]  __lock_acquire+0x39b/0x2590
    <4>[  254.193626]  ? asm_sysvec_apic_timer_interrupt+0x12/0x20
    <4>[  254.193660]  lock_acquire+0xd1/0x3d0
    <4>[  254.193677]  ? cmos_interrupt+0x18/0x100
    <4>[  254.193716]  _raw_spin_lock+0x2a/0x40
    <4>[  254.193735]  ? cmos_interrupt+0x18/0x100
    <4>[  254.193758]  cmos_interrupt+0x18/0x100
    <4>[  254.193785]  cmos_resume+0x2ac/0x2d0
    <4>[  254.193813]  ? acpi_pm_set_device_wakeup+0x1f/0x110
    <4>[  254.193842]  ? pnp_bus_suspend+0x10/0x10
    <4>[  254.193864]  pnp_bus_resume+0x5e/0x90
    <4>[  254.193885]  dpm_run_callback+0x5f/0x240
    <4>[  254.193914]  device_resume+0xb2/0x1e0
    <4>[  254.193942]  ? pm_dev_err+0x25/0x25
    <4>[  254.193974]  dpm_resume+0xea/0x3f0
    <4>[  254.194005]  dpm_resume_end+0x8/0x10
    <4>[  254.194030]  suspend_devices_and_enter+0x29b/0xaa0
    <4>[  254.194066]  pm_suspend.cold.8+0x301/0x34a
    <4>[  254.194094]  state_store+0x7b/0xe0
    <4>[  254.194124]  kernfs_fop_write_iter+0x11d/0x1c0
    <4>[  254.194151]  new_sync_write+0x11d/0x1b0
    <4>[  254.194183]  vfs_write+0x265/0x390
    <4>[  254.194207]  ksys_write+0x5a/0xd0
    <4>[  254.194232]  do_syscall_64+0x33/0x80
    <4>[  254.194251]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    <4>[  254.194274] RIP: 0033:0x7f07d79691e7
    <4>[  254.194293] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24
    <4>[  254.194312] RSP: 002b:00007ffd9cc2c768 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    <4>[  254.194337] RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007f07d79691e7
    <4>[  254.194352] RDX: 0000000000000004 RSI: 0000556ebfc63590 RDI: 000000000000000b
    <4>[  254.194366] RBP: 0000556ebfc63590 R08: 0000000000000000 R09: 0000000000000004
    <4>[  254.194379] R10: 0000556ebf0ec2a6 R11: 0000000000000246 R12: 0000000000000004
    
    which breaks S3-resume on fi-kbl-soraka presumably as that's slow enough
    to trigger the alarm during the suspend.
    
    Fixes: 6950d046eb6e ("rtc: cmos: Replace spin_lock_irqsave with spin_lock in hard IRQ")
    References: 66e4f4a9cc38 ("rtc: cmos: Use spin_lock_irqsave() in cmos_interrupt()"):
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Xiaofei Tan <tanxiaofei@huawei.com>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20210305122140.28774-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc9299c5270f83afcebaef99e6da5594335fe534
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Apr 28 23:31:24 2020 +0200

    drm/rockchip: cdn-dp-core: Make cdn_dp_core_resume __maybe_unused
    
    commit 040b8907ccf1c78d020aca29800036565d761d73 upstream.
    
    With the new static annotation, the compiler warns when the functions
    are actually unused:
    
       drivers/gpu/drm/rockchip/cdn-dp-core.c:1123:12: error: 'cdn_dp_resume' defined but not used [-Werror=unused-function]
        1123 | static int cdn_dp_resume(struct device *dev)
             |            ^~~~~~~~~~~~~
    
    Mark them __maybe_unused to suppress that warning as well.
    
    [ Not so 'new' static annotations any more, and I removed the part of
      the patch that added __maybe_unused to cdn_dp_suspend(), because it's
      used by the shutdown/remove code.
    
      So only the resume function ends up possibly unused if CONFIG_PM isn't
      set     - Linus ]
    
    Fixes: 7c49abb4c2f8 ("drm/rockchip: cdn-dp-core: Make cdn_dp_core_suspend/resume static")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2926d3827105969d9939a9ba3ef0a9432b8c8e89
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Mon Sep 13 16:28:52 2021 +0700

    tipc: increase timeout in tipc_sk_enqueue()
    
    commit f4bb62e64c88c93060c051195d3bbba804e56945 upstream.
    
    In tipc_sk_enqueue() we use hardcoded 2 jiffies to extract
    socket buffer from generic queue to particular socket.
    The 2 jiffies is too short in case there are other high priority
    tasks get CPU cycles for multiple jiffies update. As result, no
    buffer could be enqueued to particular socket.
    
    To solve this, we switch to use constant timeout 20msecs.
    Then, the function will be expired between 2 jiffies (CONFIG_100HZ)
    and 20 jiffies (CONFIG_1000HZ).
    
    Fixes: c637c1035534 ("tipc: resolve race problem at unicast message reception")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3433e7d135de217fa10cb15a6ddb22d899e98ebd
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Sep 9 10:33:28 2021 -0700

    r6040: Restore MDIO clock frequency after MAC reset
    
    commit e3f0cc1a945fcefec0c7c9d9dfd028a51daa1846 upstream.
    
    A number of users have reported that they were not able to get the PHY
    to successfully link up, especially after commit c36757eb9dee ("net:
    phy: consider AN_RESTART status when reading link status") where we
    stopped reading just BMSR, but we also read BMCR to determine the link
    status.
    
    Andrius at NetBSD did a wonderful job at debugging the problem
    and found out that the MDIO bus clock frequency would be incorrectly set
    back to its default value which would prevent the MDIO bus controller
    from reading PHY registers properly. Back when we only read BMSR, if we
    read all 1s, we could falsely indicate a link status, though in general
    there is a cable plugged in, so this went unnoticed. After a second read
    of BMCR was added, a wrong read will lead to the inability to determine
    a link UP condition which is when it started to be visibly broken, even
    if it was long before that.
    
    The fix consists in restoring the value of the MD_CSR register that was
    set prior to the MAC reset.
    
    Link: http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=53494
    Fixes: 90f750a81a29 ("r6040: consolidate MAC reset to its own function")
    Reported-by: Andrius V <vezhlys@gmail.com>
    Reported-by: Darek Strugacz <darek.strugacz@op.pl>
    Tested-by: Darek Strugacz <darek.strugacz@op.pl>
    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 6e4a2519c9120d058096323649d1d33b91a72b31
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Thu Sep 9 12:32:00 2021 +0800

    net/l2tp: Fix reference count leak in l2tp_udp_recv_core
    
    commit 9b6ff7eb666415e1558f1ba8a742f5db6a9954de upstream.
    
    The reference count leak issue may take place in an error handling
    path. If both conditions of tunnel->version == L2TP_HDR_VER_3 and the
    return value of l2tp_v3_ensure_opt_in_linear is nonzero, the function
    would directly jump to label invalid, without decrementing the reference
    count of the l2tp_session object session increased earlier by
    l2tp_tunnel_get_session(). This may result in refcount leaks.
    
    Fix this issue by decrease the reference count before jumping to the
    label invalid.
    
    Fixes: 4522a70db7aa ("l2tp: fix reading optional fields of L2TPv3")
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51f7b364a2d120cea956b2bb5ccaad29bbf8abce
Author: Lin, Zhenpeng <zplin@psu.edu>
Date:   Wed Sep 8 03:40:59 2021 +0000

    dccp: don't duplicate ccid when cloning dccp sock
    
    commit d9ea761fdd197351890418acd462c51f241014a7 upstream.
    
    Commit 2677d2067731 ("dccp: don't free ccid2_hc_tx_sock ...") fixed
    a UAF but reintroduced CVE-2017-6074.
    
    When the sock is cloned, two dccps_hc_tx_ccid will reference to the
    same ccid. So one can free the ccid object twice from two socks after
    cloning.
    
    This issue was found by "Hadar Manor" as well and assigned with
    CVE-2020-16119, which was fixed in Ubuntu's kernel. So here I port
    the patch from Ubuntu to fix it.
    
    The patch prevents cloned socks from referencing the same ccid.
    
    Fixes: 2677d2067731410 ("dccp: don't free ccid2_hc_tx_sock ...")
    Signed-off-by: Zhenpeng Lin <zplin@psu.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e811a5c96fa3113417e095d77e49b33bb16a509
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Sep 13 15:06:05 2021 -0700

    ptp: dp83640: don't define PAGE0
    
    commit 7366c23ff492ad260776a3ee1aaabba9fc773a8b upstream.
    
    Building dp83640.c on arch/parisc/ produces a build warning for
    PAGE0 being redefined. Since the macro is not used in the dp83640
    driver, just make it a comment for documentation purposes.
    
    In file included from ../drivers/net/phy/dp83640.c:23:
    ../drivers/net/phy/dp83640_reg.h:8: warning: "PAGE0" redefined
        8 | #define PAGE0                     0x0000
                     from ../drivers/net/phy/dp83640.c:11:
    ../arch/parisc/include/asm/page.h:187: note: this is the location of the previous definition
      187 | #define PAGE0   ((struct zeropage *)__PAGE_OFFSET)
    
    Fixes: cb646e2b02b2 ("ptp: Added a clock driver for the National Semiconductor PHYTER.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Richard Cochran <richard.cochran@omicron.at>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20210913220605.19682-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ac80ef7cc411c8db08fc67858e90f34a2421826
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Sep 13 11:08:36 2021 -0700

    net-caif: avoid user-triggerable WARN_ON(1)
    
    commit 550ac9c1aaaaf51fd42e20d461f0b1cdbd55b3d2 upstream.
    
    syszbot triggers this warning, which looks something
    we can easily prevent.
    
    If we initialize priv->list_field in chnl_net_init(),
    then always use list_del_init(), we can remove robust_list_del()
    completely.
    
    WARNING: CPU: 0 PID: 3233 at net/caif/chnl_net.c:67 robust_list_del net/caif/chnl_net.c:67 [inline]
    WARNING: CPU: 0 PID: 3233 at net/caif/chnl_net.c:67 chnl_net_uninit+0xc9/0x2e0 net/caif/chnl_net.c:375
    Modules linked in:
    CPU: 0 PID: 3233 Comm: syz-executor.3 Not tainted 5.14.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:robust_list_del net/caif/chnl_net.c:67 [inline]
    RIP: 0010:chnl_net_uninit+0xc9/0x2e0 net/caif/chnl_net.c:375
    Code: 89 eb e8 3a a3 ba f8 48 89 d8 48 c1 e8 03 42 80 3c 28 00 0f 85 bf 01 00 00 48 81 fb 00 14 4e 8d 48 8b 2b 75 d0 e8 17 a3 ba f8 <0f> 0b 5b 5d 41 5c 41 5d e9 0a a3 ba f8 4c 89 e3 e8 02 a3 ba f8 4c
    RSP: 0018:ffffc90009067248 EFLAGS: 00010202
    RAX: 0000000000008780 RBX: ffffffff8d4e1400 RCX: ffffc9000fd34000
    RDX: 0000000000040000 RSI: ffffffff88bb6e49 RDI: 0000000000000003
    RBP: ffff88802cd9ee08 R08: 0000000000000000 R09: ffffffff8d0e6647
    R10: ffffffff88bb6dc2 R11: 0000000000000000 R12: ffff88803791ae08
    R13: dffffc0000000000 R14: 00000000e600ffce R15: ffff888073ed3480
    FS:  00007fed10fa0700(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2c322000 CR3: 00000000164a6000 CR4: 00000000001506e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     register_netdevice+0xadf/0x1500 net/core/dev.c:10347
     ipcaif_newlink+0x4c/0x260 net/caif/chnl_net.c:468
     __rtnl_newlink+0x106d/0x1750 net/core/rtnetlink.c:3458
     rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3506
     rtnetlink_rcv_msg+0x413/0xb80 net/core/rtnetlink.c:5572
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2504
     netlink_unicast_kernel net/netlink/af_netlink.c:1314 [inline]
     netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1340
     netlink_sendmsg+0x86d/0xdb0 net/netlink/af_netlink.c:1929
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:724
     __sys_sendto+0x21c/0x320 net/socket.c:2036
     __do_sys_sendto net/socket.c:2048 [inline]
     __se_sys_sendto net/socket.c:2044 [inline]
     __x64_sys_sendto+0xdd/0x1b0 net/socket.c:2044
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Fixes: cc36a070b590 ("net-caif: add CAIF netdevice")
    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 1f2f637b31e5aa0a6b7ac58ccc52576255ef45d9
Author: Eli Cohen <elic@nvidia.com>
Date:   Wed Sep 15 07:47:27 2021 +0300

    net/{mlx5|nfp|bnxt}: Remove unnecessary RTNL lock assert
    
    commit 7c3a0a018e672a9723a79b128227272562300055 upstream.
    
    Remove the assert from the callback priv lookup function since it does
    not require RTNL lock and is already protected by flow_indr_block_lock.
    
    This will avoid warnings from being emitted to dmesg if the driver
    registers its callback after an ingress qdisc was created for a
    netdevice.
    
    The warnings started after the following patch was merged:
    commit 74fc4f828769 ("net: Fix offloading indirect devices dependency on qdisc order creation")
    
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2db1c64f2ce28b4d7134695f1a874d005d805bb
Author: 王贇 <yun.wang@linux.alibaba.com>
Date:   Fri Sep 3 10:27:18 2021 +0800

    net: remove the unnecessary check in cipso_v4_doi_free
    
    commit 9756e44fd4d283ebcc94df353642f322428b73de upstream.
    
    The commit 733c99ee8be9 ("net: fix NULL pointer reference in
    cipso_v4_doi_free") was merged by a mistake, this patch try
    to cleanup the mess.
    
    And we already have the commit e842cb60e8ac ("net: fix NULL
    pointer reference in cipso_v4_doi_free") which fixed the root
    cause of the issue mentioned in it's description.
    
    Suggested-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Michael Wang <yun.wang@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35ee11c8f438b973f81aea48dc5012ed838b6795
Author: Saeed Mahameed <saeedm@nvidia.com>
Date:   Mon Jul 26 15:15:39 2021 -0700

    ethtool: Fix rxnfc copy to user buffer overflow
    
    commit 9b29a161ef38040f000dcf9ccf78e34495edfd55 upstream.
    
    In the cited commit, copy_to_user() got called with the wrong pointer,
    instead of passing the actual buffer ptr to copy from, a pointer to
    the pointer got passed, which causes a buffer overflow calltrace to pop
    up when executing "ethtool -x ethX".
    
    Fix ethtool_rxnfc_copy_to_user() to use the rxnfc pointer as passed
    to the function, instead of a pointer to it.
    
    This fixes below call trace:
    [   15.533533] ------------[ cut here ]------------
    [   15.539007] Buffer overflow detected (8 < 192)!
    [   15.544110] WARNING: CPU: 3 PID: 1801 at include/linux/thread_info.h:200 copy_overflow+0x15/0x20
    [   15.549308] Modules linked in:
    [   15.551449] CPU: 3 PID: 1801 Comm: ethtool Not tainted 5.14.0-rc2+ #1058
    [   15.553919] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    [   15.558378] RIP: 0010:copy_overflow+0x15/0x20
    [   15.560648] Code: e9 7c ff ff ff b8 a1 ff ff ff eb c4 66 0f 1f 84 00 00 00 00 00 55 48 89 f2 89 fe 48 c7 c7 88 55 78 8a 48 89 e5 e8 06 5c 1e 00 <0f> 0b 5d c3 0f 1f 80 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55
    [   15.565114] RSP: 0018:ffffad49c0523bd0 EFLAGS: 00010286
    [   15.566231] RAX: 0000000000000000 RBX: 00000000000000c0 RCX: 0000000000000000
    [   15.567616] RDX: 0000000000000001 RSI: ffffffff8a7912e7 RDI: 00000000ffffffff
    [   15.569050] RBP: ffffad49c0523bd0 R08: ffffffff8ab2ae28 R09: 00000000ffffdfff
    [   15.570534] R10: ffffffff8aa4ae40 R11: ffffffff8aa4ae40 R12: 0000000000000000
    [   15.571899] R13: 00007ffd4cc2a230 R14: ffffad49c0523c00 R15: 0000000000000000
    [   15.573584] FS:  00007f538112f740(0000) GS:ffff96d5bdd80000(0000) knlGS:0000000000000000
    [   15.575639] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   15.577092] CR2: 00007f5381226d40 CR3: 0000000013542000 CR4: 00000000001506e0
    [   15.578929] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   15.580695] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   15.582441] Call Trace:
    [   15.582970]  ethtool_rxnfc_copy_to_user+0x30/0x46
    [   15.583815]  ethtool_get_rxnfc.cold+0x23/0x2b
    [   15.584584]  dev_ethtool+0x29c/0x25f0
    [   15.585286]  ? security_netlbl_sid_to_secattr+0x77/0xd0
    [   15.586728]  ? do_set_pte+0xc4/0x110
    [   15.587349]  ? _raw_spin_unlock+0x18/0x30
    [   15.588118]  ? __might_sleep+0x49/0x80
    [   15.588956]  dev_ioctl+0x2c1/0x490
    [   15.589616]  sock_ioctl+0x18e/0x330
    [   15.591143]  __x64_sys_ioctl+0x41c/0x990
    [   15.591823]  ? irqentry_exit_to_user_mode+0x9/0x20
    [   15.592657]  ? irqentry_exit+0x33/0x40
    [   15.593308]  ? exc_page_fault+0x32f/0x770
    [   15.593877]  ? exit_to_user_mode_prepare+0x3c/0x130
    [   15.594775]  do_syscall_64+0x35/0x80
    [   15.595397]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [   15.596037] RIP: 0033:0x7f5381226d4b
    [   15.596492] Code: 0f 1e fa 48 8b 05 3d b1 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 0d b1 0c 00 f7 d8 64 89 01 48
    [   15.598743] RSP: 002b:00007ffd4cc2a1f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [   15.599804] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5381226d4b
    [   15.600795] RDX: 00007ffd4cc2a350 RSI: 0000000000008946 RDI: 0000000000000003
    [   15.601712] RBP: 00007ffd4cc2a340 R08: 00007ffd4cc2a350 R09: 0000000000000001
    [   15.602751] R10: 00007f538128a990 R11: 0000000000000246 R12: 0000000000000000
    [   15.603882] R13: 00007ffd4cc2a350 R14: 00007ffd4cc2a4b0 R15: 0000000000000000
    [   15.605042] ---[ end trace 325cf185e2795048 ]---
    
    Fixes: dd98d2895de6 ("ethtool: improve compat ioctl handling")
    Reported-by: Shannon Nelson <snelson@pensando.io>
    CC: Arnd Bergmann <arnd@arndb.de>
    CC: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Tested-by: Shannon Nelson <snelson@pensando.io>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba099fe50c0aeb682382facbefc5d6aaa83e7226
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Jul 23 13:25:36 2021 -0400

    tipc: fix an use-after-free issue in tipc_recvmsg
    
    commit cc19862ffe454a5b632ca202e5a51bfec9f89fd2 upstream.
    
    syzbot reported an use-after-free crash:
    
      BUG: KASAN: use-after-free in tipc_recvmsg+0xf77/0xf90 net/tipc/socket.c:1979
      Call Trace:
       tipc_recvmsg+0xf77/0xf90 net/tipc/socket.c:1979
       sock_recvmsg_nosec net/socket.c:943 [inline]
       sock_recvmsg net/socket.c:961 [inline]
       sock_recvmsg+0xca/0x110 net/socket.c:957
       tipc_conn_rcv_from_sock+0x162/0x2f0 net/tipc/topsrv.c:398
       tipc_conn_recv_work+0xeb/0x190 net/tipc/topsrv.c:421
       process_one_work+0x98d/0x1630 kernel/workqueue.c:2276
       worker_thread+0x658/0x11f0 kernel/workqueue.c:2422
    
    As Hoang pointed out, it was caused by skb_cb->bytes_read still accessed
    after calling tsk_advance_rx_queue() to free the skb in tipc_recvmsg().
    
    This patch is to fix it by accessing skb_cb->bytes_read earlier than
    calling tsk_advance_rx_queue().
    
    Fixes: f4919ff59c28 ("tipc: keep the skb in rcv queue until the whole data is read")
    Reported-by: syzbot+e6741b97d5552f97c24d@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54089df947b045dc935cd9b88a9339f94fbbf6f9
Author: Tony Luck <tony.luck@intel.com>
Date:   Mon Sep 13 14:52:39 2021 -0700

    x86/mce: Avoid infinite loop for copy from user recovery
    
    commit 81065b35e2486c024c7aa86caed452e1f01a59d4 upstream.
    
    There are two cases for machine check recovery:
    
    1) The machine check was triggered by ring3 (application) code.
       This is the simpler case. The machine check handler simply queues
       work to be executed on return to user. That code unmaps the page
       from all users and arranges to send a SIGBUS to the task that
       triggered the poison.
    
    2) The machine check was triggered in kernel code that is covered by
       an exception table entry. In this case the machine check handler
       still queues a work entry to unmap the page, etc. but this will
       not be called right away because the #MC handler returns to the
       fix up code address in the exception table entry.
    
    Problems occur if the kernel triggers another machine check before the
    return to user processes the first queued work item.
    
    Specifically, the work is queued using the ->mce_kill_me callback
    structure in the task struct for the current thread. Attempting to queue
    a second work item using this same callback results in a loop in the
    linked list of work functions to call. So when the kernel does return to
    user, it enters an infinite loop processing the same entry for ever.
    
    There are some legitimate scenarios where the kernel may take a second
    machine check before returning to the user.
    
    1) Some code (e.g. futex) first tries a get_user() with page faults
       disabled. If this fails, the code retries with page faults enabled
       expecting that this will resolve the page fault.
    
    2) Copy from user code retries a copy in byte-at-time mode to check
       whether any additional bytes can be copied.
    
    On the other side of the fence are some bad drivers that do not check
    the return value from individual get_user() calls and may access
    multiple user addresses without noticing that some/all calls have
    failed.
    
    Fix by adding a counter (current->mce_count) to keep track of repeated
    machine checks before task_work() is called. First machine check saves
    the address information and calls task_work_add(). Subsequent machine
    checks before that task_work call back is executed check that the address
    is in the same page as the first machine check (since the callback will
    offline exactly one page).
    
    Expected worst case is four machine checks before moving on (e.g. one
    user access with page faults disabled, then a repeat to the same address
    with page faults enabled ... repeat in copy tail bytes). Just in case
    there is some code that loops forever enforce a limit of 10.
    
     [ bp: Massage commit message, drop noinstr, fix typo, extend panic
       messages. ]
    
    Fixes: 5567d11c21a1 ("x86/mce: Send #MC singal from task work")
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/YT/IJ9ziLqmtqEPu@agluck-desk2.amr.corp.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6d35beff5d443c13e16d89967c24c200b648019
Author: Mike Rapoport <rppt@kernel.org>
Date:   Thu Aug 19 16:27:17 2021 +0300

    x86/mm: Fix kern_addr_valid() to cope with existing but not present entries
    
    commit 34b1999da935a33be6239226bfa6cd4f704c5c88 upstream.
    
    Jiri Olsa reported a fault when running:
    
      # cat /proc/kallsyms | grep ksys_read
      ffffffff8136d580 T ksys_read
      # objdump -d --start-address=0xffffffff8136d580 --stop-address=0xffffffff8136d590 /proc/kcore
    
      /proc/kcore:     file format elf64-x86-64
    
      Segmentation fault
    
      general protection fault, probably for non-canonical address 0xf887ffcbff000: 0000 [#1] SMP PTI
      CPU: 12 PID: 1079 Comm: objdump Not tainted 5.14.0-rc5qemu+ #508
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-4.fc34 04/01/2014
      RIP: 0010:kern_addr_valid
      Call Trace:
       read_kcore
       ? rcu_read_lock_sched_held
       ? rcu_read_lock_sched_held
       ? rcu_read_lock_sched_held
       ? trace_hardirqs_on
       ? rcu_read_lock_sched_held
       ? lock_acquire
       ? lock_acquire
       ? rcu_read_lock_sched_held
       ? lock_acquire
       ? rcu_read_lock_sched_held
       ? rcu_read_lock_sched_held
       ? rcu_read_lock_sched_held
       ? lock_release
       ? _raw_spin_unlock
       ? __handle_mm_fault
       ? rcu_read_lock_sched_held
       ? lock_acquire
       ? rcu_read_lock_sched_held
       ? lock_release
       proc_reg_read
       ? vfs_read
       vfs_read
       ksys_read
       do_syscall_64
       entry_SYSCALL_64_after_hwframe
    
    The fault happens because kern_addr_valid() dereferences existent but not
    present PMD in the high kernel mappings.
    
    Such PMDs are created when free_kernel_image_pages() frees regions larger
    than 2Mb. In this case, a part of the freed memory is mapped with PMDs and
    the set_memory_np_noalias() -> ... -> __change_page_attr() sequence will
    mark the PMD as not present rather than wipe it completely.
    
    Have kern_addr_valid() check whether higher level page table entries are
    present before trying to dereference them to fix this issue and to avoid
    similar issues in the future.
    
    Stable backporting note:
    ------------------------
    
    Note that the stable marking is for all active stable branches because
    there could be cases where pagetable entries exist but are not valid -
    see 9a14aefc1d28 ("x86: cpa, fix lookup_address"), for example. So make
    sure to be on the safe side here and use pXY_present() accessors rather
    than pXY_none() which could #GP when accessing pages in the direct map.
    
    Also see:
    
      c40a56a7818c ("x86/mm/init: Remove freed kernel image areas from alias mapping")
    
    for more info.
    
    Reported-by: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Acked-by: Dave Hansen <dave.hansen@intel.com>
    Tested-by: Jiri Olsa <jolsa@redhat.com>
    Cc: <stable@vger.kernel.org>    # 4.4+
    Link: https://lkml.kernel.org/r/20210819132717.19358-1-rppt@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 388e1fd62e8cce1dd4e0f842b766a86b57235f06
Author: Jeff Moyer <jmoyer@redhat.com>
Date:   Wed Aug 11 17:07:37 2021 -0400

    x86/pat: Pass valid address to sanitize_phys()
    
    commit aeef8b5089b76852bd84889f2809e69a7cfb414e upstream.
    
    The end address passed to memtype_reserve() is handed directly to
    sanitize_phys().  However, end is exclusive and sanitize_phys() expects
    an inclusive address.  If end falls at the end of the physical address
    space, sanitize_phys() will return 0.  This can result in drivers
    failing to load, and the following warning:
    
     WARNING: CPU: 26 PID: 749 at arch/x86/mm/pat.c:354 reserve_memtype+0x262/0x450
     reserve_memtype failed: [mem 0x3ffffff00000-0xffffffffffffffff], req uncached-minus
     Call Trace:
      [<ffffffffa427b1f2>] reserve_memtype+0x262/0x450
      [<ffffffffa42764aa>] ioremap_nocache+0x1a/0x20
      [<ffffffffc04620a1>] mpt3sas_base_map_resources+0x151/0xa60 [mpt3sas]
      [<ffffffffc0465555>] mpt3sas_base_attach+0xf5/0xa50 [mpt3sas]
     ---[ end trace 6d6eea4438db89ef ]---
     ioremap reserve_memtype failed -22
     mpt3sas_cm0: unable to map adapter memory! or resource not found
     mpt3sas_cm0: failure at drivers/scsi/mpt3sas/mpt3sas_scsih.c:10597/_scsih_probe()!
    
    Fix this by passing the inclusive end address to sanitize_phys().
    
    Fixes: 510ee090abc3 ("x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses")
    Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/x49o8a3pu5i.fsf@segfault.boston.devel.redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ed2d5e30cf4ba563e76b80e342058728f510306
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Sep 2 13:08:51 2021 +0300

    net: qrtr: revert check in qrtr_endpoint_post()
    
    commit d2cabd2dc8da78faf9b690ea521d03776686c9fe upstream.
    
    I tried to make this check stricter as a hardenning measure but it broke
    audo and wifi on these devices so revert it.
    
    Fixes: aaa8e4922c88 ("net: qrtr: make checks in qrtr_endpoint_post() stricter")
    Reported-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2aeb3cfb82ae679cdd4504a349d302fb8fd1cc42
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Thu Sep 9 12:20:56 2021 +0200

    s390/sclp: fix Secure-IPL facility detection
    
    commit d76b14f3971a0638b6cd0da289f8b48acee287d0 upstream.
    
    Prevent out-of-range access if the returned SCLP SCCB response is smaller
    in size than the address of the Secure-IPL flag.
    
    Fixes: c9896acc7851 ("s390/ipl: Provide has_secure sysfs attribute")
    Cc: stable@vger.kernel.org # 5.2+
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3405e0d5e4a3cdfd9baab5cef5b0d589dfbc3ea6
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:30 2021 +0200

    drm/etnaviv: add missing MMU context put when reaping MMU mapping
    
    commit f2faea8b64125852fa9acc6771c07fc0311a039b upstream.
    
    When we forcefully evict a mapping from the the address space and thus the
    MMU context, the MMU context is leaked, as the mapping no longer points to
    it, so it doesn't get freed when the GEM object is destroyed. Add the
    mssing context put to fix the leak.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac533196011bb08e25bcd56ffc8b698bc7ec8593
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:29 2021 +0200

    drm/etnaviv: reference MMU context when setting up hardware state
    
    commit d6408538f091fb22d47f792d4efa58143d56c3fb upstream.
    
    Move the refcount manipulation of the MMU context to the point where the
    hardware state is programmed. At that point it is also known if a previous
    MMU state is still there, or the state needs to be reprogrammed with a
    potentially different context.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e8cfbab6c8b4021b6f643922c61e803c8adb1ed
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:28 2021 +0200

    drm/etnaviv: fix MMU context leak on GPU reset
    
    commit f978a5302f5566480c58ffae64a16d34456801bd upstream.
    
    After a reset the GPU is no longer using the MMU context and may be
    restarted with a different context. While the mmu_state proeprly was
    cleared, the context wasn't unreferenced, leading to a memory leak.
    
    Cc: stable@vger.kernel.org # 5.4
    Reported-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ad4e5f3f20ab1b76b7d12cb89311f74c8e24df5
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:27 2021 +0200

    drm/etnaviv: exec and MMU state is lost when resetting the GPU
    
    commit 725cbc7884c37f3b4f1777bc1aea6432cded8ca5 upstream.
    
    When the GPU is reset both the current exec state, as well as all MMU
    state is lost. Move the driver side state tracking into the reset function
    to keep hardware and software state from diverging.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c80772895cc0b4eb6480d5354ec0093ca317d4e3
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:26 2021 +0200

    drm/etnaviv: keep MMU context across runtime suspend/resume
    
    commit 8f3eea9d01d7b0f95b0fe04187c0059019ada85b upstream.
    
    The MMU state may be kept across a runtime suspend/resume cycle, as we
    avoid a full hardware reset to keep the latency of the runtime PM small.
    
    Don't pretend that the MMU state is lost in driver state. The MMU
    context is pushed out when new HW jobs with a different context are
    coming in. The only exception to this is when the GPU is unbound, in
    which case we need to make sure to also free the last active context.
    
    Cc: stable@vger.kernel.org # 5.4
    Reported-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18e0930dd77686616cff2ebb242e893227121267
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:25 2021 +0200

    drm/etnaviv: stop abusing mmu_context as FE running marker
    
    commit 23e0f5a57d0ecec86e1fc82194acd94aede21a46 upstream.
    
    While the DMA frontend can only be active when the MMU context is set, the
    reverse isn't necessarily true, as the frontend can be stopped while the
    MMU state is kept. Stop treating mmu_context being set as a indication that
    the frontend is running and instead add a explicit property.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d73f98558f4a298ae4a23be49574332ab20c85a6
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:24 2021 +0200

    drm/etnaviv: put submit prev MMU context when it exists
    
    commit cda7532916f7bc860b36a1806cb8352e6f63dacb upstream.
    
    The prev context is the MMU context at the time of the job
    queueing in hardware. As a job might be queued multiple times
    due to recovery after a GPU hang, we need to make sure to put
    the stale prev MMU context from a prior queuing, to avoid the
    reference and thus the MMU context leaking.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ea21946ba7b9ec0e170bac9083abbce6dba792c
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Aug 20 22:18:23 2021 +0200

    drm/etnaviv: return context from etnaviv_iommu_context_get
    
    commit 78edefc05e41352099ffb8f06f8d9b2d091e29cd upstream.
    
    Being able to have the refcount manipulation in an assignment makes
    it much easier to parse the code.
    
    Cc: stable@vger.kernel.org # 5.4
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Michael Walle <michael@walle.cc>
    Tested-by: Marek Vasut <marex@denx.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc1fd142dcf212b849977ba538b35479f02f416f
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Aug 20 15:52:59 2021 +0800

    drm/i915/dp: Use max params for panels < eDP 1.4
    
    commit c8dead5751b81dfa6b10449b740ed1062ff670c5 upstream.
    
    Users reported that after commit 2bbd6dba84d4 ("drm/i915: Try to use
    fast+narrow link on eDP again and fall back to the old max strategy on
    failure"), the screen starts to have wobbly effect.
    
    Commit a5c936add6a2 ("drm/i915/dp: Use slow and wide link training for
    everything") doesn't help either, that means the affected eDP 1.2 panels
    only work with max params.
    
    So use max params for panels < eDP 1.4 as Windows does to solve the
    issue.
    
    v3:
     - Do the eDP rev check in intel_edp_init_dpcd()
    
    v2:
     - Check eDP 1.4 instead of DPCD 1.1 to apply max params
    
    Cc: stable@vger.kernel.org
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3714
    Fixes: 2bbd6dba84d4 ("drm/i915: Try to use fast+narrow link on eDP again and fall back to the old max strategy on failure")
    Fixes: a5c936add6a2 ("drm/i915/dp: Use slow and wide link training for everything")
    Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210820075301.693099-1-kai.heng.feng@canonical.com
    (cherry picked from commit d7f213c131adf0bec8b731553eb82990cdac265d)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d717dcf122eae5c5d9e4fa4e8ff52b727f3a8173
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Sep 14 11:08:37 2021 -0600

    io_uring: allow retry for O_NONBLOCK if async is supported
    
    commit 5d329e1286b0a040264e239b80257c937f6e685f upstream.
    
    A common complaint is that using O_NONBLOCK files with io_uring can be a
    bit of a pain. Be a bit nicer and allow normal retry IFF the file does
    support async behavior. This makes it possible to use io_uring more
    reliably with O_NONBLOCK files, for use cases where it either isn't
    possible or feasible to modify the file flags.
    
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: Dan Melnic <dmm@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3704a556158e7e3c2010210352a11b6e9a879504
Author: Nirmoy Das <nirmoy.das@amd.com>
Date:   Mon Sep 13 10:08:23 2021 +0200

    drm/radeon: pass drm dev radeon_agp_head_init directly
    
    commit 93def70cf8b23de5049d101b7dd5367864694bd3 upstream.
    
    Pass drm dev directly as rdev->ddev gets initialized later on
    at radeon_device_init().
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=214375
    Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe232886fb710a4bf0532f61ebdb87463a780e7e
Author: James Zhu <James.Zhu@amd.com>
Date:   Tue Sep 7 11:13:02 2021 -0400

    drm/amdkfd: separate kfd_iommu_resume from kfd_resume
    
    commit fefc01f042f44ede373ee66773b8238dd8fdcb55 upstream.
    
    Separate kfd_iommu_resume from kfd_resume for fine-tuning
    of amdgpu device init/resume/reset/recovery sequence.
    
    v2: squash in fix for !CONFIG_HSA_AMD
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=211277
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 815cf7b38a1c0db5e988960c284ca438ca73fec7
Author: Kenneth Feng <kenneth.feng@amd.com>
Date:   Mon Sep 6 07:55:01 2021 +0800

    drm/amd/pm: fix the issue of uploading powerplay table
    
    commit 5598d7c21a0bcab900f281dca4efbb1f80add0fe upstream.
    
    fix the issue of uploading powerplay table due to the dependancy of rlc.
    
    Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
    Reviewed-by: Jack Gui <Jack.Gui@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 413a8644966a9b4709b114bdb102f64f505d57ef
Author: James Zhu <James.Zhu@amd.com>
Date:   Tue Sep 7 11:32:22 2021 -0400

    drm/amdgpu: move iommu_resume before ip init/resume
    
    commit f02abeb0779700c308e661a412451b38962b8a0b upstream.
    
    Separate iommu_resume from kfd_resume, and move it before
    other amdgpu ip init/resume.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=211277
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64ca7170c9b17042dc63828b56681aaea88ca38e
Author: James Zhu <James.Zhu@amd.com>
Date:   Tue Sep 7 11:27:31 2021 -0400

    drm/amdgpu: add amdgpu_amdkfd_resume_iommu
    
    commit 8066008482e533e91934bee49765bf8b4a7c40db upstream.
    
    Add amdgpu_amdkfd_resume_iommu for amdgpu.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=211277
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a0dfd8e2878ac37fe2c3a16a1a6753345d317a2
Author: Christian König <christian.koenig@amd.com>
Date:   Tue Sep 7 09:37:52 2021 +0200

    drm/amdgpu: fix use after free during BO move
    
    commit c92db8d64f9e0313e7ecdc9500db93a5040c9370 upstream.
    
    The memory backing old_mem is already freed at that point, move the
    check a bit more up.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Fixes: bfa3357ef9ab ("drm/ttm: allocate resource object instead of embedding it v2")
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1699
    Acked-by: Nirmoy Das <nirmoy.das@amd.com>
    Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05e7e2d760aa8191dce48718dbe9d187bd3095d0
Author: Nirmoy Das <nirmoy.das@amd.com>
Date:   Thu Sep 2 13:27:56 2021 +0200

    drm/amdgpu: use IS_ERR for debugfs APIs
    
    commit b04ce53eac2fc326290817a6f64a440b5bffd2e3 upstream.
    
    debugfs APIs returns encoded error so use
    IS_ERR for checking return value.
    
    v2: return PTR_ERR(ent)
    
    References: https://gitlab.freedesktop.org/drm/amd/-/issues/1686
    Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Reviewed-By: Shashank Sharma <shashank.sharma@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab55e44ea8dc9d5101b37165cc9f7ec33698b780
Author: Ernst Sjöstrand <ernstp@gmail.com>
Date:   Thu Sep 2 09:50:27 2021 +0200

    drm/amd/amdgpu: Increase HWIP_MAX_INSTANCE to 10
    
    commit 67a44e659888569a133a8f858c8230e9d7aad1d5 upstream.
    
    Seems like newer cards can have even more instances now.
    Found by UBSAN: array-index-out-of-bounds in
    drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:318:29
    index 8 is out of range for type 'uint32_t *[8]'
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1697
    Cc: stable@vger.kernel.org
    Signed-off-by: Ernst Sjöstrand <ernstp@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deeb5db10001376ea623442641fb5245382a6029
Author: Evan Quan <evan.quan@amd.com>
Date:   Thu Sep 9 11:01:00 2021 +0800

    drm/amd/pm: fix runpm hang when amdgpu loaded prior to sound driver
    
    commit 8b514e898ee7f861eb8863c647d258f71053af40 upstream.
    
    Current RUNPM mechanism relies on PMFW to master the timing for BACO
    in/exit. And that needs cooperation from sound driver for dstate
    change notification for function 1(audio). Otherwise(on sound driver
    missing), BACO cannot be kicked in correctly and hang will be observed
    on RUNPM exit.
    
    By switching back to legacy message way on sound driver missing,
    we are able to fix the runpm hang observed for the scenario below:
    amdgpu driver loaded -> runpm suspend kicked -> sound driver loaded
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Reported-and-tested-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05a19da7efcd5940305308d0ddd288503c8a1434
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Mon Sep 13 14:56:44 2021 -0400

    drm/amd/display: Fix white screen page fault for gpuvm
    
    commit a70939851f9ced298dc7d523374b8c4d05239caf upstream.
    
    [Why]
    The "base_addr_is_mc_addr" field was added for dcn3.1 support but
    pa_config was never updated to set it to false.
    
    Uninitialized memory causes it to be set to true which results in
    address mistranslation and white screen.
    
    [How]
    Use memset to ensure all fields are initialized to 0 by default.
    
    Fixes: 64b1d0e8d500 ("drm/amd/display: Add DCN3.1 HWSEQ")
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Acked-by: Aaron Liu <aaron.liu@amd.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6d921d1e88c55d3f941732f3321004ceb9a0196
Author: Hersen Wu <hersenwu@amd.com>
Date:   Wed Aug 25 16:27:47 2021 -0400

    drm/amd/display: dsc mst 2 4K displays go dark with 2 lane HBR3
    
    commit 90517c9838602846daa0feec7b37382fed61b001 upstream.
    
    [Why]
    call stack of amdgpu dsc mst pbn, slot num calculation is as below:
    -compute_bpp_x16_from_target_bandwidth
    -decide_dsc_target_bpp_x16
    -setup_dsc_config
    -dc_dsc_compute_bandwidth_range
    -compute_mst_dsc_configs_for_link
    -compute_mst_dsc_configs_for_state
    
    from pbn -> dsc target bpp_x16
    
    bpp_x16 is calulated by compute_bpp_x16_from_target_bandwidth.
    Beside pixel clock and bpp, num_slices_h and bpp_increment_div
    will also affect bpp_x16.
    
    from dsc target bpp_x16 -> pbn
    
    within dm_update_mst_vcpi_slots_for_dsc,
    pbn = drm_dp_calc_pbn_mode(clock, bpp_x16, true);
    
    drm_dp_calc_pbn_mode(int clock, int bpp, bool dsc)
    {
      return DIV_ROUND_UP_ULL(mul_u32_u32(clock * (bpp / 16), 64 * 1006),
                8 * 54 * 1000 * 1000);
    }
    
    bpp / 16 trunc digits after decimal point. This will cause calculation
    delta. drm_dp_calc_pbn_mode does not have other informations,
    like num_slices_h, bpp_increment_div. therefore, it does not do revese
    calcuation properly from bpp_x16 to pbn.
    
    pbn from drm_dp_calc_pbn_mode is less than pbn from
    compute_mst_dsc_configs_for_state. This cause not enough mst slot
    allocated to display. display could not visually light up.
    
    [How]
    pass pbn from compute_mst_dsc_configs_for_state to
    dm_update_mst_vcpi_slots_for_dsc
    
    Cc: stable@vger.kernel.org
    
    Reviewed-by: Scott Foster <Scott.Foster@amd.com>
    Acked-by: Mikita Lipski <mikita.lipski@amd.com>
    Signed-off-by: Hersen Wu <hersenwu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5548625a7583a76c64a0d55e99481d9a2c8634f
Author: Harry Wentland <harry.wentland@amd.com>
Date:   Mon Aug 16 15:57:12 2021 -0400

    drm/amd/display: Get backlight from PWM if DMCU is not initialized
    
    commit 9987fbb368038d41bfdcda2a3f7f4945d7daa9a5 upstream.
    
    On Carrizo/Stoney systems we set backlight through panel_cntl, i.e.
    directly via the PWM registers, if DMCU is not initialized. We
    always read it back through ABM registers which leads to a
    mismatch and forces atomic_commit to program the backlight
    each time.
    
    Instead make sure we use the same logic for backlight readback,
    i.e. read it from panel_cntl if DMCU is not initialized.
    
    We also need to remove some extraneous and incorrect calculations
    at the end of dce_get_16_bit_backlight_from_pwm.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1666
    Cc: stable@vger.kernel.org
    
    Reviewed-by: Josip Pavic <josip.pavic@amd.com>
    Acked-by: Mikita Lipski <mikita.lipski@amd.com>
    Signed-off-by: Harry Wentland <harry.wentland@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73892cbd7c88b629da1db018e7b3741499ded412
Author: Evan Quan <evan.quan@amd.com>
Date:   Fri Sep 3 14:33:11 2021 +0800

    PCI: Add AMD GPU multi-function power dependencies
    
    commit 60b78ed088ebe1a872ee1320b6c5ad6ee2c4bd9a upstream.
    
    Some AMD GPUs have built-in USB xHCI and USB Type-C UCSI controllers with
    power dependencies between the GPU and the other functions as in
    6d2e369f0d4c ("PCI: Add NVIDIA GPU multi-function power dependencies").
    
    Add device link support for the AMD integrated USB xHCI and USB Type-C UCSI
    controllers.
    
    Without this, runtime power management, including GPU resume and temp and
    fan sensors don't work correctly.
    
    Reported-at: https://gitlab.freedesktop.org/drm/amd/-/issues/1704
    Link: https://lore.kernel.org/r/20210903063311.3606226-1-evan.quan@amd.com
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b4547d3ee4667b60f8fdabc532564218008fae3
Author: Juergen Gross <jgross@suse.com>
Date:   Fri Sep 3 10:49:36 2021 +0200

    PM: base: power: don't try to use non-existing RTC for storing data
    
    commit 0560204b360a332c321124dbc5cdfd3364533a74 upstream.
    
    If there is no legacy RTC device, don't try to use it for storing trace
    data across suspend/resume.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Rafael J. Wysocki <rafael@kernel.org>
    Link: https://lore.kernel.org/r/20210903084937.19392-2-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06cd58aa18f2b24999c52f3812294a345ee0d32b
Author: Mark Brown <broonie@kernel.org>
Date:   Thu Sep 9 17:53:56 2021 +0100

    arm64/sve: Use correct size when reinitialising SVE state
    
    commit e35ac9d0b56e9efefaeeb84b635ea26c2839ea86 upstream.
    
    When we need a buffer for SVE register state we call sve_alloc() to make
    sure that one is there. In order to avoid repeated allocations and frees
    we keep the buffer around unless we change vector length and just memset()
    it to ensure a clean register state. The function that deals with this
    takes the task to operate on as an argument, however in the case where we
    do a memset() we initialise using the SVE state size for the current task
    rather than the task passed as an argument.
    
    This is only an issue in the case where we are setting the register state
    for a task via ptrace and the task being configured has a different vector
    length to the task tracing it. In the case where the buffer is larger in
    the traced process we will leak old state from the traced process to
    itself, in the case where the buffer is smaller in the traced process we
    will overflow the buffer and corrupt memory.
    
    Fixes: bc0ee4760364 ("arm64/sve: Core task context handling")
    Cc: <stable@vger.kernel.org> # 4.15.x
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210909165356.10675-1-broonie@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c687b528a92f372d8c4528762d77d7f8a0b2e66
Author: Adrian Bunk <bunk@kernel.org>
Date:   Sun Sep 12 22:05:23 2021 +0300

    bnx2x: Fix enabling network interfaces without VFs
    
    commit 52ce14c134a003fee03d8fc57442c05a55b53715 upstream.
    
    This function is called to enable SR-IOV when available,
    not enabling interfaces without VFs was a regression.
    
    Fixes: 65161c35554f ("bnx2x: Fix missing error code in bnx2x_iov_init_one()")
    Signed-off-by: Adrian Bunk <bunk@kernel.org>
    Reported-by: YunQiang Su <wzssyqa@gmail.com>
    Tested-by: YunQiang Su <wzssyqa@gmail.com>
    Cc: stable@vger.kernel.org
    Acked-by: Shai Malin <smalin@marvell.com>
    Link: https://lore.kernel.org/r/20210912190523.27991-1-bunk@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6860535176f2e71a8c20bf46c289e6737c0452a0
Author: Juergen Gross <jgross@suse.com>
Date:   Wed Sep 8 09:36:40 2021 +0200

    xen: fix usage of pmd_populate in mremap for pv guests
    
    commit 36c9b5929b7094ea19a78827c0ede20d2e0e6c9c upstream.
    
    Commit 0881ace292b662 ("mm/mremap: use pmd/pud_poplulate to update page
    table entries") introduced a regression when running as Xen PV guest.
    
    Today pmd_populate() for Xen PV assumes that the PFN inserted is
    referencing a not yet used page table. In case of move_normal_pmd()
    this is not true, resulting in WARN splats like:
    
    [34321.304270] ------------[ cut here ]------------
    [34321.304277] WARNING: CPU: 0 PID: 23628 at arch/x86/xen/multicalls.c:102 xen_mc_flush+0x176/0x1a0
    [34321.304288] Modules linked in:
    [34321.304291] CPU: 0 PID: 23628 Comm: apt-get Not tainted 5.14.1-20210906-doflr-mac80211debug+ #1
    [34321.304294] Hardware name: MSI MS-7640/890FXA-GD70 (MS-7640)  , BIOS V1.8B1 09/13/2010
    [34321.304296] RIP: e030:xen_mc_flush+0x176/0x1a0
    [34321.304300] Code: 89 45 18 48 c1 e9 3f 48 89 ce e9 20 ff ff ff e8 60 03 00 00 66 90 5b 5d 41 5c 41 5d c3 48 c7 45 18 ea ff ff ff be 01 00 00 00 <0f> 0b 8b 55 00 48 c7 c7 10 97 aa 82 31 db 49 c7 c5 38 97 aa 82 65
    [34321.304303] RSP: e02b:ffffc90000a97c90 EFLAGS: 00010002
    [34321.304305] RAX: ffff88807d416398 RBX: ffff88807d416350 RCX: ffff88807d416398
    [34321.304306] RDX: 0000000000000001 RSI: 0000000000000001 RDI: deadbeefdeadf00d
    [34321.304308] RBP: ffff88807d416300 R08: aaaaaaaaaaaaaaaa R09: ffff888006160cc0
    [34321.304309] R10: deadbeefdeadf00d R11: ffffea000026a600 R12: 0000000000000000
    [34321.304310] R13: ffff888012f6b000 R14: 0000000012f6b000 R15: 0000000000000001
    [34321.304320] FS:  00007f5071177800(0000) GS:ffff88807d400000(0000) knlGS:0000000000000000
    [34321.304322] CS:  10000e030 DS: 0000 ES: 0000 CR0: 0000000080050033
    [34321.304323] CR2: 00007f506f542000 CR3: 00000000160cc000 CR4: 0000000000000660
    [34321.304326] Call Trace:
    [34321.304331]  xen_alloc_pte+0x294/0x320
    [34321.304334]  move_pgt_entry+0x165/0x4b0
    [34321.304339]  move_page_tables+0x6fa/0x8d0
    [34321.304342]  move_vma.isra.44+0x138/0x500
    [34321.304345]  __x64_sys_mremap+0x296/0x410
    [34321.304348]  do_syscall_64+0x3a/0x80
    [34321.304352]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [34321.304355] RIP: 0033:0x7f507196301a
    [34321.304358] Code: 73 01 c3 48 8b 0d 76 0e 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 49 89 ca b8 19 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 46 0e 0c 00 f7 d8 64 89 01 48
    [34321.304360] RSP: 002b:00007ffda1eecd38 EFLAGS: 00000246 ORIG_RAX: 0000000000000019
    [34321.304362] RAX: ffffffffffffffda RBX: 000056205f950f30 RCX: 00007f507196301a
    [34321.304363] RDX: 0000000001a00000 RSI: 0000000001900000 RDI: 00007f506dc56000
    [34321.304364] RBP: 0000000001a00000 R08: 0000000000000010 R09: 0000000000000004
    [34321.304365] R10: 0000000000000001 R11: 0000000000000246 R12: 00007f506dc56060
    [34321.304367] R13: 00007f506dc56000 R14: 00007f506dc56060 R15: 000056205f950f30
    [34321.304368] ---[ end trace a19885b78fe8f33e ]---
    [34321.304370] 1 of 2 multicall(s) failed: cpu 0
    [34321.304371]   call  2: op=12297829382473034410 arg=[aaaaaaaaaaaaaaaa] result=-22
    
    Fix that by modifying xen_alloc_ptpage() to only pin the page table in
    case it wasn't pinned already.
    
    Fixes: 0881ace292b662 ("mm/mremap: use pmd/pud_poplulate to update page table entries")
    Cc: <stable@vger.kernel.org>
    Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
    Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20210908073640.11299-1-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93ce214dc0c45fb4ec7db929032a8bb9a4af6e18
Author: Juergen Gross <jgross@suse.com>
Date:   Fri Sep 3 10:49:37 2021 +0200

    xen: reset legacy rtc flag for PV domU
    
    commit f68aa100d815b5b4467fd1c3abbe3b99d65fd028 upstream.
    
    A Xen PV guest doesn't have a legacy RTC device, so reset the legacy
    RTC flag. Otherwise the following WARN splat will occur at boot:
    
    [    1.333404] WARNING: CPU: 1 PID: 1 at /home/gross/linux/head/drivers/rtc/rtc-mc146818-lib.c:25 mc146818_get_time+0x1be/0x210
    [    1.333404] Modules linked in:
    [    1.333404] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.14.0-rc7-default+ #282
    [    1.333404] RIP: e030:mc146818_get_time+0x1be/0x210
    [    1.333404] Code: c0 64 01 c5 83 fd 45 89 6b 14 7f 06 83 c5 64 89 6b 14 41 83 ec 01 b8 02 00 00 00 44 89 63 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 <0f> 0b 48 c7 c7 30 0e ef 82 4c 89 e6 e8 71 2a 24 00 48 c7 c0 ff ff
    [    1.333404] RSP: e02b:ffffc90040093df8 EFLAGS: 00010002
    [    1.333404] RAX: 00000000000000ff RBX: ffffc90040093e34 RCX: 0000000000000000
    [    1.333404] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000000000000000d
    [    1.333404] RBP: ffffffff82ef0e30 R08: ffff888005013e60 R09: 0000000000000000
    [    1.333404] R10: ffffffff82373e9b R11: 0000000000033080 R12: 0000000000000200
    [    1.333404] R13: 0000000000000000 R14: 0000000000000002 R15: ffffffff82cdc6d4
    [    1.333404] FS:  0000000000000000(0000) GS:ffff88807d440000(0000) knlGS:0000000000000000
    [    1.333404] CS:  10000e030 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    1.333404] CR2: 0000000000000000 CR3: 000000000260a000 CR4: 0000000000050660
    [    1.333404] Call Trace:
    [    1.333404]  ? wakeup_sources_sysfs_init+0x30/0x30
    [    1.333404]  ? rdinit_setup+0x2b/0x2b
    [    1.333404]  early_resume_init+0x23/0xa4
    [    1.333404]  ? cn_proc_init+0x36/0x36
    [    1.333404]  do_one_initcall+0x3e/0x200
    [    1.333404]  kernel_init_freeable+0x232/0x28e
    [    1.333404]  ? rest_init+0xd0/0xd0
    [    1.333404]  kernel_init+0x16/0x120
    [    1.333404]  ret_from_fork+0x1f/0x30
    
    Cc: <stable@vger.kernel.org>
    Fixes: 8d152e7a5c7537 ("x86/rtc: Replace paravirt rtc check with platform legacy quirk")
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20210903084937.19392-3-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90b2c99e4769aafa8ad757ef3ff988b5ac73359d
Author: Jan Beulich <jbeulich@suse.com>
Date:   Tue Sep 7 14:04:47 2021 +0200

    swiotlb-xen: fix late init retry
    
    commit 4c092c59015f7adf0f07685f869edb96d997a756 upstream.
    
    The commit referenced below removed the assignment of "bytes" from
    xen_swiotlb_init() without - like done for xen_swiotlb_init_early() -
    adding an assignment on the retry path, thus leading to excessively
    sized allocations upon retries.
    
    Fixes: 2d29960af0be ("swiotlb: dynamically allocate io_tlb_default_mem")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Link: https://lore.kernel.org/r/778299d6-9cfd-1c13-026e-25ee5d14ecb3@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>

commit 4eb05451173ef5039abcfaebc372f889726f1f5c
Author: Jan Beulich <jbeulich@suse.com>
Date:   Tue Sep 7 14:04:25 2021 +0200

    swiotlb-xen: avoid double free
    
    commit ce6a80d1b2f923b1839655a1cda786293feaa085 upstream.
    
    Of the two paths leading to the "error" label in xen_swiotlb_init() one
    didn't allocate anything, while the other did already free what was
    allocated.
    
    Fixes: b82776005369 ("xen/swiotlb: Use the swiotlb_late_init_with_tbl to init Xen-SWIOTLB late when PV PCI is used")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/ce9c2adb-8a52-6293-982a-0d6ece943ac6@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71e32edd2210d0304e93ac110814b5a4b3a81dc0
Author: Jens Axboe <axboe@kernel.dk>
Date:   Sun Sep 12 06:45:07 2021 -0600

    io_uring: ensure symmetry in handling iter types in loop_rw_iter()
    
    commit 16c8d2df7ec0eed31b7d3b61cb13206a7fb930cc upstream.
    
    When setting up the next segment, we check what type the iter is and
    handle it accordingly. However, when incrementing and processed amount
    we do not, and both iter advance and addr/len are adjusted, regardless
    of type. Split the increment side just like we do on the setup side.
    
    Fixes: 4017eb91a9e7 ("io_uring: make loop_rw_iter() use original user supplied pointers")
    Cc: stable@vger.kernel.org
    Reported-by: Valentina Palmiotti <vpalmiotti@gmail.com>
    Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e93a76c6995c3c95c0680fd5da89c4f2eb41ec6
Author: Joakim Zhang <qiangqing.zhang@nxp.com>
Date:   Tue Sep 7 18:56:47 2021 +0800

    net: stmmac: fix MAC not working when system resume back with WoL active
    
    commit 90702dcd19c093621b422ba16fcfd870afe2552f upstream.
    
    We can reproduce this issue with below steps:
    1) enable WoL on the host
    2) host system suspended
    3) remote client send out wakeup packets
    We can see that host system resume back, but can't work, such as ping failed.
    
    After a bit digging, this issue is introduced by the commit 46f69ded988d
    ("net: stmmac: Use resolved link config in mac_link_up()"), which use
    the finalised link parameters in mac_link_up() rather than the
    parameters in mac_config().
    
    There are two scenarios for MAC suspend/resume in STMMAC driver:
    
    1) MAC suspend with WoL inactive, stmmac_suspend() call
    phylink_mac_change() to notify phylink machine that a change in MAC
    state, then .mac_link_down callback would be invoked. Further, it will
    call phylink_stop() to stop the phylink instance. When MAC resume back,
    firstly phylink_start() is called to start the phylink instance, then
    call phylink_mac_change() which will finally trigger phylink machine to
    invoke .mac_config and .mac_link_up callback. All is fine since
    configuration in these two callbacks will be initialized, that means MAC
    can restore the state.
    
    2) MAC suspend with WoL active, phylink_mac_change() will put link
    down, but there is no phylink_stop() to stop the phylink instance, so it
    will link up again, that means .mac_config and .mac_link_up would be
    invoked before system suspended. After system resume back, it will do
    DMA initialization and SW reset which let MAC lost the hardware setting
    (i.e MAC_Configuration register(offset 0x0) is reset). Since link is up
    before system suspended, so .mac_link_up would not be invoked after
    system resume back, lead to there is no chance to initialize the
    configuration in .mac_link_up callback, as a result, MAC can't work any
    longer.
    
    After discussed with Russell King [1], we confirm that phylink framework
    have not take WoL into consideration yet. This patch calls
    phylink_suspend()/phylink_resume() functions which is newly introduced
    by Russell King to fix this issue.
    
    [1] https://lore.kernel.org/netdev/20210901090228.11308-1-qiangqing.zhang@nxp.com/
    
    Fixes: 46f69ded988d ("net: stmmac: Use resolved link config in mac_link_up()")
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>