óÐÉÓÏË ÉÚÍÅÎÅÎÉÊ × Linux 5.10.206

 
9p/net: fix possible memory leak in p9_check_errors() [+ + +]
Author: Hangyu Hua <hbh25y@gmail.com>
Date:   Fri Oct 27 11:03:02 2023 +0800

    9p/net: fix possible memory leak in p9_check_errors()
    
    commit ce07087964208eee2ca2f9ee4a98f8b5d9027fe6 upstream.
    
    When p9pdu_readf() is called with "s?d" attribute, it allocates a pointer
    that will store a string. But when p9pdu_readf() fails while handling "d"
    then this pointer will not be freed in p9_check_errors().
    
    Fixes: 51a87c552dfd ("9p: rework client code to use new protocol support functions")
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Message-ID: <20231027030302.11927-1-hbh25y@gmail.com>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218235
    Signed-off-by: Alexey Panov <apanov@astralinux.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
afs: Fix dynamic root lookup DNS check [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Dec 11 15:15:02 2023 +0000

    afs: Fix dynamic root lookup DNS check
    
    [ Upstream commit 74cef6872ceaefb5b6c5c60641371ea28702d358 ]
    
    In the afs dynamic root directory, the ->lookup() function does a DNS check
    on the cell being asked for and if the DNS upcall reports an error it will
    report an error back to userspace (typically ENOENT).
    
    However, if a failed DNS upcall returns a new-style result, it will return
    a valid result, with the status field set appropriately to indicate the
    type of failure - and in that case, dns_query() doesn't return an error and
    we let stat() complete with no error - which can cause confusion in
    userspace as subsequent calls that trigger d_automount then fail with
    ENOENT.
    
    Fix this by checking the status result from a valid dns_query() and
    returning an error if it indicates a failure.
    
    Fixes: bbb4c4323a4d ("dns: Allow the dns resolver to retrieve a server set")
    Reported-by: Markus Suvanto <markus.suvanto@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=216637
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Markus Suvanto <markus.suvanto@gmail.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

afs: Fix overwriting of result of DNS query [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Thu Dec 21 15:09:31 2023 +0000

    afs: Fix overwriting of result of DNS query
    
    [ Upstream commit a9e01ac8c5ff32669119c40dfdc9e80eb0b7d7aa ]
    
    In afs_update_cell(), ret is the result of the DNS lookup and the errors
    are to be handled by a switch - however, the value gets clobbered in
    between by setting it to -ENOMEM in case afs_alloc_vlserver_list()
    fails.
    
    Fix this by moving the setting of -ENOMEM into the error handling for
    OOM failure.  Further, only do it if we don't have an alternative error
    to return.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.  Based
    on a patch from Anastasia Belova [1].
    
    Fixes: d5c32c89b208 ("afs: Fix cell DNS lookup")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Jeffrey Altman <jaltman@auristor.com>
    cc: Anastasia Belova <abelova@astralinux.ru>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    cc: lvc-project@linuxtesting.org
    Link: https://lore.kernel.org/r/20231221085849.1463-1-abelova@astralinux.ru/ [1]
    Link: https://lore.kernel.org/r/1700862.1703168632@warthog.procyon.org.uk/ # v1
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

afs: Fix the dynamic root's d_delete to always delete unused dentries [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Dec 11 15:08:57 2023 +0000

    afs: Fix the dynamic root's d_delete to always delete unused dentries
    
    [ Upstream commit 71f8b55bc30e82d6355e07811213d847981a32e2 ]
    
    Fix the afs dynamic root's d_delete function to always delete unused
    dentries rather than only deleting them if they're positive.  With things
    as they stand upstream, negative dentries stemming from failed DNS lookups
    stick around preventing retries.
    
    Fixes: 66c7e1d319a5 ("afs: Split the dynroot stuff out and give it its own ops tables")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Markus Suvanto <markus.suvanto@gmail.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB [+ + +]
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Fri Dec 8 15:21:26 2023 +0200

    ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB
    
    [ Upstream commit 3b1ff57e24a7bcd2e2a8426dd2013a80d1fa96eb ]
    
    Add one more older NUC model that requires quirk to force all pins to be
    connected. The display codec pins are not registered properly without
    the force-connect quirk. The codec will report only one pin as having
    external connectivity, but i915 finds all three connectors on the
    system, so the two drivers are not in sync.
    
    Issue found with DRM igt-gpu-tools test kms_hdmi_inject@inject-audio.
    
    Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/3
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Jani Saarinen <jani.saarinen@intel.com>
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20231208132127.2438067-2-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/hdmi: Add quirk to force pin connectivity on NUC10 [+ + +]
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Tue Jul 20 18:32:16 2021 +0300

    ALSA: hda/hdmi: Add quirk to force pin connectivity on NUC10
    
    [ Upstream commit e81d71e343c6c62cf323042caed4b7ca049deda5 ]
    
    On some Intel NUC10 variants, codec reports AC_JACK_PORT_NONE as
    pin default config for all pins. This results in broken audio.
    Add a quirk to force connectivity.
    
    BugLink: https://github.com/clearlinux/distribution/issues/2396
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20210720153216.2200938-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Stable-dep-of: 3b1ff57e24a7 ("ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: dts: Fix occasional boot hang for am3 usb [+ + +]
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue Dec 12 15:50:35 2023 +0200

    ARM: dts: Fix occasional boot hang for am3 usb
    
    [ Upstream commit 9b6a51aab5f5f9f71d2fa16e8b4d530e1643dfcb ]
    
    With subtle timings changes, we can now sometimes get an external abort on
    non-linefetch error booting am3 devices at sysc_reset(). This is because
    of a missing reset delay needed for the usb target module.
    
    Looks like we never enabled the delay earlier for am3, although a similar
    issue was seen earlier with a similar usb setup for dm814x as described in
    commit ebf244148092 ("ARM: OMAP2+: Use srst_udelay for USB on dm814x").
    
    Cc: stable@vger.kernel.org
    Fixes: 0782e8572ce4 ("ARM: dts: Probe am335x musb with ti-sysc")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init [+ + +]
Author: Kunwu Chan <chentao@kylinos.cn>
Date:   Thu Nov 23 22:52:37 2023 +0800

    ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init
    
    [ Upstream commit c72b9c33ef9695ad7ce7a6eb39a9df8a01b70796 ]
    
    kasprintf() returns a pointer to dynamically allocated memory which can
    be NULL upon failure. When 'soc_dev_attr->family' is NULL,it'll trigger
    the null pointer dereference issue, such as in 'soc_info_show'.
    
    And when 'soc_device_register' fails, it's necessary to release
    'soc_dev_attr->family' to avoid memory leaks.
    
    Fixes: 6770b2114325 ("ARM: OMAP2+: Export SoC information to userspace")
    Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
    Message-ID: <20231123145237.609442-1-chentao@kylinos.cn>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg [+ + +]
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Sat Dec 9 05:55:18 2023 -0500

    Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg
    
    [ Upstream commit 2e07e8348ea454615e268222ae3fc240421be768 ]
    
    This can cause a race with bt_sock_ioctl() because
    bt_sock_recvmsg() gets the skb from sk->sk_receive_queue
    and then frees it without holding lock_sock.
    A use-after-free for a skb occurs with the following flow.
    ```
    bt_sock_recvmsg() -> skb_recv_datagram() -> skb_free_datagram()
    bt_sock_ioctl() -> skb_peek()
    ```
    Add lock_sock to bt_sock_recvmsg() to fix this issue.
    
    Cc: stable@vger.kernel.org
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Nov 20 10:04:39 2023 -0500

    Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent
    
    commit 99e67d46e5ff3c7c901af6009edec72d3d363be8 upstream.
    
    Before setting HCI_INQUIRY bit check if HCI_OP_INQUIRY was really sent
    otherwise the controller maybe be generating invalid events or, more
    likely, it is a result of fuzzing tools attempting to test the right
    behavior of the stack when unexpected events are generated.
    
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218151
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: L2CAP: Send reject on command corrupted request [+ + +]
Author: Frédéric Danis <frederic.danis@collabora.com>
Date:   Fri Dec 8 18:41:50 2023 +0100

    Bluetooth: L2CAP: Send reject on command corrupted request
    
    commit 78b99eb1faa7371bf9c534690f26a71b6996622d upstream.
    
    L2CAP/COS/CED/BI-02-C PTS test send a malformed L2CAP signaling packet
    with 2 commands in it (a connection request and an unknown command) and
    expect to get a connection response packet and a command reject packet.
    The second is currently not sent.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Frédéric Danis <frederic.danis@collabora.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE [+ + +]
Author: Xiao Yao <xiaoyao@rock-chips.com>
Date:   Tue Dec 12 00:27:18 2023 +0800

    Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE
    
    [ Upstream commit 59b047bc98084f8af2c41483e4d68a5adf2fa7f7 ]
    
    If two Bluetooth devices both support BR/EDR and BLE, and also
    support Secure Connections, then they only need to pair once.
    The LTK generated during the LE pairing process may be converted
    into a BR/EDR link key for BR/EDR transport, and conversely, a
    link key generated during the BR/EDR SSP pairing process can be
    converted into an LTK for LE transport. Hence, the link type of
    the link key and LTK is not fixed, they can be either an LE LINK
    or an ACL LINK.
    
    Currently, in the mgmt_new_irk/ltk/crsk/link_key functions, the
    link type is fixed, which could lead to incorrect address types
    being reported to the application layer. Therefore, it is necessary
    to add link_type/addr_type to the smp_irk/ltk/crsk and link_key,
    to ensure the generation of the correct address type.
    
    SMP over BREDR:
    Before Fix:
    > ACL Data RX: Handle 11 flags 0x02 dlen 12
            BR/EDR SMP: Identity Address Information (0x09) len 7
            Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Identity Resolving Key (0x0018) plen 30
            Random address: 00:00:00:00:00:00 (Non-Resolvable)
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Long Term Key (0x000a) plen 37
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated key from P-256 (0x03)
    
    After Fix:
    > ACL Data RX: Handle 11 flags 0x02 dlen 12
          BR/EDR SMP: Identity Address Information (0x09) len 7
            Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Identity Resolving Key (0x0018) plen 30
            Random address: 00:00:00:00:00:00 (Non-Resolvable)
            BR/EDR Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Long Term Key (0x000a) plen 37
            BR/EDR Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated key from P-256 (0x03)
    
    SMP over LE:
    Before Fix:
    @ MGMT Event: New Identity Resolving Key (0x0018) plen 30
            Random address: 5F:5C:07:37:47:D5 (Resolvable)
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Long Term Key (0x000a) plen 37
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated key from P-256 (0x03)
    @ MGMT Event: New Link Key (0x0009) plen 26
            BR/EDR Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated Combination key from P-256 (0x08)
    
    After Fix:
    @ MGMT Event: New Identity Resolving Key (0x0018) plen 30
            Random address: 5E:03:1C:00:38:21 (Resolvable)
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
    @ MGMT Event: New Long Term Key (0x000a) plen 37
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated key from P-256 (0x03)
    @ MGMT Event: New Link Key (0x0009) plen 26
            Store hint: Yes (0x01)
            LE Address: F8:7D:76:F2:12:F3 (OUI F8-7D-76)
            Key type: Authenticated Combination key from P-256 (0x08)
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Xiao Yao <xiaoyao@rock-chips.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Mar 15 14:39:29 2021 -0700

    Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
    
    [ Upstream commit 2e1614f7d61e407f1a8e7935a2903a6fa3cb0b11 ]
    
    This converts instances of BT_ERR and BT_DBG to bt_dev_err and
    bt_dev_dbg which can be enabled at runtime when BT_FEATURE_DEBUG is
    enabled.
    
    Note: Not all instances could be converted as some are exercised by
    selftest.
    
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Stable-dep-of: 59b047bc9808 ("Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: SMP: Fix crash when receiving new connection when debug is enabled [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Jun 14 10:46:44 2021 -0700

    Bluetooth: SMP: Fix crash when receiving new connection when debug is enabled
    
    commit 995fca15b73ff8f92888cc2d5d95f17ffdac74ba upstream.
    
    When receiving a new connection pchan->conn won't be initialized so the
    code cannot use bt_dev_dbg as the pointer to hci_dev won't be
    accessible.
    
    Fixes: 2e1614f7d61e4 ("Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: use inclusive language in SMP [+ + +]
Author: Archie Pusaka <apusaka@chromium.org>
Date:   Mon May 31 16:37:25 2021 +0800

    Bluetooth: use inclusive language in SMP
    
    [ Upstream commit fad646e16d3cafd67d3cfff8e66f77401190957e ]
    
    This patch replaces some non-inclusive terms based on the appropriate
    language mapping table compiled by the Bluetooth SIG:
    https://specificationrefs.bluetooth.com/language-mapping/Appropriate_Language_Mapping_Table.pdf
    
    Specifically, these terms are replaced:
    master -> initiator
    slave  -> responder
    
    Signed-off-by: Archie Pusaka <apusaka@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Stable-dep-of: 59b047bc9808 ("Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: do not allow non subvolume root targets for snapshot [+ + +]
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Dec 15 10:01:44 2023 -0500

    btrfs: do not allow non subvolume root targets for snapshot
    
    [ Upstream commit a8892fd71933126ebae3d60aec5918d4dceaae76 ]
    
    Our btrfs subvolume snapshot <source> <destination> utility enforces
    that <source> is the root of the subvolume, however this isn't enforced
    in the kernel.  Update the kernel to also enforce this limitation to
    avoid problems with other users of this ioctl that don't have the
    appropriate checks in place.
    
    Reported-by: Martin Michaelis <code@mgjm.de>
    CC: stable@vger.kernel.org # 4.14+
    Reviewed-by: Neal Gompa <neal@gompa.dev>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bus: ti-sysc: Flush posted write only after srst_udelay [+ + +]
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Nov 24 10:50:56 2023 +0200

    bus: ti-sysc: Flush posted write only after srst_udelay
    
    commit f71f6ff8c1f682a1cae4e8d7bdeed9d7f76b8f75 upstream.
    
    Commit 34539b442b3b ("bus: ti-sysc: Flush posted write on enable before
    reset") caused a regression reproducable on omap4 duovero where the ISS
    target module can produce interconnect errors on boot. Turns out the
    registers are not accessible until after a delay for devices needing
    a ti,sysc-delay-us value.
    
    Let's fix this by flushing the posted write only after the reset delay.
    We do flushing also for ti,sysc-delay-us using devices as that should
    trigger an interconnect error if the delay is not properly configured.
    
    Let's also add some comments while at it.
    
    Fixes: 34539b442b3b ("bus: ti-sysc: Flush posted write on enable before reset")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata() [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Dec 5 16:39:16 2023 +0100

    dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata()
    
    commit b86f4b790c998afdbc88fe1aa55cfe89c4068726 upstream.
    
    __bio_for_each_segment assumes that the first struct bio_vec argument
    doesn't change - it calls "bio_advance_iter_single((bio), &(iter),
    (bvl).bv_len)" to advance the iterator. Unfortunately, the dm-integrity
    code changes the bio_vec with "bv.bv_len -= pos". When this code path
    is taken, the iterator would be out of sync and dm-integrity would
    report errors. This happens if the machine is out of memory and
    "kmalloc" fails.
    
    Fix this bug by making a copy of "bv" and changing the copy instead.
    
    Fixes: 7eada909bfd7 ("dm: add integrity target")
    Cc: stable@vger.kernel.org      # v4.12+
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp [+ + +]
Author: Fabio Estevam <festevam@denx.de>
Date:   Fri Dec 15 11:13:57 2023 +0000

    dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp
    
    commit a2a8aefecbd0f87d6127951cef33b3def8439057 upstream.
    
    Both imx23.dtsi and imx28.dtsi describe the OCOTP nodes in
    the format:
    
    compatible = "fsl,imx28-ocotp", "fsl,ocotp";
    
    Document the "fsl,ocotp" entry to fix the following schema
    warning:
    
    efuse@8002c000: compatible: ['fsl,imx23-ocotp', 'fsl,ocotp'] is too long
    from schema $id: http://devicetree.org/schemas/nvmem/mxs-ocotp.yaml#
    
    Fixes: 2c504460f502 ("dt-bindings: nvmem: Convert MXS OCOTP to json-schema")
    Cc:  <Stable@vger.kernel.org>
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20231215111358.316727-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ethernet: atheros: fix a memleak in atl1e_setup_ring_resources [+ + +]
Author: Zhipeng Lu <alexious@zju.edu.cn>
Date:   Thu Dec 14 21:04:04 2023 +0800

    ethernet: atheros: fix a memleak in atl1e_setup_ring_resources
    
    [ Upstream commit 309fdb1c33fe726d92d0030481346f24e1b01f07 ]
    
    In the error handling of 'offset > adapter->ring_size', the
    tx_ring->tx_buffer allocated by kzalloc should be freed,
    instead of 'goto failed' instantly.
    
    Fixes: a6a5325239c2 ("atl1e: Atheros L1E Gigabit Ethernet driver")
    Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn>
    Reviewed-by: Suman Ghosh <sumang@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: aspeed: Handle the coalesced stop conditions with the start conditions. [+ + +]
Author: Quan Nguyen <quan@os.amperecomputing.com>
Date:   Mon Dec 11 17:22:16 2023 +0700

    i2c: aspeed: Handle the coalesced stop conditions with the start conditions.
    
    [ Upstream commit b4cc1cbba5195a4dd497cf2f8f09e7807977d543 ]
    
    Some masters may drive the transfers with low enough latency between
    the nak/stop phase of the current command and the start/address phase
    of the following command that the interrupts are coalesced by the
    time we process them.
    Handle the stop conditions before processing SLAVE_MATCH to fix the
    complaints that sometimes occur below.
    
    "aspeed-i2c-bus 1e78a040.i2c-bus: irq handled != irq. Expected
    0x00000086, but was 0x00000084"
    
    Fixes: f9eb91350bb2 ("i2c: aspeed: added slave support for Aspeed I2C driver")
    Signed-off-by: Quan Nguyen <quan@os.amperecomputing.com>
    Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma() [+ + +]
Author: Wadim Egorov <w.egorov@phytec.de>
Date:   Mon Sep 25 15:44:27 2023 +0200

    iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma()
    
    commit 60576e84c187043cef11f11d015249e71151d35a upstream.
    
    Fix wrong handling of a DMA request where the probing only failed
    if -EPROPE_DEFER was returned. Instead, let us fail if a non -ENODEV
    value is returned. This makes DMAs explicitly optional. Even if the
    DMA request is unsuccessfully, the ADC can still work properly.
    We do also handle the defer probe case by making use of dev_err_probe().
    
    Fixes: f438b9da75eb ("drivers: iio: ti_am335x_adc: add dma support")
    Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
    Reviewed-by: Bhavya Kapoor <b-kapoor@ti.com>
    Link: https://lore.kernel.org/r/20230925134427.214556-1-w.egorov@phytec.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table [+ + +]
Author: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Date:   Thu Oct 26 17:44:49 2023 +0200

    iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table
    
    commit 54cf39ec16335dadbe1ba008d8e5e98dae3e26f8 upstream.
    
    The HTU21 offers 4 sampling frequencies: 20, 40, 70 and 120, which are
    associated to an index that is used to select the right measurement
    resolution and its corresponding measurement time. The current
    implementation selects the measurement resolution and the temperature
    measurement time properly, but it does not select the right humidity
    measurement time in all cases.
    
    In summary, the 40 and 70 humidity measurement times are swapped.
    
    The reason for that is probably the unusual coding for the measurement
    resolution. According to the datasheet, the bits [7,0] of the "user
    register" are used as follows to select the bit resolution:
    
    --------------------------------------------------
    | Bit 7 | Bit 0 | RH | Temp | Trh (us) | Tt (us) |
    --------------------------------------------------
    |   0   |   0   | 12 |  14  |  16000   |  50000  |
    --------------------------------------------------
    |   0   |   1   | 8  |  12  |  3000    |  13000  |
    --------------------------------------------------
    |   1   |   0   | 10 |  13  |  5000    |  25000  |
    --------------------------------------------------
    |   1   |   1   | 11 |  11  |  8000    |  7000   |
    --------------------------------------------------
    *This table is available in the official datasheet, page 13/21. I have
    just appended the times provided in the humidity/temperature tables,
    pages 3/21, 5/21. Note that always a pair of resolutions is selected.
    
    The sampling frequencies [20, 40, 70, 120] are assigned to a linear
    index [0..3] which is then coded as follows [1]:
    
    Index    [7,0]
    --------------
    idx 0     0,0
    idx 1     1,0
    idx 2     0,1
    idx 3     1,1
    
    That is done that way because the temperature measurements are being
    used as the reference for the sampling frequency (the frequencies and
    the temperature measurement times are correlated), so increasing the
    index always reduces the temperature measurement time and its
    resolution. Therefore, the temperature measurement time array is as
    simple as [50000, 25000, 13000, 7000]
    
    On the other hand, the humidity resolution cannot follow the same
    pattern because of the way it is coded in the "user register", where
    both resolutions are selected at the same time. The humidity measurement
    time array is the following: [16000, 3000, 5000, 8000], which defines
    the following assignments:
    
    Index    [7,0]    Trh
    -----------------------
    idx 0     0,0     16000  -> right, [0,0] selects 12 bits (Trh = 16000)
    idx 1     1,0     3000   -> wrong! [1,0] selects 10 bits (Trh = 5000)
    idx 2     0,1     5000   -> wrong! [0,1] selects 8 bits (Trh = 3000)
    idx 3     1,1     8000   -> right, [1,1] selects 11 bits (Trh = 8000)
    
    The times have been ordered as if idx = 1 -> [0,1] and idx = 2 -> [1,0],
    which is not the case for the reason explained above.
    
    So a simple modification is required to obtain the right humidity
    measurement time array, swapping the values in the positions 1 and 2.
    
    The right table should be the following: [16000, 5000, 3000, 8000]
    
    Fix the humidity measurement time array with the right idex/value
    coding.
    
    [1] The actual code that makes this coding and assigns it to the current
    value of the "user register" is the following:
    config_reg &= 0x7E;
    config_reg |= ((i & 1) << 7) + ((i & 2) >> 1);
    
    Fixes: d574a87cc311 ("Add meas-spec sensors common part")
    Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
    Link: https://lore.kernel.org/r/20231026-topic-htu21_conversion_time-v1-1-bd257dc44209@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw [+ + +]
Author: Su Hui <suhui@nfschina.com>
Date:   Mon Oct 30 10:02:19 2023 +0800

    iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw
    
    [ Upstream commit c3df0e29fb7788c4b3ddf37d5ed87dda2b822943 ]
    
    inv_mpu6050_sensor_show() can return -EINVAL or IIO_VAL_INT. Return the
    true value rather than only return IIO_VAL_INT.
    
    Fixes: d5098447147c ("iio: imu: mpu6050: add calibration offset support")
    Signed-off-by: Su Hui <suhui@nfschina.com>
    Link: https://lore.kernel.org/r/20231030020218.65728-1-suhui@nfschina.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Input: ipaq-micro-keys - add error handling for devm_kmemdup [+ + +]
Author: Haoran Liu <liuhaoran14@163.com>
Date:   Sun Dec 3 19:00:23 2023 +0000

    Input: ipaq-micro-keys - add error handling for devm_kmemdup
    
    [ Upstream commit 59b6a747e2d39227ac2325c5e29d6ab3bb070c2a ]
    
    Check the return value of i2c_add_adapter. Static analysis revealed that
    the function did not properly handle potential failures of
    i2c_add_adapter, which could lead to partial initialization of the I2C
    adapter and unstable operation.
    
    Signed-off-by: Haoran Liu <liuhaoran14@163.com>
    Link: https://lore.kernel.org/r/20231203164653.38983-1-liuhaoran14@163.com
    Fixes: d7535ffa427b ("Input: driver for microcontroller keys on the iPaq h3xxx")
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Input: soc_button_array - add mapping for airplane mode button [+ + +]
Author: Christoffer Sandberg <cs@tuxedo.de>
Date:   Fri Dec 22 23:25:38 2023 -0800

    Input: soc_button_array - add mapping for airplane mode button
    
    commit ea3715941a9b7d816a1e9096ac0577900af2a69e upstream.
    
    This add a mapping for the airplane mode button on the TUXEDO Pulse Gen3.
    
    While it is physically a key it behaves more like a switch, sending a key
    down on first press and a key up on 2nd press. Therefor the switch event
    is used here. Besides this behaviour it uses the HID usage-id 0xc6
    (Wireless Radio Button) and not 0xc8 (Wireless Radio Slider Switch), but
    since neither 0xc6 nor 0xc8 are currently implemented at all in
    soc_button_array this not to standard behaviour is not put behind a quirk
    for the moment.
    
    Signed-off-by: Christoffer Sandberg <cs@tuxedo.de>
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Link: https://lore.kernel.org/r/20231215171718.80229-1-wse@tuxedocomputers.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
interconnect: Treat xlate() returning NULL node as an error [+ + +]
Author: Mike Tipton <quic_mdtipton@quicinc.com>
Date:   Wed Oct 25 07:58:29 2023 -0700

    interconnect: Treat xlate() returning NULL node as an error
    
    [ Upstream commit ad2ab1297d0c80899125a842bb7a078abfe1e6ce ]
    
    Currently, if provider->xlate() or provider->xlate_extended()
    "successfully" return a NULL node, then of_icc_get_from_provider() won't
    consider that an error and will successfully return the NULL node. This
    bypasses error handling in of_icc_get_by_index() and leads to NULL
    dereferences in path_find().
    
    This could be avoided by ensuring provider callbacks always return an
    error for NULL nodes, but it's better to explicitly protect against this
    in the common framework.
    
    Fixes: 87e3031b6fbd ("interconnect: Allow endpoints translation via DT")
    Signed-off-by: Mike Tipton <quic_mdtipton@quicinc.com>
    Link: https://lore.kernel.org/r/20231025145829.11603-1-quic_mdtipton@quicinc.com
    Signed-off-by: Georgi Djakov <djakov@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Sat Dec 9 00:41:55 2023 +0000

    keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry
    
    [ Upstream commit 39299bdd2546688d92ed9db4948f6219ca1b9542 ]
    
    If a key has an expiration time, then when that time passes, the key is
    left around for a certain amount of time before being collected (5 mins by
    default) so that EKEYEXPIRED can be returned instead of ENOKEY.  This is a
    problem for DNS keys because we want to redo the DNS lookup immediately at
    that point.
    
    Fix this by allowing key types to be marked such that keys of that type
    don't have this extra period, but are reclaimed as soon as they expire and
    turn this on for dns_resolver-type keys.  To make this easier to handle,
    key->expiry is changed to be permanent if TIME64_MAX rather than 0.
    
    Furthermore, give such new-style negative DNS results a 1s default expiry
    if no other expiry time is set rather than allowing it to stick around
    indefinitely.  This shouldn't be zero as ls will follow a failing stat call
    immediately with a second with AT_SYMLINK_NOFOLLOW added.
    
    Fixes: 1a4240f4764a ("DNS: Separate out CIFS DNS Resolver code")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Markus Suvanto <markus.suvanto@gmail.com>
    cc: Wang Lei <wang840925@gmail.com>
    cc: Jeff Layton <jlayton@redhat.com>
    cc: Steve French <smfrench@gmail.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: Jarkko Sakkinen <jarkko@kernel.org>
    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: linux-afs@lists.infradead.org
    cc: linux-cifs@vger.kernel.org
    cc: linux-nfs@vger.kernel.org
    cc: ceph-devel@vger.kernel.org
    cc: keyrings@vger.kernel.org
    cc: netdev@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Wed Dec 6 08:23:49 2023 +0900

    ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE
    
    [ Upstream commit 13736654481198e519059d4a2e2e3b20fa9fdb3e ]
    
    MS confirm that "AISi" name of SMB2_CREATE_ALLOCATION_SIZE in MS-SMB2
    specification is a typo. cifs/ksmbd have been using this wrong name from
    MS-SMB2. It should be "AlSi". Also It will cause problem when running
    smb2.create.open test in smbtorture against ksmbd.
    
    Cc: stable@vger.kernel.org
    Fixes: 12197a7fdda9 ("Clarify SMB2/SMB3 create context and add missing ones")
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
lib/vsprintf: Fix %pfwf when current node refcount == 0 [+ + +]
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Tue Nov 14 16:26:55 2023 +0100

    lib/vsprintf: Fix %pfwf when current node refcount == 0
    
    commit 5c47251e8c4903111608ddcba2a77c0c425c247c upstream.
    
    A refcount issue can appeared in __fwnode_link_del() due to the
    pr_debug() call:
      WARNING: CPU: 0 PID: 901 at lib/refcount.c:25 refcount_warn_saturate+0xe5/0x110
      Call Trace:
      <TASK>
      ...
      of_node_get+0x1e/0x30
      of_fwnode_get+0x28/0x40
      fwnode_full_name_string+0x34/0x90
      fwnode_string+0xdb/0x140
      ...
      vsnprintf+0x17b/0x630
      ...
      __fwnode_link_del+0x25/0xa0
      fwnode_links_purge+0x39/0xb0
      of_node_release+0xd9/0x180
      ...
    
    Indeed, an fwnode (of_node) is being destroyed and so, of_node_release()
    is called because the of_node refcount reached 0.
    From of_node_release() several function calls are done and lead to
    a pr_debug() calls with %pfwf to print the fwnode full name.
    The issue is not present if we change %pfwf to %pfwP.
    
    To print the full name, %pfwf iterates over the current node and its
    parents and obtain/drop a reference to all nodes involved.
    
    In order to allow to print the full name (%pfwf) of a node while it is
    being destroyed, do not obtain/drop a reference to this current node.
    
    Fixes: a92eb7621b9f ("lib/vsprintf: Make use of fwnode API to obtain node names and separators")
    Cc: stable@vger.kernel.org
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20231114152655.409331-1-herve.codina@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.10.206 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jan 5 15:12:32 2024 +0100

    Linux 5.10.206
    
    Link: https://lore.kernel.org/r/20240103164842.953224409@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: Fix fw tracer first block check [+ + +]
Author: Moshe Shemesh <moshe@nvidia.com>
Date:   Thu Nov 30 11:30:34 2023 +0200

    net/mlx5: Fix fw tracer first block check
    
    [ Upstream commit 4261edf11cb7c9224af713a102e5616329306932 ]
    
    While handling new traces, to verify it is not the first block being
    written, last_timestamp is checked. But instead of checking it is non
    zero it is verified to be zero. Fix to verify last_timestamp is not
    zero.
    
    Fixes: c71ad41ccb0c ("net/mlx5: FW tracer, events handling")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Feras Daoud <ferasda@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5e: Correct snprintf truncation handling for fw_version buffer used by representors [+ + +]
Author: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Date:   Tue Nov 21 15:00:22 2023 -0800

    net/mlx5e: Correct snprintf truncation handling for fw_version buffer used by representors
    
    [ Upstream commit b13559b76157de9d74f04d3ca0e49d69de3b5675 ]
    
    snprintf returns the length of the formatted string, excluding the trailing
    null, without accounting for truncation. This means that is the return
    value is greater than or equal to the size parameter, the fw_version string
    was truncated.
    
    Link: https://docs.kernel.org/core-api/kernel-api.html#c.snprintf
    Fixes: 1b2bd0c0264f ("net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors")
    Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5e: Fix slab-out-of-bounds in mlx5_query_nic_vport_mac_list() [+ + +]
Author: Shifeng Li <lishifeng@sangfor.com.cn>
Date:   Thu Nov 30 01:46:56 2023 -0800

    net/mlx5e: Fix slab-out-of-bounds in mlx5_query_nic_vport_mac_list()
    
    [ Upstream commit ddb38ddff9c71026bad481b791a94d446ee37603 ]
    
    Out_sz that the size of out buffer is calculated using query_nic_vport
    _context_in structure when driver query the MAC list. However query_nic
    _vport_context_in structure is smaller than query_nic_vport_context_out.
    When allowed_list_size is greater than 96, calling ether_addr_copy() will
    trigger an slab-out-of-bounds.
    
    [ 1170.055866] BUG: KASAN: slab-out-of-bounds in mlx5_query_nic_vport_mac_list+0x481/0x4d0 [mlx5_core]
    [ 1170.055869] Read of size 4 at addr ffff88bdbc57d912 by task kworker/u128:1/461
    [ 1170.055870]
    [ 1170.055932] Workqueue: mlx5_esw_wq esw_vport_change_handler [mlx5_core]
    [ 1170.055936] Call Trace:
    [ 1170.055949]  dump_stack+0x8b/0xbb
    [ 1170.055958]  print_address_description+0x6a/0x270
    [ 1170.055961]  kasan_report+0x179/0x2c0
    [ 1170.056061]  mlx5_query_nic_vport_mac_list+0x481/0x4d0 [mlx5_core]
    [ 1170.056162]  esw_update_vport_addr_list+0x2c5/0xcd0 [mlx5_core]
    [ 1170.056257]  esw_vport_change_handle_locked+0xd08/0x1a20 [mlx5_core]
    [ 1170.056377]  esw_vport_change_handler+0x6b/0x90 [mlx5_core]
    [ 1170.056381]  process_one_work+0x65f/0x12d0
    [ 1170.056383]  worker_thread+0x87/0xb50
    [ 1170.056390]  kthread+0x2e9/0x3a0
    [ 1170.056394]  ret_from_fork+0x1f/0x40
    
    Fixes: e16aea2744ab ("net/mlx5: Introduce access functions to modify/query vport mac lists")
    Cc: Ding Hui <dinghui@sangfor.com.cn>
    Signed-off-by: Shifeng Li <lishifeng@sangfor.com.cn>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/rose: fix races in rose_kill_by_device() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 14 15:27:47 2023 +0000

    net/rose: fix races in rose_kill_by_device()
    
    [ Upstream commit 64b8bc7d5f1434c636a40bdcfcd42b278d1714be ]
    
    syzbot found an interesting netdev refcounting issue in
    net/rose/af_rose.c, thanks to CONFIG_NET_DEV_REFCNT_TRACKER=y [1]
    
    Problem is that rose_kill_by_device() can change rose->device
    while other threads do not expect the pointer to be changed.
    
    We have to first collect sockets in a temporary array,
    then perform the changes while holding the socket
    lock and rose_list_lock spinlock (in this order)
    
    Change rose_release() to also acquire rose_list_lock
    before releasing the netdev refcount.
    
    [1]
    
    [ 1185.055088][ T7889] ref_tracker: reference already released.
    [ 1185.061476][ T7889] ref_tracker: allocated in:
    [ 1185.066081][ T7889]  rose_bind+0x4ab/0xd10
    [ 1185.070446][ T7889]  __sys_bind+0x1ec/0x220
    [ 1185.074818][ T7889]  __x64_sys_bind+0x72/0xb0
    [ 1185.079356][ T7889]  do_syscall_64+0x40/0x110
    [ 1185.083897][ T7889]  entry_SYSCALL_64_after_hwframe+0x63/0x6b
    [ 1185.089835][ T7889] ref_tracker: freed in:
    [ 1185.094088][ T7889]  rose_release+0x2f5/0x570
    [ 1185.098629][ T7889]  __sock_release+0xae/0x260
    [ 1185.103262][ T7889]  sock_close+0x1c/0x20
    [ 1185.107453][ T7889]  __fput+0x270/0xbb0
    [ 1185.111467][ T7889]  task_work_run+0x14d/0x240
    [ 1185.116085][ T7889]  get_signal+0x106f/0x2790
    [ 1185.120622][ T7889]  arch_do_signal_or_restart+0x90/0x7f0
    [ 1185.126205][ T7889]  exit_to_user_mode_prepare+0x121/0x240
    [ 1185.131846][ T7889]  syscall_exit_to_user_mode+0x1e/0x60
    [ 1185.137293][ T7889]  do_syscall_64+0x4d/0x110
    [ 1185.141783][ T7889]  entry_SYSCALL_64_after_hwframe+0x63/0x6b
    [ 1185.148085][ T7889] ------------[ cut here ]------------
    
    WARNING: CPU: 1 PID: 7889 at lib/ref_tracker.c:255 ref_tracker_free+0x61a/0x810 lib/ref_tracker.c:255
    Modules linked in:
    CPU: 1 PID: 7889 Comm: syz-executor.2 Not tainted 6.7.0-rc4-syzkaller-00162-g65c95f78917e #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/10/2023
    RIP: 0010:ref_tracker_free+0x61a/0x810 lib/ref_tracker.c:255
    Code: 00 44 8b 6b 18 31 ff 44 89 ee e8 21 62 f5 fc 45 85 ed 0f 85 a6 00 00 00 e8 a3 66 f5 fc 48 8b 34 24 48 89 ef e8 27 5f f1 05 90 <0f> 0b 90 bb ea ff ff ff e9 52 fd ff ff e8 84 66 f5 fc 4c 8d 6d 44
    RSP: 0018:ffffc90004917850 EFLAGS: 00010202
    RAX: 0000000000000201 RBX: ffff88802618f4c0 RCX: 0000000000000000
    RDX: 0000000000000202 RSI: ffffffff8accb920 RDI: 0000000000000001
    RBP: ffff8880269ea5b8 R08: 0000000000000001 R09: fffffbfff23e35f6
    R10: ffffffff91f1afb7 R11: 0000000000000001 R12: 1ffff92000922f0c
    R13: 0000000005a2039b R14: ffff88802618f4d8 R15: 00000000ffffffff
    FS: 00007f0a720ef6c0(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f43a819d988 CR3: 0000000076c64000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
    <TASK>
    netdev_tracker_free include/linux/netdevice.h:4127 [inline]
    netdev_put include/linux/netdevice.h:4144 [inline]
    netdev_put include/linux/netdevice.h:4140 [inline]
    rose_kill_by_device net/rose/af_rose.c:195 [inline]
    rose_device_event+0x25d/0x330 net/rose/af_rose.c:218
    notifier_call_chain+0xb6/0x3b0 kernel/notifier.c:93
    call_netdevice_notifiers_info+0xbe/0x130 net/core/dev.c:1967
    call_netdevice_notifiers_extack net/core/dev.c:2005 [inline]
    call_netdevice_notifiers net/core/dev.c:2019 [inline]
    __dev_notify_flags+0x1f5/0x2e0 net/core/dev.c:8646
    dev_change_flags+0x122/0x170 net/core/dev.c:8682
    dev_ifsioc+0x9ad/0x1090 net/core/dev_ioctl.c:529
    dev_ioctl+0x224/0x1090 net/core/dev_ioctl.c:786
    sock_do_ioctl+0x198/0x270 net/socket.c:1234
    sock_ioctl+0x22e/0x6b0 net/socket.c:1339
    vfs_ioctl fs/ioctl.c:51 [inline]
    __do_sys_ioctl fs/ioctl.c:871 [inline]
    __se_sys_ioctl fs/ioctl.c:857 [inline]
    __x64_sys_ioctl+0x18f/0x210 fs/ioctl.c:857
    do_syscall_x64 arch/x86/entry/common.c:52 [inline]
    do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83
    entry_SYSCALL_64_after_hwframe+0x63/0x6b
    RIP: 0033:0x7f0a7147cba9
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 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:00007f0a720ef0c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007f0a7159bf80 RCX: 00007f0a7147cba9
    RDX: 0000000020000040 RSI: 0000000000008914 RDI: 0000000000000004
    RBP: 00007f0a714c847a R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 000000000000000b R14: 00007f0a7159bf80 R15: 00007ffc8bb3a5f8
    </TASK>
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Bernard Pidoux <f6bvp@free.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: 9p: avoid freeing uninit memory in p9pdu_vreadf [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Wed Dec 6 23:09:13 2023 +0300

    net: 9p: avoid freeing uninit memory in p9pdu_vreadf
    
    commit ff49bf1867578f23a5ffdd38f927f6e1e16796c4 upstream.
    
    If some of p9pdu_readf() calls inside case 'T' in p9pdu_vreadf() fails,
    the error path is not handled properly. *wnames or members of *wnames
    array may be left uninitialized and invalidly freed.
    
    Initialize *wnames to NULL in beginning of case 'T'. Initialize the first
    *wnames array element to NULL and nullify the failing *wnames element so
    that the error path freeing loop stops on the first NULL element and
    doesn't proceed further.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: ace51c4dd2f9 ("9p: add new protocol support code")
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Message-ID: <20231206200913.16135-1-pchelkin@ispras.ru>
    Cc: stable@vger.kernel.org
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: check dev->gso_max_size in gso_features_check() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 19 12:53:31 2023 +0000

    net: check dev->gso_max_size in gso_features_check()
    
    [ Upstream commit 24ab059d2ebd62fdccc43794796f6ffbabe49ebc ]
    
    Some drivers might misbehave if TSO packets get too big.
    
    GVE for instance uses a 16bit field in its TX descriptor,
    and will do bad things if a packet is bigger than 2^16 bytes.
    
    Linux TCP stack honors dev->gso_max_size, but there are
    other ways for too big packets to reach an ndo_start_xmit()
    handler : virtio_net, af_packet, GRO...
    
    Add a generic check in gso_features_check() and fallback
    to GSO when needed.
    
    gso_max_size was added in the blamed commit.
    
    Fixes: 82cc1a7a5687 ("[NET]: Add per-connection option to set max TSO frame size")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20231219125331.4127498-1-edumazet@google.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: check vlan filter feature in vlan_vids_add_by_dev() and vlan_vids_del_by_dev() [+ + +]
Author: Liu Jian <liujian56@huawei.com>
Date:   Sat Dec 16 15:52:18 2023 +0800

    net: check vlan filter feature in vlan_vids_add_by_dev() and vlan_vids_del_by_dev()
    
    [ Upstream commit 01a564bab4876007ce35f312e16797dfe40e4823 ]
    
    I got the below warning trace:
    
    WARNING: CPU: 4 PID: 4056 at net/core/dev.c:11066 unregister_netdevice_many_notify
    CPU: 4 PID: 4056 Comm: ip Not tainted 6.7.0-rc4+ #15
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:unregister_netdevice_many_notify+0x9a4/0x9b0
    Call Trace:
     rtnl_dellink
     rtnetlink_rcv_msg
     netlink_rcv_skb
     netlink_unicast
     netlink_sendmsg
     __sock_sendmsg
     ____sys_sendmsg
     ___sys_sendmsg
     __sys_sendmsg
     do_syscall_64
     entry_SYSCALL_64_after_hwframe
    
    It can be repoduced via:
    
        ip netns add ns1
        ip netns exec ns1 ip link add bond0 type bond mode 0
        ip netns exec ns1 ip link add bond_slave_1 type veth peer veth2
        ip netns exec ns1 ip link set bond_slave_1 master bond0
    [1] ip netns exec ns1 ethtool -K bond0 rx-vlan-filter off
    [2] ip netns exec ns1 ip link add link bond_slave_1 name bond_slave_1.0 type vlan id 0
    [3] ip netns exec ns1 ip link add link bond0 name bond0.0 type vlan id 0
    [4] ip netns exec ns1 ip link set bond_slave_1 nomaster
    [5] ip netns exec ns1 ip link del veth2
        ip netns del ns1
    
    This is all caused by command [1] turning off the rx-vlan-filter function
    of bond0. The reason is the same as commit 01f4fd270870 ("bonding: Fix
    incorrect deletion of ETH_P_8021AD protocol vid from slaves"). Commands
    [2] [3] add the same vid to slave and master respectively, causing
    command [4] to empty slave->vlan_info. The following command [5] triggers
    this problem.
    
    To fix this problem, we should add VLAN_FILTER feature checks in
    vlan_vids_add_by_dev() and vlan_vids_del_by_dev() to prevent incorrect
    addition or deletion of vlan_vid information.
    
    Fixes: 348a1443cc43 ("vlan: introduce functions to do mass addition/deletion of vids by another device")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ks8851: Fix TX stall caused by TX buffer overrun [+ + +]
Author: Ronald Wahl <ronald.wahl@raritan.com>
Date:   Thu Dec 14 19:11:12 2023 +0100

    net: ks8851: Fix TX stall caused by TX buffer overrun
    
    commit 3dc5d44545453de1de9c53cc529cc960a85933da upstream.
    
    There is a bug in the ks8851 Ethernet driver that more data is written
    to the hardware TX buffer than actually available. This is caused by
    wrong accounting of the free TX buffer space.
    
    The driver maintains a tx_space variable that represents the TX buffer
    space that is deemed to be free. The ks8851_start_xmit_spi() function
    adds an SKB to a queue if tx_space is large enough and reduces tx_space
    by the amount of buffer space it will later need in the TX buffer and
    then schedules a work item. If there is not enough space then the TX
    queue is stopped.
    
    The worker function ks8851_tx_work() dequeues all the SKBs and writes
    the data into the hardware TX buffer. The last packet will trigger an
    interrupt after it was send. Here it is assumed that all data fits into
    the TX buffer.
    
    In the interrupt routine (which runs asynchronously because it is a
    threaded interrupt) tx_space is updated with the current value from the
    hardware. Also the TX queue is woken up again.
    
    Now it could happen that after data was sent to the hardware and before
    handling the TX interrupt new data is queued in ks8851_start_xmit_spi()
    when the TX buffer space had still some space left. When the interrupt
    is actually handled tx_space is updated from the hardware but now we
    already have new SKBs queued that have not been written to the hardware
    TX buffer yet. Since tx_space has been overwritten by the value from the
    hardware the space is not accounted for.
    
    Now we have more data queued then buffer space available in the hardware
    and ks8851_tx_work() will potentially overrun the hardware TX buffer. In
    many cases it will still work because often the buffer is written out
    fast enough so that no overrun occurs but for example if the peer
    throttles us via flow control then an overrun may happen.
    
    This can be fixed in different ways. The most simple way would be to set
    tx_space to 0 before writing data to the hardware TX buffer preventing
    the queuing of more SKBs until the TX interrupt has been handled. I have
    chosen a slightly more efficient (and still rather simple) way and
    track the amount of data that is already queued and not yet written to
    the hardware. When new SKBs are to be queued the already queued amount
    of data is honoured when checking free TX buffer space.
    
    I tested this with a setup of two linked KS8851 running iperf3 between
    the two in bidirectional mode. Before the fix I got a stall after some
    minutes. With the fix I saw now issues anymore after hours.
    
    Fixes: 3ba81f3ece3c ("net: Micrel KS8851 SPI network driver")
    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: Ben Dooks <ben.dooks@codethink.co.uk>
    Cc: Tristram Ha <Tristram.Ha@microchip.com>
    Cc: netdev@vger.kernel.org
    Cc: stable@vger.kernel.org # 5.10+
    Signed-off-by: Ronald Wahl <ronald.wahl@raritan.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/20231214181112.76052-1-rwahl@gmx.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: rfkill: gpio: set GPIO direction [+ + +]
Author: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Date:   Thu Dec 7 08:58:36 2023 +0100

    net: rfkill: gpio: set GPIO direction
    
    commit 23484d817082c3005252d8edfc8292c8a1006b5b upstream.
    
    Fix the undefined usage of the GPIO consumer API after retrieving the
    GPIO description with GPIO_ASIS. The API documentation mentions that
    GPIO_ASIS won't set a GPIO direction and requires the user to set a
    direction before using the GPIO.
    
    This can be confirmed on i.MX6 hardware, where rfkill-gpio is no longer
    able to enabled/disable a device, presumably because the GPIO controller
    was never configured for the output direction.
    
    Fixes: b2f750c3a80b ("net: rfkill: gpio: prevent value glitch during probe")
    Cc: stable@vger.kernel.org
    Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
    Link: https://msgid.link/20231207075835.3091694-1-r.czerwinski@pengutronix.de
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: sched: ife: fix potential use-after-free [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 14 11:30:38 2023 +0000

    net: sched: ife: fix potential use-after-free
    
    [ Upstream commit 19391a2ca98baa7b80279306cdf7dd43f81fa595 ]
    
    ife_decode() calls pskb_may_pull() two times, we need to reload
    ifehdr after the second one, or risk use-after-free as reported
    by syzbot:
    
    BUG: KASAN: slab-use-after-free in __ife_tlv_meta_valid net/ife/ife.c:108 [inline]
    BUG: KASAN: slab-use-after-free in ife_tlv_meta_decode+0x1d1/0x210 net/ife/ife.c:131
    Read of size 2 at addr ffff88802d7300a4 by task syz-executor.5/22323
    
    CPU: 0 PID: 22323 Comm: syz-executor.5 Not tainted 6.7.0-rc3-syzkaller-00804-g074ac38d5b95 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/10/2023
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xd9/0x1b0 lib/dump_stack.c:106
    print_address_description mm/kasan/report.c:364 [inline]
    print_report+0xc4/0x620 mm/kasan/report.c:475
    kasan_report+0xda/0x110 mm/kasan/report.c:588
    __ife_tlv_meta_valid net/ife/ife.c:108 [inline]
    ife_tlv_meta_decode+0x1d1/0x210 net/ife/ife.c:131
    tcf_ife_decode net/sched/act_ife.c:739 [inline]
    tcf_ife_act+0x4e3/0x1cd0 net/sched/act_ife.c:879
    tc_act include/net/tc_wrapper.h:221 [inline]
    tcf_action_exec+0x1ac/0x620 net/sched/act_api.c:1079
    tcf_exts_exec include/net/pkt_cls.h:344 [inline]
    mall_classify+0x201/0x310 net/sched/cls_matchall.c:42
    tc_classify include/net/tc_wrapper.h:227 [inline]
    __tcf_classify net/sched/cls_api.c:1703 [inline]
    tcf_classify+0x82f/0x1260 net/sched/cls_api.c:1800
    hfsc_classify net/sched/sch_hfsc.c:1147 [inline]
    hfsc_enqueue+0x315/0x1060 net/sched/sch_hfsc.c:1546
    dev_qdisc_enqueue+0x3f/0x230 net/core/dev.c:3739
    __dev_xmit_skb net/core/dev.c:3828 [inline]
    __dev_queue_xmit+0x1de1/0x3d30 net/core/dev.c:4311
    dev_queue_xmit include/linux/netdevice.h:3165 [inline]
    packet_xmit+0x237/0x350 net/packet/af_packet.c:276
    packet_snd net/packet/af_packet.c:3081 [inline]
    packet_sendmsg+0x24aa/0x5200 net/packet/af_packet.c:3113
    sock_sendmsg_nosec net/socket.c:730 [inline]
    __sock_sendmsg+0xd5/0x180 net/socket.c:745
    __sys_sendto+0x255/0x340 net/socket.c:2190
    __do_sys_sendto net/socket.c:2202 [inline]
    __se_sys_sendto net/socket.c:2198 [inline]
    __x64_sys_sendto+0xe0/0x1b0 net/socket.c:2198
    do_syscall_x64 arch/x86/entry/common.c:51 [inline]
    do_syscall_64+0x40/0x110 arch/x86/entry/common.c:82
    entry_SYSCALL_64_after_hwframe+0x63/0x6b
    RIP: 0033:0x7fe9acc7cae9
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 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:00007fe9ada450c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007fe9acd9bf80 RCX: 00007fe9acc7cae9
    RDX: 000000000000fce0 RSI: 00000000200002c0 RDI: 0000000000000003
    RBP: 00007fe9accc847a R08: 0000000020000140 R09: 0000000000000014
    R10: 0000000000000004 R11: 0000000000000246 R12: 0000000000000000
    R13: 000000000000000b R14: 00007fe9acd9bf80 R15: 00007ffd5427ae78
    </TASK>
    
    Allocated by task 22323:
    kasan_save_stack+0x33/0x50 mm/kasan/common.c:45
    kasan_set_track+0x25/0x30 mm/kasan/common.c:52
    ____kasan_kmalloc mm/kasan/common.c:374 [inline]
    __kasan_kmalloc+0xa2/0xb0 mm/kasan/common.c:383
    kasan_kmalloc include/linux/kasan.h:198 [inline]
    __do_kmalloc_node mm/slab_common.c:1007 [inline]
    __kmalloc_node_track_caller+0x5a/0x90 mm/slab_common.c:1027
    kmalloc_reserve+0xef/0x260 net/core/skbuff.c:582
    __alloc_skb+0x12b/0x330 net/core/skbuff.c:651
    alloc_skb include/linux/skbuff.h:1298 [inline]
    alloc_skb_with_frags+0xe4/0x710 net/core/skbuff.c:6331
    sock_alloc_send_pskb+0x7e4/0x970 net/core/sock.c:2780
    packet_alloc_skb net/packet/af_packet.c:2930 [inline]
    packet_snd net/packet/af_packet.c:3024 [inline]
    packet_sendmsg+0x1e2a/0x5200 net/packet/af_packet.c:3113
    sock_sendmsg_nosec net/socket.c:730 [inline]
    __sock_sendmsg+0xd5/0x180 net/socket.c:745
    __sys_sendto+0x255/0x340 net/socket.c:2190
    __do_sys_sendto net/socket.c:2202 [inline]
    __se_sys_sendto net/socket.c:2198 [inline]
    __x64_sys_sendto+0xe0/0x1b0 net/socket.c:2198
    do_syscall_x64 arch/x86/entry/common.c:51 [inline]
    do_syscall_64+0x40/0x110 arch/x86/entry/common.c:82
    entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    Freed by task 22323:
    kasan_save_stack+0x33/0x50 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:522
    ____kasan_slab_free mm/kasan/common.c:236 [inline]
    ____kasan_slab_free+0x15b/0x1b0 mm/kasan/common.c:200
    kasan_slab_free include/linux/kasan.h:164 [inline]
    slab_free_hook mm/slub.c:1800 [inline]
    slab_free_freelist_hook+0x114/0x1e0 mm/slub.c:1826
    slab_free mm/slub.c:3809 [inline]
    __kmem_cache_free+0xc0/0x180 mm/slub.c:3822
    skb_kfree_head net/core/skbuff.c:950 [inline]
    skb_free_head+0x110/0x1b0 net/core/skbuff.c:962
    pskb_expand_head+0x3c5/0x1170 net/core/skbuff.c:2130
    __pskb_pull_tail+0xe1/0x1830 net/core/skbuff.c:2655
    pskb_may_pull_reason include/linux/skbuff.h:2685 [inline]
    pskb_may_pull include/linux/skbuff.h:2693 [inline]
    ife_decode+0x394/0x4f0 net/ife/ife.c:82
    tcf_ife_decode net/sched/act_ife.c:727 [inline]
    tcf_ife_act+0x43b/0x1cd0 net/sched/act_ife.c:879
    tc_act include/net/tc_wrapper.h:221 [inline]
    tcf_action_exec+0x1ac/0x620 net/sched/act_api.c:1079
    tcf_exts_exec include/net/pkt_cls.h:344 [inline]
    mall_classify+0x201/0x310 net/sched/cls_matchall.c:42
    tc_classify include/net/tc_wrapper.h:227 [inline]
    __tcf_classify net/sched/cls_api.c:1703 [inline]
    tcf_classify+0x82f/0x1260 net/sched/cls_api.c:1800
    hfsc_classify net/sched/sch_hfsc.c:1147 [inline]
    hfsc_enqueue+0x315/0x1060 net/sched/sch_hfsc.c:1546
    dev_qdisc_enqueue+0x3f/0x230 net/core/dev.c:3739
    __dev_xmit_skb net/core/dev.c:3828 [inline]
    __dev_queue_xmit+0x1de1/0x3d30 net/core/dev.c:4311
    dev_queue_xmit include/linux/netdevice.h:3165 [inline]
    packet_xmit+0x237/0x350 net/packet/af_packet.c:276
    packet_snd net/packet/af_packet.c:3081 [inline]
    packet_sendmsg+0x24aa/0x5200 net/packet/af_packet.c:3113
    sock_sendmsg_nosec net/socket.c:730 [inline]
    __sock_sendmsg+0xd5/0x180 net/socket.c:745
    __sys_sendto+0x255/0x340 net/socket.c:2190
    __do_sys_sendto net/socket.c:2202 [inline]
    __se_sys_sendto net/socket.c:2198 [inline]
    __x64_sys_sendto+0xe0/0x1b0 net/socket.c:2198
    do_syscall_x64 arch/x86/entry/common.c:51 [inline]
    do_syscall_64+0x40/0x110 arch/x86/entry/common.c:82
    entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    The buggy address belongs to the object at ffff88802d730000
    which belongs to the cache kmalloc-8k of size 8192
    The buggy address is located 164 bytes inside of
    freed 8192-byte region [ffff88802d730000, ffff88802d732000)
    
    The buggy address belongs to the physical page:
    page:ffffea0000b5cc00 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x2d730
    head:ffffea0000b5cc00 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
    flags: 0xfff00000000840(slab|head|node=0|zone=1|lastcpupid=0x7ff)
    page_type: 0xffffffff()
    raw: 00fff00000000840 ffff888013042280 dead000000000122 0000000000000000
    raw: 0000000000000000 0000000080020002 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    page_owner tracks the page as allocated
    page last allocated via order 3, migratetype Unmovable, gfp_mask 0x1d20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL), pid 22323, tgid 22320 (syz-executor.5), ts 950317230369, free_ts 950233467461
    set_page_owner include/linux/page_owner.h:31 [inline]
    post_alloc_hook+0x2d0/0x350 mm/page_alloc.c:1544
    prep_new_page mm/page_alloc.c:1551 [inline]
    get_page_from_freelist+0xa28/0x3730 mm/page_alloc.c:3319
    __alloc_pages+0x22e/0x2420 mm/page_alloc.c:4575
    alloc_pages_mpol+0x258/0x5f0 mm/mempolicy.c:2133
    alloc_slab_page mm/slub.c:1870 [inline]
    allocate_slab mm/slub.c:2017 [inline]
    new_slab+0x283/0x3c0 mm/slub.c:2070
    ___slab_alloc+0x979/0x1500 mm/slub.c:3223
    __slab_alloc.constprop.0+0x56/0xa0 mm/slub.c:3322
    __slab_alloc_node mm/slub.c:3375 [inline]
    slab_alloc_node mm/slub.c:3468 [inline]
    __kmem_cache_alloc_node+0x131/0x310 mm/slub.c:3517
    __do_kmalloc_node mm/slab_common.c:1006 [inline]
    __kmalloc_node_track_caller+0x4a/0x90 mm/slab_common.c:1027
    kmalloc_reserve+0xef/0x260 net/core/skbuff.c:582
    __alloc_skb+0x12b/0x330 net/core/skbuff.c:651
    alloc_skb include/linux/skbuff.h:1298 [inline]
    alloc_skb_with_frags+0xe4/0x710 net/core/skbuff.c:6331
    sock_alloc_send_pskb+0x7e4/0x970 net/core/sock.c:2780
    packet_alloc_skb net/packet/af_packet.c:2930 [inline]
    packet_snd net/packet/af_packet.c:3024 [inline]
    packet_sendmsg+0x1e2a/0x5200 net/packet/af_packet.c:3113
    sock_sendmsg_nosec net/socket.c:730 [inline]
    __sock_sendmsg+0xd5/0x180 net/socket.c:745
    __sys_sendto+0x255/0x340 net/socket.c:2190
    page last free stack trace:
    reset_page_owner include/linux/page_owner.h:24 [inline]
    free_pages_prepare mm/page_alloc.c:1144 [inline]
    free_unref_page_prepare+0x53c/0xb80 mm/page_alloc.c:2354
    free_unref_page+0x33/0x3b0 mm/page_alloc.c:2494
    __unfreeze_partials+0x226/0x240 mm/slub.c:2655
    qlink_free mm/kasan/quarantine.c:168 [inline]
    qlist_free_all+0x6a/0x170 mm/kasan/quarantine.c:187
    kasan_quarantine_reduce+0x18e/0x1d0 mm/kasan/quarantine.c:294
    __kasan_slab_alloc+0x65/0x90 mm/kasan/common.c:305
    kasan_slab_alloc include/linux/kasan.h:188 [inline]
    slab_post_alloc_hook mm/slab.h:763 [inline]
    slab_alloc_node mm/slub.c:3478 [inline]
    slab_alloc mm/slub.c:3486 [inline]
    __kmem_cache_alloc_lru mm/slub.c:3493 [inline]
    kmem_cache_alloc_lru+0x219/0x6f0 mm/slub.c:3509
    alloc_inode_sb include/linux/fs.h:2937 [inline]
    ext4_alloc_inode+0x28/0x650 fs/ext4/super.c:1408
    alloc_inode+0x5d/0x220 fs/inode.c:261
    new_inode_pseudo fs/inode.c:1006 [inline]
    new_inode+0x22/0x260 fs/inode.c:1032
    __ext4_new_inode+0x333/0x5200 fs/ext4/ialloc.c:958
    ext4_symlink+0x5d7/0xa20 fs/ext4/namei.c:3398
    vfs_symlink fs/namei.c:4464 [inline]
    vfs_symlink+0x3e5/0x620 fs/namei.c:4448
    do_symlinkat+0x25f/0x310 fs/namei.c:4490
    __do_sys_symlinkat fs/namei.c:4506 [inline]
    __se_sys_symlinkat fs/namei.c:4503 [inline]
    __x64_sys_symlinkat+0x97/0xc0 fs/namei.c:4503
    do_syscall_x64 arch/x86/entry/common.c:51 [inline]
    do_syscall_64+0x40/0x110 arch/x86/entry/common.c:82
    
    Fixes: d57493d6d1be ("net: sched: ife: check on metadata length")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Alexander Aring <aahringo@redhat.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: warn if gso_type isn't set for a GSO SKB [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sat Nov 21 00:22:20 2020 +0100

    net: warn if gso_type isn't set for a GSO SKB
    
    [ Upstream commit 1d155dfdf50efc2b0793bce93c06d1a5b23d0877 ]
    
    In bug report [0] a warning in r8169 driver was reported that was
    caused by an invalid GSO SKB (gso_type was 0). See [1] for a discussion
    about this issue. Still the origin of the invalid GSO SKB isn't clear.
    
    It shouldn't be a network drivers task to check for invalid GSO SKB's.
    Also, even if issue [0] can be fixed, we can't be sure that a
    similar issue doesn't pop up again at another place.
    Therefore let gso_features_check() check for such invalid GSO SKB's.
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=209423
    [1] https://www.spinics.net/lists/netdev/msg690794.html
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/97c78d21-7f0b-d843-df17-3589f224d2cf@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 24ab059d2ebd ("net: check dev->gso_max_size in gso_features_check()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nf_tables: skip set commit for deleted/destroyed sets [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Dec 19 19:44:49 2023 +0100

    netfilter: nf_tables: skip set commit for deleted/destroyed sets
    
    commit 7315dc1e122c85ffdfc8defffbb8f8b616c2eb1a upstream.
    
    NFT_MSG_DELSET deactivates all elements in the set, skip
    set->ops->commit() to avoid the unnecessary clone (for the pipapo case)
    as well as the sync GC cycle, which could deactivate again expired
    elements in such set.
    
    Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
    Reported-by: Kevin Rich <kevinrich1337@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pinctrl: at91-pio4: use dedicated lock class for IRQ [+ + +]
Author: Alexis Lothoré <alexis.lothore@bootlin.com>
Date:   Fri Dec 15 22:34:24 2023 +0100

    pinctrl: at91-pio4: use dedicated lock class for IRQ
    
    [ Upstream commit 14694179e561b5f2f7e56a0f590e2cb49a9cc7ab ]
    
    Trying to suspend to RAM on SAMA5D27 EVK leads to the following lockdep
    warning:
    
     ============================================
     WARNING: possible recursive locking detected
     6.7.0-rc5-wt+ #532 Not tainted
     --------------------------------------------
     sh/92 is trying to acquire lock:
     c3cf306c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100
    
     but task is already holding lock:
     c3d7c46c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&irq_desc_lock_class);
       lock(&irq_desc_lock_class);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
     6 locks held by sh/92:
      #0: c3aa0258 (sb_writers#6){.+.+}-{0:0}, at: ksys_write+0xd8/0x178
      #1: c4c2df44 (&of->mutex){+.+.}-{3:3}, at: kernfs_fop_write_iter+0x138/0x284
      #2: c32684a0 (kn->active){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x148/0x284
      #3: c232b6d4 (system_transition_mutex){+.+.}-{3:3}, at: pm_suspend+0x13c/0x4e8
      #4: c387b088 (&dev->mutex){....}-{3:3}, at: __device_suspend+0x1e8/0x91c
      #5: c3d7c46c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100
    
     stack backtrace:
     CPU: 0 PID: 92 Comm: sh Not tainted 6.7.0-rc5-wt+ #532
     Hardware name: Atmel SAMA5
      unwind_backtrace from show_stack+0x18/0x1c
      show_stack from dump_stack_lvl+0x34/0x48
      dump_stack_lvl from __lock_acquire+0x19ec/0x3a0c
      __lock_acquire from lock_acquire.part.0+0x124/0x2d0
      lock_acquire.part.0 from _raw_spin_lock_irqsave+0x5c/0x78
      _raw_spin_lock_irqsave from __irq_get_desc_lock+0xe8/0x100
      __irq_get_desc_lock from irq_set_irq_wake+0xa8/0x204
      irq_set_irq_wake from atmel_gpio_irq_set_wake+0x58/0xb4
      atmel_gpio_irq_set_wake from irq_set_irq_wake+0x100/0x204
      irq_set_irq_wake from gpio_keys_suspend+0xec/0x2b8
      gpio_keys_suspend from dpm_run_callback+0xe4/0x248
      dpm_run_callback from __device_suspend+0x234/0x91c
      __device_suspend from dpm_suspend+0x224/0x43c
      dpm_suspend from dpm_suspend_start+0x9c/0xa8
      dpm_suspend_start from suspend_devices_and_enter+0x1e0/0xa84
      suspend_devices_and_enter from pm_suspend+0x460/0x4e8
      pm_suspend from state_store+0x78/0xe4
      state_store from kernfs_fop_write_iter+0x1a0/0x284
      kernfs_fop_write_iter from vfs_write+0x38c/0x6f4
      vfs_write from ksys_write+0xd8/0x178
      ksys_write from ret_fast_syscall+0x0/0x1c
     Exception stack(0xc52b3fa8 to 0xc52b3ff0)
     3fa0:                   00000004 005a0ae8 00000001 005a0ae8 00000004 00000001
     3fc0: 00000004 005a0ae8 00000001 00000004 00000004 b6c616c0 00000020 0059d190
     3fe0: 00000004 b6c61678 aec5a041 aebf1a26
    
    This warning is raised because pinctrl-at91-pio4 uses chained IRQ. Whenever
    a wake up source configures an IRQ through irq_set_irq_wake, it will
    lock the corresponding IRQ desc, and then call irq_set_irq_wake on "parent"
    IRQ which will do the same on its own IRQ desc, but since those two locks
    share the same class, lockdep reports this as an issue.
    
    Fix lockdep false positive by setting a different class for parent and
    children IRQ
    
    Fixes: 776180848b57 ("pinctrl: introduce driver for Atmel PIO4 controller")
    Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
    Link: https://lore.kernel.org/r/20231215-lockdep_warning-v1-1-8137b2510ed5@bootlin.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
reset: Fix crash when freeing non-existent optional resets [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Nov 29 17:55:33 2023 +0100

    reset: Fix crash when freeing non-existent optional resets
    
    [ Upstream commit 4a6756f56bcf8e64c87144a626ce53aea4899c0e ]
    
    When obtaining one or more optional resets, non-existent resets are
    stored as NULL pointers, and all related error and cleanup paths need to
    take this into account.
    
    Currently only reset_control_put() and reset_control_bulk_put()
    get this right.  All of __reset_control_bulk_get(),
    of_reset_control_array_get(), and reset_control_array_put() lack the
    proper checking, causing NULL pointer dereferences on failure or
    release.
    
    Fix this by moving the existing check from reset_control_bulk_put() to
    __reset_control_put_internal(), so it applies to all callers.
    The double check in reset_control_put() doesn't hurt.
    
    Fixes: 17c82e206d2a3cd8 ("reset: Add APIs to manage array of resets")
    Fixes: 48d71395896d54ee ("reset: Add reset_control_bulk API")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/2440edae7ca8534628cdbaf559ded288f2998178.1701276806.git.geert+renesas@glider.be
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "MIPS: Loongson64: Enable DMA noncoherent support" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 3 11:38:58 2024 +0100

    Revert "MIPS: Loongson64: Enable DMA noncoherent support"
    
    This reverts commit 3ee7e2faef87594228eb2622f8c25c0495ea50a1 which is
    commit edc0378eee00200a5bedf1bb9f00ad390e0d1bd4 upstream.
    
    There are reports of this causing build issues, so revert it from the
    5.10.y tree for now.
    
    Reported-by: Salvatore Bonaccorso <carnil@debian.org>
    Link: https://lore.kernel.org/r/ZZE1X8m5PXJExffG@eldamar.lan
    Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "net/mlx5e: fix double free of encap_header" [+ + +]
Author: Vlad Buslov <vladbu@nvidia.com>
Date:   Tue Nov 21 13:52:28 2023 +0100

    Revert "net/mlx5e: fix double free of encap_header"
    
    [ Upstream commit 5d089684dc434a31e08d32f0530066d0025c52e4 ]
    
    This reverts commit 6f9b1a0731662648949a1c0587f6acb3b7f8acf1.
    
    This patch is causing a null ptr issue, the proper fix is in the next
    patch.
    
    Fixes: 6f9b1a073166 ("net/mlx5e: fix double free of encap_header")
    Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ring-buffer: Fix wake ups when buffer_percent is set to 100 [+ + +]
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Tue Dec 26 12:59:02 2023 -0500

    ring-buffer: Fix wake ups when buffer_percent is set to 100
    
    commit 623b1f896fa8a669a277ee5a258307a16c7377a3 upstream.
    
    The tracefs file "buffer_percent" is to allow user space to set a
    water-mark on how much of the tracing ring buffer needs to be filled in
    order to wake up a blocked reader.
    
     0 - is to wait until any data is in the buffer
     1 - is to wait for 1% of the sub buffers to be filled
     50 - would be half of the sub buffers are filled with data
     100 - is not to wake the waiter until the ring buffer is completely full
    
    Unfortunately the test for being full was:
    
            dirty = ring_buffer_nr_dirty_pages(buffer, cpu);
            return (dirty * 100) > (full * nr_pages);
    
    Where "full" is the value for "buffer_percent".
    
    There is two issues with the above when full == 100.
    
    1. dirty * 100 > 100 * nr_pages will never be true
       That is, the above is basically saying that if the user sets
       buffer_percent to 100, more pages need to be dirty than exist in the
       ring buffer!
    
    2. The page that the writer is on is never considered dirty, as dirty
       pages are only those that are full. When the writer goes to a new
       sub-buffer, it clears the contents of that sub-buffer.
    
    That is, even if the check was ">=" it would still not be equal as the
    most pages that can be considered "dirty" is nr_pages - 1.
    
    To fix this, add one to dirty and use ">=" in the compare.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231226125902.4a057f1d@gandalf.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Fixes: 03329f9939781 ("tracing: Add tracefs file buffer_percentage")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/vx: fix save/restore of fpu kernel context [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Fri Dec 8 15:03:15 2023 +0100

    s390/vx: fix save/restore of fpu kernel context
    
    [ Upstream commit e6b2dab41888332bf83f592131e7ea07756770a4 ]
    
    The KERNEL_FPR mask only contains a flag for the first eight vector
    registers. However floating point registers overlay parts of the first
    sixteen vector registers.
    
    This could lead to vector register corruption if a kernel fpu context uses
    any of the vector registers 8 to 15 and is interrupted or calls a
    KERNEL_FPR context. If that context uses also vector registers 8 to 15,
    their contents will be corrupted on return.
    
    Luckily this is currently not a real bug, since the kernel has only one
    KERNEL_FPR user with s390_adjust_jiffies() and it is only using floating
    point registers 0 to 2.
    
    Fix this by using the correct bits for KERNEL_FPR.
    
    Fixes: 7f79695cc1b6 ("s390/fpu: improve kernel_fpu_[begin|end]")
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: bnx2fc: Fix skb double free in bnx2fc_rcv() [+ + +]
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Nov 14 11:06:26 2022 +0000

    scsi: bnx2fc: Fix skb double free in bnx2fc_rcv()
    
    [ Upstream commit 08c94d80b2da481652fb633e79cbc41e9e326a91 ]
    
    skb_share_check() already drops the reference to the skb when returning
    NULL. Using kfree_skb() in the error handling path leads to an skb double
    free.
    
    Fix this by removing the variable tmp_skb, and return directly when
    skb_share_check() returns NULL.
    
    Fixes: 01a4cc4d0cd6 ("bnx2fc: do not add shared skbs to the fcoe_rx_list")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20221114110626.526643-1-weiyongjun@huaweicloud.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Add scsi_prot_ref_tag() helper [+ + +]
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Tue Jun 8 23:39:15 2021 -0400

    scsi: core: Add scsi_prot_ref_tag() helper
    
    [ Upstream commit 7ba46799d34695534666a3f71a2be10ea85ece6c ]
    
    We are about to remove the request pointer from struct scsi_cmnd and that
    will complicate getting to the ref_tag via t10_pi_ref_tag() in the various
    drivers. Introduce a helper function to retrieve the reference tag so
    drivers will not have to worry about the details.
    
    Link: https://lore.kernel.org/r/20210609033929.3815-2-martin.petersen@oracle.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Message-Id: <20210609033929.3815-2-martin.petersen@oracle.com>
    Stable-dep-of: 066c5b46b6ea ("scsi: core: Always send batch on reset or error handling command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Always send batch on reset or error handling command [+ + +]
Author: Alexander Atanasov <alexander.atanasov@virtuozzo.com>
Date:   Fri Dec 15 14:10:08 2023 +0200

    scsi: core: Always send batch on reset or error handling command
    
    [ Upstream commit 066c5b46b6eaf2f13f80c19500dbb3b84baabb33 ]
    
    In commit 8930a6c20791 ("scsi: core: add support for request batching") the
    block layer bd->last flag was mapped to SCMD_LAST and used as an indicator
    to send the batch for the drivers that implement this feature. However, the
    error handling code was not updated accordingly.
    
    scsi_send_eh_cmnd() is used to send error handling commands and request
    sense. The problem is that request sense comes as a single command that
    gets into the batch queue and times out. As a result the device goes
    offline after several failed resets. This was observed on virtio_scsi
    during a device resize operation.
    
    [  496.316946] sd 0:0:4:0: [sdd] tag#117 scsi_eh_0: requesting sense
    [  506.786356] sd 0:0:4:0: [sdd] tag#117 scsi_send_eh_cmnd timeleft: 0
    [  506.787981] sd 0:0:4:0: [sdd] tag#117 abort
    
    To fix this always set SCMD_LAST flag in scsi_send_eh_cmnd() and
    scsi_reset_ioctl().
    
    Fixes: 8930a6c20791 ("scsi: core: add support for request batching")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Alexander Atanasov <alexander.atanasov@virtuozzo.com>
    Link: https://lore.kernel.org/r/20231215121008.2881653-1-alexander.atanasov@virtuozzo.com
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Introduce scsi_get_sector() [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Jun 8 23:39:24 2021 -0400

    scsi: core: Introduce scsi_get_sector()
    
    [ Upstream commit f0f214fe8cd32224267ebea93817b8c32074623d ]
    
    Since scsi_get_lba() returns a sector_t value instead of the LBA, the name
    of that function is confusing. Introduce an identical function
    scsi_get_sector().
    
    Link: https://lore.kernel.org/r/20210513223757.3938-2-bvanassche@acm.org
    Link: https://lore.kernel.org/r/20210609033929.3815-11-martin.petersen@oracle.com
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Message-Id: <20210609033929.3815-11-martin.petersen@oracle.com>
    Stable-dep-of: 066c5b46b6ea ("scsi: core: Always send batch on reset or error handling command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Make scsi_get_lba() return the LBA [+ + +]
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Tue Jun 8 23:39:26 2021 -0400

    scsi: core: Make scsi_get_lba() return the LBA
    
    [ Upstream commit d2c945f01d233085fedc9e3cf7ec180eaa2b7a85 ]
    
    scsi_get_lba() confusingly returned the block layer sector number expressed
    in units of 512 bytes. Now that we have a more aptly named
    scsi_get_sector() function, make scsi_get_lba() return the actual LBA.
    
    Link: https://lore.kernel.org/r/20210609033929.3815-13-martin.petersen@oracle.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Message-Id: <20210609033929.3815-13-martin.petersen@oracle.com>
    Stable-dep-of: 066c5b46b6ea ("scsi: core: Always send batch on reset or error handling command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Use a structure member to track the SCSI command submitter [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Oct 7 13:27:56 2021 -0700

    scsi: core: Use a structure member to track the SCSI command submitter
    
    [ Upstream commit bf23e619039d360d503b7282d030daf2277a5d47 ]
    
    Conditional statements are faster than indirect calls. Use a structure
    member to track the SCSI command submitter such that later patches can call
    scsi_done(scmd) instead of scmd->scsi_done(scmd).
    
    The asymmetric behavior that scsi_send_eh_cmnd() sets the submission
    context to the SCSI error handler and that it does not restore the
    submission context to the SCSI core is retained.
    
    Link: https://lore.kernel.org/r/20211007202923.2174984-2-bvanassche@acm.org
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 066c5b46b6ea ("scsi: core: Always send batch on reset or error handling command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: core: Use scsi_cmd_to_rq() instead of scsi_cmnd.request [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Aug 9 16:03:05 2021 -0700

    scsi: core: Use scsi_cmd_to_rq() instead of scsi_cmnd.request
    
    [ Upstream commit aa8e25e5006aac52c943c84e9056ab488630ee19 ]
    
    Prepare for removal of the request pointer by using scsi_cmd_to_rq()
    instead. Cast away constness where necessary when passing a SCSI command
    pointer to scsi_cmd_to_rq(). This patch does not change any functionality.
    
    Link: https://lore.kernel.org/r/20210809230355.8186-3-bvanassche@acm.org
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 066c5b46b6ea ("scsi: core: Always send batch on reset or error handling command")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb: client: fix NULL deref in asn1_ber_decoder() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Mon Dec 11 10:26:42 2023 -0300

    smb: client: fix NULL deref in asn1_ber_decoder()
    
    [ Upstream commit 90d025c2e953c11974e76637977c473200593a46 ]
    
    If server replied SMB2_NEGOTIATE with a zero SecurityBufferOffset,
    smb2_get_data_area() sets @len to non-zero but return NULL, so
    decode_negTokeninit() ends up being called with a NULL @security_blob:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000000
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 2 PID: 871 Comm: mount.cifs Not tainted 6.7.0-rc4 #2
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      RIP: 0010:asn1_ber_decoder+0x173/0xc80
      Code: 01 4c 39 2c 24 75 09 45 84 c9 0f 85 2f 03 00 00 48 8b 14 24 4c 29 ea 48 83 fa 01 0f 86 1e 07 00 00 48 8b 74 24 28 4d 8d 5d 01 <42> 0f b6 3c 2e 89 fa 40 88 7c 24 5c f7 d2 83 e2 1f 0f 84 3d 07 00
      RSP: 0018:ffffc9000063f950 EFLAGS: 00010202
      RAX: 0000000000000002 RBX: 0000000000000000 RCX: 000000000000004a
      RDX: 000000000000004a RSI: 0000000000000000 RDI: 0000000000000000
      RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000002 R11: 0000000000000001 R12: 0000000000000000
      R13: 0000000000000000 R14: 000000000000004d R15: 0000000000000000
      FS:  00007fce52b0fbc0(0000) GS:ffff88806ba00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 000000001ae64000 CR4: 0000000000750ef0
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? __die+0x23/0x70
       ? page_fault_oops+0x181/0x480
       ? __stack_depot_save+0x1e6/0x480
       ? exc_page_fault+0x6f/0x1c0
       ? asm_exc_page_fault+0x26/0x30
       ? asn1_ber_decoder+0x173/0xc80
       ? check_object+0x40/0x340
       decode_negTokenInit+0x1e/0x30 [cifs]
       SMB2_negotiate+0xc99/0x17c0 [cifs]
       ? smb2_negotiate+0x46/0x60 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       smb2_negotiate+0x46/0x60 [cifs]
       cifs_negotiate_protocol+0xae/0x130 [cifs]
       cifs_get_smb_ses+0x517/0x1040 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? queue_delayed_work_on+0x5d/0x90
       cifs_mount_get_session+0x78/0x200 [cifs]
       dfs_mount_share+0x13a/0x9f0 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? lock_acquire+0xbf/0x2b0
       ? find_nls+0x16/0x80
       ? srso_alias_return_thunk+0x5/0xfbef5
       cifs_mount+0x7e/0x350 [cifs]
       cifs_smb3_do_mount+0x128/0x780 [cifs]
       smb3_get_tree+0xd9/0x290 [cifs]
       vfs_get_tree+0x2c/0x100
       ? capable+0x37/0x70
       path_mount+0x2d7/0xb80
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? _raw_spin_unlock_irqrestore+0x44/0x60
       __x64_sys_mount+0x11a/0x150
       do_syscall_64+0x47/0xf0
       entry_SYSCALL_64_after_hwframe+0x6f/0x77
      RIP: 0033:0x7fce52c2ab1e
    
    Fix this by setting @len to zero when @off == 0 so callers won't
    attempt to dereference non-existing data areas.
    
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: fix OOB in SMB2_query_info_init() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Wed Dec 13 12:25:57 2023 -0300

    smb: client: fix OOB in SMB2_query_info_init()
    
    [ Upstream commit 33eae65c6f49770fec7a662935d4eb4a6406d24b ]
    
    A small CIFS buffer (448 bytes) isn't big enough to hold
    SMB2_QUERY_INFO request along with user's input data from
    CIFS_QUERY_INFO ioctl.  That is, if the user passed an input buffer >
    344 bytes, the client will memcpy() off the end of @req->Buffer in
    SMB2_query_info_init() thus causing the following KASAN splat:
    
      BUG: KASAN: slab-out-of-bounds in SMB2_query_info_init+0x242/0x250 [cifs]
      Write of size 1023 at addr ffff88801308c5a8 by task a.out/1240
    
      CPU: 1 PID: 1240 Comm: a.out Not tainted 6.7.0-rc4 #5
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
      rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x4a/0x80
       print_report+0xcf/0x650
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? __phys_addr+0x46/0x90
       kasan_report+0xd8/0x110
       ? SMB2_query_info_init+0x242/0x250 [cifs]
       ? SMB2_query_info_init+0x242/0x250 [cifs]
       kasan_check_range+0x105/0x1b0
       __asan_memcpy+0x3c/0x60
       SMB2_query_info_init+0x242/0x250 [cifs]
       ? __pfx_SMB2_query_info_init+0x10/0x10 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? smb_rqst_len+0xa6/0xc0 [cifs]
       smb2_ioctl_query_info+0x4f4/0x9a0 [cifs]
       ? __pfx_smb2_ioctl_query_info+0x10/0x10 [cifs]
       ? __pfx_cifsConvertToUTF16+0x10/0x10 [cifs]
       ? kasan_set_track+0x25/0x30
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? __kasan_kmalloc+0x8f/0xa0
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? cifs_strndup_to_utf16+0x12d/0x1a0 [cifs]
       ? __build_path_from_dentry_optional_prefix+0x19d/0x2d0 [cifs]
       ? __pfx_smb2_ioctl_query_info+0x10/0x10 [cifs]
       cifs_ioctl+0x11c7/0x1de0 [cifs]
       ? __pfx_cifs_ioctl+0x10/0x10 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? rcu_is_watching+0x23/0x50
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? __rseq_handle_notify_resume+0x6cd/0x850
       ? __pfx___schedule+0x10/0x10
       ? blkcg_iostat_update+0x250/0x290
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? ksys_write+0xe9/0x170
       __x64_sys_ioctl+0xc9/0x100
       do_syscall_64+0x47/0xf0
       entry_SYSCALL_64_after_hwframe+0x6f/0x77
      RIP: 0033:0x7f893dde49cf
      Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48
      89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89>
      c2 3d 00 f0 ff ff 77 18 48 8b 44 24 18 64 48 2b 04 25 28 00 00
      RSP: 002b:00007ffc03ff4160 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00007ffc03ff4378 RCX: 00007f893dde49cf
      RDX: 00007ffc03ff41d0 RSI: 00000000c018cf07 RDI: 0000000000000003
      RBP: 00007ffc03ff4260 R08: 0000000000000410 R09: 0000000000000001
      R10: 00007f893dce7300 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007ffc03ff4388 R14: 00007f893df15000 R15: 0000000000406de0
       </TASK>
    
    Fix this by increasing size of SMB2_QUERY_INFO request buffers and
    validating input length to prevent other callers from overflowing @req
    in SMB2_query_info_init() as well.
    
    Fixes: f5b05d622a3e ("cifs: add IOCTL for QUERY_INFO passthrough to userspace")
    Cc: stable@vger.kernel.org
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Signed-off-by: Paulo Alcantara <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: fix OOB in smb2_query_reparse_point() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Mon Dec 11 10:26:43 2023 -0300

    smb: client: fix OOB in smb2_query_reparse_point()
    
    [ Upstream commit 3a42709fa909e22b0be4bb1e2795aa04ada732a3 ]
    
    Validate @ioctl_rsp->OutputOffset and @ioctl_rsp->OutputCount so that
    their sum does not wrap to a number that is smaller than @reparse_buf
    and we end up with a wild pointer as follows:
    
      BUG: unable to handle page fault for address: ffff88809c5cd45f
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 4a01067 P4D 4a01067 PUD 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 2 PID: 1260 Comm: mount.cifs Not tainted 6.7.0-rc4 #2
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
      rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      RIP: 0010:smb2_query_reparse_point+0x3e0/0x4c0 [cifs]
      Code: ff ff e8 f3 51 fe ff 41 89 c6 58 5a 45 85 f6 0f 85 14 fe ff ff
      49 8b 57 48 8b 42 60 44 8b 42 64 42 8d 0c 00 49 39 4f 50 72 40 <8b>
      04 02 48 8b 9d f0 fe ff ff 49 8b 57 50 89 03 48 8b 9d e8 fe ff
      RSP: 0018:ffffc90000347a90 EFLAGS: 00010212
      RAX: 000000008000001f RBX: ffff88800ae11000 RCX: 00000000000000ec
      RDX: ffff88801c5cd440 RSI: 0000000000000000 RDI: ffffffff82004aa4
      RBP: ffffc90000347bb0 R08: 00000000800000cd R09: 0000000000000001
      R10: 0000000000000000 R11: 0000000000000024 R12: ffff8880114d4100
      R13: ffff8880114d4198 R14: 0000000000000000 R15: ffff8880114d4000
      FS: 00007f02c07babc0(0000) GS:ffff88806ba00000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffff88809c5cd45f CR3: 0000000011750000 CR4: 0000000000750ef0
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? __die+0x23/0x70
       ? page_fault_oops+0x181/0x480
       ? search_module_extables+0x19/0x60
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? exc_page_fault+0x1b6/0x1c0
       ? asm_exc_page_fault+0x26/0x30
       ? _raw_spin_unlock_irqrestore+0x44/0x60
       ? smb2_query_reparse_point+0x3e0/0x4c0 [cifs]
       cifs_get_fattr+0x16e/0xa50 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? lock_acquire+0xbf/0x2b0
       cifs_root_iget+0x163/0x5f0 [cifs]
       cifs_smb3_do_mount+0x5bd/0x780 [cifs]
       smb3_get_tree+0xd9/0x290 [cifs]
       vfs_get_tree+0x2c/0x100
       ? capable+0x37/0x70
       path_mount+0x2d7/0xb80
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? _raw_spin_unlock_irqrestore+0x44/0x60
       __x64_sys_mount+0x11a/0x150
       do_syscall_64+0x47/0xf0
       entry_SYSCALL_64_after_hwframe+0x6f/0x77
      RIP: 0033:0x7f02c08d5b1e
    
    Fixes: 2e4564b31b64 ("smb3: add support for stat of WSL reparse points for special file types")
    Cc: stable@vger.kernel.org
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: fix OOB in smbCalcSize() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Fri Dec 15 19:59:14 2023 -0300

    smb: client: fix OOB in smbCalcSize()
    
    [ Upstream commit b35858b3786ddbb56e1c35138ba25d6adf8d0bef ]
    
    Validate @smb->WordCount to avoid reading off the end of @smb and thus
    causing the following KASAN splat:
    
      BUG: KASAN: slab-out-of-bounds in smbCalcSize+0x32/0x40 [cifs]
      Read of size 2 at addr ffff88801c024ec5 by task cifsd/1328
    
      CPU: 1 PID: 1328 Comm: cifsd Not tainted 6.7.0-rc5 #9
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
      rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x4a/0x80
       print_report+0xcf/0x650
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? __phys_addr+0x46/0x90
       kasan_report+0xd8/0x110
       ? smbCalcSize+0x32/0x40 [cifs]
       ? smbCalcSize+0x32/0x40 [cifs]
       kasan_check_range+0x105/0x1b0
       smbCalcSize+0x32/0x40 [cifs]
       checkSMB+0x162/0x370 [cifs]
       ? __pfx_checkSMB+0x10/0x10 [cifs]
       cifs_handle_standard+0xbc/0x2f0 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       cifs_demultiplex_thread+0xed1/0x1360 [cifs]
       ? __pfx_cifs_demultiplex_thread+0x10/0x10 [cifs]
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? lockdep_hardirqs_on_prepare+0x136/0x210
       ? __pfx_lock_release+0x10/0x10
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? mark_held_locks+0x1a/0x90
       ? lockdep_hardirqs_on_prepare+0x136/0x210
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? srso_alias_return_thunk+0x5/0xfbef5
       ? __kthread_parkme+0xce/0xf0
       ? __pfx_cifs_demultiplex_thread+0x10/0x10 [cifs]
       kthread+0x18d/0x1d0
       ? kthread+0xdb/0x1d0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x34/0x60
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1b/0x30
       </TASK>
    
    This fixes CVE-2023-6606.
    
    Reported-by: j51569436@gmail.com
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218218
    Cc: stable@vger.kernel.org
    Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: atmel: Fix CS and initialization bug [+ + +]
Author: Dan Sneddon <dan.sneddon@microchip.com>
Date:   Tue Jun 29 12:22:18 2021 -0700

    spi: atmel: Fix CS and initialization bug
    
    [ Upstream commit 69e1818ad27bae167eeaaf6829d4a08900ef5153 ]
    
    Commit 5fa5e6dec762 ("spi: atmel: Switch to transfer_one transfer
    method") switched to using transfer_one and set_cs.  The
    core doesn't call set_cs when the chip select lines are gpios.  Add the
    SPI_MASTER_GPIO_SS flag to the driver to ensure the calls to set_cs
    happen since the driver programs configuration registers there.
    
    Fixes: 5fa5e6dec762 ("spi: atmel: Switch to transfer_one transfer method")
    
    Signed-off-by: Dan Sneddon <dan.sneddon@microchip.com>
    Link: https://lore.kernel.org/r/20210629192218.32125-1-dan.sneddon@microchip.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: fc70d643a2f6 ("spi: atmel: Fix clock issue when using devices with different polarities")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: atmel: Fix PDC transfer setup bug [+ + +]
Author: Ville Baillie <villeb@bytesnap.co.uk>
Date:   Tue Sep 21 07:21:32 2021 +0000

    spi: atmel: Fix PDC transfer setup bug
    
    commit 75e33c55ae8fb4a177fe07c284665e1d61b02560 upstream.
    
    atmel_spi_dma_map_xfer to never be called in PDC mode. This causes the
    driver to silently fail.
    
    This patch changes the conditional to match the behaviour of the
    previous commit before the refactor.
    
    Fixes: 5fa5e6dec762 ("spi: atmel: Switch to transfer_one transfer method")
    Signed-off-by: Ville Baillie <villeb@bytesnap.co.uk>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20210921072132.21831-1-villeb@bytesnap.co.uk
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

spi: atmel: Switch to transfer_one transfer method [+ + +]
Author: Dan Sneddon <dan.sneddon@microchip.com>
Date:   Wed Jun 2 09:08:14 2021 -0700

    spi: atmel: Switch to transfer_one transfer method
    
    [ Upstream commit 5fa5e6dec762305a783e918a90a05369fc10e346 ]
    
    Switch from using our own transfer_one_message routine to using the one
    provided by the SPI core.
    
    Signed-off-by: Dan Sneddon <dan.sneddon@microchip.com>
    Link: https://lore.kernel.org/r/20210602160816.4890-1-dan.sneddon@microchip.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: fc70d643a2f6 ("spi: atmel: Fix clock issue when using devices with different polarities")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing / synthetic: Disable events after testing in synth_event_gen_test_init() [+ + +]
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Wed Dec 20 11:15:25 2023 -0500

    tracing / synthetic: Disable events after testing in synth_event_gen_test_init()
    
    commit 88b30c7f5d27e1594d70dc2bd7199b18f2b57fa9 upstream.
    
    The synth_event_gen_test module can be built in, if someone wants to run
    the tests at boot up and not have to load them.
    
    The synth_event_gen_test_init() function creates and enables the synthetic
    events and runs its tests.
    
    The synth_event_gen_test_exit() disables the events it created and
    destroys the events.
    
    If the module is builtin, the events are never disabled. The issue is, the
    events should be disable after the tests are run. This could be an issue
    if the rest of the boot up tests are enabled, as they expect the events to
    be in a known state before testing. That known state happens to be
    disabled.
    
    When CONFIG_SYNTH_EVENT_GEN_TEST=y and CONFIG_EVENT_TRACE_STARTUP_TEST=y
    a warning will trigger:
    
     Running tests on trace events:
     Testing event create_synth_test:
     Enabled event during self test!
     ------------[ cut here ]------------
     WARNING: CPU: 2 PID: 1 at kernel/trace/trace_events.c:4150 event_trace_self_tests+0x1c2/0x480
     Modules linked in:
     CPU: 2 PID: 1 Comm: swapper/0 Not tainted 6.7.0-rc2-test-00031-gb803d7c664d5-dirty #276
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
     RIP: 0010:event_trace_self_tests+0x1c2/0x480
     Code: bb e8 a2 ab 5d fc 48 8d 7b 48 e8 f9 3d 99 fc 48 8b 73 48 40 f6 c6 01 0f 84 d6 fe ff ff 48 c7 c7 20 b6 ad bb e8 7f ab 5d fc 90 <0f> 0b 90 48 89 df e8 d3 3d 99 fc 48 8b 1b 4c 39 f3 0f 85 2c ff ff
     RSP: 0000:ffffc9000001fdc0 EFLAGS: 00010246
     RAX: 0000000000000029 RBX: ffff88810399ca80 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: ffffffffb9f19478 RDI: ffff88823c734e64
     RBP: ffff88810399f300 R08: 0000000000000000 R09: fffffbfff79eb32a
     R10: ffffffffbcf59957 R11: 0000000000000001 R12: ffff888104068090
     R13: ffffffffbc89f0a0 R14: ffffffffbc8a0f08 R15: 0000000000000078
     FS:  0000000000000000(0000) GS:ffff88823c700000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000000 CR3: 00000001f6282001 CR4: 0000000000170ef0
     Call Trace:
      <TASK>
      ? __warn+0xa5/0x200
      ? event_trace_self_tests+0x1c2/0x480
      ? report_bug+0x1f6/0x220
      ? handle_bug+0x6f/0x90
      ? exc_invalid_op+0x17/0x50
      ? asm_exc_invalid_op+0x1a/0x20
      ? tracer_preempt_on+0x78/0x1c0
      ? event_trace_self_tests+0x1c2/0x480
      ? __pfx_event_trace_self_tests_init+0x10/0x10
      event_trace_self_tests_init+0x27/0xe0
      do_one_initcall+0xd6/0x3c0
      ? __pfx_do_one_initcall+0x10/0x10
      ? kasan_set_track+0x25/0x30
      ? rcu_is_watching+0x38/0x60
      kernel_init_freeable+0x324/0x450
      ? __pfx_kernel_init+0x10/0x10
      kernel_init+0x1f/0x1e0
      ? _raw_spin_unlock_irq+0x33/0x50
      ret_from_fork+0x34/0x60
      ? __pfx_kernel_init+0x10/0x10
      ret_from_fork_asm+0x1b/0x30
      </TASK>
    
    This is because the synth_event_gen_test_init() left the synthetic events
    that it created enabled. By having it disable them after testing, the
    other selftests will run fine.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231220111525.2f0f49b0@gandalf.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Fixes: 9fe41efaca084 ("tracing: Add synth event generation test module")
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Reported-by: Alexander Graf <graf@amazon.com>
    Tested-by: Alexander Graf <graf@amazon.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tracing: Fix blocked reader of snapshot buffer [+ + +]
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Thu Dec 28 09:51:49 2023 -0500

    tracing: Fix blocked reader of snapshot buffer
    
    commit 39a7dc23a1ed0fe81141792a09449d124c5953bd upstream.
    
    If an application blocks on the snapshot or snapshot_raw files, expecting
    to be woken up when a snapshot occurs, it will not happen. Or it may
    happen with an unexpected result.
    
    That result is that the application will be reading the main buffer
    instead of the snapshot buffer. That is because when the snapshot occurs,
    the main and snapshot buffers are swapped. But the reader has a descriptor
    still pointing to the buffer that it originally connected to.
    
    This is fine for the main buffer readers, as they may be blocked waiting
    for a watermark to be hit, and when a snapshot occurs, the data that the
    main readers want is now on the snapshot buffer.
    
    But for waiters of the snapshot buffer, they are waiting for an event to
    occur that will trigger the snapshot and they can then consume it quickly
    to save the snapshot before the next snapshot occurs. But to do this, they
    need to read the new snapshot buffer, not the old one that is now
    receiving new data.
    
    Also, it does not make sense to have a watermark "buffer_percent" on the
    snapshot buffer, as the snapshot buffer is static and does not receive new
    data except all at once.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231228095149.77f5b45d@gandalf.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Fixes: debdd57f5145f ("tracing: Make a snapshot feature available from userspace")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: fotg210-hcd: delete an incorrect bounds test [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Dec 13 16:22:43 2023 +0300

    usb: fotg210-hcd: delete an incorrect bounds test
    
    [ Upstream commit 7fbcd195e2b8cc952e4aeaeb50867b798040314c ]
    
    Here "temp" is the number of characters that we have written and "size"
    is the size of the buffer.  The intent was clearly to say that if we have
    written to the end of the buffer then stop.
    
    However, for that to work the comparison should have been done on the
    original "size" value instead of the "size -= temp" value.  Not only
    will that not trigger when we want to, but there is a small chance that
    it will trigger incorrectly before we want it to and we break from the
    loop slightly earlier than intended.
    
    This code was recently changed from using snprintf() to scnprintf().  With
    snprintf() we likely would have continued looping and passed a negative
    size parameter to snprintf().  This would have triggered an annoying
    WARN().  Now that we have converted to scnprintf() "size" will never
    drop below 1 and there is no real need for this test.  We could change
    the condition to "if (temp <= 1) goto done;" but just deleting the test
    is cleanest.
    
    Fixes: 7d50195f6c50 ("usb: host: Faraday fotg210-hcd driver")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Lee Jones <lee@kernel.org>
    Link: https://lore.kernel.org/r/ZXmwIwHe35wGfgzu@suswa
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
USB: serial: ftdi_sio: update Actisense PIDs constant names [+ + +]
Author: Mark Glover <mark.glover@actisense.com>
Date:   Wed Dec 20 13:57:40 2023 +0000

    USB: serial: ftdi_sio: update Actisense PIDs constant names
    
    commit 513d88a88e0203188a38f4647dd08170aebd85df upstream.
    
    Update the constant names for unused USB PIDs (product identifiers) to
    reflect the new products now using the PIDs.
    
    Signed-off-by: Mark Glover <mark.glover@actisense.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Foxconn T99W265 with new baseline [+ + +]
Author: Slark Xiao <slark_xiao@163.com>
Date:   Fri Dec 1 10:09:50 2023 +0800

    USB: serial: option: add Foxconn T99W265 with new baseline
    
    commit 13fde9ac23ca8c6d1ac13cc9eefe1f1ac3ee30a4 upstream.
    
    This ID was added based on latest SDX12 code base line, and we
    made some changes with previous 0489:e0db.
    
    Test evidence as below:
    T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  2
    P:  Vendor=0489 ProdID=e0da Rev=05.04
    S:  Manufacturer=Qualcomm
    S:  Product=Qualcomm Snapdragon X12
    S:  SerialNumber=2bda65fb
    C:  #Ifs= 6 Cfg#= 2 Atr=a0 MxPwr=896mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    
    0&1: MBIM, 2: Modem, 3:GNSS, 4:Diag, 5:ADB
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Quectel EG912Y module support [+ + +]
Author: Alper Ak <alperyasinak1@gmail.com>
Date:   Tue Aug 8 13:51:58 2023 +0300

    USB: serial: option: add Quectel EG912Y module support
    
    commit 6d79d9434c69bb8ffa8a631050eb0ad6b83d3e90 upstream.
    
    Add Quectel EG912Y "DIAG, AT, MODEM"
    
    0x6001: ECM / RNDIS + DIAG + AT + MODEM
    
    T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=6001 Rev= 3.18
    S:  Manufacturer=Android
    S:  Product=Android
    S:  SerialNumber=0000
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Alper Ak <alperyasinak1@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Quectel RM500Q R13 firmware support [+ + +]
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Tue Dec 12 18:15:38 2023 +0100

    USB: serial: option: add Quectel RM500Q R13 firmware support
    
    commit 06f22cd6635bdae7d73566fca9879b2026a08e00 upstream.
    
    Add support for Quectel RM500Q R13 firmware which uses Prot=40 for the
    NMEA port:
    
    T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  8 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0800 Rev= 4.14
    S:  Manufacturer=Quectel
    S:  Product=RM500Q-AE
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
    
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: cfg80211: Add my certificate [+ + +]
Author: Chen-Yu Tsai <wens@kernel.org>
Date:   Thu Dec 7 21:20:50 2023 +0800

    wifi: cfg80211: Add my certificate
    
    commit fb768d3b13ffa325b7e84480d488ac799c9d2cd7 upstream.
    
    As announced [1][2], I have taken over maintainership of the
    wireless-regdb project.
    
    Add my certificate so that newer releases are valid to the kernel.
    Seth's certificate should be kept around for awhile, at least until
    a few new releases by me happen.
    
    This should also be applied to stable trees so that stable kernels
    can utilize newly released database binaries.
    
    [1] https://lore.kernel.org/linux-wireless/CAGb2v657baNMPKU3QADijx7hZa=GUcSv2LEDdn6N=QQaFX8r-g@mail.gmail.com/
    [2] https://lore.kernel.org/linux-wireless/ZWmRR5ul7EDfxCan@wens.tw/
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
    Acked-by: Seth Forshee <sforshee@kernel.org>
    Link: https://msgid.link/ZXHGsqs34qZyzZng@wens.tw
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: cfg80211: fix certs build to not depend on file order [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Dec 14 09:08:16 2023 +0100

    wifi: cfg80211: fix certs build to not depend on file order
    
    commit 3c2a8ebe3fe66a5f77d4c164a0bea8e2ff37b455 upstream.
    
    The file for the new certificate (Chen-Yu Tsai's) didn't
    end with a comma, so depending on the file order in the
    build rule, we'd end up with invalid C when concatenating
    the (now two) certificates. Fix that.
    
    Cc: stable@vger.kernel.org
    Reported-by: Biju Das <biju.das.jz@bp.renesas.com>
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Fixes: fb768d3b13ff ("wifi: cfg80211: Add my certificate")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: mac80211: mesh_plink: fix matches_local logic [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Dec 11 09:05:31 2023 +0200

    wifi: mac80211: mesh_plink: fix matches_local logic
    
    [ Upstream commit 8c386b166e2517cf3a123018e77941ec22625d0f ]
    
    During refactoring the "else" here got lost, add it back.
    
    Fixes: c99a89edb106 ("mac80211: factor out plink event gathering")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://msgid.link/20231211085121.795480fa0e0b.I017d501196a5bbdcd9afd33338d342d6fe1edd79@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/alternatives: Sync core before enabling interrupts [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Dec 7 20:49:24 2023 +0100

    x86/alternatives: Sync core before enabling interrupts
    
    commit 3ea1704a92967834bf0e64ca1205db4680d04048 upstream.
    
    text_poke_early() does:
    
       local_irq_save(flags);
       memcpy(addr, opcode, len);
       local_irq_restore(flags);
       sync_core();
    
    That's not really correct because the synchronization should happen before
    interrupts are re-enabled to ensure that a pending interrupt observes the
    complete update of the opcodes.
    
    It's not entirely clear whether the interrupt entry provides enough
    serialization already, but moving the sync_core() invocation into interrupt
    disabled region does no harm and is obviously correct.
    
    Fixes: 6fffacb30349 ("x86/alternatives, jumplabel: Use text_poke_early() before mm_init()")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Link: https://lore.kernel.org/r/ZT6narvE%2BLxX%2B7Be@windriver.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>