commit 69c28067fd0b6c4a980b04fb5bc445407d20316f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Nov 3 23:49:19 2022 +0900

    Linux 4.9.332
    
    Link: https://lore.kernel.org/r/20221102022049.017479464@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e58a4ee41ff38f85b6fa7a3562ebe4ef326666c2
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Tue Oct 25 16:56:55 2022 +0100

    can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global FIFO receive
    
    commit 702de2c21eed04c67cefaaedc248ef16e5f6b293 upstream.
    
    We are seeing an IRQ storm on the global receive IRQ line under heavy
    CAN bus load conditions with both CAN channels enabled.
    
    Conditions:
    
    The global receive IRQ line is shared between can0 and can1, either of
    the channels can trigger interrupt while the other channel's IRQ line
    is disabled (RFIE).
    
    When global a receive IRQ interrupt occurs, we mask the interrupt in
    the IRQ handler. Clearing and unmasking of the interrupt is happening
    in rx_poll(). There is a race condition where rx_poll() unmasks the
    interrupt, but the next IRQ handler does not mask the IRQ due to
    NAPIF_STATE_MISSED flag (e.g.: can0 RX FIFO interrupt is disabled and
    can1 is triggering RX interrupt, the delay in rx_poll() processing
    results in setting NAPIF_STATE_MISSED flag) leading to an IRQ storm.
    
    This patch fixes the issue by checking IRQ active and enabled before
    handling the IRQ on a particular channel.
    
    Fixes: dd3bd23eb438 ("can: rcar_canfd: Add Renesas R-Car CAN FD driver")
    Suggested-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/all/20221025155657.1426948-2-biju.das.jz@bp.renesas.com
    Cc: stable@vger.kernel.org
    [mkl: adjust commit message]
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [biju: removed gpriv from RCANFD_RFCC_RFIE macro]
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7562f3305b5fe282a40bc59795201a5ae43f789
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Oct 25 21:00:11 2022 +0800

    net: ehea: fix possible memory leak in ehea_register_port()
    
    [ Upstream commit 0e7ce23a917a9cc83ca3c779fbba836bca3bcf1e ]
    
    If of_device_register() returns error, the of node and the
    name allocated in dev_set_name() is leaked, call put_device()
    to give up the reference that was set in device_initialize(),
    so that of node is put in logical_port_release() and the name
    is freed in kobject_cleanup().
    
    Fixes: 1acf2318dd13 ("ehea: dynamic add / remove port")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221025130011.1071357-1-yangyingliang@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 636e16fa27f47cec5c97d1ecb52b03095fef15e0
Author: Aaron Conole <aconole@redhat.com>
Date:   Tue Oct 25 06:50:17 2022 -0400

    openvswitch: switch from WARN to pr_warn
    
    [ Upstream commit fd954cc1919e35cb92f78671cab6e42d661945a3 ]
    
    As noted by Paolo Abeni, pr_warn doesn't generate any splat and can still
    preserve the warning to the user that feature downgrade occurred.  We
    likely cannot introduce other kinds of checks / enforcement here because
    syzbot can generate different genl versions to the datapath.
    
    Reported-by: syzbot+31cde0bef4bbf8ba2d86@syzkaller.appspotmail.com
    Fixes: 44da5ae5fbea ("openvswitch: Drop user features if old user space attempted to create datapath")
    Cc: Thomas Graf <tgraf@suug.ch>
    Signed-off-by: Aaron Conole <aconole@redhat.com>
    Acked-by: Ilya Maximets <i.maximets@ovn.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8bc95b7c98d2f4e2bbaf28a46840694139898b74
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Oct 27 08:52:33 2022 +0200

    ALSA: aoa: Fix I2S device accounting
    
    [ Upstream commit f1fae475f10a26b7e34da4ff2e2f19b7feb3548e ]
    
    i2sbus_add_dev() is supposed to return the number of probed devices,
    i.e. either 1 or 0.  However, i2sbus_add_dev() has one error handling
    that returns -ENODEV; this will screw up the accumulation number
    counted in the caller, i2sbus_probe().
    
    Fix the return value to 0 and add the comment for better understanding
    for readers.
    
    Fixes: f3d9478b2ce4 ("[ALSA] snd-aoa: add snd-aoa")
    Link: https://lore.kernel.org/r/20221027065233.13292-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd410d24665e4efb3c1796797181265efe553e9c
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Oct 27 09:34:38 2022 +0800

    ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev()
    
    [ Upstream commit 4a4c8482e370d697738a78dcd7bf2780832cb712 ]
    
    dev_set_name() in soundbus_add_one() allocates memory for name, it need be
    freed when of_device_register() fails, call soundbus_dev_put() to give up
    the reference that hold in device_initialize(), so that it can be freed in
    kobject_cleanup() when the refcount hit to 0. And other resources are also
    freed in i2sbus_release_dev(), so it can return 0 directly.
    
    Fixes: f3d9478b2ce4 ("[ALSA] snd-aoa: add snd-aoa")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221027013438.991920-1-yangyingliang@huawei.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8aa3aafe641f57e4e76a14fcb9ded1955edadc67
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 24 21:13:38 2022 +0800

    net: ksz884x: fix missing pci_disable_device() on error in pcidev_init()
    
    [ Upstream commit 5da6d65590a0698199df44d095e54b0ed1708178 ]
    
    pci_disable_device() need be called while module exiting, switch to use
    pcim_enable(), pci_disable_device() will be called in pcim_release()
    while unbinding device.
    
    Fixes: 8ca86fd83eae ("net: Micrel KSZ8841/2 PCI Ethernet driver")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221024131338.2848959-1-yangyingliang@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c01accbf4f6d95ae95d6ca94653be2259b2cc102
