Changelog in Linux kernel 6.6.36

 
ACPI: EC: Evaluate orphan _REG under EC device [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Jun 12 16:15:55 2024 +0200

    ACPI: EC: Evaluate orphan _REG under EC device
    
    commit 0e6b6dedf16800df0ff73ffe2bb5066514db29c2 upstream.
    
    After starting to install the EC address space handler at the ACPI
    namespace root, if there is an "orphan" _REG method in the EC device's
    scope, it will not be evaluated any more.  This breaks EC operation
    regions on some systems, like Asus gu605.
    
    To address this, use a wrapper around an existing ACPICA function to
    look for an "orphan" _REG method in the EC device scope and evaluate
    it if present.
    
    Fixes: 60fa6ae6e6d0 ("ACPI: EC: Install address space handler at the namespace root")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218945
    Reported-by: VitaliiT <vitaly.torshyn@gmail.com>
    Tested-by: VitaliiT <vitaly.torshyn@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: EC: Install address space handler at the namespace root [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed May 15 21:40:54 2024 +0200

    ACPI: EC: Install address space handler at the namespace root
    
    [ Upstream commit 60fa6ae6e6d09e377fce6f8d9b6f6a4d88769f63 ]
    
    It is reported that _DSM evaluation fails in ucsi_acpi_dsm() on Lenovo
    IdeaPad Pro 5 due to a missing address space handler for the EC address
    space:
    
     ACPI Error: No handler for Region [ECSI] (000000007b8176ee) [EmbeddedControl] (20230628/evregion-130)
    
    This happens because if there is no ECDT, the EC driver only registers
    the EC address space handler for operation regions defined in the EC
    device scope of the ACPI namespace while the operation region being
    accessed by the _DSM in question is located beyond that scope.
    
    To address this, modify the ACPI EC driver to install the EC address
    space handler at the root of the ACPI namespace for the first EC that
    can be found regardless of whether or not an ECDT is present.
    
    Note that this change is consistent with some examples in the ACPI
    specification in which EC operation regions located outside the EC
    device scope are used (for example, see Section 9.17.15 in ACPI 6.5),
    so the current behavior of the EC driver is arguably questionable.
    
    Reported-by: webcaptcha <webcapcha@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218789
    Link: https://uefi.org/specs/ACPI/6.5/09_ACPI_Defined_Devices_and_Device_Specific_Objects.html#example-asl-code
    Link: https://lore.kernel.org/linux-acpi/Zi+0whTvDbAdveHq@kuha.fi.intel.com
    Suggested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: video: Add backlight=native quirk for Lenovo Slim 7 16ARH7 [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon May 6 16:08:50 2024 +0200

    ACPI: video: Add backlight=native quirk for Lenovo Slim 7 16ARH7
    
    [ Upstream commit c901f63dc142c48326931f164f787dfff69273d9 ]
    
    Lenovo Slim 7 16ARH7 is a machine with switchable graphics between AMD
    and Nvidia, and the backlight can't be adjusted properly unless
    acpi_backlight=native is passed.  Although nvidia-wmi-backlight is
    present and loaded, this doesn't work as expected at all.
    
    For making it working as default, add the corresponding quirk entry
    with a DMI matching "LENOVO" "82UX".
    
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1217750
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: x86: Add PNP_UART1_SKIP quirk for Lenovo Blade2 tablets [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 6 15:56:25 2024 +0200

    ACPI: x86: Add PNP_UART1_SKIP quirk for Lenovo Blade2 tablets
    
    [ Upstream commit d8f20383a2fc3a3844b08a4999cf0e81164a0e56 ]
    
    The x86 Android tablets on which quirks to skip looking for a matching
    UartSerialBus resource and instead unconditionally create a serial bus
    device (serdev) are necessary there are 2 sorts of serialports:
    
    ACPI enumerated highspeed designware UARTs, these are the ones which
    typcially need to be skipped since they need a serdev for the attached
    BT HCI.
    
    A PNP enumerated UART which is part of the PCU. So far the existing
    quirks have ignored this. But on the Lenovo Yoga Tablet 2 Pro 1380
    models this is used for a custom fastcharging protocol. There is
    a Micro USB switch which can switch the USB data lines to this uart
    and then a 600 baud protocol is used to configure the charger for
    a voltage higher then 5V.
    
    Add a new ACPI_QUIRK_PNP_UART1_SKIP quirk type and set this for
    the existing entry for the Lenovo Yoga Tablet 2 830 / 1050 models.
    Note this will lead to unnecessarily also creating a serdev for
    the PCU UART on the 830 / 1050 which don't need this, but the UART
    is not used otherwise there so that is not a problem.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine." [+ + +]
Author: Raju Rangoju <Raju.Rangoju@amd.com>
Date:   Fri Jun 14 19:31:49 2024 +0530

    ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine."
    
    [ Upstream commit a83e1385b780d41307433ddbc86e3c528db031f0 ]
    
    Undo the modifications made in commit d410ee5109a1 ("ACPICA: avoid
    "Info: mapping multiple BARs. Your kernel is fine.""). The initial
    purpose of this commit was to stop memory mappings for operation
    regions from overlapping page boundaries, as it can trigger warnings
    if different page attributes are present.
    
    However, it was found that when this situation arises, mapping
    continues until the boundary's end, but there is still an attempt to
    read/write the entire length of the map, leading to a NULL pointer
    deference. For example, if a four-byte mapping request is made but
    only one byte is mapped because it hits the current page boundary's
    end, a four-byte read/write attempt is still made, resulting in a NULL
    pointer deference.
    
    Instead, map the entire length, as the ACPI specification does not
    mandate that it must be within the same page boundary. It is
    permissible for it to be mapped across different regions.
    
    Link: https://github.com/acpica/acpica/pull/954
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218849
    Fixes: d410ee5109a1 ("ACPICA: avoid "Info: mapping multiple BARs. Your kernel is fine."")
    Co-developed-by: Sanath S <Sanath.S@amd.com>
    Signed-off-by: Sanath S <Sanath.S@amd.com>
    Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
af_packet: avoid a false positive warning in packet_setsockopt() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Apr 5 11:49:39 2024 +0000

    af_packet: avoid a false positive warning in packet_setsockopt()
    
    [ Upstream commit 86d43e2bf93ccac88ef71cee36a23282ebd9e427 ]
    
    Although the code is correct, the following line
    
            copy_from_sockptr(&req_u.req, optval, len));
    
    triggers this warning :
    
    memcpy: detected field-spanning write (size 28) of single field "dst" at include/linux/sockptr.h:49 (size 16)
    
    Refactor the code to be more explicit.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Fri Jun 7 09:00:21 2024 +0300

    ALSA/hda: intel-dsp-config: Document AVS as dsp_driver option
    
    [ Upstream commit 2646b43910c0e6d7f4ad535919b44b88f98c688d ]
    
    dsp_driver=4 will force the AVS driver stack to be used, it is better to
    docuement this.
    
    Fixes: 1affc44ea5dd ("ASoC: Intel: avs: PCI driver implementation")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://lore.kernel.org/r/20240607060021.11503-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14AHP9 [+ + +]
Author: Pablo Caño <pablocpascual@gmail.com>
Date:   Thu Jun 20 17:25:33 2024 +0200

    ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14AHP9
    
    commit ad22051afdad962b6012f3823d0ed1a735935386 upstream.
    
    Lenovo Yoga Pro 7 14AHP9 (PCI SSID 17aa:3891) seems requiring a similar workaround like Yoga 9 model and Yoga 7 Pro 14APH8 for the bass speaker.
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/all/20231207182035.30248-1-tiwai@suse.de/
    Signed-off-by: Pablo Caño <pablocpascual@gmail.com>
    Link: https://patch.msgid.link/20240620152533.76712-1-pablocpascual@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirks for Lenovo 13X [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Tue Apr 23 17:23:03 2024 +0100

    ALSA: hda/realtek: Add quirks for Lenovo 13X
    
    [ Upstream commit 25f46354dca912c84f1f79468fd636a94b8d287a ]
    
    Add laptop using CS35L41 HDA.
    This laptop does not have _DSD, so require entries in property
    configuration table for cs35l41_hda driver.
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Message-ID: <20240423162303.638211-3-sbinding@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM [+ + +]
Author: Ajrat Makhmutov <rautyrauty@gmail.com>
Date:   Sat Jun 15 15:54:57 2024 +0300

    ALSA: hda/realtek: Enable headset mic on IdeaPad 330-17IKB 81DM
    
    [ Upstream commit b1fd0d1285b1eae8b99af36fb26ed2512b809af6 ]
    
    Headset microphone do not work out of the box with this laptop. This
    quirk fixes it. Zihao Wang specified the wrong subsystem id in his patch.
    
    Link: https://lore.kernel.org/all/20220424084120.74125-1-wzhd@ustc.edu/
    Fixes: 3b79954fd00d ("ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers")
    Signed-off-by: Ajrat Makhmutov <rauty@altlinux.org>
    Link: https://lore.kernel.org/r/20240615125457.167844-1-rauty@altlinux.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11. [+ + +]
Author: Andy Chi <andy.chi@canonical.com>
Date:   Wed Jun 5 17:22:41 2024 +0800

    ALSA: hda/realtek: fix mute/micmute LEDs don't work for ProBook 445/465 G11.
    
    commit ea5f8c4cffcd8a6b62b3a3bd5008275218c9d02a upstream.
    
    HP ProBook 445/465 G11 needs ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF quirk to
    make mic-mute/audio-mute working.
    
    Signed-off-by: Andy Chi <andy.chi@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20240605092243.41963-1-andy.chi@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Limit mic boost on N14AP7 [+ + +]
Author: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
Date:   Wed Jun 5 12:39:23 2024 -0300

    ALSA: hda/realtek: Limit mic boost on N14AP7
    
    commit 86a433862912f52597263aa224a9ed82bcd533bf upstream.
    
    The internal mic boost on the N14AP7 is too high. Fix this by applying the
    ALC269_FIXUP_LIMIT_INT_MIC_BOOST fixup to the machine to limit the gain.
    
    Signed-off-by: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20240605153923.2837-1-edson.drosdeck@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Remove Framework Laptop 16 from quirks [+ + +]
Author: Dustin L. Howett <dustin@howett.net>
Date:   Wed Jun 5 12:01:32 2024 -0500

    ALSA: hda/realtek: Remove Framework Laptop 16 from quirks
    
    [ Upstream commit e799bdf51d54bebaf939fdb655aad424e624c1b1 ]
    
    The Framework Laptop 16 does not have a combination headphone/headset
    3.5mm jack; however, applying the pincfg from the Laptop 13 (nid=0x19)
    erroneously informs hda that the node is present.
    
    Fixes: 8804fa04a492 ("ALSA: hda/realtek: Add Framework laptop 16 to quirks")
    Signed-off-by: Dustin L. Howett <dustin@howett.net>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20240605-alsa-hda-realtek-remove-framework-laptop-16-from-quirks-v1-1-11d47fe8ec4d@howett.net
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l41: Possible null pointer dereference in cs35l41_hda_unbind() [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Fri May 31 13:08:20 2024 +0100

    ALSA: hda: cs35l41: Possible null pointer dereference in cs35l41_hda_unbind()
    
    [ Upstream commit 6386682cdc8b41319c92fbbe421953e33a28840c ]
    
    The cs35l41_hda_unbind() function clears the hda_component entry
    matching it's index and then dereferences the codec pointer held in the
    first element of the hda_component array, this is an issue when the
    device index was 0.
    
    Instead use the codec pointer stashed in the cs35l41_hda structure as it
    will still be valid.
    
    Fixes: 7cf5ce66dfda ("ALSA: hda: cs35l41: Add device_link between HDA and cs35l41_hda")
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20240531120820.35367-1-simont@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: cs35l56: Component should be unbound before deconstruction [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Thu Jun 13 14:37:11 2024 +0100

    ALSA: hda: cs35l56: Component should be unbound before deconstruction
    
    [ Upstream commit 721f2e6653f5ab0cc52b3a459c4a2158b92fcf80 ]
    
    The interface associated with the hda_component should be deactivated
    before the driver is deconstructed during removal.
    
    Fixes: 73cfbfa9caea ("ALSA: hda/cs35l56: Add driver for Cirrus Logic CS35L56 amplifier")
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240613133713.75550-2-simont@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: tas2781: Component should be unbound before deconstruction [+ + +]
Author: Simon Trimmer <simont@opensource.cirrus.com>
Date:   Thu Jun 13 14:37:13 2024 +0100

    ALSA: hda: tas2781: Component should be unbound before deconstruction
    
    [ Upstream commit d832b5a03e94a2a9f866dab3d04937a0f84ea116 ]
    
    The interface associated with the hda_component should be deactivated
    before the driver is deconstructed during removal.
    
    Fixes: 4e7914eb1dae ("ALSA: hda/tas2781: remove sound controls in unbind")
    Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240613133713.75550-4-simont@opensource.cirrus.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: seq: ump: Fix missing System Reset message handling [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri May 31 14:37:17 2024 +0200

    ALSA: seq: ump: Fix missing System Reset message handling
    
    [ Upstream commit 55fac50ea46f46a22a92e2139b92afaa3822ad19 ]
    
    The conversion from System Reset event to UMP was missing.
    Add the entry for a conversion to a proper UMP System message.
    
    Fixes: e9e02819a98a ("ALSA: seq: Automatic conversion of UMP events")
    Link: https://lore.kernel.org/r/20240531123718.13420-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: defconfig: enable the vf610 gpio driver [+ + +]
Author: Martin Kaiser <martin@kaiser.cx>
Date:   Wed Jan 24 21:59:00 2024 +0100

    arm64: defconfig: enable the vf610 gpio driver
    
    commit a73bda63a102a5f1feb730d4d809de098a3d1886 upstream.
    
    The vf610 gpio driver is used in i.MX8QM, DXL, ULP and i.MX93 chips.
    Enable it in arm64 defconfig.
    
    (vf610 gpio used to be enabled by default for all i.MX chips. This was
    changed recently as most i.MX chips don't need this driver.)
    
    Signed-off-by: Martin Kaiser <martin@kaiser.cx>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin [+ + +]
Author: Max Krummenacher <max.krummenacher@toradex.com>
Date:   Mon Jun 3 16:00:45 2024 +0200

    arm64: dts: freescale: imx8mm-verdin: enable hysteresis on slow input pin
    
    [ Upstream commit 67cc6125fb39902169707cb6277f010e56d4a40a ]
    
    SODIMM 17 can be used as an edge triggered interrupt supplied from an
    off board source.
    
    Enable hysteresis on the pinmuxing to increase immunity against noise
    on the signal.
    
    Fixes: 60f01b5b5c7d ("arm64: dts: imx8mm-verdin: update iomux configuration")
    Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: freescale: imx8mp-venice-gw73xx-2x: fix BT shutdown GPIO [+ + +]
Author: Tim Harvey <tharvey@gateworks.com>
Date:   Wed May 22 14:38:28 2024 -0700

    arm64: dts: freescale: imx8mp-venice-gw73xx-2x: fix BT shutdown GPIO
    
    [ Upstream commit e1b4622efbe7ad09c9a902365a993f68c270c453 ]
    
    Fix the invalid BT shutdown GPIO (gpio1_io3 not gpio4_io16)
    
    Fixes: 716ced308234 ("arm64: dts: freescale: Add imx8mp-venice-gw73xx-2x")
    Signed-off-by: Tim Harvey <tharvey@gateworks.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mp: Fix TC9595 input clock on DH i.MX8M Plus DHCOM SoM [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Sat Jun 15 16:00:43 2024 +0800

    arm64: dts: imx8mp: Fix TC9595 input clock on DH i.MX8M Plus DHCOM SoM
    
    [ Upstream commit c03984d43a9dd9282da54ccf275419f666029452 ]
    
    The IMX8MP_CLK_CLKOUT2 supplies the TC9595 bridge with 13 MHz reference
    clock. The IMX8MP_CLK_CLKOUT2 is supplied from IMX8MP_AUDIO_PLL2_OUT.
    The IMX8MP_CLK_CLKOUT2 operates only as a power-of-two divider, and the
    current 156 MHz is not power-of-two divisible to achieve 13 MHz.
    
    To achieve 13 MHz output from IMX8MP_CLK_CLKOUT2, set IMX8MP_AUDIO_PLL2_OUT
    to 208 MHz, because 208 MHz / 16 = 13 MHz.
    
    Fixes: 20d0b83e712b ("arm64: dts: imx8mp: Add TC9595 bridge on DH electronics i.MX8M Plus DHCOM")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mp: Fix TC9595 reset GPIO on DH i.MX8M Plus DHCOM SoM [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Sun Feb 25 04:33:42 2024 +0100

    arm64: dts: imx8mp: Fix TC9595 reset GPIO on DH i.MX8M Plus DHCOM SoM
    
    [ Upstream commit 418a7fc5397719c4b8f50eaeca6694879f89a6ec ]
    
    The TC9595 reset GPIO is SAI1_RXC / GPIO4_IO01, fix the DT accordingly.
    The SAI5_RXD0 / GPIO3_IO21 is thus far unused TC9595 interrupt line.
    
    Fixes: 20d0b83e712b ("arm64: dts: imx8mp: Add TC9595 bridge on DH electronics i.MX8M Plus DHCOM")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Stable-dep-of: c03984d43a9d ("arm64: dts: imx8mp: Fix TC9595 input clock on DH i.MX8M Plus DHCOM SoM")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc [+ + +]
Author: Frank Li <Frank.Li@nxp.com>
Date:   Fri Jun 14 11:06:32 2024 -0400

    arm64: dts: imx8qm-mek: fix gpio number for reg_usdhc2_vmmc
    
    commit dfd239a039b3581ca25f932e66b6e2c2bf77c798 upstream.
    
    The gpio in "reg_usdhc2_vmmc" should be 7 instead of 19.
    
    Cc: stable@vger.kernel.org
    Fixes: 307fd14d4b14 ("arm64: dts: imx: add imx8qm mek support")
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property [+ + +]
Author: Fabio Estevam <festevam@gmail.com>
Date:   Wed May 29 00:48:54 2024 -0300

    arm64: dts: imx93-11x11-evk: Remove the 'no-sdio' property
    
    [ Upstream commit a5d400b6439ac734a5c0dbb641e26a38736abc17 ]
    
    The usdhc2 port is connected to the microSD slot. The presence of the
    'no-sdio' property prevents Wifi SDIO cards, such as CMP9010-X-EVB [1]
    to be detected.
    
    Remove the 'no-sdio' property so that SDIO cards could also work.
    
    [1] https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/cmp9010-x-evb-iw416-usd-interface-evaluation-board:CMP9010-X-EVB
    
    Fixes: e37907bd8294 ("arm64: dts: freescale: add i.MX93 11x11 EVK basic support")
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: Intel: sof-sdw: really remove FOUR_SPEAKER quirk [+ + +]
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Fri Apr 26 10:21:20 2024 -0500

    ASoC: Intel: sof-sdw: really remove FOUR_SPEAKER quirk
    
    commit 0bab4cfd7c1560095e29919e2ebe01783b9096dc upstream.
    
    Two independent GitHub PRs let to the addition of one quirk after it
    was removed..
    
    Fixes: b10cb955c6c0 ("ASoC: Intel: sof_sdw: add quirk for Dell SKU 0C0F")
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20240426152123.36284-10-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14 [+ + +]
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Apr 11 17:03:38 2024 -0500

    ASoC: Intel: sof_sdw: add JD2 quirk for HP Omen 14
    
    [ Upstream commit 4fee07fbf47d2a5f1065d985459e5ce7bf7969f0 ]
    
    The default JD1 does not seem to work, use JD2 instead.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411220347.131267-4-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: sof_sdw: add quirk for Dell SKU 0C0F [+ + +]
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Thu Apr 11 17:03:39 2024 -0500

    ASoC: Intel: sof_sdw: add quirk for Dell SKU 0C0F
    
    [ Upstream commit b10cb955c6c0b8dbd9a768166d71cc12680b7fdf ]
    
    The JD1 jack detection doesn't seem to work, use JD2.
    Also use the 4 speaker configuration.
    
    Link: https://github.com/thesofproject/linux/issues/4900
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411220347.131267-5-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Avoid hw_desc array overrun in dw-axi-dmac [+ + +]
Author: Joao Pinto <Joao.Pinto@synopsys.com>
Date:   Wed Mar 27 10:49:24 2024 +0000

    Avoid hw_desc array overrun in dw-axi-dmac
    
    [ Upstream commit 333e11bf47fa8d477db90e2900b1ed3c9ae9b697 ]
    
    I have a use case where nr_buffers = 3 and in which each descriptor is composed by 3
    segments, resulting in the DMA channel descs_allocated to be 9. Since axi_desc_put()
    handles the hw_desc considering the descs_allocated, this scenario would result in a
    kernel panic (hw_desc array will be overrun).
    
    To fix this, the proposal is to add a new member to the axi_dma_desc structure,
    where we keep the number of allocated hw_descs (axi_desc_alloc()) and use it in
    axi_desc_put() to handle the hw_desc array correctly.
    
    Additionally I propose to remove the axi_chan_start_first_queued() call after completing
    the transfer, since it was identified that unbalance can occur (started descriptors can
    be interrupted and transfer ignored due to DMA channel not being enabled).
    
    Signed-off-by: Joao Pinto <jpinto@synopsys.com>
    Link: https://lore.kernel.org/r/1711536564-12919-1-git-send-email-jpinto@synopsys.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
batman-adv: bypass empty buckets in batadv_purge_orig_ref() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Mar 30 15:54:38 2024 +0000

    batman-adv: bypass empty buckets in batadv_purge_orig_ref()
    
    [ Upstream commit 40dc8ab605894acae1473e434944924a22cfaaa0 ]
    
    Many syzbot reports are pointing to soft lockups in
    batadv_purge_orig_ref() [1]
    
    Root cause is unknown, but we can avoid spending too much
    time there and perhaps get more interesting reports.
    
    [1]
    
    watchdog: BUG: soft lockup - CPU#0 stuck for 27s! [kworker/u4:6:621]
    Modules linked in:
    irq event stamp: 6182794
     hardirqs last  enabled at (6182793): [<ffff8000801dae10>] __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
     hardirqs last disabled at (6182794): [<ffff80008ad66a78>] __el1_irq arch/arm64/kernel/entry-common.c:533 [inline]
     hardirqs last disabled at (6182794): [<ffff80008ad66a78>] el1_interrupt+0x24/0x68 arch/arm64/kernel/entry-common.c:551
     softirqs last  enabled at (6182792): [<ffff80008aab71c4>] spin_unlock_bh include/linux/spinlock.h:396 [inline]
     softirqs last  enabled at (6182792): [<ffff80008aab71c4>] batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
     softirqs last disabled at (6182790): [<ffff80008aab61dc>] spin_lock_bh include/linux/spinlock.h:356 [inline]
     softirqs last disabled at (6182790): [<ffff80008aab61dc>] batadv_purge_orig_ref+0x164/0x1228 net/batman-adv/originator.c:1271
    CPU: 0 PID: 621 Comm: kworker/u4:6 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
    Workqueue: bat_events batadv_purge_orig
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : should_resched arch/arm64/include/asm/preempt.h:79 [inline]
     pc : __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:388
     lr : __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
    sp : ffff800099007970
    x29: ffff800099007980 x28: 1fffe00018fce1bd x27: dfff800000000000
    x26: ffff0000d2620008 x25: ffff0000c7e70de8 x24: 0000000000000001
    x23: 1fffe00018e57781 x22: dfff800000000000 x21: ffff80008aab71c4
    x20: ffff0001b40136c0 x19: ffff0000c72bbc08 x18: 1fffe0001a817bb0
    x17: ffff800125414000 x16: ffff80008032116c x15: 0000000000000001
    x14: 1fffe0001ee9d610 x13: 0000000000000000 x12: 0000000000000003
    x11: 0000000000000000 x10: 0000000000ff0100 x9 : 0000000000000000
    x8 : 00000000005e5789 x7 : ffff80008aab61dc x6 : 0000000000000000
    x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000
    x2 : 0000000000000006 x1 : 0000000000000080 x0 : ffff800125414000
    Call trace:
      __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
      arch_local_irq_enable arch/arm64/include/asm/irqflags.h:49 [inline]
      __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:386
      __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:167 [inline]
      _raw_spin_unlock_bh+0x3c/0x4c kernel/locking/spinlock.c:210
      spin_unlock_bh include/linux/spinlock.h:396 [inline]
      batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
      batadv_purge_orig+0x20/0x70 net/batman-adv/originator.c:1300
      process_one_work+0x694/0x1204 kernel/workqueue.c:2633
      process_scheduled_works kernel/workqueue.c:2706 [inline]
      worker_thread+0x938/0xef4 kernel/workqueue.c:2787
      kthread+0x288/0x310 kernel/kthread.c:388
      ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860
    Sending NMI from CPU 0 to CPUs 1:
    NMI backtrace for cpu 1
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:51
     lr : default_idle_call+0xf8/0x128 kernel/sched/idle.c:103
    sp : ffff800093a17d30
    x29: ffff800093a17d30 x28: dfff800000000000 x27: 1ffff00012742fb4
    x26: ffff80008ec9d000 x25: 0000000000000000 x24: 0000000000000002
    x23: 1ffff00011d93a74 x22: ffff80008ec9d3a0 x21: 0000000000000000
    x20: ffff0000c19dbc00 x19: ffff8000802d0fd8 x18: 1fffe00036804396
    x17: ffff80008ec9d000 x16: ffff8000802d089c x15: 0000000000000001
    x14: 1fffe00036805f10 x13: 0000000000000000 x12: 0000000000000003
    x11: 0000000000000001 x10: 0000000000000003 x9 : 0000000000000000
    x8 : 00000000000ce8d1 x7 : ffff8000804609e4 x6 : 0000000000000000
    x5 : 0000000000000001 x4 : 0000000000000001 x3 : ffff80008ad6aac0
    x2 : 0000000000000000 x1 : ffff80008aedea60 x0 : ffff800125436000
    Call trace:
      __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
      arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:49
      cpuidle_idle_call kernel/sched/idle.c:170 [inline]
      do_idle+0x1f0/0x4e8 kernel/sched/idle.c:312
      cpu_startup_entry+0x5c/0x74 kernel/sched/idle.c:410
      secondary_start_kernel+0x198/0x1c0 arch/arm64/kernel/smp.c:272
      __secondary_switched+0xb8/0xbc arch/arm64/kernel/head.S:404
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block/ioctl: prefer different overflow check [+ + +]
Author: Justin Stitt <justinstitt@google.com>
Date:   Tue May 7 03:53:49 2024 +0000

    block/ioctl: prefer different overflow check
    
    [ Upstream commit ccb326b5f9e623eb7f130fbbf2505ec0e2dcaff9 ]
    
    Running syzkaller with the newly reintroduced signed integer overflow
    sanitizer shows this report:
    
    [   62.982337] ------------[ cut here ]------------
    [   62.985692] cgroup: Invalid name
    [   62.986211] UBSAN: signed-integer-overflow in ../block/ioctl.c:36:46
    [   62.989370] 9pnet_fd: p9_fd_create_tcp (7343): problem connecting socket to 127.0.0.1
    [   62.992992] 9223372036854775807 + 4095 cannot be represented in type 'long long'
    [   62.997827] 9pnet_fd: p9_fd_create_tcp (7345): problem connecting socket to 127.0.0.1
    [   62.999369] random: crng reseeded on system resumption
    [   63.000634] GUP no longer grows the stack in syz-executor.2 (7353): 20002000-20003000 (20001000)
    [   63.000668] CPU: 0 PID: 7353 Comm: syz-executor.2 Not tainted 6.8.0-rc2-00035-gb3ef86b5a957 #1
    [   63.000677] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   63.000682] Call Trace:
    [   63.000686]  <TASK>
    [   63.000731]  dump_stack_lvl+0x93/0xd0
    [   63.000919]  __get_user_pages+0x903/0xd30
    [   63.001030]  __gup_longterm_locked+0x153e/0x1ba0
    [   63.001041]  ? _raw_read_unlock_irqrestore+0x17/0x50
    [   63.001072]  ? try_get_folio+0x29c/0x2d0
    [   63.001083]  internal_get_user_pages_fast+0x1119/0x1530
    [   63.001109]  iov_iter_extract_pages+0x23b/0x580
    [   63.001206]  bio_iov_iter_get_pages+0x4de/0x1220
    [   63.001235]  iomap_dio_bio_iter+0x9b6/0x1410
    [   63.001297]  __iomap_dio_rw+0xab4/0x1810
    [   63.001316]  iomap_dio_rw+0x45/0xa0
    [   63.001328]  ext4_file_write_iter+0xdde/0x1390
    [   63.001372]  vfs_write+0x599/0xbd0
    [   63.001394]  ksys_write+0xc8/0x190
    [   63.001403]  do_syscall_64+0xd4/0x1b0
    [   63.001421]  ? arch_exit_to_user_mode_prepare+0x3a/0x60
    [   63.001479]  entry_SYSCALL_64_after_hwframe+0x6f/0x77
    [   63.001535] RIP: 0033:0x7f7fd3ebf539
    [   63.001551] Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 14 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 b8 ff ff ff f7 d8 64 89 01 48
    [   63.001562] RSP: 002b:00007f7fd32570c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [   63.001584] RAX: ffffffffffffffda RBX: 00007f7fd3ff3f80 RCX: 00007f7fd3ebf539
    [   63.001590] RDX: 4db6d1e4f7e43360 RSI: 0000000020000000 RDI: 0000000000000004
    [   63.001595] RBP: 00007f7fd3f1e496 R08: 0000000000000000 R09: 0000000000000000
    [   63.001599] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [   63.001604] R13: 0000000000000006 R14: 00007f7fd3ff3f80 R15: 00007ffd415ad2b8
    ...
    [   63.018142] ---[ end trace ]---
    
    Historically, the signed integer overflow sanitizer did not work in the
    kernel due to its interaction with `-fwrapv` but this has since been
    changed [1] in the newest version of Clang; It was re-enabled in the
    kernel with Commit 557f8c582a9ba8ab ("ubsan: Reintroduce signed overflow
    sanitizer").
    
    Let's rework this overflow checking logic to not actually perform an
    overflow during the check itself, thus avoiding the UBSAN splat.
    
    [1]: https://github.com/llvm/llvm-project/pull/82432
    
    Signed-off-by: Justin Stitt <justinstitt@google.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20240507-b4-sio-block-ioctl-v3-1-ba0c2b32275e@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl [+ + +]
Author: Uri Arev <me@wantyapps.xyz>
Date:   Sat Apr 6 00:42:24 2024 +0300

    Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl
    
    [ Upstream commit 68aa21054ec3a1a313af90a5f95ade16c3326d20 ]
    
    This fixes some CHECKs reported by the checkpatch script.
    
    Issues reported in ath3k.c:
    -------
    ath3k.c
    -------
    CHECK: Please don't use multiple blank lines
    +
    +
    
    CHECK: Blank lines aren't necessary after an open brace '{'
    +static const struct usb_device_id ath3k_blist_tbl[] = {
    +
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_load_firmware(struct usb_device *udev,
    +                               const struct firmware *firmware)
    
    CHECK: Alignment should match open parenthesis
    +               err = usb_bulk_msg(udev, pipe, send_buf, size,
    +                                       &len, 3000);
    
    CHECK: Unnecessary parentheses around 'len != size'
    +               if (err || (len != size)) {
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_get_version(struct usb_device *udev,
    +                       struct ath3k_version *version)
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_load_fwfile(struct usb_device *udev,
    +               const struct firmware *firmware)
    
    CHECK: Alignment should match open parenthesis
    +               err = usb_bulk_msg(udev, pipe, send_buf, size,
    +                                       &len, 3000);
    
    CHECK: Unnecessary parentheses around 'len != size'
    +               if (err || (len != size)) {
    
    CHECK: Blank lines aren't necessary after an open brace '{'
    +       switch (fw_version.ref_clock) {
    +
    
    CHECK: Alignment should match open parenthesis
    +       snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
    +               le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
    
    CHECK: Alignment should match open parenthesis
    +static int ath3k_probe(struct usb_interface *intf,
    +                       const struct usb_device_id *id)
    
    CHECK: Alignment should match open parenthesis
    +                       BT_ERR("Firmware file \"%s\" not found",
    +                                                       ATH3K_FIRMWARE);
    
    CHECK: Alignment should match open parenthesis
    +               BT_ERR("Firmware file \"%s\" request failed (err=%d)",
    +                                               ATH3K_FIRMWARE, ret);
    
    total: 0 errors, 0 warnings, 14 checks, 540 lines checked
    
    Signed-off-by: Uri Arev <me@wantyapps.xyz>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: Restore PTP tx_avail count in case of skb_pad() error [+ + +]
Author: Pavan Chebbi <pavan.chebbi@broadcom.com>
Date:   Tue Jun 18 14:53:13 2024 -0700

    bnxt_en: Restore PTP tx_avail count in case of skb_pad() error
    
    [ Upstream commit 1e7962114c10957fe4d10a15eb714578a394e90b ]
    
    The current code only restores PTP tx_avail count when we get DMA
    mapping errors.  Fix it so that the PTP tx_avail count will be
    restored for both DMA mapping errors and skb_pad() errors.
    Otherwise PTP TX timestamp will not be available after a PTP
    packet hits the skb_pad() error.
    
    Fixes: 83bb623c968e ("bnxt_en: Transmit and retrieve packet timestamps")
    Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
    Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/20240618215313.29631-4-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Avoid splat in pskb_pull_reason [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Jun 14 12:17:33 2024 +0200

    bpf: Avoid splat in pskb_pull_reason
    
    [ Upstream commit 2bbe3e5a2f4ef69d13be54f1cf895b4658287080 ]
    
    syzkaller builds (CONFIG_DEBUG_NET=y) frequently trigger a debug
    hint in pskb_may_pull.
    
    We'd like to retain this debug check because it might hint at integer
    overflows and other issues (kernel code should pull headers, not huge
    value).
    
    In bpf case, this splat isn't interesting at all: such (nonsensical)
    bpf programs are typically generated by a fuzzer anyway.
    
    Do what Eric suggested and suppress such warning.
    
    For CONFIG_DEBUG_NET=n we don't need the extra check because
    pskb_may_pull will do the right thing: return an error without the
    WARN() backtrace.
    
    Fixes: 219eee9c0d16 ("net: skbuff: add overflow debug check to pull/push helpers")
    Reported-by: syzbot+0c4150bff9fff3bf023c@syzkaller.appspotmail.com
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Closes: https://syzkaller.appspot.com/bug?extid=0c4150bff9fff3bf023c
    Link: https://lore.kernel.org/netdev/9f254c96-54f2-4457-b7ab-1d9f6187939c@gmail.com/
    Link: https://lore.kernel.org/bpf/20240614101801.9496-1-fw@strlen.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: retry block group reclaim without infinite loop [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Fri Jun 7 12:50:14 2024 -0700

    btrfs: retry block group reclaim without infinite loop
    
    commit 4eb4e85c4f818491efc67e9373aa16b123c3f522 upstream.
    
    If inc_block_group_ro systematically fails (e.g. due to ETXTBUSY from
    swap) or btrfs_relocate_chunk systematically fails (from lack of
    space), then this worker becomes an infinite loop.
    
    At the very least, this strands the cleaner thread, but can also result
    in hung tasks/RCU stalls on PREEMPT_NONE kernels and if the
    reclaim_bgs_lock mutex is not contended.
    
    I believe the best long term fix is to manage reclaim via work queue,
    where we queue up a relocation on the triggering condition and re-queue
    on failure. In the meantime, this is an easy fix to apply to avoid the
    immediate pain.
    
    Fixes: 7e2718099438 ("btrfs: reinsert BGs failed to reclaim")
    CC: stable@vger.kernel.org # 6.6+
    Signed-off-by: Boris Burkov <boris@bur.io>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zoned: allocate dummy checksums for zoned NODATASUM writes [+ + +]
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Fri Jun 7 13:27:48 2024 +0200

    btrfs: zoned: allocate dummy checksums for zoned NODATASUM writes
    
    [ Upstream commit cebae292e0c32a228e8f2219c270a7237be24a6a ]
    
    Shin'ichiro reported that when he's running fstests' test-case
    btrfs/167 on emulated zoned devices, he's seeing the following NULL
    pointer dereference in 'btrfs_zone_finish_endio()':
    
      Oops: general protection fault, probably for non-canonical address 0xdffffc0000000011: 0000 [#1] PREEMPT SMP KASAN NOPTI
      KASAN: null-ptr-deref in range [0x0000000000000088-0x000000000000008f]
      CPU: 4 PID: 2332440 Comm: kworker/u80:15 Tainted: G        W          6.10.0-rc2-kts+ #4
      Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020
      Workqueue: btrfs-endio-write btrfs_work_helper [btrfs]
      RIP: 0010:btrfs_zone_finish_endio.part.0+0x34/0x160 [btrfs]
    
      RSP: 0018:ffff88867f107a90 EFLAGS: 00010206
      RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff893e5534
      RDX: 0000000000000011 RSI: 0000000000000004 RDI: 0000000000000088
      RBP: 0000000000000002 R08: 0000000000000001 R09: ffffed1081696028
      R10: ffff88840b4b0143 R11: ffff88834dfff600 R12: ffff88840b4b0000
      R13: 0000000000020000 R14: 0000000000000000 R15: ffff888530ad5210
      FS:  0000000000000000(0000) GS:ffff888e3f800000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f87223fff38 CR3: 00000007a7c6a002 CR4: 00000000007706f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? __die_body.cold+0x19/0x27
       ? die_addr+0x46/0x70
       ? exc_general_protection+0x14f/0x250
       ? asm_exc_general_protection+0x26/0x30
       ? do_raw_read_unlock+0x44/0x70
       ? btrfs_zone_finish_endio.part.0+0x34/0x160 [btrfs]
       btrfs_finish_one_ordered+0x5d9/0x19a0 [btrfs]
       ? __pfx_lock_release+0x10/0x10
       ? do_raw_write_lock+0x90/0x260
       ? __pfx_do_raw_write_lock+0x10/0x10
       ? __pfx_btrfs_finish_one_ordered+0x10/0x10 [btrfs]
       ? _raw_write_unlock+0x23/0x40
       ? btrfs_finish_ordered_zoned+0x5a9/0x850 [btrfs]
       ? lock_acquire+0x435/0x500
       btrfs_work_helper+0x1b1/0xa70 [btrfs]
       ? __schedule+0x10a8/0x60b0
       ? __pfx___might_resched+0x10/0x10
       process_one_work+0x862/0x1410
       ? __pfx_lock_acquire+0x10/0x10
       ? __pfx_process_one_work+0x10/0x10
       ? assign_work+0x16c/0x240
       worker_thread+0x5e6/0x1010
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x2c3/0x3a0
       ? trace_irq_enable.constprop.0+0xce/0x110
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x31/0x70
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
       </TASK>
    
    Enabling CONFIG_BTRFS_ASSERT revealed the following assertion to
    trigger:
    
      assertion failed: !list_empty(&ordered->list), in fs/btrfs/zoned.c:1815
    
    This indicates, that we're missing the checksums list on the
    ordered_extent. As btrfs/167 is doing a NOCOW write this is to be
    expected.
    
    Further analysis with drgn confirmed the assumption:
    
      >>> inode = prog.crashed_thread().stack_trace()[11]['ordered'].inode
      >>> btrfs_inode = drgn.container_of(inode, "struct btrfs_inode", \
                                            "vfs_inode")
      >>> print(btrfs_inode.flags)
      (u32)1
    
    As zoned emulation mode simulates conventional zones on regular devices,
    we cannot use zone-append for writing. But we're only attaching dummy
    checksums if we're doing a zone-append write.
    
    So for NOCOW zoned data writes on conventional zones, also attach a
    dummy checksum.
    
    Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Fixes: cbfce4c7fbde ("btrfs: optimize the logical to physical mapping for zoned writes")
    CC: Naohiro Aota <Naohiro.Aota@wdc.com> # 6.6+
    Tested-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cifs: fix typo in module parameter enable_gcm_256 [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Wed Jun 19 14:46:48 2024 -0500

    cifs: fix typo in module parameter enable_gcm_256
    
    commit 8bf0287528da1992c5e49d757b99ad6bbc34b522 upstream.
    
    enable_gcm_256 (which allows the server to require the strongest
    encryption) is enabled by default, but the modinfo description
    incorrectly showed it disabled by default. Fix the typo.
    
    Cc: stable@vger.kernel.org
    Fixes: fee742b50289 ("smb3.1.1: enable negotiating stronger encryption by default")
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cipso: fix total option length computation [+ + +]
Author: Ondrej Mosnacek <omosnace@redhat.com>
Date:   Fri Jun 7 18:07:52 2024 +0200

    cipso: fix total option length computation
    
    [ Upstream commit 9f36169912331fa035d7b73a91252d7c2512eb1a ]
    
    As evident from the definition of ip_options_get(), the IP option
    IPOPT_END is used to pad the IP option data array, not IPOPT_NOP. Yet
    the loop that walks the IP options to determine the total IP options
    length in cipso_v4_delopt() doesn't take IPOPT_END into account.
    
    Fix it by recognizing the IPOPT_END value as the end of actual options.
    
    Fixes: 014ab19a69c3 ("selinux: Set socket NetLabel based on connection endpoint")
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpufreq: amd-pstate: fix memory leak on CPU EPP exit [+ + +]
Author: Peng Ma <andypma@tencent.com>
Date:   Thu May 16 14:30:42 2024 +0800

    cpufreq: amd-pstate: fix memory leak on CPU EPP exit
    
    [ Upstream commit cea04f3d9aeebda9d9c063c0dfa71e739c322c81 ]
    
    The cpudata memory from kzalloc() in amd_pstate_epp_cpu_init() is
    not freed in the analogous exit function, so fix that.
    
    Signed-off-by: Peng Ma <andypma@tencent.com>
    Acked-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Perry Yuan <Perry.Yuan@amd.com>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: hisilicon/qm - Add the err memory release process to qm uninit [+ + +]
Author: Chenghai Huang <huangchenghai2@huawei.com>
Date:   Sun Apr 7 16:00:00 2024 +0800

    crypto: hisilicon/qm - Add the err memory release process to qm uninit
    
    [ Upstream commit c9ccfd5e0ff0dd929ce86d1b5f3c6a414110947a ]
    
    When the qm uninit command is executed, the err data needs to
    be released to prevent memory leakage. The error information
    release operation and uacce_remove are integrated in
    qm_remove_uacce.
    
    So add the qm_remove_uacce to qm uninit to avoid err memory
    leakage.
    
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: hisilicon/sec - Fix memory leak for sec resource release [+ + +]
Author: Chenghai Huang <huangchenghai2@huawei.com>
Date:   Sun Apr 7 15:59:58 2024 +0800

    crypto: hisilicon/sec - Fix memory leak for sec resource release
    
    [ Upstream commit bba4250757b4ae1680fea435a358d8093f254094 ]
    
    The AIV is one of the SEC resources. When releasing resources,
    it need to release the AIV resources at the same time.
    Otherwise, memory leakage occurs.
    
    The aiv resource release is added to the sec resource release
    function.
    
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dmaengine: fsl-edma: avoid linking both modules [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 28 13:54:22 2024 +0200

    dmaengine: fsl-edma: avoid linking both modules
    
    [ Upstream commit fa555b5026d0bf1ba7c9e645ff75e2725a982631 ]
    
    Kbuild does not support having a source file compiled multiple times
    and linked into distinct modules, or built-in and modular at the
    same time. For fs-edma, there are two common components that are
    linked into the fsl-edma.ko for Arm and PowerPC, plus the mcf-edma.ko
    module on Coldfire. This violates the rule for compile-testing:
    
    scripts/Makefile.build:236: drivers/dma/Makefile: fsl-edma-common.o is added to multiple modules: fsl-edma mcf-edma
    scripts/Makefile.build:236: drivers/dma/Makefile: fsl-edma-trace.o is added to multiple modules: fsl-edma mcf-edma
    
    I tried splitting out the common parts into a separate modules, but
    that adds back the complexity that a cleanup patch removed, and it
    gets harder with the addition of the tracepoints.
    
    As a minimal workaround, address it at the Kconfig level, by disallowing
    the broken configurations.
    
    Link: https://lore.kernel.org/lkml/20240110232255.1099757-1-arnd@kernel.org/
    Fixes: 66aac8ea0a6c ("dmaengine: fsl-edma: clean up EXPORT_SYMBOL_GPL in fsl-edma-common.c")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/20240528115440.2965975-1-arnd@kernel.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list [+ + +]
Author: Li RongQing <lirongqing@baidu.com>
Date:   Mon Jun 3 09:24:44 2024 +0800

    dmaengine: idxd: Fix possible Use-After-Free in irq_process_work_list
    
    [ Upstream commit e3215deca4520773cd2b155bed164c12365149a7 ]
    
    Use list_for_each_entry_safe() to allow iterating through the list and
    deleting the entry in the iteration process. The descriptor is freed via
    idxd_desc_complete() and there's a slight chance may cause issue for
    the list iterator when the descriptor is reused by another thread
    without it being deleted from the list.
    
    Fixes: 16e19e11228b ("dmaengine: idxd: Fix list corruption in description completion")
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
    Link: https://lore.kernel.org/r/20240603012444.11902-1-lirongqing@baidu.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: ioatdma: Fix error path in ioat3_dma_probe() [+ + +]
Author: Nikita Shubin <n.shubin@yadro.com>
Date:   Tue May 28 09:09:24 2024 +0300

    dmaengine: ioatdma: Fix error path in ioat3_dma_probe()
    
    [ Upstream commit f0dc9fda2e0ee9e01496c2f5aca3a831131fad79 ]
    
    Make sure we are disabling interrupts and destroying DMA pool if
    pcie_capability_read/write_word() call failed.
    
    Fixes: 511deae0261c ("dmaengine: ioatdma: disable relaxed ordering for ioatdma")
    Signed-off-by: Nikita Shubin <n.shubin@yadro.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20240528-ioatdma-fixes-v2-2-a9f2fbe26ab1@yadro.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe() [+ + +]
Author: Nikita Shubin <n.shubin@yadro.com>
Date:   Tue May 28 09:09:25 2024 +0300

    dmaengine: ioatdma: Fix kmemleak in ioat_pci_probe()
    
    [ Upstream commit 29b7cd255f3628e0d65be33a939d8b5bba10aa62 ]
    
    If probing fails we end up with leaking ioatdma_device and each
    allocated channel.
    
    Following kmemleak easy to reproduce by injecting an error in
    ioat_alloc_chan_resources() when doing ioat_dma_self_test().
    
    unreferenced object 0xffff888014ad5800 (size 1024): [..]
        [<ffffffff827692ca>] kmemleak_alloc+0x4a/0x80
        [<ffffffff81430600>] kmalloc_trace+0x270/0x2f0
        [<ffffffffa000b7d1>] ioat_pci_probe+0xc1/0x1c0 [ioatdma]
    [..]
    
    repeated for each ioatdma channel:
    
    unreferenced object 0xffff8880148e5c00 (size 512): [..]
        [<ffffffff827692ca>] kmemleak_alloc+0x4a/0x80
        [<ffffffff81430600>] kmalloc_trace+0x270/0x2f0
        [<ffffffffa0009641>] ioat_enumerate_channels+0x101/0x2d0 [ioatdma]
        [<ffffffffa000b266>] ioat3_dma_probe+0x4d6/0x970 [ioatdma]
        [<ffffffffa000b891>] ioat_pci_probe+0x181/0x1c0 [ioatdma]
    [..]
    
    Fixes: bf453a0a18b2 ("dmaengine: ioat: Support in-use unbind")
    Signed-off-by: Nikita Shubin <n.shubin@yadro.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20240528-ioatdma-fixes-v2-3-a9f2fbe26ab1@yadro.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: ioatdma: Fix leaking on version mismatch [+ + +]
Author: Nikita Shubin <n.shubin@yadro.com>
Date:   Tue May 28 09:09:23 2024 +0300

    dmaengine: ioatdma: Fix leaking on version mismatch
    
    [ Upstream commit 1b11b4ef6bd68591dcaf8423c7d05e794e6aec6f ]
    
    Fix leaking ioatdma_device if I/OAT version is less than IOAT_VER_3_0.
    
    Fixes: bf453a0a18b2 ("dmaengine: ioat: Support in-use unbind")
    Signed-off-by: Nikita Shubin <n.shubin@yadro.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20240528-ioatdma-fixes-v2-1-a9f2fbe26ab1@yadro.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: ioatdma: Fix missing kmem_cache_destroy() [+ + +]
Author: Nikita Shubin <n.shubin@yadro.com>
Date:   Tue May 14 13:52:31 2024 +0300

    dmaengine: ioatdma: Fix missing kmem_cache_destroy()
    
    [ Upstream commit 5422145d0b749ad554ada772133b9b20f9fb0ec8 ]
    
    Fix missing kmem_cache_destroy() for ioat_sed_cache in
    ioat_exit_module().
    
    Noticed via:
    
    ```
    modprobe ioatdma
    rmmod ioatdma
    modprobe ioatdma
    debugfs: Directory 'ioat_sed_ent' with parent 'slab' already present!
    ```
    
    Fixes: c0f28ce66ecf ("dmaengine: ioatdma: move all the init routines")
    Signed-off-by: Nikita Shubin <n.shubin@yadro.com>
    Acked-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20240514-ioatdma_fixes-v1-1-2776a0913254@yadro.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Exit idle optimizations before HDCP execution [+ + +]
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Mon Feb 12 16:51:59 2024 -0500

    drm/amd/display: Exit idle optimizations before HDCP execution
    
    [ Upstream commit f30a3bea92bdab398531129d187629fb1d28f598 ]
    
    [WHY]
    PSP can access DCN registers during command submission and we need
    to ensure that DCN is not in PG before doing so.
    
    [HOW]
    Add a callback to DM to lock and notify DC for idle optimization exit.
    It can't be DC directly because of a potential race condition with the
    link protection thread and the rest of DM operation.
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Charlene Liu <charlene.liu@amd.com>
    Acked-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: revert Exit idle optimizations before HDCP execution [+ + +]
Author: Martin Leung <martin.leung@amd.com>
Date:   Mon Feb 26 13:20:08 2024 -0500

    drm/amd/display: revert Exit idle optimizations before HDCP execution
    
    commit f2703a3596a279b0be6eeed4c500bdbaa8dc3ce4 upstream.
    
    why and how:
    causes black screen on PNP on DCN 3.5
    
    This reverts commit f30a3bea92bd ("drm/amd/display: Exit idle
    optimizations before HDCP execution")
    
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Acked-by: Wayne Lin <wayne.lin@amd.com>
    Signed-off-by: Martin Leung <martin.leung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: fix UBSAN warning in kv_dpm.c [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon May 20 09:05:21 2024 -0400

    drm/amdgpu: fix UBSAN warning in kv_dpm.c
    
    commit f0d576f840153392d04b2d52cf3adab8f62e8cb6 upstream.
    
    Adds bounds check for sumo_vid_mapping_entry.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3392
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/mso: using joiner is not possible with eDP MSO [+ + +]
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Fri Jun 14 17:23:11 2024 +0300

    drm/i915/mso: using joiner is not possible with eDP MSO
    
    commit 49cc17967be95d64606d5684416ee51eec35e84a upstream.
    
    It's not possible to use the joiner at the same time with eDP MSO. When
    a panel needs MSO, it's not optional, so MSO trumps joiner.
    
    v3: Only change intel_dp_has_joiner(), leave debugfs alone (Ville)
    
    Fixes: bc71194e8897 ("drm/i915/edp: enable eDP MSO during link training")
    Cc: <stable@vger.kernel.org> # v5.13+
    Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1668
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240614142311.589089-1-jani.nikula@intel.com
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 8b5a92ca24eb96bb71e2a55e352687487d87687f)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/lima: add mask irq callback to gp and pp [+ + +]
Author: Erico Nunes <nunes.erico@gmail.com>
Date:   Fri Apr 5 17:29:49 2024 +0200

    drm/lima: add mask irq callback to gp and pp
    
    [ Upstream commit 49c13b4d2dd4a831225746e758893673f6ae961c ]
    
    This is needed because we want to reset those devices in device-agnostic
    code such as lima_sched.
    In particular, masking irqs will be useful before a hard reset to
    prevent race conditions.
    
    Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
    Signed-off-by: Qiang Yu <yuq825@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240405152951.1531555-2-nunes.erico@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/lima: mask irqs in timeout path before hard reset [+ + +]
Author: Erico Nunes <nunes.erico@gmail.com>
Date:   Fri Apr 5 17:29:51 2024 +0200

    drm/lima: mask irqs in timeout path before hard reset
    
    [ Upstream commit a421cc7a6a001b70415aa4f66024fa6178885a14 ]
    
    There is a race condition in which a rendering job might take just long
    enough to trigger the drm sched job timeout handler but also still
    complete before the hard reset is done by the timeout handler.
    This runs into race conditions not expected by the timeout handler.
    In some very specific cases it currently may result in a refcount
    imbalance on lima_pm_idle, with a stack dump such as:
    
    [10136.669170] WARNING: CPU: 0 PID: 0 at drivers/gpu/drm/lima/lima_devfreq.c:205 lima_devfreq_record_idle+0xa0/0xb0
    ...
    [10136.669459] pc : lima_devfreq_record_idle+0xa0/0xb0
    ...
    [10136.669628] Call trace:
    [10136.669634]  lima_devfreq_record_idle+0xa0/0xb0
    [10136.669646]  lima_sched_pipe_task_done+0x5c/0xb0
    [10136.669656]  lima_gp_irq_handler+0xa8/0x120
    [10136.669666]  __handle_irq_event_percpu+0x48/0x160
    [10136.669679]  handle_irq_event+0x4c/0xc0
    
    We can prevent that race condition entirely by masking the irqs at the
    beginning of the timeout handler, at which point we give up on waiting
    for that job entirely.
    The irqs will be enabled again at the next hard reset which is already
    done as a recovery by the timeout handler.
    
    Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
    Reviewed-by: Qiang Yu <yuq825@gmail.com>
    Signed-off-by: Qiang Yu <yuq825@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240405152951.1531555-4-nunes.erico@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon: fix UBSAN warning in kv_dpm.c [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon May 20 09:11:45 2024 -0400

    drm/radeon: fix UBSAN warning in kv_dpm.c
    
    commit a498df5421fd737d11bfd152428ba6b1c8538321 upstream.
    
    Adds bounds check for sumo_vid_mapping_entry.
    
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drop_monitor: replace spin_lock by raw_spin_lock [+ + +]
Author: Wander Lairson Costa <wander@redhat.com>
Date:   Thu Apr 11 11:13:46 2024 -0300

    drop_monitor: replace spin_lock by raw_spin_lock
    
    [ Upstream commit f1e197a665c2148ebc25fe09c53689e60afea195 ]
    
    trace_drop_common() is called with preemption disabled, and it acquires
    a spin_lock. This is problematic for RT kernels because spin_locks are
    sleeping locks in this configuration, which causes the following splat:
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 449, name: rcuc/47
    preempt_count: 1, expected: 0
    RCU nest depth: 2, expected: 2
    5 locks held by rcuc/47/449:
     #0: ff1100086ec30a60 ((softirq_ctrl.lock)){+.+.}-{2:2}, at: __local_bh_disable_ip+0x105/0x210
     #1: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: rt_spin_lock+0xbf/0x130
     #2: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: __local_bh_disable_ip+0x11c/0x210
     #3: ffffffffb394a160 (rcu_callback){....}-{0:0}, at: rcu_do_batch+0x360/0xc70
     #4: ff1100086ee07520 (&data->lock){+.+.}-{2:2}, at: trace_drop_common.constprop.0+0xb5/0x290
    irq event stamp: 139909
    hardirqs last  enabled at (139908): [<ffffffffb1df2b33>] _raw_spin_unlock_irqrestore+0x63/0x80
    hardirqs last disabled at (139909): [<ffffffffb19bd03d>] trace_drop_common.constprop.0+0x26d/0x290
    softirqs last  enabled at (139892): [<ffffffffb07a1083>] __local_bh_enable_ip+0x103/0x170
    softirqs last disabled at (139898): [<ffffffffb0909b33>] rcu_cpu_kthread+0x93/0x1f0
    Preemption disabled at:
    [<ffffffffb1de786b>] rt_mutex_slowunlock+0xab/0x2e0
    CPU: 47 PID: 449 Comm: rcuc/47 Not tainted 6.9.0-rc2-rt1+ #7
    Hardware name: Dell Inc. PowerEdge R650/0Y2G81, BIOS 1.6.5 04/15/2022
    Call Trace:
     <TASK>
     dump_stack_lvl+0x8c/0xd0
     dump_stack+0x14/0x20
     __might_resched+0x21e/0x2f0
     rt_spin_lock+0x5e/0x130
     ? trace_drop_common.constprop.0+0xb5/0x290
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     trace_drop_common.constprop.0+0xb5/0x290
     ? preempt_count_sub+0x1c/0xd0
     ? _raw_spin_unlock_irqrestore+0x4a/0x80
     ? __pfx_trace_drop_common.constprop.0+0x10/0x10
     ? rt_mutex_slowunlock+0x26a/0x2e0
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     ? __pfx_rt_mutex_slowunlock+0x10/0x10
     ? skb_queue_purge_reason.part.0+0x1bf/0x230
     trace_kfree_skb_hit+0x15/0x20
     trace_kfree_skb+0xe9/0x150
     kfree_skb_reason+0x7b/0x110
     skb_queue_purge_reason.part.0+0x1bf/0x230
     ? __pfx_skb_queue_purge_reason.part.0+0x10/0x10
     ? mark_lock.part.0+0x8a/0x520
    ...
    
    trace_drop_common() also disables interrupts, but this is a minor issue
    because we could easily replace it with a local_lock.
    
    Replace the spin_lock with raw_spin_lock to avoid sleeping in atomic
    context.
    
    Signed-off-by: Wander Lairson Costa <wander@redhat.com>
    Reported-by: Hu Chunyu <chuhu@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dt-bindings: dma: fsl-edma: fix dma-channels constraints [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Tue May 21 10:30:02 2024 +0200

    dt-bindings: dma: fsl-edma: fix dma-channels constraints
    
    commit 1345a13f18370ad9e5bc98995959a27f9bd71464 upstream.
    
    dma-channels is a number, not a list.  Apply proper constraints on the
    actual number.
    
    Fixes: 6eb439dff645 ("dt-bindings: fsl-dma: fsl-edma: add edma3 compatible string")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Acked-by: Rob Herring (Arm) <robh@kernel.org>
    Link: https://lore.kernel.org/r/20240521083002.23262-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dt-bindings: i2c: atmel,at91sam: correct path to i2c-controller schema [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Thu Jun 20 13:34:49 2024 +0200

    dt-bindings: i2c: atmel,at91sam: correct path to i2c-controller schema
    
    commit d4e001ffeccfc128c715057e866f301ac9b95728 upstream.
    
    The referenced i2c-controller.yaml schema is provided by dtschema
    package (outside of Linux kernel), so use full path to reference it.
    
    Cc: stable@vger.kernel.org
    Fixes: 7ea75dd386be ("dt-bindings: i2c: convert i2c-at91 to json-schema")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Thu Jun 20 13:34:50 2024 +0200

    dt-bindings: i2c: google,cros-ec-i2c-tunnel: correct path to i2c-controller schema
    
    commit 5c8cfd592bb7632200b4edac8f2c7ec892ed9d81 upstream.
    
    The referenced i2c-controller.yaml schema is provided by dtschema
    package (outside of Linux kernel), so use full path to reference it.
    
    Cc: stable@vger.kernel.org
    Fixes: 1acd4577a66f ("dt-bindings: i2c: convert i2c-cros-ec-tunnel to json-schema")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
efi/loongarch: Directly position the loaded image file [+ + +]
Author: Wang Yao <wangyao@lemote.com>
Date:   Tue Dec 19 17:14:05 2023 +0800

    efi/loongarch: Directly position the loaded image file
    
    [ Upstream commit 174a0c565cea74a7811ff79fbee1b70247570ade ]
    
    The use of the 'kernel_offset' variable to position the image file that
    has been loaded by UEFI or GRUB is unnecessary, because we can directly
    position the loaded image file through using the image_base field of the
    efi_loaded_image struct provided by UEFI.
    
    Replace kernel_offset with image_base to position the image file that has
    been loaded by UEFI or GRUB.
    
    Signed-off-by: Wang Yao <wangyao@lemote.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Stable-dep-of: beb2800074c1 ("LoongArch: Fix entry point in kernel image header")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
efi/x86: Free EFI memory map only when installing a new one. [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Mon Jun 10 16:02:13 2024 +0200

    efi/x86: Free EFI memory map only when installing a new one.
    
    commit 75dde792d6f6c2d0af50278bd374bf0c512fe196 upstream.
    
    The logic in __efi_memmap_init() is shared between two different
    execution flows:
    - mapping the EFI memory map early or late into the kernel VA space, so
      that its entries can be accessed;
    - the x86 specific cloning of the EFI memory map in order to insert new
      entries that are created as a result of making a memory reservation
      via a call to efi_mem_reserve().
    
    In the former case, the underlying memory containing the kernel's view
    of the EFI memory map (which may be heavily modified by the kernel
    itself on x86) is not modified at all, and the only thing that changes
    is the virtual mapping of this memory, which is different between early
    and late boot.
    
    In the latter case, an entirely new allocation is created that carries a
    new, updated version of the kernel's view of the EFI memory map. When
    installing this new version, the old version will no longer be
    referenced, and if the memory was allocated by the kernel, it will leak
    unless it gets freed.
    
    The logic that implements this freeing currently lives on the code path
    that is shared between these two use cases, but it should only apply to
    the latter. So move it to the correct spot.
    
    While at it, drop the dummy definition for non-x86 architectures, as
    that is no longer needed.
    
    Cc: <stable@vger.kernel.org>
    Fixes: f0ef6523475f ("efi: Fix efi_memmap_alloc() leaks")
    Tested-by: Ashish Kalra <Ashish.Kalra@amd.com>
    Link: https://lore.kernel.org/all/36ad5079-4326-45ed-85f6-928ff76483d3@amd.com
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ext4: avoid overflow when setting values via sysfs [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Mar 19 19:33:17 2024 +0800

    ext4: avoid overflow when setting values via sysfs
    
    commit 9e8e819f8f272c4e5dcd0bd6c7450e36481ed139 upstream.
    
    When setting values of type unsigned int through sysfs, we use kstrtoul()
    to parse it and then truncate part of it as the final set value, when the
    set value is greater than UINT_MAX, the set value will not match what we
    see because of the truncation. As follows:
    
      $ echo 4294967296 > /sys/fs/ext4/sda/mb_max_linear_groups
      $ cat /sys/fs/ext4/sda/mb_max_linear_groups
        0
    
    So we use kstrtouint() to parse the attr_pointer_ui type to avoid the
    inconsistency described above. In addition, a judgment is added to avoid
    setting s_resv_clusters less than 0.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20240319113325.3110393-2-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists() [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Mar 19 19:33:20 2024 +0800

    ext4: fix slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists()
    
    commit 13df4d44a3aaabe61cd01d277b6ee23ead2a5206 upstream.
    
    We can trigger a slab-out-of-bounds with the following commands:
    
        mkfs.ext4 -F /dev/$disk 10G
        mount /dev/$disk /tmp/test
        echo 2147483647 > /sys/fs/ext4/$disk/mb_group_prealloc
        echo test > /tmp/test/file && sync
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in ext4_mb_find_good_group_avg_frag_lists+0x8a/0x200 [ext4]
    Read of size 8 at addr ffff888121b9d0f0 by task kworker/u2:0/11
    CPU: 0 PID: 11 Comm: kworker/u2:0 Tainted: GL 6.7.0-next-20240118 #521
    Call Trace:
     dump_stack_lvl+0x2c/0x50
     kasan_report+0xb6/0xf0
     ext4_mb_find_good_group_avg_frag_lists+0x8a/0x200 [ext4]
     ext4_mb_regular_allocator+0x19e9/0x2370 [ext4]
     ext4_mb_new_blocks+0x88a/0x1370 [ext4]
     ext4_ext_map_blocks+0x14f7/0x2390 [ext4]
     ext4_map_blocks+0x569/0xea0 [ext4]
     ext4_do_writepages+0x10f6/0x1bc0 [ext4]
    [...]
    ==================================================================
    
    The flow of issue triggering is as follows:
    
    // Set s_mb_group_prealloc to 2147483647 via sysfs
    ext4_mb_new_blocks
      ext4_mb_normalize_request
        ext4_mb_normalize_group_request
          ac->ac_g_ex.fe_len = EXT4_SB(sb)->s_mb_group_prealloc
      ext4_mb_regular_allocator
        ext4_mb_choose_next_group
          ext4_mb_choose_next_group_best_avail
            mb_avg_fragment_size_order
              order = fls(len) - 2 = 29
            ext4_mb_find_good_group_avg_frag_lists
              frag_list = &sbi->s_mb_avg_fragment_size[order]
              if (list_empty(frag_list)) // Trigger SOOB!
    
    At 4k block size, the length of the s_mb_avg_fragment_size list is 14,
    but an oversized s_mb_group_prealloc is set, causing slab-out-of-bounds
    to be triggered by an attempt to access an element at index 29.
    
    Add a new attr_id attr_clusters_in_group with values in the range
    [0, sbi->s_clusters_per_group] and declare mb_group_prealloc as
    that type to fix the issue. In addition avoid returning an order
    from mb_avg_fragment_size_order() greater than MB_NUM_ORDERS(sb)
    and reduce some useless loops.
    
    Fixes: 7e170922f06b ("ext4: Add allocation criteria 1.5 (CR1_5)")
    CC: stable@vger.kernel.org
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Link: https://lore.kernel.org/r/20240319113325.3110393-5-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix uninitialized ratelimit_state->lock access in __ext4_fill_super() [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Tue Jan 2 21:37:30 2024 +0800

    ext4: fix uninitialized ratelimit_state->lock access in __ext4_fill_super()
    
    [ Upstream commit b4b4fda34e535756f9e774fb2d09c4537b7dfd1c ]
    
    In the following concurrency we will access the uninitialized rs->lock:
    
    ext4_fill_super
      ext4_register_sysfs
       // sysfs registered msg_ratelimit_interval_ms
                                 // Other processes modify rs->interval to
                                 // non-zero via msg_ratelimit_interval_ms
      ext4_orphan_cleanup
        ext4_msg(sb, KERN_INFO, "Errors on filesystem, "
          __ext4_msg
            ___ratelimit(&(EXT4_SB(sb)->s_msg_ratelimit_state)
              if (!rs->interval)  // do nothing if interval is 0
                return 1;
              raw_spin_trylock_irqsave(&rs->lock, flags)
                raw_spin_trylock(lock)
                  _raw_spin_trylock
                    __raw_spin_trylock
                      spin_acquire(&lock->dep_map, 0, 1, _RET_IP_)
                        lock_acquire
                          __lock_acquire
                            register_lock_class
                              assign_lock_key
                                dump_stack();
      ratelimit_state_init(&sbi->s_msg_ratelimit_state, 5 * HZ, 10);
        raw_spin_lock_init(&rs->lock);
        // init rs->lock here
    
    and get the following dump_stack:
    
    =========================================================
    INFO: trying to register non-static key.
    The code is fine but needs lockdep annotation, or maybe
    you didn't initialize this object before use?
    turning off the locking correctness validator.
    CPU: 12 PID: 753 Comm: mount Tainted: G E 6.7.0-rc6-next-20231222 #504
    [...]
    Call Trace:
     dump_stack_lvl+0xc5/0x170
     dump_stack+0x18/0x30
     register_lock_class+0x740/0x7c0
     __lock_acquire+0x69/0x13a0
     lock_acquire+0x120/0x450
     _raw_spin_trylock+0x98/0xd0
     ___ratelimit+0xf6/0x220
     __ext4_msg+0x7f/0x160 [ext4]
     ext4_orphan_cleanup+0x665/0x740 [ext4]
     __ext4_fill_super+0x21ea/0x2b10 [ext4]
     ext4_fill_super+0x14d/0x360 [ext4]
    [...]
    =========================================================
    
    Normally interval is 0 until s_msg_ratelimit_state is initialized, so
    ___ratelimit() does nothing. But registering sysfs precedes initializing
    rs->lock, so it is possible to change rs->interval to a non-zero value
    via the msg_ratelimit_interval_ms interface of sysfs while rs->lock is
    uninitialized, and then a call to ext4_msg triggers the problem by
    accessing an uninitialized rs->lock. Therefore register sysfs after all
    initializations are complete to avoid such problems.
    
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20240102133730.1098120-1-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
f2fs: don't set RO when shutting down f2fs [+ + +]
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Wed Apr 3 23:07:53 2024 +0000

    f2fs: don't set RO when shutting down f2fs
    
    [ Upstream commit 3bdb7f161697e2d5123b89fe1778ef17a44858e7 ]
    
    Shutdown does not check the error of thaw_super due to readonly, which
    causes a deadlock like below.
    
    f2fs_ioc_shutdown(F2FS_GOING_DOWN_FULLSYNC)        issue_discard_thread
     - bdev_freeze
      - freeze_super
     - f2fs_stop_checkpoint()
      - f2fs_handle_critical_error                     - sb_start_write
        - set RO                                         - waiting
     - bdev_thaw
      - thaw_super_locked
        - return -EINVAL, if sb_rdonly()
     - f2fs_stop_discard_thread
      -> wait for kthread_stop(discard_thread);
    
    Reported-by: "Light Hsieh (謝明燈)" <Light.Hsieh@mediatek.com>
    Reviewed-by: Daeho Jeong <daehojeong@google.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: remove clear SB_INLINECRYPT flag in default_options [+ + +]
Author: Yunlei He <heyunlei@oppo.com>
Date:   Tue Mar 26 14:10:43 2024 +0800

    f2fs: remove clear SB_INLINECRYPT flag in default_options
    
    [ Upstream commit ac5eecf481c29942eb9a862e758c0c8b68090c33 ]
    
    In f2fs_remount, SB_INLINECRYPT flag will be clear and re-set.
    If create new file or open file during this gap, these files
    will not use inlinecrypt. Worse case, it may lead to data
    corruption if wrappedkey_v0 is enable.
    
    Thread A:                               Thread B:
    
    -f2fs_remount                           -f2fs_file_open or f2fs_new_inode
      -default_options
            <- clear SB_INLINECRYPT flag
    
                                              -fscrypt_select_encryption_impl
    
      -parse_options
            <- set SB_INLINECRYPT again
    
    Signed-off-by: Yunlei He <heyunlei@oppo.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
firmware: psci: Fix return value from psci_system_suspend() [+ + +]
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Wed May 15 10:55:28 2024 +0100

    firmware: psci: Fix return value from psci_system_suspend()
    
    [ Upstream commit e7c3696d4692e8046d25f6e63f983e934e12f2c5 ]
    
    Currently we return the value from invoke_psci_fn() directly as return
    value from psci_system_suspend(). It is wrong to send the PSCI interface
    return value directly. psci_to_linux_errno() provide the mapping from
    PSCI return value to the one that can be returned to the callers within
    the kernel.
    
    Use psci_to_linux_errno() to convert and return the correct value from
    psci_system_suspend().
    
    Fixes: faf7ec4a92c0 ("drivers: firmware: psci: add system suspend support")
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Link: https://lore.kernel.org/r/20240515095528.1949992-1-sudeep.holla@arm.com
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/writeback: bail out if there is no more inodes for IO and queued once [+ + +]
Author: Kemeng Shi <shikemeng@huaweicloud.com>
Date:   Wed Feb 28 17:19:54 2024 +0800

    fs/writeback: bail out if there is no more inodes for IO and queued once
    
    [ Upstream commit d92109891f21cf367caa2cc6dff11a4411d917f4 ]
    
    For case there is no more inodes for IO in io list from last wb_writeback,
    We may bail out early even there is inode in dirty list should be written
    back. Only bail out when we queued once to avoid missing dirtied inode.
    
    This is from code reading...
    
    Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
    Link: https://lore.kernel.org/r/20240228091958.288260-3-shikemeng@huaweicloud.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    [brauner@kernel.org: fold in memory corruption fix from Jan in [1]]
    Link: https://lore.kernel.org/r/20240405132346.bid7gibby3lxxhez@quack3 [1]
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
gcov: add support for GCC 14 [+ + +]
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Mon Jun 10 11:27:43 2024 +0200

    gcov: add support for GCC 14
    
    commit c1558bc57b8e5b4da5d821537cd30e2e660861d8 upstream.
    
    Using gcov on kernels compiled with GCC 14 results in truncated 16-byte
    long .gcda files with no usable data.  To fix this, update GCOV_COUNTERS
    to match the value defined by GCC 14.
    
    Tested with GCC versions 14.1.0 and 13.2.0.
    
    Link: https://lkml.kernel.org/r/20240610092743.1609845-1-oberpar@linux.ibm.com
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Reported-by: Allison Henderson <allison.henderson@oracle.com>
    Reported-by: Chuck Lever III <chuck.lever@oracle.com>
    Tested-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: Add quirk for Logitech Casa touchpad [+ + +]
Author: Sean O'Brien <seobrien@chromium.org>
Date:   Mon Apr 29 18:08:05 2024 +0000

    HID: Add quirk for Logitech Casa touchpad
    
    [ Upstream commit dd2c345a94cfa3873cc20db87387ee509c345c1b ]
    
    This device sometimes doesn't send touch release signals when moving
    from >=4 fingers to <4 fingers. Using MT_QUIRK_NOT_SEEN_MEANS_UP instead
    of MT_QUIRK_ALWAYS_VALID makes sure that no touches become stuck.
    
    MT_QUIRK_FORCE_MULTI_INPUT is not necessary for this device, but does no
    harm.
    
    Signed-off-by: Sean O'Brien <seobrien@chromium.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hid: asus: asus_report_fixup: fix potential read out of bounds [+ + +]
Author: Andrew Ballance <andrewjballance@gmail.com>
Date:   Sun Jun 2 03:50:23 2024 -0500

    hid: asus: asus_report_fixup: fix potential read out of bounds
    
    commit 89e1ee118d6f0ee6bd6e80d8fe08839875daa241 upstream.
    
    syzbot reported a potential read out of bounds in asus_report_fixup.
    
    this patch adds checks so that a read out of bounds will not occur
    
    Signed-off-by: Andrew Ballance <andrewjballance@gmail.com>
    Reported-by:  <syzbot+07762f019fd03d01f04c@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=07762f019fd03d01f04c
    Fixes: 59d2f5b7392e ("HID: asus: fix more n-key report descriptors if n-key quirked")
    Link: https://lore.kernel.org/r/20240602085023.1720492-1-andrewjballance@gmail.com
    Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: asus: fix more n-key report descriptors if n-key quirked [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Tue Apr 16 21:03:59 2024 +1200

    HID: asus: fix more n-key report descriptors if n-key quirked
    
    [ Upstream commit 59d2f5b7392e988a391e6924e177c1a68d50223d ]
    
    Adjusts the report descriptor for N-Key devices to
    make the output count 0x01 which completely avoids
    the need for a block of filtering.
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: ocores: set IACK bit after core is enabled [+ + +]
Author: Grygorii Tertychnyi <grembeter@gmail.com>
Date:   Mon May 20 17:39:32 2024 +0200

    i2c: ocores: set IACK bit after core is enabled
    
    commit 5a72477273066b5b357801ab2d315ef14949d402 upstream.
    
    Setting IACK bit when core is disabled does not clear the "Interrupt Flag"
    bit in the status register, and the interrupt remains pending.
    
    Sometimes it causes failure for the very first message transfer, that is
    usually a device probe.
    
    Hence, set IACK bit after core is enabled to clear pending interrupt.
    
    Fixes: 18f98b1e3147 ("[PATCH] i2c: New bus driver for the OpenCores I2C controller")
    Signed-off-by: Grygorii Tertychnyi <grygorii.tertychnyi@leica-geosystems.com>
    Acked-by: Peter Korsgaard <peter@korsgaard.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ice: avoid IRQ collision to fix init failure on ACPI S3 resume [+ + +]
Author: En-Wei Wu <en-wei.wu@canonical.com>
Date:   Thu May 30 22:21:31 2024 +0800

    ice: avoid IRQ collision to fix init failure on ACPI S3 resume
    
    [ Upstream commit bc69ad74867dba1377abe14356c94a946d9837a3 ]
    
    A bug in https://bugzilla.kernel.org/show_bug.cgi?id=218906 describes
    that irdma would break and report hardware initialization failed after
    suspend/resume with Intel E810 NIC (tested on 6.9.0-rc5).
    
    The problem is caused due to the collision between the irq numbers
    requested in irdma and the irq numbers requested in other drivers
    after suspend/resume.
    
    The irq numbers used by irdma are derived from ice's ice_pf->msix_entries
    which stores mappings between MSI-X index and Linux interrupt number.
    It's supposed to be cleaned up when suspend and rebuilt in resume but
    it's not, causing irdma using the old irq numbers stored in the old
    ice_pf->msix_entries to request_irq() when resume. And eventually
    collide with other drivers.
    
    This patch fixes this problem. On suspend, we call ice_deinit_rdma() to
    clean up the ice_pf->msix_entries (and free the MSI-X vectors used by
    irdma if we've dynamically allocated them). On resume, we call
    ice_init_rdma() to rebuild the ice_pf->msix_entries (and allocate the
    MSI-X vectors if we would like to dynamically allocate them).
    
    Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA")
    Tested-by: Cyrus Lien <cyrus.lien@canonical.com>
    Signed-off-by: En-Wei Wu <en-wei.wu@canonical.com>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: Fix VSI list rule with ICE_SW_LKUP_LAST type [+ + +]
Author: Marcin Szycik <marcin.szycik@linux.intel.com>
Date:   Tue Jun 18 14:02:05 2024 -0700

    ice: Fix VSI list rule with ICE_SW_LKUP_LAST type
    
    [ Upstream commit 74382aebc9035470ec4c789bdb0d09d8c14f261e ]
    
    Adding/updating VSI list rule, as well as allocating/freeing VSI list
    resource are called several times with type ICE_SW_LKUP_LAST, which fails
    because ice_update_vsi_list_rule() and ice_aq_alloc_free_vsi_list()
    consider it invalid. Allow calling these functions with ICE_SW_LKUP_LAST.
    
    This fixes at least one issue in switchdev mode, where the same rule with
    different action cannot be added, e.g.:
    
      tc filter add dev $PF1 ingress protocol arp prio 0 flower skip_sw \
        dst_mac ff:ff:ff:ff:ff:ff action mirred egress redirect dev $VF1_PR
      tc filter add dev $PF1 ingress protocol arp prio 0 flower skip_sw \
        dst_mac ff:ff:ff:ff:ff:ff action mirred egress redirect dev $VF2_PR
    
    Fixes: 0f94570d0cae ("ice: allow adding advanced rules")
    Suggested-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20240618210206.981885-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring/rsrc: fix incorrect assignment of iter->nr_segs in io_import_fixed [+ + +]
Author: Chenliang Li <cliang01.li@samsung.com>
Date:   Wed Jun 19 14:38:19 2024 +0800

    io_uring/rsrc: fix incorrect assignment of iter->nr_segs in io_import_fixed
    
    [ Upstream commit a23800f08a60787dfbf2b87b2e6ed411cb629859 ]
    
    In io_import_fixed when advancing the iter within the first bvec, the
    iter->nr_segs is set to bvec->bv_len. nr_segs should be the number of
    bvecs, plus we don't need to adjust it here, so just remove it.
    
    Fixes: b000ae0ec2d7 ("io_uring/rsrc: optimise single entry advance")
    Signed-off-by: Chenliang Li <cliang01.li@samsung.com>
    Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/20240619063819.2445-1-cliang01.li@samsung.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring/sqpoll: work around a potential audit memory leak [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Thu Mar 21 07:38:38 2024 -0600

    io_uring/sqpoll: work around a potential audit memory leak
    
    [ Upstream commit c4ce0ab27646f4206a9eb502d6fe45cb080e1cae ]
    
    kmemleak complains that there's a memory leak related to connect
    handling:
    
    unreferenced object 0xffff0001093bdf00 (size 128):
    comm "iou-sqp-455", pid 457, jiffies 4294894164
    hex dump (first 32 bytes):
    02 00 fa ea 7f 00 00 01 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    backtrace (crc 2e481b1a):
    [<00000000c0a26af4>] kmemleak_alloc+0x30/0x38
    [<000000009c30bb45>] kmalloc_trace+0x228/0x358
    [<000000009da9d39f>] __audit_sockaddr+0xd0/0x138
    [<0000000089a93e34>] move_addr_to_kernel+0x1a0/0x1f8
    [<000000000b4e80e6>] io_connect_prep+0x1ec/0x2d4
    [<00000000abfbcd99>] io_submit_sqes+0x588/0x1e48
    [<00000000e7c25e07>] io_sq_thread+0x8a4/0x10e4
    [<00000000d999b491>] ret_from_fork+0x10/0x20
    
    which can can happen if:
    
    1) The command type does something on the prep side that triggers an
       audit call.
    2) The thread hasn't done any operations before this that triggered
       an audit call inside ->issue(), where we have audit_uring_entry()
       and audit_uring_exit().
    
    Work around this by issuing a blanket NOP operation before the SQPOLL
    does anything.
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/arm-smmu-v3: Free MSIs in case of ENOMEM [+ + +]
Author: Aleksandr Aprelkov <aaprelkov@usergate.com>
Date:   Wed Apr 3 12:37:59 2024 +0700

    iommu/arm-smmu-v3: Free MSIs in case of ENOMEM
    
    [ Upstream commit 80fea979dd9d48d67c5b48d2f690c5da3e543ebd ]
    
    If devm_add_action() returns -ENOMEM, then MSIs are allocated but not
    not freed on teardown. Use devm_add_action_or_reset() instead to keep
    the static analyser happy.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Aleksandr Aprelkov <aaprelkov@usergate.com>
    Link: https://lore.kernel.org/r/20240403053759.643164-1-aaprelkov@usergate.com
    [will: Tweak commit message, remove warning message]
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: prevent possible NULL deref in fib6_nh_init() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jun 14 08:20:02 2024 +0000

    ipv6: prevent possible NULL deref in fib6_nh_init()
    
    [ Upstream commit 2eab4543a2204092c3a7af81d7d6c506e59a03a6 ]
    
    syzbot reminds us that in6_dev_get() can return NULL.
    
    fib6_nh_init()
        ip6_validate_gw(  &idev  )
            ip6_route_check_nh(  idev  )
                *idev = in6_dev_get(dev); // can be NULL
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc00000000bc: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x00000000000005e0-0x00000000000005e7]
    CPU: 0 PID: 11237 Comm: syz-executor.3 Not tainted 6.10.0-rc2-syzkaller-00249-gbe27b8965297 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
     RIP: 0010:fib6_nh_init+0x640/0x2160 net/ipv6/route.c:3606
    Code: 00 00 fc ff df 4c 8b 64 24 58 48 8b 44 24 28 4c 8b 74 24 30 48 89 c1 48 89 44 24 28 48 8d 98 e0 05 00 00 48 89 d8 48 c1 e8 03 <42> 0f b6 04 38 84 c0 0f 85 b3 17 00 00 8b 1b 31 ff 89 de e8 b8 8b
    RSP: 0018:ffffc900032775a0 EFLAGS: 00010202
    RAX: 00000000000000bc RBX: 00000000000005e0 RCX: 0000000000000000
    RDX: 0000000000000010 RSI: ffffc90003277a54 RDI: ffff88802b3a08d8
    RBP: ffffc900032778b0 R08: 00000000000002fc R09: 0000000000000000
    R10: 00000000000002fc R11: 0000000000000000 R12: ffff88802b3a08b8
    R13: 1ffff9200064eec8 R14: ffffc90003277a00 R15: dffffc0000000000
    FS:  00007f940feb06c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 00000000245e8000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      ip6_route_info_create+0x99e/0x12b0 net/ipv6/route.c:3809
      ip6_route_add+0x28/0x160 net/ipv6/route.c:3853
      ipv6_route_ioctl+0x588/0x870 net/ipv6/route.c:4483
      inet6_ioctl+0x21a/0x280 net/ipv6/af_inet6.c:579
      sock_do_ioctl+0x158/0x460 net/socket.c:1222
      sock_ioctl+0x629/0x8e0 net/socket.c:1341
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:907 [inline]
      __se_sys_ioctl+0xfc/0x170 fs/ioctl.c:893
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f940f07cea9
    
    Fixes: 428604fb118f ("ipv6: do not set routes if disable_ipv6 has been enabled")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20240614082002.26407-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipv6: prevent possible NULL dereference in rt6_probe() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Jun 15 15:14:54 2024 +0000

    ipv6: prevent possible NULL dereference in rt6_probe()
    
    [ Upstream commit b86762dbe19a62e785c189f313cda5b989931f37 ]
    
    syzbot caught a NULL dereference in rt6_probe() [1]
    
    Bail out if  __in6_dev_get() returns NULL.
    
    [1]
    Oops: general protection fault, probably for non-canonical address 0xdffffc00000000cb: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000658-0x000000000000065f]
    CPU: 1 PID: 22444 Comm: syz-executor.0 Not tainted 6.10.0-rc2-syzkaller-00383-gb8481381d4e2 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
     RIP: 0010:rt6_probe net/ipv6/route.c:656 [inline]
     RIP: 0010:find_match+0x8c4/0xf50 net/ipv6/route.c:758
    Code: 14 fd f7 48 8b 85 38 ff ff ff 48 c7 45 b0 00 00 00 00 48 8d b8 5c 06 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 19
    RSP: 0018:ffffc900034af070 EFLAGS: 00010203
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffc90004521000
    RDX: 00000000000000cb RSI: ffffffff8990d0cd RDI: 000000000000065c
    RBP: ffffc900034af150 R08: 0000000000000005 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000002 R12: 000000000000000a
    R13: 1ffff92000695e18 R14: ffff8880244a1d20 R15: 0000000000000000
    FS:  00007f4844a5a6c0(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b31b27000 CR3: 000000002d42c000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      rt6_nh_find_match+0xfa/0x1a0 net/ipv6/route.c:784
      nexthop_for_each_fib6_nh+0x26d/0x4a0 net/ipv4/nexthop.c:1496
      __find_rr_leaf+0x6e7/0xe00 net/ipv6/route.c:825
      find_rr_leaf net/ipv6/route.c:853 [inline]
      rt6_select net/ipv6/route.c:897 [inline]
      fib6_table_lookup+0x57e/0xa30 net/ipv6/route.c:2195
      ip6_pol_route+0x1cd/0x1150 net/ipv6/route.c:2231
      pol_lookup_func include/net/ip6_fib.h:616 [inline]
      fib6_rule_lookup+0x386/0x720 net/ipv6/fib6_rules.c:121
      ip6_route_output_flags_noref net/ipv6/route.c:2639 [inline]
      ip6_route_output_flags+0x1d0/0x640 net/ipv6/route.c:2651
      ip6_dst_lookup_tail.constprop.0+0x961/0x1760 net/ipv6/ip6_output.c:1147
      ip6_dst_lookup_flow+0x99/0x1d0 net/ipv6/ip6_output.c:1250
      rawv6_sendmsg+0xdab/0x4340 net/ipv6/raw.c:898
      inet_sendmsg+0x119/0x140 net/ipv4/af_inet.c:853
      sock_sendmsg_nosec net/socket.c:730 [inline]
      __sock_sendmsg net/socket.c:745 [inline]
      sock_write_iter+0x4b8/0x5c0 net/socket.c:1160
      new_sync_write fs/read_write.c:497 [inline]
      vfs_write+0x6b6/0x1140 fs/read_write.c:590
      ksys_write+0x1f8/0x260 fs/read_write.c:643
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 52e1635631b3 ("[IPV6]: ROUTE: Add router_probe_interval sysctl.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20240615151454.166404-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kcov: don't lose track of remote references during softirqs [+ + +]
Author: Aleksandr Nogikh <nogikh@google.com>
Date:   Tue Jun 11 15:32:29 2024 +0200

    kcov: don't lose track of remote references during softirqs
    
    commit 01c8f9806bde438ca1c8cbbc439f0a14a6694f6c upstream.
    
    In kcov_remote_start()/kcov_remote_stop(), we swap the previous KCOV
    metadata of the current task into a per-CPU variable.  However, the
    kcov_mode_enabled(mode) check is not sufficient in the case of remote KCOV
    coverage: current->kcov_mode always remains KCOV_MODE_DISABLED for remote
    KCOV objects.
    
    If the original task that has invoked the KCOV_REMOTE_ENABLE ioctl happens
    to get interrupted and kcov_remote_start() is called, it ultimately leads
    to kcov_remote_stop() NOT restoring the original KCOV reference.  So when
    the task exits, all registered remote KCOV handles remain active forever.
    
    The most uncomfortable effect (at least for syzkaller) is that the bug
    prevents the reuse of the same /sys/kernel/debug/kcov descriptor.  If
    we obtain it in the parent process and then e.g.  drop some
    capabilities and continuously fork to execute individual programs, at
    some point current->kcov of the forked process is lost,
    kcov_task_exit() takes no action, and all KCOV_REMOTE_ENABLE ioctls
    calls from subsequent forks fail.
    
    And, yes, the efficiency is also affected if we keep on losing remote
    kcov objects.
    a) kcov_remote_map keeps on growing forever.
    b) (If I'm not mistaken), we're also not freeing the memory referenced
    by kcov->area.
    
    Fix it by introducing a special kcov_mode that is assigned to the task
    that owns a KCOV remote object.  It makes kcov_mode_enabled() return true
    and yet does not trigger coverage collection in __sanitizer_cov_trace_pc()
    and write_comp_data().
    
    [nogikh@google.com: replace WRITE_ONCE() with an ordinary assignment]
      Link: https://lkml.kernel.org/r/20240614171221.2837584-1-nogikh@google.com
    Link: https://lkml.kernel.org/r/20240611133229.527822-1-nogikh@google.com
    Fixes: 5ff3b30ab57d ("kcov: collect coverage from interrupts")
    Signed-off-by: Aleksandr Nogikh <nogikh@google.com>
    Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
    Tested-by: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Marco Elver <elver@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kprobe/ftrace: bail out if ftrace was killed [+ + +]
Author: Stephen Brennan <stephen.s.brennan@oracle.com>
Date:   Wed May 1 09:29:56 2024 -0700

    kprobe/ftrace: bail out if ftrace was killed
    
    [ Upstream commit 1a7d0890dd4a502a202aaec792a6c04e6e049547 ]
    
    If an error happens in ftrace, ftrace_kill() will prevent disarming
    kprobes. Eventually, the ftrace_ops associated with the kprobes will be
    freed, yet the kprobes will still be active, and when triggered, they
    will use the freed memory, likely resulting in a page fault and panic.
    
    This behavior can be reproduced quite easily, by creating a kprobe and
    then triggering a ftrace_kill(). For simplicity, we can simulate an
    ftrace error with a kernel module like [1]:
    
    [1]: https://github.com/brenns10/kernel_stuff/tree/master/ftrace_killer
    
      sudo perf probe --add commit_creds
      sudo perf trace -e probe:commit_creds
      # In another terminal
      make
      sudo insmod ftrace_killer.ko  # calls ftrace_kill(), simulating bug
      # Back to perf terminal
      # ctrl-c
      sudo perf probe --del commit_creds
    
    After a short period, a page fault and panic would occur as the kprobe
    continues to execute and uses the freed ftrace_ops. While ftrace_kill()
    is supposed to be used only in extreme circumstances, it is invoked in
    FTRACE_WARN_ON() and so there are many places where an unexpected bug
    could be triggered, yet the system may continue operating, possibly
    without the administrator noticing. If ftrace_kill() does not panic the
    system, then we should do everything we can to continue operating,
    rather than leave a ticking time bomb.
    
    Link: https://lore.kernel.org/all/20240501162956.229427-1-stephen.s.brennan@oracle.com/
    
    Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Acked-by: Guo Ren <guoren@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kprobe/ftrace: fix build error due to bad function definition [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri May 17 19:17:55 2024 -0700

    kprobe/ftrace: fix build error due to bad function definition
    
    commit 4b377b4868ef17b040065bd468668c707d2477a5 upstream.
    
    Commit 1a7d0890dd4a ("kprobe/ftrace: bail out if ftrace was killed")
    introduced a bad K&R function definition, which we haven't accepted in a
    long long time.
    
    Gcc seems to let it slide, but clang notices with the appropriate error:
    
      kernel/kprobes.c:1140:24: error: a function declaration without a prototype is deprecated in all >
       1140 | void kprobe_ftrace_kill()
            |                        ^
            |                         void
    
    but this commit was apparently never in linux-next before it was sent
    upstream, so it didn't get the appropriate build test coverage.
    
    Fixes: 1a7d0890dd4a kprobe/ftrace: bail out if ftrace was killed
    Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
    Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: Guo Ren <guoren@kernel.org>
    Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kselftest: arm64: Add a null pointer check [+ + +]
Author: Kunwu Chan <chentao@kylinos.cn>
Date:   Tue Apr 23 16:21:02 2024 +0800

    kselftest: arm64: Add a null pointer check
    
    [ Upstream commit 80164282b3620a3cb73de6ffda5592743e448d0e ]
    
    There is a 'malloc' call, which can be unsuccessful.
    This patch will add the malloc failure checking
    to avoid possible null dereference and give more information
    about test fail reasons.
    
    Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Link: https://lore.kernel.org/r/20240423082102.2018886-1-chentao@kylinos.cn
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: arm64: Disassociate vcpus from redistributor region on teardown [+ + +]
Author: Marc Zyngier <maz@kernel.org>
Date:   Wed Jun 5 18:56:37 2024 +0100

    KVM: arm64: Disassociate vcpus from redistributor region on teardown
    
    commit 0d92e4a7ffd5c42b9fa864692f82476c0bf8bcc8 upstream.
    
    When tearing down a redistributor region, make sure we don't have
    any dangling pointer to that region stored in a vcpu.
    
    Fixes: e5a35635464b ("kvm: arm64: vgic-v3: Introduce vgic_v3_free_redist_region()")
    Reported-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20240605175637.1635653-1-maz@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin() [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Fri May 10 02:23:52 2024 -0700

    KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()
    
    commit 49f683b41f28918df3e51ddc0d928cb2e934ccdb upstream.
    
    Use {READ,WRITE}_ONCE() to access kvm->last_boosted_vcpu to ensure the
    loads and stores are atomic.  In the extremely unlikely scenario the
    compiler tears the stores, it's theoretically possible for KVM to attempt
    to get a vCPU using an out-of-bounds index, e.g. if the write is split
    into multiple 8-bit stores, and is paired with a 32-bit load on a VM with
    257 vCPUs:
    
      CPU0                              CPU1
      last_boosted_vcpu = 0xff;
    
                                        (last_boosted_vcpu = 0x100)
                                        last_boosted_vcpu[15:8] = 0x01;
      i = (last_boosted_vcpu = 0x1ff)
                                        last_boosted_vcpu[7:0] = 0x00;
    
      vcpu = kvm->vcpu_array[0x1ff];
    
    As detected by KCSAN:
    
      BUG: KCSAN: data-race in kvm_vcpu_on_spin [kvm] / kvm_vcpu_on_spin [kvm]
    
      write to 0xffffc90025a92344 of 4 bytes by task 4340 on cpu 16:
      kvm_vcpu_on_spin (arch/x86/kvm/../../../virt/kvm/kvm_main.c:4112) kvm
      handle_pause (arch/x86/kvm/vmx/vmx.c:5929) kvm_intel
      vmx_handle_exit (arch/x86/kvm/vmx/vmx.c:?
                     arch/x86/kvm/vmx/vmx.c:6606) kvm_intel
      vcpu_run (arch/x86/kvm/x86.c:11107 arch/x86/kvm/x86.c:11211) kvm
      kvm_arch_vcpu_ioctl_run (arch/x86/kvm/x86.c:?) kvm
      kvm_vcpu_ioctl (arch/x86/kvm/../../../virt/kvm/kvm_main.c:?) kvm
      __se_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:904 fs/ioctl.c:890)
      __x64_sys_ioctl (fs/ioctl.c:890)
      x64_sys_call (arch/x86/entry/syscall_64.c:33)
      do_syscall_64 (arch/x86/entry/common.c:?)
      entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
      read to 0xffffc90025a92344 of 4 bytes by task 4342 on cpu 4:
      kvm_vcpu_on_spin (arch/x86/kvm/../../../virt/kvm/kvm_main.c:4069) kvm
      handle_pause (arch/x86/kvm/vmx/vmx.c:5929) kvm_intel
      vmx_handle_exit (arch/x86/kvm/vmx/vmx.c:?
                            arch/x86/kvm/vmx/vmx.c:6606) kvm_intel
      vcpu_run (arch/x86/kvm/x86.c:11107 arch/x86/kvm/x86.c:11211) kvm
      kvm_arch_vcpu_ioctl_run (arch/x86/kvm/x86.c:?) kvm
      kvm_vcpu_ioctl (arch/x86/kvm/../../../virt/kvm/kvm_main.c:?) kvm
      __se_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:904 fs/ioctl.c:890)
      __x64_sys_ioctl (fs/ioctl.c:890)
      x64_sys_call (arch/x86/entry/syscall_64.c:33)
      do_syscall_64 (arch/x86/entry/common.c:?)
      entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
      value changed: 0x00000012 -> 0x00000000
    
    Fixes: 217ece6129f2 ("KVM: use yield_to instead of sleep in kvm_vcpu_on_spin")
    Cc: stable@vger.kernel.org
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Link: https://lore.kernel.org/r/20240510092353.2261824-1-leitao@debian.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Mon Jun 10 18:48:45 2024 -0700

    KVM: x86: Always sync PIR to IRR prior to scanning I/O APIC routes
    
    commit f3ced000a2df53f4b12849e121769045a81a3b22 upstream.
    
    Sync pending posted interrupts to the IRR prior to re-scanning I/O APIC
    routes, irrespective of whether the I/O APIC is emulated by userspace or
    by KVM.  If a level-triggered interrupt routed through the I/O APIC is
    pending or in-service for a vCPU, KVM needs to intercept EOIs on said
    vCPU even if the vCPU isn't the destination for the new routing, e.g. if
    servicing an interrupt using the old routing races with I/O APIC
    reconfiguration.
    
    Commit fceb3a36c29a ("KVM: x86: ioapic: Fix level-triggered EOI and
    userspace I/OAPIC reconfigure race") fixed the common cases, but
    kvm_apic_pending_eoi() only checks if an interrupt is in the local
    APIC's IRR or ISR, i.e. misses the uncommon case where an interrupt is
    pending in the PIR.
    
    Failure to intercept EOI can manifest as guest hangs with Windows 11 if
    the guest uses the RTC as its timekeeping source, e.g. if the VMM doesn't
    expose a more modern form of time to the guest.
    
    Cc: stable@vger.kernel.org
    Cc: Adamos Ttofari <attofari@amazon.de>
    Cc: Raghavendra Rao Ananta <rananta@google.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-ID: <20240611014845.82795-1-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.36 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jun 27 13:49:15 2024 +0200

    Linux 6.6.36
    
    Link: https://lore.kernel.org/r/20240625085537.150087723@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Kelsey Steele <kelseysteele@linux.microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
locking/atomic: scripts: fix ${atomic}_sub_and_test() kerneldoc [+ + +]
Author: Carlos Llamas <cmllamas@google.com>
Date:   Wed May 15 13:37:10 2024 +0000

    locking/atomic: scripts: fix ${atomic}_sub_and_test() kerneldoc
    
    commit f92a59f6d12e31ead999fee9585471b95a8ae8a3 upstream.
    
    For ${atomic}_sub_and_test() the @i parameter is the value to subtract,
    not add. Fix the typo in the kerneldoc template and generate the headers
    with this update.
    
    Fixes: ad8110706f38 ("locking/atomic: scripts: generate kerneldoc comments")
    Suggested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20240515133844.3502360-1-cmllamas@google.com
    [cmllamas: generate headers with gen-atomics.sh]
    Signed-off-by: Carlos Llamas <cmllamas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Fix entry point in kernel image header [+ + +]
Author: Jiaxun Yang <jiaxun.yang@flygoat.com>
Date:   Mon Jun 3 15:45:53 2024 +0800

    LoongArch: Fix entry point in kernel image header
    
    [ Upstream commit beb2800074c15362cf9f6c7301120910046d6556 ]
    
    Currently kernel entry in head.S is in DMW address range, firmware is
    instructed to jump to this address after loading the kernel image.
    
    However kernel should not make any assumption on firmware's DMW
    setting, thus the entry point should be a physical address falls into
    direct translation region.
    
    Fix by converting entry address to physical and amend entry calculation
    logic in libstub accordingly.
    
    BTW, use ABSOLUTE() to calculate variables to make Clang/LLVM happy.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

LoongArch: Fix multiple hardware watchpoint issues [+ + +]
Author: Hui Li <lihui@loongson.cn>
Date:   Fri Jun 21 10:18:40 2024 +0800

    LoongArch: Fix multiple hardware watchpoint issues
    
    commit 3eb2a8b23598e90fda43abb0f23cb267bd5018ba upstream.
    
    In the current code, if multiple hardware breakpoints/watchpoints in
    a user-space thread, some of them will not be triggered.
    
    When debugging the following code using gdb.
    
    lihui@bogon:~$ cat test.c
      #include <stdio.h>
      int a = 0;
      int main()
      {
        printf("start test\n");
        a = 1;
        printf("a = %d\n", a);
        printf("end test\n");
        return 0;
      }
    lihui@bogon:~$ gcc -g test.c -o test
    lihui@bogon:~$ gdb test
    ...
    (gdb) start
    ...
    Temporary breakpoint 1, main () at test.c:5
    5        printf("start test\n");
    (gdb) watch a
    Hardware watchpoint 2: a
    (gdb) hbreak 8
    Hardware assisted breakpoint 3 at 0x1200006ec: file test.c, line 8.
    (gdb) c
    Continuing.
    start test
    a = 1
    
    Breakpoint 3, main () at test.c:8
    8        printf("end test\n");
    ...
    
    The first hardware watchpoint is not triggered, the root causes are:
    
    1. In hw_breakpoint_control(), The FWPnCFG1.2.4/MWPnCFG1.2.4 register
       settings are not distinguished. They should be set based on hardware
       watchpoint functions (fetch or load/store operations).
    
    2. In breakpoint_handler() and watchpoint_handler(), it doesn't identify
       which watchpoint is triggered. So, all watchpoint-related perf_event
       callbacks are called and siginfo is sent to the user space. This will
       cause user-space unable to determine which watchpoint is triggered.
       The kernel need to identity which watchpoint is triggered via MWPS/
       FWPS registers, and then call the corresponding perf event callbacks
       to report siginfo to the user-space.
    
    Modify the relevant code to solve above issues.
    
    All changes according to the LoongArch Reference Manual:
    https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
    
    With this patch:
    
    lihui@bogon:~$ gdb test
    ...
    (gdb) start
    ...
    Temporary breakpoint 1, main () at test.c:5
    5        printf("start test\n");
    (gdb) watch a
    Hardware watchpoint 2: a
    (gdb) hbreak 8
    Hardware assisted breakpoint 3 at 0x1200006ec: file test.c, line 8.
    (gdb) c
    Continuing.
    start test
    
    Hardware watchpoint 2: a
    
    Old value = 0
    New value = 1
    main () at test.c:7
    7        printf("a = %d\n", a);
    (gdb) c
    Continuing.
    a = 1
    
    Breakpoint 3, main () at test.c:8
    8        printf("end test\n");
    (gdb) c
    Continuing.
    end test
    [Inferior 1 (process 778) exited normally]
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Li <lihui@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Fix watchpoint setting error [+ + +]
Author: Hui Li <lihui@loongson.cn>
Date:   Fri Jun 21 10:18:40 2024 +0800

    LoongArch: Fix watchpoint setting error
    
    commit f63a47b34b140ed1ca39d7e4bd4f1cdc617fc316 upstream.
    
    In the current code, when debugging the following code using gdb,
    "invalid argument ..." message will be displayed.
    
    lihui@bogon:~$ cat test.c
      #include <stdio.h>
      int a = 0;
      int main()
      {
            a = 1;
            return 0;
      }
    lihui@bogon:~$ gcc -g test.c -o test
    lihui@bogon:~$ gdb test
    ...
    (gdb) watch a
    Hardware watchpoint 1: a
    (gdb) r
    ...
    Invalid argument setting hardware debug registers
    
    There are mainly two types of issues.
    
    1. Some incorrect judgment condition existed in user_watch_state
       argument parsing, causing -EINVAL to be returned.
    
    When setting up a watchpoint, gdb uses the ptrace interface,
    ptrace(PTRACE_SETREGSET, tid, NT_LOONGARCH_HW_WATCH, (void *) &iov)).
    Register values in user_watch_state as follows:
    
      addr[0] = 0x0, mask[0] = 0x0, ctrl[0] = 0x0
      addr[1] = 0x0, mask[1] = 0x0, ctrl[1] = 0x0
      addr[2] = 0x0, mask[2] = 0x0, ctrl[2] = 0x0
      addr[3] = 0x0, mask[3] = 0x0, ctrl[3] = 0x0
      addr[4] = 0x0, mask[4] = 0x0, ctrl[4] = 0x0
      addr[5] = 0x0, mask[5] = 0x0, ctrl[5] = 0x0
      addr[6] = 0x0, mask[6] = 0x0, ctrl[6] = 0x0
      addr[7] = 0x12000803c, mask[7] = 0x0, ctrl[7] = 0x610
    
    In arch_bp_generic_fields(), return -EINVAL when ctrl.len is
    LOONGARCH_BREAKPOINT_LEN_8(0b00). So delete the incorrect judgment here.
    
    In ptrace_hbp_fill_attr_ctrl(), when note_type is NT_LOONGARCH_HW_WATCH
    and ctrl[0] == 0x0, if ((type & HW_BREAKPOINT_RW) != type) will return
    -EINVAL. Here ctrl.type should be set based on note_type, and unnecessary
    judgments can be removed.
    
    2. The watchpoint argument was not set correctly due to unnecessary
       offset and alignment_mask.
    
    Modify ptrace_hbp_fill_attr_ctrl() and hw_breakpoint_arch_parse(), which
    ensure the watchpont argument is set correctly.
    
    All changes according to the LoongArch Reference Manual:
    https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Li <lihui@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Trigger user-space watchpoints correctly [+ + +]
Author: Hui Li <lihui@loongson.cn>
Date:   Fri Jun 21 10:18:40 2024 +0800

    LoongArch: Trigger user-space watchpoints correctly
    
    commit c8e57ab0995c5b443d3c81c8a36b588776dcd0c3 upstream.
    
    In the current code, gdb can set the watchpoint successfully through
    ptrace interface, but watchpoint will not be triggered.
    
    When debugging the following code using gdb.
    
    lihui@bogon:~$ cat test.c
      #include <stdio.h>
      int a = 0;
      int main()
      {
            a = 1;
            printf("a = %d\n", a);
            return 0;
      }
    lihui@bogon:~$ gcc -g test.c -o test
    lihui@bogon:~$ gdb test
    ...
    (gdb) watch a
    ...
    (gdb) r
    ...
    a = 1
    [Inferior 1 (process 4650) exited normally]
    
    No watchpoints were triggered, the root causes are:
    
    1. Kernel uses perf_event and hw_breakpoint framework to control
       watchpoint, but the perf_event corresponding to watchpoint is
       not enabled. So it needs to be enabled according to MWPnCFG3
       or FWPnCFG3 PLV bit field in ptrace_hbp_set_ctrl(), and privilege
       is set according to the monitored addr in hw_breakpoint_control().
       Furthermore, add a judgment in ptrace_hbp_set_addr() to ensure
       kernel-space addr cannot be monitored in user mode.
    
    2. The global enable control for all watchpoints is the WE bit of
       CSR.CRMD, and hardware sets the value to 0 when an exception is
       triggered. When the ERTN instruction is executed to return, the
       hardware restores the value of the PWE field of CSR.PRMD here.
       So, before a thread containing watchpoints be scheduled, the PWE
       field of CSR.PRMD needs to be set to 1. Add this modification in
       hw_breakpoint_control().
    
    All changes according to the LoongArch Reference Manual:
    https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
    https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#basic-control-and-status-registers
    
    With this patch:
    
    lihui@bogon:~$ gdb test
    ...
    (gdb) watch a
    Hardware watchpoint 1: a
    (gdb) r
    ...
    Hardware watchpoint 1: a
    
    Old value = 0
    New value = 1
    main () at test.c:6
    6               printf("a = %d\n", a);
    (gdb) c
    Continuing.
    a = 1
    [Inferior 1 (process 775) exited normally]
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Li <lihui@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
media: intel/ipu6: Fix build with !ACPI [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Wed May 1 14:08:13 2024 +0100

    media: intel/ipu6: Fix build with !ACPI
    
    [ Upstream commit 8810e055b57543f3465cf3c15ba4980f9f14a84e ]
    
    Modify the code so it can be compiled tested in configurations that do
    not have ACPI enabled.
    
    It fixes the following errors:
    drivers/media/pci/intel/ipu-bridge.c:103:30: error: implicit declaration of function ‘acpi_device_handle’; did you mean ‘acpi_fwnode_handle’? [-Werror=implicit-function-declaration]
    drivers/media/pci/intel/ipu-bridge.c:103:30: warning: initialization of ‘acpi_handle’ {aka ‘void *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
    drivers/media/pci/intel/ipu-bridge.c:110:17: error: implicit declaration of function ‘for_each_acpi_dev_match’ [-Werror=implicit-function-declaration]
    drivers/media/pci/intel/ipu-bridge.c:110:74: error: expected ‘;’ before ‘for_each_acpi_consumer_dev’
    drivers/media/pci/intel/ipu-bridge.c:104:29: warning: unused variable ‘consumer’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:103:21: warning: unused variable ‘handle’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:166:38: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:185:43: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:191:30: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:196:30: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:202:30: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:223:31: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:236:18: error: implicit declaration of function ‘acpi_get_physical_device_location’ [-Werror=implicit-function-declaration]
    drivers/media/pci/intel/ipu-bridge.c:236:56: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:238:31: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:256:31: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:275:31: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:280:30: error: invalid use of undefined type ‘struct acpi_device’
    drivers/media/pci/intel/ipu-bridge.c:469:26: error: implicit declaration of function ‘acpi_device_hid’; did you mean ‘dmi_device_id’? [-Werror=implicit-function-declaration]
    drivers/media/pci/intel/ipu-bridge.c:468:74: warning: format ‘%s’ expects argument of type ‘char *’, but argument 4 has type ‘int’ [-Wformat=]
    drivers/media/pci/intel/ipu-bridge.c:637:58: error: expected ‘;’ before ‘{’ token
    drivers/media/pci/intel/ipu-bridge.c:696:1: warning: label ‘err_put_adev’ defined but not used [-Wunused-label]
    drivers/media/pci/intel/ipu-bridge.c:693:1: warning: label ‘err_put_ivsc’ defined but not used [-Wunused-label]
    drivers/media/pci/intel/ipu-bridge.c:691:1: warning: label ‘err_free_swnodes’ defined but not used [-Wunused-label]
    drivers/media/pci/intel/ipu-bridge.c:632:40: warning: unused variable ‘primary’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:632:31: warning: unused variable ‘fwnode’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:733:73: error: expected ‘;’ before ‘{’ token
    drivers/media/pci/intel/ipu-bridge.c:725:24: warning: unused variable ‘csi_dev’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:724:43: warning: unused variable ‘adev’ [-Wunused-variable]
    drivers/media/pci/intel/ipu-bridge.c:599:12: warning: ‘ipu_bridge_instantiate_ivsc’ defined but not used [-Wunused-function]
    drivers/media/pci/intel/ipu-bridge.c:444:13: warning: ‘ipu_bridge_create_connection_swnodes’ defined but not used [-Wunused-function]
    drivers/media/pci/intel/ipu-bridge.c:297:13: warning: ‘ipu_bridge_create_fwnode_properties’ defined but not used [-Wunused-function]
    drivers/media/pci/intel/ipu-bridge.c:155:12: warning: ‘ipu_bridge_check_ivsc_dev’ defined but not used [-Wunused-function]
    
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mtk-vcodec: potential null pointer deference in SCP [+ + +]
Author: Fullway Wang <fullwaywang@outlook.com>
Date:   Thu Jan 18 02:35:06 2024 +0000

    media: mtk-vcodec: potential null pointer deference in SCP
    
    [ Upstream commit 53dbe08504442dc7ba4865c09b3bbf5fe849681b ]
    
    The return value of devm_kzalloc() needs to be checked to avoid
    NULL pointer deference. This is similar to CVE-2022-3113.
    
    Link: https://lore.kernel.org/linux-media/PH7PR20MB5925094DAE3FD750C7E39E01BF712@PH7PR20MB5925.namprd20.prod.outlook.com
    Signed-off-by: Fullway Wang <fullwaywang@outlook.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mips: bmips: BCM6358: make sure CBR is correctly set [+ + +]
Author: Christian Marangi <ansuelsmth@gmail.com>
Date:   Tue Jun 11 13:35:33 2024 +0200

    mips: bmips: BCM6358: make sure CBR is correctly set
    
    [ Upstream commit ce5cdd3b05216b704a704f466fb4c2dff3778caf ]
    
    It was discovered that some device have CBR address set to 0 causing
    kernel panic when arch_sync_dma_for_cpu_all is called.
    
    This was notice in situation where the system is booted from TP1 and
    BMIPS_GET_CBR() returns 0 instead of a valid address and
    !!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
    
    The current check whether RAC flush should be disabled or not are not
    enough hence lets check if CBR is a valid address or not.
    
    Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
    Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
    Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: Octeon: Add PCIe link status check [+ + +]
Author: Songyang Li <leesongyang@outlook.com>
Date:   Wed Mar 20 23:22:00 2024 +0800

    MIPS: Octeon: Add PCIe link status check
    
    [ Upstream commit 29b83a64df3b42c88c0338696feb6fdcd7f1f3b7 ]
    
    The standard PCIe configuration read-write interface is used to
    access the configuration space of the peripheral PCIe devices
    of the mips processor after the PCIe link surprise down, it can
    generate kernel panic caused by "Data bus error". So it is
    necessary to add PCIe link status check for system protection.
    When the PCIe link is down or in training, assigning a value
    of 0 to the configuration address can prevent read-write behavior
    to the configuration space of peripheral PCIe devices, thereby
    preventing kernel panic.
    
    Signed-off-by: Songyang Li <leesongyang@outlook.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: Routerboard 532: Fix vendor retry check code [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Wed May 8 15:07:00 2024 +0300

    MIPS: Routerboard 532: Fix vendor retry check code
    
    [ Upstream commit ae9daffd9028f2500c9ac1517e46d4f2b57efb80 ]
    
    read_config_dword() contains strange condition checking ret for a
    number of values. The ret variable, however, is always zero because
    config_access() never returns anything else. Thus, the retry is always
    taken until number of tries is exceeded.
    
    The code looks like it wants to check *val instead of ret to see if the
    read gave an error response.
    
    Fixes: 73b4390fb234 ("[MIPS] Routerboard 532: Support for base system")
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/page_table_check: fix crash on ZONE_DEVICE [+ + +]
Author: Peter Xu <peterx@redhat.com>
Date:   Wed Jun 5 17:21:46 2024 -0400

    mm/page_table_check: fix crash on ZONE_DEVICE
    
    commit 8bb592c2eca8fd2bc06db7d80b38da18da4a2f43 upstream.
    
    Not all pages may apply to pgtable check.  One example is ZONE_DEVICE
    pages: they map PFNs directly, and they don't allocate page_ext at all
    even if there's struct page around.  One may reference
    devm_memremap_pages().
    
    When both ZONE_DEVICE and page-table-check enabled, then try to map some
    dax memories, one can trigger kernel bug constantly now when the kernel
    was trying to inject some pfn maps on the dax device:
    
     kernel BUG at mm/page_table_check.c:55!
    
    While it's pretty legal to use set_pxx_at() for ZONE_DEVICE pages for page
    fault resolutions, skip all the checks if page_ext doesn't even exist in
    pgtable checker, which applies to ZONE_DEVICE but maybe more.
    
    Link: https://lkml.kernel.org/r/20240605212146.994486-1-peterx@redhat.com
    Fixes: df4e817b7108 ("mm: page table check")
    Signed-off-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Reviewed-by: Alistair Popple <apopple@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default [+ + +]
Author: Rafael Aquini <aquini@redhat.com>
Date:   Thu Jun 6 14:06:22 2024 -0400

    mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default
    
    commit 3afb76a66b5559a7b595155803ce23801558a7a9 upstream.
    
    An ASLR regression was noticed [1] and tracked down to file-mapped areas
    being backed by THP in recent kernels.  The 21-bit alignment constraint
    for such mappings reduces the entropy for randomizing the placement of
    64-bit library mappings and breaks ASLR completely for 32-bit libraries.
    
    The reported issue is easily addressed by increasing vm.mmap_rnd_bits and
    vm.mmap_rnd_compat_bits.  This patch just provides a simple way to set
    ARCH_MMAP_RND_BITS and ARCH_MMAP_RND_COMPAT_BITS to their maximum values
    allowed by the architecture at build time.
    
    [1] https://zolutal.github.io/aslrnt/
    
    [akpm@linux-foundation.org: default to `y' if 32-bit, per Rafael]
    Link: https://lkml.kernel.org/r/20240606180622.102099-1-aquini@redhat.com
    Fixes: 1854bc6e2420 ("mm/readahead: Align file mappings for non-DAX")
    Signed-off-by: Rafael Aquini <aquini@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Mike Rapoport (IBM) <rppt@kernel.org>
    Cc: Paul E. McKenney <paulmck@kernel.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Samuel Holland <samuel.holland@sifive.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nbd: Fix signal handling [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri May 10 13:23:13 2024 -0700

    nbd: Fix signal handling
    
    [ Upstream commit e56d4b633fffea9510db468085bed0799cba4ecd ]
    
    Both nbd_send_cmd() and nbd_handle_cmd() return either a negative error
    number or a positive blk_status_t value. nbd_queue_rq() converts these
    return values into a blk_status_t value. There is a bug in the conversion
    code: if nbd_send_cmd() returns BLK_STS_RESOURCE, nbd_queue_rq() should
    return BLK_STS_RESOURCE instead of BLK_STS_OK. Fix this, move the
    conversion code into nbd_handle_cmd() and fix the remaining sparse warnings.
    
    This patch fixes the following sparse warnings:
    
    drivers/block/nbd.c:673:32: warning: incorrect type in return expression (different base types)
    drivers/block/nbd.c:673:32:    expected int
    drivers/block/nbd.c:673:32:    got restricted blk_status_t [usertype]
    drivers/block/nbd.c:714:48: warning: incorrect type in return expression (different base types)
    drivers/block/nbd.c:714:48:    expected int
    drivers/block/nbd.c:714:48:    got restricted blk_status_t [usertype]
    drivers/block/nbd.c:1120:21: warning: incorrect type in assignment (different base types)
    drivers/block/nbd.c:1120:21:    expected int [assigned] ret
    drivers/block/nbd.c:1120:21:    got restricted blk_status_t [usertype]
    drivers/block/nbd.c:1125:16: warning: incorrect type in return expression (different base types)
    drivers/block/nbd.c:1125:16:    expected restricted blk_status_t
    drivers/block/nbd.c:1125:16:    got int [assigned] ret
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Josef Bacik <jbacik@fb.com>
    Cc: Yu Kuai <yukuai3@huawei.com>
    Cc: Markus Pargmann <mpa@pengutronix.de>
    Fixes: fc17b6534eb8 ("blk-mq: switch ->queue_rq return value to blk_status_t")
    Cc: stable@vger.kernel.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://lore.kernel.org/r/20240510202313.25209-6-bvanassche@acm.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nbd: Improve the documentation of the locking assumptions [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri May 10 13:23:11 2024 -0700

    nbd: Improve the documentation of the locking assumptions
    
    [ Upstream commit 2a6751e052ab4789630bc889c814037068723bc1 ]
    
    Document locking assumptions with lockdep_assert_held() instead of source
    code comments. The advantage of lockdep_assert_held() is that it is
    verified at runtime if lockdep is enabled in the kernel config.
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Josef Bacik <jbacik@fb.com>
    Cc: Yu Kuai <yukuai3@huawei.com>
    Cc: Markus Pargmann <mpa@pengutronix.de>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://lore.kernel.org/r/20240510202313.25209-4-bvanassche@acm.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: e56d4b633fff ("nbd: Fix signal handling")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc() [+ + +]
Author: David Ruth <druth@chromium.org>
Date:   Fri Jun 14 19:03:26 2024 +0000

    net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()
    
    [ Upstream commit d864319871b05fadd153e0aede4811ca7008f5d6 ]
    
    syzbot found hanging tasks waiting on rtnl_lock [1]
    
    A reproducer is available in the syzbot bug.
    
    When a request to add multiple actions with the same index is sent, the
    second request will block forever on the first request. This holds
    rtnl_lock, and causes tasks to hang.
    
    Return -EAGAIN to prevent infinite looping, while keeping documented
    behavior.
    
    [1]
    
    INFO: task kworker/1:0:5088 blocked for more than 143 seconds.
    Not tainted 6.9.0-rc4-syzkaller-00173-g3cdb45594619 #0
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:kworker/1:0 state:D stack:23744 pid:5088 tgid:5088 ppid:2 flags:0x00004000
    Workqueue: events_power_efficient reg_check_chans_work
    Call Trace:
    <TASK>
    context_switch kernel/sched/core.c:5409 [inline]
    __schedule+0xf15/0x5d00 kernel/sched/core.c:6746
    __schedule_loop kernel/sched/core.c:6823 [inline]
    schedule+0xe7/0x350 kernel/sched/core.c:6838
    schedule_preempt_disabled+0x13/0x30 kernel/sched/core.c:6895
    __mutex_lock_common kernel/locking/mutex.c:684 [inline]
    __mutex_lock+0x5b8/0x9c0 kernel/locking/mutex.c:752
    wiphy_lock include/net/cfg80211.h:5953 [inline]
    reg_leave_invalid_chans net/wireless/reg.c:2466 [inline]
    reg_check_chans_work+0x10a/0x10e0 net/wireless/reg.c:2481
    
    Fixes: 0190c1d452a9 ("net: sched: atomically check-allocate action")
    Reported-by: syzbot+b87c222546179f4513a7@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=b87c222546179f4513a7
    Signed-off-by: David Ruth <druth@chromium.org>
    Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Link: https://lore.kernel.org/r/20240614190326.1349786-1-druth@chromium.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/sched: act_api: rely on rcu in tcf_idr_check_alloc [+ + +]
Author: Pedro Tammela <pctammela@mojatatu.com>
Date:   Mon Dec 11 15:18:06 2023 -0300

    net/sched: act_api: rely on rcu in tcf_idr_check_alloc
    
    [ Upstream commit 4b55e86736d5b492cf689125da2600f59c7d2c39 ]
    
    Instead of relying only on the idrinfo->lock mutex for
    bind/alloc logic, rely on a combination of rcu + mutex + atomics
    to better scale the case where multiple rtnl-less filters are
    binding to the same action object.
    
    Action binding happens when an action index is specified explicitly and
    an action exists which such index exists. Example:
      tc actions add action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter add ... matchall action drop index 1
      tc filter ls ...
         filter protocol all pref 49150 matchall chain 0 filter protocol all pref 49150 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
       filter protocol all pref 49151 matchall chain 0 filter protocol all pref 49151 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
       filter protocol all pref 49152 matchall chain 0 filter protocol all pref 49152 matchall chain 0 handle 0x1
         not_in_hw
               action order 1: gact action drop
                random type none pass val 0
                index 1 ref 4 bind 3
    
    When no index is specified, as before, grab the mutex and allocate
    in the idr the next available id. In this version, as opposed to before,
    it's simplified to store the -EBUSY pointer instead of the previous
    alloc + replace combination.
    
    When an index is specified, rely on rcu to find if there's an object in
    such index. If there's none, fallback to the above, serializing on the
    mutex and reserving the specified id. If there's one, it can be an -EBUSY
    pointer, in which case we just try again until it's an action, or an action.
    Given the rcu guarantees, the action found could be dead and therefore
    we need to bump the refcount if it's not 0, handling the case it's
    in fact 0.
    
    As bind and the action refcount are already atomics, these increments can
    happen without the mutex protection while many tcf_idr_check_alloc race
    to bind to the same action instance.
    
    In case binding encounters a parallel delete or add, it will return
    -EAGAIN in order to try again. Both filter and action apis already
    have the retry machinery in-place. In case it's an unlocked filter it
    retries under the rtnl lock.
    
    Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
    Link: https://lore.kernel.org/r/20231211181807.96028-2-pctammela@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: d864319871b0 ("net/sched: act_api: fix possible infinite loop in tcf_idr_check_alloc()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/sched: fix false lockdep warning on qdisc root lock [+ + +]
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Thu Apr 18 15:50:11 2024 +0200

    net/sched: fix false lockdep warning on qdisc root lock
    
    [ Upstream commit af0cb3fa3f9ed258d14abab0152e28a0f9593084 ]
    
    Xiumei and Christoph reported the following lockdep splat, complaining of
    the qdisc root lock being taken twice:
    
     ============================================
     WARNING: possible recursive locking detected
     6.7.0-rc3+ #598 Not tainted
     --------------------------------------------
     swapper/2/0 is trying to acquire lock:
     ffff888177190110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
    
     but task is already holding lock:
     ffff88811995a110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&sch->q.lock);
       lock(&sch->q.lock);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
     5 locks held by swapper/2/0:
      #0: ffff888135a09d98 ((&in_dev->mr_ifc_timer)){+.-.}-{0:0}, at: call_timer_fn+0x11a/0x510
      #1: ffffffffaaee5260 (rcu_read_lock){....}-{1:2}, at: ip_finish_output2+0x2c0/0x1ed0
      #2: ffffffffaaee5200 (rcu_read_lock_bh){....}-{1:2}, at: __dev_queue_xmit+0x209/0x2e70
      #3: ffff88811995a110 (&sch->q.lock){+.-.}-{2:2}, at: __dev_queue_xmit+0x1560/0x2e70
      #4: ffffffffaaee5200 (rcu_read_lock_bh){....}-{1:2}, at: __dev_queue_xmit+0x209/0x2e70
    
     stack backtrace:
     CPU: 2 PID: 0 Comm: swapper/2 Not tainted 6.7.0-rc3+ #598
     Hardware name: Red Hat KVM, BIOS 1.13.0-2.module+el8.3.0+7353+9de0a3cc 04/01/2014
     Call Trace:
      <IRQ>
      dump_stack_lvl+0x4a/0x80
      __lock_acquire+0xfdd/0x3150
      lock_acquire+0x1ca/0x540
      _raw_spin_lock+0x34/0x80
      __dev_queue_xmit+0x1560/0x2e70
      tcf_mirred_act+0x82e/0x1260 [act_mirred]
      tcf_action_exec+0x161/0x480
      tcf_classify+0x689/0x1170
      prio_enqueue+0x316/0x660 [sch_prio]
      dev_qdisc_enqueue+0x46/0x220
      __dev_queue_xmit+0x1615/0x2e70
      ip_finish_output2+0x1218/0x1ed0
      __ip_finish_output+0x8b3/0x1350
      ip_output+0x163/0x4e0
      igmp_ifc_timer_expire+0x44b/0x930
      call_timer_fn+0x1a2/0x510
      run_timer_softirq+0x54d/0x11a0
      __do_softirq+0x1b3/0x88f
      irq_exit_rcu+0x18f/0x1e0
      sysvec_apic_timer_interrupt+0x6f/0x90
      </IRQ>
    
    This happens when TC does a mirred egress redirect from the root qdisc of
    device A to the root qdisc of device B. As long as these two locks aren't
    protecting the same qdisc, they can be acquired in chain: add a per-qdisc
    lockdep key to silence false warnings.
    This dynamic key should safely replace the static key we have in sch_htb:
    it was added to allow enqueueing to the device "direct qdisc" while still
    holding the qdisc root lock.
    
    v2: don't use static keys anymore in HTB direct qdiscs (thanks Eric Dumazet)
    
    CC: Maxim Mikityanskiy <maxim@isovalent.com>
    CC: Xiumei Mu <xmu@redhat.com>
    Reported-by: Christoph Paasch <cpaasch@apple.com>
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/451
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Link: https://lore.kernel.org/r/7dc06d6158f72053cf877a82e2a7a5bd23692faa.1713448007.git.dcaratti@redhat.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path [+ + +]
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Tue Apr 30 19:11:13 2024 +0200

    net/sched: unregister lockdep keys in qdisc_create/qdisc_alloc error path
    
    commit 86735b57c905e775f05de995df35379366b72168 upstream.
    
    Naresh and Eric report several errors (corrupted elements in the dynamic
    key hash list), when running tdc.py or syzbot. The error path of
    qdisc_alloc() and qdisc_create() frees the qdisc memory, but it forgets
    to unregister the lockdep key, thus causing use-after-free like the
    following one:
    
     ==================================================================
     BUG: KASAN: slab-use-after-free in lockdep_register_key+0x5f2/0x700
     Read of size 8 at addr ffff88811236f2a8 by task ip/7925
    
     CPU: 26 PID: 7925 Comm: ip Kdump: loaded Not tainted 6.9.0-rc2+ #648
     Hardware name: Supermicro SYS-6027R-72RF/X9DRH-7TF/7F/iTF/iF, BIOS 3.0  07/26/2013
     Call Trace:
      <TASK>
      dump_stack_lvl+0x7c/0xc0
      print_report+0xc9/0x610
      kasan_report+0x89/0xc0
      lockdep_register_key+0x5f2/0x700
      qdisc_alloc+0x21d/0xb60
      qdisc_create_dflt+0x63/0x3c0
      attach_one_default_qdisc.constprop.37+0x8e/0x170
      dev_activate+0x4bd/0xc30
      __dev_open+0x275/0x380
      __dev_change_flags+0x3f1/0x570
      dev_change_flags+0x7c/0x160
      do_setlink+0x1ea1/0x34b0
      __rtnl_newlink+0x8c9/0x1510
      rtnl_newlink+0x61/0x90
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
     RIP: 0033:0x7f9503f4fa07
     Code: 0a 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b9 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
     RSP: 002b:00007fff6c729068 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 000000006630c681 RCX: 00007f9503f4fa07
     RDX: 0000000000000000 RSI: 00007fff6c7290d0 RDI: 0000000000000003
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000078
     R10: 000000000000009b R11: 0000000000000246 R12: 0000000000000001
     R13: 00007fff6c729180 R14: 0000000000000000 R15: 000055bf67dd9040
      </TASK>
    
     Allocated by task 7745:
      kasan_save_stack+0x1c/0x40
      kasan_save_track+0x10/0x30
      __kasan_kmalloc+0x7b/0x90
      __kmalloc_node+0x1ff/0x460
      qdisc_alloc+0xae/0xb60
      qdisc_create+0xdd/0xfb0
      tc_modify_qdisc+0x37e/0x1960
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
    
     Freed by task 7745:
      kasan_save_stack+0x1c/0x40
      kasan_save_track+0x10/0x30
      kasan_save_free_info+0x36/0x60
      __kasan_slab_free+0xfe/0x180
      kfree+0x113/0x380
      qdisc_create+0xafb/0xfb0
      tc_modify_qdisc+0x37e/0x1960
      rtnetlink_rcv_msg+0x2f0/0xbc0
      netlink_rcv_skb+0x120/0x380
      netlink_unicast+0x420/0x630
      netlink_sendmsg+0x732/0xbc0
      __sock_sendmsg+0x1ea/0x280
      ____sys_sendmsg+0x5a9/0x990
      ___sys_sendmsg+0xf1/0x180
      __sys_sendmsg+0xd3/0x180
      do_syscall_64+0x96/0x180
      entry_SYSCALL_64_after_hwframe+0x71/0x79
    
    Fix this ensuring that lockdep_unregister_key() is called before the
    qdisc struct is freed, also in the error path of qdisc_create() and
    qdisc_alloc().
    
    Fixes: af0cb3fa3f9e ("net/sched: fix false lockdep warning on qdisc root lock")
    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Closes: https://lore.kernel.org/netdev/20240429221706.1492418-1-naresh.kamboju@linaro.org/
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Tested-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/2aa1ca0c0a3aa0acc15925c666c777a4b5de553c.1714496886.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: do not leave a dangling sk pointer, when socket creation fails [+ + +]
Author: Ignat Korchagin <ignat@cloudflare.com>
Date:   Mon Jun 17 22:02:05 2024 +0100

    net: do not leave a dangling sk pointer, when socket creation fails
    
    commit 6cd4a78d962bebbaf8beb7d2ead3f34120e3f7b2 upstream.
    
    It is possible to trigger a use-after-free by:
      * attaching an fentry probe to __sock_release() and the probe calling the
        bpf_get_socket_cookie() helper
      * running traceroute -I 1.1.1.1 on a freshly booted VM
    
    A KASAN enabled kernel will log something like below (decoded and stripped):
    ==================================================================
    BUG: KASAN: slab-use-after-free in __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    Read of size 8 at addr ffff888007110dd8 by task traceroute/299
    
    CPU: 2 PID: 299 Comm: traceroute Tainted: G            E      6.10.0-rc2+ #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
    Call Trace:
     <TASK>
    dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1))
    print_report (mm/kasan/report.c:378 mm/kasan/report.c:488)
    ? __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    kasan_report (mm/kasan/report.c:603)
    ? __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    kasan_check_range (mm/kasan/generic.c:183 mm/kasan/generic.c:189)
    __sock_gen_cookie (./arch/x86/include/asm/atomic64_64.h:15 ./include/linux/atomic/atomic-arch-fallback.h:2583 ./include/linux/atomic/atomic-instrumented.h:1611 net/core/sock_diag.c:29)
    bpf_get_socket_ptr_cookie (./arch/x86/include/asm/preempt.h:94 ./include/linux/sock_diag.h:42 net/core/filter.c:5094 net/core/filter.c:5092)
    bpf_prog_875642cf11f1d139___sock_release+0x6e/0x8e
    bpf_trampoline_6442506592+0x47/0xaf
    __sock_release (net/socket.c:652)
    __sock_create (net/socket.c:1601)
    ...
    Allocated by task 299 on cpu 2 at 78.328492s:
    kasan_save_stack (mm/kasan/common.c:48)
    kasan_save_track (mm/kasan/common.c:68)
    __kasan_slab_alloc (mm/kasan/common.c:312 mm/kasan/common.c:338)
    kmem_cache_alloc_noprof (mm/slub.c:3941 mm/slub.c:4000 mm/slub.c:4007)
    sk_prot_alloc (net/core/sock.c:2075)
    sk_alloc (net/core/sock.c:2134)
    inet_create (net/ipv4/af_inet.c:327 net/ipv4/af_inet.c:252)
    __sock_create (net/socket.c:1572)
    __sys_socket (net/socket.c:1660 net/socket.c:1644 net/socket.c:1706)
    __x64_sys_socket (net/socket.c:1718)
    do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Freed by task 299 on cpu 2 at 78.328502s:
    kasan_save_stack (mm/kasan/common.c:48)
    kasan_save_track (mm/kasan/common.c:68)
    kasan_save_free_info (mm/kasan/generic.c:582)
    poison_slab_object (mm/kasan/common.c:242)
    __kasan_slab_free (mm/kasan/common.c:256)
    kmem_cache_free (mm/slub.c:4437 mm/slub.c:4511)
    __sk_destruct (net/core/sock.c:2117 net/core/sock.c:2208)
    inet_create (net/ipv4/af_inet.c:397 net/ipv4/af_inet.c:252)
    __sock_create (net/socket.c:1572)
    __sys_socket (net/socket.c:1660 net/socket.c:1644 net/socket.c:1706)
    __x64_sys_socket (net/socket.c:1718)
    do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Fix this by clearing the struct socket reference in sk_common_release() to cover
    all protocol families create functions, which may already attached the
    reference to the sk object with sock_init_data().
    
    Fixes: c5dbb89fc2ac ("bpf: Expose bpf_get_socket_cookie to tracing programs")
    Suggested-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/netdev/20240613194047.36478-1-kuniyu@amazon.com/T/
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: D. Wythe <alibuda@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20240617210205.67311-1-ignat@cloudflare.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: realtek: keep default LED state in rtl8366rb [+ + +]
Author: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Date:   Sat Apr 27 02:11:28 2024 -0300

    net: dsa: realtek: keep default LED state in rtl8366rb
    
    [ Upstream commit 5edc6585aafefa3d44fb8a84adf241d90227f7a3 ]
    
    This switch family supports four LEDs for each of its six ports. Each
    LED group is composed of one of these four LEDs from all six ports. LED
    groups can be configured to display hardware information, such as link
    activity, or manually controlled through a bitmap in registers
    RTL8366RB_LED_0_1_CTRL_REG and RTL8366RB_LED_2_3_CTRL_REG.
    
    After a reset, the default LED group configuration for groups 0 to 3
    indicates, respectively, link activity, link at 1000M, 100M, and 10M, or
    RTL8366RB_LED_CTRL_REG as 0x5432. These configurations are commonly used
    for LED indications. However, the driver was replacing that
    configuration to use manually controlled LEDs (RTL8366RB_LED_FORCE)
    without providing a way for the OS to control them. The default
    configuration is deemed more useful than fixed, uncontrollable turned-on
    LEDs.
    
    The driver was enabling/disabling LEDs during port_enable/disable.
    However, these events occur when the port is administratively controlled
    (up or down) and are not related to link presence. Additionally, when a
    port N was disabled, the driver was turning off all LEDs for group N,
    not only the corresponding LED for port N in any of those 4 groups. In
    such cases, if port 0 was brought down, the LEDs for all ports in LED
    group 0 would be turned off. As another side effect, the driver was
    wrongly warning that port 5 didn't have an LED ("no LED for port 5").
    Since showing the administrative state of ports is not an orthodox way
    to use LEDs, it was not worth it to fix it and all this code was
    dropped.
    
    The code to disable LEDs was simplified only changing each LED group to
    the RTL8366RB_LED_OFF state. Registers RTL8366RB_LED_0_1_CTRL_REG and
    RTL8366RB_LED_2_3_CTRL_REG are only used when the corresponding LED
    group is configured with RTL8366RB_LED_FORCE and they don't need to be
    cleaned. The code still references an LED controlled by
    RTL8366RB_INTERRUPT_CONTROL_REG, but as of now, no test device has
    actually used it. Also, some magic numbers were replaced by macros.
    
    Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: lan743x: disable WOL upon resume to restore full data path operation [+ + +]
Author: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
Date:   Fri Jun 14 22:41:55 2024 +0530

    net: lan743x: disable WOL upon resume to restore full data path operation
    
    [ Upstream commit 7725363936a88351b71495774c1e0e852ae4cdca ]
    
    When Wake-on-LAN (WoL) is active and the system is in suspend mode, triggering
    a system event can wake the system from sleep, which may block the data path.
    To restore normal data path functionality after waking, disable all wake-up
    events. Furthermore, clear all Write 1 to Clear (W1C) status bits by writing
    1's to them.
    
    Fixes: 4d94282afd95 ("lan743x: Add power management support")
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: lan743x: Support WOL at both the PHY and MAC appropriately [+ + +]
Author: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
Date:   Fri Jun 14 22:41:56 2024 +0530

    net: lan743x: Support WOL at both the PHY and MAC appropriately
    
    [ Upstream commit 8c248cd836014339498486f14f435c0e344183a7 ]
    
    Prevent options not supported by the PHY from being requested to it by the MAC
    Whenever a WOL option is supported by both, the PHY is given priority
    since that usually leads to better power savings.
    
    Fixes: e9e13b6adc33 ("lan743x: fix for potential NULL pointer dereference with bare card")
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mvpp2: use slab_build_skb for oversized frames [+ + +]
Author: Aryan Srivastava <aryan.srivastava@alliedtelesis.co.nz>
Date:   Thu Jun 13 14:49:00 2024 +1200

    net: mvpp2: use slab_build_skb for oversized frames
    
    [ Upstream commit 4467c09bc7a66a17ffd84d6262d48279b26106ea ]
    
    Setting frag_size to 0 to indicate kmalloc has been deprecated,
    use slab_build_skb directly.
    
    Fixes: ce098da1497c ("skbuff: Introduce slab_build_skb()")
    Signed-off-by: Aryan Srivastava <aryan.srivastava@alliedtelesis.co.nz>
    Reviewed-by: Kees Cook <kees@kernel.org>
    Link: https://lore.kernel.org/r/20240613024900.3842238-1-aryan.srivastava@alliedtelesis.co.nz
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: mxl-gpy: Remove interrupt mask clearing from config_init [+ + +]
Author: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
Date:   Fri Jun 14 22:41:57 2024 +0530

    net: phy: mxl-gpy: Remove interrupt mask clearing from config_init
    
    [ Upstream commit c44d3ffd85db03ebcc3090e55589e10d5af9f3a9 ]
    
    When the system resumes from sleep, the phy_init_hw() function invokes
    config_init(), which clears all interrupt masks and causes wake events to be
    lost in subsequent wake sequences. Remove interrupt mask clearing from
    config_init() and preserve relevant masks in config_intr().
    
    Fixes: 7d901a1e878a ("net: phy: add Maxlinear GPY115/21x/24x driver")
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microchip.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sfp: add quirk for ATS SFP-GE-T 1000Base-TX module [+ + +]
Author: Daniel Golle <daniel@makrotopia.org>
Date:   Tue Apr 23 11:00:25 2024 +0200

    net: sfp: add quirk for ATS SFP-GE-T 1000Base-TX module
    
    [ Upstream commit 0805d67bc0ef95411228e802f31975cfb7555056 ]
    
    Add quirk for ATS SFP-GE-T 1000Base-TX module.
    
    This copper module comes with broken TX_FAULT indicator which must be
    ignored for it to work.
    
    Co-authored-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
    Signed-off-by: Daniel Golle <daniel@makrotopia.org>
    [ rebased on top of net-next ]
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Link: https://lore.kernel.org/r/20240423090025.29231-1-kabel@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: Assign configured channel value to EXTTS event [+ + +]
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Tue Jun 18 09:38:21 2024 +0200

    net: stmmac: Assign configured channel value to EXTTS event
    
    commit 8851346912a1fa33e7a5966fe51f07313b274627 upstream.
    
    Assign the configured channel value to the EXTTS event in the timestamp
    interrupt handler. Without assigning the correct channel, applications
    like ts2phc will refuse to accept the event, resulting in errors such
    as:
    ...
    ts2phc[656.834]: config item end1.ts2phc.pin_index is 0
    ts2phc[656.834]: config item end1.ts2phc.channel is 3
    ts2phc[656.834]: config item end1.ts2phc.extts_polarity is 2
    ts2phc[656.834]: config item end1.ts2phc.extts_correction is 0
    ...
    ts2phc[656.862]: extts on unexpected channel
    ts2phc[658.141]: extts on unexpected channel
    ts2phc[659.140]: extts on unexpected channel
    
    Fixes: f4da56529da60 ("net: stmmac: Add support for external trigger timestamping")
    Cc: stable@vger.kernel.org
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Link: https://lore.kernel.org/r/20240618073821.619751-1-o.rempel@pengutronix.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: stmmac: No need to calculate speed divider when offload is disabled [+ + +]
Author: Xiaolei Wang <xiaolei.wang@windriver.com>
Date:   Mon Jun 17 09:39:22 2024 +0800

    net: stmmac: No need to calculate speed divider when offload is disabled
    
    [ Upstream commit b8c43360f6e424131fa81d3ba8792ad8ff25a09e ]
    
    commit be27b8965297 ("net: stmmac: replace priv->speed with
    the portTransmitRate from the tc-cbs parameters") introduced
    a problem. When deleting, it prompts "Invalid portTransmitRate
    0 (idleSlope - sendSlope)" and exits. Add judgment on cbs.enable.
    Only when offload is enabled, speed divider needs to be calculated.
    
    Fixes: be27b8965297 ("net: stmmac: replace priv->speed with the portTransmitRate from the tc-cbs parameters")
    Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/20240617013922.1035854-1-xiaolei.wang@windriver.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: ax88179_178a: improve reset check [+ + +]
Author: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
Date:   Mon Jun 17 12:28:21 2024 +0200

    net: usb: ax88179_178a: improve reset check
    
    commit 7be4cb7189f747b4e5b6977d0e4387bde3204e62 upstream.
    
    After ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is
    set to down/up") to not reset from usbnet_open after the reset from
    usbnet_probe at initialization stage to speed up this, some issues have
    been reported.
    
    It seems to happen that if the initialization is slower, and some time
    passes between the probe operation and the open operation, the second reset
    from open is necessary too to have the device working. The reason is that
    if there is no activity with the phy, this is "disconnected".
    
    In order to improve this, the solution is to detect when the phy is
    "disconnected", and we can use the phy status register for this. So we will
    only reset the device from reset operation in this situation, that is, only
    if necessary.
    
    The same bahavior is happening when the device is stopped (link set to
    down) and later is restarted (link set to up), so if the phy keeps working
    we only need to enable the mac again, but if enough time passes between the
    device stop and restart, reset is necessary, and we can detect the
    situation checking the phy status register too.
    
    cc: stable@vger.kernel.org # 6.6+
    Fixes: ecf848eb934b ("net: usb: ax88179_178a: fix link status when link is set to down/up")
    Reported-by: Yongqin Liu <yongqin.liu@linaro.org>
    Reported-by: Antje Miederhöfer <a.miederhoefer@gmx.de>
    Reported-by: Arne Fitzenreiter <arne_f@ipfire.org>
    Tested-by: Yongqin Liu <yongqin.liu@linaro.org>
    Tested-by: Antje Miederhöfer <a.miederhoefer@gmx.de>
    Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Jun 19 15:28:03 2024 +0200

    net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings
    
    [ Upstream commit fba383985354e83474f95f36d7c65feb75dba19d ]
    
    This functions retrieves values by passing a pointer. As the function
    that retrieves them can fail before touching the pointers, the variables
    must be initialized.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+5186630949e3c55f0799@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20240619132816.11526-1-oneukum@suse.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: ipset: Fix suspicious rcu_dereference_protected() [+ + +]
Author: Jozsef Kadlecsik <kadlec@netfilter.org>
Date:   Mon Jun 17 11:18:15 2024 +0200

    netfilter: ipset: Fix suspicious rcu_dereference_protected()
    
    [ Upstream commit 8ecd06277a7664f4ef018abae3abd3451d64e7a6 ]
    
    When destroying all sets, we are either in pernet exit phase or
    are executing a "destroy all sets command" from userspace. The latter
    was taken into account in ip_set_dereference() (nfnetlink mutex is held),
    but the former was not. The patch adds the required check to
    rcu_dereference_protected() in ip_set_dereference().
    
    Fixes: 4e7aaa6b82d6 ("netfilter: ipset: Fix race between namespace cleanup and gc in the list:set type")
    Reported-by: syzbot+b62c37cdd58103293a5a@syzkaller.appspotmail.com
    Reported-by: syzbot+cfbe1da5fdfc39efc293@syzkaller.appspotmail.com
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202406141556.e0b6f17e-lkp@intel.com
    Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: move the sysctl nf_hooks_lwtunnel into the netfilter core [+ + +]
Author: Jianguo Wu <wujianguo@chinatelecom.cn>
Date:   Thu Jun 13 17:42:47 2024 +0800

    netfilter: move the sysctl nf_hooks_lwtunnel into the netfilter core
    
    [ Upstream commit a2225e0250c5fa397dcebf6ce65a9f05a114e0cf ]
    
    Currently, the sysctl net.netfilter.nf_hooks_lwtunnel depends on the
    nf_conntrack module, but the nf_conntrack module is not always loaded.
    Therefore, accessing net.netfilter.nf_hooks_lwtunnel may have an error.
    
    Move sysctl nf_hooks_lwtunnel into the netfilter core.
    
    Fixes: 7a3f5b0de364 ("netfilter: add netfilter hooks to SRv6 data plane")
    Suggested-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jianguo Wu <wujianguo@chinatelecom.cn>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netns: Make get_net_ns() handle zero refcount net [+ + +]
Author: Yue Haibing <yuehaibing@huawei.com>
Date:   Fri Jun 14 21:13:02 2024 +0800

    netns: Make get_net_ns() handle zero refcount net
    
    [ Upstream commit ff960f9d3edbe08a736b5a224d91a305ccc946b0 ]
    
    Syzkaller hit a warning:
    refcount_t: addition on 0; use-after-free.
    WARNING: CPU: 3 PID: 7890 at lib/refcount.c:25 refcount_warn_saturate+0xdf/0x1d0
    Modules linked in:
    CPU: 3 PID: 7890 Comm: tun Not tainted 6.10.0-rc3-00100-gcaa4f9578aba-dirty #310
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:refcount_warn_saturate+0xdf/0x1d0
    Code: 41 49 04 31 ff 89 de e8 9f 1e cd fe 84 db 75 9c e8 76 26 cd fe c6 05 b6 41 49 04 01 90 48 c7 c7 b8 8e 25 86 e8 d2 05 b5 fe 90 <0f> 0b 90 90 e9 79 ff ff ff e8 53 26 cd fe 0f b6 1
    RSP: 0018:ffff8881067b7da0 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff811c72ac
    RDX: ffff8881026a2140 RSI: ffffffff811c72b5 RDI: 0000000000000001
    RBP: ffff8881067b7db0 R08: 0000000000000000 R09: 205b5d3730353139
    R10: 0000000000000000 R11: 205d303938375420 R12: ffff8881086500c4
    R13: ffff8881086500c4 R14: ffff8881086500b0 R15: ffff888108650040
    FS:  00007f5b2961a4c0(0000) GS:ffff88823bd00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000055d7ed36fd18 CR3: 00000001482f6000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? show_regs+0xa3/0xc0
     ? __warn+0xa5/0x1c0
     ? refcount_warn_saturate+0xdf/0x1d0
     ? report_bug+0x1fc/0x2d0
     ? refcount_warn_saturate+0xdf/0x1d0
     ? handle_bug+0xa1/0x110
     ? exc_invalid_op+0x3c/0xb0
     ? asm_exc_invalid_op+0x1f/0x30
     ? __warn_printk+0xcc/0x140
     ? __warn_printk+0xd5/0x140
     ? refcount_warn_saturate+0xdf/0x1d0
     get_net_ns+0xa4/0xc0
     ? __pfx_get_net_ns+0x10/0x10
     open_related_ns+0x5a/0x130
     __tun_chr_ioctl+0x1616/0x2370
     ? __sanitizer_cov_trace_switch+0x58/0xa0
     ? __sanitizer_cov_trace_const_cmp2+0x1c/0x30
     ? __pfx_tun_chr_ioctl+0x10/0x10
     tun_chr_ioctl+0x2f/0x40
     __x64_sys_ioctl+0x11b/0x160
     x64_sys_call+0x1211/0x20d0
     do_syscall_64+0x9e/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f5b28f165d7
    Code: b3 66 90 48 8b 05 b1 48 2d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 81 48 2d 00 8
    RSP: 002b:00007ffc2b59c5e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5b28f165d7
    RDX: 0000000000000000 RSI: 00000000000054e3 RDI: 0000000000000003
    RBP: 00007ffc2b59c650 R08: 00007f5b291ed8c0 R09: 00007f5b2961a4c0
    R10: 0000000029690010 R11: 0000000000000246 R12: 0000000000400730
    R13: 00007ffc2b59cf40 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    Kernel panic - not syncing: kernel: panic_on_warn set ...
    
    This is trigger as below:
              ns0                                    ns1
    tun_set_iff() //dev is tun0
       tun->dev = dev
    //ip link set tun0 netns ns1
                                           put_net() //ref is 0
    __tun_chr_ioctl() //TUNGETDEVNETNS
       net = dev_net(tun->dev);
       open_related_ns(&net->ns, get_net_ns); //ns1
         get_net_ns()
            get_net() //addition on 0
    
    Use maybe_get_net() in get_net_ns in case net's ref is zero to fix this
    
    Fixes: 0c3e0e3bb623 ("tun: Add ioctl() TUNGETDEVNETNS cmd to allow obtaining real net ns of tun device")
    Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
    Link: https://lore.kernel.org/r/20240614131302.2698509-1-yuehaibing@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netpoll: Fix race condition in netpoll_owner_active [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Mon Apr 29 03:04:33 2024 -0700

    netpoll: Fix race condition in netpoll_owner_active
    
    [ Upstream commit c2e6a872bde9912f1a7579639c5ca3adf1003916 ]
    
    KCSAN detected a race condition in netpoll:
    
            BUG: KCSAN: data-race in net_rx_action / netpoll_send_skb
            write (marked) to 0xffff8881164168b0 of 4 bytes by interrupt on cpu 10:
            net_rx_action (./include/linux/netpoll.h:90 net/core/dev.c:6712 net/core/dev.c:6822)
    <snip>
            read to 0xffff8881164168b0 of 4 bytes by task 1 on cpu 2:
            netpoll_send_skb (net/core/netpoll.c:319 net/core/netpoll.c:345 net/core/netpoll.c:393)
            netpoll_send_udp (net/core/netpoll.c:?)
    <snip>
            value changed: 0x0000000a -> 0xffffffff
    
    This happens because netpoll_owner_active() needs to check if the
    current CPU is the owner of the lock, touching napi->poll_owner
    non atomically. The ->poll_owner field contains the current CPU holding
    the lock.
    
    Use an atomic read to check if the poll owner is the current CPU.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Link: https://lore.kernel.org/r/20240429100437.3487432-1-leitao@debian.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netrom: Fix a memory leak in nr_heartbeat_expiry() [+ + +]
Author: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
Date:   Thu Jun 13 08:23:00 2024 +0000

    netrom: Fix a memory leak in nr_heartbeat_expiry()
    
    [ Upstream commit 0b9130247f3b6a1122478471ff0e014ea96bb735 ]
    
    syzbot reported a memory leak in nr_create() [0].
    
    Commit 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.")
    added sock_hold() to the nr_heartbeat_expiry() function, where
    a) a socket has a SOCK_DESTROY flag or
    b) a listening socket has a SOCK_DEAD flag.
    
    But in the case "a," when the SOCK_DESTROY flag is set, the file descriptor
    has already been closed and the nr_release() function has been called.
    So it makes no sense to hold the reference count because no one will
    call another nr_destroy_socket() and put it as in the case "b."
    
    nr_connect
      nr_establish_data_link
        nr_start_heartbeat
    
    nr_release
      switch (nr->state)
      case NR_STATE_3
        nr->state = NR_STATE_2
        sock_set_flag(sk, SOCK_DESTROY);
    
                            nr_rx_frame
                              nr_process_rx_frame
                                switch (nr->state)
                                case NR_STATE_2
                                  nr_state2_machine()
                                    nr_disconnect()
                                      nr_sk(sk)->state = NR_STATE_0
                                      sock_set_flag(sk, SOCK_DEAD)
    
                            nr_heartbeat_expiry
                              switch (nr->state)
                              case NR_STATE_0
                                if (sock_flag(sk, SOCK_DESTROY) ||
                                   (sk->sk_state == TCP_LISTEN
                                     && sock_flag(sk, SOCK_DEAD)))
                                   sock_hold()  // ( !!! )
                                   nr_destroy_socket()
    
    To fix the memory leak, let's call sock_hold() only for a listening socket.
    
    Found by InfoTeCS on behalf of Linux Verification Center
    (linuxtesting.org) with Syzkaller.
    
    [0]: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16
    
    Reported-by: syzbot+d327a1f3b12e1e206c16@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16
    Fixes: 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.")
    Signed-off-by: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: convert to new timestamp accessors [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Wed Oct 4 14:52:41 2023 -0400

    ocfs2: convert to new timestamp accessors
    
    [ Upstream commit fd6acbbc4d1edb218ade7ac0ab1839f9e4fcd094 ]
    
    Convert to using the new inode timestamp accessor functions.
    
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Link: https://lore.kernel.org/r/20231004185347.80880-54-jlayton@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: 8c40984eeb88 ("ocfs2: update inode fsync transaction id in ocfs2_unlink and ocfs2_link")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ocfs2: fix NULL pointer dereference in ocfs2_abort_trigger() [+ + +]
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Thu May 30 19:06:30 2024 +0800

    ocfs2: fix NULL pointer dereference in ocfs2_abort_trigger()
    
    commit 685d03c3795378fca6a1b3d43581f7f1a3fc095f upstream.
    
    bdev->bd_super has been removed and commit 8887b94d9322 change the usage
    from bdev->bd_super to b_assoc_map->host->i_sb.  Since ocfs2 hasn't set
    bh->b_assoc_map, it will trigger NULL pointer dereference when calling
    into ocfs2_abort_trigger().
    
    Actually this was pointed out in history, see commit 74e364ad1b13.  But
    I've made a mistake when reviewing commit 8887b94d9322 and then
    re-introduce this regression.
    
    Since we cannot revive bdev in buffer head, so fix this issue by
    initializing all types of ocfs2 triggers when fill super, and then get the
    specific ocfs2 trigger from ocfs2_caching_info when access journal.
    
    [joseph.qi@linux.alibaba.com: v2]
      Link: https://lkml.kernel.org/r/20240602112045.1112708-1-joseph.qi@linux.alibaba.com
    Link: https://lkml.kernel.org/r/20240530110630.3933832-2-joseph.qi@linux.alibaba.com
    Fixes: 8887b94d9322 ("ocfs2: stop using bdev->bd_super for journal error logging")
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: Heming Zhao <heming.zhao@suse.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>    [6.6+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ocfs2: fix NULL pointer dereference in ocfs2_journal_dirty() [+ + +]
Author: Joseph Qi <joseph.qi@linux.alibaba.com>
Date:   Thu May 30 19:06:29 2024 +0800

    ocfs2: fix NULL pointer dereference in ocfs2_journal_dirty()
    
    commit 58f7e1e2c9e72c7974054c64c3abeac81c11f822 upstream.
    
    bdev->bd_super has been removed and commit 8887b94d9322 change the usage
    from bdev->bd_super to b_assoc_map->host->i_sb.  This introduces the
    following NULL pointer dereference in ocfs2_journal_dirty() since
    b_assoc_map is still not initialized.  This can be easily reproduced by
    running xfstests generic/186, which simulate no more credits.
    
    [  134.351592] BUG: kernel NULL pointer dereference, address: 0000000000000000
    ...
    [  134.355341] RIP: 0010:ocfs2_journal_dirty+0x14f/0x160 [ocfs2]
    ...
    [  134.365071] Call Trace:
    [  134.365312]  <TASK>
    [  134.365524]  ? __die_body+0x1e/0x60
    [  134.365868]  ? page_fault_oops+0x13d/0x4f0
    [  134.366265]  ? __pfx_bit_wait_io+0x10/0x10
    [  134.366659]  ? schedule+0x27/0xb0
    [  134.366981]  ? exc_page_fault+0x6a/0x140
    [  134.367356]  ? asm_exc_page_fault+0x26/0x30
    [  134.367762]  ? ocfs2_journal_dirty+0x14f/0x160 [ocfs2]
    [  134.368305]  ? ocfs2_journal_dirty+0x13d/0x160 [ocfs2]
    [  134.368837]  ocfs2_create_new_meta_bhs.isra.51+0x139/0x2e0 [ocfs2]
    [  134.369454]  ocfs2_grow_tree+0x688/0x8a0 [ocfs2]
    [  134.369927]  ocfs2_split_and_insert.isra.67+0x35c/0x4a0 [ocfs2]
    [  134.370521]  ocfs2_split_extent+0x314/0x4d0 [ocfs2]
    [  134.371019]  ocfs2_change_extent_flag+0x174/0x410 [ocfs2]
    [  134.371566]  ocfs2_add_refcount_flag+0x3fa/0x630 [ocfs2]
    [  134.372117]  ocfs2_reflink_remap_extent+0x21b/0x4c0 [ocfs2]
    [  134.372994]  ? inode_update_timestamps+0x4a/0x120
    [  134.373692]  ? __pfx_ocfs2_journal_access_di+0x10/0x10 [ocfs2]
    [  134.374545]  ? __pfx_ocfs2_journal_access_di+0x10/0x10 [ocfs2]
    [  134.375393]  ocfs2_reflink_remap_blocks+0xe4/0x4e0 [ocfs2]
    [  134.376197]  ocfs2_remap_file_range+0x1de/0x390 [ocfs2]
    [  134.376971]  ? security_file_permission+0x29/0x50
    [  134.377644]  vfs_clone_file_range+0xfe/0x320
    [  134.378268]  ioctl_file_clone+0x45/0xa0
    [  134.378853]  do_vfs_ioctl+0x457/0x990
    [  134.379422]  __x64_sys_ioctl+0x6e/0xd0
    [  134.379987]  do_syscall_64+0x5d/0x170
    [  134.380550]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  134.381231] RIP: 0033:0x7fa4926397cb
    [  134.381786] Code: 73 01 c3 48 8b 0d bd 56 38 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 8d 56 38 00 f7 d8 64 89 01 48
    [  134.383930] RSP: 002b:00007ffc2b39f7b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  134.384854] RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007fa4926397cb
    [  134.385734] RDX: 00007ffc2b39f7f0 RSI: 000000004020940d RDI: 0000000000000003
    [  134.386606] RBP: 0000000000000000 R08: 00111a82a4f015bb R09: 00007fa494221000
    [  134.387476] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [  134.388342] R13: 0000000000f10000 R14: 0000558e844e2ac8 R15: 0000000000f10000
    [  134.389207]  </TASK>
    
    Fix it by only aborting transaction and journal in ocfs2_journal_dirty()
    now, and leave ocfs2_abort() later when detecting an aborted handle,
    e.g. start next transaction. Also log the handle details in this case.
    
    Link: https://lkml.kernel.org/r/20240530110630.3933832-1-joseph.qi@linux.alibaba.com
    Fixes: 8887b94d9322 ("ocfs2: stop using bdev->bd_super for journal error logging")
    Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: Heming Zhao <heming.zhao@suse.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>    [6.6+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ocfs2: update inode fsync transaction id in ocfs2_unlink and ocfs2_link [+ + +]
Author: Su Yue <glass.su@suse.com>
Date:   Mon Apr 8 16:20:40 2024 +0800

    ocfs2: update inode fsync transaction id in ocfs2_unlink and ocfs2_link
    
    [ Upstream commit 8c40984eeb8804cffcd28640f427f4fe829243fc ]
    
    transaction id should be updated in ocfs2_unlink and ocfs2_link.
    Otherwise, inode link will be wrong after journal replay even fsync was
    called before power failure:
    =======================================================================
    $ touch testdir/bar
    $ ln testdir/bar testdir/bar_link
    $ fsync testdir/bar
    $ stat -c %h $SCRATCH_MNT/testdir/bar
    1
    $ stat -c %h $SCRATCH_MNT/testdir/bar
    1
    =======================================================================
    
    Link: https://lkml.kernel.org/r/20240408082041.20925-4-glass.su@suse.com
    Fixes: ccd979bdbce9 ("[PATCH] OCFS2: The Second Oracle Cluster Filesystem")
    Signed-off-by: Su Yue <glass.su@suse.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeontx2-pf: Add error handling to VLAN unoffload handling [+ + +]
Author: Simon Horman <horms@kernel.org>
Date:   Mon Jun 17 17:50:26 2024 +0100

    octeontx2-pf: Add error handling to VLAN unoffload handling
    
    [ Upstream commit b95a4afe2defd6f46891985f9436a568cd35a31c ]
    
    otx2_sq_append_skb makes used of __vlan_hwaccel_push_inside()
    to unoffload VLANs - push them from skb meta data into skb data.
    However, it omitts a check for __vlan_hwaccel_push_inside()
    returning NULL.
    
    Found by inspection based on [1] and [2].
    Compile tested only.
    
    [1] Re: [PATCH net-next v1] net: stmmac: Enable TSO on VLANs
        https://lore.kernel.org/all/ZmrN2W8Fye450TKs@shell.armlinux.org.uk/
    [2] Re: [PATCH net-next v2] net: stmmac: Enable TSO on VLANs
        https://lore.kernel.org/all/CANn89i+11L5=tKsa7V7Aeyxaj6nYGRwy35PAbCRYJ73G+b25sg@mail.gmail.com/
    
    Fixes: fd9d7859db6c ("octeontx2-pf: Implement ingress/egress VLAN offload")
    Signed-off-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

octeontx2-pf: Fix linking objects into multiple modules [+ + +]
Author: Geetha sowjanya <gakula@marvell.com>
Date:   Tue Jun 18 11:41:22 2024 +0530

    octeontx2-pf: Fix linking objects into multiple modules
    
    [ Upstream commit 1062d03827b78614259b3b4b992deb27ee6aa84d ]
    
    This patch fixes the below build warning messages that are
    caused due to linking same files to multiple modules by
    exporting the required symbols.
    
    "scripts/Makefile.build:244: drivers/net/ethernet/marvell/octeontx2/nic/Makefile:
    otx2_devlink.o is added to multiple modules: rvu_nicpf rvu_nicvf
    
    scripts/Makefile.build:244: drivers/net/ethernet/marvell/octeontx2/nic/Makefile:
    otx2_dcbnl.o is added to multiple modules: rvu_nicpf rvu_nicvf"
    
    Fixes: 8e67558177f8 ("octeontx2-pf: PFC config support with DCBx").
    Signed-off-by: Geetha sowjanya <gakula@marvell.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ovl: fix encoding fid for lower only root [+ + +]
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Jun 14 09:55:58 2024 +0200

    ovl: fix encoding fid for lower only root
    
    commit 004b8d1491b4bcbb7da1a3206d1e7e66822d47c6 upstream.
    
    ovl_check_encode_origin() should return a positive number if the lower
    dentry is to be encoded, zero otherwise.  If there's no upper layer at all
    (read-only overlay), then it obviously needs to return positive.
    
    This was broken by commit 16aac5ad1fa9 ("ovl: support encoding
    non-decodable file handles"), which didn't take the lower-only
    configuration into account.
    
    Fix by checking the no-upper-layer case up-front.
    
    Reported-and-tested-by: Youzhong Yang <youzhong@gmail.com>
    Closes: https://lore.kernel.org/all/CADpNCvaBimi+zCYfRJHvCOhMih8OU0rmZkwLuh24MKKroRuT8Q@mail.gmail.com/
    Fixes: 16aac5ad1fa9 ("ovl: support encoding non-decodable file handles")
    Cc: <stable@vger.kernel.org> # v6.6
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
padata: Disable BH when taking works lock on MT path [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Apr 3 17:36:18 2024 +0800

    padata: Disable BH when taking works lock on MT path
    
    [ Upstream commit 58329c4312031603bb1786b44265c26d5065fe72 ]
    
    As the old padata code can execute in softirq context, disable
    softirqs for the new padata_do_mutithreaded code too as otherwise
    lockdep will get antsy.
    
    Reported-by: syzbot+0cb5bb0f4bf9e79db3b3@syzkaller.appspotmail.com
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Acked-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Thu Mar 7 10:37:09 2024 -0600

    PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports
    
    [ Upstream commit 256df20c590bf0e4d63ac69330cf23faddac3e08 ]
    
    Hewlett-Packard HP Pavilion 17 Notebook PC/1972 is an Intel Ivy Bridge
    system with a muxless AMD Radeon dGPU.  Attempting to use the dGPU fails
    with the following sequence:
    
      ACPI Error: Aborting method \AMD3._ON due to previous error (AE_AML_LOOP_TIMEOUT) (20230628/psparse-529)
      radeon 0000:01:00.0: not ready 1023ms after resume; waiting
      radeon 0000:01:00.0: not ready 2047ms after resume; waiting
      radeon 0000:01:00.0: not ready 4095ms after resume; waiting
      radeon 0000:01:00.0: not ready 8191ms after resume; waiting
      radeon 0000:01:00.0: not ready 16383ms after resume; waiting
      radeon 0000:01:00.0: not ready 32767ms after resume; waiting
      radeon 0000:01:00.0: not ready 65535ms after resume; giving up
      radeon 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
    
    The issue is that the Root Port the dGPU is connected to can't handle the
    transition from D3cold to D0 so the dGPU can't properly exit runtime PM.
    
    The existing logic in pci_bridge_d3_possible() checks for systems that are
    newer than 2015 to decide that D3 is safe.  This would nominally work for
    an Ivy Bridge system (which was discontinued in 2015), but this system
    appears to have continued to receive BIOS updates until 2017 and so this
    existing logic doesn't appropriately capture it.
    
    Add the system to bridge_d3_blacklist to prevent D3cold from being used.
    
    Link: https://lore.kernel.org/r/20240307163709.323-1-mario.limonciello@amd.com
    Reported-by: Eric Heintzmann <heintzmann.eric@free.fr>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3229
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Eric Heintzmann <heintzmann.eric@free.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI: Do not wait for disconnected devices when resuming [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Thu Feb 8 15:23:21 2024 +0200

    PCI: Do not wait for disconnected devices when resuming
    
    [ Upstream commit 6613443ffc49d03e27f0404978f685c4eac43fba ]
    
    On runtime resume, pci_dev_wait() is called:
    
      pci_pm_runtime_resume()
        pci_pm_bridge_power_up_actions()
          pci_bridge_wait_for_secondary_bus()
            pci_dev_wait()
    
    While a device is runtime suspended along with its PCI hierarchy, the
    device could get disconnected. In such case, the link will not come up no
    matter how long pci_dev_wait() waits for it.
    
    Besides the above mentioned case, there could be other ways to get the
    device disconnected while pci_dev_wait() is waiting for the link to come
    up.
    
    Make pci_dev_wait() exit if the device is already disconnected to avoid
    unnecessary delay.
    
    The use cases of pci_dev_wait() boil down to two:
    
      1. Waiting for the device after reset
      2. pci_bridge_wait_for_secondary_bus()
    
    The callers in both cases seem to benefit from propagating the
    disconnection as error even if device disconnection would be more
    analoguous to the case where there is no device in the first place which
    return 0 from pci_dev_wait(). In the case 2, it results in unnecessary
    marking of the devices disconnected again but that is just harmless extra
    work.
    
    Also make sure compiler does not become too clever with dev->error_state
    and use READ_ONCE() to force a fetch for the up-to-date value.
    
    Link: https://lore.kernel.org/r/20240208132322.4811-1-ilpo.jarvinen@linux.intel.com
    Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf script: Show also errors for --insn-trace option [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Mar 15 09:13:33 2024 +0200

    perf script: Show also errors for --insn-trace option
    
    [ Upstream commit d4a98b45fbe6d06f4b79ed90d0bb05ced8674c23 ]
    
    The trace could be misleading if trace errors are not taken into
    account, so display them also by adding the itrace "e" option.
    
    Note --call-trace and --call-ret-trace already add the itrace "e"
    option.
    
    Fixes: b585ebdb5912cf14 ("perf script: Add --insn-trace for instruction decoding")
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240315071334.3478-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf: script: add raw|disasm arguments to --insn-trace option [+ + +]
Author: Changbin Du <changbin.du@huawei.com>
Date:   Sat Feb 17 15:40:45 2024 +0800

    perf: script: add raw|disasm arguments to --insn-trace option
    
    [ Upstream commit 6750ba4b6442fa5ea4bf5c0e4b4ff8b0249ef71d ]
    
    Now '--insn-trace' accept a argument to specify the output format:
      - raw: display raw instructions.
      - disasm: display mnemonic instructions (if capstone is installed).
    
    $ sudo perf script --insn-trace=raw
                  ls 1443864 [006] 2275506.209908875:      7f216b426100 _start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: 48 89 e7
                  ls 1443864 [006] 2275506.209908875:      7f216b426103 _start+0x3 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: e8 e8 0c 00 00
                  ls 1443864 [006] 2275506.209908875:      7f216b426df0 _dl_start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so) insn: f3 0f 1e fa
    
    $ sudo perf script --insn-trace=disasm
                  ls 1443864 [006] 2275506.209908875:      7f216b426100 _start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)           movq %rsp, %rdi
                  ls 1443864 [006] 2275506.209908875:      7f216b426103 _start+0x3 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)           callq _dl_start+0x0
                  ls 1443864 [006] 2275506.209908875:      7f216b426df0 _dl_start+0x0 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        illegal instruction
                  ls 1443864 [006] 2275506.209908875:      7f216b426df4 _dl_start+0x4 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        pushq %rbp
                  ls 1443864 [006] 2275506.209908875:      7f216b426df5 _dl_start+0x5 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        movq %rsp, %rbp
                  ls 1443864 [006] 2275506.209908875:      7f216b426df8 _dl_start+0x8 (/usr/lib/x86_64-linux-gnu/ld-2.31.so)        pushq %r15
    
    Signed-off-by: Changbin Du <changbin.du@huawei.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: changbin.du@gmail.com
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240217074046.4100789-5-changbin.du@huawei.com
    Stable-dep-of: d4a98b45fbe6 ("perf script: Show also errors for --insn-trace option")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: p2sb: Don't init until unassigned resources have been assigned [+ + +]
Author: Ben Fradella <bfradell@netapp.com>
Date:   Thu May 9 16:49:34 2024 +0000

    platform/x86: p2sb: Don't init until unassigned resources have been assigned
    
    [ Upstream commit 2c6370e6607663fc5fa0fd9ed58e2e01014898c7 ]
    
    The P2SB could get an invalid BAR from the BIOS, and that won't be fixed
    up until pcibios_assign_resources(), which is an fs_initcall().
    
    - Move p2sb_fs_init() to an fs_initcall_sync(). This is still early
      enough to avoid a race with any dependent drivers.
    
    - Add a check for IORESOURCE_UNSET in p2sb_valid_resource() to catch
      unset BARs going forward.
    
    - Return error values from p2sb_fs_init() so that the 'initcall_debug'
      cmdline arg provides useful data.
    
    Signed-off-by: Ben Fradella <bfradell@netapp.com>
    Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: Klara Modin <klarasmodin@gmail.com>
    Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Link: https://lore.kernel.org/r/20240509164905.41016-1-bcfradella@proton.me
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86: toshiba_acpi: Add quirk for buttons on Z830 [+ + +]
Author: Arvid Norlander <lkml@vorpal.se>
Date:   Wed Jan 31 12:16:41 2024 +0100

    platform/x86: toshiba_acpi: Add quirk for buttons on Z830
    
    [ Upstream commit 23f1d8b47d125dcd8c1ec62a91164e6bc5d691d0 ]
    
    The Z830 has some buttons that will only work properly as "quickstart"
    buttons. To enable them in that mode, a value between 1 and 7 must be
    used for HCI_HOTKEY_EVENT. Windows uses 0x5 on this laptop so use that for
    maximum predictability and compatibility.
    
    As there is not yet a known way of auto detection, this patch uses a DMI
    quirk table. A module parameter is exposed to allow setting this on other
    models for testing.
    
    Signed-off-by: Arvid Norlander <lkml@vorpal.se>
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240131111641.4418-3-W_Armin@gmx.de
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
power: supply: cros_usbpd: provide ID table for avoiding fallback match [+ + +]
Author: Tzung-Bi Shih <tzungbi@kernel.org>
Date:   Mon Apr 1 11:00:49 2024 +0800

    power: supply: cros_usbpd: provide ID table for avoiding fallback match
    
    [ Upstream commit 0f8678c34cbfdc63569a9b0ede1fe235ec6ec693 ]
    
    Instead of using fallback driver name match, provide ID table[1] for the
    primary match.
    
    [1]: https://elixir.bootlin.com/linux/v6.8/source/drivers/base/platform.c#L1353
    
    Reviewed-by: Benson Leung <bleung@chromium.org>
    Reviewed-by: Prashant Malani <pmalani@chromium.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Link: https://lore.kernel.org/r/20240401030052.2887845-4-tzungbi@kernel.org
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/io: Avoid clang null pointer arithmetic warnings [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri May 3 17:56:18 2024 +1000

    powerpc/io: Avoid clang null pointer arithmetic warnings
    
    [ Upstream commit 03c0f2c2b2220fc9cf8785cd7b61d3e71e24a366 ]
    
    With -Wextra clang warns about pointer arithmetic using a null pointer.
    When building with CONFIG_PCI=n, that triggers a warning in the IO
    accessors, eg:
    
      In file included from linux/arch/powerpc/include/asm/io.h:672:
      linux/arch/powerpc/include/asm/io-defs.h:23:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
         23 | DEF_PCI_AC_RET(inb, u8, (unsigned long port), (port), pio, port)
            | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ...
      linux/arch/powerpc/include/asm/io.h:591:53: note: expanded from macro '__do_inb'
        591 | #define __do_inb(port)          readb((PCI_IO_ADDR)_IO_BASE + port);
            |                                       ~~~~~~~~~~~~~~~~~~~~~ ^
    
    That is because when CONFIG_PCI=n, _IO_BASE is defined as 0.
    
    Although _IO_BASE is defined as plain 0, the cast (PCI_IO_ADDR) converts
    it to void * before the addition with port happens.
    
    Instead the addition can be done first, and then the cast. The resulting
    value will be the same, but avoids the warning, and also avoids void
    pointer arithmetic which is apparently non-standard.
    
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Closes: https://lore.kernel.org/all/CA+G9fYtEh8zmq8k8wE-8RZwW-Qr927RLTn+KqGnq1F=ptaaNsA@mail.gmail.com
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240503075619.394467-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/pseries: Enforce hcall result buffer validity and size [+ + +]
Author: Nathan Lynch <nathanl@linux.ibm.com>
Date:   Mon Apr 8 09:08:31 2024 -0500

    powerpc/pseries: Enforce hcall result buffer validity and size
    
    [ Upstream commit ff2e185cf73df480ec69675936c4ee75a445c3e4 ]
    
    plpar_hcall(), plpar_hcall9(), and related functions expect callers to
    provide valid result buffers of certain minimum size. Currently this
    is communicated only through comments in the code and the compiler has
    no idea.
    
    For example, if I write a bug like this:
    
      long retbuf[PLPAR_HCALL_BUFSIZE]; // should be PLPAR_HCALL9_BUFSIZE
      plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...);
    
    This compiles with no diagnostics emitted, but likely results in stack
    corruption at runtime when plpar_hcall9() stores results past the end
    of the array. (To be clear this is a contrived example and I have not
    found a real instance yet.)
    
    To make this class of error less likely, we can use explicitly-sized
    array parameters instead of pointers in the declarations for the hcall
    APIs. When compiled with -Warray-bounds[1], the code above now
    provokes a diagnostic like this:
    
    error: array argument is too small;
    is of size 32, callee requires at least 72 [-Werror,-Warray-bounds]
       60 |                 plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf,
          |                 ^                                   ~~~~~~
    
    [1] Enabled for LLVM builds but not GCC for now. See commit
        0da6e5fd6c37 ("gcc: disable '-Warray-bounds' for gcc-13 too") and
        related changes.
    
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240408-pseries-hvcall-retbuf-v1-1-ebc73d7253cf@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ptp: fix integer overflow in max_vclocks_store [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Mon Jun 17 12:34:32 2024 +0300

    ptp: fix integer overflow in max_vclocks_store
    
    [ Upstream commit 81d23d2a24012e448f651e007fac2cfd20a45ce0 ]
    
    On 32bit systems, the "4 * max" multiply can overflow.  Use kcalloc()
    to do the allocation to prevent this.
    
    Fixes: 44c494c8e30e ("ptp: track available ptp vclocks information")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Reviewed-by: Heng Qi <hengqi@linux.alibaba.com>
    Link: https://lore.kernel.org/r/ee8110ed-6619-4bd7-9024-28c1f2ac24f4@moroto.mountain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
qca_spi: Make interrupt remembering atomic [+ + +]
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Fri Jun 14 16:50:30 2024 +0200

    qca_spi: Make interrupt remembering atomic
    
    [ Upstream commit 2d7198278ece01818cd95a3beffbdf8b2a353fa0 ]
    
    The whole mechanism to remember occurred SPI interrupts is not atomic,
    which could lead to unexpected behavior. So fix this by using atomic bit
    operations instead.
    
    Fixes: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Link: https://lore.kernel.org/r/20240614145030.7781-1-wahrenst@gmx.net
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rcutorture: Fix invalid context warning when enable srcu barrier testing [+ + +]
Author: Zqiang <qiang.zhang1211@gmail.com>
Date:   Mon Mar 25 15:52:19 2024 +0800

    rcutorture: Fix invalid context warning when enable srcu barrier testing
    
    [ Upstream commit 668c0406d887467d53f8fe79261dda1d22d5b671 ]
    
    When the torture_type is set srcu or srcud and cb_barrier is
    non-zero, running the rcutorture test will trigger the
    following warning:
    
    [  163.910989][    C1] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    [  163.910994][    C1] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 0, name: swapper/1
    [  163.910999][    C1] preempt_count: 10001, expected: 0
    [  163.911002][    C1] RCU nest depth: 0, expected: 0
    [  163.911005][    C1] INFO: lockdep is turned off.
    [  163.911007][    C1] irq event stamp: 30964
    [  163.911010][    C1] hardirqs last  enabled at (30963): [<ffffffffabc7df52>] do_idle+0x362/0x500
    [  163.911018][    C1] hardirqs last disabled at (30964): [<ffffffffae616eff>] sysvec_call_function_single+0xf/0xd0
    [  163.911025][    C1] softirqs last  enabled at (0): [<ffffffffabb6475f>] copy_process+0x16ff/0x6580
    [  163.911033][    C1] softirqs last disabled at (0): [<0000000000000000>] 0x0
    [  163.911038][    C1] Preemption disabled at:
    [  163.911039][    C1] [<ffffffffacf1964b>] stack_depot_save_flags+0x24b/0x6c0
    [  163.911063][    C1] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G        W          6.8.0-rc4-rt4-yocto-preempt-rt+ #3 1e39aa9a737dd024a3275c4f835a872f673a7d3a
    [  163.911071][    C1] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
    [  163.911075][    C1] Call Trace:
    [  163.911078][    C1]  <IRQ>
    [  163.911080][    C1]  dump_stack_lvl+0x88/0xd0
    [  163.911089][    C1]  dump_stack+0x10/0x20
    [  163.911095][    C1]  __might_resched+0x36f/0x530
    [  163.911105][    C1]  rt_spin_lock+0x82/0x1c0
    [  163.911112][    C1]  spin_lock_irqsave_ssp_contention+0xb8/0x100
    [  163.911121][    C1]  srcu_gp_start_if_needed+0x782/0xf00
    [  163.911128][    C1]  ? _raw_spin_unlock_irqrestore+0x46/0x70
    [  163.911136][    C1]  ? debug_object_active_state+0x336/0x470
    [  163.911148][    C1]  ? __pfx_srcu_gp_start_if_needed+0x10/0x10
    [  163.911156][    C1]  ? __pfx_lock_release+0x10/0x10
    [  163.911165][    C1]  ? __pfx_rcu_torture_barrier_cbf+0x10/0x10
    [  163.911188][    C1]  __call_srcu+0x9f/0xe0
    [  163.911196][    C1]  call_srcu+0x13/0x20
    [  163.911201][    C1]  srcu_torture_call+0x1b/0x30
    [  163.911224][    C1]  rcu_torture_barrier1cb+0x4a/0x60
    [  163.911247][    C1]  __flush_smp_call_function_queue+0x267/0xca0
    [  163.911256][    C1]  ? __pfx_rcu_torture_barrier1cb+0x10/0x10
    [  163.911281][    C1]  generic_smp_call_function_single_interrupt+0x13/0x20
    [  163.911288][    C1]  __sysvec_call_function_single+0x7d/0x280
    [  163.911295][    C1]  sysvec_call_function_single+0x93/0xd0
    [  163.911302][    C1]  </IRQ>
    [  163.911304][    C1]  <TASK>
    [  163.911308][    C1]  asm_sysvec_call_function_single+0x1b/0x20
    [  163.911313][    C1] RIP: 0010:default_idle+0x17/0x20
    [  163.911326][    C1] RSP: 0018:ffff888001997dc8 EFLAGS: 00000246
    [  163.911333][    C1] RAX: 0000000000000000 RBX: dffffc0000000000 RCX: ffffffffae618b51
    [  163.911337][    C1] RDX: 0000000000000000 RSI: ffffffffaea80920 RDI: ffffffffaec2de80
    [  163.911342][    C1] RBP: ffff888001997dc8 R08: 0000000000000001 R09: ffffed100d740cad
    [  163.911346][    C1] R10: ffffed100d740cac R11: ffff88806ba06563 R12: 0000000000000001
    [  163.911350][    C1] R13: ffffffffafe460c0 R14: ffffffffafe460c0 R15: 0000000000000000
    [  163.911358][    C1]  ? ct_kernel_exit.constprop.3+0x121/0x160
    [  163.911369][    C1]  ? lockdep_hardirqs_on+0xc4/0x150
    [  163.911376][    C1]  arch_cpu_idle+0x9/0x10
    [  163.911383][    C1]  default_idle_call+0x7a/0xb0
    [  163.911390][    C1]  do_idle+0x362/0x500
    [  163.911398][    C1]  ? __pfx_do_idle+0x10/0x10
    [  163.911404][    C1]  ? complete_with_flags+0x8b/0xb0
    [  163.911416][    C1]  cpu_startup_entry+0x58/0x70
    [  163.911423][    C1]  start_secondary+0x221/0x280
    [  163.911430][    C1]  ? __pfx_start_secondary+0x10/0x10
    [  163.911440][    C1]  secondary_startup_64_no_verify+0x17f/0x18b
    [  163.911455][    C1]  </TASK>
    
    This commit therefore use smp_call_on_cpu() instead of
    smp_call_function_single(), make rcu_torture_barrier1cb() invoked
    happens on task-context.
    
    Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment [+ + +]
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Wed Mar 6 19:21:47 2024 -0800

    rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment
    
    [ Upstream commit 8b9b443fa860276822b25057cb3ff3b28734dec0 ]
    
    The "pipe_count > RCU_TORTURE_PIPE_LEN" check has a comment saying "Should
    not happen, but...".  This is only true when testing an RCU whose grace
    periods are always long enough.  This commit therefore fixes this comment.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Closes: https://lore.kernel.org/lkml/CAHk-=wi7rJ-eGq+xaxVfzFEgbL9tdf6Kc8Z89rCpfcQOKm74Tw@mail.gmail.com/
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rcutorture: Make stall-tasks directly exit when rcutorture tests end [+ + +]
Author: Zqiang <qiang.zhang1211@gmail.com>
Date:   Thu Mar 21 16:28:50 2024 +0800

    rcutorture: Make stall-tasks directly exit when rcutorture tests end
    
    [ Upstream commit 431315a563015f259b28e34c5842f6166439e969 ]
    
    When the rcutorture tests start to exit, the rcu_torture_cleanup() is
    invoked to stop kthreads and release resources, if the stall-task
    kthreads exist, cpu-stall has started and the rcutorture.stall_cpu
    is set to a larger value, the rcu_torture_cleanup() will be blocked
    for a long time and the hung-task may occur, this commit therefore
    add kthread_should_stop() to the loop of cpu-stall operation, when
    rcutorture tests ends, no need to wait for cpu-stall to end, exit
    directly.
    
    Use the following command to test:
    
    insmod rcutorture.ko torture_type=srcu fwd_progress=0 stat_interval=4
    stall_cpu_block=1 stall_cpu=200 stall_cpu_holdoff=10 read_exit_burst=0
    object_debug=1
    rmmod rcutorture
    
    [15361.918610] INFO: task rmmod:878 blocked for more than 122 seconds.
    [15361.918613]       Tainted: G        W
    6.8.0-rc2-yoctodev-standard+ #25
    [15361.918615] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
    disables this message.
    [15361.918616] task:rmmod           state:D stack:0     pid:878
    tgid:878   ppid:773    flags:0x00004002
    [15361.918621] Call Trace:
    [15361.918623]  <TASK>
    [15361.918626]  __schedule+0xc0d/0x28f0
    [15361.918631]  ? __pfx___schedule+0x10/0x10
    [15361.918635]  ? rcu_is_watching+0x19/0xb0
    [15361.918638]  ? schedule+0x1f6/0x290
    [15361.918642]  ? __pfx_lock_release+0x10/0x10
    [15361.918645]  ? schedule+0xc9/0x290
    [15361.918648]  ? schedule+0xc9/0x290
    [15361.918653]  ? trace_preempt_off+0x54/0x100
    [15361.918657]  ? schedule+0xc9/0x290
    [15361.918661]  schedule+0xd0/0x290
    [15361.918665]  schedule_timeout+0x56d/0x7d0
    [15361.918669]  ? debug_smp_processor_id+0x1b/0x30
    [15361.918672]  ? rcu_is_watching+0x19/0xb0
    [15361.918676]  ? __pfx_schedule_timeout+0x10/0x10
    [15361.918679]  ? debug_smp_processor_id+0x1b/0x30
    [15361.918683]  ? rcu_is_watching+0x19/0xb0
    [15361.918686]  ? wait_for_completion+0x179/0x4c0
    [15361.918690]  ? __pfx_lock_release+0x10/0x10
    [15361.918693]  ? __kasan_check_write+0x18/0x20
    [15361.918696]  ? wait_for_completion+0x9d/0x4c0
    [15361.918700]  ? _raw_spin_unlock_irq+0x36/0x50
    [15361.918703]  ? wait_for_completion+0x179/0x4c0
    [15361.918707]  ? _raw_spin_unlock_irq+0x36/0x50
    [15361.918710]  ? wait_for_completion+0x179/0x4c0
    [15361.918714]  ? trace_preempt_on+0x54/0x100
    [15361.918718]  ? wait_for_completion+0x179/0x4c0
    [15361.918723]  wait_for_completion+0x181/0x4c0
    [15361.918728]  ? __pfx_wait_for_completion+0x10/0x10
    [15361.918738]  kthread_stop+0x152/0x470
    [15361.918742]  _torture_stop_kthread+0x44/0xc0 [torture
    7af7f9cbba28271a10503b653f9e05d518fbc8c3]
    [15361.918752]  rcu_torture_cleanup+0x2ac/0xe90 [rcutorture
    f2cb1f556ee7956270927183c4c2c7749a336529]
    [15361.918766]  ? __pfx_rcu_torture_cleanup+0x10/0x10 [rcutorture
    f2cb1f556ee7956270927183c4c2c7749a336529]
    [15361.918777]  ? __kasan_check_write+0x18/0x20
    [15361.918781]  ? __mutex_unlock_slowpath+0x17c/0x670
    [15361.918789]  ? __might_fault+0xcd/0x180
    [15361.918793]  ? find_module_all+0x104/0x1d0
    [15361.918799]  __x64_sys_delete_module+0x2a4/0x3f0
    [15361.918803]  ? __pfx___x64_sys_delete_module+0x10/0x10
    [15361.918807]  ? syscall_exit_to_user_mode+0x149/0x280
    
    Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/bnxt_re: Fix the max msix vectors macro [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Mon May 20 01:56:58 2024 -0700

    RDMA/bnxt_re: Fix the max msix vectors macro
    
    [ Upstream commit 056620da899527c14cf36e5019a0decaf4cf0f79 ]
    
    bnxt_re no longer decide the number of MSI-x vectors used by itself.
    Its decided by bnxt_en now. So when bnxt_en changes this value, system
    crash is seen.
    
    Depend on the max value reported by bnxt_en instead of using the its own macros.
    
    Fixes: 303432211324 ("bnxt_en: Remove runtime interrupt vector allocation")
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://lore.kernel.org/r/1716195418-11767-1-git-send-email-selvin.xavier@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/mana_ib: Ignore optional access flags for MRs [+ + +]
Author: Konstantin Taranov <kotaranov@microsoft.com>
Date:   Wed Jun 5 01:16:08 2024 -0700

    RDMA/mana_ib: Ignore optional access flags for MRs
    
    [ Upstream commit 82a5cc783d49b86afd2f60e297ecd85223c39f88 ]
    
    Ignore optional ib_access_flags when an MR is created.
    
    Fixes: 0266a177631d ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
    Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com>
    Link: https://lore.kernel.org/r/1717575368-14879-1-git-send-email-kotaranov@linux.microsoft.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/mlx5: Add check for srq max_sge attribute [+ + +]
Author: Patrisious Haddad <phaddad@nvidia.com>
Date:   Tue May 28 15:52:56 2024 +0300

    RDMA/mlx5: Add check for srq max_sge attribute
    
    [ Upstream commit 36ab7ada64caf08f10ee5a114d39964d1f91e81d ]
    
    max_sge attribute is passed by the user, and is inserted and used
    unchecked, so verify that the value doesn't exceed maximum allowed value
    before using it.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Link: https://lore.kernel.org/r/277ccc29e8d57bfd53ddeb2ac633f2760cf8cdd0.1716900410.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/mlx5: Fix unwind flow as part of mlx5_ib_stage_init_init [+ + +]
Author: Yishai Hadas <yishaih@nvidia.com>
Date:   Tue May 28 15:52:55 2024 +0300

    RDMA/mlx5: Fix unwind flow as part of mlx5_ib_stage_init_init
    
    [ Upstream commit 81497c148b7a2e4a4fbda93aee585439f7323e2e ]
    
    Fix unwind flow as part of mlx5_ib_stage_init_init to use the correct
    goto upon an error.
    
    Fixes: 758ce14aee82 ("RDMA/mlx5: Implement MACsec gid addition and deletion")
    Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
    Reviewed-by: Patrisious Haddad <phaddad@nvidia.com>
    Link: https://lore.kernel.org/r/aa40615116eda14ec9eca21d52017d632ea89188.1716900410.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/mlx5: Follow rb_key.ats when creating new mkeys [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue May 28 15:52:53 2024 +0300

    RDMA/mlx5: Follow rb_key.ats when creating new mkeys
    
    commit f637040c3339a2ed8c12d65ad03f9552386e2fe7 upstream.
    
    When a cache ent already exists but doesn't have any mkeys in it the cache
    will automatically create a new one based on the specification in the
    ent->rb_key.
    
    ent->ats was missed when creating the new key and so ma_translation_mode
    was not being set even though the ent requires it.
    
    Cc: stable@vger.kernel.org
    Fixes: 73d09b2fe833 ("RDMA/mlx5: Introduce mlx5r_cache_rb_key")
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Michael Guralnik <michaelgur@nvidia.com>
    Link: https://lore.kernel.org/r/7c5613458ecb89fbe5606b7aa4c8d990bdea5b9a.1716900410.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

RDMA/mlx5: Remove extra unlock on error path [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue May 28 15:52:52 2024 +0300

    RDMA/mlx5: Remove extra unlock on error path
    
    commit c1eb2512596fb3542357bb6c34c286f5e0374538 upstream.
    
    The below commit lifted the locking out of this function but left this
    error path unlock behind resulting in unbalanced locking. Remove the
    missed unlock too.
    
    Cc: stable@vger.kernel.org
    Fixes: 627122280c87 ("RDMA/mlx5: Add work to remove temporary entries from the cache")
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Michael Guralnik <michaelgur@nvidia.com>
    Link: https://lore.kernel.org/r/78090c210c750f47219b95248f9f782f34548bb1.1716900410.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/rxe: Fix data copy for IB_SEND_INLINE [+ + +]
Author: Honggang LI <honggangli@163.com>
Date:   Thu May 16 17:50:52 2024 +0800

    RDMA/rxe: Fix data copy for IB_SEND_INLINE
    
    commit 03fa18a992d5626fd7bf3557a52e826bf8b326b3 upstream.
    
    For RDMA Send and Write with IB_SEND_INLINE, the memory buffers
    specified in sge list will be placed inline in the Send Request.
    
    The data should be copied by CPU from the virtual addresses of
    corresponding sge list DMA addresses.
    
    Cc: stable@kernel.org
    Fixes: 8d7c7c0eeb74 ("RDMA: Add ib_virt_dma_to_page()")
    Signed-off-by: Honggang LI <honggangli@163.com>
    Link: https://lore.kernel.org/r/20240516095052.542767-1-honggangli@163.com
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Reviewed-by: Li Zhijian <lizhijian@fujitsu.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

RDMA/rxe: Fix responder length checking for UD request packets [+ + +]
Author: Honggang LI <honggangli@163.com>
Date:   Thu May 23 17:46:17 2024 +0800

    RDMA/rxe: Fix responder length checking for UD request packets
    
    [ Upstream commit f67ac0061c7614c1548963d3ef1ee1606efd8636 ]
    
    According to the IBA specification:
    If a UD request packet is detected with an invalid length, the request
    shall be an invalid request and it shall be silently dropped by
    the responder. The responder then waits for a new request packet.
    
    commit 689c5421bfe0 ("RDMA/rxe: Fix incorrect responder length checking")
    defers responder length check for UD QPs in function `copy_data`.
    But it introduces a regression issue for UD QPs.
    
    When the packet size is too large to fit in the receive buffer.
    `copy_data` will return error code -EINVAL. Then `send_data_in`
    will return RESPST_ERR_MALFORMED_WQE. UD QP will transfer into
    ERROR state.
    
    Fixes: 689c5421bfe0 ("RDMA/rxe: Fix incorrect responder length checking")
    Signed-off-by: Honggang LI <honggangli@163.com>
    Link: https://lore.kernel.org/r/20240523094617.141148-1-honggangli@163.com
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regulator: bd71815: fix ramp values [+ + +]
Author: Kalle Niemi <kaleposti@gmail.com>
Date:   Wed Jun 12 14:42:34 2024 +0300

    regulator: bd71815: fix ramp values
    
    [ Upstream commit 4cac29b846f38d5f0654cdfff5c5bfc37305081c ]
    
    Ramp values are inverted. This caused wrong values written to register
    when ramp values were defined in device tree.
    
    Invert values in table to fix this.
    
    Signed-off-by: Kalle Niemi <kaleposti@gmail.com>
    Fixes: 1aad39001e85 ("regulator: Support ROHM BD71815 regulators")
    Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
    Link: https://lore.kernel.org/r/ZmmJXtuVJU6RgQAH@latitude5580
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: Fix modpost error "regulator_get_regmap" undefined [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Mon Jun 10 20:55:32 2024 +0100

    regulator: core: Fix modpost error "regulator_get_regmap" undefined
    
    [ Upstream commit 3f60497c658d2072714d097a177612d34b34aa3d ]
    
    Fix the modpost error "regulator_get_regmap" undefined by adding export
    symbol.
    
    Fixes: 04eca28cde52 ("regulator: Add helpers for low-level register access")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202406110117.mk5UR3VZ-lkp@intel.com
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/20240610195532.175942-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default" [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Jun 17 12:57:03 2024 -0700

    Revert "mm: mmap: allow for the maximum number of bits for randomizing mmap_base by default"
    
    commit 14d7c92f8df9c0964ae6f8b813c1b3ac38120825 upstream.
    
    This reverts commit 3afb76a66b5559a7b595155803ce23801558a7a9.
    
    This was a wrongheaded workaround for an issue that had already been
    fixed much better by commit 4ef9ad19e176 ("mm: huge_memory: don't force
    huge page alignment on 32 bit").
    
    Asking users questions at kernel compile time that they can't make sense
    of is not a viable strategy.  And the fact that even the kernel VM
    maintainers apparently didn't catch that this "fix" is not a fix any
    more pretty much proves the point that people can't be expected to
    understand the implications of the question.
    
    It may well be the case that we could improve things further, and that
    __thp_get_unmapped_area() should take the mapping randomization into
    account even for 64-bit kernels.  Maybe we should not be so eager to use
    THP mappings.
    
    But in no case should this be a kernel config option.
    
    Cc: Rafael Aquini <aquini@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
riscv: Don't use PGD entries for the linear mapping [+ + +]
Author: Alexandre Ghiti <alexghiti@rivosinc.com>
Date:   Wed Nov 8 08:59:29 2023 +0100

    riscv: Don't use PGD entries for the linear mapping
    
    [ Upstream commit 629db01c64ff6cea08fc61b52426362689ef8618 ]
    
    Propagating changes at this level is cumbersome as we need to go through
    all the page tables when that happens (either when changing the
    permissions or when splitting the mapping).
    
    Note that this prevents the use of 4MB mapping for sv32 and 1GB mapping for
    sv39 in the linear mapping.
    
    Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Link: https://lore.kernel.org/r/20231108075930.7157-2-alexghiti@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Stable-dep-of: c67ddf59ac44 ("riscv: force PAGE_SIZE linear mapping if debug_pagealloc is enabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: force PAGE_SIZE linear mapping if debug_pagealloc is enabled [+ + +]
Author: Nam Cao <namcao@linutronix.de>
Date:   Wed May 15 07:50:39 2024 +0200

    riscv: force PAGE_SIZE linear mapping if debug_pagealloc is enabled
    
    [ Upstream commit c67ddf59ac44adc60649730bf8347e37c516b001 ]
    
    debug_pagealloc is a debug feature which clears the valid bit in page table
    entry for freed pages to detect illegal accesses to freed memory.
    
    For this feature to work, virtual mapping must have PAGE_SIZE resolution.
    (No, we cannot map with huge pages and split them only when needed; because
    pages can be allocated/freed in atomic context and page splitting cannot be
    done in atomic context)
    
    Force linear mapping to use small pages if debug_pagealloc is enabled.
    
    Note that it is not necessary to force the entire linear mapping, but only
    those that are given to memory allocator. Some parts of memory can keep
    using huge page mapping (for example, kernel's executable code). But these
    parts are minority, so keep it simple. This is just a debug feature, some
    extra overhead should be acceptable.
    
    Fixes: 5fde3db5eb02 ("riscv: add ARCH_SUPPORTS_DEBUG_PAGEALLOC support")
    Signed-off-by: Nam Cao <namcao@linutronix.de>
    Cc: stable@vger.kernel.org
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Link: https://lore.kernel.org/r/2e391fa6c6f9b3fcf1b41cefbace02ee4ab4bf59.1715750938.git.namcao@linutronix.de
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched: act_ct: add netns into the key of tcf_ct_flow_table [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Jun 15 17:47:30 2024 -0400

    sched: act_ct: add netns into the key of tcf_ct_flow_table
    
    [ Upstream commit 88c67aeb14070bab61d3dd8be96c8b42ebcaf53a ]
    
    zones_ht is a global hashtable for flow_table with zone as key. However,
    it does not consider netns when getting a flow_table from zones_ht in
    tcf_ct_init(), and it means an act_ct action in netns A may get a
    flow_table that belongs to netns B if it has the same zone value.
    
    In Shuang's test with the TOPO:
    
      tcf2_c <---> tcf2_sw1 <---> tcf2_sw2 <---> tcf2_s
    
    tcf2_sw1 and tcf2_sw2 saw the same flow and used the same flow table,
    which caused their ct entries entering unexpected states and the
    TCP connection not able to end normally.
    
    This patch fixes the issue simply by adding netns into the key of
    tcf_ct_flow_table so that an act_ct action gets a flow_table that
    belongs to its own netns in tcf_ct_init().
    
    Note that for easy coding we don't use tcf_ct_flow_table.nf_ft.net,
    as the ct_ft is initialized after inserting it to the hashtable in
    tcf_ct_flow_table_get() and also it requires to implement several
    functions in rhashtable_params including hashfn, obj_hashfn and
    obj_cmpfn.
    
    Fixes: 64ff70b80fd4 ("net/sched: act_ct: Offload established connections to flow table")
    Reported-by: Shuang Li <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/1db5b6cc6902c5fc6f8c6cbd85494a2008087be5.1718488050.git.lucien.xin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: qedi: Fix crash while reading debugfs attribute [+ + +]
Author: Manish Rangankar <mrangankar@marvell.com>
Date:   Mon Apr 15 12:51:55 2024 +0530

    scsi: qedi: Fix crash while reading debugfs attribute
    
    [ Upstream commit 28027ec8e32ecbadcd67623edb290dad61e735b5 ]
    
    The qedi_dbg_do_not_recover_cmd_read() function invokes sprintf() directly
    on a __user pointer, which results into the crash.
    
    To fix this issue, use a small local stack buffer for sprintf() and then
    call simple_read_from_buffer(), which in turns make the copy_to_user()
    call.
    
    BUG: unable to handle page fault for address: 00007f4801111000
    PGD 8000000864df6067 P4D 8000000864df6067 PUD 864df7067 PMD 846028067 PTE 0
    Oops: 0002 [#1] PREEMPT SMP PTI
    Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 06/15/2023
    RIP: 0010:memcpy_orig+0xcd/0x130
    RSP: 0018:ffffb7a18c3ffc40 EFLAGS: 00010202
    RAX: 00007f4801111000 RBX: 00007f4801111000 RCX: 000000000000000f
    RDX: 000000000000000f RSI: ffffffffc0bfd7a0 RDI: 00007f4801111000
    RBP: ffffffffc0bfd7a0 R08: 725f746f6e5f6f64 R09: 3d7265766f636572
    R10: ffffb7a18c3ffd08 R11: 0000000000000000 R12: 00007f4881110fff
    R13: 000000007fffffff R14: ffffb7a18c3ffca0 R15: ffffffffc0bfd7af
    FS:  00007f480118a740(0000) GS:ffff98e38af00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f4801111000 CR3: 0000000864b8e001 CR4: 00000000007706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <TASK>
     ? __die_body+0x1a/0x60
     ? page_fault_oops+0x183/0x510
     ? exc_page_fault+0x69/0x150
     ? asm_exc_page_fault+0x22/0x30
     ? memcpy_orig+0xcd/0x130
     vsnprintf+0x102/0x4c0
     sprintf+0x51/0x80
     qedi_dbg_do_not_recover_cmd_read+0x2f/0x50 [qedi 6bcfdeeecdea037da47069eca2ba717c84a77324]
     full_proxy_read+0x50/0x80
     vfs_read+0xa5/0x2e0
     ? folio_add_new_anon_rmap+0x44/0xa0
     ? set_pte_at+0x15/0x30
     ? do_pte_missing+0x426/0x7f0
     ksys_read+0xa5/0xe0
     do_syscall_64+0x58/0x80
     ? __count_memcg_events+0x46/0x90
     ? count_memcg_event_mm+0x3d/0x60
     ? handle_mm_fault+0x196/0x2f0
     ? do_user_addr_fault+0x267/0x890
     ? exc_page_fault+0x69/0x150
     entry_SYSCALL_64_after_hwframe+0x72/0xdc
    RIP: 0033:0x7f4800f20b4d
    
    Tested-by: Martin Hoyer <mhoyer@redhat.com>
    Reviewed-by: John Meneghini <jmeneghi@redhat.com>
    Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
    Link: https://lore.kernel.org/r/20240415072155.30840-1-mrangankar@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: ufs: core: Free memory allocated for model before reinit [+ + +]
Author: Joel Slebodnick <jslebodn@redhat.com>
Date:   Thu Jun 13 14:27:28 2024 -0400

    scsi: ufs: core: Free memory allocated for model before reinit
    
    commit 135c6eb27a85c8b261a2cc1f5093abcda6ee9010 upstream.
    
    Under the conditions that a device is to be reinitialized within
    ufshcd_probe_hba(), the device must first be fully reset.
    
    Resetting the device should include freeing U8 model (member of dev_info)
    but does not, and this causes a memory leak.  ufs_put_device_desc() is
    responsible for freeing model.
    
    unreferenced object 0xffff3f63008bee60 (size 32):
      comm "kworker/u33:1", pid 60, jiffies 4294892642
      hex dump (first 32 bytes):
        54 48 47 4a 46 47 54 30 54 32 35 42 41 5a 5a 41  THGJFGT0T25BAZZA
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace (crc ed7ff1a9):
        [<ffffb86705f1243c>] kmemleak_alloc+0x34/0x40
        [<ffffb8670511cee4>] __kmalloc_noprof+0x1e4/0x2fc
        [<ffffb86705c247fc>] ufshcd_read_string_desc+0x94/0x190
        [<ffffb86705c26854>] ufshcd_device_init+0x480/0xdf8
        [<ffffb86705c27b68>] ufshcd_probe_hba+0x3c/0x404
        [<ffffb86705c29264>] ufshcd_async_scan+0x40/0x370
        [<ffffb86704f43e9c>] async_run_entry_fn+0x34/0xe0
        [<ffffb86704f34638>] process_one_work+0x154/0x298
        [<ffffb86704f34a74>] worker_thread+0x2f8/0x408
        [<ffffb86704f3cfa4>] kthread+0x114/0x118
        [<ffffb86704e955a0>] ret_from_fork+0x10/0x20
    
    Fixes: 96a7141da332 ("scsi: ufs: core: Add support for reinitializing the UFS device")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Joel Slebodnick <jslebodn@redhat.com>
    Link: https://lore.kernel.org/r/20240613200202.2524194-1-jslebodn@redhat.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors [+ + +]
Author: Jianguo Wu <wujianguo@chinatelecom.cn>
Date:   Thu Jun 13 17:42:46 2024 +0800

    seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors
    
    [ Upstream commit 9a3bc8d16e0aacd65c31aaf23a2bced3288a7779 ]
    
    input_action_end_dx4() and input_action_end_dx6() are called NF_HOOK() for
    PREROUTING hook, in PREROUTING hook, we should passing a valid indev,
    and a NULL outdev to NF_HOOK(), otherwise may trigger a NULL pointer
    dereference, as below:
    
        [74830.647293] BUG: kernel NULL pointer dereference, address: 0000000000000090
        [74830.655633] #PF: supervisor read access in kernel mode
        [74830.657888] #PF: error_code(0x0000) - not-present page
        [74830.659500] PGD 0 P4D 0
        [74830.660450] Oops: 0000 [#1] PREEMPT SMP PTI
        ...
        [74830.664953] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
        [74830.666569] RIP: 0010:rpfilter_mt+0x44/0x15e [ipt_rpfilter]
        ...
        [74830.689725] Call Trace:
        [74830.690402]  <IRQ>
        [74830.690953]  ? show_trace_log_lvl+0x1c4/0x2df
        [74830.692020]  ? show_trace_log_lvl+0x1c4/0x2df
        [74830.693095]  ? ipt_do_table+0x286/0x710 [ip_tables]
        [74830.694275]  ? __die_body.cold+0x8/0xd
        [74830.695205]  ? page_fault_oops+0xac/0x140
        [74830.696244]  ? exc_page_fault+0x62/0x150
        [74830.697225]  ? asm_exc_page_fault+0x22/0x30
        [74830.698344]  ? rpfilter_mt+0x44/0x15e [ipt_rpfilter]
        [74830.699540]  ipt_do_table+0x286/0x710 [ip_tables]
        [74830.700758]  ? ip6_route_input+0x19d/0x240
        [74830.701752]  nf_hook_slow+0x3f/0xb0
        [74830.702678]  input_action_end_dx4+0x19b/0x1e0
        [74830.703735]  ? input_action_end_t+0xe0/0xe0
        [74830.704734]  seg6_local_input_core+0x2d/0x60
        [74830.705782]  lwtunnel_input+0x5b/0xb0
        [74830.706690]  __netif_receive_skb_one_core+0x63/0xa0
        [74830.707825]  process_backlog+0x99/0x140
        [74830.709538]  __napi_poll+0x2c/0x160
        [74830.710673]  net_rx_action+0x296/0x350
        [74830.711860]  __do_softirq+0xcb/0x2ac
        [74830.713049]  do_softirq+0x63/0x90
    
    input_action_end_dx4() passing a NULL indev to NF_HOOK(), and finally
    trigger a NULL dereference in rpfilter_mt()->rpfilter_is_loopback():
    
        static bool
        rpfilter_is_loopback(const struct sk_buff *skb,
                           const struct net_device *in)
        {
                // in is NULL
                return skb->pkt_type == PACKET_LOOPBACK ||
                     in->flags & IFF_LOOPBACK;
        }
    
    Fixes: 7a3f5b0de364 ("netfilter: add netfilter hooks to SRv6 data plane")
    Signed-off-by: Jianguo Wu <wujianguo@chinatelecom.cn>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Fix flaky test btf_map_in_map/lookup_update [+ + +]
Author: Yonghong Song <yonghong.song@linux.dev>
Date:   Thu Mar 21 23:13:53 2024 -0700

    selftests/bpf: Fix flaky test btf_map_in_map/lookup_update
    
    [ Upstream commit 14bb1e8c8d4ad5d9d2febb7d19c70a3cf536e1e5 ]
    
    Recently, I frequently hit the following test failure:
    
      [root@arch-fb-vm1 bpf]# ./test_progs -n 33/1
      test_lookup_update:PASS:skel_open 0 nsec
      [...]
      test_lookup_update:PASS:sync_rcu 0 nsec
      test_lookup_update:FAIL:map1_leak inner_map1 leaked!
      #33/1    btf_map_in_map/lookup_update:FAIL
      #33      btf_map_in_map:FAIL
    
    In the test, after map is closed and then after two rcu grace periods,
    it is assumed that map_id is not available to user space.
    
    But the above assumption cannot be guaranteed. After zero or one
    or two rcu grace periods in different siturations, the actual
    freeing-map-work is put into a workqueue. Later on, when the work
    is dequeued, the map will be actually freed.
    See bpf_map_put() in kernel/bpf/syscall.c.
    
    By using workqueue, there is no ganrantee that map will be actually
    freed after a couple of rcu grace periods. This patch removed
    such map leak detection and then the test can pass consistently.
    
    Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20240322061353.632136-1-yonghong.song@linux.dev
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh [+ + +]
Author: Alessandro Carminati (Red Hat) <alessandro.carminati@gmail.com>
Date:   Thu Mar 14 10:59:11 2024 +0000

    selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh
    
    [ Upstream commit f803bcf9208a2540acb4c32bdc3616673169f490 ]
    
    In some systems, the netcat server can incur in delay to start listening.
    When this happens, the test can randomly fail in various points.
    This is an example error message:
    
       # ip gre none gso
       # encap 192.168.1.1 to 192.168.1.2, type gre, mac none len 2000
       # test basic connectivity
       # Ncat: Connection refused.
    
    The issue stems from a race condition between the netcat client and server.
    The test author had addressed this problem by implementing a sleep, which
    I have removed in this patch.
    This patch introduces a function capable of sleeping for up to two seconds.
    However, it can terminate the waiting period early if the port is reported
    to be listening.
    
    Signed-off-by: Alessandro Carminati (Red Hat) <alessandro.carminati@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20240314105911.213411-1-alessandro.carminati@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: openvswitch: Use bash as interpreter [+ + +]
Author: Simon Horman <horms@kernel.org>
Date:   Mon Jun 17 09:28:33 2024 +0100

    selftests: openvswitch: Use bash as interpreter
    
    [ Upstream commit e2b447c9a1bba718f9c07513a1e8958209e862a1 ]
    
    openvswitch.sh makes use of substitutions of the form ${ns:0:1}, to
    obtain the first character of $ns. Empirically, this is works with bash
    but not dash. When run with dash these evaluate to an empty string and
    printing an error to stdout.
    
     # dash -c 'ns=client; echo "${ns:0:1}"' 2>error
     # cat error
     dash: 1: Bad substitution
     # bash -c 'ns=client; echo "${ns:0:1}"' 2>error
     c
     # cat error
    
    This leads to tests that neither pass nor fail.
    F.e.
    
     TEST: arp_ping                                                      [START]
     adding sandbox 'test_arp_ping'
     Adding DP/Bridge IF: sbx:test_arp_ping dp:arpping {, , }
     create namespaces
     ./openvswitch.sh: 282: eval: Bad substitution
     TEST: ct_connect_v4                                                 [START]
     adding sandbox 'test_ct_connect_v4'
     Adding DP/Bridge IF: sbx:test_ct_connect_v4 dp:ct4 {, , }
     ./openvswitch.sh: 322: eval: Bad substitution
     create namespaces
    
    Resolve this by making openvswitch.sh a bash script.
    
    Fixes: 918423fda910 ("selftests: openvswitch: add an initial flow programming case")
    Signed-off-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Link: https://lore.kernel.org/r/20240617-ovs-selftest-bash-v1-1-7ae6ccd3617b@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: 8250_dw: Revert "Move definitions to the shared header" [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue May 14 22:05:54 2024 +0300

    serial: 8250_dw: Revert "Move definitions to the shared header"
    
    commit 2c94512055f362dd789e0f87b8566feeddec83c9 upstream.
    
    This reverts commit d9666dfb314e1ffd6eb9c3c4243fe3e094c047a7.
    
    The container of the struct dw8250_port_data is private to the actual
    driver. In particular, 8250_lpss and 8250_dw use different data types
    that are assigned to the UART port private_data. Hence, it must not
    be used outside the specific driver.
    
    Fix the mistake made in the past by moving the respective definitions
    to the specific driver.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20240514190730.2787071-3-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: exar: adding missing CTI and Exar PCI ids [+ + +]
Author: Parker Newman <pnewman@connecttech.com>
Date:   Tue Apr 16 08:55:28 2024 -0400

    serial: exar: adding missing CTI and Exar PCI ids
    
    [ Upstream commit b86ae40ffcf5a16b9569b1016da4a08c4f352ca2 ]
    
    - Added Connect Tech and Exar IDs not already in pci_ids.h
    
    Signed-off-by: Parker Newman <pnewman@connecttech.com>
    Link: https://lore.kernel.org/r/7c3d8e795a864dd9b0a00353b722060dc27c4e09.1713270624.git.pnewman@connecttech.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: imx: Introduce timeout when waiting on transmitter empty [+ + +]
Author: Esben Haabendal <esben@geanix.com>
Date:   Thu Apr 11 14:19:23 2024 +0200

    serial: imx: Introduce timeout when waiting on transmitter empty
    
    [ Upstream commit e533e4c62e9993e62e947ae9bbec34e4c7ae81c2 ]
    
    By waiting at most 1 second for USR2_TXDC to be set, we avoid a potential
    deadlock.
    
    In case of the timeout, there is not much we can do, so we simply ignore
    the transmitter state and optimistically try to continue.
    
    Signed-off-by: Esben Haabendal <esben@geanix.com>
    Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Link: https://lore.kernel.org/r/919647898c337a46604edcabaf13d42d80c0915d.1712837613.git.esben@geanix.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: cs42l43: Correct SPI root clock speed [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Tue Jun 4 14:17:04 2024 +0100

    spi: cs42l43: Correct SPI root clock speed
    
    [ Upstream commit 4eecb644b8b82f5279a348f6ebe77e3d6e5b1b05 ]
    
    The root clock is actually 49.152MHz not 40MHz, as it is derived from
    the primary audio clock, update the driver to match. This error can
    cause the actual clock rate to be higher than the requested clock rate
    on the SPI bus.
    
    Fixes: ef75e767167a ("spi: cs42l43: Add SPI controller support")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://msgid.link/r/20240604131704.3227500-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: spi-imx: imx51: revert burst length calculation back to bits_per_word [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jun 18 19:34:18 2024 +0200

    spi: spi-imx: imx51: revert burst length calculation back to bits_per_word
    
    [ Upstream commit df75470b317b46affbe1f5f8f006b34175be9789 ]
    
    The patch 15a6af94a277 ("spi: Increase imx51 ecspi burst length based
    on transfer length") increased the burst length calculation in
    mx51_ecspi_prepare_transfer() to be based on the transfer length.
    
    This breaks HW CS + SPI_CS_WORD support which was added in
    6e95b23a5b2d ("spi: imx: Implement support for CS_WORD") and transfers
    with bits-per-word != 8, 16, 32.
    
    SPI_CS_WORD means the CS should be toggled after each word. The
    implementation in the imx-spi driver relies on the fact that the HW CS
    is toggled automatically by the controller after each burst length
    number of bits. Setting the burst length to the number of bits of the
    _whole_ message breaks this use case.
    
    Further the patch 15a6af94a277 ("spi: Increase imx51 ecspi burst
    length based on transfer length") claims to optimize the transfers.
    But even without this patch, on modern spi-imx controllers with
    "dynamic_burst = true" (imx51, imx6 and newer), the transfers are
    already optimized, i.e. the burst length is dynamically adjusted in
    spi_imx_push() to avoid the pause between the SPI bursts. This has
    been confirmed by a scope measurement on an imx6d.
    
    Subsequent Patches tried to fix these and other problems:
    
    - 5f66db08cbd3 ("spi: imx: Take in account bits per word instead of assuming 8-bits")
    - e9b220aeacf1 ("spi: spi-imx: correctly configure burst length when using dma")
    - c712c05e46c8 ("spi: imx: fix the burst length at DMA mode and CPU mode")
    - cf6d79a0f576 ("spi: spi-imx: fix off-by-one in mx51 CPU mode burst length")
    
    but the HW CS + SPI_CS_WORD use case is still broken.
    
    To fix the problems revert the burst size calculation in
    mx51_ecspi_prepare_transfer() back to the original form, before
    15a6af94a277 ("spi: Increase imx51 ecspi burst length based on
    transfer length") was applied.
    
    Cc: Stefan Moring <stefan.moring@technolution.nl>
    Cc: Stefan Bigler <linux@bigler.io>
    Cc: Clark Wang <xiaoning.wang@nxp.com>
    Cc: Carlos Song <carlos.song@nxp.com>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Thorsten Scherer <T.Scherer@eckelmann.de>
    Fixes: 15a6af94a277 ("spi: Increase imx51 ecspi burst length based on transfer length")
    Fixes: 5f66db08cbd3 ("spi: imx: Take in account bits per word instead of assuming 8-bits")
    Fixes: e9b220aeacf1 ("spi: spi-imx: correctly configure burst length when using dma")
    Fixes: c712c05e46c8 ("spi: imx: fix the burst length at DMA mode and CPU mode")
    Fixes: cf6d79a0f576 ("spi: spi-imx: fix off-by-one in mx51 CPU mode burst length")
    Link: https://lore.kernel.org/all/20240618-oxpecker-of-ideal-mastery-db59f8-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Tested-by: Thorsten Scherer <t.scherer@eckelmann.de>
    Link: https://msgid.link/r/20240618-spi-imx-fix-bustlength-v1-1-2053dd5fdf87@pengutronix.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4 [+ + +]
Author: Patrice Chotard <patrice.chotard@foss.st.com>
Date:   Tue Jun 18 15:29:50 2024 +0200

    spi: stm32: qspi: Clamp stm32_qspi_get_mode() output to CCR_BUSWIDTH_4
    
    commit 63deee52811b2f84ed2da55ad47252f0e8145d62 upstream.
    
    In case usage of OCTAL mode, buswidth parameter can take the value 8.
    As return value of stm32_qspi_get_mode() is used to configure fields
    of CCR registers that are 2 bits only (fields IMODE, ADMODE, ADSIZE,
     DMODE), clamp return value of stm32_qspi_get_mode() to 4.
    
    Fixes: a557fca630cc ("spi: stm32_qspi: Add transfer_one_message() spi callback")
    Cc: stable@vger.kernel.org
    Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
    Link: https://msgid.link/r/20240618132951.2743935-3-patrice.chotard@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup() [+ + +]
Author: Patrice Chotard <patrice.chotard@foss.st.com>
Date:   Tue Jun 18 15:29:49 2024 +0200

    spi: stm32: qspi: Fix dual flash mode sanity test in stm32_qspi_setup()
    
    commit c2bd0791c5f02e964402624dfff45ca8995f5397 upstream.
    
    Misplaced parenthesis make test of mode wrong in case mode is equal to
    SPI_TX_OCTAL or SPI_RX_OCTAL.
    
    Simplify this sanity test, if one of this bit is set, property
    cs-gpio must be present in DT.
    
    Fixes: a557fca630cc ("spi: stm32_qspi: Add transfer_one_message() spi callback")
    Cc: stable@vger.kernel.org
    Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
    Link: https://msgid.link/r/20240618132951.2743935-2-patrice.chotard@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ssb: Fix potential NULL pointer dereference in ssb_device_uevent() [+ + +]
Author: Rand Deeb <rand.sec96@gmail.com>
Date:   Wed Mar 6 15:30:28 2024 +0300

    ssb: Fix potential NULL pointer dereference in ssb_device_uevent()
    
    [ Upstream commit 789c17185fb0f39560496c2beab9b57ce1d0cbe7 ]
    
    The ssb_device_uevent() function first attempts to convert the 'dev' pointer
    to 'struct ssb_device *'. However, it mistakenly dereferences 'dev' before
    performing the NULL check, potentially leading to a NULL pointer
    dereference if 'dev' is NULL.
    
    To fix this issue, move the NULL check before dereferencing the 'dev' pointer,
    ensuring that the pointer is valid before attempting to use it.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Rand Deeb <rand.sec96@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://msgid.link/20240306123028.164155-1-rand.sec96@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jun 14 13:06:15 2024 +0000

    tcp: clear tp->retrans_stamp in tcp_rcv_fastopen_synack()
    
    commit 9e046bb111f13461d3f9331e24e974324245140e upstream.
    
    Some applications were reporting ETIMEDOUT errors on apparently
    good looking flows, according to packet dumps.
    
    We were able to root cause the issue to an accidental setting
    of tp->retrans_stamp in the following scenario:
    
    - client sends TFO SYN with data.
    - server has TFO disabled, ACKs only SYN but not payload.
    - client receives SYNACK covering only SYN.
    - tcp_ack() eats SYN and sets tp->retrans_stamp to 0.
    - tcp_rcv_fastopen_synack() calls tcp_xmit_retransmit_queue()
      to retransmit TFO payload w/o SYN, sets tp->retrans_stamp to "now",
      but we are not in any loss recovery state.
    - TFO payload is ACKed.
    - we are not in any loss recovery state, and don't see any dupacks,
      so we don't get to any code path that clears tp->retrans_stamp.
    - tp->retrans_stamp stays non-zero for the lifetime of the connection.
    - after first RTO, tcp_clamp_rto_to_user_timeout() clamps second RTO
      to 1 jiffy due to bogus tp->retrans_stamp.
    - on clamped RTO with non-zero icsk_retransmits, retransmits_timed_out()
      sets start_ts from tp->retrans_stamp from TFO payload retransmit
      hours/days ago, and computes bogus long elapsed time for loss recovery,
      and suffers ETIMEDOUT early.
    
    Fixes: a7abf3cd76e1 ("tcp: consider using standard rtx logic in tcp_rcv_fastopen_synack()")
    CC: stable@vger.kernel.org
    Co-developed-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Co-developed-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20240614130615.396837-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
thermal/drivers/mediatek/lvts_thermal: Return error in case of invalid efuse data [+ + +]
Author: Julien Panis <jpanis@baylibre.com>
Date:   Tue Jun 4 18:46:58 2024 +0200

    thermal/drivers/mediatek/lvts_thermal: Return error in case of invalid efuse data
    
    [ Upstream commit 72cacd06e47d86d89b0e7179fbc9eb3a0f39cd93 ]
    
    This patch prevents from registering thermal entries and letting the
    driver misbehave if efuse data is invalid. A device is not properly
    calibrated if the golden temperature is zero.
    
    Fixes: f5f633b18234 ("thermal/drivers/mediatek: Add the Low Voltage Thermal Sensor driver")
    Signed-off-by: Julien Panis <jpanis@baylibre.com>
    Reviewed-by: Nicolas Pitre <npitre@baylibre.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20240604-mtk-thermal-calib-check-v2-1-8f258254051d@baylibre.com
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tipc: force a dst refcount before doing decryption [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Jun 15 14:27:20 2024 -0400

    tipc: force a dst refcount before doing decryption
    
    [ Upstream commit 2ebe8f840c7450ecbfca9d18ac92e9ce9155e269 ]
    
    As it says in commit 3bc07321ccc2 ("xfrm: Force a dst refcount before
    entering the xfrm type handlers"):
    
    "Crypto requests might return asynchronous. In this case we leave the
     rcu protected region, so force a refcount on the skb's destination
     entry before we enter the xfrm type input/output handlers."
    
    On TIPC decryption path it has the same problem, and skb_dst_force()
    should be called before doing decryption to avoid a possible crash.
    
    Shuang reported this issue when this warning is triggered:
    
      [] WARNING: include/net/dst.h:337 tipc_sk_rcv+0x1055/0x1ea0 [tipc]
      [] Kdump: loaded Tainted: G W --------- - - 4.18.0-496.el8.x86_64+debug
      [] Workqueue: crypto cryptd_queue_worker
      [] RIP: 0010:tipc_sk_rcv+0x1055/0x1ea0 [tipc]
      [] Call Trace:
      [] tipc_sk_mcast_rcv+0x548/0xea0 [tipc]
      [] tipc_rcv+0xcf5/0x1060 [tipc]
      [] tipc_aead_decrypt_done+0x215/0x2e0 [tipc]
      [] cryptd_aead_crypt+0xdb/0x190
      [] cryptd_queue_worker+0xed/0x190
      [] process_one_work+0x93d/0x17e0
    
    Fixes: fc1b6d6de220 ("tipc: introduce TIPC encryption & authentication")
    Reported-by: Shuang Li <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Link: https://lore.kernel.org/r/fbe3195fad6997a4eec62d9bf076b2ad03ac336b.1718476040.git.lucien.xin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test [+ + +]
Author: Jeff Johnson <quic_jjohnson@quicinc.com>
Date:   Sat May 18 15:54:49 2024 -0700

    tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test
    
    [ Upstream commit 23748e3e0fbfe471eff5ce439921629f6a427828 ]
    
    Fix the 'make W=1' warning:
    
    WARNING: modpost: missing MODULE_DESCRIPTION() in kernel/trace/preemptirq_delay_test.o
    
    Link: https://lore.kernel.org/linux-trace-kernel/20240518-md-preemptirq_delay_test-v1-1-387d11b30d85@quicinc.com
    
    Cc: stable@vger.kernel.org
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Fixes: f96e8577da10 ("lib: Add module for testing preemptoff/irqsoff latency tracers")
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: Build event generation tests only as modules [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Tue Jun 11 22:30:37 2024 +0900

    tracing: Build event generation tests only as modules
    
    [ Upstream commit 3572bd5689b0812b161b40279e39ca5b66d73e88 ]
    
    The kprobes and synth event generation test modules add events and lock
    (get a reference) those event file reference in module init function,
    and unlock and delete it in module exit function. This is because those
    are designed for playing as modules.
    
    If we make those modules as built-in, those events are left locked in the
    kernel, and never be removed. This causes kprobe event self-test failure
    as below.
    
    [   97.349708] ------------[ cut here ]------------
    [   97.353453] WARNING: CPU: 3 PID: 1 at kernel/trace/trace_kprobe.c:2133 kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.357106] Modules linked in:
    [   97.358488] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 6.9.0-g699646734ab5-dirty #14
    [   97.361556] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    [   97.363880] RIP: 0010:kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.365538] Code: a8 24 08 82 e9 ae fd ff ff 90 0f 0b 90 48 c7 c7 e5 aa 0b 82 e9 ee fc ff ff 90 0f 0b 90 48 c7 c7 2d 61 06 82 e9 8e fd ff ff 90 <0f> 0b 90 48 c7 c7 33 0b 0c 82 89 c6 e8 6e 03 1f ff 41 ff c7 e9 90
    [   97.370429] RSP: 0000:ffffc90000013b50 EFLAGS: 00010286
    [   97.371852] RAX: 00000000fffffff0 RBX: ffff888005919c00 RCX: 0000000000000000
    [   97.373829] RDX: ffff888003f40000 RSI: ffffffff8236a598 RDI: ffff888003f40a68
    [   97.375715] RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
    [   97.377675] R10: ffffffff811c9ae5 R11: ffffffff8120c4e0 R12: 0000000000000000
    [   97.379591] R13: 0000000000000001 R14: 0000000000000015 R15: 0000000000000000
    [   97.381536] FS:  0000000000000000(0000) GS:ffff88807dcc0000(0000) knlGS:0000000000000000
    [   97.383813] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   97.385449] CR2: 0000000000000000 CR3: 0000000002244000 CR4: 00000000000006b0
    [   97.387347] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   97.389277] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   97.391196] Call Trace:
    [   97.391967]  <TASK>
    [   97.392647]  ? __warn+0xcc/0x180
    [   97.393640]  ? kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.395181]  ? report_bug+0xbd/0x150
    [   97.396234]  ? handle_bug+0x3e/0x60
    [   97.397311]  ? exc_invalid_op+0x1a/0x50
    [   97.398434]  ? asm_exc_invalid_op+0x1a/0x20
    [   97.399652]  ? trace_kprobe_is_busy+0x20/0x20
    [   97.400904]  ? tracing_reset_all_online_cpus+0x15/0x90
    [   97.402304]  ? kprobe_trace_self_tests_init+0x3f1/0x480
    [   97.403773]  ? init_kprobe_trace+0x50/0x50
    [   97.404972]  do_one_initcall+0x112/0x240
    [   97.406113]  do_initcall_level+0x95/0xb0
    [   97.407286]  ? kernel_init+0x1a/0x1a0
    [   97.408401]  do_initcalls+0x3f/0x70
    [   97.409452]  kernel_init_freeable+0x16f/0x1e0
    [   97.410662]  ? rest_init+0x1f0/0x1f0
    [   97.411738]  kernel_init+0x1a/0x1a0
    [   97.412788]  ret_from_fork+0x39/0x50
    [   97.413817]  ? rest_init+0x1f0/0x1f0
    [   97.414844]  ret_from_fork_asm+0x11/0x20
    [   97.416285]  </TASK>
    [   97.417134] irq event stamp: 13437323
    [   97.418376] hardirqs last  enabled at (13437337): [<ffffffff8110bc0c>] console_unlock+0x11c/0x150
    [   97.421285] hardirqs last disabled at (13437370): [<ffffffff8110bbf1>] console_unlock+0x101/0x150
    [   97.423838] softirqs last  enabled at (13437366): [<ffffffff8108e17f>] handle_softirqs+0x23f/0x2a0
    [   97.426450] softirqs last disabled at (13437393): [<ffffffff8108e346>] __irq_exit_rcu+0x66/0xd0
    [   97.428850] ---[ end trace 0000000000000000 ]---
    
    And also, since we can not cleanup dynamic_event file, ftracetest are
    failed too.
    
    To avoid these issues, build these tests only as modules.
    
    Link: https://lore.kernel.org/all/171811263754.85078.5877446624311852525.stgit@devnote2/
    
    Fixes: 9fe41efaca08 ("tracing: Add synth event generation test module")
    Fixes: 64836248dda2 ("tracing: Add kprobe event command generation test module")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tty: add the option to have a tty reject a new ldisc [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Apr 23 09:33:39 2024 -0700

    tty: add the option to have a tty reject a new ldisc
    
    [ Upstream commit 6bd23e0c2bb6c65d4f5754d1456bc9a4427fc59b ]
    
    ... and use it to limit the virtual terminals to just N_TTY.  They are
    kind of special, and in particular, the "con_write()" routine violates
    the "writes cannot sleep" rule that some ldiscs rely on.
    
    This avoids the
    
       BUG: sleeping function called from invalid context at kernel/printk/printk.c:2659
    
    when N_GSM has been attached to a virtual console, and gsmld_write()
    calls con_write() while holding a spinlock, and con_write() then tries
    to get the console lock.
    
    Tested-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Daniel Starke <daniel.starke@siemens.com>
    Reported-by: syzbot <syzbot+dbac96d8e73b61aa559c@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=dbac96d8e73b61aa559c
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20240423163339.59780-1-torvalds@linux-foundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udf: udftime: prevent overflow in udf_disk_stamp_to_time() [+ + +]
Author: Roman Smirnov <r.smirnov@omp.ru>
Date:   Wed Mar 27 16:27:55 2024 +0300

    udf: udftime: prevent overflow in udf_disk_stamp_to_time()
    
    [ Upstream commit 3b84adf460381169c085e4bc09e7b57e9e16db0a ]
    
    An overflow can occur in a situation where src.centiseconds
    takes the value of 255. This situation is unlikely, but there
    is no validation check anywere in the code.
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Roman Smirnov <r.smirnov@omp.ru>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Message-Id: <20240327132755.13945-1-r.smirnov@omp.ru>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380 [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 6 16:01:27 2024 +0200

    usb: dwc3: pci: Don't set "linux,phy_charger_detect" property on Lenovo Yoga Tab2 1380
    
    [ Upstream commit 0fb782b5d5c462b2518b3b4fe7d652114c28d613 ]
    
    The Lenovo Yoga Tablet 2 Pro 1380 model is the exception to the rule that
    devices which use the Crystal Cove PMIC without using ACPI for battery and
    AC power_supply class support use the USB-phy for charger detection.
    
    Unlike the Lenovo Yoga Tablet 2 830 / 1050 models this model has an extra
    LC824206XA Micro USB switch which does the charger detection.
    
    Add a DMI quirk to not set the "linux,phy_charger_detect" property on
    the 1380 model. This quirk matches on the BIOS version to differentiate
    the 1380 model from the 830 and 1050 models which otherwise have
    the same DMI strings.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20240406140127.17885-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Apr 14 17:10:32 2024 +0200

    usb: gadget: function: Remove usage of the deprecated ida_simple_xx() API
    
    [ Upstream commit 920e7522e3bab5ebc2fb0cc1a034f4470c87fa97 ]
    
    ida_alloc() and ida_free() should be preferred to the deprecated
    ida_simple_get() and ida_simple_remove().
    
    Note that the upper limit of ida_simple_get() is exclusive, but the one of
    ida_alloc_max() is inclusive. So a -1 has been added when needed.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/7cd361e2b377a5373968fa7deee4169229992a1e.1713107386.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: uvc: configfs: ensure guid to be valid before set [+ + +]
Author: Michael Grzeschik <m.grzeschik@pengutronix.de>
Date:   Wed Feb 21 23:14:47 2024 +0100

    usb: gadget: uvc: configfs: ensure guid to be valid before set
    
    [ Upstream commit f7a7f80ccc8df017507e2b1e1dd652361374d25b ]
    
    When setting the guid via configfs it is possible to test if
    its value is one of the kernel supported ones by calling
    uvc_format_by_guid on it. If the result is NULL, we know the
    guid is unsupported and can be ignored.
    
    Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Link: https://lore.kernel.org/r/20240221-uvc-gadget-configfs-guid-v1-1-f0678ca62ebb@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: misc: uss720: check for incompatible versions of the Belkin F5U002 [+ + +]
Author: Alex Henrie <alexhenrie24@gmail.com>
Date:   Tue Mar 26 09:07:11 2024 -0600

    usb: misc: uss720: check for incompatible versions of the Belkin F5U002
    
    [ Upstream commit 3295f1b866bfbcabd625511968e8a5c541f9ab32 ]
    
    The incompatible device in my possession has a sticker that says
    "F5U002 Rev 2" and "P80453-B", and lsusb identifies it as
    "050d:0002 Belkin Components IEEE-1284 Controller". There is a bug
    report from 2007 from Michael Trausch who was seeing the exact same
    errors that I saw in 2024 trying to use this cable.
    
    Link: https://lore.kernel.org/all/46DE5830.9060401@trausch.us/
    Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
    Link: https://lore.kernel.org/r/20240326150723.99939-5-alexhenrie24@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi_glink: drop special handling for CCI_BUSY [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Mon Apr 8 04:04:17 2024 +0300

    usb: typec: ucsi_glink: drop special handling for CCI_BUSY
    
    [ Upstream commit 1a395af9d53c6240bf7799abc43b4dc292ca9dd0 ]
    
    Newer Qualcomm platforms (sm8450+) successfully handle busy state and
    send the Command Completion after sending the Busy state. Older devices
    have firmware bug and can not continue after sending the CCI_BUSY state,
    but the command that leads to CCI_BUSY is already forbidden by the
    NO_PARTNER_PDOS quirk.
    
    Follow other UCSI glue drivers and drop special handling for CCI_BUSY
    event. Let the UCSI core properly handle this state.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20240408-qcom-ucsi-fixes-bis-v1-3-716c145ca4b1@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vfio/pci: Collect hot-reset devices to local buffer [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Fri May 3 08:31:36 2024 -0600

    vfio/pci: Collect hot-reset devices to local buffer
    
    [ Upstream commit f6944d4a0b87c16bc34ae589169e1ded3d4db08e ]
    
    Lockdep reports the below circular locking dependency issue.  The
    mmap_lock acquisition while holding pci_bus_sem is due to the use of
    copy_to_user() from within a pci_walk_bus() callback.
    
    Building the devices array directly into the user buffer is only for
    convenience.  Instead we can allocate a local buffer for the array,
    bounded by the number of devices on the bus/slot, fill the device
    information into this local buffer, then copy it into the user buffer
    outside the bus walk callback.
    
    ======================================================
    WARNING: possible circular locking dependency detected
    6.9.0-rc5+ #39 Not tainted
    ------------------------------------------------------
    CPU 0/KVM/4113 is trying to acquire lock:
    ffff99a609ee18a8 (&vdev->vma_lock){+.+.}-{4:4}, at: vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
    
    but task is already holding lock:
    ffff99a243a052a0 (&mm->mmap_lock){++++}-{4:4}, at: vaddr_get_pfns+0x3f/0x170 [vfio_iommu_type1]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #3 (&mm->mmap_lock){++++}-{4:4}:
           __lock_acquire+0x4e4/0xb90
           lock_acquire+0xbc/0x2d0
           __might_fault+0x5c/0x80
           _copy_to_user+0x1e/0x60
           vfio_pci_fill_devs+0x9f/0x130 [vfio_pci_core]
           vfio_pci_walk_wrapper+0x45/0x60 [vfio_pci_core]
           __pci_walk_bus+0x6b/0xb0
           vfio_pci_ioctl_get_pci_hot_reset_info+0x10b/0x1d0 [vfio_pci_core]
           vfio_pci_core_ioctl+0x1cb/0x400 [vfio_pci_core]
           vfio_device_fops_unl_ioctl+0x7e/0x140 [vfio]
           __x64_sys_ioctl+0x8a/0xc0
           do_syscall_64+0x8d/0x170
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    -> #2 (pci_bus_sem){++++}-{4:4}:
           __lock_acquire+0x4e4/0xb90
           lock_acquire+0xbc/0x2d0
           down_read+0x3e/0x160
           pci_bridge_wait_for_secondary_bus.part.0+0x33/0x2d0
           pci_reset_bus+0xdd/0x160
           vfio_pci_dev_set_hot_reset+0x256/0x270 [vfio_pci_core]
           vfio_pci_ioctl_pci_hot_reset_groups+0x1a3/0x280 [vfio_pci_core]
           vfio_pci_core_ioctl+0x3b5/0x400 [vfio_pci_core]
           vfio_device_fops_unl_ioctl+0x7e/0x140 [vfio]
           __x64_sys_ioctl+0x8a/0xc0
           do_syscall_64+0x8d/0x170
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    -> #1 (&vdev->memory_lock){+.+.}-{4:4}:
           __lock_acquire+0x4e4/0xb90
           lock_acquire+0xbc/0x2d0
           down_write+0x3b/0xc0
           vfio_pci_zap_and_down_write_memory_lock+0x1c/0x30 [vfio_pci_core]
           vfio_basic_config_write+0x281/0x340 [vfio_pci_core]
           vfio_config_do_rw+0x1fa/0x300 [vfio_pci_core]
           vfio_pci_config_rw+0x75/0xe50 [vfio_pci_core]
           vfio_pci_rw+0xea/0x1a0 [vfio_pci_core]
           vfs_write+0xea/0x520
           __x64_sys_pwrite64+0x90/0xc0
           do_syscall_64+0x8d/0x170
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    -> #0 (&vdev->vma_lock){+.+.}-{4:4}:
           check_prev_add+0xeb/0xcc0
           validate_chain+0x465/0x530
           __lock_acquire+0x4e4/0xb90
           lock_acquire+0xbc/0x2d0
           __mutex_lock+0x97/0xde0
           vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
           __do_fault+0x31/0x160
           do_pte_missing+0x65/0x3b0
           __handle_mm_fault+0x303/0x720
           handle_mm_fault+0x10f/0x460
           fixup_user_fault+0x7f/0x1f0
           follow_fault_pfn+0x66/0x1c0 [vfio_iommu_type1]
           vaddr_get_pfns+0xf2/0x170 [vfio_iommu_type1]
           vfio_pin_pages_remote+0x348/0x4e0 [vfio_iommu_type1]
           vfio_pin_map_dma+0xd2/0x330 [vfio_iommu_type1]
           vfio_dma_do_map+0x2c0/0x440 [vfio_iommu_type1]
           vfio_iommu_type1_ioctl+0xc5/0x1d0 [vfio_iommu_type1]
           __x64_sys_ioctl+0x8a/0xc0
           do_syscall_64+0x8d/0x170
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    other info that might help us debug this:
    
    Chain exists of:
      &vdev->vma_lock --> pci_bus_sem --> &mm->mmap_lock
    
     Possible unsafe locking scenario:
    
    block dm-0: the capability attribute has been deprecated.
           CPU0                    CPU1
           ----                    ----
      rlock(&mm->mmap_lock);
                                   lock(pci_bus_sem);
                                   lock(&mm->mmap_lock);
      lock(&vdev->vma_lock);
    
     *** DEADLOCK ***
    
    2 locks held by CPU 0/KVM/4113:
     #0: ffff99a25f294888 (&iommu->lock#2){+.+.}-{4:4}, at: vfio_dma_do_map+0x60/0x440 [vfio_iommu_type1]
     #1: ffff99a243a052a0 (&mm->mmap_lock){++++}-{4:4}, at: vaddr_get_pfns+0x3f/0x170 [vfio_iommu_type1]
    
    stack backtrace:
    CPU: 1 PID: 4113 Comm: CPU 0/KVM Not tainted 6.9.0-rc5+ #39
    Hardware name: Dell Inc. PowerEdge T640/04WYPY, BIOS 2.15.1 06/16/2022
    Call Trace:
     <TASK>
     dump_stack_lvl+0x64/0xa0
     check_noncircular+0x131/0x150
     check_prev_add+0xeb/0xcc0
     ? add_chain_cache+0x10a/0x2f0
     ? __lock_acquire+0x4e4/0xb90
     validate_chain+0x465/0x530
     __lock_acquire+0x4e4/0xb90
     lock_acquire+0xbc/0x2d0
     ? vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
     ? lock_is_held_type+0x9a/0x110
     __mutex_lock+0x97/0xde0
     ? vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
     ? lock_acquire+0xbc/0x2d0
     ? vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
     ? find_held_lock+0x2b/0x80
     ? vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
     vfio_pci_mmap_fault+0x35/0x1a0 [vfio_pci_core]
     __do_fault+0x31/0x160
     do_pte_missing+0x65/0x3b0
     __handle_mm_fault+0x303/0x720
     handle_mm_fault+0x10f/0x460
     fixup_user_fault+0x7f/0x1f0
     follow_fault_pfn+0x66/0x1c0 [vfio_iommu_type1]
     vaddr_get_pfns+0xf2/0x170 [vfio_iommu_type1]
     vfio_pin_pages_remote+0x348/0x4e0 [vfio_iommu_type1]
     vfio_pin_map_dma+0xd2/0x330 [vfio_iommu_type1]
     vfio_dma_do_map+0x2c0/0x440 [vfio_iommu_type1]
     vfio_iommu_type1_ioctl+0xc5/0x1d0 [vfio_iommu_type1]
     __x64_sys_ioctl+0x8a/0xc0
     do_syscall_64+0x8d/0x170
     ? rcu_core+0x8d/0x250
     ? __lock_release+0x5e/0x160
     ? rcu_core+0x8d/0x250
     ? lock_release+0x5f/0x120
     ? sched_clock+0xc/0x30
     ? sched_clock_cpu+0xb/0x190
     ? irqtime_account_irq+0x40/0xc0
     ? __local_bh_enable+0x54/0x60
     ? __do_softirq+0x315/0x3ca
     ? lockdep_hardirqs_on_prepare.part.0+0x97/0x140
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x7f8300d0357b
    Code: ff ff ff 85 c0 79 9b 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 75 68 0f 00 f7 d8 64 89 01 48
    RSP: 002b:00007f82ef3fb948 EFLAGS: 00000206 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f8300d0357b
    RDX: 00007f82ef3fb990 RSI: 0000000000003b71 RDI: 0000000000000023
    RBP: 00007f82ef3fb9c0 R08: 0000000000000000 R09: 0000561b7e0bcac2
    R10: 0000000000000000 R11: 0000000000000206 R12: 0000000000000000
    R13: 0000000200000000 R14: 0000381800000000 R15: 0000000000000000
     </TASK>
    
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/20240503143138.3562116-1-alex.williamson@redhat.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vgacon: rework screen_info #ifdef checks [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 9 23:18:38 2023 +0200

    vgacon: rework screen_info #ifdef checks
    
    [ Upstream commit 8a736ddfc861b2a217c935c2f461a8004add8247 ]
    
    On non-x86 architectures, the screen_info variable is generally only
    used for the VGA console where supported, and in some cases the EFI
    framebuffer or vga16fb.
    
    Now that we have a definite list of which architectures actually use it
    for what, use consistent #ifdef checks so the global variable is only
    defined when it is actually used on those architectures.
    
    Loongarch and riscv have no support for vgacon or vga16fb, but
    they support EFI firmware, so only that needs to be checked, and the
    initialization can be removed because that is handled by EFI.
    IA64 has both vgacon and EFI, though EFI apparently never uses
    a framebuffer here.
    
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: Khalid Aziz <khalid@gonehiking.org>
    Acked-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20231009211845.3136536-3-arnd@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: beb2800074c1 ("LoongArch: Fix entry point in kernel image header")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
virtio_net: checksum offloading handling fix [+ + +]
Author: Heng Qi <hengqi@linux.alibaba.com>
Date:   Mon Jun 17 21:15:23 2024 +0800

    virtio_net: checksum offloading handling fix
    
    [ Upstream commit 604141c036e1b636e2a71cf6e1aa09d1e45f40c2 ]
    
    In virtio spec 0.95, VIRTIO_NET_F_GUEST_CSUM was designed to handle
    partially checksummed packets, and the validation of fully checksummed
    packets by the device is independent of VIRTIO_NET_F_GUEST_CSUM
    negotiation. However, the specification erroneously stated:
    
      "If VIRTIO_NET_F_GUEST_CSUM is not negotiated, the device MUST set flags
       to zero and SHOULD supply a fully checksummed packet to the driver."
    
    This statement is inaccurate because even without VIRTIO_NET_F_GUEST_CSUM
    negotiation, the device can still set the VIRTIO_NET_HDR_F_DATA_VALID flag.
    Essentially, the device can facilitate the validation of these packets'
    checksums - a process known as RX checksum offloading - removing the need
    for the driver to do so.
    
    This scenario is currently not implemented in the driver and requires
    correction. The necessary specification correction[1] has been made and
    approved in the virtio TC vote.
    [1] https://lists.oasis-open.org/archives/virtio-comment/202401/msg00011.html
    
    Fixes: 4f49129be6fa ("virtio-net: Set RXCSUM feature if GUEST_CSUM is available")
    Signed-off-by: Heng Qi <hengqi@linux.alibaba.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

virtio_net: fixing XDP for fully checksummed packets handling [+ + +]
Author: Heng Qi <hengqi@linux.alibaba.com>
Date:   Mon Jun 17 21:15:24 2024 +0800

    virtio_net: fixing XDP for fully checksummed packets handling
    
    [ Upstream commit 703eec1b242276f2d97d98f04790ddad319ddde4 ]
    
    The XDP program can't correctly handle partially checksummed
    packets, but works fine with fully checksummed packets. If the
    device has already validated fully checksummed packets, then
    the driver doesn't need to re-validate them, saving CPU resources.
    
    Additionally, the driver does not drop all partially checksummed
    packets when VIRTIO_NET_F_GUEST_CSUM is not negotiated. This is
    not a bug, as the driver has always done this.
    
    Fixes: 436c9453a1ac ("virtio-net: keep vnet header zeroed after processing XDP")
    Signed-off-by: Heng Qi <hengqi@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath9k: work around memset overflow warning [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Apr 4 09:35:59 2024 +0300

    wifi: ath9k: work around memset overflow warning
    
    [ Upstream commit 61752ac69b69ed2e04444d090f6917c77ab36d42 ]
    
    gcc-9 and some other older versions produce a false-positive warning
    for zeroing two fields
    
    In file included from include/linux/string.h:369,
                     from drivers/net/wireless/ath/ath9k/main.c:18:
    In function 'fortify_memset_chk',
        inlined from 'ath9k_ps_wakeup' at drivers/net/wireless/ath/ath9k/main.c:140:3:
    include/linux/fortify-string.h:462:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
      462 |                         __write_overflow_field(p_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Using a struct_group seems to reliably avoid the warning and
    not make the code much uglier. The combined memset() should even
    save a couple of cpu cycles.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://msgid.link/20240328135509.3755090-3-arnd@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7921s: fix potential hung tasks during chip recovery [+ + +]
Author: Leon Yen <leon.yen@mediatek.com>
Date:   Thu Mar 7 17:46:32 2024 +0800

    wifi: mt76: mt7921s: fix potential hung tasks during chip recovery
    
    [ Upstream commit ecf0b2b8a37c8464186620bef37812a117ff6366 ]
    
    During chip recovery (e.g. chip reset), there is a possible situation that
    kernel worker reset_work is holding the lock and waiting for kernel thread
    stat_worker to be parked, while stat_worker is waiting for the release of
    the same lock.
    It causes a deadlock resulting in the dumping of hung tasks messages and
    possible rebooting of the device.
    
    This patch prevents the execution of stat_worker during the chip recovery.
    
    Signed-off-by: Leon Yen <leon.yen@mediatek.com>
    Signed-off-by: Ming Yen Hsieh <MingYen.Hsieh@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtl8xxxu: enable MFP support with security flag of RX descriptor [+ + +]
Author: Martin Kaistra <martin.kaistra@linutronix.de>
Date:   Thu Apr 18 09:18:13 2024 +0200

    wifi: rtl8xxxu: enable MFP support with security flag of RX descriptor
    
    [ Upstream commit cbfbb4ddbc8503478e0a138f9a31f61686cc5f11 ]
    
    In order to connect to networks which require 802.11w, add the
    MFP_CAPABLE flag and let mac80211 do the actual crypto in software.
    
    When a robust management frame is received, rx_dec->swdec is not set,
    even though the HW did not decrypt it. Extend the check and don't set
    RX_FLAG_DECRYPTED for these frames in order to use SW decryption.
    
    Use the security flag in the RX descriptor for this purpose, like it is
    done in the rtw88 driver.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://msgid.link/20240418071813.1883174-3-martin.kaistra@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/cpu/vfm: Add new macros to work with (vendor/family/model) values [+ + +]
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Apr 16 14:19:04 2024 -0700

    x86/cpu/vfm: Add new macros to work with (vendor/family/model) values
    
    [ Upstream commit e6dfdc2e89a0adedf455814c91b977d6a584cc88 ]
    
    To avoid adding a slew of new macros for each new Intel CPU family
    switch over from providing CPU model number #defines to a new
    scheme that encodes vendor, family, and model in a single number.
    
      [ bp: s/casted/cast/g ]
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20240416211941.9369-3-tony.luck@intel.com
    Stable-dep-of: 93022482b294 ("x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL [+ + +]
Author: Tony Luck <tony.luck@intel.com>
Date:   Mon May 20 15:45:33 2024 -0700

    x86/cpu: Fix x86_match_cpu() to match just X86_VENDOR_INTEL
    
    [ Upstream commit 93022482b2948a9a7e9b5a2bb685f2e1cb4c3348 ]
    
    Code in v6.9 arch/x86/kernel/smpboot.c was changed by commit
    
      4db64279bc2b ("x86/cpu: Switch to new Intel CPU model defines") from:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
              X86_MATCH_INTEL_FAM6_MODEL(HASWELL_X, 0),       /* COD */
              X86_MATCH_INTEL_FAM6_MODEL(BROADWELL_X, 0),     /* COD */
              X86_MATCH_INTEL_FAM6_MODEL(ANY, 1),             /* SNC */     <--- 443
              {}
      };
    
      static bool match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
      {
              const struct x86_cpu_id *id = x86_match_cpu(intel_cod_cpu);
    
    to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
               X86_MATCH_VFM(INTEL_HASWELL_X,   0),    /* COD */
               X86_MATCH_VFM(INTEL_BROADWELL_X, 0),    /* COD */
               X86_MATCH_VFM(INTEL_ANY,         1),    /* SNC */
               {}
       };
    
      static bool match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
      {
              const struct x86_cpu_id *id = x86_match_cpu(intel_cod_cpu);
    
    On an Intel CPU with SNC enabled this code previously matched the rule on line
    443 to avoid printing messages about insane cache configuration.  The new code
    did not match any rules.
    
    Expanding the macros for the intel_cod_cpu[] array shows that the old is
    equivalent to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
      [0] = { .vendor = 0, .family = 6, .model = 0x3F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [1] = { .vendor = 0, .family = 6, .model = 0x4F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [2] = { .vendor = 0, .family = 6, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 1 },
      [3] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 0 }
      }
    
    while the new code expands to:
    
      static const struct x86_cpu_id intel_cod_cpu[] = {
      [0] = { .vendor = 0, .family = 6, .model = 0x3F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [1] = { .vendor = 0, .family = 6, .model = 0x4F, .steppings = 0, .feature = 0, .driver_data = 0 },
      [2] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 1 },
      [3] = { .vendor = 0, .family = 0, .model = 0x00, .steppings = 0, .feature = 0, .driver_data = 0 }
      }
    
    Looking at the code for x86_match_cpu():
    
      const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match)
      {
               const struct x86_cpu_id *m;
               struct cpuinfo_x86 *c = &boot_cpu_data;
    
               for (m = match;
                    m->vendor | m->family | m->model | m->steppings | m->feature;
                    m++) {
                    ...
               }
               return NULL;
    
    it is clear that there was no match because the ANY entry in the table (array
    index 2) is now the loop termination condition (all of vendor, family, model,
    steppings, and feature are zero).
    
    So this code was working before because the "ANY" check was looking for any
    Intel CPU in family 6. But fails now because the family is a wild card. So the
    root cause is that x86_match_cpu() has never been able to match on a rule with
    just X86_VENDOR_INTEL and all other fields set to wildcards.
    
    Add a new flags field to struct x86_cpu_id that has a bit set to indicate that
    this entry in the array is valid. Update X86_MATCH*() macros to set that bit.
    Change the end-marker check in x86_match_cpu() to just check the flags field
    for this bit.
    
    Backporter notes: The commit in Fixes is really the one that is broken:
    you can't have m->vendor as part of the loop termination conditional in
    x86_match_cpu() because it can happen - as it has happened above
    - that that whole conditional is 0 albeit vendor == 0 is a valid case
    - X86_VENDOR_INTEL is 0.
    
    However, the only case where the above happens is the SNC check added by
    4db64279bc2b1 so you only need this fix if you have backported that
    other commit
    
      4db64279bc2b ("x86/cpu: Switch to new Intel CPU model defines")
    
    Fixes: 644e9cbbe3fc ("Add driver auto probing for x86 features v4")
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Suggested-by: Borislav Petkov <bp@alien8.de>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: <stable+noautosel@kernel.org> # see above
    Link: https://lore.kernel.org/r/20240517144312.GBZkdtAOuJZCvxhFbJ@fat_crate.local
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Jun 15 15:42:31 2024 +0000

    xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr()
    
    [ Upstream commit d46401052c2d5614da8efea5788532f0401cb164 ]
    
    ip6_dst_idev() can return NULL, xfrm6_get_saddr() must act accordingly.
    
    syzbot reported:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
    CPU: 1 PID: 12 Comm: kworker/u8:1 Not tainted 6.10.0-rc2-syzkaller-00383-gb8481381d4e2 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
    Workqueue: wg-kex-wg1 wg_packet_handshake_send_worker
     RIP: 0010:xfrm6_get_saddr+0x93/0x130 net/ipv6/xfrm6_policy.c:64
    Code: df 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 97 00 00 00 4c 8b ab d8 00 00 00 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1 ea 03 <80> 3c 02 00 0f 85 86 00 00 00 4d 8b 6d 00 e8 ca 13 47 01 48 b8 00
    RSP: 0018:ffffc90000117378 EFLAGS: 00010246
    RAX: dffffc0000000000 RBX: ffff88807b079dc0 RCX: ffffffff89a0d6d7
    RDX: 0000000000000000 RSI: ffffffff89a0d6e9 RDI: ffff88807b079e98
    RBP: ffff88807ad73248 R08: 0000000000000007 R09: fffffffffffff000
    R10: ffff88807b079dc0 R11: 0000000000000007 R12: ffffc90000117480
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    FS:  0000000000000000(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f4586d00440 CR3: 0000000079042000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      xfrm_get_saddr net/xfrm/xfrm_policy.c:2452 [inline]
      xfrm_tmpl_resolve_one net/xfrm/xfrm_policy.c:2481 [inline]
      xfrm_tmpl_resolve+0xa26/0xf10 net/xfrm/xfrm_policy.c:2541
      xfrm_resolve_and_create_bundle+0x140/0x2570 net/xfrm/xfrm_policy.c:2835
      xfrm_bundle_lookup net/xfrm/xfrm_policy.c:3070 [inline]
      xfrm_lookup_with_ifid+0x4d1/0x1e60 net/xfrm/xfrm_policy.c:3201
      xfrm_lookup net/xfrm/xfrm_policy.c:3298 [inline]
      xfrm_lookup_route+0x3b/0x200 net/xfrm/xfrm_policy.c:3309
      ip6_dst_lookup_flow+0x15c/0x1d0 net/ipv6/ip6_output.c:1256
      send6+0x611/0xd20 drivers/net/wireguard/socket.c:139
      wg_socket_send_skb_to_peer+0xf9/0x220 drivers/net/wireguard/socket.c:178
      wg_socket_send_buffer_to_peer+0x12b/0x190 drivers/net/wireguard/socket.c:200
      wg_packet_send_handshake_initiation+0x227/0x360 drivers/net/wireguard/send.c:40
      wg_packet_handshake_send_worker+0x1c/0x30 drivers/net/wireguard/send.c:51
      process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
      process_scheduled_works kernel/workqueue.c:3312 [inline]
      worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
      kthread+0x2c1/0x3a0 kernel/kthread.c:389
      ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20240615154231.234442-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>