commit 64121e2adf7d6fe2e684eec09ec9b9986d951d42
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Feb 22 12:50:42 2023 +0100

    Linux 5.4.232
    
    Link: https://lore.kernel.org/r/20230220133602.515342638@linuxfoundation.org
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b47e324af717ea0dbde257b0a84042982746404
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Oct 18 11:00:33 2019 +0200

    iommu/amd: Pass gfp flags to iommu_map_page() in amd_iommu_map()
    
    commit 3057fb9377eb5e73386dd0d8804bf72bdd23e391 upstream.
    
    A recent commit added a gfp parameter to amd_iommu_map() to make it
    callable from atomic context, but forgot to pass it down to
    iommu_map_page() and left GFP_KERNEL there. This caused
    sleep-while-atomic warnings and needs to be fixed.
    
    Reported-by: Qian Cai <cai@lca.pw>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: 781ca2de89ba ("iommu: Add gfp parameter to iommu_ops::map")
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7519069f1fb8140a3994bc35ba46df83ccd9de5f
Author: Dan Carpenter <error27@gmail.com>
Date:   Mon Feb 6 16:18:32 2023 +0300

    net: sched: sch: Fix off by one in htb_activate_prios()
    
    commit 9cec2aaffe969f2a3e18b5ec105fc20bb908e475 upstream.
    
    The > needs be >= to prevent an out of bounds access.
    
    Fixes: de5ca4c3852f ("net: sched: sch: Bounds check priority")
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/Y+D+KN18FQI2DKLq@kili
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5660a6ffa7a4a5ace9c10274a208ec011592f6d6
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Feb 16 18:23:40 2023 +0200

    ASoC: SOF: Intel: hda-dai: fix possible stream_tag leak
    
    commit 1f810d2b6b2fbdc5279644d8b2c140b1f7c9d43d upstream.
    
    The HDaudio stream allocation is done first, and in a second step the
    LOSIDV parameter is programmed for the multi-link used by a codec.
    
    This leads to a possible stream_tag leak, e.g. if a DisplayAudio link
    is not used. This would happen when a non-Intel graphics card is used
    and userspace unconditionally uses the Intel Display Audio PCMs without
    checking if they are connected to a receiver with jack controls.
    
    We should first check that there is a valid multi-link entry to
    configure before allocating a stream_tag. This change aligns the
    dma_assign and dma_cleanup phases.
    
    Complements: b0cd60f3e9f5 ("ALSA/ASoC: hda: clarify bus_get_link() and bus_link_get() helpers")
    Link: https://github.com/thesofproject/linux/issues/4151
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Rander Wang <rander.wang@intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20230216162340.19480-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52844d8382cd9166d708032def8905ffc3ae550f
Author: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Date:   Wed Feb 15 07:40:43 2023 +0900

    nilfs2: fix underflow in second superblock position calculations
    
    commit 99b9402a36f0799f25feee4465bfa4b8dfa74b4d upstream.
    
    Macro NILFS_SB2_OFFSET_BYTES, which computes the position of the second
    superblock, underflows when the argument device size is less than 4096
    bytes.  Therefore, when using this macro, it is necessary to check in
    advance that the device size is not less than a lower limit, or at least
    that underflow does not occur.
    
    The current nilfs2 implementation lacks this check, causing out-of-bound
    block access when mounting devices smaller than 4096 bytes:
    
     I/O error, dev loop0, sector 36028797018963960 op 0x0:(READ) flags 0x0
     phys_seg 1 prio class 2
     NILFS (loop0): unable to read secondary superblock (blocksize = 1024)
    
    In addition, when trying to resize the filesystem to a size below 4096
    bytes, this underflow occurs in nilfs_resize_fs(), passing a huge number
    of segments to nilfs_sufile_resize(), corrupting parameters such as the
    number of segments in superblocks.  This causes excessive loop iterations
    in nilfs_sufile_resize() during a subsequent resize ioctl, causing
    semaphore ns_segctor_sem to block for a long time and hang the writer
    thread:
    
     INFO: task segctord:5067 blocked for more than 143 seconds.
          Not tainted 6.2.0-rc8-syzkaller-00015-gf6feea56f66d #0
     "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
     task:segctord        state:D stack:23456 pid:5067  ppid:2
     flags:0x00004000
     Call Trace:
      <TASK>
      context_switch kernel/sched/core.c:5293 [inline]
      __schedule+0x1409/0x43f0 kernel/sched/core.c:6606
      schedule+0xc3/0x190 kernel/sched/core.c:6682
      rwsem_down_write_slowpath+0xfcf/0x14a0 kernel/locking/rwsem.c:1190
      nilfs_transaction_lock+0x25c/0x4f0 fs/nilfs2/segment.c:357
      nilfs_segctor_thread_construct fs/nilfs2/segment.c:2486 [inline]
      nilfs_segctor_thread+0x52f/0x1140 fs/nilfs2/segment.c:2570
      kthread+0x270/0x300 kernel/kthread.c:376
      ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
      </TASK>
     ...
     Call Trace:
      <TASK>
      folio_mark_accessed+0x51c/0xf00 mm/swap.c:515
      __nilfs_get_page_block fs/nilfs2/page.c:42 [inline]
      nilfs_grab_buffer+0x3d3/0x540 fs/nilfs2/page.c:61
      nilfs_mdt_submit_block+0xd7/0x8f0 fs/nilfs2/mdt.c:121
      nilfs_mdt_read_block+0xeb/0x430 fs/nilfs2/mdt.c:176
      nilfs_mdt_get_block+0x12d/0xbb0 fs/nilfs2/mdt.c:251
      nilfs_sufile_get_segment_usage_block fs/nilfs2/sufile.c:92 [inline]
      nilfs_sufile_truncate_range fs/nilfs2/sufile.c:679 [inline]
      nilfs_sufile_resize+0x7a3/0x12b0 fs/nilfs2/sufile.c:777
      nilfs_resize_fs+0x20c/0xed0 fs/nilfs2/super.c:422
      nilfs_ioctl_resize fs/nilfs2/ioctl.c:1033 [inline]
      nilfs_ioctl+0x137c/0x2440 fs/nilfs2/ioctl.c:1301
      ...
    
    This fixes these issues by inserting appropriate minimum device size
    checks or anti-underflow checks, depending on where the macro is used.
    
    Link: https://lkml.kernel.org/r/0000000000004e1dfa05f4a48e6b@google.com
    Link: https://lkml.kernel.org/r/20230214224043.24141-1-konishi.ryusuke@gmail.com
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Reported-by: <syzbot+f0c4082ce5ebebdac63b@syzkaller.appspotmail.com>
    Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f95a161a7deef62d6d2f57b1a69f94e0546d8d8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Feb 14 11:33:04 2023 +0100

    kvm: initialize all of the kvm_debugregs structure before sending it to userspace
    
    commit 2c10b61421a28e95a46ab489fd56c0f442ff6952 upstream.
    
    When calling the KVM_GET_DEBUGREGS ioctl, on some configurations, there
    might be some unitialized portions of the kvm_debugregs structure that
    could be copied to userspace.  Prevent this as is done in the other kvm
    ioctls, by setting the whole structure to 0 before copying anything into
    it.
    
    Bonus is that this reduces the lines of code as the explicit flag
    setting and reserved space zeroing out can be removed.
    
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: <x86@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: stable <stable@kernel.org>
    Reported-by: Xingyuan Mo <hdthky0@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Message-Id: <20230214103304.3689213-1-gregkh@linuxfoundation.org>
    Tested-by: Xingyuan Mo <hdthky0@gmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f4abf204827bbca14eb7eec616d7601f6d36a2f
Author: Natalia Petrova <n.petrova@fintech.ru>
Date:   Thu Feb 9 09:28:33 2023 -0800

    i40e: Add checking for null for nlmsg_find_attr()
    
    [ Upstream commit 7fa0b526f865cb42aa33917fd02a92cb03746f4d ]
    
    The result of nlmsg_find_attr() 'br_spec' is dereferenced in
    nla_for_each_nested(), but it can take NULL value in nla_find() function,
    which will result in an error.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 51616018dd1b ("i40e: Add support for getlink, setlink ndo ops")
    Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20230209172833.3596034-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e71554a09edf03ef01acc013e8835ee01d5c6063
Author: Guillaume Nault <gnault@redhat.com>
Date:   Wed Feb 8 18:14:03 2023 +0100

    ipv6: Fix tcp socket connection with DSCP.
    
    commit 8230680f36fd1525303d1117768c8852314c488c upstream.
    
    Take into account the IPV6_TCLASS socket option (DSCP) in
    tcp_v6_connect(). Otherwise fib6_rule_match() can't properly
    match the DSCP value, resulting in invalid route lookup.
    
    For example:
    
      ip route add unreachable table main 2001:db8::10/124
    
      ip route add table 100 2001:db8::10/124 dev eth0
      ip -6 rule add dsfield 0x04 table 100
    
      echo test | socat - TCP6:[2001:db8::11]:54321,ipv6-tclass=0x04
    
    Without this patch, socat fails at connect() time ("No route to host")
    because the fib-rule doesn't jump to table 100 and the lookup ends up
    being done in the main table.
    
    Fixes: 2cc67cc731d9 ("[IPV6] ROUTE: Routing by Traffic Class.")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 388886f9708e188953a38c18642cd7a62541583c
Author: Guillaume Nault <gnault@redhat.com>
Date:   Wed Feb 8 18:13:59 2023 +0100

    ipv6: Fix datagram socket connection with DSCP.
    
    commit e010ae08c71fda8be3d6bda256837795a0b3ea41 upstream.
    
    Take into account the IPV6_TCLASS socket option (DSCP) in
    ip6_datagram_flow_key_init(). Otherwise fib6_rule_match() can't
    properly match the DSCP value, resulting in invalid route lookup.
    
    For example:
    
      ip route add unreachable table main 2001:db8::10/124
    
      ip route add table 100 2001:db8::10/124 dev eth0
      ip -6 rule add dsfield 0x04 table 100
    
      echo test | socat - UDP6:[2001:db8::11]:54321,ipv6-tclass=0x04
    
    Without this patch, socat fails at connect() time ("No route to host")
    because the fib-rule doesn't jump to table 100 and the lookup ends up
    being done in the main table.
    
    Fixes: 2cc67cc731d9 ("[IPV6] ROUTE: Routing by Traffic Class.")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 905199dac226eabc9c957ef665da80aa2d3d46a7
Author: Jason Xing <kernelxing@tencent.com>
Date:   Thu Feb 9 10:41:28 2023 +0800

    ixgbe: add double of VLAN header when computing the max MTU
    
    commit 0967bf837784a11c65d66060623a74e65211af0b upstream.
    
    Include the second VLAN HLEN into account when computing the maximum
    MTU size as other drivers do.
    
    Fixes: fabf1bce103a ("ixgbe: Prevent unsupported configurations with XDP")
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df099e65564aa47478eb1cacf81ba69024fb5c69
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Feb 13 22:53:55 2023 -0800

    net: mpls: fix stale pointer if allocation fails during device rename
    
    commit fda6c89fe3d9aca073495a664e1d5aea28cd4377 upstream.
    
    lianhui reports that when MPLS fails to register the sysctl table
    under new location (during device rename) the old pointers won't
    get overwritten and may be freed again (double free).
    
    Handle this gracefully. The best option would be unregistering
    the MPLS from the device completely on failure, but unfortunately
    mpls_ifdown() can fail. So failing fully is also unreliable.
    
    Another option is to register the new table first then only
    remove old one if the new one succeeds. That requires more
    code, changes order of notifications and two tables may be
    visible at the same time.
    
    sysctl point is not used in the rest of the code - set to NULL
    on failures and skip unregister if already NULL.
    
    Reported-by: lianhui tang <bluetlh@gmail.com>
    Fixes: 0fae3bf018d9 ("mpls: handle device renames for per-device sysctls")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 736f8f66d7a90e55c8c2aeffdb05f762e0cc187b
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Fri Feb 10 22:21:26 2023 +0200

    net: stmmac: Restrict warning on disabling DMA store and fwd mode
    
    commit 05d7623a892a9da62da0e714428e38f09e4a64d8 upstream.
    
    When setting 'snps,force_thresh_dma_mode' DT property, the following
    warning is always emitted, regardless the status of force_sf_dma_mode:
    
    dwmac-starfive 10020000.ethernet: force_sf_dma_mode is ignored if force_thresh_dma_mode is set.
    
    Do not print the rather misleading message when DMA store and forward
    mode is already disabled.
    
    Fixes: e2a240c7d3bc ("driver:net:stmmac: Disable DMA store and forward mode if platform data force_thresh_dma_mode is set.")
    Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
    Link: https://lore.kernel.org/r/20230210202126.877548-1-cristian.ciocaltea@collabora.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a2c7951424c4d35f3692a30f9e6b30b99412229
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Fri Feb 10 12:31:55 2023 -0500

    bnxt_en: Fix mqprio and XDP ring checking logic
    
    commit 2038cc592811209de20c4e094ca08bfb1e6fbc6c upstream.
    
    In bnxt_reserve_rings(), there is logic to check that the number of TX
    rings reserved is enough to cover all the mqprio TCs, but it fails to
    account for the TX XDP rings.  So the check will always fail if there
    are mqprio TCs and TX XDP rings.  As a result, the driver always fails
    to initialize after the XDP program is attached and the device will be
    brought down.  A subsequent ifconfig up will also fail because the
    number of TX rings is set to an inconsistent number.  Fix the check to
    properly account for TX XDP rings.  If the check fails, set the number
    of TX rings back to a consistent number after calling netdev_reset_tc().
    
    Fixes: 674f50a5b026 ("bnxt_en: Implement new method to reserve rings.")
    Reviewed-by: Hongguang Gao <hongguang.gao@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 de44bdebcfe48cd5dcb15d837d7dff408e7c3618
Author: Johannes Zink <j.zink@pengutronix.de>
Date:   Fri Feb 10 15:39:37 2023 +0100

    net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence
    
    commit 4562c65ec852067c6196abdcf2d925f08841dcbc upstream.
    
    So far changing the period by just setting new period values while
    running did not work.
    
    The order as indicated by the publicly available reference manual of the i.MX8MP [1]
    indicates a sequence:
    
     * initiate the programming sequence
     * set the values for PPS period and start time
     * start the pulse train generation.
    
    This is currently not used in dwmac5_flex_pps_config(), which instead does:
    
     * initiate the programming sequence and immediately start the pulse train generation
     * set the values for PPS period and start time
    
    This caused the period values written not to take effect until the FlexPPS output was
    disabled and re-enabled again.
    
    This patch fix the order and allows the period to be set immediately.
    
    [1] https://www.nxp.com/webapp/Download?colCode=IMX8MPRM
    
    Fixes: 9a8a02c9d46d ("net: stmmac: Add Flexible PPS support")
    Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
    Link: https://lore.kernel.org/r/20230210143937.3427483-1-j.zink@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a753352622b4f3c0219e0e9c73114b2848ae6042
Author: Miko Larsson <mikoxyzzz@gmail.com>
Date:   Fri Feb 10 09:13:44 2023 +0100

    net/usb: kalmia: Don't pass act_len in usb_bulk_msg error path
    
    commit c68f345b7c425b38656e1791a0486769a8797016 upstream.
    
    syzbot reported that act_len in kalmia_send_init_packet() is
    uninitialized when passing it to the first usb_bulk_msg error path. Jiri
    Pirko noted that it's pointless to pass it in the error path, and that
    the value that would be printed in the second error path would be the
    value of act_len from the first call to usb_bulk_msg.[1]
    
    With this in mind, let's just not pass act_len to the usb_bulk_msg error
    paths.
    
    1: https://lore.kernel.org/lkml/Y9pY61y1nwTuzMOa@nanopsycho/
    
    Fixes: d40261236e8e ("net/usb: Add Samsung Kalmia driver for Samsung GT-B3730")
    Reported-and-tested-by: syzbot+cd80c5ef5121bfe85b55@syzkaller.appspotmail.com
    Signed-off-by: Miko Larsson <mikoxyzzz@gmail.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c2651c763695557be25a2614b973db891b8ba42
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Thu Feb 9 16:22:01 2023 -0800

    dccp/tcp: Avoid negative sk_forward_alloc by ipv6_pinfo.pktoptions.
    
    commit ca43ccf41224b023fc290073d5603a755fd12eed upstream.
    
    Eric Dumazet pointed out [0] that when we call skb_set_owner_r()
    for ipv6_pinfo.pktoptions, sk_rmem_schedule() has not been called,
    resulting in a negative sk_forward_alloc.
    
    We add a new helper which clones a skb and sets its owner only
    when sk_rmem_schedule() succeeds.
    
    Note that we move skb_set_owner_r() forward in (dccp|tcp)_v6_do_rcv()
    because tcp_send_synack() can make sk_forward_alloc negative before
    ipv6_opt_accepted() in the crossed SYN-ACK or self-connect() cases.
    
    [0]: https://lore.kernel.org/netdev/CANn89iK9oc20Jdi_41jb9URdF210r7d1Y-+uypbMSbOfY6jqrg@mail.gmail.com/
    
    Fixes: 323fbd0edf3f ("net: dccp: Add handling of IPV6_PKTOPTIONS to dccp_v6_do_rcv()")
    Fixes: 3df80d9320bc ("[DCCP]: Introduce DCCPv6")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4e9411769a7d5f52f739c84218366f9860ca42e
Author: Pietro Borrello <borrello@diag.uniroma1.it>
Date:   Thu Feb 9 12:13:05 2023 +0000

    sctp: sctp_sock_filter(): avoid list_entry() on possibly empty list
    
    commit a1221703a0f75a9d81748c516457e0fc76951496 upstream.
    
    Use list_is_first() to check whether tsp->asoc matches the first
    element of ep->asocs, as the list is not guaranteed to have an entry.
    
    Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file")
    Signed-off-by: Pietro Borrello <borrello@diag.uniroma1.it>
    Acked-by: Xin Long <lucien.xin@gmail.com>
    Link: https://lore.kernel.org/r/20230208-sctp-filter-v2-1-6e1f4017f326@diag.uniroma1.it
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1b54b561250b9512be87fa0049a670a9d4b48a2
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Wed Feb 8 10:16:37 2023 +0100

    net: bgmac: fix BCM5358 support by setting correct flags
    
    commit d61615c366a489646a1bfe5b33455f916762d5f4 upstream.
    
    Code blocks handling BCMA_CHIP_ID_BCM5357 and BCMA_CHIP_ID_BCM53572 were
    incorrectly unified. Chip package values are not unique and cannot be
    checked independently. They are meaningful only in a context of a given
    chip.
    
    Packages BCM5358 and BCM47188 share the same value but then belong to
    different chips. Code unification resulted in treating BCM5358 as
    BCM47188 and broke its initialization.
    
    Link: https://github.com/openwrt/openwrt/issues/8278
    Fixes: cb1b0f90acfe ("net: ethernet: bgmac: unify code of the same family")
    Cc: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20230208091637.16291-1-zajec5@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a4d05b0ffc8ef57238a24f216755f12ae4b74ce
Author: Jason Xing <kernelxing@tencent.com>
Date:   Wed Feb 8 10:43:33 2023 +0800

    i40e: add double of VLAN header when computing the max MTU
    
    commit ce45ffb815e8e238f05de1630be3969b6bb15e4e upstream.
    
    Include the second VLAN HLEN into account when computing the maximum
    MTU size as other drivers do.
    
    Fixes: 0c8493d90b6b ("i40e: add XDP support for pass and drop actions")
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdeb4c258bc6de1120b9f43e7187fc77a0928155
Author: Jason Xing <kernelxing@tencent.com>
Date:   Wed Feb 8 10:43:32 2023 +0800

    ixgbe: allow to increase MTU to 3K with XDP enabled
    
    commit f9cd6a4418bac6a046ee78382423b1ae7565fb24 upstream.
    
    Recently I encountered one case where I cannot increase the MTU size
    directly from 1500 to a much bigger value with XDP enabled if the
    server is equipped with IXGBE card, which happened on thousands of
    servers in production environment. After applying the current patch,
    we can set the maximum MTU size to 3K.
    
    This patch follows the behavior of changing MTU as i40e/ice does.
    
    References:
    [1] commit 23b44513c3e6 ("ice: allow 3k MTU for XDP")
    [2] commit 0c8493d90b6b ("i40e: add XDP support for pass and drop actions")
    
    Fixes: fabf1bce103a ("ixgbe: Prevent unsupported configurations with XDP")
    Signed-off-by: Jason Xing <kernelxing@tencent.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32d81fd54e4ec6e8b3b8e9d24e2ec7c335ba738a
Author: Andrew Morton <akpm@linux-foundation.org>
Date:   Thu Feb 2 18:07:35 2023 -0800

    revert "squashfs: harden sanity check in squashfs_read_xattr_id_table"
    
    commit a5b21d8d791cd4db609d0bbcaa9e0c7e019888d1 upstream.
    
    This fix was nacked by Philip, for reasons identified in the email linked
    below.
    
    Link: https://lkml.kernel.org/r/68f15d67-8945-2728-1f17-5b53a80ec52d@squashfs.org.uk
    Fixes: 72e544b1b28325 ("squashfs: harden sanity check in squashfs_read_xattr_id_table")
    Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Cc: Fedor Pchelkin <pchelkin@ispras.ru>
    Cc: Phillip Lougher <phillip@squashfs.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c8011e77c27b6a0ebb35406de7748660818e32a
Author: Felix Riemann <felix.riemann@sma.de>
Date:   Fri Feb 10 13:36:44 2023 +0100

    net: Fix unwanted sign extension in netdev_stats_to_stats64()
    
    commit 9b55d3f0a69af649c62cbc2633e6d695bb3cc583 upstream.
    
    When converting net_device_stats to rtnl_link_stats64 sign extension
    is triggered on ILP32 machines as 6c1c509778 changed the previous
    "ulong -> u64" conversion to "long -> u64" by accessing the
    net_device_stats fields through a (signed) atomic_long_t.
    
    This causes for example the received bytes counter to jump to 16EiB after
    having received 2^31 bytes. Casting the atomic value to "unsigned long"
    beforehand converting it into u64 avoids this.
    
    Fixes: 6c1c5097781f ("net: add atomic_long_t to net_device_stats fields")
    Signed-off-by: Felix Riemann <felix.riemann@sma.de>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b08c9fc72c65e7ed1f2a6743f2ca9f92a63bbae