Author: Slawomir Laba <slawomirx.laba@intel.com>
Date:   Mon Oct 24 03:05:24 2022 -0700

    i40e: Fix ethtool rx-flow-hash setting for X722
    
    [ Upstream commit 54b5af5a438076082d482cab105b1bd484ab5074 ]
    
    When enabling flow type for RSS hash via ethtool:
    
    ethtool -N $pf rx-flow-hash tcp4|tcp6|udp4|udp6 s|d
    
    the driver would fail to setup this setting on X722
    device since it was using the mask on the register
    dedicated for X710 devices.
    
    Apply a different mask on the register when setting the
    RSS hash for the X722 device.
    
    When displaying the flow types enabled via ethtool:
    
    ethtool -n $pf rx-flow-hash tcp4|tcp6|udp4|udp6
    
    the driver would print wrong values for X722 device.
    
    Fix this issue by testing masks for X722 device in
    i40e_get_rss_hash_opts function.
    
    Fixes: eb0dd6e4a3b3 ("i40e: Allow RSS Hash set with less than four parameters")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://lore.kernel.org/r/20221024100526.1874914-1-jacob.e.keller@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e63a257e979079dc710e8fc483550b56c91f226e
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Wed Oct 12 16:46:17 2022 +0100

    media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced'
    
    [ Upstream commit 8da7f0976b9071b528c545008de9d10cc81883b1 ]
    
    If it is a progressive (non-interlaced) format, then ignore the
    interlaced timing values.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 7f68127fa11f ([media] videodev2.h: defines to calculate blanking and frame sizes)
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15ded23db134da975b49ea99770de0346c193b24
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Oct 13 09:00:34 2022 +0100

    media: v4l2-dv-timings: add sanity checks for blanking values
    
    [ Upstream commit 4b6d66a45ed34a15721cb9e11492fa1a24bc83df ]
    
    Add sanity checks to v4l2_valid_dv_timings() to ensure that the provided
    blanking values are reasonable.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: b18787ed1ce3 ([media] v4l2-dv-timings: add new helper module)
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1b5b061987d56d7b64da962fec3be4ae7e78300
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Oct 13 15:18:46 2022 +0100

    media: vivid: dev->bitmap_cap wasn't freed in all cases
    
    [ Upstream commit 1f65ea411cc7b6ff128d82a3493d7b5648054e6f ]
    
    Whenever the compose width/height values change, the dev->bitmap_cap
    vmalloc'ed array must be freed and dev->bitmap_cap set to NULL.
    
    This was done in some places, but not all. This is only an issue if
    overlay support is enabled and the bitmap clipping is used.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: ef834f7836ec ([media] vivid: add the video capture and output parts)
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 943bffb230b9b615394fa1d068ab338b4137efdc
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Wed Oct 12 15:32:28 2022 +0100

    media: vivid: s_fbuf: add more sanity checks
    
    [ Upstream commit f8bcaf714abfc94818dff8c0db84d750433984f4 ]
    
    VIDIOC_S_FBUF is by definition a scary ioctl, which is why only root
    can use it. But at least check if the framebuffer parameters match that
    of one of the framebuffer created by vivid, and reject anything else.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: ef834f7836ec ([media] vivid: add the video capture and output parts)
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbfa38488dfad533a882d5f4d517bfa4d1a2f3e5
Author: Dongliang Mu <dzm91@hust.edu.cn>
Date:   Mon Oct 24 19:48:07 2022 +0800

    can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error path
    
    [ Upstream commit 3e5b3418827cefb5e1cc658806f02965791b8f07 ]
    
    The commit 1149108e2fbf ("can: mscan: improve clock API use") only
    adds put_clock() in mpc5xxx_can_remove() function, forgetting to add
    put_clock() in the error handling code.
    
    Fix this bug by adding put_clock() in the error handling code.
    
    Fixes: 1149108e2fbf ("can: mscan: improve clock API use")
    Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn>
    Link: https://lore.kernel.org/all/20221024133828.35881-1-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a00091dd3c1232e5134a801f2f1182dbb4bf9962
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Oct 21 17:08:21 2022 +0000

    tcp: fix indefinite deferral of RTO with SACK reneging
    
    [ Upstream commit 3d2af9cce3133b3bc596a9d065c6f9d93419ccfb ]
    
    This commit fixes a bug that can cause a TCP data sender to repeatedly
    defer RTOs when encountering SACK reneging.
    
    The bug is that when we're in fast recovery in a scenario with SACK
    reneging, every time we get an ACK we call tcp_check_sack_reneging()
    and it can note the apparent SACK reneging and rearm the RTO timer for
    srtt/2 into the future. In some SACK reneging scenarios that can
    happen repeatedly until the receive window fills up, at which point
    the sender can't send any more, the ACKs stop arriving, and the RTO
    fires at srtt/2 after the last ACK. But that can take far too long
    (O(10 secs)), since the connection is stuck in fast recovery with a
    low cwnd that cannot grow beyond ssthresh, even if more bandwidth is
    available.
    
    This fix changes the logic in tcp_check_sack_reneging() to only rearm
    the RTO timer if data is cumulatively ACKed, indicating forward
    progress. This avoids this kind of nearly infinite loop of RTO timer
    re-arming. In addition, this meets the goals of
    tcp_check_sack_reneging() in handling Windows TCP behavior that looks
    temporarily like SACK reneging but is not really.
    
    Many thanks to Jakub Kicinski and Neil Spring, who reported this issue
    and provided critical packet traces that enabled root-causing this
    issue. Also, many thanks to Jakub Kicinski for testing this fix.
    
    Fixes: 5ae344c949e7 ("tcp: reduce spurious retransmits due to transient SACK reneging")
    Reported-by: Jakub Kicinski <kuba@kernel.org>
    Reported-by: Neil Spring <ntspring@fb.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Tested-by: Jakub Kicinski <kuba@kernel.org>
    Link: https://lore.kernel.org/r/20221021170821.1093930-1-ncardwell.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b80758f39f75046fceae0747e794fa8659bb6692
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Fri Oct 21 09:32:24 2022 +0800

    net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY
    
    [ Upstream commit 9c1eaa27ec599fcc25ed4970c0b73c247d147a2b ]
    
    The ndo_start_xmit() method must not free skb when returning
    NETDEV_TX_BUSY, since caller is going to requeue freed skb.
    
    Fixes: 504d4721ee8e ("MIPS: Lantiq: Add ethernet driver")
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbc3a0b917c4f75292b1c0819c188e40fd3c8924
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Oct 20 22:45:12 2022 +0000

    kcm: annotate data-races around kcm->rx_wait
    
    [ Upstream commit 0c745b5141a45a076f1cb9772a399f7ebcb0948a ]
    
    kcm->rx_psock can be read locklessly in kcm_rfree().
    Annotate the read and writes accordingly.
    
    syzbot reported:
    
    BUG: KCSAN: data-race in kcm_rcv_strparser / kcm_rfree
    
    write to 0xffff88810784e3d0 of 1 bytes by task 1823 on cpu 1:
    reserve_rx_kcm net/kcm/kcmsock.c:283 [inline]
    kcm_rcv_strparser+0x250/0x3a0 net/kcm/kcmsock.c:363
    __strp_recv+0x64c/0xd20 net/strparser/strparser.c:301
    strp_recv+0x6d/0x80 net/strparser/strparser.c:335
    tcp_read_sock+0x13e/0x5a0 net/ipv4/tcp.c:1703
    strp_read_sock net/strparser/strparser.c:358 [inline]
    do_strp_work net/strparser/strparser.c:406 [inline]
    strp_work+0xe8/0x180 net/strparser/strparser.c:415
    process_one_work+0x3d3/0x720 kernel/workqueue.c:2289
    worker_thread+0x618/0xa70 kernel/workqueue.c:2436
    kthread+0x1a9/0x1e0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
    
    read to 0xffff88810784e3d0 of 1 bytes by task 17869 on cpu 0:
    kcm_rfree+0x121/0x220 net/kcm/kcmsock.c:181
    skb_release_head_state+0x8e/0x160 net/core/skbuff.c:841
    skb_release_all net/core/skbuff.c:852 [inline]
    __kfree_skb net/core/skbuff.c:868 [inline]
    kfree_skb_reason+0x5c/0x260 net/core/skbuff.c:891
    kfree_skb include/linux/skbuff.h:1216 [inline]
    kcm_recvmsg+0x226/0x2b0 net/kcm/kcmsock.c:1161
    ____sys_recvmsg+0x16c/0x2e0
    ___sys_recvmsg net/socket.c:2743 [inline]
    do_recvmmsg+0x2f1/0x710 net/socket.c:2837
    __sys_recvmmsg net/socket.c:2916 [inline]
    __do_sys_recvmmsg net/socket.c:2939 [inline]
    __se_sys_recvmmsg net/socket.c:2932 [inline]
    __x64_sys_recvmmsg+0xde/0x160 net/socket.c:2932
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    value changed: 0x01 -> 0x00
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 17869 Comm: syz-executor.2 Not tainted 6.1.0-rc1-syzkaller-00010-gbb1a1146467a-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13dba69e18d04c8eec7596369f2a0596b0260275
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Oct 20 22:45:11 2022 +0000

    kcm: annotate data-races around kcm->rx_psock
    
    [ Upstream commit 15e4dabda11b0fa31d510a915d1a580f47dfc92e ]
    
    kcm->rx_psock can be read locklessly in kcm_rfree().
    Annotate the read and writes accordingly.
    
    We do the same for kcm->rx_wait in the following patch.
    
    syzbot reported:
    BUG: KCSAN: data-race in kcm_rfree / unreserve_rx_kcm
    
    write to 0xffff888123d827b8 of 8 bytes by task 2758 on cpu 1:
    unreserve_rx_kcm+0x72/0x1f0 net/kcm/kcmsock.c:313
    kcm_rcv_strparser+0x2b5/0x3a0 net/kcm/kcmsock.c:373
    __strp_recv+0x64c/0xd20 net/strparser/strparser.c:301
    strp_recv+0x6d/0x80 net/strparser/strparser.c:335
    tcp_read_sock+0x13e/0x5a0 net/ipv4/tcp.c:1703
    strp_read_sock net/strparser/strparser.c:358 [inline]
    do_strp_work net/strparser/strparser.c:406 [inline]
    strp_work+0xe8/0x180 net/strparser/strparser.c:415
    process_one_work+0x3d3/0x720 kernel/workqueue.c:2289
    worker_thread+0x618/0xa70 kernel/workqueue.c:2436
    kthread+0x1a9/0x1e0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
    
    read to 0xffff888123d827b8 of 8 bytes by task 5859 on cpu 0:
    kcm_rfree+0x14c/0x220 net/kcm/kcmsock.c:181
    skb_release_head_state+0x8e/0x160 net/core/skbuff.c:841
    skb_release_all net/core/skbuff.c:852 [inline]
    __kfree_skb net/core/skbuff.c:868 [inline]
    kfree_skb_reason+0x5c/0x260 net/core/skbuff.c:891
    kfree_skb include/linux/skbuff.h:1216 [inline]
    kcm_recvmsg+0x226/0x2b0 net/kcm/kcmsock.c:1161
    ____sys_recvmsg+0x16c/0x2e0
    ___sys_recvmsg net/socket.c:2743 [inline]
    do_recvmmsg+0x2f1/0x710 net/socket.c:2837
    __sys_recvmmsg net/socket.c:2916 [inline]
    __do_sys_recvmmsg net/socket.c:2939 [inline]
    __se_sys_recvmmsg net/socket.c:2932 [inline]
    __x64_sys_recvmmsg+0xde/0x160 net/socket.c:2932
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    value changed: 0xffff88812971ce00 -> 0x0000000000000000
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 5859 Comm: syz-executor.3 Not tainted 6.0.0-syzkaller-12189-g19d17ab7c68b-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a602ec9d88f177dba78bc97fb1adecc7a71ff279
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Wed Oct 19 17:30:25 2022 +0800

    ALSA: ac97: fix possible memory leak in snd_ac97_dev_register()
    
    [ Upstream commit 4881bda5ea05c8c240fc8afeaa928e2bc43f61fa ]
    
    If device_register() fails in snd_ac97_dev_register(), it should
    call put_device() to give up reference, or the name allocated in
    dev_set_name() is leaked.
    
    Fixes: 0ca06a00e206 ("[ALSA] AC97 bus interface for ad-hoc drivers")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221019093025.1179475-1-yangyingliang@huawei.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0adda6e1232a3afb27a7d5c3a80353f62a57262f
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Oct 9 19:28:46 2022 -0700

    arc: iounmap() arg is volatile
    
    [ Upstream commit c44f15c1c09481d50fd33478ebb5b8284f8f5edb ]
    
    Add 'volatile' to iounmap()'s argument to prevent build warnings.
    This make it the same as other major architectures.
    
    Placates these warnings: (12 such warnings)
    
    ../drivers/video/fbdev/riva/fbdev.c: In function 'rivafb_probe':
    ../drivers/video/fbdev/riva/fbdev.c:2067:42: error: passing argument 1 of 'iounmap' discards 'volatile' qualifier from pointer target type [-Werror=discarded-qualifiers]
     2067 |                 iounmap(default_par->riva.PRAMIN);
    
    Fixes: 1162b0701b14b ("ARC: I/O and DMA Mappings")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Vineet Gupta <vgupta@kernel.org>
    Cc: linux-snps-arc@lists.infradead.org
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Vineet Gupta <vgupta@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 474c6983e1659fc4334bd74a2fdb7128495237a4
Author: Nathan Huckleberry <nhuck@google.com>
Date:   Tue Sep 13 13:55:48 2022 -0700

    drm/msm: Fix return type of mdp4_lvds_connector_mode_valid
    
    [ Upstream commit 0b33a33bd15d5bab73b87152b220a8d0153a4587 ]
    
    The mode_valid field in drm_connector_helper_funcs is expected to be of
    type:
    enum drm_mode_status (* mode_valid) (struct drm_connector *connector,
                                         struct drm_display_mode *mode);
    
    The mismatched return type breaks forward edge kCFI since the underlying
    function definition does not match the function hook definition.
    
    The return type of mdp4_lvds_connector_mode_valid should be changed from
    int to enum drm_mode_status.
    
    Reported-by: Dan Carpenter <error27@gmail.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/1703
    Cc: llvm@lists.linux.dev
    Signed-off-by: Nathan Huckleberry <nhuck@google.com>
    Fixes: 3e87599b68e7 ("drm/msm/mdp4: add LVDS panel support")
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Patchwork: https://patchwork.freedesktop.org/patch/502878/
    Link: https://lore.kernel.org/r/20220913205551.155128-1-nhuck@google.com
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7948db093eacf6ae88f3d31d0bf754a1bfa982d2
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Sep 19 16:08:30 2022 +0000

    net: ieee802154: fix error return code in dgram_bind()
    
    commit 444d8ad4916edec8a9fc684e841287db9b1e999f upstream.
    
    Fix to return error code -EINVAL from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Fixes: 94160108a70c ("net/ieee802154: fix uninit value bug in dgram_sendmsg")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20220919160830.1436109-1-weiyongjun@huaweicloud.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e50a07b6a5fcd39df1534d3fdaca4292a65efe6
Author: Rik van Riel <riel@surriel.com>
Date:   Mon Oct 17 20:25:05 2022 -0400

    mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
    
    commit 12df140f0bdfae5dcfc81800970dd7f6f632e00c upstream.
    
    The h->*_huge_pages counters are protected by the hugetlb_lock, but
    alloc_huge_page has a corner case where it can decrement the counter
    outside of the lock.
    
    This could lead to a corrupted value of h->resv_huge_pages, which we have
    observed on our systems.
    
    Take the hugetlb_lock before decrementing h->resv_huge_pages to avoid a
    potential race.
    
    Link: https://lkml.kernel.org/r/20221017202505.0e6a4fcd@imladris.surriel.com
    Fixes: a88c76954804 ("mm: hugetlb: fix hugepage memory leak caused by wrong reserve count")
    Signed-off-by: Rik van Riel <riel@surriel.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Glen McCready <gkmccready@meta.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b043f2cab100bed3e0a999dcf38cc05b1e4a7e41
Author: M. Vefa Bicakci <m.v.b@runbox.com>
Date:   Sun Oct 2 18:20:05 2022 -0400

    xen/gntdev: Prevent leaking grants
    
    commit 0991028cd49567d7016d1b224fe0117c35059f86 upstream.
    
    Prior to this commit, if a grant mapping operation failed partially,
    some of the entries in the map_ops array would be invalid, whereas all
    of the entries in the kmap_ops array would be valid. This in turn would
    cause the following logic in gntdev_map_grant_pages to become invalid:
    
      for (i = 0; i < map->count; i++) {
        if (map->map_ops[i].status == GNTST_okay) {
          map->unmap_ops[i].handle = map->map_ops[i].handle;
          if (!use_ptemod)
            alloced++;
        }
        if (use_ptemod) {
          if (map->kmap_ops[i].status == GNTST_okay) {
            if (map->map_ops[i].status == GNTST_okay)
              alloced++;
            map->kunmap_ops[i].handle = map->kmap_ops[i].handle;
          }
        }
      }
      ...
      atomic_add(alloced, &map->live_grants);
    
    Assume that use_ptemod is true (i.e., the domain mapping the granted
    pages is a paravirtualized domain). In the code excerpt above, note that
    the "alloced" variable is only incremented when both kmap_ops[i].status
    and map_ops[i].status are set to GNTST_okay (i.e., both mapping
    operations are successful).  However, as also noted above, there are
    cases where a grant mapping operation fails partially, breaking the
    assumption of the code excerpt above.
    
    The aforementioned causes map->live_grants to be incorrectly set. In
    some cases, all of the map_ops mappings fail, but all of the kmap_ops
    mappings succeed, meaning that live_grants may remain zero. This in turn
    makes it impossible to unmap the successfully grant-mapped pages pointed
    to by kmap_ops, because unmap_grant_pages has the following snippet of
    code at its beginning:
    
      if (atomic_read(&map->live_grants) == 0)
        return; /* Nothing to do */
    
    In other cases where only some of the map_ops mappings fail but all
    kmap_ops mappings succeed, live_grants is made positive, but when the
    user requests unmapping the grant-mapped pages, __unmap_grant_pages_done
    will then make map->live_grants negative, because the latter function
    does not check if all of the pages that were requested to be unmapped
    were actually unmapped, and the same function unconditionally subtracts
    "data->count" (i.e., a value that can be greater than map->live_grants)
    from map->live_grants. The side effects of a negative live_grants value
    have not been studied.
    
    The net effect of all of this is that grant references are leaked in one
    of the above conditions. In Qubes OS v4.1 (which uses Xen's grant
    mechanism extensively for X11 GUI isolation), this issue manifests
    itself with warning messages like the following to be printed out by the
    Linux kernel in the VM that had granted pages (that contain X11 GUI
    window data) to dom0: "g.e. 0x1234 still pending", especially after the
    user rapidly resizes GUI VM windows (causing some grant-mapping
    operations to partially or completely fail, due to the fact that the VM
    unshares some of the pages as part of the window resizing, making the
    pages impossible to grant-map from dom0).
    
    The fix for this issue involves counting all successful map_ops and
    kmap_ops mappings separately, and then adding the sum to live_grants.
    During unmapping, only the number of successfully unmapped grants is
    subtracted from live_grants. The code is also modified to check for
    negative live_grants values after the subtraction and warn the user.
    
    Link: https://github.com/QubesOS/qubes-issues/issues/7631
    Fixes: dbe97cff7dd9 ("xen/gntdev: Avoid blocking in unmap_grant_pages()")
    Cc: stable@vger.kernel.org
    Signed-off-by: M. Vefa Bicakci <m.v.b@runbox.com>
    Acked-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20221002222006.2077-2-m.v.b@runbox.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fb10476fd999b131715718520b81b30f6fc5155
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Sep 17 08:13:08 2021 +0200

    Xen/gntdev: don't ignore kernel unmapping error
    
    commit f28347cc66395e96712f5c2db0a302ee75bafce6 upstream.
    
    While working on XSA-361 and its follow-ups, I failed to spot another
    place where the kernel mapping part of an operation was not treated the
    same as the user space part. Detect and propagate errors and add a 2nd
    pr_debug().
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/c2513395-74dc-aea3-9192-fd265aa44e35@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Co-authored-by: Demi Marie Obenour <demi@invisiblethingslab.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6ca9cc3e17a8c6d65460f9c80a92842e3d807cd
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Oct 18 13:44:11 2022 +0200

    s390/futex: add missing EX_TABLE entry to __futex_atomic_op()
    
    commit a262d3ad6a433e4080cecd0a8841104a5906355e upstream.
    
    For some exception types the instruction address points behind the
    instruction that caused the exception. Take that into account and add
    the missing exception table entry.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dfd6a477a1525773469feaf3c514b2c0fef76b5