Author: Aaron Thompson <dev@aaront.org>
Date:   Tue Feb 7 08:21:51 2023 +0000

    Revert "mm: Always release pages to the buddy allocator in memblock_free_late()."
    
    commit 647037adcad00f2bab8828d3d41cd0553d41f3bd upstream.
    
    This reverts commit 115d9d77bb0f9152c60b6e8646369fa7f6167593.
    
    The pages being freed by memblock_free_late() have already been
    initialized, but if they are in the deferred init range,
    __free_one_page() might access nearby uninitialized pages when trying to
    coalesce buddies. This can, for example, trigger this BUG:
    
      BUG: unable to handle page fault for address: ffffe964c02580c8
      RIP: 0010:__list_del_entry_valid+0x3f/0x70
       <TASK>
       __free_one_page+0x139/0x410
       __free_pages_ok+0x21d/0x450
       memblock_free_late+0x8c/0xb9
       efi_free_boot_services+0x16b/0x25c
       efi_enter_virtual_mode+0x403/0x446
       start_kernel+0x678/0x714
       secondary_startup_64_no_verify+0xd2/0xdb
       </TASK>
    
    A proper fix will be more involved so revert this change for the time
    being.
    
    Fixes: 115d9d77bb0f ("mm: Always release pages to the buddy allocator in memblock_free_late().")
    Signed-off-by: Aaron Thompson <dev@aaront.org>
    Link: https://lore.kernel.org/r/20230207082151.1303-1-dev@aaront.org
    Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c07792e79cfb4879984d4c864a1a096c9be63ca
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Wed Feb 15 17:35:42 2023 -0800

    hugetlb: check for undefined shift on 32 bit architectures
    
    commit ec4288fe63966b26d53907212ecd05dfa81dd2cc upstream.
    
    Users can specify the hugetlb page size in the mmap, shmget and
    memfd_create system calls.  This is done by using 6 bits within the flags
    argument to encode the base-2 logarithm of the desired page size.  The
    routine hstate_sizelog() uses the log2 value to find the corresponding
    hugetlb hstate structure.  Converting the log2 value (page_size_log) to
    potential hugetlb page size is the simple statement:
    
            1UL << page_size_log
    
    Because only 6 bits are used for page_size_log, the left shift can not be
    greater than 63.  This is fine on 64 bit architectures where a long is 64
    bits.  However, if a value greater than 31 is passed on a 32 bit
    architecture (where long is 32 bits) the shift will result in undefined
    behavior.  This was generally not an issue as the result of the undefined
    shift had to exactly match hugetlb page size to proceed.
    
    Recent improvements in runtime checking have resulted in this undefined
    behavior throwing errors such as reported below.
    
    Fix by comparing page_size_log to BITS_PER_LONG before doing shift.
    
    Link: https://lkml.kernel.org/r/20230216013542.138708-1-mike.kravetz@oracle.com
    Link: https://lore.kernel.org/lkml/CA+G9fYuei_Tr-vN9GS7SfFyU1y9hNysnf=PB7kT0=yv4MiPgVg@mail.gmail.com/
    Fixes: 42d7395feb56 ("mm: support more pagesizes for MAP_HUGETLB/SHM_HUGETLB")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Reviewed-by: Jesper Juhl <jesperjuhl76@gmail.com>
    Acked-by: Muchun Song <songmuchun@bytedance.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Cc: Anders Roxell <anders.roxell@linaro.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7caeb5457bd01ccba0df1d6f4872f20d28e50b38