Author: Christian A. Ehrhardt <lk@c--e.de>
Date:   Tue Sep 13 14:17:23 2022 +0200

    kernfs: fix use-after-free in __kernfs_remove
    
    commit 4abc99652812a2ddf932f137515d5c5a04723538 upstream.
    
    Syzkaller managed to trigger concurrent calls to
    kernfs_remove_by_name_ns() for the same file resulting in
    a KASAN detected use-after-free. The race occurs when the root
    node is freed during kernfs_drain().
    
    To prevent this acquire an additional reference for the root
    of the tree that is removed before calling __kernfs_remove().
    
    Found by syzkaller with the following reproducer (slab_nomerge is
    required):
    
    syz_mount_image$ext4(0x0, &(0x7f0000000100)='./file0\x00', 0x100000, 0x0, 0x0, 0x0, 0x0)
    r0 = openat(0xffffffffffffff9c, &(0x7f0000000080)='/proc/self/exe\x00', 0x0, 0x0)
    close(r0)
    pipe2(&(0x7f0000000140)={0xffffffffffffffff, <r1=>0xffffffffffffffff}, 0x800)
    mount$9p_fd(0x0, &(0x7f0000000040)='./file0\x00', &(0x7f00000000c0), 0x408, &(0x7f0000000280)={'trans=fd,', {'rfdno', 0x3d, r0}, 0x2c, {'wfdno', 0x3d, r1}, 0x2c, {[{@cache_loose}, {@mmap}, {@loose}, {@loose}, {@mmap}], [{@mask={'mask', 0x3d, '^MAY_EXEC'}}, {@fsmagic={'fsmagic', 0x3d, 0x10001}}, {@dont_hash}]}})
    
    Sample report:
    
    ==================================================================
    BUG: KASAN: use-after-free in kernfs_type include/linux/kernfs.h:335 [inline]
    BUG: KASAN: use-after-free in kernfs_leftmost_descendant fs/kernfs/dir.c:1261 [inline]
    BUG: KASAN: use-after-free in __kernfs_remove.part.0+0x843/0x960 fs/kernfs/dir.c:1369
    Read of size 2 at addr ffff8880088807f0 by task syz-executor.2/857
    
    CPU: 0 PID: 857 Comm: syz-executor.2 Not tainted 6.0.0-rc3-00363-g7726d4c3e60b #5
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0x6e/0x91 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:317 [inline]
     print_report.cold+0x5e/0x5e5 mm/kasan/report.c:433
     kasan_report+0xa3/0x130 mm/kasan/report.c:495
     kernfs_type include/linux/kernfs.h:335 [inline]
     kernfs_leftmost_descendant fs/kernfs/dir.c:1261 [inline]
     __kernfs_remove.part.0+0x843/0x960 fs/kernfs/dir.c:1369
     __kernfs_remove fs/kernfs/dir.c:1356 [inline]
     kernfs_remove_by_name_ns+0x108/0x190 fs/kernfs/dir.c:1589
     sysfs_slab_add+0x133/0x1e0 mm/slub.c:5943
     __kmem_cache_create+0x3e0/0x550 mm/slub.c:4899
     create_cache mm/slab_common.c:229 [inline]
     kmem_cache_create_usercopy+0x167/0x2a0 mm/slab_common.c:335
     p9_client_create+0xd4d/0x1190 net/9p/client.c:993
     v9fs_session_init+0x1e6/0x13c0 fs/9p/v9fs.c:408
     v9fs_mount+0xb9/0xbd0 fs/9p/vfs_super.c:126
     legacy_get_tree+0xf1/0x200 fs/fs_context.c:610
     vfs_get_tree+0x85/0x2e0 fs/super.c:1530
     do_new_mount fs/namespace.c:3040 [inline]
     path_mount+0x675/0x1d00 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __x64_sys_mount+0x282/0x300 fs/namespace.c:3568
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f725f983aed
    Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f725f0f7028 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
    RAX: ffffffffffffffda RBX: 00007f725faa3f80 RCX: 00007f725f983aed
    RDX: 00000000200000c0 RSI: 0000000020000040 RDI: 0000000000000000
    RBP: 00007f725f9f419c R08: 0000000020000280 R09: 0000000000000000
    R10: 0000000000000408 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000006 R14: 00007f725faa3f80 R15: 00007f725f0d7000
     </TASK>
    
    Allocated by task 855:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track mm/kasan/common.c:45 [inline]
     set_alloc_info mm/kasan/common.c:437 [inline]
     __kasan_slab_alloc+0x66/0x80 mm/kasan/common.c:470
     kasan_slab_alloc include/linux/kasan.h:224 [inline]
     slab_post_alloc_hook mm/slab.h:727 [inline]
     slab_alloc_node mm/slub.c:3243 [inline]
     slab_alloc mm/slub.c:3251 [inline]
     __kmem_cache_alloc_lru mm/slub.c:3258 [inline]
     kmem_cache_alloc+0xbf/0x200 mm/slub.c:3268
     kmem_cache_zalloc include/linux/slab.h:723 [inline]
     __kernfs_new_node+0xd4/0x680 fs/kernfs/dir.c:593
     kernfs_new_node fs/kernfs/dir.c:655 [inline]
     kernfs_create_dir_ns+0x9c/0x220 fs/kernfs/dir.c:1010
     sysfs_create_dir_ns+0x127/0x290 fs/sysfs/dir.c:59
     create_dir lib/kobject.c:63 [inline]
     kobject_add_internal+0x24a/0x8d0 lib/kobject.c:223
     kobject_add_varg lib/kobject.c:358 [inline]
     kobject_init_and_add+0x101/0x160 lib/kobject.c:441
     sysfs_slab_add+0x156/0x1e0 mm/slub.c:5954
     __kmem_cache_create+0x3e0/0x550 mm/slub.c:4899
     create_cache mm/slab_common.c:229 [inline]
     kmem_cache_create_usercopy+0x167/0x2a0 mm/slab_common.c:335
     p9_client_create+0xd4d/0x1190 net/9p/client.c:993
     v9fs_session_init+0x1e6/0x13c0 fs/9p/v9fs.c:408
     v9fs_mount+0xb9/0xbd0 fs/9p/vfs_super.c:126
     legacy_get_tree+0xf1/0x200 fs/fs_context.c:610
     vfs_get_tree+0x85/0x2e0 fs/super.c:1530
     do_new_mount fs/namespace.c:3040 [inline]
     path_mount+0x675/0x1d00 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __x64_sys_mount+0x282/0x300 fs/namespace.c:3568
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Freed by task 857:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track+0x21/0x30 mm/kasan/common.c:45
     kasan_set_free_info+0x20/0x40 mm/kasan/generic.c:370
     ____kasan_slab_free mm/kasan/common.c:367 [inline]
     ____kasan_slab_free mm/kasan/common.c:329 [inline]
     __kasan_slab_free+0x108/0x190 mm/kasan/common.c:375
     kasan_slab_free include/linux/kasan.h:200 [inline]
     slab_free_hook mm/slub.c:1754 [inline]
     slab_free_freelist_hook mm/slub.c:1780 [inline]
     slab_free mm/slub.c:3534 [inline]
     kmem_cache_free+0x9c/0x340 mm/slub.c:3551
     kernfs_put.part.0+0x2b2/0x520 fs/kernfs/dir.c:547
     kernfs_put+0x42/0x50 fs/kernfs/dir.c:521
     __kernfs_remove.part.0+0x72d/0x960 fs/kernfs/dir.c:1407
     __kernfs_remove fs/kernfs/dir.c:1356 [inline]
     kernfs_remove_by_name_ns+0x108/0x190 fs/kernfs/dir.c:1589
     sysfs_slab_add+0x133/0x1e0 mm/slub.c:5943
     __kmem_cache_create+0x3e0/0x550 mm/slub.c:4899
     create_cache mm/slab_common.c:229 [inline]
     kmem_cache_create_usercopy+0x167/0x2a0 mm/slab_common.c:335
     p9_client_create+0xd4d/0x1190 net/9p/client.c:993
     v9fs_session_init+0x1e6/0x13c0 fs/9p/v9fs.c:408
     v9fs_mount+0xb9/0xbd0 fs/9p/vfs_super.c:126
     legacy_get_tree+0xf1/0x200 fs/fs_context.c:610
     vfs_get_tree+0x85/0x2e0 fs/super.c:1530
     do_new_mount fs/namespace.c:3040 [inline]
     path_mount+0x675/0x1d00 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __x64_sys_mount+0x282/0x300 fs/namespace.c:3568
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The buggy address belongs to the object at ffff888008880780
     which belongs to the cache kernfs_node_cache of size 128
    The buggy address is located 112 bytes inside of
     128-byte region [ffff888008880780, ffff888008880800)
    
    The buggy address belongs to the physical page:
    page:00000000732833f8 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x8880
    flags: 0x100000000000200(slab|node=0|zone=1)
    raw: 0100000000000200 0000000000000000 dead000000000122 ffff888001147280
    raw: 0000000000000000 0000000000150015 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888008880680: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
     ffff888008880700: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    >ffff888008880780: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                 ^
     ffff888008880800: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
     ffff888008880880: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    ==================================================================
    
    Acked-by: Tejun Heo <tj@kernel.org>
    Cc: stable <stable@kernel.org> # -rc3
    Signed-off-by: Christian A. Ehrhardt <lk@c--e.de>
    Link: https://lore.kernel.org/r/20220913121723.691454-1-lk@c--e.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8b2965932e702b21e335ff30e1bb550f5a23b6f
Author: Matthew Ma <mahongwei@zeku.com>
Date:   Fri Oct 14 11:49:51 2022 +0800

    mmc: core: Fix kernel panic when remove non-standard SDIO card
    
    commit 9972e6b404884adae9eec7463e30d9b3c9a70b18 upstream.
    
    SDIO tuple is only allocated for standard SDIO card, especially it causes
    memory corruption issues when the non-standard SDIO card has removed, which
    is because the card device's reference counter does not increase for it at
    sdio_init_func(), but all SDIO card device reference counter gets decreased
    at sdio_release_func().
    
    Fixes: 6f51be3d37df ("sdio: allow non-standard SDIO cards")
    Signed-off-by: Matthew Ma <mahongwei@zeku.com>
    Reviewed-by: Weizhao Ouyang <ouyangweizhao@zeku.com>
    Reviewed-by: John Wang <wangdayu@zeku.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20221014034951.2300386-1-ouyangweizhao@zeku.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9c1a6991a9b5aa6d0f2cbc9b8c3bf6c4d094dfa
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Tue Sep 13 10:53:14 2022 +0200

    drm/msm/hdmi: fix memory corruption with too many bridges
    
    commit 4c1294da6aed1f16d47a417dcfe6602833c3c95c upstream.
    
    Add the missing sanity check on the bridge counter to avoid corrupting
    data beyond the fixed-sized bridge array in case there are ever more
    than eight bridges.
    
    Fixes: a3376e3ec81c ("drm/msm: convert to drm_bridge")
    Cc: stable@vger.kernel.org      # 3.12
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/502670/
    Link: https://lore.kernel.org/r/20220913085320.8577-5-johan+linaro@kernel.org
    Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec4cb427fd02d51bde6b1ebb6aadf3418a50e3a4
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Thu Oct 20 16:25:35 2022 +0200

    mac802154: Fix LQI recording
    
    commit 5a5c4e06fd03b595542d5590f2bc05a6b7fc5c2b upstream.
    
    Back in 2014, the LQI was saved in the skb control buffer (skb->cb, or
    mac_cb(skb)) without any actual reset of this area prior to its use.
    
    As part of a useful rework of the use of this region, 32edc40ae65c
    ("ieee802154: change _cb handling slightly") introduced mac_cb_init() to
    basically memset the cb field to 0. In particular, this new function got
    called at the beginning of mac802154_parse_frame_start(), right before
    the location where the buffer got actually filled.
    
    What went through unnoticed however, is the fact that the very first
    helper called by device drivers in the receive path already used this
    area to save the LQI value for later extraction. Resetting the cb field
    "so late" led to systematically zeroing the LQI.
    
    If we consider the reset of the cb field needed, we can make it as soon
    as we get an skb from a device driver, right before storing the LQI,
    as is the very first time we need to write something there.
    
    Cc: stable@vger.kernel.org
    Fixes: 32edc40ae65c ("ieee802154: change _cb handling slightly")
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Acked-by: Alexander Aring <aahringo@redhat.com>
    Link: https://lore.kernel.org/r/20221020142535.1038885-1-miquel.raynal@bootlin.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f2075ea883e5d7730d0c9ebb1bb8e7a1a7e953f