Author: Munehisa Kamata <kamatam@amazon.com>
Date:   Tue Feb 14 13:27:05 2023 -0800

    sched/psi: Fix use-after-free in ep_remove_wait_queue()
    
    commit c2dbe32d5db5c4ead121cf86dabd5ab691fb47fe upstream.
    
    If a non-root cgroup gets removed when there is a thread that registered
    trigger and is polling on a pressure file within the cgroup, the polling
    waitqueue gets freed in the following path:
    
     do_rmdir
       cgroup_rmdir
         kernfs_drain_open_files
           cgroup_file_release
             cgroup_pressure_release
               psi_trigger_destroy
    
    However, the polling thread still has a reference to the pressure file and
    will access the freed waitqueue when the file is closed or upon exit:
    
     fput
       ep_eventpoll_release
         ep_free
           ep_remove_wait_queue
             remove_wait_queue
    
    This results in use-after-free as pasted below.
    
    The fundamental problem here is that cgroup_file_release() (and
    consequently waitqueue's lifetime) is not tied to the file's real lifetime.
    Using wake_up_pollfree() here might be less than ideal, but it is in line
    with the comment at commit 42288cb44c4b ("wait: add wake_up_pollfree()")
    since the waitqueue's lifetime is not tied to file's one and can be
    considered as another special case. While this would be fixable by somehow
    making cgroup_file_release() be tied to the fput(), it would require
    sizable refactoring at cgroups or higher layer which might be more
    justifiable if we identify more cases like this.
    
      BUG: KASAN: use-after-free in _raw_spin_lock_irqsave+0x60/0xc0
      Write of size 4 at addr ffff88810e625328 by task a.out/4404
    
            CPU: 19 PID: 4404 Comm: a.out Not tainted 6.2.0-rc6 #38
            Hardware name: Amazon EC2 c5a.8xlarge/, BIOS 1.0 10/16/2017
            Call Trace:
            <TASK>
            dump_stack_lvl+0x73/0xa0
            print_report+0x16c/0x4e0
            kasan_report+0xc3/0xf0
            kasan_check_range+0x2d2/0x310
            _raw_spin_lock_irqsave+0x60/0xc0
            remove_wait_queue+0x1a/0xa0
            ep_free+0x12c/0x170
            ep_eventpoll_release+0x26/0x30
            __fput+0x202/0x400
            task_work_run+0x11d/0x170
            do_exit+0x495/0x1130
            do_group_exit+0x100/0x100
            get_signal+0xd67/0xde0
            arch_do_signal_or_restart+0x2a/0x2b0
            exit_to_user_mode_prepare+0x94/0x100
            syscall_exit_to_user_mode+0x20/0x40
            do_syscall_64+0x52/0x90
            entry_SYSCALL_64_after_hwframe+0x63/0xcd
            </TASK>
    
     Allocated by task 4404:
    
            kasan_set_track+0x3d/0x60
            __kasan_kmalloc+0x85/0x90
            psi_trigger_create+0x113/0x3e0
            pressure_write+0x146/0x2e0
            cgroup_file_write+0x11c/0x250
            kernfs_fop_write_iter+0x186/0x220
            vfs_write+0x3d8/0x5c0
            ksys_write+0x90/0x110
            do_syscall_64+0x43/0x90
            entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
     Freed by task 4407:
    
            kasan_set_track+0x3d/0x60
            kasan_save_free_info+0x27/0x40
            ____kasan_slab_free+0x11d/0x170
            slab_free_freelist_hook+0x87/0x150
            __kmem_cache_free+0xcb/0x180
            psi_trigger_destroy+0x2e8/0x310
            cgroup_file_release+0x4f/0xb0
            kernfs_drain_open_files+0x165/0x1f0
            kernfs_drain+0x162/0x1a0
            __kernfs_remove+0x1fb/0x310
            kernfs_remove_by_name_ns+0x95/0xe0
            cgroup_addrm_files+0x67f/0x700
            cgroup_destroy_locked+0x283/0x3c0
            cgroup_rmdir+0x29/0x100
            kernfs_iop_rmdir+0xd1/0x140
            vfs_rmdir+0xfe/0x240
            do_rmdir+0x13d/0x280
            __x64_sys_rmdir+0x2c/0x30
            do_syscall_64+0x43/0x90
            entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: 0e94682b73bf ("psi: introduce psi monitor")
    Signed-off-by: Munehisa Kamata <kamatam@amazon.com>
    Signed-off-by: Mengchi Cheng <mengcc@amazon.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Suren Baghdasaryan <surenb@google.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/lkml/20230106224859.4123476-1-kamatam@amazon.com/
    Link: https://lore.kernel.org/r/20230214212705.4058045-1-kamatam@amazon.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c38aa4020b6d60386c0d2ba320834b4fcf6a77c
Author: Kailang Yang <kailang@realtek.com>
Date:   Mon Feb 13 14:54:22 2023 +0800

    ALSA: hda/realtek - fixed wrong gpio assigned
    
    commit 2bdccfd290d421b50df4ec6a68d832dad1310748 upstream.
    
    GPIO2 PIN use for output. Mask Dir and Data need to assign for 0x4. Not 0x3.
    This fixed was for Lenovo Desktop(0x17aa1056). GPIO2 use for AMP enable.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/8d02bb9ac8134f878cd08607fdf088fd@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e0ef3fc65603940a3c6cd05d11cf1247a2a0a4d
Author: Bo Liu <bo.liu@senarytech.com>
Date:   Thu Feb 9 10:13:48 2023 +0800

    ALSA: hda/conexant: add a new hda codec SN6180
    
    commit 18d7e16c917a08f08778ecf2b780d63648d5d923 upstream.
    
    The current kernel does not support the SN6180 codec chip.
    Add the SN6180 codec configuration item to kernel.
    
    Signed-off-by: Bo Liu <bo.liu@senarytech.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1675908828-1012-1-git-send-email-bo.liu@senarytech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9b488d60f51ae312006e224e03a30a151c28bdd
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Jan 31 09:38:35 2023 +0800

    mmc: mmc_spi: fix error handling in mmc_spi_probe()
    
    commit cf4c9d2ac1e42c7d18b921bec39486896645b714 upstream.
    
    If mmc_add_host() fails, it doesn't need to call mmc_remove_host(),
    or it will cause null-ptr-deref, because of deleting a not added
    device in mmc_remove_host().
    
    To fix this, goto label 'fail_glue_init', if mmc_add_host() fails,
    and change the label 'fail_add_host' to 'fail_gpiod_request'.
    
    Fixes: 15a0580ced08 ("mmc_spi host driver")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Cc:stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230131013835.3564011-1-yangyingliang@huawei.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 761db46b29b496946046d8cb33c7ea6de6bef36e
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Jan 30 20:58:08 2023 +0800

    mmc: sdio: fix possible resource leaks in some error paths
    
    commit 605d9fb9556f8f5fb4566f4df1480f280f308ded upstream.
    
    If sdio_add_func() or sdio_init_func() fails, sdio_remove_func() can
    not release the resources, because the sdio function is not presented
    in these two cases, it won't call of_node_put() or put_device().
    
    To fix these leaks, make sdio_func_present() only control whether
    device_del() needs to be called or not, then always call of_node_put()
    and put_device().
    
    In error case in sdio_init_func(), the reference of 'card->dev' is
    not get, to avoid redundant put in sdio_free_func_cis(), move the
    get_device() to sdio_alloc_func() and put_device() to sdio_release_func(),
    it can keep the get/put function be balanced.
    
    Without this patch, while doing fault inject test, it can get the
    following leak reports, after this fix, the leak is gone.
    
    unreferenced object 0xffff888112514000 (size 2048):
      comm "kworker/3:2", pid 65, jiffies 4294741614 (age 124.774s)
      hex dump (first 32 bytes):
        00 e0 6f 12 81 88 ff ff 60 58 8d 06 81 88 ff ff  ..o.....`X......
        10 40 51 12 81 88 ff ff 10 40 51 12 81 88 ff ff  .@Q......@Q.....
      backtrace:
        [<000000009e5931da>] kmalloc_trace+0x21/0x110
        [<000000002f839ccb>] mmc_alloc_card+0x38/0xb0 [mmc_core]
        [<0000000004adcbf6>] mmc_sdio_init_card+0xde/0x170 [mmc_core]
        [<000000007538fea0>] mmc_attach_sdio+0xcb/0x1b0 [mmc_core]
        [<00000000d4fdeba7>] mmc_rescan+0x54a/0x640 [mmc_core]
    
    unreferenced object 0xffff888112511000 (size 2048):
      comm "kworker/3:2", pid 65, jiffies 4294741623 (age 124.766s)
      hex dump (first 32 bytes):
        00 40 51 12 81 88 ff ff e0 58 8d 06 81 88 ff ff  .@Q......X......
        10 10 51 12 81 88 ff ff 10 10 51 12 81 88 ff ff  ..Q.......Q.....
      backtrace:
        [<000000009e5931da>] kmalloc_trace+0x21/0x110
        [<00000000fcbe706c>] sdio_alloc_func+0x35/0x100 [mmc_core]
        [<00000000c68f4b50>] mmc_attach_sdio.cold.18+0xb1/0x395 [mmc_core]
        [<00000000d4fdeba7>] mmc_rescan+0x54a/0x640 [mmc_core]
    
    Fixes: 3d10a1ba0d37 ("sdio: fix reference counting in sdio_remove_func()")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230130125808.3471254-1-yangyingliang@huawei.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98895c225e28a901d3b90d85ba65a41967dbb750
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Tue Feb 7 18:28:20 2023 +0000

    ipv4: Fix incorrect route flushing when source address is deleted
    
    [ Upstream commit f96a3d74554df537b6db5c99c27c80e7afadc8d1 ]
    
    Cited commit added the table ID to the FIB info structure, but did not
    prevent structures with different table IDs from being consolidated.
    This can lead to routes being flushed from a VRF when an address is
    deleted from a different VRF.
    
    Fix by taking the table ID into account when looking for a matching FIB
    info. This is already done for FIB info structures backed by a nexthop
    object in fib_find_info_nh().
    
    Add test cases that fail before the fix:
    
     # ./fib_tests.sh -t ipv4_del_addr
    
     IPv4 delete address route tests
         Regular FIB info
         TEST: Route removed from VRF when source address deleted            [ OK ]
         TEST: Route in default VRF not removed                              [ OK ]
         TEST: Route removed in default VRF when source address deleted      [ OK ]
         TEST: Route in VRF is not removed by address delete                 [ OK ]
         Identical FIB info with different table ID
         TEST: Route removed from VRF when source address deleted            [FAIL]
         TEST: Route in default VRF not removed                              [ OK ]
     RTNETLINK answers: File exists
         TEST: Route removed in default VRF when source address deleted      [ OK ]
         TEST: Route in VRF is not removed by address delete                 [FAIL]
    
     Tests passed:   6
     Tests failed:   2
    
    And pass after:
    
     # ./fib_tests.sh -t ipv4_del_addr
    
     IPv4 delete address route tests
         Regular FIB info
         TEST: Route removed from VRF when source address deleted            [ OK ]
         TEST: Route in default VRF not removed                              [ OK ]
         TEST: Route removed in default VRF when source address deleted      [ OK ]
         TEST: Route in VRF is not removed by address delete                 [ OK ]
         Identical FIB info with different table ID
         TEST: Route removed from VRF when source address deleted            [ OK ]
         TEST: Route in default VRF not removed                              [ OK ]
         TEST: Route removed in default VRF when source address deleted      [ OK ]
         TEST: Route in VRF is not removed by address delete                 [ OK ]
    
     Tests passed:   8
     Tests failed:   0
    
    Fixes: 5a56a0b3a45d ("net: Don't delete routes in different VRFs")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Shaoying Xu <shaoyi@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04a331c9dd66d7d530a85ff365456cc2470e7a85
Author: Shaoying Xu <shaoyi@amazon.com>
Date:   Tue Feb 7 18:28:19 2023 +0000

    Revert "ipv4: Fix incorrect route flushing when source address is deleted"
    
    This reverts commit 2537b637eac0bd546f63e1492a34edd30878e8d4 that
    deleted the whole fib_tests.sh by mistake and caused fib_tests failure
    in kselftests run.
    
    Signed-off-by: Shaoying Xu <shaoyi@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85eda8088334046497e9b75d352c2c34036c6752
Author: Brian Foster <bfoster@redhat.com>
Date:   Thu Feb 16 10:50:19 2023 +0530

    xfs: sync lazy sb accounting on quiesce of read-only mounts
    
    commit 50d25484bebe94320c49dd1347d3330c7063bbdb upstream.
    
    [ Modify xfs_log_unmount_write() to return zero when the log is in a read-only
    state ]
    
    xfs_log_sbcount() syncs the superblock specifically to accumulate
    the in-core percpu superblock counters and commit them to disk. This
    is required to maintain filesystem consistency across quiesce
    (freeze, read-only mount/remount) or unmount when lazy superblock
    accounting is enabled because individual transactions do not update
    the superblock directly.
    
    This mechanism works as expected for writable mounts, but
    xfs_log_sbcount() skips the update for read-only mounts. Read-only
    mounts otherwise still allow log recovery and write out an unmount
    record during log quiesce. If a read-only mount performs log
    recovery, it can modify the in-core superblock counters and write an
    unmount record when the filesystem unmounts without ever syncing the
    in-core counters. This leaves the filesystem with a clean log but in
    an inconsistent state with regard to lazy sb counters.
    
    Update xfs_log_sbcount() to use the same logic
    xfs_log_unmount_write() uses to determine when to write an unmount
    record. This ensures that lazy accounting is always synced before
    the log is cleaned. Refactor this logic into a new helper to
    distinguish between a writable filesystem and a writable log.
    Specifically, the log is writable unless the filesystem is mounted
    with the norecovery mount option, the underlying log device is
    read-only, or the filesystem is shutdown. Drop the freeze state
    check because the update is already allowed during the freezing
    process and no context calls this function on an already frozen fs.
    Also, retain the shutdown check in xfs_log_unmount_write() to catch
    the case where the preceding log force might have triggered a
    shutdown.
    
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Gao Xiang <hsiangkao@redhat.com>
    Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Bill O'Donnell <billodo@redhat.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb8ee907c14516e42aaf9377c93b76bd5b0fcbe2
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Thu Feb 16 10:50:18 2023 +0530

    xfs: prevent UAF in xfs_log_item_in_current_chkpt
    
    commit f8d92a66e810acbef6ddbc0bd0cbd9b117ce8acd upstream.
    
    [ Continue to interpret xfs_log_item->li_seq as an LSN rather than a CIL sequence
      number. ]
    
    While I was running with KASAN and lockdep enabled, I stumbled upon an
    KASAN report about a UAF to a freed CIL checkpoint.  Looking at the
    comment for xfs_log_item_in_current_chkpt, it seems pretty obvious to me
    that the original patch to xfs_defer_finish_noroll should have done
    something to lock the CIL to prevent it from switching the CIL contexts
    while the predicate runs.
    
    For upper level code that needs to know if a given log item is new
    enough not to need relogging, add a new wrapper that takes the CIL
    context lock long enough to sample the current CIL context.  This is
    kind of racy in that the CIL can switch the contexts immediately after
    sampling, but that's ok because the consequence is that the defer ops
    code is a little slow to relog items.
    
     ==================================================================
     BUG: KASAN: use-after-free in xfs_log_item_in_current_chkpt+0x139/0x160 [xfs]
     Read of size 8 at addr ffff88804ea5f608 by task fsstress/527999
    
     CPU: 1 PID: 527999 Comm: fsstress Tainted: G      D      5.16.0-rc4-xfsx #rc4
     Call Trace:
      <TASK>
      dump_stack_lvl+0x45/0x59
      print_address_description.constprop.0+0x1f/0x140
      kasan_report.cold+0x83/0xdf
      xfs_log_item_in_current_chkpt+0x139/0x160
      xfs_defer_finish_noroll+0x3bb/0x1e30
      __xfs_trans_commit+0x6c8/0xcf0
      xfs_reflink_remap_extent+0x66f/0x10e0
      xfs_reflink_remap_blocks+0x2dd/0xa90
      xfs_file_remap_range+0x27b/0xc30
      vfs_dedupe_file_range_one+0x368/0x420
      vfs_dedupe_file_range+0x37c/0x5d0
      do_vfs_ioctl+0x308/0x1260
      __x64_sys_ioctl+0xa1/0x170
      do_syscall_64+0x35/0x80
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f2c71a2950b
     Code: 0f 1e fa 48 8b 05 85 39 0d 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 55 39 0d 00 f7 d8 64 89 01 48
     RSP: 002b:00007ffe8c0e03c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
     RAX: ffffffffffffffda RBX: 00005600862a8740 RCX: 00007f2c71a2950b
     RDX: 00005600862a7be0 RSI: 00000000c0189436 RDI: 0000000000000004
     RBP: 000000000000000b R08: 0000000000000027 R09: 0000000000000003
     R10: 0000000000000000 R11: 0000000000000246 R12: 000000000000005a
     R13: 00005600862804a8 R14: 0000000000016000 R15: 00005600862a8a20
      </TASK>
    
     Allocated by task 464064:
      kasan_save_stack+0x1e/0x50
      __kasan_kmalloc+0x81/0xa0
      kmem_alloc+0xcd/0x2c0 [xfs]
      xlog_cil_ctx_alloc+0x17/0x1e0 [xfs]
      xlog_cil_push_work+0x141/0x13d0 [xfs]
      process_one_work+0x7f6/0x1380
      worker_thread+0x59d/0x1040
      kthread+0x3b0/0x490
      ret_from_fork+0x1f/0x30
    
     Freed by task 51:
      kasan_save_stack+0x1e/0x50
      kasan_set_track+0x21/0x30
      kasan_set_free_info+0x20/0x30
      __kasan_slab_free+0xed/0x130
      slab_free_freelist_hook+0x7f/0x160
      kfree+0xde/0x340
      xlog_cil_committed+0xbfd/0xfe0 [xfs]
      xlog_cil_process_committed+0x103/0x1c0 [xfs]
      xlog_state_do_callback+0x45d/0xbd0 [xfs]
      xlog_ioend_work+0x116/0x1c0 [xfs]
      process_one_work+0x7f6/0x1380
      worker_thread+0x59d/0x1040
      kthread+0x3b0/0x490
      ret_from_fork+0x1f/0x30
    
     Last potentially related work creation:
      kasan_save_stack+0x1e/0x50
      __kasan_record_aux_stack+0xb7/0xc0
      insert_work+0x48/0x2e0
      __queue_work+0x4e7/0xda0
      queue_work_on+0x69/0x80
      xlog_cil_push_now.isra.0+0x16b/0x210 [xfs]
      xlog_cil_force_seq+0x1b7/0x850 [xfs]
      xfs_log_force_seq+0x1c7/0x670 [xfs]
      xfs_file_fsync+0x7c1/0xa60 [xfs]
      __x64_sys_fsync+0x52/0x80
      do_syscall_64+0x35/0x80
      entry_SYSCALL_64_after_hwframe+0x44/0xae
    
     The buggy address belongs to the object at ffff88804ea5f600
      which belongs to the cache kmalloc-256 of size 256
     The buggy address is located 8 bytes inside of
      256-byte region [ffff88804ea5f600, ffff88804ea5f700)
     The buggy address belongs to the page:
     page:ffffea00013a9780 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff88804ea5ea00 pfn:0x4ea5e
     head:ffffea00013a9780 order:1 compound_mapcount:0
     flags: 0x4fff80000010200(slab|head|node=1|zone=1|lastcpupid=0xfff)
     raw: 04fff80000010200 ffffea0001245908 ffffea00011bd388 ffff888004c42b40
     raw: ffff88804ea5ea00 0000000000100009 00000001ffffffff 0000000000000000
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
      ffff88804ea5f500: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      ffff88804ea5f580: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     >ffff88804ea5f600: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                           ^
      ffff88804ea5f680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff88804ea5f700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ==================================================================
    
    Fixes: 4e919af7827a ("xfs: periodically relog deferred intent items")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c07806ab05c099887055a303bec0b6df885b9fa
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:17 2023 +0530

    xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
    
    commit a5336d6bb2d02d0e9d4d3c8be04b80b8b68d56c8 upstream.
    
    In commit 27c14b5daa82 we started tracking the last inode seen during an
    inode walk to avoid infinite loops if a corrupt inobt record happens to
    have a lower ir_startino than the record preceeding it.  Unfortunately,
    the assertion trips over the case where there are completely empty inobt
    records (which can happen quite easily on 64k page filesystems) because
    we advance the tracking cursor without actually putting the empty record
    into the processing buffer.  Fix the assert to allow for this case.
    
    Reported-by: zlang@redhat.com
    Fixes: 27c14b5daa82 ("xfs: ensure inobt record walks always make forward progress")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Zorro Lang <zlang@redhat.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 313699d5053cbdf85713f45d7aee2ec9b16108fa
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:16 2023 +0530

    xfs: ensure inobt record walks always make forward progress
    
    commit 27c14b5daa82861220d6fa6e27b51f05f21ffaa7 upstream.
    
    [ In xfs_iwalk_ag(), Replace a call to XFS_IS_CORRUPT() with a call to
      ASSERT() ]
    
    The aim of the inode btree record iterator function is to call a
    callback on every record in the btree.  To avoid having to tear down and
    recreate the inode btree cursor around every callback, it caches a
    certain number of records in a memory buffer.  After each batch of
    callback invocations, we have to perform a btree lookup to find the
    next record after where we left off.
    
    However, if the keys of the inode btree are corrupt, the lookup might
    put us in the wrong part of the inode btree, causing the walk function
    to loop forever.  Therefore, we add extra cursor tracking to make sure
    that we never go backwards neither when performing the lookup nor when
    jumping to the next inobt record.  This also fixes an off by one error
    where upon resume the lookup should have been for the inode /after/ the
    point at which we stopped.
    
    Found by fuzzing xfs/460 with keys[2].startino = ones causing bulkstat
    and quotacheck to hang.
    
    Fixes: a211432c27ff ("xfs: create simplified inode walk function")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f9309a9f58052c6bf117644f9689dfbb7564815
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:15 2023 +0530

    xfs: fix missing CoW blocks writeback conversion retry
    
    commit c2f09217a4305478c55adc9a98692488dd19cd32 upstream.
    
    [ Set xfs_writepage_ctx->fork to XFS_DATA_FORK since 5.4.y tracks current
      extent's fork in this variable ]
    
    In commit 7588cbeec6df, we tried to fix a race stemming from the lack of
    coordination between higher level code that wants to allocate and remap
    CoW fork extents into the data fork.  Christoph cites as examples the
    always_cow mode, and a directio write completion racing with writeback.
    
    According to the comments before the goto retry, we want to restart the
    lookup to catch the extent in the data fork, but we don't actually reset
    whichfork or cow_fsb, which means the second try executes using stale
    information.  Up until now I think we've gotten lucky that either
    there's something left in the CoW fork to cause cow_fsb to be reset, or
    either data/cow fork sequence numbers have advanced enough to force a
    fresh lookup from the data fork.  However, if we reach the retry with an
    empty stable CoW fork and a stable data fork, neither of those things
    happens.  The retry foolishly re-calls xfs_convert_blocks on the CoW
    fork which fails again.  This time, we toss the write.
    
    I've recently been working on extending reflink to the realtime device.
    When the realtime extent size is larger than a single block, we have to
    force the page cache to CoW the entire rt extent if a write (or
    fallocate) are not aligned with the rt extent size.  The strategy I've
    chosen to deal with this is derived from Dave's blocksize > pagesize
    series: dirtying around the write range, and ensuring that writeback
    always starts mapping on an rt extent boundary.  This has brought this
    race front and center, since generic/522 blows up immediately.
    
    However, I'm pretty sure this is a bug outright, independent of that.
    
    Fixes: 7588cbeec6df ("xfs: retry COW fork delalloc conversion when no extent was found")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6246b3a18f7e8b55f5c8024685a352c23b537229
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:14 2023 +0530

    xfs: only relog deferred intent items if free space in the log gets low
    
    commit 74f4d6a1e065c92428c5b588099e307a582d79d9 upstream.
    
    Now that we have the ability to ask the log how far the tail needs to be
    pushed to maintain its free space targets, augment the decision to relog
    an intent item so that we only do it if the log has hit the 75% full
    threshold.  There's no point in relogging an intent into the same
    checkpoint, and there's no need to relog if there's plenty of free space
    in the log.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09d61814476c0d105882c6eba4d2192a84bd7173
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:13 2023 +0530

    xfs: expose the log push threshold
    
    commit ed1575daf71e4e21d8ae735b6e687c95454aaa17 upstream.
    
    Separate the computation of the log push threshold and the push logic in
    xlog_grant_push_ail.  This enables higher level code to determine (for
    example) that it is holding on to a logged intent item and the log is so
    busy that it is more than 75% full.  In that case, it would be desirable
    to move the log item towards the head to release the tail, which we will
    cover in the next patch.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d711e41361ceafc5ac66678c449fba4ea2b5fae
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:12 2023 +0530

    xfs: periodically relog deferred intent items
    
    commit 4e919af7827a6adfc28e82cd6c4ffcfcc3dd6118 upstream.
    
    [ Modify xfs_{bmap|extfree|refcount|rmap}_item.c to fix merge conflicts ]
    
    There's a subtle design flaw in the deferred log item code that can lead
    to pinning the log tail.  Taking up the defer ops chain examples from
    the previous commit, we can get trapped in sequences like this:
    
    Caller hands us a transaction t0 with D0-D3 attached.  The defer ops
    chain will look like the following if the transaction rolls succeed:
    
    t1: D0(t0), D1(t0), D2(t0), D3(t0)
    t2: d4(t1), d5(t1), D1(t0), D2(t0), D3(t0)
    t3: d5(t1), D1(t0), D2(t0), D3(t0)
    ...
    t9: d9(t7), D3(t0)
    t10: D3(t0)
    t11: d10(t10), d11(t10)
    t12: d11(t10)
    
    In transaction 9, we finish d9 and try to roll to t10 while holding onto
    an intent item for D3 that we logged in t0.
    
    The previous commit changed the order in which we place new defer ops in
    the defer ops processing chain to reduce the maximum chain length.  Now
    make xfs_defer_finish_noroll capable of relogging the entire chain
    periodically so that we can always move the log tail forward.  Most
    chains will never get relogged, except for operations that generate very
    long chains (large extents containing many blocks with different sharing
    levels) or are on filesystems with small logs and a lot of ongoing
    metadata updates.
    
    Callers are now required to ensure that the transaction reservation is
    large enough to handle logging done items and new intent items for the
    maximum possible chain length.  Most callers are careful to keep the
    chain lengths low, so the overhead should be minimal.
    
    The decision to relog an intent item is made based on whether the intent
    was logged in a previous checkpoint, since there's no point in relogging
    an intent into the same checkpoint.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 870e7d7108432f0c6fad2dec6ef6060d4ee49169
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:11 2023 +0530

    xfs: change the order in which child and parent defer ops are finished
    
    commit 27dada070d59c28a441f1907d2cec891b17dcb26 upstream.
    
    The defer ops code has been finishing items in the wrong order -- if a
    top level defer op creates items A and B, and finishing item A creates
    more defer ops A1 and A2, we'll put the new items on the end of the
    chain and process them in the order A B A1 A2.  This is kind of weird,
    since it's convenient for programmers to be able to think of A and B as
    an ordered sequence where all the sub-tasks for A must finish before we
    move on to B, e.g. A A1 A2 D.
    
    Right now, our log intent items are not so complex that this matters,
    but this will become important for the atomic extent swapping patchset.
    In order to maintain correct reference counting of extents, we have to
    unmap and remap extents in that order, and we want to complete that work
    before moving on to the next range that the user wants to swap.  This
    patch fixes defer ops to satsify that requirement.
    
    The primary symptom of the incorrect order was noticed in an early
    performance analysis of the atomic extent swap code.  An astonishingly
    large number of deferred work items accumulated when userspace requested
    an atomic update of two very fragmented files.  The cause of this was
    traced to the same ordering bug in the inner loop of
    xfs_defer_finish_noroll.
    
    If the ->finish_item method of a deferred operation queues new deferred
    operations, those new deferred ops are appended to the tail of the
    pending work list.  To illustrate, say that a caller creates a
    transaction t0 with four deferred operations D0-D3.  The first thing
    defer ops does is roll the transaction to t1, leaving us with:
    
    t1: D0(t0), D1(t0), D2(t0), D3(t0)
    
    Let's say that finishing each of D0-D3 will create two new deferred ops.
    After finish D0 and roll, we'll have the following chain:
    
    t2: D1(t0), D2(t0), D3(t0), d4(t1), d5(t1)
    
    d4 and d5 were logged to t1.  Notice that while we're about to start
    work on D1, we haven't actually completed all the work implied by D0
    being finished.  So far we've been careful (or lucky) to structure the
    dfops callers such that D1 doesn't depend on d4 or d5 being finished,
    but this is a potential logic bomb.
    
    There's a second problem lurking.  Let's see what happens as we finish
    D1-D3:
    
    t3: D2(t0), D3(t0), d4(t1), d5(t1), d6(t2), d7(t2)
    t4: D3(t0), d4(t1), d5(t1), d6(t2), d7(t2), d8(t3), d9(t3)
    t5: d4(t1), d5(t1), d6(t2), d7(t2), d8(t3), d9(t3), d10(t4), d11(t4)
    
    Let's say that d4-d11 are simple work items that don't queue any other
    operations, which means that we can complete each d4 and roll to t6:
    
    t6: d5(t1), d6(t2), d7(t2), d8(t3), d9(t3), d10(t4), d11(t4)
    t7: d6(t2), d7(t2), d8(t3), d9(t3), d10(t4), d11(t4)
    ...
    t11: d10(t4), d11(t4)
    t12: d11(t4)
    <done>
    
    When we try to roll to transaction #12, we're holding defer op d11,
    which we logged way back in t4.  This means that the tail of the log is
    pinned at t4.  If the log is very small or there are a lot of other
    threads updating metadata, this means that we might have wrapped the log
    and cannot get roll to t11 because there isn't enough space left before
    we'd run into t4.
    
    Let's shift back to the original failure.  I mentioned before that I
    discovered this flaw while developing the atomic file update code.  In
    that scenario, we have a defer op (D0) that finds a range of file blocks
    to remap, creates a handful of new defer ops to do that, and then asks
    to be continued with however much work remains.
    
    So, D0 is the original swapext deferred op.  The first thing defer ops
    does is rolls to t1:
    
    t1: D0(t0)
    
    We try to finish D0, logging d1 and d2 in the process, but can't get all
    the work done.  We log a done item and a new intent item for the work
    that D0 still has to do, and roll to t2:
    
    t2: D0'(t1), d1(t1), d2(t1)
    
    We roll and try to finish D0', but still can't get all the work done, so
    we log a done item and a new intent item for it, requeue D0 a second
    time, and roll to t3:
    
    t3: D0''(t2), d1(t1), d2(t1), d3(t2), d4(t2)
    
    If it takes 48 more rolls to complete D0, then we'll finally dispense
    with D0 in t50:
    
    t50: D<fifty primes>(t49), d1(t1), ..., d102(t50)
    
    We then try to roll again to get a chain like this:
    
    t51: d1(t1), d2(t1), ..., d101(t50), d102(t50)
    ...
    t152: d102(t50)
    <done>
    
    Notice that in rolling to transaction #51, we're holding on to a log
    intent item for d1 that was logged in transaction #1.  This means that
    the tail of the log is pinned at t1.  If the log is very small or there
    are a lot of other threads updating metadata, this means that we might
    have wrapped the log and cannot roll to t51 because there isn't enough
    space left before we'd run into t1.  This is of course problem #2 again.
    
    But notice the third problem with this scenario: we have 102 defer ops
    tied to this transaction!  Each of these items are backed by pinned
    kernel memory, which means that we risk OOM if the chains get too long.
    
    Yikes.  Problem #1 is a subtle logic bomb that could hit someone in the
    future; problem #2 applies (rarely) to the current upstream, and problem
    
    This is not how incremental deferred operations were supposed to work.
    The dfops design of logging in the same transaction an intent-done item
    and a new intent item for the work remaining was to make it so that we
    only have to juggle enough deferred work items to finish that one small
    piece of work.  Deferred log item recovery will find that first
    unfinished work item and restart it, no matter how many other intent
    items might follow it in the log.  Therefore, it's ok to put the new
    intents at the start of the dfops chain.
    
    For the first example, the chains look like this:
    
    t2: d4(t1), d5(t1), D1(t0), D2(t0), D3(t0)
    t3: d5(t1), D1(t0), D2(t0), D3(t0)
    ...
    t9: d9(t7), D3(t0)
    t10: D3(t0)
    t11: d10(t10), d11(t10)
    t12: d11(t10)
    
    For the second example, the chains look like this:
    
    t1: D0(t0)
    t2: d1(t1), d2(t1), D0'(t1)
    t3: d2(t1), D0'(t1)
    t4: D0'(t1)
    t5: d1(t4), d2(t4), D0''(t4)
    ...
    t148: D0<50 primes>(t147)
    t149: d101(t148), d102(t148)
    t150: d102(t148)
    <done>
    
    This actually sucks more for pinning the log tail (we try to roll to t10
    while holding an intent item that was logged in t1) but we've solved
    problem #1.  We've also reduced the maximum chain length from:
    
        sum(all the new items) + nr_original_items
    
    to:
    
        max(new items that each original item creates) + nr_original_items
    
    This solves problem #3 by sharply reducing the number of defer ops that
    can be attached to a transaction at any given time.  The change makes
    the problem of log tail pinning worse, but is improvement we need to
    solve problem #2.  Actually solving #2, however, is left to the next
    patch.
    
    Note that a subsequent analysis of some hard-to-trigger reflink and COW
    livelocks on extremely fragmented filesystems (or systems running a lot
    of IO threads) showed the same symptoms -- uncomfortably large numbers
    of incore deferred work items and occasional stalls in the transaction
    grant code while waiting for log reservations.  I think this patch and
    the next one will also solve these problems.
    
    As originally written, the code used list_splice_tail_init instead of
    list_splice_init, so change that, and leave a short comment explaining
    our actions.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5af1d5c2dfedcb839c3256e731a9eb6d251742c
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:10 2023 +0530

    xfs: fix an incore inode UAF in xfs_bui_recover
    
    commit ff4ab5e02a0447dd1e290883eb6cd7d94848e590 upstream.
    
    In xfs_bui_item_recover, there exists a use-after-free bug with regards
    to the inode that is involved in the bmap replay operation.  If the
    mapping operation does not complete, we call xfs_bmap_unmap_extent to
    create a deferred op to finish the unmapping work, and we retain a
    pointer to the incore inode.
    
    Unfortunately, the very next thing we do is commit the transaction and
    drop the inode.  If reclaim tears down the inode before we try to finish
    the defer ops, we dereference garbage and blow up.  Therefore, create a
    way to join inodes to the defer ops freezer so that we can maintain the
    xfs_inode reference until we're done with the inode.
    
    Note: This imposes the requirement that there be enough memory to keep
    every incore inode in memory throughout recovery.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efcdc2e70e01126dc660a13246fdd391cfb56b32
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:09 2023 +0530

    xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering
    
    commit 64a3f3315bc60f710a0a25c1798ac0ea58c6fa1f upstream.
    
    In most places in XFS, we have a specific order in which we gather
    resources: grab the inode, allocate a transaction, then lock the inode.
    xfs_bui_item_recover doesn't do it in that order, so fix it to be more
    consistent.  This also makes the error bailout code a bit less weird.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abad319deef5f3ab893e8a0dd6fbd0645ca26f88
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:08 2023 +0530

    xfs: clean up bmap intent item recovery checking
    
    commit 919522e89f8e71fc6a8f8abe17be4011573c6ea0 upstream.
    
    The bmap intent item checking code in xfs_bui_item_recover is spread all
    over the function.  We should check the recovered log item at the top
    before we allocate any resources or do anything else, so do that.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6601531db86142e49e7537fabd048bf5243e5886
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:07 2023 +0530

    xfs: xfs_defer_capture should absorb remaining transaction reservation
    
    commit 929b92f64048d90d23e40a59c47adf59f5026903 upstream.
    
    When xfs_defer_capture extracts the deferred ops and transaction state
    from a transaction, it should record the transaction reservation type
    from the old transaction so that when we continue the dfops chain, we
    still use the same reservation parameters.
    
    Doing this means that the log item recovery functions get to determine
    the transaction reservation instead of abusing tr_itruncate in yet
    another part of xfs.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 411b14e68c68d6ce4fab4d91760fecc1c7cfb380
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:06 2023 +0530

    xfs: xfs_defer_capture should absorb remaining block reservations
    
    commit 4f9a60c48078c0efa3459678fa8d6e050e8ada5d upstream.
    
    When xfs_defer_capture extracts the deferred ops and transaction state
    from a transaction, it should record the remaining block reservations so
    that when we continue the dfops chain, we can reserve the same number of
    blocks to use.  We capture the reservations for both data and realtime
    volumes.
    
    This adds the requirement that every log intent item recovery function
    must be careful to reserve enough blocks to handle both itself and all
    defer ops that it can queue.  On the other hand, this enables us to do
    away with the handwaving block estimation nonsense that was going on in
    xlog_finish_defer_ops.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3324249e6ecd300774503c8450975feecdbc4f7e
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:05 2023 +0530

    xfs: proper replay of deferred ops queued during log recovery
    
    commit e6fff81e487089e47358a028526a9f63cdbcd503 upstream.
    
    When we replay unfinished intent items that have been recovered from the
    log, it's possible that the replay will cause the creation of more
    deferred work items.  As outlined in commit 509955823cc9c ("xfs: log
    recovery should replay deferred ops in order"), later work items have an
    implicit ordering dependency on earlier work items.  Therefore, recovery
    must replay the items (both recovered and created) in the same order
    that they would have been during normal operation.
    
    For log recovery, we enforce this ordering by using an empty transaction
    to collect deferred ops that get created in the process of recovering a
    log intent item to prevent them from being committed before the rest of
    the recovered intent items.  After we finish committing all the
    recovered log items, we allocate a transaction with an enormous block
    reservation, splice our huge list of created deferred ops into that
    transaction, and commit it, thereby finishing all those ops.
    
    This is /really/ hokey -- it's the one place in XFS where we allow
    nested transactions; the splicing of the defer ops list is is inelegant
    and has to be done twice per recovery function; and the broken way we
    handle inode pointers and block reservations cause subtle use-after-free
    and allocator problems that will be fixed by this patch and the two
    patches after it.
    
    Therefore, replace the hokey empty transaction with a structure designed
    to capture each chain of deferred ops that are created as part of
    recovering a single unfinished log intent.  Finally, refactor the loop
    that replays those chains to do so using one transaction per chain.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c89c0430561e1263ed0faa3cc2b4ed96c61206c
Author: Dave Chinner <dchinner@redhat.com>
Date:   Thu Feb 16 10:50:04 2023 +0530

    xfs: fix finobt btree block recovery ordering
    
    commit 671459676ab0e1d371c8d6b184ad1faa05b6941e upstream.
    
    [ In 5.4.y, xlog_recover_get_buf_lsn() is defined inside
      fs/xfs/xfs_log_recover.c ]
    
    Nathan popped up on #xfs and pointed out that we fail to handle
    finobt btree blocks in xlog_recover_get_buf_lsn(). This means they
    always fall through the entire magic number matching code to "recover
    immediately". Whilst most of the time this is the correct behaviour,
    occasionally it will be incorrect and could potentially overwrite
    more recent metadata because we don't check the LSN in the on disk
    metadata at all.
    
    This bug has been present since the finobt was first introduced, and
    is a potential cause of the occasional xfs_iget_check_free_state()
    failures we see that indicate that the inode btree state does not
    match the on disk inode state.
    
    Fixes: aafc3c246529 ("xfs: support the XFS_BTNUM_FINOBT free inode btree type")
    Reported-by: Nathan Scott <nathans@redhat.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6678b2787bb4a43f0bf5bc8e0ff819d41e5677d3
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 16 10:50:03 2023 +0530

    xfs: log new intent items created as part of finishing recovered intent items
    
    commit 93293bcbde93567efaf4e6bcd58cad270e1fcbf5 upstream.
    
    [Slightly edit fs/xfs/xfs_bmap_item.c & fs/xfs/xfs_refcount_item.c to resolve
    merge conflicts]
    
    During a code inspection, I found a serious bug in the log intent item
    recovery code when an intent item cannot complete all the work and
    decides to requeue itself to get that done.  When this happens, the
    item recovery creates a new incore deferred op representing the
    remaining work and attaches it to the transaction that it allocated.  At
    the end of _item_recover, it moves the entire chain of deferred ops to
    the dummy parent_tp that xlog_recover_process_intents passed to it, but
    fail to log a new intent item for the remaining work before committing
    the transaction for the single unit of work.
    
    xlog_finish_defer_ops logs those new intent items once recovery has
    finished dealing with the intent items that it recovered, but this isn't
    sufficient.  If the log is forced to disk after a recovered log item
    decides to requeue itself and the system goes down before we call
    xlog_finish_defer_ops, the second log recovery will never see the new
    intent item and therefore has no idea that there was more work to do.
    It will finish recovery leaving the filesystem in a corrupted state.
    
    The same logic applies to /any/ deferred ops added during intent item
    recovery, not just the one handling the remaining work.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 562da8e70463cb09487bee7a68260013371befe2
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:50:02 2023 +0530

    xfs: refactor xfs_defer_finish_noroll
    
    commit bb47d79750f1a68a75d4c7defc2da934ba31de14 upstream.
    
    Split out a helper that operates on a single xfs_defer_pending structure
    to untangle the code.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42a2406f9015c7f9f4b3835e2e8cc2e86449ef7c
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:50:01 2023 +0530

    xfs: turn dfp_intent into a xfs_log_item
    
    commit 13a8333339072b8654c1d2c75550ee9f41ee15de upstream.
    
    All defer op instance place their own extension of the log item into
    the dfp_intent field.  Replace that with a xfs_log_item to improve type
    safety and make the code easier to follow.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e11f1516fc9fbd43d5a7f742e55f9ddb18a0c778
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:50:00 2023 +0530

    xfs: merge the ->diff_items defer op into ->create_intent
    
    commit d367a868e46b025a8ced8e00ef2b3a3c2f3bf732 upstream.
    
    This avoids a per-item indirect call, and also simplifies the interface
    a bit.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e84096edf88604f92412baea330149bec4be3848
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:49:59 2023 +0530

    xfs: merge the ->log_item defer op into ->create_intent
    
    commit c1f09188e8de0ae65433cb9c8ace4feb66359bcc upstream.
    
    These are aways called together, and my merging them we reduce the amount
    of indirect calls, improve type safety and in general clean up the code
    a bit.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64b21eaa33f591822472103a0a6dba7da92d19e5
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:49:58 2023 +0530

    xfs: factor out a xfs_defer_create_intent helper
    
    commit e046e949486ec92d83b2ccdf0e7e9144f74ef028 upstream.
    
    Create a helper that encapsulates the whole logic to create a defer
    intent.  This reorders some of the work that was done, but none of
    that has an affect on the operation as only fields that don't directly
    interact are affected.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d24633f3c2581865e2d3f585ecb991c053226b00
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:49:57 2023 +0530

    xfs: remove the xfs_inode_log_item_t typedef
    
    commit fd9cbe51215198ccffa64169c98eae35b0916088 upstream.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0373eeaaaa329900191f19b994d38dff8a47cb7
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:49:56 2023 +0530

    xfs: remove the xfs_efd_log_item_t typedef
    
    commit c84e819090f39e96e4d432c9047a50d2424f99e0 upstream.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94e0639992dd42e13b6ea485d8634c969b21c749
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 16 10:49:55 2023 +0530

    xfs: remove the xfs_efi_log_item_t typedef
    
    commit 82ff450b2d936d778361a1de43eb078cc043c7fe upstream.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83ef55c4281f1b4c6bd4457c2e96ccd1c9e80200
Author: Florian Westphal <fw@strlen.de>
Date:   Sat Aug 20 17:54:06 2022 +0200

    netfilter: nft_tproxy: restrict to prerouting hook
    
    commit 18bbc3213383a82b05383827f4b1b882e3f0a5a5 upstream.
    
    TPROXY is only allowed from prerouting, but nft_tproxy doesn't check this.
    This fixes a crash (null dereference) when using tproxy from e.g. output.
    
    Fixes: 4ed8eb6570a4 ("netfilter: nf_tables: Add native tproxy support")
    Reported-by: Shell Chen <xierch@gmail.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Qingfang DENG <dqfext@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6ac5e6be513d6095a6c38440c1139de022870ba
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Jan 20 21:47:16 2023 +0800

    btrfs: free device in btrfs_close_devices for a single device filesystem
    
    commit 5f58d783fd7823b2c2d5954d1126e702f94bfc4c upstream.
    
    We have this check to make sure we don't accidentally add older devices
    that may have disappeared and re-appeared with an older generation from
    being added to an fs_devices (such as a replace source device). This
    makes sense, we don't want stale disks in our file system. However for
    single disks this doesn't really make sense.
    
    I've seen this in testing, but I was provided a reproducer from a
    project that builds btrfs images on loopback devices. The loopback
    device gets cached with the new generation, and then if it is re-used to
    generate a new file system we'll fail to mount it because the new fs is
    "older" than what we have in cache.
    
    Fix this by freeing the cache when closing the device for a single device
    filesystem. This will ensure that the mount command passed device path is
    scanned successfully during the next mount.
    
    CC: stable@vger.kernel.org # 5.10+
    Reported-by: Daan De Meyer <daandemeyer@fb.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4326d0080f7e84fba775da41d158f46cf9d3f1c2
Author: Seth Jenkins <sethjenkins@google.com>
Date:   Tue Jan 31 12:25:55 2023 -0500

    aio: fix mremap after fork null-deref
    
    commit 81e9d6f8647650a7bead74c5f926e29970e834d1 upstream.
    
    Commit e4a0d3e720e7 ("aio: Make it possible to remap aio ring") introduced
    a null-deref if mremap is called on an old aio mapping after fork as
    mm->ioctx_table will be set to NULL.
    
    [jmoyer@redhat.com: fix 80 column issue]
    Link: https://lkml.kernel.org/r/x49sffq4nvg.fsf@segfault.boston.devel.redhat.com
    Fixes: e4a0d3e720e7 ("aio: Make it possible to remap aio ring")
    Signed-off-by: Seth Jenkins <sethjenkins@google.com>
    Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Jann Horn <jannh@google.com>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62b19b9f3a0dc3135df3ea4f11f14beafd34c5f9
Author: Amit Engel <Amit.Engel@dell.com>
Date:   Mon Jan 23 14:37:28 2023 +0200

    nvme-fc: fix a missing queue put in nvmet_fc_ls_create_association
    
    [ Upstream commit 0cab4404874f2de52617de8400c844891c6ea1ce ]
    
    As part of nvmet_fc_ls_create_association there is a case where
    nvmet_fc_alloc_target_queue fails right after a new association with an
    admin queue is created. In this case, no one releases the get taken in
    nvmet_fc_alloc_target_assoc.  This fix is adding the missing put.
    
    Signed-off-by: Amit Engel <Amit.Engel@dell.com>
    Reviewed-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16409f7d9ca5bb8220e1049ea9aae0d3c94d2dfb
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Sun Jan 29 23:47:23 2023 +0100

    s390/decompressor: specify __decompress() buf len to avoid overflow
    
    [ Upstream commit 7ab41c2c08a32132ba8c14624910e2fe8ce4ba4b ]
    
    Historically calls to __decompress() didn't specify "out_len" parameter
    on many architectures including s390, expecting that no writes beyond
    uncompressed kernel image are performed. This has changed since commit
    2aa14b1ab2c4 ("zstd: import usptream v1.5.2") which includes zstd library
    commit 6a7ede3dfccb ("Reduce size of dctx by reutilizing dst buffer
    (#2751)"). Now zstd decompression code might store literal buffer in
    the unwritten portion of the destination buffer. Since "out_len" is
    not set, it is considered to be unlimited and hence free to use for
    optimization needs. On s390 this might corrupt initrd or ipl report
    which are often placed right after the decompressor buffer. Luckily the
    size of uncompressed kernel image is already known to the decompressor,
    so to avoid the problem simply specify it in the "out_len" parameter.
    
    Link: https://github.com/facebook/zstd/commit/6a7ede3dfccb
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Tested-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Link: https://lore.kernel.org/r/patch-1.thread-41c676.git-41c676c2d153.your-ad-here.call-01675030179-ext-9637@work.hours
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fbe71c5dacaa5a9960323215f118958174c81aa0
Author: Kees Cook <keescook@chromium.org>
Date:   Fri Jan 27 14:40:37 2023 -0800

    net: sched: sch: Bounds check priority
    
    [ Upstream commit de5ca4c3852f896cacac2bf259597aab5e17d9e3 ]
    
    Nothing was explicitly bounds checking the priority index used to access
    clpriop[]. WARN and bail out early if it's pathological. Seen with GCC 13:
    
    ../net/sched/sch_htb.c: In function 'htb_activate_prios':
    ../net/sched/sch_htb.c:437:44: warning: array subscript [0, 31] is outside array bounds of 'struct htb_prio[8]' [-Warray-bounds=]
      437 |                         if (p->inner.clprio[prio].feed.rb_node)
          |                             ~~~~~~~~~~~~~~~^~~~~~
    ../net/sched/sch_htb.c:131:41: note: while referencing 'clprio'
      131 |                         struct htb_prio clprio[TC_HTB_NUMPRIO];
          |                                         ^~~~~~
    
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20230127224036.never.561-kees@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09561d5e6ab0304293ba9371fecdef8f41fec605
Author: Andrey Konovalov <andrey.konovalov@linaro.org>
Date:   Fri Jan 27 00:35:39 2023 +0300

    net: stmmac: do not stop RX_CLK in Rx LPI state for qcs404 SoC
    
    [ Upstream commit 54aa39a513dbf2164ca462a19f04519b2407a224 ]
    
    Currently in phy_init_eee() the driver unconditionally configures the PHY
    to stop RX_CLK after entering Rx LPI state. This causes an LPI interrupt
    storm on my qcs404-base board.
    
    Change the PHY initialization so that for "qcom,qcs404-ethqos" compatible
    device RX_CLK continues to run even in Rx LPI state.
    
    Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a74d3b0ea984c89ab6eff6f98baf03ca30ba8eb8
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Wed Jan 25 02:59:44 2023 -0800

    net/rose: Fix to not accept on connected socket
    
    [ Upstream commit 14caefcf9837a2be765a566005ad82cd0d2a429f ]
    
    If you call listen() and accept() on an already connect()ed
    rose socket, accept() can successfully connect.
    This is because when the peer socket sends data to sendmsg,
    the skb with its own sk stored in the connected socket's
    sk->sk_receive_queue is connected, and rose_accept() dequeues
    the skb waiting in the sk->sk_receive_queue.
    
    This creates a child socket with the sk of the parent
    rose socket, which can cause confusion.
    
    Fix rose_listen() to return -EINVAL if the socket has
    already been successfully connected, and add lock_sock
    to prevent this issue.
    
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://lore.kernel.org/r/20230125105944.GA133314@ubuntu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec54c946b4127a6025647020c61cc3ac223f8568
Author: Shunsuke Mie <mie@igel.co.jp>
Date:   Tue Jan 10 12:43:10 2023 +0900

    tools/virtio: fix the vringh test for virtio ring changes
    
    [ Upstream commit 3f7b75abf41cc4143aa295f62acbb060a012868d ]
    
    Fix the build caused by missing kmsan_handle_dma() and is_power_of_2() that
    are used in drivers/virtio/virtio_ring.c.
    
    Signed-off-by: Shunsuke Mie <mie@igel.co.jp>
    Message-Id: <20230110034310.779744-1-mie@igel.co.jp>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6644685f79718a275be61ae7d24ea16c943f1292
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jan 26 17:21:24 2023 +0100

    ASoC: cs42l56: fix DT probe
    
    [ Upstream commit e18c6da62edc780e4f4f3c9ce07bdacd69505182 ]
    
    While looking through legacy platform data users, I noticed that
    the DT probing never uses data from the DT properties, as the
    platform_data structure gets overwritten directly after it
    is initialized.
    
    There have never been any boards defining the platform_data in
    the mainline kernel either, so this driver so far only worked
    with patched kernels or with the default values.
    
    For the benefit of possible downstream users, fix the DT probe
    by no longer overwriting the data.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20230126162203.2986339-1-arnd@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d23b66b16e3022a8a099c6713f2e50b37a345fb1
Author: Eduard Zingerman <eddyz87@gmail.com>
Date:   Fri Jan 6 16:22:14 2023 +0200

    selftests/bpf: Verify copy_register_state() preserves parent/live fields
    
    [ Upstream commit b9fa9bc839291020b362ab5392e5f18ba79657ac ]
    
    A testcase to check that verifier.c:copy_register_state() preserves
    register parentage chain and livness information.
    
    Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20230106142214.1040390-3-eddyz87@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a94695e0f9c6af7112c00eabee360cf2181c7cbc
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Jan 26 14:27:21 2023 -0800

    migrate: hugetlb: check for hugetlb shared PMD in node migration
    
    commit 73bdf65ea74857d7fb2ec3067a3cec0e261b1462 upstream.
    
    migrate_pages/mempolicy semantics state that CAP_SYS_NICE is required to
    move pages shared with another process to a different node.  page_mapcount
    > 1 is being used to determine if a hugetlb page is shared.  However, a
    hugetlb page will have a mapcount of 1 if mapped by multiple processes via
    a shared PMD.  As a result, hugetlb pages shared by multiple processes and
    mapped with a shared PMD can be moved by a process without CAP_SYS_NICE.
    
    To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
    consider the page shared.
    
    Link: https://lkml.kernel.org/r/20230126222721.222195-3-mike.kravetz@oracle.com
    Fixes: e2d8cf405525 ("migrate: add hugepage migration code to migrate_pages()")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcd34f1eea88d602f604fc943e3db649a4ce7a4b
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Fri Oct 9 20:42:34 2020 +0200

    bpf: Always return target ifindex in bpf_fib_lookup
    
    commit d1c362e1dd68a421cf9033404cf141a4ab734a5d upstream.
    
    The bpf_fib_lookup() helper performs a neighbour lookup for the destination
    IP and returns BPF_FIB_LKUP_NO_NEIGH if this fails, with the expectation
    that the BPF program will pass the packet up the stack in this case.
    However, with the addition of bpf_redirect_neigh() that can be used instead
    to perform the neighbour lookup, at the cost of a bit of duplicated work.
    
    For that we still need the target ifindex, and since bpf_fib_lookup()
    already has that at the time it performs the neighbour lookup, there is
    really no reason why it can't just return it in any case. So let's just
    always return the ifindex if the FIB lookup itself succeeds.
    
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David Ahern <dsahern@gmail.com>
    Link: https://lore.kernel.org/bpf/20201009184234.134214-1-toke@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 776f2ccfdcef1208da6b8fdd3438b94cd8621aa3
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Aug 18 11:35:30 2020 +0300

    nvme-pci: Move enumeration by class to be last in the table
    
    commit 0b85f59d30b91bd2b93ea7ef0816a4b7e7039e8c upstream.
    
    It's unusual that we have enumeration by class in the middle of the table.
    It might potentially be problematic in the future if we add another entry
    after it.
    
    So, move class matching entry to be the last in the ID table.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c8680988279eb9503ebca8822e4c4d74e10c9bd
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:10:31 2023 +0100

    arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive
    
    commit d182bcf300772d8b2e5f43e47fa0ebda2b767cc4 upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: 221cf34bac54 ("ARM64: dts: meson-axg: enable the eMMC controller")
    Reported-by: Peter Suti <peter.suti@streamunlimited.com>
    Tested-by: Vyacheslav Bocharov <adeep@lexina.in>
    Tested-by: Peter Suti <peter.suti@streamunlimited.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/c00655d3-02f8-6f5f-4239-ca2412420cad@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b97dab7cd9829d060ce856ed9246a54c7d01bfe
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:11:10 2023 +0100

    arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive
    
    commit ac8db4cceed218cca21c84f9d75ce88182d8b04f upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
    Tested-by: FUKAUMI Naoki <naoki@radxa.com>
    Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Tested-by: Jerome Brunet <jbrunet@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/27d89baa-b8fa-baca-541b-ef17a97cde3c@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0302e98edc8ac0175c6e727b24118c8459c6d2e
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:11:47 2023 +0100

    arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive
    
    commit 66e45351f7d6798751f98001d1fcd572024d87f0 upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: ef8d2ffedf18 ("ARM64: dts: meson-gxbb: add MMC support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/76e042e0-a610-5ed5-209f-c4d7f879df44@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1509e93916160b96d9e17ce7f1792dce9722d7bc
Author: Guo Ren <guoren@kernel.org>
Date:   Thu Jan 26 22:53:06 2023 -0500

    riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte
    
    commit 950b879b7f0251317d26bae0687e72592d607532 upstream.
    
    In commit 588a513d3425 ("arm64: Fix race condition on PG_dcache_clean
    in __sync_icache_dcache()"), we found RISC-V has the same issue as the
    previous arm64. The previous implementation didn't guarantee the correct
    sequence of operations, which means flush_icache_all() hasn't been
    called when the PG_dcache_clean was set. That would cause a risk of page
    synchronization.
    
    Fixes: 08f051eda33b ("RISC-V: Flush I$ when making a dirty page executable")
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@kernel.org>
    Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20230127035306.1819561-1-guoren@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb3187311ec2c8d515e70cc009e06a3ae54ee0db
Author: Xiubo Li <xiubli@redhat.com>
Date:   Tue Feb 7 13:04:52 2023 +0800

    ceph: flush cap releases when the session is flushed
    
    commit e7d84c6a1296d059389f7342d9b4b7defb518d3a upstream.
    
    MDS expects the completed cap release prior to responding to the
    session flush for cache drop.
    
    Cc: stable@vger.kernel.org
    Link: http://tracker.ceph.com/issues/38009
    Signed-off-by: Xiubo Li <xiubli@redhat.com>
    Reviewed-by: Venky Shankar <vshankar@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b5d37d3288d6123415bbc4b430cc50606cfced1
Author: Prashant Malani <pmalani@chromium.org>
Date:   Wed Feb 8 20:53:19 2023 +0000

    usb: typec: altmodes/displayport: Fix probe pin assign check
    
    commit 54e5c00a4eb0a4c663445b245f641bbfab142430 upstream.
    
    While checking Pin Assignments of the port and partner during probe, we
    don't take into account whether the peripheral is a plug or receptacle.
    
    This manifests itself in a mode entry failure on certain docks and
    dongles with captive cables. For instance, the Startech.com Type-C to DP
    dongle (Model #CDP2DP) advertises its DP VDO as 0x405. This would fail
    the Pin Assignment compatibility check, despite it supporting
    Pin Assignment C as a UFP.
    
    Update the check to use the correct DP Pin Assign macros that
    take the peripheral's receptacle bit into account.
    
    Fixes: c1e5c2f0cb8a ("usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles")
    Cc: stable@vger.kernel.org
    Reported-by: Diana Zigterman <dzigterman@chromium.org>
    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    Link: https://lore.kernel.org/r/20230208205318.131385-1-pmalani@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9758f7deb5a5931b0e855b6ab26bd7ad897ddd1
Author: Mark Pearson <mpearson-lenovo@squebb.ca>
Date:   Wed Feb 8 13:12:23 2023 -0500

    usb: core: add quirk for Alcor Link AK9563 smartcard reader
    
    commit 303e724d7b1e1a0a93daf0b1ab5f7c4f53543b34 upstream.
    
    The Alcor Link AK9563 smartcard reader used on some Lenovo platforms
    doesn't work. If LPM is enabled the reader will provide an invalid
    usb config descriptor. Added quirk to disable LPM.
    
    Verified fix on Lenovo P16 G1 and T14 G3
    
    Tested-by: Miroslav Zatko <mzatko@mirexoft.com>
    Tested-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
    Link: https://lore.kernel.org/r/20230208181223.1092654-1-mpearson-lenovo@squebb.ca
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43379fcacea2dcee35d02efc9c8fe97807a503c9
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Feb 3 14:32:09 2023 -0500

    net: USB: Fix wrong-direction WARNING in plusb.c
    
    commit 811d581194f7412eda97acc03d17fc77824b561f upstream.
    
    The syzbot fuzzer detected a bug in the plusb network driver: A
    zero-length control-OUT transfer was treated as a read instead of a
    write.  In modern kernels this error provokes a WARNING:
    
    usb 1-1: BOGUS control dir, pipe 80000280 doesn't match bRequestType c0
    WARNING: CPU: 0 PID: 4645 at drivers/usb/core/urb.c:411
    usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
    Modules linked in:
    CPU: 1 PID: 4645 Comm: dhcpcd Not tainted
    6.2.0-rc6-syzkaller-00050-g9f266ccaa2f5 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google
    01/12/2023
    RIP: 0010:usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
    ...
    Call Trace:
     <TASK>
     usb_start_wait_urb+0x101/0x4b0 drivers/usb/core/message.c:58
     usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
     usb_control_msg+0x320/0x4a0 drivers/usb/core/message.c:153
     __usbnet_read_cmd+0xb9/0x390 drivers/net/usb/usbnet.c:2010
     usbnet_read_cmd+0x96/0xf0 drivers/net/usb/usbnet.c:2068
     pl_vendor_req drivers/net/usb/plusb.c:60 [inline]
     pl_set_QuickLink_features drivers/net/usb/plusb.c:75 [inline]
     pl_reset+0x2f/0xf0 drivers/net/usb/plusb.c:85
     usbnet_open+0xcc/0x5d0 drivers/net/usb/usbnet.c:889
     __dev_open+0x297/0x4d0 net/core/dev.c:1417
     __dev_change_flags+0x587/0x750 net/core/dev.c:8530
     dev_change_flags+0x97/0x170 net/core/dev.c:8602
     devinet_ioctl+0x15a2/0x1d70 net/ipv4/devinet.c:1147
     inet_ioctl+0x33f/0x380 net/ipv4/af_inet.c:979
     sock_do_ioctl+0xcc/0x230 net/socket.c:1169
     sock_ioctl+0x1f8/0x680 net/socket.c:1286
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:870 [inline]
     __se_sys_ioctl fs/ioctl.c:856 [inline]
     __x64_sys_ioctl+0x197/0x210 fs/ioctl.c:856
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The fix is to call usbnet_write_cmd() instead of usbnet_read_cmd() and
    remove the USB_DIR_IN flag.
    
    Reported-and-tested-by: syzbot+2a0e7abd24f1eb90ce25@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: 090ffa9d0e90 ("[PATCH] USB: usbnet (9/9) module for pl2301/2302 cables")
    CC: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/00000000000052099f05f3b3e298@google.com/
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bcb431237f14a37c1d0cd371728a0a18ab0e8ce
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Feb 6 16:15:59 2023 +0200

    pinctrl: intel: Restore the pins that used to be in Direct IRQ mode
    
    [ Upstream commit a8520be3ffef3d25b53bf171a7ebe17ee0154175 ]
    
    If the firmware mangled the register contents too much,
    check the saved value for the Direct IRQ mode. If it
    matches, we will restore the pin state.
    
    Reported-by: Jim Minter <jimminter@microsoft.com>
    Fixes: 6989ea4881c8 ("pinctrl: intel: Save and restore pins in "direct IRQ" mode")
    Tested-by: Jim Minter <jimminter@microsoft.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20230206141558.20916-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b763f7de108cb1a5ad5ed08e617d677341947cb
Author: Maxim Korotkov <korotkov.maxim.s@gmail.com>
Date:   Fri Nov 18 13:43:32 2022 +0300

    pinctrl: single: fix potential NULL dereference
    
    [ Upstream commit d2d73e6d4822140445ad4a7b1c6091e0f5fe703b ]
    
    Added checking of pointer "function" in pcs_set_mux().
    pinmux_generic_get_function() can return NULL and the pointer
    "function" was dereferenced without checking against NULL.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 571aec4df5b7 ("pinctrl: single: Use generic pinmux helpers for managing functions")
    Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
    Reviewed-by: Tony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/20221118104332.943-1-korotkov.maxim.s@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc1affa2340316a251c486be5ebdf299ea742e05
Author: Joel Stanley <joel@jms.id.au>
Date:   Fri Jan 20 09:48:56 2023 +1030

    pinctrl: aspeed: Fix confusing types in return value
    
    [ Upstream commit 287a344a11f1ebd31055cf9b22c88d7005f108d7 ]
    
    The function signature is int, but we return a bool. Instead return a
    negative errno as the kerneldoc suggests.
    
    Fixes: 4d3d0e4272d8 ("pinctrl: Add core support for Aspeed SoCs")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20230119231856.52014-1-joel@jms.id.au
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f209431be199348f1f1406fc560a1deb7798abdc
Author: Dan Carpenter <error27@gmail.com>
Date:   Tue Jan 31 13:02:13 2023 +0300

    ALSA: pci: lx6464es: fix a debug loop
    
    [ Upstream commit 5dac9f8dc25fefd9d928b98f6477ff3daefd73e3 ]
    
    This loop accidentally reuses the "i" iterator for both the inside and
    the outside loop.  The value of MAX_STREAM_BUFFER is 5.  I believe that
    chip->rmh.stat_len is in the 2-12 range.  If the value of .stat_len is
    4 or more then it will loop exactly one time, but if it's less then it
    is a forever loop.
    
    It looks like it was supposed to combined into one loop where
    conditions are checked.
    
    Fixes: 8e6320064c33 ("ALSA: lx_core: Remove useless #if 0 .. #endif")
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Link: https://lore.kernel.org/r/Y9jnJTis/mRFJAQp@kili
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1aab663ecb78c225b19df97fddc33831b8c9944e
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Feb 8 11:21:10 2023 +0800

    selftests: forwarding: lib: quote the sysctl values
    
    [ Upstream commit 3a082086aa200852545cf15159213582c0c80eba ]
    
    When set/restore sysctl value, we should quote the value as some keys
    may have multi values, e.g. net.ipv4.ping_group_range
    
    Fixes: f5ae57784ba8 ("selftests: forwarding: lib: Add sysctl_set(), sysctl_restore()")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/20230208032110.879205-1-liuhangbin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba38eacade35dd2316d77b37494e6e0c01bab595
Author: Pietro Borrello <borrello@diag.uniroma1.it>
Date:   Tue Feb 7 18:26:34 2023 +0000

    rds: rds_rm_zerocopy_callback() use list_first_entry()
    
    [ Upstream commit f753a68980cf4b59a80fe677619da2b1804f526d ]
    
    rds_rm_zerocopy_callback() uses list_entry() on the head of a list
    causing a type confusion.
    Use list_first_entry() to actually access the first element of the
    rs_zcookie_queue list.
    
    Fixes: 9426bbc6de99 ("rds: use list structure to track information for zerocopy completion notification")
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Pietro Borrello <borrello@diag.uniroma1.it>
    Link: https://lore.kernel.org/r/20230202-rds-zerocopy-v3-1-83b0df974f9a@diag.uniroma1.it
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87a5e3fc8416106e290c448fc8a6dd50ab24c634
Author: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Date:   Mon Jan 30 14:06:40 2023 -0800

    ice: Do not use WQ_MEM_RECLAIM flag for workqueue
    
    [ Upstream commit 4d159f7884f78b1aacb99b4fc37d1e3cb1194e39 ]
    
    When both ice and the irdma driver are loaded, a warning in
    check_flush_dependency is being triggered. This is due to ice driver
    workqueue being allocated with the WQ_MEM_RECLAIM flag and the irdma one
    is not.
    
    According to kernel documentation, this flag should be set if the
    workqueue will be involved in the kernel's memory reclamation flow.
    Since it is not, there is no need for the ice driver's WQ to have this
    flag set so remove it.
    
    Example trace:
    
    [  +0.000004] workqueue: WQ_MEM_RECLAIM ice:ice_service_task [ice] is flushing !WQ_MEM_RECLAIM infiniband:0x0
    [  +0.000139] WARNING: CPU: 0 PID: 728 at kernel/workqueue.c:2632 check_flush_dependency+0x178/0x1a0
    [  +0.000011] Modules linked in: bonding tls xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 nft_compat nft_cha
    in_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables nfnetlink bridge stp llc rfkill vfat fat intel_rapl_msr intel
    _rapl_common isst_if_common skx_edac nfit libnvdimm x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct1
    0dif_pclmul crc32_pclmul ghash_clmulni_intel rapl intel_cstate rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_
    core_mod ib_iser libiscsi scsi_transport_iscsi rdma_cm ib_cm iw_cm iTCO_wdt iTCO_vendor_support ipmi_ssif irdma mei_me ib_uverbs
    ib_core intel_uncore joydev pcspkr i2c_i801 acpi_ipmi mei lpc_ich i2c_smbus intel_pch_thermal ioatdma ipmi_si acpi_power_meter
    acpi_pad xfs libcrc32c sd_mod t10_pi crc64_rocksoft crc64 sg ahci ixgbe libahci ice i40e igb crc32c_intel mdio i2c_algo_bit liba
    ta dca wmi dm_mirror dm_region_hash dm_log dm_mod ipmi_devintf ipmi_msghandler fuse
    [  +0.000161]  [last unloaded: bonding]
    [  +0.000006] CPU: 0 PID: 728 Comm: kworker/0:2 Tainted: G S                 6.2.0-rc2_next-queue-13jan-00458-gc20aabd57164 #1
    [  +0.000006] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0010.010620200716 01/06/2020
    [  +0.000003] Workqueue: ice ice_service_task [ice]
    [  +0.000127] RIP: 0010:check_flush_dependency+0x178/0x1a0
    [  +0.000005] Code: 89 8e 02 01 e8 49 3d 40 00 49 8b 55 18 48 8d 8d d0 00 00 00 48 8d b3 d0 00 00 00 4d 89 e0 48 c7 c7 e0 3b 08
    9f e8 bb d3 07 01 <0f> 0b e9 be fe ff ff 80 3d 24 89 8e 02 00 0f 85 6b ff ff ff e9 06
    [  +0.000004] RSP: 0018:ffff88810a39f990 EFLAGS: 00010282
    [  +0.000005] RAX: 0000000000000000 RBX: ffff888141bc2400 RCX: 0000000000000000
    [  +0.000004] RDX: 0000000000000001 RSI: dffffc0000000000 RDI: ffffffffa1213a80
    [  +0.000003] RBP: ffff888194bf3400 R08: ffffed117b306112 R09: ffffed117b306112
    [  +0.000003] R10: ffff888bd983088b R11: ffffed117b306111 R12: 0000000000000000
    [  +0.000003] R13: ffff888111f84d00 R14: ffff88810a3943ac R15: ffff888194bf3400
    [  +0.000004] FS:  0000000000000000(0000) GS:ffff888bd9800000(0000) knlGS:0000000000000000
    [  +0.000003] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  +0.000003] CR2: 000056035b208b60 CR3: 000000017795e005 CR4: 00000000007706f0
    [  +0.000003] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  +0.000003] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  +0.000002] PKRU: 55555554
    [  +0.000003] Call Trace:
    [  +0.000002]  <TASK>
    [  +0.000003]  __flush_workqueue+0x203/0x840
    [  +0.000006]  ? mutex_unlock+0x84/0xd0
    [  +0.000008]  ? __pfx_mutex_unlock+0x10/0x10
    [  +0.000004]  ? __pfx___flush_workqueue+0x10/0x10
    [  +0.000006]  ? mutex_lock+0xa3/0xf0
    [  +0.000005]  ib_cache_cleanup_one+0x39/0x190 [ib_core]
    [  +0.000174]  __ib_unregister_device+0x84/0xf0 [ib_core]
    [  +0.000094]  ib_unregister_device+0x25/0x30 [ib_core]
    [  +0.000093]  irdma_ib_unregister_device+0x97/0xc0 [irdma]
    [  +0.000064]  ? __pfx_irdma_ib_unregister_device+0x10/0x10 [irdma]
    [  +0.000059]  ? up_write+0x5c/0x90
    [  +0.000005]  irdma_remove+0x36/0x90 [irdma]
    [  +0.000062]  auxiliary_bus_remove+0x32/0x50
    [  +0.000007]  device_release_driver_internal+0xfa/0x1c0
    [  +0.000005]  bus_remove_device+0x18a/0x260
    [  +0.000007]  device_del+0x2e5/0x650
    [  +0.000005]  ? __pfx_device_del+0x10/0x10
    [  +0.000003]  ? mutex_unlock+0x84/0xd0
    [  +0.000004]  ? __pfx_mutex_unlock+0x10/0x10
    [  +0.000004]  ? _raw_spin_unlock+0x18/0x40
    [  +0.000005]  ice_unplug_aux_dev+0x52/0x70 [ice]
    [  +0.000160]  ice_service_task+0x1309/0x14f0 [ice]
    [  +0.000134]  ? __pfx___schedule+0x10/0x10
    [  +0.000006]  process_one_work+0x3b1/0x6c0
    [  +0.000008]  worker_thread+0x69/0x670
    [  +0.000005]  ? __kthread_parkme+0xec/0x110
    [  +0.000007]  ? __pfx_worker_thread+0x10/0x10
    [  +0.000005]  kthread+0x17f/0x1b0
    [  +0.000005]  ? __pfx_kthread+0x10/0x10
    [  +0.000004]  ret_from_fork+0x29/0x50
    [  +0.000009]  </TASK>
    
    Fixes: 940b61af02f4 ("ice: Initialize PF and setup miscellaneous interrupt")
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
    Tested-by: Jakub Andrysiak <jakub.andrysiak@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f312958f588a2bf3ed0f4b2df3c90b4cbf1b0344
Author: Neel Patel <neel.patel@amd.com>
Date:   Thu Feb 2 13:55:35 2023 -0800

    ionic: clean interrupt before enabling queue to avoid credit race
    
    [ Upstream commit e8797a058466b60fc5a3291b92430c93ba90eaff ]
    
    Clear the interrupt credits before enabling the queue rather
    than after to be sure that the enabled queue starts at 0 and
    that we don't wipe away possible credits after enabling the
    queue.
    
    Fixes: 0f3154e6bcb3 ("ionic: Add Tx and Rx handling")
    Signed-off-by: Neel Patel <neel.patel@amd.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a532f7ebf9fde10ec065ded7fa2015d42d3c8d29
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 2 21:45:36 2023 +0100

    net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY
    
    [ Upstream commit 69ff53e4a4c9498eeed7d1441f68a1481dc69251 ]
    
    Jerome provided the information that also the GXL internal PHY doesn't
    support MMD register access and EEE. MMD reads return 0xffff, what
    results in e.g. completely wrong ethtool --show-eee output.
    Therefore use the MMD dummy stubs.
    
    Fixes: d853d145ea3e ("net: phy: add an option to disable EEE advertisement")
    Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/84432fe4-0be4-bc82-4e5c-557206b40f56@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 73b8e217fe6ffbb98b6086654bd4f812839e4b5a
Author: Qi Zheng <zhengqi.arch@bytedance.com>
Date:   Thu Feb 2 17:32:55 2023 +0800

    bonding: fix error checking in bond_debug_reregister()
    
    [ Upstream commit cbe83191d40d8925b7a99969d037d2a0caf69294 ]
    
    Since commit ff9fb72bc077 ("debugfs: return error values,
    not NULL") changed return value of debugfs_rename() in
    error cases from %NULL to %ERR_PTR(-ERROR), we should
    also check error values instead of NULL.
    
    Fixes: ff9fb72bc077 ("debugfs: return error values, not NULL")
    Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Link: https://lore.kernel.org/r/20230202093256.32458-1-zhengqi.arch@bytedance.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c89ddf134c53f38f9df9a62d22225cf0614a47fd
Author: Christian Hopps <chopps@chopps.org>
Date:   Thu Jan 26 11:33:50 2023 -0500

    xfrm: fix bug with DSCP copy to v6 from v4 tunnel
    
    [ Upstream commit 6028da3f125fec34425dbd5fec18e85d372b2af6 ]
    
    When copying the DSCP bits for decap-dscp into IPv6 don't assume the
    outer encap is always IPv6. Instead, as with the inner IPv4 case, copy
    the DSCP bits from the correctly saved "tos" value in the control block.
    
    Fixes: 227620e29509 ("[IPSEC]: Separate inner/outer mode processing on input")
    Signed-off-by: Christian Hopps <chopps@chopps.org>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80282a3d103fa802ec98c40db79964d980ab0f43
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Sun Jan 29 17:37:57 2023 +0800

    RDMA/usnic: use iommu_map_atomic() under spin_lock()
    
    [ Upstream commit b7e08a5a63a11627601915473c3b569c1f6c6c06 ]
    
    usnic_uiom_map_sorted_intervals() is called under spin_lock(), iommu_map()
    might sleep, use iommu_map_atomic() to avoid potential sleep in atomic
    context.
    
    Fixes: e3cf00d0a87f ("IB/usnic: Add Cisco VIC low-level hardware driver")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20230129093757.637354-1-yangyingliang@huawei.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe4d70866839ff24ba395dcc96ba3883d6a0ecf0
Author: Tom Murphy <murphyt7@tcd.ie>
Date:   Sun Sep 8 09:56:38 2019 -0700

    iommu: Add gfp parameter to iommu_ops::map
    
    [ Upstream commit 781ca2de89bae1b1d2c96df9ef33e9a324415995 ]
    
    Add a gfp_t parameter to the iommu_ops::map function.
    Remove the needless locking in the AMD iommu driver.
    
    The iommu_ops::map function (or the iommu_map function which calls it)
    was always supposed to be sleepable (according to Joerg's comment in
    this thread: https://lore.kernel.org/patchwork/patch/977520/ ) and so
    should probably have had a "might_sleep()" since it was written. However
    currently the dma-iommu api can call iommu_map in an atomic context,
    which it shouldn't do. This doesn't cause any problems because any iommu
    driver which uses the dma-iommu api uses gfp_atomic in it's
    iommu_ops::map function. But doing this wastes the memory allocators
    atomic pools.
    
    Signed-off-by: Tom Murphy <murphyt7@tcd.ie>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Stable-dep-of: b7e08a5a63a1 ("RDMA/usnic: use iommu_map_atomic() under spin_lock()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a779187db39b2f32d048a752573e56e4e77807f
Author: Dragos Tatulea <dtatulea@nvidia.com>
Date:   Tue Jan 24 20:24:18 2023 +0200

    IB/IPoIB: Fix legacy IPoIB due to wrong number of queues
    
    [ Upstream commit e632291a2dbce45a24cddeb5fe28fe71d724ba43 ]
    
    The cited commit creates child PKEY interfaces over netlink will
    multiple tx and rx queues, but some devices doesn't support more than 1
    tx and 1 rx queues. This causes to a crash when traffic is sent over the
    PKEY interface due to the parent having a single queue but the child
    having multiple queues.
    
    This patch fixes the number of queues to 1 for legacy IPoIB at the
    earliest possible point in time.
    
    BUG: kernel NULL pointer dereference, address: 000000000000036b
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP
    CPU: 4 PID: 209665 Comm: python3 Not tainted 6.1.0_for_upstream_min_debug_2022_12_12_17_02 #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    RIP: 0010:kmem_cache_alloc+0xcb/0x450
    Code: ce 7e 49 8b 50 08 49 83 78 10 00 4d 8b 28 0f 84 cb 02 00 00 4d 85 ed 0f 84 c2 02 00 00 41 8b 44 24 28 48 8d 4a
    01 49 8b 3c 24 <49> 8b 5c 05 00 4c 89 e8 65 48 0f c7 0f 0f 94 c0 84 c0 74 b8 41 8b
    RSP: 0018:ffff88822acbbab8 EFLAGS: 00010202
    RAX: 0000000000000070 RBX: ffff8881c28e3e00 RCX: 00000000064f8dae
    RDX: 00000000064f8dad RSI: 0000000000000a20 RDI: 0000000000030d00
    RBP: 0000000000000a20 R08: ffff8882f5d30d00 R09: ffff888104032f40
    R10: ffff88810fade828 R11: 736f6d6570736575 R12: ffff88810081c000
    R13: 00000000000002fb R14: ffffffff817fc865 R15: 0000000000000000
    FS:  00007f9324ff9700(0000) GS:ffff8882f5d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000000036b CR3: 00000001125af004 CR4: 0000000000370ea0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     skb_clone+0x55/0xd0
     ip6_finish_output2+0x3fe/0x690
     ip6_finish_output+0xfa/0x310
     ip6_send_skb+0x1e/0x60
     udp_v6_send_skb+0x1e5/0x420
     udpv6_sendmsg+0xb3c/0xe60
     ? ip_mc_finish_output+0x180/0x180
     ? __switch_to_asm+0x3a/0x60
     ? __switch_to_asm+0x34/0x60
     sock_sendmsg+0x33/0x40
     __sys_sendto+0x103/0x160
     ? _copy_to_user+0x21/0x30
     ? kvm_clock_get_cycles+0xd/0x10
     ? ktime_get_ts64+0x49/0xe0
     __x64_sys_sendto+0x25/0x30
     do_syscall_64+0x3d/0x90
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    RIP: 0033:0x7f9374f1ed14
    Code: 42 41 f8 ff 44 8b 4c 24 2c 4c 8b 44 24 20 89 c5 44 8b 54 24 28 48 8b 54 24 18 b8 2c 00 00 00 48 8b 74 24 10 8b
    7c 24 08 0f 05 <48> 3d 00 f0 ff ff 77 34 89 ef 48 89 44 24 08 e8 68 41 f8 ff 48 8b
    RSP: 002b:00007f9324ff7bd0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f9324ff7cc8 RCX: 00007f9374f1ed14
    RDX: 00000000000002fb RSI: 00007f93000052f0 RDI: 0000000000000030
    RBP: 0000000000000000 R08: 00007f9324ff7d40 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
    R13: 000000012a05f200 R14: 0000000000000001 R15: 00007f9374d57bdc
     </TASK>
    
    Fixes: dbc94a0fb817 ("IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces")
    Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
    Link: https://lore.kernel.org/r/95eb6b74c7cf49fa46281f9d056d685c9fa11d38.1674584576.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7896accedf5bf1277d2f305718e36dc8bac7e321
Author: Dean Luick <dean.luick@cornelisnetworks.com>
Date:   Thu Jan 12 13:16:02 2023 -0500

    IB/hfi1: Restore allocated resources on failed copyout
    
    [ Upstream commit 6601fc0d15ffc20654e39486f9bef35567106d68 ]
    
    Fix a resource leak if an error occurs.
    
    Fixes: f404ca4c7ea8 ("IB/hfi1: Refactor hfi_user_exp_rcv_setup() IOCTL")
    Signed-off-by: Dean Luick <dean.luick@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Link: https://lore.kernel.org/r/167354736291.2132367.10894218740150168180.stgit@awfm-02.cornelisnetworks.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae774f480da32fea60bb454555c3a1bc347778c7
Author: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
Date:   Fri Nov 25 18:04:18 2022 +0100

    can: j1939: do not wait 250 ms if the same addr was already claimed
    
    commit 4ae5e1e97c44f4654516c1d41591a462ed62fa7b upstream.
    
    The ISO 11783-5 standard, in "4.5.2 - Address claim requirements", states:
      d) No CF shall begin, or resume, transmission on the network until 250
         ms after it has successfully claimed an address except when
         responding to a request for address-claimed.
    
    But "Figure 6" and "Figure 7" in "4.5.4.2 - Address-claim
    prioritization" show that the CF begins the transmission after 250 ms
    from the first AC (address-claimed) message even if it sends another AC
    message during that time window to resolve the address contention with
    another CF.
    
    As stated in "4.4.2.3 - Address-claimed message":
      In order to successfully claim an address, the CF sending an address
      claimed message shall not receive a contending claim from another CF
      for at least 250 ms.
    
    As stated in "4.4.3.2 - NAME management (NM) message":
      1) A commanding CF can
         d) request that a CF with a specified NAME transmit the address-
            claimed message with its current NAME.
      2) A target CF shall
         d) send an address-claimed message in response to a request for a
            matching NAME
    
    Taking the above arguments into account, the 250 ms wait is requested
    only during network initialization.
    
    Do not restart the timer on AC message if both the NAME and the address
    match and so if the address has already been claimed (timer has expired)
    or the AC message has been sent to resolve the contention with another
    CF (timer is still running).
    
    Signed-off-by: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/all/20221125170418.34575-1-devid.filoni@egluetechnologies.com
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56ee31167ce51ef995b085dd2cdbe45664e26402
Author: Shiju Jose <shiju.jose@huawei.com>
Date:   Thu Feb 2 18:23:09 2023 +0000

    tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw
    
    commit 3e46d910d8acf94e5360126593b68bf4fee4c4a1 upstream.
    
    poll() and select() on per_cpu trace_pipe and trace_pipe_raw do not work
    since kernel 6.1-rc6. This issue is seen after the commit
    42fb0a1e84ff525ebe560e2baf9451ab69127e2b ("tracing/ring-buffer: Have
    polling block on watermark").
    
    This issue is firstly detected and reported, when testing the CXL error
    events in the rasdaemon and also erified using the test application for poll()
    and select().
    
    This issue occurs for the per_cpu case, when calling the ring_buffer_poll_wait(),
    in kernel/trace/ring_buffer.c, with the buffer_percent > 0 and then wait until the
    percentage of pages are available. The default value set for the buffer_percent is 50
    in the kernel/trace/trace.c.
    
    As a fix, allow userspace application could set buffer_percent as 0 through
    the buffer_percent_fops, so that the task will wake up as soon as data is added
    to any of the specific cpu buffer.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230202182309.742-2-shiju.jose@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Cc: <mchehab@kernel.org>
    Cc: <linux-edac@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 42fb0a1e84ff5 ("tracing/ring-buffer: Have polling block on watermark")
    Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 039f935ae009b4561eaa8166916da02b36d17a4d
Author: Artemii Karasev <karasev@ispras.ru>
Date:   Tue Feb 7 18:20:26 2023 +0500

    ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
    
    commit 6a32425f953b955b4ff82f339d01df0b713caa5d upstream.
    
    snd_emux_xg_control() can be called with an argument 'param' greater
    than size of 'control' array. It may lead to accessing 'control'
    array at a wrong index.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Artemii Karasev <karasev@ispras.ru>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230207132026.2870-1-karasev@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e43bb69bc6fbdabd65f41bd35c171d545c65842
Author: Alexander Potapenko <glider@google.com>
Date:   Tue Jan 24 12:32:34 2023 +0100

    btrfs: zlib: zero-initialize zlib workspace
    
    commit eadd7deca0ad8a83edb2b894d8326c78e78635d6 upstream.
    
    KMSAN reports uses of uninitialized memory in zlib's longest_match()
    called on memory originating from zlib_alloc_workspace().
    This issue is known by zlib maintainers and is claimed to be harmless,
    but to be on the safe side we'd better initialize the memory.
    
    Link: https://zlib.net/zlib_faq.html#faq36
    Reported-by: syzbot+14d9e7602ebdf7ec0a60@syzkaller.appspotmail.com
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed29d8b309b54685eec0549cc6206c24bf1161de
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Jan 18 16:35:13 2023 -0500

    btrfs: limit device extents to the device size
    
    commit 3c538de0f2a74d50aff7278c092f88ae59cee688 upstream.
    
    There was a recent regression in btrfs/177 that started happening with
    the size class patches ("btrfs: introduce size class to block group
    allocator").  This however isn't a regression introduced by those
    patches, but rather the bug was uncovered by a change in behavior in
    these patches.  The patches triggered more chunk allocations in the
    ^free-space-tree case, which uncovered a race with device shrink.
    
    The problem is we will set the device total size to the new size, and
    use this to find a hole for a device extent.  However during shrink we
    may have device extents allocated past this range, so we could
    potentially find a hole in a range past our new shrink size.  We don't
    actually limit our found extent to the device size anywhere, we assume
    that we will not find a hole past our device size.  This isn't true with
    shrink as we're relocating block groups and thus creating holes past the
    device size.
    
    Fix this by making sure we do not search past the new device size, and
    if we wander into any device extents that start after our device size
    simply break from the loop and use whatever hole we've already found.
    
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f296c615ec4022b662f099cfce532af1f97acb5
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Sat Dec 17 23:13:05 2022 +0100

    iio:adc:twl6030: Enable measurement of VAC
    
    [ Upstream commit bffb7d9d1a3dbd09e083b88aefd093b3b10abbfb ]
    
    VAC needs to be wired up to produce proper measurements,
    without this change only near zero values are reported.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Julia Lawall <julia.lawall@lip6.fr>
    Fixes: 1696f36482e7 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Link: https://lore.kernel.org/r/20221217221305.671117-1-andreas@kemnade.info
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9cf5e99c1ae1a85286a76c9a970202750538394c
Author: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
Date:   Wed Nov 16 23:29:52 2022 +0900

    wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads
    
    commit 4920ab131b2dbae7464b72bdcac465d070254209 upstream.
    
    This patch fixes slab-out-of-bounds reads in brcmfmac that occur in
    brcmf_construct_chaninfo() and brcmf_enable_bw40_2g() when the count
    value of channel specifications provided by the device is greater than
    the length of 'list->element[]', decided by the size of the 'list'
    allocated with kzalloc(). The patch adds checks that make the functions
    free the buffer and return -EINVAL if that is the case. Note that the
    negative return is handled by the caller, brcmf_setup_wiphybands() or
    brcmf_cfg80211_attach().
    
    Found by a modified version of syzkaller.
    
    Crash Report from brcmf_construct_chaninfo():
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in brcmf_setup_wiphybands+0x1238/0x1430
    Read of size 4 at addr ffff888115f24600 by task kworker/0:2/1896
    
    CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     dump_stack_lvl+0x57/0x7d
     print_address_description.constprop.0.cold+0x93/0x334
     kasan_report.cold+0x83/0xdf
     brcmf_setup_wiphybands+0x1238/0x1430
     brcmf_cfg80211_attach+0x2118/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    Allocated by task 1896:
     kasan_save_stack+0x1b/0x40
     __kasan_kmalloc+0x7c/0x90
     kmem_cache_alloc_trace+0x19e/0x330
     brcmf_setup_wiphybands+0x290/0x1430
     brcmf_cfg80211_attach+0x2118/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    The buggy address belongs to the object at ffff888115f24000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 1536 bytes inside of
     2048-byte region [ffff888115f24000, ffff888115f24800)
    
    Memory state around the buggy address:
     ffff888115f24500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff888115f24580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff888115f24600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                       ^
     ffff888115f24680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888115f24700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Crash Report from brcmf_enable_bw40_2g():
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in brcmf_cfg80211_attach+0x3d11/0x3fd0
    Read of size 4 at addr ffff888103787600 by task kworker/0:2/1896
    
    CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     dump_stack_lvl+0x57/0x7d
     print_address_description.constprop.0.cold+0x93/0x334
     kasan_report.cold+0x83/0xdf
     brcmf_cfg80211_attach+0x3d11/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    Allocated by task 1896:
     kasan_save_stack+0x1b/0x40
     __kasan_kmalloc+0x7c/0x90
     kmem_cache_alloc_trace+0x19e/0x330
     brcmf_cfg80211_attach+0x3302/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    The buggy address belongs to the object at ffff888103787000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 1536 bytes inside of
     2048-byte region [ffff888103787000, ffff888103787800)
    
    Memory state around the buggy address:
     ffff888103787500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff888103787580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff888103787600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                       ^
     ffff888103787680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888103787700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Reported-by: Dokyung Song <dokyungs@yonsei.ac.kr>
    Reported-by: Jisoo Jang <jisoo.jang@yonsei.ac.kr>
    Reported-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
    Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20221116142952.518241-1-linuxlovemin@yonsei.ac.kr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5142a4935c1f15841d06047b8130078fc4d7b8f
Author: Chao Yu <chao@kernel.org>
Date:   Tue Nov 15 00:08:47 2022 +0800

    f2fs: fix to do sanity check on i_extra_isize in is_alive()
    
    commit d3b7b4afd6b2c344eabf9cc26b8bfa903c164c7c upstream.
    
    syzbot found a f2fs bug:
    
    BUG: KASAN: slab-out-of-bounds in data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
    BUG: KASAN: slab-out-of-bounds in is_alive fs/f2fs/gc.c:1117 [inline]
    BUG: KASAN: slab-out-of-bounds in gc_data_segment fs/f2fs/gc.c:1520 [inline]
    BUG: KASAN: slab-out-of-bounds in do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
    Read of size 4 at addr ffff888076557568 by task kworker/u4:3/52
    
    CPU: 1 PID: 52 Comm: kworker/u4:3 Not tainted 6.1.0-rc4-syzkaller-00362-gfef7fd48922d #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
    Workqueue: writeback wb_workfn (flush-7:0)
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    print_address_description mm/kasan/report.c:284 [inline]
    print_report+0x15e/0x45d mm/kasan/report.c:395
    kasan_report+0xbb/0x1f0 mm/kasan/report.c:495
    data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
    is_alive fs/f2fs/gc.c:1117 [inline]
    gc_data_segment fs/f2fs/gc.c:1520 [inline]
    do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
    f2fs_gc+0x88c/0x20a0 fs/f2fs/gc.c:1831
    f2fs_balance_fs+0x544/0x6b0 fs/f2fs/segment.c:410
    f2fs_write_inode+0x57e/0xe20 fs/f2fs/inode.c:753
    write_inode fs/fs-writeback.c:1440 [inline]
    __writeback_single_inode+0xcfc/0x1440 fs/fs-writeback.c:1652
    writeback_sb_inodes+0x54d/0xf90 fs/fs-writeback.c:1870
    wb_writeback+0x2c5/0xd70 fs/fs-writeback.c:2044
    wb_do_writeback fs/fs-writeback.c:2187 [inline]
    wb_workfn+0x2dc/0x12f0 fs/fs-writeback.c:2227
    process_one_work+0x9bf/0x1710 kernel/workqueue.c:2289
    worker_thread+0x665/0x1080 kernel/workqueue.c:2436
    kthread+0x2e4/0x3a0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
    
    The root cause is that we forgot to do sanity check on .i_extra_isize
    in below path, result in accessing invalid address later, fix it.
    - gc_data_segment
     - is_alive
      - data_blkaddr
       - offset_in_addr
    
    Reported-by: syzbot+f8f3dfa4abc489e768a1@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-f2fs-devel/0000000000003cb3c405ed5c17f9@google.com/T/#u
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b3d3127f5b4291ae4caaf50f7b66089ad600480
Author: Dongliang Mu <dzm91@hust.edu.cn>
Date:   Fri Nov 11 13:49:49 2022 +0800

    fbdev: smscufx: fix error handling code in ufx_usb_probe
    
    commit b76449ee75e21acfe9fa4c653d8598f191ed7d68 upstream.
    
    The current error handling code in ufx_usb_probe have many unmatching
    issues, e.g., missing ufx_free_usb_list, destroy_modedb label should
    only include framebuffer_release, fb_dealloc_cmap only matches
    fb_alloc_cmap.
    
    My local syzkaller reports a memory leak bug:
    
    memory leak in ufx_usb_probe
    
    BUG: memory leak
    unreferenced object 0xffff88802f879580 (size 128):
      comm "kworker/0:7", pid 17416, jiffies 4295067474 (age 46.710s)
      hex dump (first 32 bytes):
        80 21 7c 2e 80 88 ff ff 18 d0 d0 0c 80 88 ff ff  .!|.............
        00 d0 d0 0c 80 88 ff ff e0 ff ff ff 0f 00 00 00  ................
      backtrace:
        [<ffffffff814c99a0>] kmalloc_trace+0x20/0x90 mm/slab_common.c:1045
        [<ffffffff824d219c>] kmalloc include/linux/slab.h:553 [inline]
        [<ffffffff824d219c>] kzalloc include/linux/slab.h:689 [inline]
        [<ffffffff824d219c>] ufx_alloc_urb_list drivers/video/fbdev/smscufx.c:1873 [inline]
        [<ffffffff824d219c>] ufx_usb_probe+0x11c/0x15a0 drivers/video/fbdev/smscufx.c:1655
        [<ffffffff82d17927>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
        [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
        [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
        [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778
        [<ffffffff827132da>] driver_probe_device+0x2a/0x120 drivers/base/dd.c:808
        [<ffffffff82713c27>] __device_attach_driver+0xf7/0x150 drivers/base/dd.c:936
        [<ffffffff82710137>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:427
        [<ffffffff827136b5>] __device_attach+0x105/0x2d0 drivers/base/dd.c:1008
        [<ffffffff82711d36>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:487
        [<ffffffff8270e242>] device_add+0x642/0xdc0 drivers/base/core.c:3517
        [<ffffffff82d14d5f>] usb_set_configuration+0x8ef/0xb80 drivers/usb/core/message.c:2170
        [<ffffffff82d2576c>] usb_generic_driver_probe+0x8c/0xc0 drivers/usb/core/generic.c:238
        [<ffffffff82d16ffc>] usb_probe_device+0x5c/0x140 drivers/usb/core/driver.c:293
        [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
        [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
        [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778
    
    Fix this bug by rewriting the error handling code in ufx_usb_probe.
    
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Tested-by: Dongliang Mu <dzm91@hust.edu.cn>
    Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8edda487f0855ca2b0ba4dc15b41a3b4d7ed80c2
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Mon Jan 30 12:44:01 2023 +1100

    powerpc/imc-pmu: Revert nest_init_lock to being a mutex
    
    commit ad53db4acb415976761d7302f5b02e97f2bd097e upstream.
    
    The recent commit 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in
    IRQs disabled section") fixed warnings (and possible deadlocks) in the
    IMC PMU driver by converting the locking to use spinlocks.
    
    It also converted the init-time nest_init_lock to a spinlock, even
    though it's not used at runtime in IRQ disabled sections or while
    holding other spinlocks.
    
    This leads to warnings such as:
    
      BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49
      in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0
      preempt_count: 1, expected: 0
      CPU: 7 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc2-14719-gf12cd06109f4-dirty #1
      Hardware name: Mambo,Simulated-System POWER9 0x4e1203 opal:v6.6.6 PowerNV
      Call Trace:
        dump_stack_lvl+0x74/0xa8 (unreliable)
        __might_resched+0x178/0x1a0
        __cpuhp_setup_state+0x64/0x1e0
        init_imc_pmu+0xe48/0x1250
        opal_imc_counters_probe+0x30c/0x6a0
        platform_probe+0x78/0x110
        really_probe+0x104/0x420
        __driver_probe_device+0xb0/0x170
        driver_probe_device+0x58/0x180
        __driver_attach+0xd8/0x250
        bus_for_each_dev+0xb4/0x140
        driver_attach+0x34/0x50
        bus_add_driver+0x1e8/0x2d0
        driver_register+0xb4/0x1c0
        __platform_driver_register+0x38/0x50
        opal_imc_driver_init+0x2c/0x40
        do_one_initcall+0x80/0x360
        kernel_init_freeable+0x310/0x3b8
        kernel_init+0x30/0x1a0
        ret_from_kernel_thread+0x5c/0x64
    
    Fix it by converting nest_init_lock back to a mutex, so that we can call
    sleeping functions while holding it. There is no interaction between
    nest_init_lock and the runtime spinlocks used by the actual PMU routines.
    
    Fixes: 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in IRQs disabled section")
    Tested-by: Kajol Jain<kjain@linux.ibm.com>
    Reviewed-by: Kajol Jain<kjain@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20230130014401.540543-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc8548c75c033a9a332143768d4bfe5299fc0d26
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon Jan 30 13:48:41 2023 +0200

    serial: 8250_dma: Fix DMA Rx rearm race
    
    commit 57e9af7831dcf211c5c689c2a6f209f4abdf0bce upstream.
    
    As DMA Rx can be completed from two places, it is possible that DMA Rx
    completes before DMA completion callback had a chance to complete it.
    Once the previous DMA Rx has been completed, a new one can be started
    on the next UART interrupt. The following race is possible
    (uart_unlock_and_check_sysrq_irqrestore() replaced with
    spin_unlock_irqrestore() for simplicity/clarity):
    
    CPU0                                    CPU1
                                            dma_rx_complete()
    serial8250_handle_irq()
      spin_lock_irqsave(&port->lock)
      handle_rx_dma()
        serial8250_rx_dma_flush()
          __dma_rx_complete()
            dma->rx_running = 0
            // Complete DMA Rx
      spin_unlock_irqrestore(&port->lock)
    
    serial8250_handle_irq()
      spin_lock_irqsave(&port->lock)
      handle_rx_dma()
        serial8250_rx_dma()
          dma->rx_running = 1
          // Setup a new DMA Rx
      spin_unlock_irqrestore(&port->lock)
    
                                              spin_lock_irqsave(&port->lock)
                                              // sees dma->rx_running = 1
                                              __dma_rx_complete()
                                                dma->rx_running = 0
                                                // Incorrectly complete
                                                // running DMA Rx
    
    This race seems somewhat theoretical to occur for real but handle it
    correctly regardless. Check what is the DMA status before complething
    anything in __dma_rx_complete().
    
    Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20230130114841.25749-3-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71d6b277c4e573fe3e1fcc39790eec1e5c6e13c0
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon Jan 30 13:48:40 2023 +0200

    serial: 8250_dma: Fix DMA Rx completion race
    
    commit 31352811e13dc2313f101b890fd4b1ce760b5fe7 upstream.
    
    __dma_rx_complete() is called from two places:
      - Through the DMA completion callback dma_rx_complete()
      - From serial8250_rx_dma_flush() after IIR_RLSI or IIR_RX_TIMEOUT
    The former does not hold port's lock during __dma_rx_complete() which
    allows these two to race and potentially insert the same data twice.
    
    Extend port's lock coverage in dma_rx_complete() to prevent the race
    and check if the DMA Rx is still pending completion before calling
    into __dma_rx_complete().
    
    Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20230130114841.25749-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec5b4ca3d30b14d4e31f348a87982e89ef08e648
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Sun Nov 20 15:34:29 2022 +0800

    xprtrdma: Fix regbuf data not freed in rpcrdma_req_create()
    
    commit 9181f40fb2952fd59ecb75e7158620c9c669eee3 upstream.
    
    If rdma receive buffer allocate failed, should call rpcrdma_regbuf_free()
    to free the send buffer, otherwise, the buffer data will be leaked.
    
    Fixes: bb93a1ae2bf4 ("xprtrdma: Allocate req's regbufs at xprt create time")
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    [Harshit: Backport to 5.4.y]
    Also make the same change for 'req->rl_rdmabuf' at the same time as
    this will also have the same memory leak problem as 'req->rl_sendbuf'
    (This is because commit b78de1dca00376aaba7a58bb5fe21c1606524abe is not
    in 5.4.y)
    Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5af2f74f907459fdb3282653c276fe58672dcb8e
Author: Andrea Righi <andrea.righi@canonical.com>
Date:   Mon Jun 1 21:48:43 2020 -0700

    mm: swap: properly update readahead statistics in unuse_pte_range()
    
    commit ebc5951eea499314f6fbbde20e295f1345c67330 upstream.
    
    In unuse_pte_range() we blindly swap-in pages without checking if the
    swap entry is already present in the swap cache.
    
    By doing this, the hit/miss ratio used by the swap readahead heuristic
    is not properly updated and this leads to non-optimal performance during
    swapoff.
    
    Tracing the distribution of the readahead size returned by the swap
    readahead heuristic during swapoff shows that a small readahead size is
    used most of the time as if we had only misses (this happens both with
    cluster and vma readahead), for example:
    
    r::swapin_nr_pages(unsigned long offset):unsigned long:$retval
            COUNT      EVENT
            36948      $retval = 8
            44151      $retval = 4
            49290      $retval = 1
            527771     $retval = 2
    
    Checking if the swap entry is present in the swap cache, instead, allows
    to properly update the readahead statistics and the heuristic behaves in a
    better way during swapoff, selecting a bigger readahead size:
    
    r::swapin_nr_pages(unsigned long offset):unsigned long:$retval
            COUNT      EVENT
            1618       $retval = 1
            4960       $retval = 2
            41315      $retval = 4
            103521     $retval = 8
    
    In terms of swapoff performance the result is the following:
    
    Testing environment
    ===================
    
     - Host:
       CPU: 1.8GHz Intel Core i7-8565U (quad-core, 8MB cache)
       HDD: PC401 NVMe SK hynix 512GB
       MEM: 16GB
    
     - Guest (kvm):
       8GB of RAM
       virtio block driver
       16GB swap file on ext4 (/swapfile)
    
    Test case
    =========
     - allocate 85% of memory
     - `systemctl hibernate` to force all the pages to be swapped-out to the
       swap file
     - resume the system
     - measure the time that swapoff takes to complete:
       # /usr/bin/time swapoff /swapfile
    
    Result (swapoff time)
    ======
                      5.6 vanilla   5.6 w/ this patch
                      -----------   -----------------
    cluster-readahead      22.09s              12.19s
        vma-readahead      18.20s              15.33s
    
    Conclusion
    ==========
    
    The specific use case this patch is addressing is to improve swapoff
    performance in cloud environments when a VM has been hibernated, resumed
    and all the memory needs to be forced back to RAM by disabling swap.
    
    This change allows to better exploits the advantages of the readahead
    heuristic during swapoff and this improvement allows to to speed up the
    resume process of such VMs.
    
    [andrea.righi@canonical.com: update changelog]
      Link: http://lkml.kernel.org/r/20200418084705.GA147642@xps-13
    Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Anchal Agarwal <anchalag@amazon.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Vineeth Remanan Pillai <vpillai@digitalocean.com>
    Cc: Kelley Nielsen <kelleynnn@gmail.com>
    Link: http://lkml.kernel.org/r/20200416180132.GB3352@xps-13
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Luiz Capitulino <luizcap@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce62df33fcfff0c6bc73355f2879f917146c8223
Author: Michael Walle <michael@walle.cc>
Date:   Fri Jan 27 10:40:13 2023 +0000

    nvmem: core: fix cell removal on error
    
    commit db3546d58b5a0fa581d9c9f2bdc2856fa6c5e43e upstream.
    
    nvmem_add_cells() could return an error after some cells are already
    added to the provider. In this case, the added cells are not removed.
    Remove any registered cells if nvmem_add_cells() fails.
    
    Fixes: fa72d847d68d7 ("nvmem: check the return value of nvmem_add_cells()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230127104015.23839-9-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1369322c1de52c7b9b988b95c9903110a4566778
Author: Phillip Lougher <phillip@squashfs.org.uk>
Date:   Fri Jan 27 06:18:42 2023 +0000

    Squashfs: fix handling and sanity checking of xattr_ids count
    
    commit f65c4bbbd682b0877b669828b4e033b8d5d0a2dc upstream.
    
    A Sysbot [1] corrupted filesystem exposes two flaws in the handling and
    sanity checking of the xattr_ids count in the filesystem.  Both of these
    flaws cause computation overflow due to incorrect typing.
    
    In the corrupted filesystem the xattr_ids value is 4294967071, which
    stored in a signed variable becomes the negative number -225.
    
    Flaw 1 (64-bit systems only):
    
    The signed integer xattr_ids variable causes sign extension.
    
    This causes variable overflow in the SQUASHFS_XATTR_*(A) macros.  The
    variable is first multiplied by sizeof(struct squashfs_xattr_id) where the
    type of the sizeof operator is "unsigned long".
    
    On a 64-bit system this is 64-bits in size, and causes the negative number
    to be sign extended and widened to 64-bits and then become unsigned.  This
    produces the very large number 18446744073709548016 or 2^64 - 3600.  This
    number when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and
    divided by SQUASHFS_METADATA_SIZE overflows and produces a length of 0
    (stored in len).
    
    Flaw 2 (32-bit systems only):
    
    On a 32-bit system the integer variable is not widened by the unsigned
    long type of the sizeof operator (32-bits), and the signedness of the
    variable has no effect due it always being treated as unsigned.
    
    The above corrupted xattr_ids value of 4294967071, when multiplied
    overflows and produces the number 4294963696 or 2^32 - 3400.  This number
    when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and divided by
    SQUASHFS_METADATA_SIZE overflows again and produces a length of 0.
    
    The effect of the 0 length computation:
    
    In conjunction with the corrupted xattr_ids field, the filesystem also has
    a corrupted xattr_table_start value, where it matches the end of
    filesystem value of 850.
    
    This causes the following sanity check code to fail because the
    incorrectly computed len of 0 matches the incorrect size of the table
    reported by the superblock (0 bytes).
    
        len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids);
        indexes = SQUASHFS_XATTR_BLOCKS(*xattr_ids);
    
        /*
         * The computed size of the index table (len bytes) should exactly
         * match the table start and end points
        */
        start = table_start + sizeof(*id_table);
        end = msblk->bytes_used;
    
        if (len != (end - start))
                return ERR_PTR(-EINVAL);
    
    Changing the xattr_ids variable to be "usigned int" fixes the flaw on a
    64-bit system.  This relies on the fact the computation is widened by the
    unsigned long type of the sizeof operator.
    
    Casting the variable to u64 in the above macro fixes this flaw on a 32-bit
    system.
    
    It also means 64-bit systems do not implicitly rely on the type of the
    sizeof operator to widen the computation.
    
    [1] https://lore.kernel.org/lkml/000000000000cd44f005f1a0f17f@google.com/
    
    Link: https://lkml.kernel.org/r/20230127061842.10965-1-phillip@squashfs.org.uk
    Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
    Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
    Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
    Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Cc: Fedor Pchelkin <pchelkin@ispras.ru>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d49c85a1913385eed46dd16a25ad0928253767f0
Author: Longlong Xia <xialonglong1@huawei.com>
Date:   Sat Jan 28 09:47:57 2023 +0000

    mm/swapfile: add cond_resched() in get_swap_pages()
    
    commit 7717fc1a12f88701573f9ed897cc4f6699c661e3 upstream.
    
    The softlockup still occurs in get_swap_pages() under memory pressure.  64
    CPU cores, 64GB memory, and 28 zram devices, the disksize of each zram
    device is 50MB with same priority as si.  Use the stress-ng tool to
    increase memory pressure, causing the system to oom frequently.
    
    The plist_for_each_entry_safe() loops in get_swap_pages() could reach tens
    of thousands of times to find available space (extreme case:
    cond_resched() is not called in scan_swap_map_slots()).  Let's add
    cond_resched() into get_swap_pages() when failed to find available space
    to avoid softlockup.
    
    Link: https://lkml.kernel.org/r/20230128094757.1060525-1-xialonglong1@huawei.com
    Signed-off-by: Longlong Xia <xialonglong1@huawei.com>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Cc: Chen Wandun <chenwandun@huawei.com>
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Nanyong Sun <sunnanyong@huawei.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c127bf9a952a85c4b49c4293d14c80224026b41f
Author: Zheng Yongjun <zhengyongjun3@huawei.com>
Date:   Sat Nov 26 07:14:30 2022 +0000

    fpga: stratix10-soc: Fix return value check in s10_ops_write_init()
    
    commit 65ea840afd508194b0ee903256162aa87e46ec30 upstream.
    
    In case of error, the function stratix10_svc_allocate_memory()
    returns ERR_PTR() and never returns NULL. The NULL test in the
    return value check should be replaced with IS_ERR().
    
    Fixes: e7eef1d7633a ("fpga: add intel stratix10 soc fpga manager driver")
    Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com>
    Reviewed-by: Russ Weight <russell.h.weight@intel.com>
    Cc: stable@vger.kernel.org
    Acked-by: Xu Yilun <yilun.xu@intel.com>
    Link: https://lore.kernel.org/r/20221126071430.19540-1-zhengyongjun3@huawei.com
    Signed-off-by: Xu Yilun <yilun.xu@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d86b4ceb09b7cbeed0aa5a365c278d380c62da1
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Jan 26 14:27:20 2023 -0800

    mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps
    
    commit 3489dbb696d25602aea8c3e669a6d43b76bd5358 upstream.
    
    Patch series "Fixes for hugetlb mapcount at most 1 for shared PMDs".
    
    This issue of mapcount in hugetlb pages referenced by shared PMDs was
    discussed in [1].  The following two patches address user visible behavior
    caused by this issue.
    
    [1] https://lore.kernel.org/linux-mm/Y9BF+OCdWnCSilEu@monkey/
    
    
    This patch (of 2):
    
    A hugetlb page will have a mapcount of 1 if mapped by multiple processes
    via a shared PMD.  This is because only the first process increases the
    map count, and subsequent processes just add the shared PMD page to their
    page table.
    
    page_mapcount is being used to decide if a hugetlb page is shared or
    private in /proc/PID/smaps.  Pages referenced via a shared PMD were
    incorrectly being counted as private.
    
    To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
    count the hugetlb page as shared.  A new helper to check for a shared PMD
    is added.
    
    [akpm@linux-foundation.org: simplification, per David]
    [akpm@linux-foundation.org: hugetlb.h: include page_ref.h for page_count()]
    Link: https://lkml.kernel.org/r/20230126222721.222195-2-mike.kravetz@oracle.com
    Fixes: 25ee01a2fca0 ("mm: hugetlb: proc: add hugetlb-related fields to /proc/PID/smaps")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 845a3708f04fc5a2c6ad8e42cfe613d89303658e
Author: Andreas Schwab <schwab@suse.de>
Date:   Wed Feb 1 10:29:45 2023 +0100

    riscv: disable generation of unwind tables
    
    commit 2f394c0e7d1129a35156e492bc8f445fb20f43ac upstream.
    
    GCC 13 will enable -fasynchronous-unwind-tables by default on riscv.  In
    the kernel, we don't have any use for unwind tables yet, so disable them.
    More importantly, the .eh_frame section brings relocations
    (R_RISC_32_PCREL, R_RISCV_SET{6,8,16}, R_RISCV_SUB{6,8,16}) into modules
    that we are not prepared to handle.
    
    Signed-off-by: Andreas Schwab <schwab@suse.de>
    Link: https://lore.kernel.org/r/mvmzg9xybqu.fsf@suse.de
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c89af52d91ca3f7b46b761103d5af62ed74f5b3c
Author: Helge Deller <deller@gmx.de>
Date:   Wed Feb 1 16:41:54 2023 +0100

    parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case
    
    commit 316f1f42b5cc1d95124c1f0387c867c1ba7b6d0e upstream.
    
    Wire up the missing ptrace requests PTRACE_GETREGS, PTRACE_SETREGS,
    PTRACE_GETFPREGS and PTRACE_SETFPREGS when running 32-bit applications
    on 64-bit kernels.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e6cc45ba8ab8b9d610e782aee01e9cb9fb27e08
Author: Helge Deller <deller@gmx.de>
Date:   Mon Dec 19 20:56:36 2022 +0100

    parisc: Fix return code of pdc_iodc_print()
    
    commit 5d1335dabb3c493a3d6d5b233953b6ac7b6c1ff2 upstream.
    
    There is an off-by-one if the printed string includes a new-line
    char.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f5df45fcb26fb5b86e7b0702ffa823fcd0d6ea8
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Thu Dec 1 19:16:35 2022 +0100

    iio:adc:twl6030: Enable measurements of VUSB, VBAT and others
    
    commit f804bd0dc28683a93a60f271aaefb2fc5b0853dd upstream.
    
    Some inputs need to be wired up to produce proper measurements,
    without this change only near zero values are reported.
    
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Fixes: 1696f36482e70 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
    Link: https://lore.kernel.org/r/20221201181635.3522962-1-andreas@kemnade.info
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b82cc9f7f05c2fd7b23d597050f849bcb30f1d5
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Tue Nov 29 10:03:16 2022 +0800

    iio: adc: berlin2-adc: Add missing of_node_put() in error path
    
    commit cbd3a0153cd18a2cbef6bf3cf31bb406c3fc9f55 upstream.
    
    of_get_parent() will return a device_node pointer with refcount
    incremented. We need to use of_node_put() on it when done. Add the
    missing of_node_put() in the error path of berlin2_adc_probe();
    
    Fixes: 70f1937911ca ("iio: adc: add support for Berlin")
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Link: https://lore.kernel.org/r/20221129020316.191731-1-wangxiongfeng2@huawei.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a300e358c6fc3f3c370c75923640894eed2ab99b
Author: Dmitry Perchanov <dmitry.perchanov@intel.com>
Date:   Wed Jan 11 14:22:10 2023 +0200

    iio: hid: fix the retval in accel_3d_capture_sample
    
    commit f7b23d1c35d8b8de1425bdfccaefd01f3b7c9d1c upstream.
    
    Return value should be zero for success. This was forgotten for timestamp
    feature. Verified on RealSense cameras.
    
    Fixes: a96cd0f901ee ("iio: accel: hid-sensor-accel-3d: Add timestamp")
    Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
    Link: https://lore.kernel.org/r/a6dc426498221c81fa71045b41adf782ebd42136.camel@intel.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2035cfb9586fa569b2f090131c576ee9184a906d
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Thu Feb 2 18:30:06 2023 +0100

    efi: Accept version 2 of memory attributes table
    
    commit 636ab417a7aec4ee993916e688eb5c5977570836 upstream.
    
    UEFI v2.10 introduces version 2 of the memory attributes table, which
    turns the reserved field into a flags field, but is compatible with
    version 1 in all other respects. So let's not complain about version 2
    if we encounter it.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6ea834e8dcebaeac2534b7097447c90a206f01a
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Fri Jan 27 14:52:42 2023 +0100

    watchdog: diag288_wdt: fix __diag288() inline assembly
    
    commit 32e40f9506b9e32917eb73154f93037b443124d1 upstream.
    
    The DIAG 288 statement consumes an EBCDIC string the address of which is
    passed in a register. Use a "memory" clobber to tell the compiler that
    memory is accessed within the inline assembly.
    
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78e55b52b205d341e18f4228bf9d745fb544f1a2
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Fri Jan 27 14:52:41 2023 +0100

    watchdog: diag288_wdt: do not use stack buffers for hardware data
    
    commit fe8973a3ad0905cb9ba2d42db42ed51de14737df upstream.
    
    With CONFIG_VMAP_STACK=y the stack is allocated from the vmalloc space.
    Data passed to a hardware or a hypervisor interface that
    requires V=R can no longer be allocated on the stack.
    
    Use kmalloc() to get memory for a diag288 command.
    
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4abcd352a0222cc807f6f87d2f58d59aeeb70340
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sun Jan 29 16:17:40 2023 +0100

    fbcon: Check font dimension limits
    
    commit 2b09d5d364986f724f17001ccfe4126b9b43a0be upstream.
    
    blit_x and blit_y are u32, so fbcon currently cannot support fonts
    larger than 32x32.
    
    The 32x32 case also needs shifting an unsigned int, to properly set bit
    31, otherwise we get "UBSAN: shift-out-of-bounds in fbcon_set_font",
    as reported on:
    
    http://lore.kernel.org/all/IA1PR07MB98308653E259A6F2CE94A4AFABCE9@IA1PR07MB9830.namprd07.prod.outlook.com
    Kernel Branch: 6.2.0-rc5-next-20230124
    Kernel config: https://drive.google.com/file/d/1F-LszDAizEEH0ZX0HcSR06v5q8FPl2Uv/view?usp=sharing
    Reproducer: https://drive.google.com/file/d/1mP1jcLBY7vWCNM60OMf-ogw-urQRjNrm/view?usp=sharing
    
    Reported-by: Sanan Hasanov <sanan.hasanov@Knights.ucf.edu>
    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Fixes: 2d2699d98492 ("fbcon: font setting should check limitation of driver")
    Cc: stable@vger.kernel.org
    Tested-by: Miko Larsson <mikoxyzzz@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e00d6a74c3c4c56eff836b25874b1374fec3eb79
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Tue Jan 10 14:45:24 2023 +0100

    Input: i8042 - add Clevo PCX0DX to i8042 quirk table
    
    [ Upstream commit 9c445d2637c938a800fcc8b5f0b10e60c94460c7 ]
    
    The Clevo PCX0DX/TUXEDO XP1511, need quirks for the keyboard to not be
    occasionally unresponsive after resume.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    Link: https://lore.kernel.org/r/20230110134524.553620-1-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit faed5af8a9c373163277974e297f97d19f56b765
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:38:52 2022 -0700

    Input: i8042 - add TUXEDO devices to i8042 quirk tables
    
    [ Upstream commit a6a87c36165e6791eeaed88025cde270536c3198 ]
    
    A lot of modern Clevo barebones have touchpad and/or keyboard issues after
    suspend fixable with nomux + reset + noloop + nopnp. Luckily, none of them
    have an external PS/2 port so this can safely be set for all of them.
    
    I'm not entirely sure if every device listed really needs all four quirks,
    but after testing and production use. No negative effects could be
    observed when setting all four.
    
    The list is quite massive as neither the TUXEDO nor the Clevo dmi strings
    have been very consistent historically. I tried to keep the list as short
    as possible without risking on missing an affected device.
    
    This is revision 3. The Clevo N150CU barebone is still removed as it might
    have problems with the fix and needs further investigations. The
    SchenkerTechnologiesGmbH System-/Board-Vendor string variations are
    added. This is now based in the quirk table refactor. This now also
    includes the additional noaux flag for the NS7xMU.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-5-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee77a19ee5b3dc21e0d80854e144f0d047c9fd55
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:38:07 2022 -0700

    Input: i8042 - merge quirk tables
    
    [ Upstream commit ff946268a0813c35b790dfbe07c3bfaa7bfb869c ]
    
    Merge i8042 quirk tables to reduce code duplication for devices that need
    more than one quirk. Before every quirk had its own table with devices
    needing that quirk. If a new quirk needed to be added a new table had to
    be created. When a device needed multiple quirks, it appeared in multiple
    tables. Now only one table called i8042_dmi_quirk_table exists. In it every
    device has one entry and required quirks are coded in the .driver_data
    field of the struct dmi_system_id used by this table. Multiple quirks for
    one device can be applied by bitwise-or of the new SERIO_QUIRK_* defines.
    
    Also align quirkable options with command line parameters and make vendor
    wide quirks per device overwriteable on a per device basis. The first match
    is honored while following matches are ignored. So when a vendor wide quirk
    is defined in the table, a device can inserted before and therefore
    ignoring the vendor wide define.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-3-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a789c05516a4e2df8b987971f08c95a531c3df9b
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:34:42 2022 -0700

    Input: i8042 - move __initconst to fix code styling warning
    
    [ Upstream commit 95a9916c909f0b1d95e24b4232b4bc38ff755415 ]
    
    Move __intconst from before i8042_dmi_laptop_table[] to after it for
    consistent code styling.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-2-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0332cbf53dad06a22189cc341391237f4ea6d9f
Author: George Kennedy <george.kennedy@oracle.com>
Date:   Tue Jan 24 11:16:54 2023 -0500

    vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
    
    [ Upstream commit 226fae124b2dac217ea5436060d623ff3385bc34 ]
    
    After a call to console_unlock() in vcs_read() the vc_data struct can be
    freed by vc_deallocate(). Because of that, the struct vc_data pointer
    load must be done at the top of while loop in vcs_read() to avoid a UAF
    when vcs_size() is called.
    
    Syzkaller reported a UAF in vcs_size().
    
    BUG: KASAN: use-after-free in vcs_size (drivers/tty/vt/vc_screen.c:215)
    Read of size 4 at addr ffff8881137479a8 by task 4a005ed81e27e65/1537
    
    CPU: 0 PID: 1537 Comm: 4a005ed81e27e65 Not tainted 6.2.0-rc5 #1
    Hardware name: Red Hat KVM, BIOS 1.15.0-2.module
    Call Trace:
      <TASK>
    __asan_report_load4_noabort (mm/kasan/report_generic.c:350)
    vcs_size (drivers/tty/vt/vc_screen.c:215)
    vcs_read (drivers/tty/vt/vc_screen.c:415)
    vfs_read (fs/read_write.c:468 fs/read_write.c:450)
    ...
      </TASK>
    
    Allocated by task 1191:
    ...
    kmalloc_trace (mm/slab_common.c:1069)
    vc_allocate (./include/linux/slab.h:580 ./include/linux/slab.h:720
         drivers/tty/vt/vt.c:1128 drivers/tty/vt/vt.c:1108)
    con_install (drivers/tty/vt/vt.c:3383)
    tty_init_dev (drivers/tty/tty_io.c:1301 drivers/tty/tty_io.c:1413
         drivers/tty/tty_io.c:1390)
    tty_open (drivers/tty/tty_io.c:2080 drivers/tty/tty_io.c:2126)
    chrdev_open (fs/char_dev.c:415)
    do_dentry_open (fs/open.c:883)
    vfs_open (fs/open.c:1014)
    ...
    
    Freed by task 1548:
    ...
    kfree (mm/slab_common.c:1021)
    vc_port_destruct (drivers/tty/vt/vt.c:1094)
    tty_port_destructor (drivers/tty/tty_port.c:296)
    tty_port_put (drivers/tty/tty_port.c:312)
    vt_disallocate_all (drivers/tty/vt/vt_ioctl.c:662 (discriminator 2))
    vt_ioctl (drivers/tty/vt/vt_ioctl.c:903)
    tty_ioctl (drivers/tty/tty_io.c:2776)
    ...
    
    The buggy address belongs to the object at ffff888113747800
      which belongs to the cache kmalloc-1k of size 1024
    The buggy address is located 424 bytes inside of
      1024-byte region [ffff888113747800, ffff888113747c00)
    
    The buggy address belongs to the physical page:
    page:00000000b3fe6c7c refcount:1 mapcount:0 mapping:0000000000000000
         index:0x0 pfn:0x113740
    head:00000000b3fe6c7c order:3 compound_mapcount:0 subpages_mapcount:0
         compound_pincount:0
    anon flags: 0x17ffffc0010200(slab|head|node=0|zone=2|lastcpupid=0x1fffff)
    raw: 0017ffffc0010200 ffff888100042dc0 0000000000000000 dead000000000001
    raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
      ffff888113747880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff888113747900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    > ffff888113747980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                       ^
      ffff888113747a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff888113747a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    Disabling lock debugging due to kernel taint
    
    Fixes: ac751efa6a0d ("console: rename acquire/release_console_sem() to console_lock/unlock()")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Suggested-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: George Kennedy <george.kennedy@oracle.com>
    Link: https://lore.kernel.org/r/1674577014-12374-1-git-send-email-george.kennedy@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5bf0010b87be18c4bf23b2f75be065b0c5264fe4
Author: Udipto Goswami <quic_ugoswami@quicinc.com>
Date:   Tue Jan 24 14:41:49 2023 +0530

    usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait
    
    [ Upstream commit 921deb9da15851425ccbb6ee409dc2fd8fbdfe6b ]
    
    __ffs_ep0_queue_wait executes holding the spinlock of &ffs->ev.waitq.lock
    and unlocks it after the assignments to usb_request are done.
    However in the code if the request is already NULL we bail out returning
    -EINVAL but never unlocked the spinlock.
    
    Fix this by adding spin_unlock_irq &ffs->ev.waitq.lock before returning.
    
    Fixes: 6a19da111057 ("usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait")
    Reviewed-by: John Keeping <john@metanate.com>
    Signed-off-by: Udipto Goswami <quic_ugoswami@quicinc.com>
    Link: https://lore.kernel.org/r/20230124091149.18647-1-quic_ugoswami@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db3798943ab7ae897e8205091ad12e3bb9e5ac95
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Tue Jan 24 09:31:21 2023 +0100

    usb: dwc3: qcom: enable vbus override when in OTG dr-mode
    
    [ Upstream commit eb320f76e31dc835b9f57f04af1a2353b13bb7d8 ]
    
    With vbus override enabled when in OTG dr_mode, Host<->Peripheral
    switch now works on SM8550, otherwise the DWC3 seems to be stuck
    in Host mode only.
    
    Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20230123-topic-sm8550-upstream-dwc3-qcom-otg-v2-1-2d400e598463@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fefffc7825007276196f588983208547de594026
Author: Wesley Cheng <wcheng@codeaurora.org>
Date:   Sun Jul 4 02:33:12 2021 +0100

    usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API
    
    [ Upstream commit 8e6cb5d27e8246d9c986ec162d066a502d2b602b ]
    
    There was an extra character in the dwc3_qcom_vbus_override_enable()
    function.  Removed the extra character.
    
    Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210704013314.200951-2-bryan.odonoghue@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: eb320f76e31d ("usb: dwc3: qcom: enable vbus override when in OTG dr-mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4650c04de9039ef2d069f115f1d6b7887b153ca
Author: Olivier Moysan <olivier.moysan@foss.st.com>
Date:   Fri Dec 2 16:28:48 2022 +0100

    iio: adc: stm32-dfsdm: fill module aliases
    
    [ Upstream commit cc3304052a89ab6ac887ed9224420a27e3d354e1 ]
    
    When STM32 DFSDM driver is built as module, no modalias information
    is available. This prevents module to be loaded by udev.
    Add MODULE_DEVICE_TABLE() to fill module aliases.
    
    Fixes: e2e6771c6462 ("IIO: ADC: add STM32 DFSDM sigma delta ADC support")
    Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Link: https://lore.kernel.org/r/20221202152848.45585-1-olivier.moysan@foss.st.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 165511b99ebc79496405ddab57c83306ac2f8544
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Mon Jan 23 11:43:23 2023 -0800

    net/x25: Fix to not accept on connected socket
    
    [ Upstream commit f2b0b5210f67c56a3bcdf92ff665fb285d6e0067 ]
    
    When listen() and accept() are called on an x25 socket
    that connect() succeeds, accept() succeeds immediately.
    This is because x25_connect() queues the skb to
    sk->sk_receive_queue, and x25_accept() dequeues it.
    
    This creates a child socket with the sk of the parent
    x25 socket, which can cause confusion.
    
    Fix x25_listen() to return -EINVAL if the socket has
    already been successfully connect()ed to avoid this issue.
    
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b05664e036e1c4125185062c528181db9817bf46
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Thu Jan 12 22:38:05 2023 -0800

    i2c: rk3x: fix a bunch of kernel-doc warnings
    
    [ Upstream commit 0582d984793d30442da88fe458674502bad1ad29 ]
    
    Fix multiple W=1 kernel-doc warnings in i2c-rk3x.c:
    
    drivers/i2c/busses/i2c-rk3x.c:83: warning: missing initial short description on line:
     * struct i2c_spec_values:
    drivers/i2c/busses/i2c-rk3x.c:139: warning: missing initial short description on line:
     * struct rk3x_i2c_calced_timings:
    drivers/i2c/busses/i2c-rk3x.c:162: warning: missing initial short description on line:
     * struct rk3x_i2c_soc_data:
    drivers/i2c/busses/i2c-rk3x.c:242: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Generate a START condition, which triggers a REG_INT_START interrupt.
    drivers/i2c/busses/i2c-rk3x.c:261: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Generate a STOP condition, which triggers a REG_INT_STOP interrupt.
    drivers/i2c/busses/i2c-rk3x.c:304: warning: expecting prototype for Setup a read according to i2c(). Prototype was for rk3x_i2c_prepare_read() instead
    drivers/i2c/busses/i2c-rk3x.c:335: warning: expecting prototype for Fill the transmit buffer with data from i2c(). Prototype was for rk3x_i2c_fill_transmit_buf() instead
    drivers/i2c/busses/i2c-rk3x.c:535: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Get timing values of I2C specification
    drivers/i2c/busses/i2c-rk3x.c:552: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Calculate divider values for desired SCL frequency
    drivers/i2c/busses/i2c-rk3x.c:713: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Calculate timing values for desired SCL frequency
    drivers/i2c/busses/i2c-rk3x.c:963: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Setup I2C registers for an I2C operation specified by msgs, num.
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4d765f4761f9e3a2d62992f825aeee593bcb6b9
Author: Mike Christie <michael.christie@oracle.com>
Date:   Tue Jan 17 13:39:37 2023 -0600

    scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress
    
    [ Upstream commit f484a794e4ee2a9ce61f52a78e810ac45f3fe3b3 ]
    
    If during iscsi_sw_tcp_session_create() iscsi_tcp_r2tpool_alloc() fails,
    userspace could be accessing the host's ipaddress attr. If we then free the
    session via iscsi_session_teardown() while userspace is still accessing the
    session we will hit a use after free bug.
    
    Set the tcp_sw_host->session after we have completed session creation and
    can no longer fail.
    
    Link: https://lore.kernel.org/r/20230117193937.21244-3-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Acked-by: Ding Hui <dinghui@sangfor.com.cn>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6122ce1de1b22a5d257d2fab973eb83c33f7123c
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Tue Jan 10 13:53:10 2023 +0100

    scsi: target: core: Fix warning on RT kernels
    
    [ Upstream commit 84ed64b1a7a7fcd507598dee7708c1f225123711 ]
    
    Calling spin_lock_irqsave() does not disable the interrupts on realtime
    kernels, remove the warning and replace assert_spin_locked() with
    lockdep_assert_held().
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20230110125310.55884-1-mlombard@redhat.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d92a25627bcdf264183670da73c9a60c0bac327e
Author: Anton Gusev <aagusev@ispras.ru>
Date:   Fri Feb 3 16:22:13 2023 +0300

    efi: fix potential NULL deref in efi_mem_reserve_persistent
    
    [ Upstream commit 966d47e1f27c45507c5df82b2a2157e5a4fd3909 ]
    
    When iterating on a linked list, a result of memremap is dereferenced
    without checking it for NULL.
    
    This patch adds a check that falls back on allocating a new page in
    case memremap doesn't succeed.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 18df7577adae ("efi/memreserve: deal with memreserve entries in unmapped memory")
    Signed-off-by: Anton Gusev <aagusev@ispras.ru>
    [ardb: return -ENOMEM instead of breaking out of the loop]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed6c5e8caf55778500202775167e8ccdb1a030cb
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Thu Feb 2 00:02:18 2023 +0300

    net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
    
    [ Upstream commit 0c598aed445eb45b0ee7ba405f7ece99ee349c30 ]
    
    Syzkaller reports a memory leak of new_flow in ovs_flow_cmd_new() as it is
    not freed when an allocation of a key fails.
    
    BUG: memory leak
    unreferenced object 0xffff888116668000 (size 632):
      comm "syz-executor231", pid 1090, jiffies 4294844701 (age 18.871s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000defa3494>] kmem_cache_zalloc include/linux/slab.h:654 [inline]
        [<00000000defa3494>] ovs_flow_alloc+0x19/0x180 net/openvswitch/flow_table.c:77
        [<00000000c67d8873>] ovs_flow_cmd_new+0x1de/0xd40 net/openvswitch/datapath.c:957
        [<0000000010a539a8>] genl_family_rcv_msg_doit+0x22d/0x330 net/netlink/genetlink.c:739
        [<00000000dff3302d>] genl_family_rcv_msg net/netlink/genetlink.c:783 [inline]
        [<00000000dff3302d>] genl_rcv_msg+0x328/0x590 net/netlink/genetlink.c:800
        [<000000000286dd87>] netlink_rcv_skb+0x153/0x430 net/netlink/af_netlink.c:2515
        [<0000000061fed410>] genl_rcv+0x24/0x40 net/netlink/genetlink.c:811
        [<000000009dc0f111>] netlink_unicast_kernel net/netlink/af_netlink.c:1313 [inline]
        [<000000009dc0f111>] netlink_unicast+0x545/0x7f0 net/netlink/af_netlink.c:1339
        [<000000004a5ee816>] netlink_sendmsg+0x8e7/0xde0 net/netlink/af_netlink.c:1934
        [<00000000482b476f>] sock_sendmsg_nosec net/socket.c:651 [inline]
        [<00000000482b476f>] sock_sendmsg+0x152/0x190 net/socket.c:671
        [<00000000698574ba>] ____sys_sendmsg+0x70a/0x870 net/socket.c:2356
        [<00000000d28d9e11>] ___sys_sendmsg+0xf3/0x170 net/socket.c:2410
        [<0000000083ba9120>] __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439
        [<00000000c00628f8>] do_syscall_64+0x30/0x40 arch/x86/entry/common.c:46
        [<000000004abfdcf4>] entry_SYSCALL_64_after_hwframe+0x61/0xc6
    
    To fix this the patch rearranges the goto labels to reflect the order of
    object allocations and adds appropriate goto statements on the error
    paths.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 68bb10101e6b ("openvswitch: Fix flow lookup to use unmasked key")
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20230201210218.361970-1-pchelkin@ispras.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 743f7b51fe7cffd3828439a20c9df6d0f7c21182
Author: Parav Pandit <parav@nvidia.com>
Date:   Thu Feb 2 18:35:16 2023 +0200

    virtio-net: Keep stop() to follow mirror sequence of open()
    
    [ Upstream commit 63b114042d8a9c02d9939889177c36dbdb17a588 ]
    
    Cited commit in fixes tag frees rxq xdp info while RQ NAPI is
    still enabled and packet processing may be ongoing.
    
    Follow the mirror sequence of open() in the stop() callback.
    This ensures that when rxq info is unregistered, no rx
    packet processing is ongoing.
    
    Fixes: 754b8a21a96d ("virtio_net: setup xdp_rxq_info")
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Link: https://lore.kernel.org/r/20230202163516.12559-1-parav@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aed972fbf6faca70be5c90a1d1c8b4691d5b2e01
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:16 2023 +0000

    selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking
    
    [ Upstream commit 329c9cd769c2e306957df031efff656c40922c76 ]
    
    The test tool can check that the zerocopy number of completions value is
    valid taking into consideration the number of datagram send calls. This can
    catch the system into a state where the datagrams are still in the system
    (for example in a qdisk, waiting for the network interface to return a
    completion notification, etc).
    
    This change adds a retry logic of computing the number of completions up to
    a configurable (via CLI) timeout (default: 2 seconds).
    
    Fixes: 79ebc3c26010 ("net/udpgso_bench_tx: options to exercise TX CMSG")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-4-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df1213a267044636fb1aeb8f6c57b74d0fd5e6ec
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:14 2023 +0000

    selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs
    
    [ Upstream commit dafe93b9ee21028d625dce347118b82659652eff ]
    
    "udpgro_bench.sh" invokes udpgso_bench_rx/udpgso_bench_tx programs
    subsequently and while doing so, there is a chance that the rx one is not
    ready to accept socket connections. This racing bug could fail the test
    with at least one of the following:
    
    ./udpgso_bench_tx: connect: Connection refused
    ./udpgso_bench_tx: sendmsg: Connection refused
    ./udpgso_bench_tx: write: Connection refused
    
    This change addresses this by making udpgro_bench.sh wait for the rx
    program to be ready before firing off the tx one - up to a 10s timeout.
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-3-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c70ece3d374171a3f887a353fdb6426e7bce6e6
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:12 2023 +0000

    selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided
    
    [ Upstream commit db9b47ee9f5f375ab0c5daeb20321c75b4fa657d ]
    
    Leaving unrecognized arguments buried in the output, can easily hide a
    CLI/script typo. Avoid this by exiting when wrong arguments are provided to
    the udpgso_bench test programs.
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-2-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d47f886d0c38e763a15bb416170c555d7a1d2c48
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:10 2023 +0000

    selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning
    
    [ Upstream commit c03c80e3a03ffb4f790901d60797e9810539d946 ]
    
    This change fixes the following compiler warning:
    
    /usr/include/x86_64-linux-gnu/bits/error.h:40:5: warning: ‘gso_size’ may
    be used uninitialized [-Wmaybe-uninitialized]
       40 |     __error_noreturn (__status, __errnum, __format,
       __va_arg_pack ());
             |
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             udpgso_bench_rx.c: In function ‘main’:
             udpgso_bench_rx.c:253:23: note: ‘gso_size’ was declared here
               253 |         int ret, len, gso_size, budget = 256;
    
    Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-1-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db3f016ad5009487642f44edc92ca4b6bebb60d4
Author: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Date:   Mon Jan 30 12:27:41 2023 +0900

    ata: libata: Fix sata_down_spd_limit() when no link speed is reported
    
    [ Upstream commit 69f2c9346313ba3d3dfa4091ff99df26c67c9021 ]
    
    Commit 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if
    driver has not recorded sstatus speed") changed the behavior of
    sata_down_spd_limit() to return doing nothing if a drive does not report
    a current link speed, to avoid reducing the link speed to the lowest 1.5
    Gbps speed.
    
    However, the change assumed that a speed was recorded before probing
    (e.g. before a suspend/resume) and set in link->sata_spd. This causes
    problems with adapters/drives combination failing to establish a link
    speed during probe autonegotiation. One example reported of this problem
    is an mvebu adapter with a 3Gbps port-multiplier box: autonegotiation
    fails, leaving no recorded link speed and no reported current link
    speed. Probe retries also fail as no action is taken by sata_set_spd()
    after each retry.
    
    Fix this by returning early in sata_down_spd_limit() only if we do have
    a recorded link speed, that is, if link->sata_spd is not 0. With this
    fix, a failed probe not leading to a recorded link speed is retried at
    the lower 1.5 Gbps speed, with the link speed potentially increased
    later on the second revalidate of the device if the device reports
    that it supports higher link speeds.
    
    Reported-by: Marius Dinu <marius@psihoexpert.ro>
    Fixes: 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if driver has not recorded sstatus speed")
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Tested-by: Marius Dinu <marius@psihoexpert.ro>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6950df42a03c9ac9290503ced3f371199cb68fa9
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Sep 6 17:42:00 2021 +0800

    can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate
    
    [ Upstream commit d0553680f94c49bbe0e39eb50d033ba563b4212d ]
    
    The conclusion "j1939_session_deactivate() should be called with a
    session ref-count of at least 2" is incorrect. In some concurrent
    scenarios, j1939_session_deactivate can be called with the session
    ref-count less than 2. But there is not any problem because it
    will check the session active state before session putting in
    j1939_session_deactivate_locked().
    
    Here is the concurrent scenario of the problem reported by syzbot
    and my reproduction log.
    
            cpu0                            cpu1
                                    j1939_xtp_rx_eoma
    j1939_xtp_rx_abort_one
                                    j1939_session_get_by_addr [kref == 2]
    j1939_session_get_by_addr [kref == 3]
    j1939_session_deactivate [kref == 2]
    j1939_session_put [kref == 1]
                                    j1939_session_completed
                                    j1939_session_deactivate
                                    WARN_ON_ONCE(kref < 2)
    
    =====================================================
    WARNING: CPU: 1 PID: 21 at net/can/j1939/transport.c:1088 j1939_session_deactivate+0x5f/0x70
    CPU: 1 PID: 21 Comm: ksoftirqd/1 Not tainted 5.14.0-rc7+ #32
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
    RIP: 0010:j1939_session_deactivate+0x5f/0x70
    Call Trace:
     j1939_session_deactivate_activate_next+0x11/0x28
     j1939_xtp_rx_eoma+0x12a/0x180
     j1939_tp_recv+0x4a2/0x510
     j1939_can_recv+0x226/0x380
     can_rcv_filter+0xf8/0x220
     can_receive+0x102/0x220
     ? process_backlog+0xf0/0x2c0
     can_rcv+0x53/0xf0
     __netif_receive_skb_one_core+0x67/0x90
     ? process_backlog+0x97/0x2c0
     __netif_receive_skb+0x22/0x80
    
    Fixes: 0c71437dd50d ("can: j1939: j1939_session_deactivate(): clarify lifetime of session object")
    Reported-by: syzbot+9981a614060dcee6eeca@syzkaller.appspotmail.com
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/all/20210906094200.95868-1-william.xuanziyang@huawei.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb079b077026a8585dda778b45d49219c43fb797
Author: Chris Healy <healych@amazon.com>
Date:   Mon Jan 30 15:14:02 2023 -0800

    net: phy: meson-gxl: Add generic dummy stubs for MMD register access
    
    [ Upstream commit afc2336f89dc0fc0ef25b92366814524b0fd90fb ]
    
    The Meson G12A Internal PHY does not support standard IEEE MMD extended
    register access, therefore add generic dummy stubs to fail the read and
    write MMD calls. This is necessary to prevent the core PHY code from
    erroneously believing that EEE is supported by this PHY even though this
    PHY does not support EEE, as MMD register access returns all FFFFs.
    
    Fixes: 5c3407abb338 ("net: phy: meson-gxl: add g12a support")
    Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Chris Healy <healych@amazon.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20230130231402.471493-1-cphealy@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db76fc535fbdfbf29fd0b93e49627537ad794c8c
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Tue Jan 17 13:52:26 2023 +0300

    squashfs: harden sanity check in squashfs_read_xattr_id_table
    
    [ Upstream commit 72e544b1b28325fe78a4687b980871a7e4101f76 ]
    
    While mounting a corrupted filesystem, a signed integer '*xattr_ids' can
    become less than zero.  This leads to the incorrect computation of 'len'
    and 'indexes' values which can cause null-ptr-deref in copy_bio_to_actor()
    or out-of-bounds accesses in the next sanity checks inside
    squashfs_read_xattr_id_table().
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Link: https://lkml.kernel.org/r/20230117105226.329303-2-pchelkin@ispras.ru
    Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
    Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Cc: Phillip Lougher <phillip@squashfs.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dffe83a198a6c293155f99958e51ab84442424c5
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Jan 30 11:39:29 2023 +0100

    netfilter: br_netfilter: disable sabotage_in hook after first suppression
    
    [ Upstream commit 2b272bb558f1d3a5aa95ed8a82253786fd1a48ba ]
    
    When using a xfrm interface in a bridged setup (the outgoing device is
    bridged), the incoming packets in the xfrm interface are only tracked
    in the outgoing direction.
    
    $ brctl show
    bridge name     interfaces
    br_eth1         eth1
    
    $ conntrack -L
    tcp 115 SYN_SENT src=192... dst=192... [UNREPLIED] ...
    
    If br_netfilter is enabled, the first (encrypted) packet is received onR
    eth1, conntrack hooks are called from br_netfilter emulation which
    allocates nf_bridge info for this skb.
    
    If the packet is for local machine, skb gets passed up the ip stack.
    The skb passes through ip prerouting a second time. br_netfilter
    ip_sabotage_in supresses the re-invocation of the hooks.
    
    After this, skb gets decrypted in xfrm layer and appears in
    network stack a second time (after decryption).
    
    Then, ip_sabotage_in is called again and suppresses netfilter
    hook invocation, even though the bridge layer never called them
    for the plaintext incarnation of the packet.
    
    Free the bridge info after the first suppression to avoid this.
    
    I was unable to figure out where the regression comes from, as far as i
    can see br_netfilter always had this problem; i did not expect that skb
    is looped again with different headers.
    
    Fixes: c4b0e771f906 ("netfilter: avoid using skb->nf_bridge directly")
    Reported-and-tested-by: Wolfgang Nothdurft <wolfgang@linogate.de>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20355b9569bd1fd5a236898524b6dd4117e660d0
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Thu Jan 26 18:32:50 2023 -0800

    netrom: Fix use-after-free caused by accept on already connected socket
    
    [ Upstream commit 611792920925fb088ddccbe2783c7f92fdfb6b64 ]
    
    If you call listen() and accept() on an already connect()ed
    AF_NETROM socket, accept() can successfully connect.
    This is because when the peer socket sends data to sendmsg,
    the skb with its own sk stored in the connected socket's
    sk->sk_receive_queue is connected, and nr_accept() dequeues
    the skb waiting in the sk->sk_receive_queue.
    
    As a result, nr_accept() allocates and returns a sock with
    the sk of the parent AF_NETROM socket.
    
    And here use-after-free can happen through complex race conditions:
    ```
                      cpu0                                                     cpu1
                                                                   1. socket_2 = socket(AF_NETROM)
                                                                            .
                                                                            .
                                                                      listen(socket_2)
                                                                      accepted_socket = accept(socket_2)
           2. socket_1 = socket(AF_NETROM)
                nr_create()    // sk refcount : 1
              connect(socket_1)
                                                                   3. write(accepted_socket)
                                                                        nr_sendmsg()
                                                                        nr_output()
                                                                        nr_kick()
                                                                        nr_send_iframe()
                                                                        nr_transmit_buffer()
                                                                        nr_route_frame()
                                                                        nr_loopback_queue()
                                                                        nr_loopback_timer()
                                                                        nr_rx_frame()
                                                                        nr_process_rx_frame(sk, skb);    // sk : socket_1's sk
                                                                        nr_state3_machine()
                                                                        nr_queue_rx_frame()
                                                                        sock_queue_rcv_skb()
                                                                        sock_queue_rcv_skb_reason()
                                                                        __sock_queue_rcv_skb()
                                                                        __skb_queue_tail(list, skb);    // list : socket_1's sk->sk_receive_queue
           4. listen(socket_1)
                nr_listen()
              uaf_socket = accept(socket_1)
                nr_accept()
                skb_dequeue(&sk->sk_receive_queue);
                                                                   5. close(accepted_socket)
                                                                        nr_release()
                                                                        nr_write_internal(sk, NR_DISCREQ)
                                                                        nr_transmit_buffer()    // NR_DISCREQ
                                                                        nr_route_frame()
                                                                        nr_loopback_queue()
                                                                        nr_loopback_timer()
                                                                        nr_rx_frame()    // sk : socket_1's sk
                                                                        nr_process_rx_frame()  // NR_STATE_3
                                                                        nr_state3_machine()    // NR_DISCREQ
                                                                        nr_disconnect()
                                                                        nr_sk(sk)->state = NR_STATE_0;
           6. close(socket_1)    // sk refcount : 3
                nr_release()    // NR_STATE_0
                sock_put(sk);    // sk refcount : 0
                sk_free(sk);
              close(uaf_socket)
                nr_release()
                sock_hold(sk);    // UAF
    ```
    
    KASAN report by syzbot:
    ```
    BUG: KASAN: use-after-free in nr_release+0x66/0x460 net/netrom/af_netrom.c:520
    Write of size 4 at addr ffff8880235d8080 by task syz-executor564/5128
    
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xd1/0x138 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:306 [inline]
     print_report+0x15e/0x461 mm/kasan/report.c:417
     kasan_report+0xbf/0x1f0 mm/kasan/report.c:517
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0x141/0x190 mm/kasan/generic.c:189
     instrument_atomic_read_write include/linux/instrumented.h:102 [inline]
     atomic_fetch_add_relaxed include/linux/atomic/atomic-instrumented.h:116 [inline]
     __refcount_add include/linux/refcount.h:193 [inline]
     __refcount_inc include/linux/refcount.h:250 [inline]
     refcount_inc include/linux/refcount.h:267 [inline]
     sock_hold include/net/sock.h:775 [inline]
     nr_release+0x66/0x460 net/netrom/af_netrom.c:520
     __sock_release+0xcd/0x280 net/socket.c:650
     sock_close+0x1c/0x20 net/socket.c:1365
     __fput+0x27c/0xa90 fs/file_table.c:320
     task_work_run+0x16f/0x270 kernel/task_work.c:179
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0xaa8/0x2950 kernel/exit.c:867
     do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
     get_signal+0x21c3/0x2450 kernel/signal.c:2859
     arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
     exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
     exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
     __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
     syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
     do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f6c19e3c9b9
    Code: Unable to access opcode bytes at 0x7f6c19e3c98f.
    RSP: 002b:00007fffd4ba2ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
    RAX: 0000000000000116 RBX: 0000000000000003 RCX: 00007f6c19e3c9b9
    RDX: 0000000000000318 RSI: 00000000200bd000 RDI: 0000000000000006
    RBP: 0000000000000003 R08: 000000000000000d R09: 000000000000000d
    R10: 0000000000000000 R11: 0000000000000246 R12: 000055555566a2c0
    R13: 0000000000000011 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    Allocated by task 5128:
     kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
     kasan_set_track+0x25/0x30 mm/kasan/common.c:52
     ____kasan_kmalloc mm/kasan/common.c:371 [inline]
     ____kasan_kmalloc mm/kasan/common.c:330 [inline]
     __kasan_kmalloc+0xa3/0xb0 mm/kasan/common.c:380
     kasan_kmalloc include/linux/kasan.h:211 [inline]
     __do_kmalloc_node mm/slab_common.c:968 [inline]
     __kmalloc+0x5a/0xd0 mm/slab_common.c:981
     kmalloc include/linux/slab.h:584 [inline]
     sk_prot_alloc+0x140/0x290 net/core/sock.c:2038
     sk_alloc+0x3a/0x7a0 net/core/sock.c:2091
     nr_create+0xb6/0x5f0 net/netrom/af_netrom.c:433
     __sock_create+0x359/0x790 net/socket.c:1515
     sock_create net/socket.c:1566 [inline]
     __sys_socket_create net/socket.c:1603 [inline]
     __sys_socket_create net/socket.c:1588 [inline]
     __sys_socket+0x133/0x250 net/socket.c:1636
     __do_sys_socket net/socket.c:1649 [inline]
     __se_sys_socket net/socket.c:1647 [inline]
     __x64_sys_socket+0x73/0xb0 net/socket.c:1647
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Freed by task 5128:
     kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
     kasan_set_track+0x25/0x30 mm/kasan/common.c:52
     kasan_save_free_info+0x2b/0x40 mm/kasan/generic.c:518
     ____kasan_slab_free mm/kasan/common.c:236 [inline]
     ____kasan_slab_free+0x13b/0x1a0 mm/kasan/common.c:200
     kasan_slab_free include/linux/kasan.h:177 [inline]
     __cache_free mm/slab.c:3394 [inline]
     __do_kmem_cache_free mm/slab.c:3580 [inline]
     __kmem_cache_free+0xcd/0x3b0 mm/slab.c:3587
     sk_prot_free net/core/sock.c:2074 [inline]
     __sk_destruct+0x5df/0x750 net/core/sock.c:2166
     sk_destruct net/core/sock.c:2181 [inline]
     __sk_free+0x175/0x460 net/core/sock.c:2192
     sk_free+0x7c/0xa0 net/core/sock.c:2203
     sock_put include/net/sock.h:1991 [inline]
     nr_release+0x39e/0x460 net/netrom/af_netrom.c:554
     __sock_release+0xcd/0x280 net/socket.c:650
     sock_close+0x1c/0x20 net/socket.c:1365
     __fput+0x27c/0xa90 fs/file_table.c:320
     task_work_run+0x16f/0x270 kernel/task_work.c:179
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0xaa8/0x2950 kernel/exit.c:867
     do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
     get_signal+0x21c3/0x2450 kernel/signal.c:2859
     arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
     exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
     exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
     __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
     syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
     do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    ```
    
    To fix this issue, nr_listen() returns -EINVAL for sockets that
    successfully nr_connect().
    
    Reported-by: syzbot+caa188bdfc1eeafeb418@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03eb2a1b03f3890971766c0c9103ff1c531a4623
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 19:16:56 2022 -0400

    fix "direction" argument of iov_iter_kvec()
    
    [ Upstream commit fc02f33787d8dd227b54f263eba983d5b249c032 ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34b0fab797f00340e9d2a94460c665f9a130214f
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 19:04:18 2022 -0400

    fix iov_iter_bvec() "direction" argument
    
    [ Upstream commit b676668d99155e6859d99bbf2df18b3f03851902 ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50b70599c00bcdecbd0cd3d27641e65c90332fbd
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 18:59:12 2022 -0400

    WRITE is "data source", not destination...
    
    [ Upstream commit 974c36fb828aeae7b4f9063f94860ae6c5633efd ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21081886de0c8a5679d15fe5f1c7f09276920e0a
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Thu Jan 26 22:06:08 2023 -0500

    scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT"
    
    [ Upstream commit 15600159bcc6abbeae6b33a849bef90dca28b78f ]
    
    This reverts commit 948e922fc44611ee2de0c89583ca958cb5307d36.
    
    Not all targets that return PQ=1 and PDT=0 should be ignored. While
    the SCSI spec is vague in this department, there appears to be a
    critical mass of devices which rely on devices being accessible with
    this combination of reported values.
    
    Fixes: 948e922fc446 ("scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT")
    Link: https://lore.kernel.org/r/yq1lelrleqr.fsf@ca-mkp.ca.oracle.com
    Acked-by: Bart Van Assche <bvanassche@acm.org>
    Acked-by: Martin Wilck <mwilck@suse.com>
    Acked-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14be8b0c4eed6c253ce373e58aba8c7345c212b2
Author: Pierluigi Passaro <pierluigi.p@variscite.com>
Date:   Sun Jan 15 22:35:03 2023 +0100

    arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX
    
    [ Upstream commit 47123900f3e4a7f769631d6ec15abf44086276f6 ]
    
    According section
        8.2.5.313 Select Input Register (IOMUXC_UART1_RXD_SELECT_INPUT)
    of 
        i.MX 8M Mini Applications Processor Reference Manual, Rev. 3, 11/2020
    the required setting for this specific pin configuration is "1"
    
    Signed-off-by: Pierluigi Passaro <pierluigi.p@variscite.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Fixes: c1c9d41319c3 ("dt-bindings: imx: Add pinctrl binding doc for imx8mm")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6870f3800dbb212ae8433183ee82f566d067c6c
Author: Artemii Karasev <karasev@ispras.ru>
Date:   Thu Jan 19 00:22:59 2023 -0800

    ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
    
    [ Upstream commit b9cee506da2b7920b5ea02ccd8e78a907d0ee7aa ]
    
    snd_hda_get_connections() can return a negative error code.
    It may lead to accessing 'conn' array at a negative index.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Artemii Karasev <karasev@ispras.ru>
    Fixes: 30b4503378c9 ("ALSA: hda - Expose secret DAC-AA connection of some VIA codecs")
    Link: https://lore.kernel.org/r/20230119082259.3634-1-karasev@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 412fddc09612a26b43e1a09baa537052f1f290cf
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jan 12 13:28:49 2023 +0200

    ASoC: Intel: bytcr_rt5651: Drop reference count of ACPI device after use
    
    [ Upstream commit 721858823d7cdc8f2a897579b040e935989f6f02 ]
    
    Theoretically the device might gone if its reference count drops to 0.
    This might be the case when we try to find the first physical node of
    the ACPI device. We need to keep reference to it until we get a result
    of the above mentioned call. Refactor the code to drop the reference
    count at the correct place.
    
    While at it, move to acpi_dev_put() as symmetrical call to the
    acpi_dev_get_first_match_dev().
    
    Fixes: 02c0a3b3047f ("ASoC: Intel: bytcr_rt5651: add MCLK, quirks and cleanups")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20230112112852.67714-3-andriy.shevchenko@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79dfde344e0f1f01952f7774ea1d5d1ca06c9286
Author: Yuan Can <yuancan@huawei.com>
Date:   Wed Nov 23 09:42:00 2022 +0000

    bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()
    
    [ Upstream commit f71eaf2708be7831428eacae7db25d8ec6b8b4c5 ]
    
    The sunxi_rsb_init() returns the platform_driver_register() directly
    without checking its return value, if platform_driver_register() failed,
    the sunxi_rsb_bus is not unregistered.
    Fix by unregister sunxi_rsb_bus when platform_driver_register() failed.
    
    Fixes: d787dcdb9c8f ("bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Link: https://lore.kernel.org/r/20221123094200.12036-1-yuancan@huawei.com
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53785fd9b315583cf029e39f72b73d23704a2253
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Tue Jan 17 18:06:10 2023 +0900

    firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region
    
    commit 531390a243ef47448f8bad01c186c2787666bf4d upstream.
    
    This patch is fix for Linux kernel v2.6.33 or later.
    
    For request subaction to IEC 61883-1 FCP region, Linux FireWire subsystem
    have had an issue of use-after-free. The subsystem allows multiple
    user space listeners to the region, while data of the payload was likely
    released before the listeners execute read(2) to access to it for copying
    to user space.
    
    The issue was fixed by a commit 281e20323ab7 ("firewire: core: fix
    use-after-free regression in FCP handler"). The object of payload is
    duplicated in kernel space for each listener. When the listener executes
    ioctl(2) with FW_CDEV_IOC_SEND_RESPONSE request, the object is going to
    be released.
    
    However, it causes memory leak since the commit relies on call of
    release_request() in drivers/firewire/core-cdev.c. Against the
    expectation, the function is never called due to the design of
    release_client_resource(). The function delegates release task
    to caller when called with non-NULL fourth argument. The implementation
    of ioctl_send_response() is the case. It should release the object
    explicitly.
    
    This commit fixes the bug.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 281e20323ab7 ("firewire: core: fix use-after-free regression in FCP handler")
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20230117090610.93792-2-o-takashi@sakamocchi.jp
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>