Author: Hyunwoo Kim <imv4bel@gmail.com>
Date:   Thu Oct 20 18:15:44 2022 -0700

    fbdev: smscufx: Fix several use-after-free bugs
    
    commit cc67482c9e5f2c80d62f623bcc347c29f9f648e1 upstream.
    
    Several types of UAFs can occur when physically removing a USB device.
    
    Adds ufx_ops_destroy() function to .fb_destroy of fb_ops, and
    in this function, there is kref_put() that finally calls ufx_free().
    
    This fix prevents multiple UAFs.
    
    Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
    Link: https://lore.kernel.org/linux-fbdev/20221011153436.GA4446@ubuntu/
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48797c0bb8090ca9715ace072a3702e93ea49044
Author: Matti Vaittinen <mazziesaccount@gmail.com>
Date:   Thu Oct 13 15:04:04 2022 +0300

    tools: iio: iio_utils: fix digit calculation
    
    commit 72b2aa38191bcba28389b0e20bf6b4f15017ff2b upstream.
    
    The iio_utils uses a digit calculation in order to know length of the
    file name containing a buffer number. The digit calculation does not
    work for number 0.
    
    This leads to allocation of one character too small buffer for the
    file-name when file name contains value '0'. (Eg. buffer0).
    
    Fix digit calculation by returning one digit to be present for number
    '0'.
    
    Fixes: 096f9b862e60 ("tools:iio:iio_utils: implement digit calculation")
    Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
    Link: https://lore.kernel.org/r/Y0f+tKCz+ZAIoroQ@dc75zzyyyyyyyyyyyyycy-3.rev.dnainternet.fi
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e4ce28ad907aa54f13b21d5f1dc490525957b0c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Oct 24 17:27:20 2022 +0300

    xhci: Remove device endpoints from bandwidth list when freeing the device
    
    commit 5aed5b7c2430ce318a8e62f752f181e66f0d1053 upstream.
    
    Endpoints are normally deleted from the bandwidth list when they are
    dropped, before the virt device is freed.
    
    If xHC host is dying or being removed then the endpoints aren't dropped
    cleanly due to functions returning early to avoid interacting with a
    non-accessible host controller.
    
    So check and delete endpoints that are still on the bandwidth list when
    freeing the virt device.
    
    Solves a list_del corruption kernel crash when unbinding xhci-pci,
    caused by xhci_mem_cleanup() when it later tried to delete already freed
    endpoints from the bandwidth list.
    
    This only affects hosts that use software bandwidth checking, which
    currenty is only the xHC in intel Panther Point PCH (Ivy Bridge)
    
    Cc: stable@vger.kernel.org
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20221024142720.4122053-5-mathias.nyman@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcc9813925318830ed81072cdbc2675cc2398d9f
Author: Justin Chen <justinpopo6@gmail.com>
Date:   Wed Oct 5 12:13:55 2022 -0700

    usb: bdc: change state when port disconnected
    
    commit fb8f60dd1b67520e0e0d7978ef17d015690acfc1 upstream.
    
    When port is connected and then disconnected, the state stays as
    configured. Which is incorrect as the port is no longer configured,
    but in a not attached state.
    
    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Fixes: efed421a94e6 ("usb: gadget: Add UDC driver for Broadcom USB3.0 device controller IP BDC")
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/1664997235-18198-1-git-send-email-justinpopo6@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d77b3aa197564698d28cfc9692d476e5cae8877a
Author: Hannu Hartikainen <hannu@hrtk.in>
Date:   Mon Sep 19 20:16:10 2022 +0300

    USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM
    
    commit fc4ade55c617dc73c7e9756b57f3230b4ff24540 upstream.
    
    NVIDIA Jetson devices in Force Recovery mode (RCM) do not support
    suspending, ie. flashing fails if the device has been suspended. The
    devices are still visible in lsusb and seem to work otherwise, making
    the issue hard to debug. This has been discovered in various forum
    posts, eg. [1].
    
    The patch has been tested on NVIDIA Jetson AGX Xavier, but I'm adding
    all the Jetson models listed in [2] on the assumption that they all
    behave similarly.
    
    [1]: https://forums.developer.nvidia.com/t/flashing-not-working/72365
    [2]: https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3271/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/quick_start.html
    
    Signed-off-by: Hannu Hartikainen <hannu@hrtk.in>
    Cc: stable <stable@kernel.org>  # after 6.1-rc3
    Link: https://lore.kernel.org/r/20220919171610.30484-1-hannu@hrtk.in
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 456ffbbdc431dab4e3071956db80d65f1ac8272d
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Mon Oct 24 18:29:29 2022 +0200

    ALSA: au88x0: use explicitly signed char
    
    commit ee03c0f200eb0d9f22dd8732d9fb7956d91019c2 upstream.
    
    With char becoming unsigned by default, and with `char` alone being
    ambiguous and based on architecture, signed chars need to be marked
    explicitly as such. This fixes warnings like:
    
    sound/pci/au88x0/au88x0_core.c:2029 vortex_adb_checkinout() warn: signedness bug returning '(-22)'
    sound/pci/au88x0/au88x0_core.c:2046 vortex_adb_checkinout() warn: signedness bug returning '(-12)'
    sound/pci/au88x0/au88x0_core.c:2125 vortex_adb_allocroute() warn: 'vortex_adb_checkinout(vortex, (0), en, 0)' is unsigned
    sound/pci/au88x0/au88x0_core.c:2170 vortex_adb_allocroute() warn: 'vortex_adb_checkinout(vortex, stream->resources, en, 4)' is unsigned
    
    As well, since one function returns errnos, return an `int` rather than
    a `signed char`.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20221024162929.536004-1-Jason@zx2c4.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af52f240322a3ed9aa813432199cebf37f649f29
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Wed Oct 26 23:12:36 2022 -0400

    ALSA: Use del_timer_sync() before freeing timer
    
    commit f0a868788fcbf63cdab51f5adcf73b271ede8164 upstream.
    
    The current code for freeing the emux timer is extremely dangerous:
    
      CPU0                          CPU1
      ----                          ----
    snd_emux_timer_callback()
                                snd_emux_free()
                                  spin_lock(&emu->voice_lock)
                                  del_timer(&emu->tlist); <-- returns immediately
                                  spin_unlock(&emu->voice_lock);
                                  [..]
                                  kfree(emu);
    
      spin_lock(&emu->voice_lock);
    
     [BOOM!]
    
    Instead just use del_timer_sync() which will wait for the timer to finish
    before continuing. No need to check if the timer is active or not when
    doing so.
    
    This doesn't fix the race of a possible re-arming of the timer, but at
    least it won't use the data that has just been freed.
    
    [ Fixed unused variable warning by tiwai ]
    
    Cc: stable@vger.kernel.org
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20221026231236.6834b551@gandalf.local.home
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 819f7dfd046008b826bc386a5357f76fd26c3eb1
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Oct 26 17:22:46 2022 +0200

    ACPI: video: Force backlight native for more TongFang devices
    
    commit 3dbc80a3e4c55c4a5b89ef207bed7b7de36157b4 upstream.
    
    This commit is very different from the upstream commit! It fixes the same
    issue by adding more quirks, rather then the general fix from the 6.1
    kernel, because the general fix from the 6.1 kernel is part of a larger
    refactoring of the backlight code which is not suitable for the stable
    series.
    
    As described in "ACPI: video: Drop NL5x?U, PF4NU1F and PF5?U??
    acpi_backlight=native quirks" (10212754a0d2) the upstream commit "ACPI:
    video: Make backlight class device registration a separate step (v2)"
    (3dbc80a3e4c5) makes these quirks unnecessary. However as mentioned in this
    bugtracker ticket https://bugzilla.kernel.org/show_bug.cgi?id=215683#c17
    the upstream fix is part of a larger patchset that is overall too complex
    for stable.
    
    The TongFang GKxNRxx, GMxNGxx, GMxZGxx, and GMxRGxx / TUXEDO
    Stellaris/Polaris Gen 1-4, have the same problem as the Clevo NL5xRU and
    NL5xNU / TUXEDO Aura 15 Gen1 and Gen2:
    They have a working native and video interface for screen backlight.
    However the default detection mechanism first registers the video interface
    before unregistering it again and switching to the native interface during
    boot. This results in a dangling SBIOS request for backlight change for
    some reason, causing the backlight to switch to ~2% once per boot on the
    first power cord connect or disconnect event. Setting the native interface
    explicitly circumvents this buggy behaviour by avoiding the unregistering
    process.
    
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3c148955c22fe1d94d7a2096005679c1f22eddf
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Oct 18 20:24:51 2022 +0800

    net: hns: fix possible memory leak in hnae_ae_register()
    
    [ Upstream commit ff2f5ec5d009844ec28f171123f9e58750cef4bf ]
    
    Inject fault while probing module, if device_register() fails,
    but the refcount of kobject is not decreased to 0, the name
    allocated in dev_set_name() is leaked. Fix this by calling
    put_device(), so that name can be freed in callback function
    kobject_cleanup().
    
    unreferenced object 0xffff00c01aba2100 (size 128):
      comm "systemd-udevd", pid 1259, jiffies 4294903284 (age 294.152s)
      hex dump (first 32 bytes):
        68 6e 61 65 30 00 00 00 18 21 ba 1a c0 00 ff ff  hnae0....!......
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<0000000034783f26>] slab_post_alloc_hook+0xa0/0x3e0
        [<00000000748188f2>] __kmem_cache_alloc_node+0x164/0x2b0
        [<00000000ab0743e8>] __kmalloc_node_track_caller+0x6c/0x390
        [<000000006c0ffb13>] kvasprintf+0x8c/0x118
        [<00000000fa27bfe1>] kvasprintf_const+0x60/0xc8
        [<0000000083e10ed7>] kobject_set_name_vargs+0x3c/0xc0
        [<000000000b87affc>] dev_set_name+0x7c/0xa0
        [<000000003fd8fe26>] hnae_ae_register+0xcc/0x190 [hnae]
        [<00000000fe97edc9>] hns_dsaf_ae_init+0x9c/0x108 [hns_dsaf]
        [<00000000c36ff1eb>] hns_dsaf_probe+0x548/0x748 [hns_dsaf]
    
    Fixes: 6fe6611ff275 ("net: add Hisilicon Network Subsystem hnae framework support")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Link: https://lore.kernel.org/r/20221018122451.1749171-1-yangyingliang@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 149af95224910c231254e620517ea61bee53984e
Author: Xiaobo Liu <cppcoffee@gmail.com>
Date:   Fri Oct 14 10:05:40 2022 +0800

    net/atm: fix proc_mpc_write incorrect return value
    
    [ Upstream commit d8bde3bf7f82dac5fc68a62c2816793a12cafa2a ]
    
    Then the input contains '\0' or '\n', proc_mpc_write has read them,
    so the return value needs +1.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45e38311fde5b3f362fd865143b880575edc2254
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Sun Oct 9 20:27:47 2022 +0200

    HID: magicmouse: Do not set BTN_MOUSE on double report
    
    [ Upstream commit bb5f0c855dcfc893ae5ed90e4c646bde9e4498bf ]
    
    Under certain conditions the Magic Trackpad can group 2 reports in a
    single packet. The packet is split and the raw event function is
    invoked recursively for each part.
    
    However, after processing each part, the BTN_MOUSE status is updated,
    sending multiple click events. [1]
    
    Return after processing double reports to avoid this issue.
    
    Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/811  # [1]
    Fixes: a462230e16ac ("HID: magicmouse: enable Magic Trackpad support")
    Reported-by: Nulo <git@nulo.in>
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20221009182747.90730-1-jose.exposito89@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cada070e9d2f119a984ec085290104f41d6beabf
Author: James Morse <james.morse@arm.com>
Date:   Thu Jul 14 17:15:23 2022 +0100

    arm64: errata: Remove AES hwcap for COMPAT tasks
    
    commit 44b3834b2eed595af07021b1c64e6f9bc396398b upstream.
    
    Cortex-A57 and Cortex-A72 have an erratum where an interrupt that
    occurs between a pair of AES instructions in aarch32 mode may corrupt
    the ELR. The task will subsequently produce the wrong AES result.
    
    The AES instructions are part of the cryptographic extensions, which are
    optional. User-space software will detect the support for these
    instructions from the hwcaps. If the platform doesn't support these
    instructions a software implementation should be used.
    
    Remove the hwcap bits on affected parts to indicate user-space should
    not use the AES instructions.
    
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: James Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20220714161523.279570-3-james.morse@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    [florian: resolved conflicts in arch/arm64/tools/cpucaps and cpu_errata.c]
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f70bd4339cb68bc7e206af4c922bc0d249244403
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Oct 11 10:46:17 2022 +0800

    ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS
    
    commit 1e41e693f458eef2d5728207dbd327cd3b16580a upstream.
    
    UBSAN complains about array-index-out-of-bounds:
    [ 1.980703] kernel: UBSAN: array-index-out-of-bounds in /build/linux-9H675w/linux-5.15.0/drivers/ata/libahci.c:968:41
    [ 1.980709] kernel: index 15 is out of range for type 'ahci_em_priv [8]'
    [ 1.980713] kernel: CPU: 0 PID: 209 Comm: scsi_eh_8 Not tainted 5.15.0-25-generic #25-Ubuntu
    [ 1.980716] kernel: Hardware name: System manufacturer System Product Name/P5Q3, BIOS 1102 06/11/2010
    [ 1.980718] kernel: Call Trace:
    [ 1.980721] kernel: <TASK>
    [ 1.980723] kernel: show_stack+0x52/0x58
    [ 1.980729] kernel: dump_stack_lvl+0x4a/0x5f
    [ 1.980734] kernel: dump_stack+0x10/0x12
    [ 1.980736] kernel: ubsan_epilogue+0x9/0x45
    [ 1.980739] kernel: __ubsan_handle_out_of_bounds.cold+0x44/0x49
    [ 1.980742] kernel: ahci_qc_issue+0x166/0x170 [libahci]
    [ 1.980748] kernel: ata_qc_issue+0x135/0x240
    [ 1.980752] kernel: ata_exec_internal_sg+0x2c4/0x580
    [ 1.980754] kernel: ? vprintk_default+0x1d/0x20
    [ 1.980759] kernel: ata_exec_internal+0x67/0xa0
    [ 1.980762] kernel: sata_pmp_read+0x8d/0xc0
    [ 1.980765] kernel: sata_pmp_read_gscr+0x3c/0x90
    [ 1.980768] kernel: sata_pmp_attach+0x8b/0x310
    [ 1.980771] kernel: ata_eh_revalidate_and_attach+0x28c/0x4b0
    [ 1.980775] kernel: ata_eh_recover+0x6b6/0xb30
    [ 1.980778] kernel: ? ahci_do_hardreset+0x180/0x180 [libahci]
    [ 1.980783] kernel: ? ahci_stop_engine+0xb0/0xb0 [libahci]
    [ 1.980787] kernel: ? ahci_do_softreset+0x290/0x290 [libahci]
    [ 1.980792] kernel: ? trace_event_raw_event_ata_eh_link_autopsy_qc+0xe0/0xe0
    [ 1.980795] kernel: sata_pmp_eh_recover.isra.0+0x214/0x560
    [ 1.980799] kernel: sata_pmp_error_handler+0x23/0x40
    [ 1.980802] kernel: ahci_error_handler+0x43/0x80 [libahci]
    [ 1.980806] kernel: ata_scsi_port_error_handler+0x2b1/0x600
    [ 1.980810] kernel: ata_scsi_error+0x9c/0xd0
    [ 1.980813] kernel: scsi_error_handler+0xa1/0x180
    [ 1.980817] kernel: ? scsi_unjam_host+0x1c0/0x1c0
    [ 1.980820] kernel: kthread+0x12a/0x150
    [ 1.980823] kernel: ? set_kthread_struct+0x50/0x50
    [ 1.980826] kernel: ret_from_fork+0x22/0x30
    [ 1.980831] kernel: </TASK>
    
    This happens because sata_pmp_init_links() initialize link->pmp up to
    SATA_PMP_MAX_PORTS while em_priv is declared as 8 elements array.
    
    I can't find the maximum Enclosure Management ports specified in AHCI
    spec v1.3.1, but "12.2.1 LED message type" states that "Port Multiplier
    Information" can utilize 4 bits, which implies it can support up to 16
    ports. Hence, use SATA_PMP_MAX_PORTS as EM_MAX_SLOTS to resolve the
    issue.
    
    BugLink: https://bugs.launchpad.net/bugs/1970074
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d76c5f16036015db70f11ec2ebd73b9163b2a292
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Wed Oct 12 15:11:05 2022 +0200

    ata: ahci-imx: Fix MODULE_ALIAS
    
    commit 979556f1521a835a059de3b117b9c6c6642c7d58 upstream.
    
    'ahci:' is an invalid prefix, preventing the module from autoloading.
    Fix this by using the 'platform:' prefix and DRV_NAME.
    
    Fixes: 9e54eae23bc9 ("ahci_imx: add ahci sata support on imx platforms")
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2c90dfd6ad755486e854b95ee31517290a40788
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Mon Oct 17 21:02:26 2022 +0800

    ocfs2: fix BUG when iput after ocfs2_mknod fails
    
    commit 759a7c6126eef5635506453e9b9d55a6a3ac2084 upstream.
    
    Commit b1529a41f777 "ocfs2: should reclaim the inode if
    '__ocfs2_mknod_locked' returns an error" tried to reclaim the claimed
    inode if __ocfs2_mknod_locked() fails later.  But this introduce a race,
    the freed bit may be reused immediately by another thread, which will
    update dinode, e.g.  i_generation.  Then iput this inode will lead to BUG:
    inode->i_generation != le32_to_cpu(fe->i_generation)
    
    We could make this inode as bad, but we did want to do operations like
    wipe in some cases.  Since the claimed inode bit can only affect that an
    dinode is missing and will return back after fsck, it seems not a big
    problem.  So just leave it as is by revert the reclaim logic.
    
    Link: https://lkml.kernel.org/r/20221017130227.234480-1-joseph.qi@linux.alibaba.com
    Fixes: b1529a41f777 ("ocfs2: should reclaim the inode if '__ocfs2_mknod_locked' returns an error")
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reported-by: Yan Wang <wangyan122@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.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 d841744f4345e7278b199139d474e3941759b86b
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Mon Oct 17 21:02:27 2022 +0800

    ocfs2: clear dinode links count in case of error
    
    commit 28f4821b1b53e0649706912e810c6c232fc506f9 upstream.
    
    In ocfs2_mknod(), if error occurs after dinode successfully allocated,
    ocfs2 i_links_count will not be 0.
    
    So even though we clear inode i_nlink before iput in error handling, it
    still won't wipe inode since we'll refresh inode from dinode during inode
    lock.  So just like clear inode i_nlink, we clear ocfs2 i_links_count as
    well.  Also do the same change for ocfs2_symlink().
    
    Link: https://lkml.kernel.org/r/20221017130227.234480-2-joseph.qi@linux.alibaba.com
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reported-by: Yan Wang <wangyan122@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>