Linux 5.19.12

 
ALSA: core: Fix double-free at snd_card_new() [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Sep 19 14:35:16 2022 +0200

    ALSA: core: Fix double-free at snd_card_new()
    
    commit c3afa2a402d1ecefa59f88d55d9e765f52f75bd9 upstream.
    
    During the code change to add the support for devres-managed card
    instance, we put an explicit kfree(card) call at the error path in
    snd_card_new().  This is needed for the early error path before the
    card is initialized with the device, but is rather superfluous and
    causes a double-free at the error path after the card instance is
    initialized, as the destructor of the card object already contains a
    kfree() call.
    
    This patch fixes the double-free situation by removing the superfluous
    kfree().  Meanwhile we need to call kfree() explicitly for the early
    error path, so it's added there instead.
    
    Fixes: e8ad415b7a55 ("ALSA: core: Add managed card creation")
    Reported-by: Rondreis <linhaoguo86@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/CAB7eexL1zBnB636hwS27d-LdPYZ_R1-5fJS_h=ZbCWYU=UPWJg@mail.gmail.com
    Link: https://lore.kernel.org/r/20220919123516.28222-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add a quirk for HP OMEN 16 (8902) mute LED [+ + +]
Author: Daniel Houldsworth <dhould3@gmail.com>
Date:   Sun Sep 18 18:13:00 2022 +0100

    ALSA: hda/realtek: Add a quirk for HP OMEN 16 (8902) mute LED
    
    commit 496322302bf1e58dc2ff134173527493105f51ab upstream.
    
    Similair to the HP OMEN 15, the HP OMEN 16 also needs
    ALC285_FIXUP_HP_MUTE_LED for the mute LED to work.
    
    [ Rearranged the entry in PCI SSID order by tiwai ]
    
    Signed-off-by: Daniel Houldsworth <dhould3@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220918171300.24693-1-dhould3@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add pincfg for ASUS G513 HP jack [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Thu Sep 15 20:09:19 2022 +1200

    ALSA: hda/realtek: Add pincfg for ASUS G513 HP jack
    
    commit c611e659044168e7abcbae8ba1ea833521498fbb upstream.
    
    Fixes up the pincfg for ASUS ROG Strix G513 headphone and mic combo jack
    
    [ Fixed the position in the quirk table by tiwai ]
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220915080921.35563-2-luke@ljones.dev
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add pincfg for ASUS G533Z HP jack [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Thu Sep 15 20:09:20 2022 +1200

    ALSA: hda/realtek: Add pincfg for ASUS G533Z HP jack
    
    commit bc2c23549ccd7105eb6ff0d4f0ac519285628673 upstream.
    
    Fixes up the pincfg for ASUS ROG Strix G15 (G533Z) headphone combo jack
    
    [ Fixed the position in the quirk table by tiwai ]
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220915080921.35563-3-luke@ljones.dev
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for ASUS GA503R laptop [+ + +]
Author: Luke D. Jones <luke@ljones.dev>
Date:   Thu Sep 15 20:09:21 2022 +1200

    ALSA: hda/realtek: Add quirk for ASUS GA503R laptop
    
    commit ba1f818053b0668a1ce2fe86b840e81b592cc560 upstream.
    
    The ASUS G15 2022 (GA503R) series laptop has the same node-to-DAC pairs
    as early models and the G14, this includes bass speakers which are by
    default mapped incorrectly to the 0x06 node.
    
    Add a quirk to use the same DAC pairs as the G14.
    
    Signed-off-by: Luke D. Jones <luke@ljones.dev>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220915080921.35563-4-luke@ljones.dev
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for Huawei WRT-WX9 [+ + +]
Author: huangwenhui <huangwenhuia@uniontech.com>
Date:   Tue Sep 13 13:46:22 2022 +0800

    ALSA: hda/realtek: Add quirk for Huawei WRT-WX9
    
    commit cbcdf8c4d35cd74aee8581eb2f0453e0ecab7b05 upstream.
    
    Fixes headphone and headset microphone detection on Huawei WRT-WX9.
    
    Signed-off-by: huangwenhui <huangwenhuia@uniontech.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220913054622.15979-1-huangwenhuia@uniontech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5530 laptop [+ + +]
Author: Callum Osmotherly <callum.osmotherly@gmail.com>
Date:   Thu Sep 15 22:36:08 2022 +0930

    ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5530 laptop
    
    commit 1885ff13d4c42910b37a0e3f7c2f182520f4eed1 upstream.
    
    Just as with the 5570 (and the other Dell laptops), this enables the two
    subwoofer speakers on the Dell Precision 5530 together with the main
    ones, significantly increasing the audio quality. I've tested this
    myself on a 5530 and can confirm it's working as expected.
    
    Signed-off-by: Callum Osmotherly <callum.osmotherly@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/YyMjQO3mhyXlMbCf@piranha
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5570 laptop [+ + +]
Author: Callum Osmotherly <callum.osmotherly@gmail.com>
Date:   Wed Sep 14 18:44:00 2022 +0930

    ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5570 laptop
    
    commit bdc9b7396f7d4d6533e70fd8d5472f505b5ef58f upstream.
    
    The Dell Precision 5570 uses the same 4-speakers-on-ALC289 just like the
    previous Precision 5560. I replicated that patch onto this one, and can
    confirm that the audio is much better (the woofers are now working);
    I've tested it on my Dell Precision 5570.
    
    Signed-off-by: Callum Osmotherly <callum.osmotherly@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/YyGbWM5wEoFMbW2v@piranha
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Re-arrange quirk table entries [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Sep 15 17:47:24 2022 +0200

    ALSA: hda/realtek: Re-arrange quirk table entries
    
    commit b16c8f229a58eaddfc58aab447253464abd3c85e upstream.
    
    A few entries have been mistakenly inserted in wrong positions without
    considering the SSID ordering.  Place them at right positions.
    
    Fixes: b7557267c233 ("ALSA: hda/realtek: Add quirk for ASUS GA402")
    Fixes: 94db9cc8f8fa ("ALSA: hda/realtek: Add quirk for ASUS GU603")
    Fixes: 739d0959fbed ("ALSA: hda: Add quirk for ASUS Flow x13")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220915154724.31634-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/tegra: set depop delay for tegra [+ + +]
Author: Mohan Kumar <mkumard@nvidia.com>
Date:   Tue Sep 13 11:06:41 2022 +0530

    ALSA: hda/tegra: set depop delay for tegra
    
    commit 3c4d8c24fb6c44f426e447b04800b0ed61a7b5ae upstream.
    
    Reduce the suspend time by setting depop delay to 10ms for
    tegra.
    
    Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220913053641.23299-1-mkumard@nvidia.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: add Intel 5 Series / 3400 PCI DID [+ + +]
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Mon Sep 12 21:37:16 2022 +0300

    ALSA: hda: add Intel 5 Series / 3400 PCI DID
    
    commit 4d40ceef4745536289012670103c59264e0fb3ec upstream.
    
    Handle 0x3b57 variant with same AZX_DCAPS_INTEL_PCH_NOPM
    capabilities as 0x3b56. In practise this allow use of HDMI/DP
    display audio via i915.
    
    BugLink: https://gitlab.freedesktop.org/drm/intel/-/issues/2751
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220912183716.2126312-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount saturation [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Sep 10 16:25:50 2022 +0200

    ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount saturation
    
    commit ead3d3c5b54f76da79c079e61bacb4279ec56965 upstream.
    
    We fixed the potential deadlock at dynamic unbinding the HD-audio
    codec at the commit 7206998f578d ("ALSA: hda: Fix potential deadlock
    at codec unbinding"), but ironically, this caused another potential
    deadlock.  The current code uses refcount_dec() and waits for the
    pending task with wait_event for dropping the refcount to 0.  This
    works fine when PCMs are assigned and actually waiting for the
    refcount drop.
    
    Meanwhile, when there was no PCM assigned, the refcount_dec() call
    itself was supposed to drop to zero -- alas, it doesn't in reality;
    refcount_dec() complains, spews kernel warning and it saturates
    instead of dropping to 0, due to the nature of refcount_dec()
    implementation.  This eventually blocks the wait_event() wakeup and
    the code get stuck there.
    
    For avoiding the problem, we call refcount_dec_and_test() and skips
    the sync-wait if it already reaches to zero.
    
    The patch does a slight code reshuffling to make sure to invoke other
    disconnect calls before the sync-wait, too.
    
    Fixes: 7206998f578d ("ALSA: hda: Fix potential deadlock at codec unbinding")
    Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/YxtflWQnslMHVlU7@intel.com
    Link: https://lore.kernel.org/r/20220910142550.28494-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: Fix Nvidia dp infoframe [+ + +]
Author: Mohan Kumar <mkumard@nvidia.com>
Date:   Tue Sep 13 12:28:18 2022 +0530

    ALSA: hda: Fix Nvidia dp infoframe
    
    commit f89e409402e2aeb3bc3aa44d2b7a597959e4e6af upstream.
    
    Nvidia HDA HW expects infoframe data bytes order same for both
    HDMI and DP i.e infoframe data starts from 5th bytes offset. As
    dp infoframe structure has 4th byte as valid infoframe data, use
    hdmi infoframe structure for nvidia dp infoframe to match HW behvaior.
    
    Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220913065818.13015-1-mkumard@nvidia.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: dts: imx8mm-verdin: extend pmic voltages [+ + +]
Author: Philippe Schenker <philippe.schenker@toradex.com>
Date:   Thu Sep 1 12:01:51 2022 +0200

    arm64: dts: imx8mm-verdin: extend pmic voltages
    
    [ Upstream commit b5a76cb38df779076a3cff624ce6a368d9bcf330 ]
    
    Currently, we limited the voltages from the PMIC very strictly. This
    causes an issue with one Toradex SKU that uses a consumer-grade chip
    that is capable of going up to 1.8GHz at 1.00V.
    
    Extend the ranges to min/max values of the SoC operating ranges (table
    10) in the datasheet. Detailed explanation as follows:
    
    BUCK2:
      - As already described above, the SKU with the consumer-grade chip
        needs a voltage of at least 1.00V. 1.05V is chosen now as this is
        listed as the maximum. Both industrial and consumer-grade chips have
        an absolute maximum rating of 1.15V which makes it still safe to put
        1.05V
      - Lower the regulator-min value to the smallest value allowed from the
        Quad-A53, 1.2GHz version of the SoC
    
    BUCK3:
      - This regulator is used for SoC input voltages VDD_GPU, VDD_VPU and
        VDD_DRAM.
      - Use the smallest value of these three inputs as the regulator-min
      - Use the largest value of these three inputs as the regulator-max
    
    LDO2:
      - This LDO is used for VDD_SNVS_0P8 SoC input voltage. As this has a
        single nominal input voltage just put this in the middle of 0.8V.
    
    Fixes: 6a57f224f734 ("arm64: dts: freescale: add initial support for verdin imx8m mini")
    Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
    Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mm: Reverse CPLD_Dn GPIO label mapping on MX8Menlo [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Wed Aug 24 00:13:20 2022 +0200

    arm64: dts: imx8mm: Reverse CPLD_Dn GPIO label mapping on MX8Menlo
    
    [ Upstream commit 8194a356226ce6f53e1d98b44c0436c583db89d2 ]
    
    The CPLD_Dn GPIO assignment between SoM and CPLD has now been clarified
    in schematic and the assignment is reversed. Update the DT to match the
    hardware.
    
    Fixes: 510c527b4ff57 ("arm64: dts: imx8mm: Add i.MX8M Mini Toradex Verdin based Menlo board")
    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: imx8mn: remove GPU power domain reset [+ + +]
Author: Marco Felsch <m.felsch@pengutronix.de>
Date:   Fri Aug 26 21:04:48 2022 +0200

    arm64: dts: imx8mn: remove GPU power domain reset
    
    [ Upstream commit 347155d1fa85972ac19d1bf58ae3f3ce95e51a5d ]
    
    The PGC (power gating controller) already handles the reset for the
    GPUMIX power domain. By specifying it within the device tree the reset
    it issued a 2nd time. This confuses the hardware during power up and
    sporadically hangs the SoC. Fix this by removing the reset property and
    let the hardware handle the reset.
    
    Fixes: 9a0f3b157e22e ("arm64: dts: imx8mn: Enable GPU")
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: imx8mp-venice-gw74xx: fix CAN STBY polarity [+ + +]
Author: Tim Harvey <tharvey@gateworks.com>
Date:   Mon Sep 12 11:08:32 2022 -0700

    arm64: dts: imx8mp-venice-gw74xx: fix CAN STBY polarity
    
    [ Upstream commit e4ef0885632ed485961ac0962ad01be4ec9ec658 ]
    
    The CAN STBY poarlity is active-low. Specify it as such by removing the
    'enable-active-high' property and updating the gpio property.
    
    Fixes: 7899eb6cb15d ("arm64: dts: imx: Add i.MX8M Plus Gateworks gw7400 dts support")
    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-venice-gw74xx: fix ksz9477 cpu port [+ + +]
Author: Tim Harvey <tharvey@gateworks.com>
Date:   Mon Sep 12 11:08:33 2022 -0700

    arm64: dts: imx8mp-venice-gw74xx: fix ksz9477 cpu port
    
    [ Upstream commit c3681de3b8f2e8aff0306e2d6c129ca15b70b79d ]
    
    The CPU uplink port on the KSZ9477 is P5 not P6 - fix this.
    
    Fixes: 7899eb6cb15d ("arm64: dts: imx: Add i.MX8M Plus Gateworks gw7400 dts support")
    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-venice-gw74xx: fix port/phy validation [+ + +]
Author: Tim Harvey <tharvey@gateworks.com>
Date:   Mon Sep 12 11:08:34 2022 -0700

    arm64: dts: imx8mp-venice-gw74xx: fix port/phy validation
    
    [ Upstream commit f7fc391a5e28216150ab5390df35032309ead7e5 ]
    
    Since commit 65ac79e18120 ("net: dsa: microchip: add the phylink
    get_caps") the phy-mode must be set otherwise the switch driver will
    assume "NA" mode and invalidate the port.
    
    Fixes: 7899eb6cb15d ("arm64: dts: imx: Add i.MX8M Plus Gateworks gw7400 dts support")
    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: imx8ulp: add #reset-cells for pcc [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Wed Aug 31 22:25:49 2022 +0800

    arm64: dts: imx8ulp: add #reset-cells for pcc
    
    [ Upstream commit 5fa383a25fd8a16a73485c90da4e3e33a78b45cf ]
    
    The binding file clock/imx8ulp-pcc-clock.yaml indicates '#reset-cells'
    is a required property, add it.
    
    Fixes: fe6291e96313 ("arm64: dts: imx8ulp: Add the basic dtsi file for imx8ulp")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: fix property for usb2 phy supply on rk3568-evb1-v10 [+ + +]
Author: Michael Riesch <michael.riesch@wolfvision.net>
Date:   Mon Sep 5 08:43:35 2022 +0200

    arm64: dts: rockchip: fix property for usb2 phy supply on rk3568-evb1-v10
    
    [ Upstream commit 1988e3ef0544bbe54cffa4ec30a5883e5a08c2b6 ]
    
    The property "vbus-supply" was copied from the vendor kernel but is not
    available in mainstream. Use correct property "phy-supply".
    
    Fixes: d6cfb110b0fd ("arm64: dts: rockchip: add usb3 support to rk3568-evb1-v10")
    Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
    Link: https://lore.kernel.org/r/20220905064335.104650-2-michael.riesch@wolfvision.net
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: fix property for usb2 phy supply on rock-3a [+ + +]
Author: Michael Riesch <michael.riesch@wolfvision.net>
Date:   Mon Sep 5 08:43:34 2022 +0200

    arm64: dts: rockchip: fix property for usb2 phy supply on rock-3a
    
    [ Upstream commit 43e1d6d3b45c4e7e25171ec04a10d09969b0f889 ]
    
    The property "vbus-supply" was copied from the vendor kernel but is not
    available in mainstream. Use correct property "phy-supply".
    
    Fixes: 254a1f6a29e7 ("arm64: dts: rockchip: add usb3 support to the radxa rock3 model a")
    Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
    Link: https://lore.kernel.org/r/20220905064335.104650-1-michael.riesch@wolfvision.net
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Fix typo in lisense text for PX30.Core [+ + +]
Author: Jagan Teki <jagan@amarulasolutions.com>
Date:   Mon Aug 22 16:05:24 2022 +0530

    arm64: dts: rockchip: Fix typo in lisense text for PX30.Core
    
    [ Upstream commit 4a00c43818dcc19be97250d4c3c4a1e2f1ed4f9d ]
    
    Fix the Amarula Solutions typo mistake in lisense text added
    in Engicam PX30.Core SoM dtsi.
    
    Fixes: d92a7c331f53c ("arm64: dts: rockchip: Add Engicam PX30.Core SOM")
    Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
    Link: https://lore.kernel.org/r/20220822103524.266731-1-jagan@amarulasolutions.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Lower sd speed on quartz64-b [+ + +]
Author: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
Date:   Thu Jul 21 06:43:06 2022 +0200

    arm64: dts: rockchip: Lower sd speed on quartz64-b
    
    [ Upstream commit 1ea90b2d293fd8b1f3377c9ed08364ff6f2a8562 ]
    
    The previously stated speed of sdr-104 is too high for the hardware
    to reliably communicate with some fast SD cards.
    
    Lower this to sd-uhs-sdr50 to fix this.
    
    Fixes: dcc8c66bef79 ("arm64: dts: rockchip: add Pine64 Quartz64-B device tree")
    
    Signed-off-by: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
    Tested-by: Peter Geis <pgwipeout@gmail.com>
    Link: https://lore.kernel.org/r/20220721044307.48641-1-frattaroli.nicolas@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Pull up wlan wake# on Gru-Bob [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Mon Aug 22 16:45:04 2022 -0700

    arm64: dts: rockchip: Pull up wlan wake# on Gru-Bob
    
    [ Upstream commit e5467359a725de90b6b8d0dd865500f6373828ca ]
    
    The Gru-Bob board does not have a pull-up resistor on its
    WLAN_HOST_WAKE# pin, but Kevin does. The production/vendor kernel
    specified the pin configuration correctly as a pull-up, but this didn't
    get ported correctly to upstream.
    
    This means Bob's WLAN_HOST_WAKE# pin is floating, causing inconsistent
    wakeup behavior.
    
    Note that bt_host_wake_l has a similar dynamic, but apparently the
    upstream choice was to redundantly configure both internal and external
    pull-up on Kevin (see the "Kevin has an external pull up" comment in
    rk3399-gru.dtsi). This doesn't cause any functional problem, although
    it's perhaps wasteful.
    
    Fixes: 8559bbeeb849 ("arm64: dts: rockchip: add Google Bob")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20220822164453.1.I75c57b48b0873766ec993bdfb7bc1e63da5a1637@changeid
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Remove 'enable-active-low' from rk3399-puma [+ + +]
Author: Fabio Estevam <festevam@denx.de>
Date:   Sat Aug 27 14:51:39 2022 -0300

    arm64: dts: rockchip: Remove 'enable-active-low' from rk3399-puma
    
    [ Upstream commit a994b34b9abb9c08ee09e835b4027ff2147f9d94 ]
    
    The 'enable-active-low' property is not a valid one.
    
    Only 'enable-active-high' is valid, and when this property is absent
    the gpio regulator will act as active low by default.
    
    Remove the invalid 'enable-active-low' property.
    
    Fixes: 2c66fc34e945 ("arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Link: https://lore.kernel.org/r/20220827175140.1696699-1-festevam@denx.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Remove 'enable-active-low' from rk3566-quartz64-a [+ + +]
Author: Fabio Estevam <festevam@denx.de>
Date:   Sat Aug 27 14:51:40 2022 -0300

    arm64: dts: rockchip: Remove 'enable-active-low' from rk3566-quartz64-a
    
    [ Upstream commit ea89926d9690f055fd8da929f6621a760e8e0f14 ]
    
    The 'enable-active-low' property is not a valid one.
    
    Only 'enable-active-high' is valid, and when this property is absent
    the gpio regulator will act as active low by default.
    
    Remove the invalid 'enable-active-low' property.
    
    Fixes: b33a22a1e7c4 ("arm64: dts: rockchip: add basic dts for Pine64 Quartz64-A")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Link: https://lore.kernel.org/r/20220827175140.1696699-2-festevam@denx.de
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Set RK3399-Gru PCLK_EDP to 24 MHz [+ + +]
Author: zain wang <wzz@rock-chips.com>
Date:   Tue Aug 30 13:16:17 2022 -0700

    arm64: dts: rockchip: Set RK3399-Gru PCLK_EDP to 24 MHz
    
    [ Upstream commit 8123437cf46ea5a0f6ca5cb3c528d8b6db97b9c2 ]
    
    We've found the AUX channel to be less reliable with PCLK_EDP at a
    higher rate (typically 25 MHz). This is especially important on systems
    with PSR-enabled panels (like Gru-Kevin), since we make heavy, constant
    use of AUX.
    
    According to Rockchip, using any rate other than 24 MHz can cause
    "problems between syncing the PHY an PCLK", which leads to all sorts of
    unreliabilities around register operations.
    
    Fixes: d67a38c5a623 ("arm64: dts: rockchip: move core edp from rk3399-kevin to shared chromebook")
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: zain wang <wzz@rock-chips.com>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Link: https://lore.kernel.org/r/20220830131212.v2.1.I98d30623f13b785ca77094d0c0fd4339550553b6@changeid
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: tqma8mqml: Include phy-imx8-pcie.h header [+ + +]
Author: Fabio Estevam <festevam@denx.de>
Date:   Fri Sep 9 11:17:02 2022 -0300

    arm64: dts: tqma8mqml: Include phy-imx8-pcie.h header
    
    [ Upstream commit 70ae49c5ac876f0f4689889588544104209c09c4 ]
    
    imx8mm-tqma8mqml.dtsi has PCIe support, so it should include
    <dt-bindings/phy/phy-imx8-pcie.h>.
    
    Otherwise, there are build errors when this SoM dtsi is included
    on customers' carrier boards.
    
    While at it, remove the PCI header from imx8mm-tqma8mqml-mba8mx.dts,
    which is now unneeded.
    
    Fixes: 1d84283101fc ("arm64: dts: tqma8mqml: add PCIe support")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: topology: fix possible overflow in amu_fie_setup() [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Fri Sep 16 23:17:07 2022 +0300

    arm64: topology: fix possible overflow in amu_fie_setup()
    
    commit d4955c0ad77dbc684fc716387070ac24801b8bca upstream.
    
    cpufreq_get_hw_max_freq() returns max frequency in kHz as *unsigned int*,
    while freq_inv_set_max_ratio() gets passed this frequency in Hz as 'u64'.
    Multiplying max frequency by 1000 can potentially result in overflow --
    multiplying by 1000ULL instead should avoid that...
    
    Found by Linux Verification Center (linuxtesting.org) with the SVACE static
    analysis tool.
    
    Fixes: cd0ed03a8903 ("arm64: use activity monitors for frequency invariance")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Link: https://lore.kernel.org/r/01493d64-2bce-d968-86dc-11a122a9c07d@omp.ru
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ARM: dts: lan966x: Fix the interrupt number for internal PHYs [+ + +]
Author: Horatiu Vultur <horatiu.vultur@microchip.com>
Date:   Mon Sep 12 21:26:29 2022 +0200

    ARM: dts: lan966x: Fix the interrupt number for internal PHYs
    
    [ Upstream commit f5fc22cbbdcd349402faaddf1a07eb8403658ae8 ]
    
    According to the datasheet the interrupts for internal PHYs are
    80 and 81.
    
    Fixes: 6ad69e07def67c ("ARM: dts: lan966x: add MIIM nodes")
    Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220912192629.461452-1-horatiu.vultur@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
batman-adv: Fix hang up with small MTU hard-interface [+ + +]
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Sat Aug 20 12:25:16 2022 +0900

    batman-adv: Fix hang up with small MTU hard-interface
    
    [ Upstream commit b1cb8a71f1eaec4eb77051590f7f561f25b15e32 ]
    
    The system hangs up when batman-adv soft-interface is created on
    hard-interface with small MTU.  For example, the following commands
    create batman-adv soft-interface on dummy interface with zero MTU:
    
      # ip link add name dummy0 type dummy
      # ip link set mtu 0 dev dummy0
      # ip link set up dev dummy0
      # ip link add name bat0 type batadv
      # ip link set dev dummy0 master bat0
    
    These commands cause the system hang up with the following messages:
    
      [   90.578925][ T6689] batman_adv: bat0: Adding interface: dummy0
      [   90.580884][ T6689] batman_adv: bat0: The MTU of interface dummy0 is too small (0) to handle the transport of batman-adv packets. Packets going over this interface will be fragmented on layer2 which could impact the performance. Setting the MTU to 1560 would solve the problem.
      [   90.586264][ T6689] batman_adv: bat0: Interface activated: dummy0
      [   90.590061][ T6689] batman_adv: bat0: Forced to purge local tt entries to fit new maximum fragment MTU (-320)
      [   90.595517][ T6689] batman_adv: bat0: Forced to purge local tt entries to fit new maximum fragment MTU (-320)
      [   90.598499][ T6689] batman_adv: bat0: Forced to purge local tt entries to fit new maximum fragment MTU (-320)
    
    This patch fixes this issue by returning error when enabling
    hard-interface with small MTU size.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.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>

 
blk-mq: fix error handling in __blk_mq_alloc_disk [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jul 20 15:05:40 2022 +0200

    blk-mq: fix error handling in __blk_mq_alloc_disk
    
    commit 0a3e5cc7bbfcd571a2e53779ef7d7aa3c57d5432 upstream.
    
    To fully clean up the queue if the disk allocation fails we need to
    call blk_mq_destroy_queue and not just blk_put_queue.
    
    Fixes: 6f8191fdf41d ("block: simplify disk shutdown")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20220720130541.1323531-1-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
block: call blk_mq_exit_queue from disk_release for never added disks [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jul 20 15:05:41 2022 +0200

    block: call blk_mq_exit_queue from disk_release for never added disks
    
    commit c5db2cfc6274692d821d33b59acb6ff615e350c1 upstream.
    
    To undo the all initialization from blk_mq_init_allocated_queue in case
    of a probe failure where add_disk is never called we have to call
    blk_mq_exit_queue from put_disk.
    
    This relies on the fact that drivers always call blk_mq_free_tag_set
    after calling put_disk in the probe error path if they have a gendisk
    at all.
    
    We should be doing this in general, but can't do it for the normal
    teardown case (yet) as the tagset can be gone by the time the disk is
    released once it was added.  I hope to sort this out properly eventually
    but for now this isolated hack will do it.
    
    Fixes: 6f8191fdf41d ("block: simplify disk shutdown")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20220720130541.1323531-2-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

block: Do not call blk_put_queue() if gendisk allocation fails [+ + +]
Author: Rafael Mendonca <rafaelmendsr@gmail.com>
Date:   Thu Aug 11 20:23:37 2022 -0300

    block: Do not call blk_put_queue() if gendisk allocation fails
    
    commit aa0c680c3aa96a5f9f160d90dd95402ad578e2b0 upstream.
    
    Commit 6f8191fdf41d ("block: simplify disk shutdown") removed the call
    to blk_get_queue() during gendisk allocation but missed to remove the
    corresponding cleanup code blk_put_queue() for it. Thus, if the gendisk
    allocation fails, the request_queue refcount gets decremented and
    reaches 0, causing blk_mq_release() to be called with a hctx still
    alive. That triggers a WARNING report, as found by syzkaller:
    
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 23016 at block/blk-mq.c:3881
    blk_mq_release+0xf8/0x3e0 block/blk-mq.c:3881
    [...] stripped
    RIP: 0010:blk_mq_release+0xf8/0x3e0 block/blk-mq.c:3881
    [...] stripped
    Call Trace:
     <TASK>
     blk_release_queue+0x153/0x270 block/blk-sysfs.c:780
     kobject_cleanup lib/kobject.c:673 [inline]
     kobject_release lib/kobject.c:704 [inline]
     kref_put include/linux/kref.h:65 [inline]
     kobject_put+0x1c8/0x540 lib/kobject.c:721
     __alloc_disk_node+0x4f7/0x610 block/genhd.c:1388
     __blk_mq_alloc_disk+0x13b/0x1f0 block/blk-mq.c:3961
     loop_add+0x3e2/0xaf0 drivers/block/loop.c:1978
     loop_control_ioctl+0x133/0x620 drivers/block/loop.c:2150
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:870 [inline]
     __se_sys_ioctl fs/ioctl.c:856 [inline]
     __x64_sys_ioctl+0x193/0x200 fs/ioctl.c:856
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [...] stripped
    
    Fixes: 6f8191fdf41d ("block: simplify disk shutdown")
    Reported-by: syzbot+31c9594f6e43b9289b25@syzkaller.appspotmail.com
    Suggested-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220811232338.254673-1-rafaelmendsr@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

block: remove QUEUE_FLAG_DEAD [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Sun Jun 19 08:05:49 2022 +0200

    block: remove QUEUE_FLAG_DEAD
    
    [ Upstream commit 1f90307e5f0d7bc9a336ead528f616a5df8e5944 ]
    
    Disallow setting the blk-mq state on any queue that is already dying as
    setting the state even then is a bad idea, and remove the now unused
    QUEUE_FLAG_DEAD flag.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Link: https://lore.kernel.org/r/20220619060552.1850436-4-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 8fe4ce5836e9 ("scsi: core: Fix a use-after-free")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: simplify disk shutdown [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Sun Jun 19 08:05:51 2022 +0200

    block: simplify disk shutdown
    
    [ Upstream commit 6f8191fdf41d3a53cc1d63fe2234e812c55a0092 ]
    
    Set the queue dying flag and call blk_mq_exit_queue from del_gendisk for
    all disks that do not have separately allocated queues, and thus remove
    the need to call blk_cleanup_queue for them.
    
    Rename blk_cleanup_disk to blk_mq_destroy_queue to make it clear that
    this function is intended only for separately allocated blk-mq queues.
    
    This saves an extra queue freeze for devices without a separately
    allocated queue.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Link: https://lore.kernel.org/r/20220619060552.1850436-6-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 8fe4ce5836e9 ("scsi: core: Fix a use-after-free")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: stop setting the nomerges flags in blk_cleanup_queue [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Sun Jun 19 08:05:50 2022 +0200

    block: stop setting the nomerges flags in blk_cleanup_queue
    
    [ Upstream commit 0e3534022f26ae51f7cf28347a253230604b6f4e ]
    
    These flags only apply to file system I/O, and all file system I/O is
    already drained by del_gendisk and thus can't be in progress when
    blk_cleanup_queue is called.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Link: https://lore.kernel.org/r/20220619060552.1850436-5-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 8fe4ce5836e9 ("scsi: core: Fix a use-after-free")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt: prevent skb UAF after handing over to PTP worker [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Sep 21 13:10:05 2022 -0700

    bnxt: prevent skb UAF after handing over to PTP worker
    
    [ Upstream commit c31f26c8f69f776759cbbdfb38e40ea91aa0dd65 ]
    
    When reading the timestamp is required bnxt_tx_int() hands
    over the ownership of the completed skb to the PTP worker.
    The skb should not be used afterwards, as the worker may
    run before the rest of our code and free the skb, leading
    to a use-after-free.
    
    Since dev_kfree_skb_any() accepts NULL make the loss of
    ownership more obvious and set skb to NULL.
    
    Fixes: 83bb623c968e ("bnxt_en: Transmit and retrieve packet timestamps")
    Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://lore.kernel.org/r/20220921201005.335390-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: fix flags to check for supported fw version [+ + +]
Author: Vadim Fedorenko <vfedorenko@novek.ru>
Date:   Fri Sep 16 02:49:32 2022 +0300

    bnxt_en: fix flags to check for supported fw version
    
    [ Upstream commit ae8ffba8baad651af706538e8c47d0a049d406c6 ]
    
    The warning message of unsupported FW appears every time RX timestamps
    are disabled on the interface. The patch fixes the flags to correct set
    for the check.
    
    Fixes: 66ed81dcedc6 ("bnxt_en: Enable packet timestamping for all RX packets")
    Cc: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Vadim Fedorenko <vfedorenko@novek.ru>
    Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://lore.kernel.org/r/20220915234932.25497-1-vfedorenko@novek.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bonding: fix NULL deref in bond_rr_gen_slave_id [+ + +]
Author: Jonathan Toppins <jtoppins@redhat.com>
Date:   Tue Sep 20 13:45:52 2022 -0400

    bonding: fix NULL deref in bond_rr_gen_slave_id
    
    [ Upstream commit 0e400d602f46360752e4b32ce842dba3808e15e6 ]
    
    Fix a NULL dereference of the struct bonding.rr_tx_counter member because
    if a bond is initially created with an initial mode != zero (Round Robin)
    the memory required for the counter is never created and when the mode is
    changed there is never any attempt to verify the memory is allocated upon
    switching modes.
    
    This causes the following Oops on an aarch64 machine:
        [  334.686773] Unable to handle kernel paging request at virtual address ffff2c91ac905000
        [  334.694703] Mem abort info:
        [  334.697486]   ESR = 0x0000000096000004
        [  334.701234]   EC = 0x25: DABT (current EL), IL = 32 bits
        [  334.706536]   SET = 0, FnV = 0
        [  334.709579]   EA = 0, S1PTW = 0
        [  334.712719]   FSC = 0x04: level 0 translation fault
        [  334.717586] Data abort info:
        [  334.720454]   ISV = 0, ISS = 0x00000004
        [  334.724288]   CM = 0, WnR = 0
        [  334.727244] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000008044d662000
        [  334.733944] [ffff2c91ac905000] pgd=0000000000000000, p4d=0000000000000000
        [  334.740734] Internal error: Oops: 96000004 [#1] SMP
        [  334.745602] Modules linked in: bonding tls veth rfkill sunrpc arm_spe_pmu vfat fat acpi_ipmi ipmi_ssif ixgbe igb i40e mdio ipmi_devintf ipmi_msghandler arm_cmn arm_dsu_pmu cppc_cpufreq acpi_tad fuse zram crct10dif_ce ast ghash_ce sbsa_gwdt nvme drm_vram_helper drm_ttm_helper nvme_core ttm xgene_hwmon
        [  334.772217] CPU: 7 PID: 2214 Comm: ping Not tainted 6.0.0-rc4-00133-g64ae13ed4784 #4
        [  334.779950] Hardware name: GIGABYTE R272-P31-00/MP32-AR1-00, BIOS F18v (SCP: 1.08.20211002) 12/01/2021
        [  334.789244] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
        [  334.796196] pc : bond_rr_gen_slave_id+0x40/0x124 [bonding]
        [  334.801691] lr : bond_xmit_roundrobin_slave_get+0x38/0xdc [bonding]
        [  334.807962] sp : ffff8000221733e0
        [  334.811265] x29: ffff8000221733e0 x28: ffffdbac8572d198 x27: ffff80002217357c
        [  334.818392] x26: 000000000000002a x25: ffffdbacb33ee000 x24: ffff07ff980fa000
        [  334.825519] x23: ffffdbacb2e398ba x22: ffff07ff98102000 x21: ffff07ff981029c0
        [  334.832646] x20: 0000000000000001 x19: ffff07ff981029c0 x18: 0000000000000014
        [  334.839773] x17: 0000000000000000 x16: ffffdbacb1004364 x15: 0000aaaabe2f5a62
        [  334.846899] x14: ffff07ff8e55d968 x13: ffff07ff8e55db30 x12: 0000000000000000
        [  334.854026] x11: ffffdbacb21532e8 x10: 0000000000000001 x9 : ffffdbac857178ec
        [  334.861153] x8 : ffff07ff9f6e5a28 x7 : 0000000000000000 x6 : 000000007c2b3742
        [  334.868279] x5 : ffff2c91ac905000 x4 : ffff2c91ac905000 x3 : ffff07ff9f554400
        [  334.875406] x2 : ffff2c91ac905000 x1 : 0000000000000001 x0 : ffff07ff981029c0
        [  334.882532] Call trace:
        [  334.884967]  bond_rr_gen_slave_id+0x40/0x124 [bonding]
        [  334.890109]  bond_xmit_roundrobin_slave_get+0x38/0xdc [bonding]
        [  334.896033]  __bond_start_xmit+0x128/0x3a0 [bonding]
        [  334.901001]  bond_start_xmit+0x54/0xb0 [bonding]
        [  334.905622]  dev_hard_start_xmit+0xb4/0x220
        [  334.909798]  __dev_queue_xmit+0x1a0/0x720
        [  334.913799]  arp_xmit+0x3c/0xbc
        [  334.916932]  arp_send_dst+0x98/0xd0
        [  334.920410]  arp_solicit+0xe8/0x230
        [  334.923888]  neigh_probe+0x60/0xb0
        [  334.927279]  __neigh_event_send+0x3b0/0x470
        [  334.931453]  neigh_resolve_output+0x70/0x90
        [  334.935626]  ip_finish_output2+0x158/0x514
        [  334.939714]  __ip_finish_output+0xac/0x1a4
        [  334.943800]  ip_finish_output+0x40/0xfc
        [  334.947626]  ip_output+0xf8/0x1a4
        [  334.950931]  ip_send_skb+0x5c/0x100
        [  334.954410]  ip_push_pending_frames+0x3c/0x60
        [  334.958758]  raw_sendmsg+0x458/0x6d0
        [  334.962325]  inet_sendmsg+0x50/0x80
        [  334.965805]  sock_sendmsg+0x60/0x6c
        [  334.969286]  __sys_sendto+0xc8/0x134
        [  334.972853]  __arm64_sys_sendto+0x34/0x4c
        [  334.976854]  invoke_syscall+0x78/0x100
        [  334.980594]  el0_svc_common.constprop.0+0x4c/0xf4
        [  334.985287]  do_el0_svc+0x38/0x4c
        [  334.988591]  el0_svc+0x34/0x10c
        [  334.991724]  el0t_64_sync_handler+0x11c/0x150
        [  334.996072]  el0t_64_sync+0x190/0x194
        [  334.999726] Code: b9001062 f9403c02 d53cd044 8b040042 (b8210040)
        [  335.005810] ---[ end trace 0000000000000000 ]---
        [  335.010416] Kernel panic - not syncing: Oops: Fatal exception in interrupt
        [  335.017279] SMP: stopping secondary CPUs
        [  335.021374] Kernel Offset: 0x5baca8eb0000 from 0xffff800008000000
        [  335.027456] PHYS_OFFSET: 0x80000000
        [  335.030932] CPU features: 0x0000,0085c029,19805c82
        [  335.035713] Memory Limit: none
        [  335.038756] Rebooting in 180 seconds..
    
    The fix is to allocate the memory in bond_open() which is guaranteed
    to be called before any packets are processed.
    
    Fixes: 848ca9182a7d ("net: bonding: Use per-cpu rr_tx_counter")
    CC: Jussi Maki <joamaki@gmail.com>
    Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: fix hang during unmount when stopping a space reclaim worker [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Sep 8 12:31:51 2022 +0100

    btrfs: fix hang during unmount when stopping a space reclaim worker
    
    commit a362bb864b8db4861977d00bd2c3222503ccc34b upstream.
    
    Often when running generic/562 from fstests we can hang during unmount,
    resulting in a trace like this:
    
      Sep 07 11:52:00 debian9 unknown: run fstests generic/562 at 2022-09-07 11:52:00
      Sep 07 11:55:32 debian9 kernel: INFO: task umount:49438 blocked for more than 120 seconds.
      Sep 07 11:55:32 debian9 kernel:       Not tainted 6.0.0-rc2-btrfs-next-122 #1
      Sep 07 11:55:32 debian9 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      Sep 07 11:55:32 debian9 kernel: task:umount          state:D stack:    0 pid:49438 ppid: 25683 flags:0x00004000
      Sep 07 11:55:32 debian9 kernel: Call Trace:
      Sep 07 11:55:32 debian9 kernel:  <TASK>
      Sep 07 11:55:32 debian9 kernel:  __schedule+0x3c8/0xec0
      Sep 07 11:55:32 debian9 kernel:  ? rcu_read_lock_sched_held+0x12/0x70
      Sep 07 11:55:32 debian9 kernel:  schedule+0x5d/0xf0
      Sep 07 11:55:32 debian9 kernel:  schedule_timeout+0xf1/0x130
      Sep 07 11:55:32 debian9 kernel:  ? lock_release+0x224/0x4a0
      Sep 07 11:55:32 debian9 kernel:  ? lock_acquired+0x1a0/0x420
      Sep 07 11:55:32 debian9 kernel:  ? trace_hardirqs_on+0x2c/0xd0
      Sep 07 11:55:32 debian9 kernel:  __wait_for_common+0xac/0x200
      Sep 07 11:55:32 debian9 kernel:  ? usleep_range_state+0xb0/0xb0
      Sep 07 11:55:32 debian9 kernel:  __flush_work+0x26d/0x530
      Sep 07 11:55:32 debian9 kernel:  ? flush_workqueue_prep_pwqs+0x140/0x140
      Sep 07 11:55:32 debian9 kernel:  ? trace_clock_local+0xc/0x30
      Sep 07 11:55:32 debian9 kernel:  __cancel_work_timer+0x11f/0x1b0
      Sep 07 11:55:32 debian9 kernel:  ? close_ctree+0x12b/0x5b3 [btrfs]
      Sep 07 11:55:32 debian9 kernel:  ? __trace_bputs+0x10b/0x170
      Sep 07 11:55:32 debian9 kernel:  close_ctree+0x152/0x5b3 [btrfs]
      Sep 07 11:55:32 debian9 kernel:  ? evict_inodes+0x166/0x1c0
      Sep 07 11:55:32 debian9 kernel:  generic_shutdown_super+0x71/0x120
      Sep 07 11:55:32 debian9 kernel:  kill_anon_super+0x14/0x30
      Sep 07 11:55:32 debian9 kernel:  btrfs_kill_super+0x12/0x20 [btrfs]
      Sep 07 11:55:32 debian9 kernel:  deactivate_locked_super+0x2e/0xa0
      Sep 07 11:55:32 debian9 kernel:  cleanup_mnt+0x100/0x160
      Sep 07 11:55:32 debian9 kernel:  task_work_run+0x59/0xa0
      Sep 07 11:55:32 debian9 kernel:  exit_to_user_mode_prepare+0x1a6/0x1b0
      Sep 07 11:55:32 debian9 kernel:  syscall_exit_to_user_mode+0x16/0x40
      Sep 07 11:55:32 debian9 kernel:  do_syscall_64+0x48/0x90
      Sep 07 11:55:32 debian9 kernel:  entry_SYSCALL_64_after_hwframe+0x63/0xcd
      Sep 07 11:55:32 debian9 kernel: RIP: 0033:0x7fcde59a57a7
      Sep 07 11:55:32 debian9 kernel: RSP: 002b:00007ffe914217c8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      Sep 07 11:55:32 debian9 kernel: RAX: 0000000000000000 RBX: 00007fcde5ae8264 RCX: 00007fcde59a57a7
      Sep 07 11:55:32 debian9 kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000055b57556cdd0
      Sep 07 11:55:32 debian9 kernel: RBP: 000055b57556cba0 R08: 0000000000000000 R09: 00007ffe91420570
      Sep 07 11:55:32 debian9 kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      Sep 07 11:55:32 debian9 kernel: R13: 000055b57556cdd0 R14: 000055b57556ccb8 R15: 0000000000000000
      Sep 07 11:55:32 debian9 kernel:  </TASK>
    
    What happens is the following:
    
    1) The cleaner kthread tries to start a transaction to delete an unused
       block group, but the metadata reservation can not be satisfied right
       away, so a reservation ticket is created and it starts the async
       metadata reclaim task (fs_info->async_reclaim_work);
    
    2) Writeback for all the filler inodes with an i_size of 2K starts
       (generic/562 creates a lot of 2K files with the goal of filling
       metadata space). We try to create an inline extent for them, but we
       fail when trying to insert the inline extent with -ENOSPC (at
       cow_file_range_inline()) - since this is not critical, we fallback
       to non-inline mode (back to cow_file_range()), reserve extents, create
       extent maps and create the ordered extents;
    
    3) An unmount starts, enters close_ctree();
    
    4) The async reclaim task is flushing stuff, entering the flush states one
       by one, until it reaches RUN_DELAYED_IPUTS. There it runs all current
       delayed iputs.
    
       After running the delayed iputs and before calling
       btrfs_wait_on_delayed_iputs(), one or more ordered extents complete,
       and btrfs_add_delayed_iput() is called for each one through
       btrfs_finish_ordered_io() -> btrfs_put_ordered_extent(). This results
       in bumping fs_info->nr_delayed_iputs from 0 to some positive value.
    
       So the async reclaim task blocks at btrfs_wait_on_delayed_iputs() waiting
       for fs_info->nr_delayed_iputs to become 0;
    
    5) The current transaction is committed by the transaction kthread, we then
       start unpinning extents and end up calling btrfs_try_granting_tickets()
       through unpin_extent_range(), since we released some space.
       This results in satisfying the ticket created by the cleaner kthread at
       step 1, waking up the cleaner kthread;
    
    6) At close_ctree() we ask the cleaner kthread to park;
    
    7) The cleaner kthread starts the transaction, deletes the unused block
       group, and then calls kthread_should_park(), which returns true, so it
       parks. And at this point we have the delayed iputs added by the
       completion of the ordered extents still pending;
    
    8) Then later at close_ctree(), when we call:
    
           cancel_work_sync(&fs_info->async_reclaim_work);
    
       We hang forever, since the cleaner was parked and no one else can run
       delayed iputs after that, while the reclaim task is waiting for the
       remaining delayed iputs to be completed.
    
    Fix this by waiting for all ordered extents to complete and running the
    delayed iputs before attempting to stop the async reclaim tasks. Note that
    we can not wait for ordered extents with btrfs_wait_ordered_roots() (or
    other similar functions) because that waits for the BTRFS_ORDERED_COMPLETE
    flag to be set on an ordered extent, but the delayed iput is added after
    that, when doing the final btrfs_put_ordered_extent(). So instead wait for
    the work queues used for executing ordered extent completion to be empty,
    which works because we do the final put on an ordered extent at
    btrfs_finish_ordered_io() (while we are in the unmount context).
    
    Fixes: d6fd0ae25c6495 ("Btrfs: fix missing delayed iputs on unmount")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix hang during unmount when stopping block group reclaim worker [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Sep 8 12:31:50 2022 +0100

    btrfs: fix hang during unmount when stopping block group reclaim worker
    
    commit 8a1f1e3d1eecf9d2359a2709e276743a67e145db upstream.
    
    During early unmount, at close_ctree(), we try to stop the block group
    reclaim task with cancel_work_sync(), but that may hang if the block group
    reclaim task is currently at btrfs_relocate_block_group() waiting for the
    flag BTRFS_FS_UNFINISHED_DROPS to be cleared from fs_info->flags. During
    unmount we only clear that flag later, after trying to stop the block
    group reclaim task.
    
    Fix that by clearing BTRFS_FS_UNFINISHED_DROPS before trying to stop the
    block group reclaim task and after setting BTRFS_FS_CLOSING_START, so that
    if the reclaim task is waiting on that bit, it will stop immediately after
    being woken, because it sees the filesystem is closing (with a call to
    btrfs_fs_closing()), and then returns immediately with -EINTR.
    
    Fixes: 31e70e527806c5 ("btrfs: fix hang during unmount when block group reclaim task is running")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zoned: wait for extent buffer IOs before finishing a zone [+ + +]
Author: Naohiro Aota <naohiro.aota@wdc.com>
Date:   Fri Sep 9 15:59:55 2022 +0900

    btrfs: zoned: wait for extent buffer IOs before finishing a zone
    
    commit 2dd7e7bc02829eded71be2342a93dc035f5223f9 upstream.
    
    Before sending REQ_OP_ZONE_FINISH to a zone, we need to ensure that
    ongoing IOs already finished. Or, we will see a "Zone Is Full" error for
    the IOs, as the ZONE_FINISH command makes the zone full.
    
    We ensure that with btrfs_wait_block_group_reservations() and
    btrfs_wait_ordered_roots() for a data block group. And, for a metadata
    block group, the comparison of alloc_offset vs meta_write_pointer mostly
    ensures IOs for the allocated region already sent. However, there still
    can be a little time frame where the IOs are sent but not yet completed.
    
    Introduce wait_eb_writebacks() to ensure such IOs are completed for a
    metadata block group. It walks the buffer_radix to find extent buffers in
    the block group and calls wait_on_extent_buffer_writeback() on them.
    
    Fixes: afba2bc036b0 ("btrfs: zoned: implement active zone tracking")
    CC: stable@vger.kernel.org # 5.19+
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: flexcan: flexcan_mailbox_read() fix return value for drop = true [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Thu Aug 11 10:25:44 2022 +0200

    can: flexcan: flexcan_mailbox_read() fix return value for drop = true
    
    commit a09721dd47c8468b3f2fdd73f40422699ffe26dd upstream.
    
    The following happened on an i.MX25 using flexcan with many packets on
    the bus:
    
    The rx-offload queue reached a length more than skb_queue_len_max. In
    can_rx_offload_offload_one() the drop variable was set to true which
    made the call to .mailbox_read() (here: flexcan_mailbox_read()) to
    _always_ return ERR_PTR(-ENOBUFS) and drop the rx'ed CAN frame. So
    can_rx_offload_offload_one() returned ERR_PTR(-ENOBUFS), too.
    
    can_rx_offload_irq_offload_fifo() looks as follows:
    
    |       while (1) {
    |               skb = can_rx_offload_offload_one(offload, 0);
    |               if (IS_ERR(skb))
    |                       continue;
    |               if (!skb)
    |                       break;
    |               ...
    |       }
    
    The flexcan driver wrongly always returns ERR_PTR(-ENOBUFS) if drop is
    requested, even if there is no CAN frame pending. As the i.MX25 is a
    single core CPU, while the rx-offload processing is active, there is
    no thread to process packets from the offload queue. So the queue
    doesn't get any shorter and this results is a tight loop.
    
    Instead of always returning ERR_PTR(-ENOBUFS) if drop is requested,
    return NULL if no CAN frame is pending.
    
    Changes since v1: https://lore.kernel.org/all/20220810144536.389237-1-u.kleine-koenig@pengutronix.de
    - don't break in can_rx_offload_irq_offload_fifo() in case of an error,
      return NULL in flexcan_mailbox_read() in case of no pending CAN frame
      instead
    
    Fixes: 4e9c9484b085 ("can: rx-offload: Prepare for CAN FD support")
    Link: https://lore.kernel.org/all/20220811094254.1864367-1-mkl@pengutronix.de
    Cc: stable@vger.kernel.org # v5.5
    Suggested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Tested-by: Thorsten Scherer <t.scherer@eckelmann.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: gs_usb: gs_can_open(): fix race dev->can.state condition [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Sep 20 11:40:56 2022 +0200

    can: gs_usb: gs_can_open(): fix race dev->can.state condition
    
    [ Upstream commit 5440428b3da65408dba0241985acb7a05258b85e ]
    
    The dev->can.state is set to CAN_STATE_ERROR_ACTIVE, after the device
    has been started. On busy networks the CAN controller might receive
    CAN frame between and go into an error state before the dev->can.state
    is assigned.
    
    Assign dev->can.state before starting the controller to close the race
    window.
    
    Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
    Link: https://lore.kernel.org/all/20220920195216.232481-1-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
certs: make system keyring depend on built-in x509 parser [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Mon Sep 12 15:52:10 2022 +0900

    certs: make system keyring depend on built-in x509 parser
    
    [ Upstream commit 2154aca21408752eaa3eeaf2ba6e942724ff2a4d ]
    
    Commit e90886291c7c ("certs: make system keyring depend on x509 parser")
    is not the right fix because x509_load_certificate_list() can be modular.
    
    The combination of CONFIG_SYSTEM_TRUSTED_KEYRING=y and
    CONFIG_X509_CERTIFICATE_PARSER=m still results in the following error:
    
        LD      .tmp_vmlinux.kallsyms1
      ld: certs/system_keyring.o: in function `load_system_certificate_list':
      system_keyring.c:(.init.text+0x8c): undefined reference to `x509_load_certificate_list'
      make: *** [Makefile:1169: vmlinux] Error 1
    
    Fixes: e90886291c7c ("certs: make system keyring depend on x509 parser")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Tested-by: Adam Borowski <kilobyte@angband.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cgroup: cgroup_get_from_id() must check the looked-up kn is a directory [+ + +]
Author: Ming Lei <ming.lei@redhat.com>
Date:   Fri Sep 23 19:51:19 2022 +0800

    cgroup: cgroup_get_from_id() must check the looked-up kn is a directory
    
    commit df02452f3df069a59bc9e69c84435bf115cb6e37 upstream.
    
    cgroup has to be one kernfs dir, otherwise kernel panic is caused,
    especially cgroup id is provide from userspace.
    
    Reported-by: Marco Patalano <mpatalan@redhat.com>
    Fixes: 6b658c4863c1 ("scsi: cgroup: Add cgroup_get_from_id()")
    Cc: Muneendra <muneendra.kumar@broadcom.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Acked-by: Mukesh Ojha <quic_mojha@quicinc.com>
    Cc: stable@vger.kernel.org # v5.14+
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
devdax: Fix soft-reservation memory description [+ + +]
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Fri Sep 23 15:05:56 2022 -0700

    devdax: Fix soft-reservation memory description
    
    commit 67feaba413ec68daf4124e9870878899b4ed9a0e upstream.
    
    The "hmem" platform-devices that are created to represent the
    platform-advertised "Soft Reserved" memory ranges end up inserting a
    resource that causes the iomem_resource tree to look like this:
    
    340000000-43fffffff : hmem.0
      340000000-43fffffff : Soft Reserved
        340000000-43fffffff : dax0.0
    
    This is because insert_resource() reparents ranges when they completely
    intersect an existing range.
    
    This matters because code that uses region_intersects() to scan for a
    given IORES_DESC will only check that top-level 'hmem.0' resource and
    not the 'Soft Reserved' descendant.
    
    So, to support EINJ (via einj_error_inject()) to inject errors into
    memory hosted by a dax-device, be sure to describe the memory as
    IORES_DESC_SOFT_RESERVED. This is a follow-on to:
    
    commit b13a3e5fd40b ("ACPI: APEI: Fix _EINJ vs EFI_MEMORY_SP")
    
    ...that fixed EINJ support for "Soft Reserved" ranges in the first
    instance.
    
    Fixes: 262b45ae3ab4 ("x86/efi: EFI soft reservation to E820 enumeration")
    Reported-by: Ricardo Sandoval Torres <ricardo.sandoval.torres@intel.com>
    Tested-by: Ricardo Sandoval Torres <ricardo.sandoval.torres@intel.com>
    Cc: <stable@vger.kernel.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Omar Avelar <omar.avelar@intel.com>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Mark Gross <markgross@kernel.org>
    Link: https://lore.kernel.org/r/166397075670.389916.7435722208896316387.stgit@dwillia2-xfh.jf.intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: ti: k3-udma-private: Fix refcount leak bug in of_xudma_dev_get() [+ + +]
Author: Liang He <windhl@126.com>
Date:   Wed Jul 20 15:32:34 2022 +0800

    dmaengine: ti: k3-udma-private: Fix refcount leak bug in of_xudma_dev_get()
    
    [ Upstream commit f9fdb0b86f087c2b7f6c6168dd0985a3c1eda87e ]
    
    We should call of_node_put() for the reference returned by
    of_parse_phandle() in fail path or when it is not used anymore.
    Here we only need to move the of_node_put() before the check.
    
    Fixes: d70241913413 ("dmaengine: ti: k3-udma: Add glue layer for non DMAengine users")
    Signed-off-by: Liang He <windhl@126.com>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Link: https://lore.kernel.org/r/20220720073234.1255474-1-windhl@126.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES [+ + +]
Author: Phil Auld <pauld@redhat.com>
Date:   Tue Sep 6 16:35:42 2022 -0400

    drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
    
    commit d7f06bdd6ee87fbefa05af5f57361d85e7715b11 upstream.
    
    As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
    This leads to very large file sizes:
    
    topology$ ls -l
    total 0
    -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
    -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
    -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
    -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
    -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
    -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
    -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
    -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
    
    Adjust the inequality to catch the case when NR_CPUS is configured
    to a small value.
    
    Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Yury Norov <yury.norov@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: feng xiangjun <fengxj325@gmail.com>
    Reported-by: feng xiangjun <fengxj325@gmail.com>
    Signed-off-by: Phil Auld <pauld@redhat.com>
    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    Link: https://lore.kernel.org/r/20220906203542.1796629-1-pauld@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Drivers: hv: Never allocate anything besides framebuffer from framebuffer memory region [+ + +]
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Sat Aug 27 15:03:45 2022 +0200

    Drivers: hv: Never allocate anything besides framebuffer from framebuffer memory region
    
    [ Upstream commit f0880e2cb7e1f8039a048fdd01ce45ab77247221 ]
    
    Passed through PCI device sometimes misbehave on Gen1 VMs when Hyper-V
    DRM driver is also loaded. Looking at IOMEM assignment, we can see e.g.
    
    $ cat /proc/iomem
    ...
    f8000000-fffbffff : PCI Bus 0000:00
      f8000000-fbffffff : 0000:00:08.0
        f8000000-f8001fff : bb8c4f33-2ba2-4808-9f7f-02f3b4da22fe
    ...
    fe0000000-fffffffff : PCI Bus 0000:00
      fe0000000-fe07fffff : bb8c4f33-2ba2-4808-9f7f-02f3b4da22fe
        fe0000000-fe07fffff : 2ba2:00:02.0
          fe0000000-fe07fffff : mlx4_core
    
    the interesting part is the 'f8000000' region as it is actually the
    VM's framebuffer:
    
    $ lspci -v
    ...
    0000:00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA (prog-if 00 [VGA controller])
            Flags: bus master, fast devsel, latency 0, IRQ 11
            Memory at f8000000 (32-bit, non-prefetchable) [size=64M]
    ...
    
     hv_vmbus: registering driver hyperv_drm
     hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] Synthvid Version major 3, minor 5
     hyperv_drm 0000:00:08.0: vgaarb: deactivate vga console
     hyperv_drm 0000:00:08.0: BAR 0: can't reserve [mem 0xf8000000-0xfbffffff]
     hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] Cannot request framebuffer, boot fb still active?
    
    Note: "Cannot request framebuffer" is not a fatal error in
    hyperv_setup_gen1() as the code assumes there's some other framebuffer
    device there but we actually have some other PCI device (mlx4 in this
    case) config space there!
    
    The problem appears to be that vmbus_allocate_mmio() can use dedicated
    framebuffer region to serve any MMIO request from any device. The
    semantics one might assume of a parameter named "fb_overlap_ok"
    aren't implemented because !fb_overlap_ok essentially has no effect.
    The existing semantics are really "prefer_fb_overlap". This patch
    implements the expected and needed semantics, which is to not allocate
    from the frame buffer space when !fb_overlap_ok.
    
    Note, Gen2 VMs are usually unaffected by the issue because
    framebuffer region is already taken by EFI fb (in case kernel supports
    it) but Gen1 VMs may have this region unclaimed by the time Hyper-V PCI
    pass-through driver tries allocating MMIO space if Hyper-V DRM/FB drivers
    load after it. Devices can be brought up in any sequence so let's
    resolve the issue by always ignoring 'fb_mmio' region for non-FB
    requests, even if the region is unclaimed.
    
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Link: https://lore.kernel.org/r/20220827130345.1320254-4-vkuznets@redhat.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Limit user regamma to a valid value [+ + +]
Author: Yao Wang1 <Yao.Wang1@amd.com>
Date:   Mon Aug 22 18:30:31 2022 +0800

    drm/amd/display: Limit user regamma to a valid value
    
    [ Upstream commit 3601d620f22e37740cf73f8278eabf9f2aa19eb7 ]
    
    [Why]
    For HDR mode, we get total 512 tf_point and after switching to SDR mode
    we actually get 400 tf_point and the rest of points(401~512) still use
    dirty value from HDR mode. We should limit the rest of the points to max
    value.
    
    [How]
    Limit the value when coordinates_x.x > 1, just like what we do in
    translate_from_linear_space for other re-gamma build paths.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Pavle Kotarac <Pavle.Kotarac@amd.com>
    Signed-off-by: Yao Wang1 <Yao.Wang1@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Mark dml30's UseMinimumDCFCLK() as noinline for stack usage [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Aug 30 13:34:09 2022 -0700

    drm/amd/display: Mark dml30's UseMinimumDCFCLK() as noinline for stack usage
    
    [ Upstream commit 41012d715d5d7b9751ae84b8fb255e404ac9c5d0 ]
    
    This function consumes a lot of stack space and it blows up the size of
    dml30_ModeSupportAndSystemConfigurationFull() with clang:
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:3542:6: error: stack frame size (2200) exceeds limit (2048) in 'dml30_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
      void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
           ^
      1 error generated.
    
    Commit a0f7e7f759cf ("drm/amd/display: fix i386 frame size warning")
    aimed to address this for i386 but it did not help x86_64.
    
    To reduce the amount of stack space that
    dml30_ModeSupportAndSystemConfigurationFull() uses, mark
    UseMinimumDCFCLK() as noinline, using the _for_stack variant for
    documentation. While this will increase the total amount of stack usage
    between the two functions (1632 and 1304 bytes respectively), it will
    make sure both stay below the limit of 2048 bytes for these files. The
    aforementioned change does help reduce UseMinimumDCFCLK()'s stack usage
    so it should not be reverted in favor of this change.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/1681
    Reported-by: "Sudip Mukherjee (Codethink)" <sudipm.mukherjee@gmail.com>
    Tested-by: Maíra Canal <mairacanal@riseup.net>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Reduce number of arguments of dml31's CalculateFlipSchedule() [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Aug 30 13:34:08 2022 -0700

    drm/amd/display: Reduce number of arguments of dml31's CalculateFlipSchedule()
    
    [ Upstream commit 21485d3da659b66c37d99071623af83ee1c6733d ]
    
    Most of the arguments are identical between the two call sites and they
    can be accessed through the 'struct vba_vars_st' pointer. This reduces
    the total amount of stack space that
    dml31_ModeSupportAndSystemConfigurationFull() uses by 112 bytes with
    LLVM 16 (1976 -> 1864), helping clear up the following clang warning:
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:3908:6: error: stack frame size (2216) exceeds limit (2048) in 'dml31_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
      void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
          ^
      1 error generated.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/1681
    Reported-by: "Sudip Mukherjee (Codethink)" <sudipm.mukherjee@gmail.com>
    Tested-by: Maíra Canal <mairacanal@riseup.net>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Reduce number of arguments of dml31's CalculateWatermarksAndDRAMSpeedChangeSupport() [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Tue Aug 30 13:34:07 2022 -0700

    drm/amd/display: Reduce number of arguments of dml31's CalculateWatermarksAndDRAMSpeedChangeSupport()
    
    [ Upstream commit 37934d4118e22bceb80141804391975078f31734 ]
    
    Most of the arguments are identical between the two call sites and they
    can be accessed through the 'struct vba_vars_st' pointer. This reduces
    the total amount of stack space that
    dml31_ModeSupportAndSystemConfigurationFull() uses by 240 bytes with
    LLVM 16 (2216 -> 1976), helping clear up the following clang warning:
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:3908:6: error: stack frame size (2216) exceeds limit (2048) in 'dml31_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
      void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
          ^
      1 error generated.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/1681
    Reported-by: "Sudip Mukherjee (Codethink)" <sudipm.mukherjee@gmail.com>
    Tested-by: Maíra Canal <mairacanal@riseup.net>
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid cards [+ + +]
Author: Guchun Chen <guchun.chen@amd.com>
Date:   Wed Sep 7 20:31:36 2022 +0800

    drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid cards
    
    [ Upstream commit 7c6fb61a400bf3218c6504cb2d48858f98822c9d ]
    
    To avoid hardware intermittent failures.
    
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: add HDP remap functionality to nbio 7.7 [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Aug 30 11:08:09 2022 -0400

    drm/amdgpu: add HDP remap functionality to nbio 7.7
    
    [ Upstream commit 8c5708d3da37b8c7c3c22c7e945b9a76a7c9539b ]
    
    Was missing before and would have resulted in a write to
    a non-existant register. Normally APUs don't use HDP, but
    other asics could use this code and APUs do use the HDP
    when used in passthrough.
    
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: change the alignment size of TMR BO to 1M [+ + +]
Author: Yang Wang <KevinYang.Wang@amd.com>
Date:   Fri Sep 9 11:06:50 2022 +0800

    drm/amdgpu: change the alignment size of TMR BO to 1M
    
    [ Upstream commit 36de13fdb04abef3ee03ade5129ab146de63983b ]
    
    align TMR BO size TO tmr size is not necessary,
    modify the size to 1M to avoid re-create BO fail
    when serious VRAM fragmentation.
    
    v2:
    add new macro PSP_TMR_ALIGNMENT for TMR BO alignment size
    
    Signed-off-by: Yang Wang <KevinYang.Wang@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: don't register a dirty callback for non-atomic [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Sep 19 12:26:20 2022 -0400

    drm/amdgpu: don't register a dirty callback for non-atomic
    
    [ Upstream commit abbc7a3dafb91b9d4ec56b70ec9a7520f8e13334 ]
    
    Some asics still support non-atomic code paths.
    
    Fixes: 66f99628eb2440 ("drm/amdgpu: use dirty framebuffer helper")
    Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
    Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Skip reset error status for psp v13_0_0 [+ + +]
Author: Candice Li <candice.li@amd.com>
Date:   Wed Sep 7 15:52:04 2022 +0800

    drm/amdgpu: Skip reset error status for psp v13_0_0
    
    [ Upstream commit 86875d558b91cb46f43be112799c06ecce60ec1e ]
    
    No need to reset error status since only umc ras supported on psp v13_0_0.
    
    Signed-off-by: Candice Li <candice.li@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: use dirty framebuffer helper [+ + +]
Author: Hamza Mahfooz <hamza.mahfooz@amd.com>
Date:   Tue Sep 6 15:01:49 2022 -0400

    drm/amdgpu: use dirty framebuffer helper
    
    [ Upstream commit 66f99628eb24409cb8feb5061f78283c8b65f820 ]
    
    Currently, we aren't handling DRM_IOCTL_MODE_DIRTYFB. So, use
    drm_atomic_helper_dirtyfb() as the dirty callback in the amdgpu_fb_funcs
    struct.
    
    Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/gma500: Fix (vblank) IRQs not working after suspend/resume [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 6 22:38:52 2022 +0200

    drm/gma500: Fix (vblank) IRQs not working after suspend/resume
    
    [ Upstream commit 235fdbc32d559db21e580f85035c59372704f09e ]
    
    Fix gnome-shell (and other page-flip users) hanging after suspend/resume
    because of the gma500's IRQs not working.
    
    This fixes 2 problems with the IRQ handling:
    
    1. gma_power_off() calls gma_irq_uninstall() which does a free_irq(), but
       gma_power_on() called gma_irq_preinstall() + gma_irq_postinstall() which
       do not call request_irq. Replace the pre- + post-install calls with
       gma_irq_install() which does prep + request + post.
    
    2. After fixing 1. IRQs still do not work on a Packard Bell Dot SC (Intel
       Atom N2600, cedarview) netbook.
    
       Cederview uses MSI interrupts and it seems that the BIOS re-configures
       things back to normal APIC based interrupts during S3 suspend. There is
       some MSI PCI-config registers save/restore code which tries to deal with
       this, but on the Packard Bell Dot SC this is not sufficient to restore
       MSI IRQ functionality after a suspend/resume.
    
       Replace the PCI-config registers save/restore with pci_disable_msi() on
       suspend + pci_enable_msi() on resume. Fixing e.g. gnome-shell hanging.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220906203852.527663-4-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/gma500: Fix BUG: sleeping function called from invalid context errors [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 6 22:38:50 2022 +0200

    drm/gma500: Fix BUG: sleeping function called from invalid context errors
    
    [ Upstream commit 63e37a79f7bd939314997e29c2f5a9f0ef184281 ]
    
    gma_crtc_page_flip() was holding the event_lock spinlock while calling
    crtc_funcs->mode_set_base() which takes ww_mutex.
    
    The only reason to hold event_lock is to clear gma_crtc->page_flip_event
    on mode_set_base() errors.
    
    Instead unlock it after setting gma_crtc->page_flip_event and on
    errors re-take the lock and clear gma_crtc->page_flip_event it
    it is still set.
    
    This fixes the following WARN/stacktrace:
    
    [  512.122953] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:870
    [  512.123004] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 1253, name: gnome-shell
    [  512.123031] preempt_count: 1, expected: 0
    [  512.123048] RCU nest depth: 0, expected: 0
    [  512.123066] INFO: lockdep is turned off.
    [  512.123080] irq event stamp: 0
    [  512.123094] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
    [  512.123134] hardirqs last disabled at (0): [<ffffffff8d0ec28c>] copy_process+0x9fc/0x1de0
    [  512.123176] softirqs last  enabled at (0): [<ffffffff8d0ec28c>] copy_process+0x9fc/0x1de0
    [  512.123207] softirqs last disabled at (0): [<0000000000000000>] 0x0
    [  512.123233] Preemption disabled at:
    [  512.123241] [<0000000000000000>] 0x0
    [  512.123275] CPU: 3 PID: 1253 Comm: gnome-shell Tainted: G        W         5.19.0+ #1
    [  512.123304] Hardware name: Packard Bell dot s/SJE01_CT, BIOS V1.10 07/23/2013
    [  512.123323] Call Trace:
    [  512.123346]  <TASK>
    [  512.123370]  dump_stack_lvl+0x5b/0x77
    [  512.123412]  __might_resched.cold+0xff/0x13a
    [  512.123458]  ww_mutex_lock+0x1e/0xa0
    [  512.123495]  psb_gem_pin+0x2c/0x150 [gma500_gfx]
    [  512.123601]  gma_pipe_set_base+0x76/0x240 [gma500_gfx]
    [  512.123708]  gma_crtc_page_flip+0x95/0x130 [gma500_gfx]
    [  512.123808]  drm_mode_page_flip_ioctl+0x57d/0x5d0
    [  512.123897]  ? drm_mode_cursor2_ioctl+0x10/0x10
    [  512.123936]  drm_ioctl_kernel+0xa1/0x150
    [  512.123984]  drm_ioctl+0x21f/0x420
    [  512.124025]  ? drm_mode_cursor2_ioctl+0x10/0x10
    [  512.124070]  ? rcu_read_lock_bh_held+0xb/0x60
    [  512.124104]  ? lock_release+0x1ef/0x2d0
    [  512.124161]  __x64_sys_ioctl+0x8d/0xd0
    [  512.124203]  do_syscall_64+0x58/0x80
    [  512.124239]  ? do_syscall_64+0x67/0x80
    [  512.124267]  ? trace_hardirqs_on_prepare+0x55/0xe0
    [  512.124300]  ? do_syscall_64+0x67/0x80
    [  512.124340]  ? rcu_read_lock_sched_held+0x10/0x80
    [  512.124377]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [  512.124411] RIP: 0033:0x7fcc4a70740f
    [  512.124442] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 18 48 8b 44 24 18 64 48 2b 04 25 28 00 00
    [  512.124470] RSP: 002b:00007ffda73f5390 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  512.124503] RAX: ffffffffffffffda RBX: 000055cc9e474500 RCX: 00007fcc4a70740f
    [  512.124524] RDX: 00007ffda73f5420 RSI: 00000000c01864b0 RDI: 0000000000000009
    [  512.124544] RBP: 00007ffda73f5420 R08: 000055cc9c0b0cb0 R09: 0000000000000034
    [  512.124564] R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c01864b0
    [  512.124584] R13: 0000000000000009 R14: 000055cc9df484d0 R15: 000055cc9af5d0c0
    [  512.124647]  </TASK>
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220906203852.527663-2-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/gma500: Fix WARN_ON(lock->magic != lock) error [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Sep 6 22:38:51 2022 +0200

    drm/gma500: Fix WARN_ON(lock->magic != lock) error
    
    [ Upstream commit b6f25c3b94f2aadbf5cbef954db4073614943d74 ]
    
    psb_gem_unpin() calls dma_resv_lock() but the underlying ww_mutex
    gets destroyed by drm_gem_object_release() move the
    drm_gem_object_release() call in psb_gem_free_object() to after
    the unpin to fix the below warning:
    
    [   79.693962] ------------[ cut here ]------------
    [   79.693992] DEBUG_LOCKS_WARN_ON(lock->magic != lock)
    [   79.694015] WARNING: CPU: 0 PID: 240 at kernel/locking/mutex.c:582 __ww_mutex_lock.constprop.0+0x569/0xfb0
    [   79.694052] Modules linked in: rfcomm snd_seq_dummy snd_hrtimer qrtr bnep ath9k ath9k_common ath9k_hw snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio snd_hda_codec_hdmi snd_hda_intel ath3k snd_intel_dspcfg mac80211 snd_intel_sdw_acpi btusb snd_hda_codec btrtl btbcm btintel btmtk bluetooth at24 snd_hda_core snd_hwdep uvcvideo snd_seq libarc4 videobuf2_vmalloc ath videobuf2_memops videobuf2_v4l2 videobuf2_common snd_seq_device videodev acer_wmi intel_powerclamp coretemp mc snd_pcm joydev sparse_keymap ecdh_generic pcspkr wmi_bmof cfg80211 i2c_i801 i2c_smbus snd_timer snd r8169 rfkill lpc_ich soundcore acpi_cpufreq zram rtsx_pci_sdmmc mmc_core serio_raw rtsx_pci gma500_gfx(E) video wmi ip6_tables ip_tables i2c_dev fuse
    [   79.694436] CPU: 0 PID: 240 Comm: plymouthd Tainted: G        W   E      6.0.0-rc3+ #490
    [   79.694457] Hardware name: Packard Bell dot s/SJE01_CT, BIOS V1.10 07/23/2013
    [   79.694469] RIP: 0010:__ww_mutex_lock.constprop.0+0x569/0xfb0
    [   79.694496] Code: ff 85 c0 0f 84 15 fb ff ff 8b 05 ca 3c 11 01 85 c0 0f 85 07 fb ff ff 48 c7 c6 30 cb 84 aa 48 c7 c7 a3 e1 82 aa e8 ac 29 f8 ff <0f> 0b e9 ed fa ff ff e8 5b 83 8a ff 85 c0 74 10 44 8b 0d 98 3c 11
    [   79.694513] RSP: 0018:ffffad1dc048bbe0 EFLAGS: 00010282
    [   79.694623] RAX: 0000000000000028 RBX: 0000000000000000 RCX: 0000000000000000
    [   79.694636] RDX: 0000000000000001 RSI: ffffffffaa8b0ffc RDI: 00000000ffffffff
    [   79.694650] RBP: ffffad1dc048bc80 R08: 0000000000000000 R09: ffffad1dc048ba90
    [   79.694662] R10: 0000000000000003 R11: ffffffffaad62fe8 R12: ffff9ff302103138
    [   79.694675] R13: ffff9ff306ec8000 R14: ffff9ff307779078 R15: ffff9ff3014c0270
    [   79.694690] FS:  00007ff1cccf1740(0000) GS:ffff9ff3bc200000(0000) knlGS:0000000000000000
    [   79.694705] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   79.694719] CR2: 0000559ecbcb4420 CR3: 0000000013210000 CR4: 00000000000006f0
    [   79.694734] Call Trace:
    [   79.694749]  <TASK>
    [   79.694761]  ? __schedule+0x47f/0x1670
    [   79.694796]  ? psb_gem_unpin+0x27/0x1a0 [gma500_gfx]
    [   79.694830]  ? lock_is_held_type+0xe3/0x140
    [   79.694864]  ? ww_mutex_lock+0x38/0xa0
    [   79.694885]  ? __cond_resched+0x1c/0x30
    [   79.694902]  ww_mutex_lock+0x38/0xa0
    [   79.694925]  psb_gem_unpin+0x27/0x1a0 [gma500_gfx]
    [   79.694964]  psb_gem_unpin+0x199/0x1a0 [gma500_gfx]
    [   79.694996]  drm_gem_object_release_handle+0x50/0x60
    [   79.695020]  ? drm_gem_object_handle_put_unlocked+0xf0/0xf0
    [   79.695042]  idr_for_each+0x4b/0xb0
    [   79.695066]  ? _raw_spin_unlock_irqrestore+0x30/0x60
    [   79.695095]  drm_gem_release+0x1c/0x30
    [   79.695118]  drm_file_free.part.0+0x1ea/0x260
    [   79.695150]  drm_release+0x6a/0x120
    [   79.695175]  __fput+0x9f/0x260
    [   79.695203]  task_work_run+0x59/0xa0
    [   79.695227]  do_exit+0x387/0xbe0
    [   79.695250]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
    [   79.695275]  ? lockdep_hardirqs_on+0x7d/0x100
    [   79.695304]  do_group_exit+0x33/0xb0
    [   79.695331]  __x64_sys_exit_group+0x14/0x20
    [   79.695353]  do_syscall_64+0x58/0x80
    [   79.695376]  ? up_read+0x17/0x20
    [   79.695401]  ? lock_is_held_type+0xe3/0x140
    [   79.695429]  ? asm_exc_page_fault+0x22/0x30
    [   79.695450]  ? lockdep_hardirqs_on+0x7d/0x100
    [   79.695473]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [   79.695493] RIP: 0033:0x7ff1ccefe3f1
    [   79.695516] Code: Unable to access opcode bytes at RIP 0x7ff1ccefe3c7.
    [   79.695607] RSP: 002b:00007ffed4413378 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    [   79.695629] RAX: ffffffffffffffda RBX: 00007ff1cd0159e0 RCX: 00007ff1ccefe3f1
    [   79.695644] RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000
    [   79.695656] RBP: 0000000000000000 R08: ffffffffffffff80 R09: 00007ff1cd020b20
    [   79.695671] R10: 0000000000000000 R11: 0000000000000246 R12: 00007ff1cd0159e0
    [   79.695684] R13: 0000000000000000 R14: 00007ff1cd01aee8 R15: 00007ff1cd01af00
    [   79.695733]  </TASK>
    [   79.695746] irq event stamp: 725979
    [   79.695757] hardirqs last  enabled at (725979): [<ffffffffa9132d54>] finish_task_switch.isra.0+0xe4/0x3f0
    [   79.695780] hardirqs last disabled at (725978): [<ffffffffa9eb4113>] __schedule+0xdd3/0x1670
    [   79.695803] softirqs last  enabled at (725974): [<ffffffffa90fbc9d>] __irq_exit_rcu+0xed/0x160
    [   79.695825] softirqs last disabled at (725969): [<ffffffffa90fbc9d>] __irq_exit_rcu+0xed/0x160
    [   79.695845] ---[ end trace 0000000000000000 ]---
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220906203852.527663-3-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/hisilicon: Add depends on MMU [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon May 30 19:55:57 2022 -0700

    drm/hisilicon: Add depends on MMU
    
    [ Upstream commit d8a79c03054911c375a2252627a429c9bc4615b6 ]
    
    The Kconfig symbol depended on MMU but was dropped by the commit
    acad3fe650a5 ("drm/hisilicon: Removed the dependency on the mmu")
    because it already had as a dependency ARM64 that already selects MMU.
    
    But later, commit a0f25a6bb319 ("drm/hisilicon/hibmc: Allow to be built
    if COMPILE_TEST is enabled") allowed the driver to be built for non-ARM64
    when COMPILE_TEST is set but that could lead to unmet direct dependencies
    and linking errors.
    
    Prevent a kconfig warning when MMU is not enabled by making
    DRM_HISI_HIBMC depend on MMU.
    
    WARNING: unmet direct dependencies detected for DRM_TTM
      Depends on [n]: HAS_IOMEM [=y] && DRM [=m] && MMU [=n]
      Selected by [m]:
      - DRM_TTM_HELPER [=m] && HAS_IOMEM [=y] && DRM [=m]
      - DRM_HISI_HIBMC [=m] && HAS_IOMEM [=y] && DRM [=m] && PCI [=y] && (ARM64 || COMPILE_TEST [=y])
    
    Fixes: acad3fe650a5 ("drm/hisilicon: Removed the dependency on the mmu")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Xinliang Liu <xinliang.liu@linaro.org>
    Cc: Tian Tao  <tiantao6@hisilicon.com>
    Cc: John Stultz <jstultz@google.com>
    Cc: Xinwei Kong <kong.kongxinwei@hisilicon.com>
    Cc: Chen Feng <puck.chen@hisilicon.com>
    Cc: Christian Koenig <christian.koenig@amd.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220531025557.29593-1-rdunlap@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/bios: Split parse_driver_features() into two parts [+ + +]
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue May 10 13:42:37 2022 +0300

    drm/i915/bios: Split parse_driver_features() into two parts
    
    [ Upstream commit c3fbcf60bc74b630967f291f47f0d9d0de6fcea7 ]
    
    We use the "driver features" block for two different kinds
    of data: global data, and per panel data. Split the function
    into two parts along that line so that we can start doing the
    parsing in two different locations.
    
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-11-ville.syrjala@linux.intel.com
    Stable-dep-of: 607f41768a1e ("drm/i915/dsi: filter invalid backlight and CABC ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/i915/bios: Split VBT data into per-panel vs. global parts [+ + +]
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue May 10 13:42:39 2022 +0300

    drm/i915/bios: Split VBT data into per-panel vs. global parts
    
    [ Upstream commit 3cf050762534cc268a02793ec00240f81c6e2229 ]
    
    Move the panel specific VBT parsing to happen during the
    output probing stage. Needs to be done because the VBT
    parsing will need to look at the EDID to determine
    the correct panel_type on some machines.
    
    We split the parsed VBT data (i915->vbt) along the same
    boundary. For the moment we just hoist all the panel
    specific stuff into connector->panel.vbt since that seems
    like the most convenient place for eg. the backlight code.
    
    Note that we simply drop the drrs type check from
    intel_drrs_frontbuffer_update() since that operates on the whole
    device rather than a specific connector/encoder. But the check
    was just a micro optimization so removing it doesn't actually
    mattter for correctness.
    
    TODO: Lot's of cleanup to be done in the future. Eg. most of
    the DSI stuff could probably be eliminated entirely and just
    parsed on demand during DSI init.
    
    v2: Note the intel_drrs_frontbuffer_update() change
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-13-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Stable-dep-of: 607f41768a1e ("drm/i915/dsi: filter invalid backlight and CABC ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/i915/bios: Split VBT parsing to global vs. panel specific parts [+ + +]
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue May 10 13:42:38 2022 +0300

    drm/i915/bios: Split VBT parsing to global vs. panel specific parts
    
    [ Upstream commit c2fdb424d32204faf5be29d55f0086b611c94e38 ]
    
    Parsing the panel specific data (anything that depends on panel_type)
    from VBT is currently happening too early. Split the whole thing
    into global vs. panel specific parts so that we can start doing
    the panel specific parsing at a later time.
    
    v2: Clarify that this is about panel_type (Jani)
        Split out the leak checks (Jani)
    
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-12-ville.syrjala@linux.intel.com
    Stable-dep-of: 607f41768a1e ("drm/i915/dsi: filter invalid backlight and CABC ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/display: Fix handling of enable_psr parameter [+ + +]
Author: José Roberto de Souza <jose.souza@intel.com>
Date:   Wed Jun 8 13:33:44 2022 -0700

    drm/i915/display: Fix handling of enable_psr parameter
    
    commit 5c57c099f442acab13129c9e15ad2a0c31151c98 upstream.
    
    Commit 3cf050762534 ("drm/i915/bios: Split VBT data into per-panel vs.
    global parts") cause PSR to be disabled when enable_psr has the
    default value and there is at least one DP port that do not supports
    PSR.
    
    That was happening because intel_psr_init() is called for every DP
    port and then enable_psr is globaly set to 0 based on the PSR support
    of the DP port.
    
    Here dropping the enable_psr overwritten and using the VBT PSR value
    when enable_psr is set as default.
    
    Fixes: 3cf050762534 ("drm/i915/bios: Split VBT data into per-panel vs. global parts")
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Jouni Högander <jouni.hogander@intel.com>
    Cc: Mika Kahola <mika.kahola@intel.com>
    Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
    Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220608203344.513082-1-jose.souza@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/dsi: filter invalid backlight and CABC ports [+ + +]
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Tue Aug 16 18:37:20 2022 +0300

    drm/i915/dsi: filter invalid backlight and CABC ports
    
    [ Upstream commit 607f41768a1ef9c7721866b00fbdeeea5359bc07 ]
    
    Avoid using ports that aren't initialized in case the VBT backlight or
    CABC ports have invalid values. This fixes a NULL pointer dereference of
    intel_dsi->dsi_hosts[port] in such cases.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/b0f4f087866257d280eb97d6bcfcefd109cc5fa2.1660664162.git.jani.nikula@intel.com
    (cherry picked from commit f4a6c7a454a6e71c5ccf25af82694213a9784013)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/i915/dsi: fix dual-link DSI backlight and CABC ports for display 11+ [+ + +]
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Tue Aug 16 18:37:21 2022 +0300

    drm/i915/dsi: fix dual-link DSI backlight and CABC ports for display 11+
    
    [ Upstream commit 13393f65b77445d8b0f99c7b605cc9ccc936586f ]
    
    The VBT dual-link DSI backlight and CABC still use ports A and C, both
    in Bspec and code, while display 11+ DSI only supports ports A and
    B. Assume port C actually means port B for display 11+ when parsing VBT.
    
    Bspec: 20154
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6476
    Cc: stable@vger.kernel.org
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/8c462718bcc7b36a83e09d0a5eef058b6bc8b1a2.1660664162.git.jani.nikula@intel.com
    (cherry picked from commit ab55165d73a444606af1530cd0d6448b04370f68)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/gem: Flush contexts on driver release [+ + +]
Author: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Date:   Fri Sep 16 11:24:02 2022 +0200

    drm/i915/gem: Flush contexts on driver release
    
    commit 5ce8f7444f8fbb5adee644590c0e4e1890ab004c upstream.
    
    Due to i915_perf assuming that it can use the i915_gem_context reference
    to protect its i915->gem.contexts.list iteration, we need to defer removal
    of the context from the list until last reference to the context is put.
    However, there is a risk of triggering kernel warning on contexts list not
    empty at driver release time if we deleagate that task to a worker for
    i915_gem_context_release_work(), unless that work is flushed first.
    Unfortunately, it is not flushed on driver release.  Fix it.
    
    Instead of additionally calling flush_workqueue(), either directly or via
    a new dedicated wrapper around it, replace last call to
    i915_gem_drain_freed_objects() with existing i915_gem_drain_workqueue()
    that performs both tasks.
    
    Fixes: 75eefd82581f ("drm/i915: Release i915_gem_context from a worker")
    Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
    Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
    Cc: stable@kernel.org # v5.16+
    Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220916092403.201355-2-janusz.krzysztofik@linux.intel.com
    (cherry picked from commit 1cec34442408a77ba5396b19725fed2c398005c3)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/i915/gem: Really move i915_gem_context.link under ref protection [+ + +]
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Sep 16 11:24:03 2022 +0200

    drm/i915/gem: Really move i915_gem_context.link under ref protection
    
    commit d119888b09bd567e07c6b93a07f175df88857e02 upstream.
    
    i915_perf assumes that it can use the i915_gem_context reference to
    protect its i915->gem.contexts.list iteration. However, this requires
    that we do not remove the context from the list until after we drop the
    final reference and release the struct. If, as currently, we remove the
    context from the list during context_close(), the link.next pointer may
    be poisoned while we are holding the context reference and cause a GPF:
    
    [ 4070.573157] i915 0000:00:02.0: [drm:i915_perf_open_ioctl [i915]] filtering on ctx_id=0x1fffff ctx_id_mask=0x1fffff
    [ 4070.574881] general protection fault, probably for non-canonical address 0xdead000000000100: 0000 [#1] PREEMPT SMP
    [ 4070.574897] CPU: 1 PID: 284392 Comm: amd_performance Tainted: G            E     5.17.9 #180
    [ 4070.574903] Hardware name: Intel Corporation NUC7i5BNK/NUC7i5BNB, BIOS BNKBL357.86A.0052.2017.0918.1346 09/18/2017
    [ 4070.574907] RIP: 0010:oa_configure_all_contexts.isra.0+0x222/0x350 [i915]
    [ 4070.574982] Code: 08 e8 32 6e 10 e1 4d 8b 6d 50 b8 ff ff ff ff 49 83 ed 50 f0 41 0f c1 04 24 83 f8 01 0f 84 e3 00 00 00 85 c0 0f 8e fa 00 00 00 <49> 8b 45 50 48 8d 70 b0 49 8d 45 50 48 39 44 24 10 0f 85 34 fe ff
    [ 4070.574990] RSP: 0018:ffffc90002077b78 EFLAGS: 00010202
    [ 4070.574995] RAX: 0000000000000002 RBX: 0000000000000002 RCX: 0000000000000000
    [ 4070.575000] RDX: 0000000000000001 RSI: ffffc90002077b20 RDI: ffff88810ddc7c68
    [ 4070.575004] RBP: 0000000000000001 R08: ffff888103242648 R09: fffffffffffffffc
    [ 4070.575008] R10: ffffffff82c50bc0 R11: 0000000000025c80 R12: ffff888101bf1860
    [ 4070.575012] R13: dead0000000000b0 R14: ffffc90002077c04 R15: ffff88810be5cabc
    [ 4070.575016] FS:  00007f1ed50c0780(0000) GS:ffff88885ec80000(0000) knlGS:0000000000000000
    [ 4070.575021] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 4070.575025] CR2: 00007f1ed5590280 CR3: 000000010ef6f005 CR4: 00000000003706e0
    [ 4070.575029] Call Trace:
    [ 4070.575033]  <TASK>
    [ 4070.575037]  lrc_configure_all_contexts+0x13e/0x150 [i915]
    [ 4070.575103]  gen8_enable_metric_set+0x4d/0x90 [i915]
    [ 4070.575164]  i915_perf_open_ioctl+0xbc0/0x1500 [i915]
    [ 4070.575224]  ? asm_common_interrupt+0x1e/0x40
    [ 4070.575232]  ? i915_oa_init_reg_state+0x110/0x110 [i915]
    [ 4070.575290]  drm_ioctl_kernel+0x85/0x110
    [ 4070.575296]  ? update_load_avg+0x5f/0x5e0
    [ 4070.575302]  drm_ioctl+0x1d3/0x370
    [ 4070.575307]  ? i915_oa_init_reg_state+0x110/0x110 [i915]
    [ 4070.575382]  ? gen8_gt_irq_handler+0x46/0x130 [i915]
    [ 4070.575445]  __x64_sys_ioctl+0x3c4/0x8d0
    [ 4070.575451]  ? __do_softirq+0xaa/0x1d2
    [ 4070.575456]  do_syscall_64+0x35/0x80
    [ 4070.575461]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [ 4070.575467] RIP: 0033:0x7f1ed5c10397
    [ 4070.575471] Code: 3c 1c e8 1c ff ff ff 85 c0 79 87 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 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 a9 da 0d 00 f7 d8 64 89 01 48
    [ 4070.575478] RSP: 002b:00007ffd65c8d7a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [ 4070.575484] RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 00007f1ed5c10397
    [ 4070.575488] RDX: 00007ffd65c8d7c0 RSI: 0000000040106476 RDI: 0000000000000006
    [ 4070.575492] RBP: 00005620972f9c60 R08: 000000000000000a R09: 0000000000000005
    [ 4070.575496] R10: 000000000000000d R11: 0000000000000246 R12: 000000000000000a
    [ 4070.575500] R13: 000000000000000d R14: 0000000000000000 R15: 00007ffd65c8d7c0
    [ 4070.575505]  </TASK>
    [ 4070.575507] Modules linked in: nls_ascii(E) nls_cp437(E) vfat(E) fat(E) i915(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) aesni_intel(E) crypto_simd(E) intel_gtt(E) cryptd(E) ttm(E) rapl(E) intel_cstate(E) drm_kms_helper(E) cfbfillrect(E) syscopyarea(E) cfbimgblt(E) intel_uncore(E) sysfillrect(E) mei_me(E) sysimgblt(E) i2c_i801(E) fb_sys_fops(E) mei(E) intel_pch_thermal(E) i2c_smbus(E) cfbcopyarea(E) video(E) button(E) efivarfs(E) autofs4(E)
    [ 4070.575549] ---[ end trace 0000000000000000 ]---
    
    v3: fix incorrect syntax of spin_lock() replacing spin_lock_irqsave()
    
    v2: irqsave not required in a worker, neither conversion to irq safe
        elsewhere (Tvrtko),
      - perf: it's safe to call gen8_configure_context() even if context has
        been closed, no need to check,
      - drop unrelated cleanup (Andi, Tvrtko)
    
    Reported-by: Mark Janes <mark.janes@intel.com>
    Closes: https://gitlab.freedesktop.org/drm/intel/issues/6222
    References: a4e7ccdac38e ("drm/i915: Move context management under GEM")
    Fixes: f8246cf4d9a9 ("drm/i915/gem: Drop free_work for GEM contexts")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
    Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: <stable@vger.kernel.org> # v5.12+
    Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220916092403.201355-3-janusz.krzysztofik@linux.intel.com
    (cherry picked from commit ad3aa7c31efa5a09b0dba42e66cfdf77e0db7dc2)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/pps: Split pps_init_delays() into distinct parts [+ + +]
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue May 10 13:42:30 2022 +0300

    drm/i915/pps: Split pps_init_delays() into distinct parts
    
    [ Upstream commit 75bd0d5e4eadb9ce3e9b6fb71971b6e87c38799e ]
    
    Split each of the hw/vbt/spec PPS delay initialization into
    separate functions to make the whole thing less cluttered.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-4-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Stable-dep-of: 607f41768a1e ("drm/i915/dsi: filter invalid backlight and CABC ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915: Extract intel_edp_fixup_vbt_bpp() [+ + +]
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue May 10 13:42:29 2022 +0300

    drm/i915: Extract intel_edp_fixup_vbt_bpp()
    
    [ Upstream commit 822e5ae701af2964c5808b6ade1d6f3b1eaec967 ]
    
    We have the same "override eDP VBT bpp with the current bpp" code
    duplciated in two places. Extract it to a helper function.
    
    TODO: Having this in .get_config() is pretty ugly. Should probably
    try to move it somewhere else (setup_hw_state()/etc.)...
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-3-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Stable-dep-of: 607f41768a1e ("drm/i915/dsi: filter invalid backlight and CABC ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
drm/mediatek: dsi: Add atomic {destroy,duplicate}_state, reset callbacks [+ + +]
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Date:   Thu Jul 21 19:27:27 2022 +0200

    drm/mediatek: dsi: Add atomic {destroy,duplicate}_state, reset callbacks
    
    [ Upstream commit eeda05b5e92f51d9a09646ecb493f0a1e872a6ef ]
    
    Add callbacks for atomic_destroy_state, atomic_duplicate_state and
    atomic_reset to restore functionality of the DSI driver: this solves
    vblank timeouts when another bridge is present in the chain.
    
    Tested bridge chain: DSI <=> ANX7625 => aux-bus panel
    
    Fixes: 7f6335c6a258 ("drm/mediatek: Modify dsi funcs to atomic operations")
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Tested-by: Chen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://patchwork.kernel.org/project/linux-mediatek/patch/20220721172727.14624-1-angelogioacchino.delregno@collabora.com/
    Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/mediatek: dsi: Move mtk_dsi_stop() call back to mtk_dsi_poweroff() [+ + +]
Author: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Date:   Thu Aug 4 15:43:25 2022 -0400

    drm/mediatek: dsi: Move mtk_dsi_stop() call back to mtk_dsi_poweroff()
    
    [ Upstream commit 90144dd8b0d137d9e78ef34b3c418e51a49299ad ]
    
    As the comment right before the mtk_dsi_stop() call advises,
    mtk_dsi_stop() should only be called after
    mtk_drm_crtc_atomic_disable(). That's because that function calls
    drm_crtc_wait_one_vblank(), which requires the vblank irq to be enabled.
    
    Previously mtk_dsi_stop(), being in mtk_dsi_poweroff() and guarded by a
    refcount, would only be called at the end of
    mtk_drm_crtc_atomic_disable(), through the call to mtk_crtc_ddp_hw_fini().
    Commit cde7e2e35c28 ("drm/mediatek: Separate poweron/poweroff from
    enable/disable and define new funcs") moved the mtk_dsi_stop() call to
    mtk_output_dsi_disable(), causing it to be called before
    mtk_drm_crtc_atomic_disable(), and consequently generating vblank
    timeout warnings during suspend.
    
    Move the mtk_dsi_stop() call back to mtk_dsi_poweroff() so that we have
    a working vblank irq during mtk_drm_crtc_atomic_disable() and stop
    getting vblank timeout warnings.
    
    Fixes: cde7e2e35c28 ("drm/mediatek: Separate poweron/poweroff from enable/disable and define new funcs")
    Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Tested-by: Hsin-Yi Wang <hsinyi@chromium.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Tested-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
    Link: http://lists.infradead.org/pipermail/linux-mediatek/2022-August/046713.html
    Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/mediatek: Fix wrong dither settings [+ + +]
Author: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
Date:   Thu Sep 8 22:12:05 2022 +0800

    drm/mediatek: Fix wrong dither settings
    
    [ Upstream commit 87fd9294e63e8fa7532b5e65b534c3001c654ef8 ]
    
    The width and height arguments in the cmdq packet for mtk_dither_config()
    are inverted. We fix the incorrect width and height for dither settings
    in mtk_dither_config().
    
    Fixes: 73d3724745db ("drm/mediatek: Adjust to the alphabetic order for mediatek-drm")
    Co-developed-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
    Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
    Signed-off-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
    Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
    Link: https://patchwork.kernel.org/project/linux-mediatek/patch/20220908141205.18256-1-allen-kh.cheng@mediatek.com/
    Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/panel: simple: Fix innolux_g121i1_l01 bus_format [+ + +]
Author: Heiko Schocher <hs@denx.de>
Date:   Fri Aug 26 13:50:21 2022 -0300

    drm/panel: simple: Fix innolux_g121i1_l01 bus_format
    
    [ Upstream commit a7c48a0ab87ae52c087d663e83e56b8225ac4cce ]
    
    innolux_g121i1_l01 sets bpc to 6, so use the corresponding bus format:
    MEDIA_BUS_FMT_RGB666_1X7X3_SPWG.
    
    Fixes: 4ae13e486866 ("drm/panel: simple: Add more properties to Innolux G121I1-L01")
    Signed-off-by: Heiko Schocher <hs@denx.de>
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Signed-off-by: Marek Vasut <marex@denx.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220826165021.1592532-1-festevam@denx.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/rockchip: Fix return type of cdn_dp_connector_mode_valid [+ + +]
Author: Nathan Huckleberry <nhuck@google.com>
Date:   Tue Sep 13 13:55:55 2022 -0700

    drm/rockchip: Fix return type of cdn_dp_connector_mode_valid
    
    [ Upstream commit b0b9408f132623dc88e78adb5282f74e4b64bb57 ]
    
    The mode_valid field in drm_connector_helper_funcs is expected to be of
    type:
    enum drm_mode_status (* mode_valid) (struct drm_connector *connector,
                                         struct drm_display_mode *mode);
    
    The mismatched return type breaks forward edge kCFI since the underlying
    function definition does not match the function hook definition.
    
    The return type of cdn_dp_connector_mode_valid should be changed from
    int to enum drm_mode_status.
    
    Reported-by: Dan Carpenter <error27@gmail.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/1703
    Cc: llvm@lists.linux.dev
    Signed-off-by: Nathan Huckleberry <nhuck@google.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220913205555.155149-1-nhuck@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
efi: libstub: check Shim mode using MokSBStateRT [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Tue Sep 20 17:08:23 2022 +0200

    efi: libstub: check Shim mode using MokSBStateRT
    
    commit 5f56a74cc0a6d9b9f8ba89cea29cd7c4774cb2b1 upstream.
    
    We currently check the MokSBState variable to decide whether we should
    treat UEFI secure boot as being disabled, even if the firmware thinks
    otherwise. This is used by shim to indicate that it is not checking
    signatures on boot images. In the kernel, we use this to relax lockdown
    policies.
    
    However, in cases where shim is not even being used, we don't want this
    variable to interfere with lockdown, given that the variable may be
    non-volatile and therefore persist across a reboot. This means setting
    it once will persistently disable lockdown checks on a given system.
    
    So switch to the mirrored version of this variable, called MokSBStateRT,
    which is supposed to be volatile, and this is something we can check.
    
    Cc: <stable@vger.kernel.org> # v4.19+
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
    Reviewed-by: Peter Jones <pjones@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

efi: x86: Wipe setup_data on pure EFI boot [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Thu Aug 4 15:39:48 2022 +0200

    efi: x86: Wipe setup_data on pure EFI boot
    
    commit 63bf28ceb3ebbe76048c3fb2987996ca1ae64f83 upstream.
    
    When booting the x86 kernel via EFI using the LoadImage/StartImage boot
    services [as opposed to the deprecated EFI handover protocol], the setup
    header is taken from the image directly, and given that EFI's LoadImage
    has no Linux/x86 specific knowledge regarding struct bootparams or
    struct setup_header, any absolute addresses in the setup header must
    originate from the file and not from a prior loading stage.
    
    Since we cannot generally predict where LoadImage() decides to load an
    image (*), such absolute addresses must be treated as suspect: even if a
    prior boot stage intended to make them point somewhere inside the
    [signed] image, there is no way to validate that, and if they point at
    an arbitrary location in memory, the setup_data nodes will not be
    covered by any signatures or TPM measurements either, and could be made
    to contain an arbitrary sequence of SETUP_xxx nodes, which could
    interfere quite badly with the early x86 boot sequence.
    
    (*) Note that, while LoadImage() does take a buffer/size tuple in
    addition to a device path, which can be used to provide the image
    contents directly, it will re-allocate such images, as the memory
    footprint of an image is generally larger than the PE/COFF file
    representation.
    
    Cc: <stable@vger.kernel.org> # v5.10+
    Link: https://lore.kernel.org/all/20220904165321.1140894-1-Jason@zx2c4.com/
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Acked-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
exfat: fix overflow for large capacity partition [+ + +]
Author: Yuezhang Mo <Yuezhang.Mo@sony.com>
Date:   Thu Jul 28 10:01:26 2022 +0800

    exfat: fix overflow for large capacity partition
    
    commit 2e9ceb6728f1dc2fa4b5d08f37d88cbc49a20a62 upstream.
    
    Using int type for sector index, there will be overflow in a large
    capacity partition.
    
    For example, if storage with sector size of 512 bytes and partition
    capacity is larger than 2TB, there will be overflow.
    
    Fixes: 1b6138385499 ("exfat: reduce block requests when zeroing a cluster")
    Cc: stable@vger.kernel.org # v5.19+
    Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
    Reviewed-by: Andy Wu <Andy.Wu@sony.com>
    Reviewed-by: Aoyama Wataru <wataru.aoyama@sony.com>
    Acked-by: Sungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ext4: avoid unnecessary spreading of allocations among groups [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 8 11:21:25 2022 +0200

    ext4: avoid unnecessary spreading of allocations among groups
    
    commit 1940265ede6683f6317cba0d428ce6505eaca944 upstream.
    
    mb_set_largest_free_order() updates lists containing groups with largest
    chunk of free space of given order. The way it updates it leads to
    always moving the group to the tail of the list. Thus allocations
    looking for free space of given order effectively end up cycling through
    all groups (and due to initialization in last to first order). This
    spreads allocations among block groups which reduces performance for
    rotating disks or low-end flash media. Change
    mb_set_largest_free_order() to only update lists if the order of the
    largest free chunk in the group changed.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@kernel.org
    Reported-and-tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
    Link: https://lore.kernel.org/r/20220908092136.11770-2-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix bug in extents parsing when eh_entries == 0 and eh_depth > 0 [+ + +]
Author: Luís Henriques <lhenriques@suse.de>
Date:   Mon Aug 22 10:42:35 2022 +0100

    ext4: fix bug in extents parsing when eh_entries == 0 and eh_depth > 0
    
    commit 29a5b8a137ac8eb410cc823653a29ac0e7b7e1b0 upstream.
    
    When walking through an inode extents, the ext4_ext_binsearch_idx() function
    assumes that the extent header has been previously validated.  However, there
    are no checks that verify that the number of entries (eh->eh_entries) is
    non-zero when depth is > 0.  And this will lead to problems because the
    EXT_FIRST_INDEX() and EXT_LAST_INDEX() will return garbage and result in this:
    
    [  135.245946] ------------[ cut here ]------------
    [  135.247579] kernel BUG at fs/ext4/extents.c:2258!
    [  135.249045] invalid opcode: 0000 [#1] PREEMPT SMP
    [  135.250320] CPU: 2 PID: 238 Comm: tmp118 Not tainted 5.19.0-rc8+ #4
    [  135.252067] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.15.0-0-g2dd4b9b-rebuilt.opensuse.org 04/01/2014
    [  135.255065] RIP: 0010:ext4_ext_map_blocks+0xc20/0xcb0
    [  135.256475] Code:
    [  135.261433] RSP: 0018:ffffc900005939f8 EFLAGS: 00010246
    [  135.262847] RAX: 0000000000000024 RBX: ffffc90000593b70 RCX: 0000000000000023
    [  135.264765] RDX: ffff8880038e5f10 RSI: 0000000000000003 RDI: ffff8880046e922c
    [  135.266670] RBP: ffff8880046e9348 R08: 0000000000000001 R09: ffff888002ca580c
    [  135.268576] R10: 0000000000002602 R11: 0000000000000000 R12: 0000000000000024
    [  135.270477] R13: 0000000000000000 R14: 0000000000000024 R15: 0000000000000000
    [  135.272394] FS:  00007fdabdc56740(0000) GS:ffff88807dd00000(0000) knlGS:0000000000000000
    [  135.274510] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  135.276075] CR2: 00007ffc26bd4f00 CR3: 0000000006261004 CR4: 0000000000170ea0
    [  135.277952] Call Trace:
    [  135.278635]  <TASK>
    [  135.279247]  ? preempt_count_add+0x6d/0xa0
    [  135.280358]  ? percpu_counter_add_batch+0x55/0xb0
    [  135.281612]  ? _raw_read_unlock+0x18/0x30
    [  135.282704]  ext4_map_blocks+0x294/0x5a0
    [  135.283745]  ? xa_load+0x6f/0xa0
    [  135.284562]  ext4_mpage_readpages+0x3d6/0x770
    [  135.285646]  read_pages+0x67/0x1d0
    [  135.286492]  ? folio_add_lru+0x51/0x80
    [  135.287441]  page_cache_ra_unbounded+0x124/0x170
    [  135.288510]  filemap_get_pages+0x23d/0x5a0
    [  135.289457]  ? path_openat+0xa72/0xdd0
    [  135.290332]  filemap_read+0xbf/0x300
    [  135.291158]  ? _raw_spin_lock_irqsave+0x17/0x40
    [  135.292192]  new_sync_read+0x103/0x170
    [  135.293014]  vfs_read+0x15d/0x180
    [  135.293745]  ksys_read+0xa1/0xe0
    [  135.294461]  do_syscall_64+0x3c/0x80
    [  135.295284]  entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    This patch simply adds an extra check in __ext4_ext_check(), verifying that
    eh_entries is not 0 when eh_depth is > 0.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215941
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216283
    Cc: Baokun Li <libaokun1@huawei.com>
    Cc: stable@kernel.org
    Signed-off-by: Luís Henriques <lhenriques@suse.de>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Baokun Li <libaokun1@huawei.com>
    Link: https://lore.kernel.org/r/20220822094235.2690-1-lhenriques@suse.de
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fixup possible uninitialized variable access in ext4_mb_choose_next_group_cr1() [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 22 11:09:29 2022 +0200

    ext4: fixup possible uninitialized variable access in ext4_mb_choose_next_group_cr1()
    
    commit a078dff870136090b5779ca2831870a6c5539d36 upstream.
    
    Variable 'grp' may be left uninitialized if there's no group with
    suitable average fragment size (or larger). Fix the problem by
    initializing it earlier.
    
    Link: https://lore.kernel.org/r/20220922091542.pkhedytey7wzp5fi@quack3
    Fixes: 83e80a6e3543 ("ext4: use buckets for cr 1 block scan instead of rbtree")
    Cc: stable@kernel.org
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: limit the number of retries after discarding preallocations blocks [+ + +]
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Sep 1 18:03:14 2022 -0400

    ext4: limit the number of retries after discarding preallocations blocks
    
    commit 80fa46d6b9e7b1527bfd2197d75431fd9c382161 upstream.
    
    This patch avoids threads live-locking for hours when a large number
    threads are competing over the last few free extents as they blocks
    getting added and removed from preallocation pools.  From our bug
    reporter:
    
       A reliable way for triggering this has multiple writers
       continuously write() to files when the filesystem is full, while
       small amounts of space are freed (e.g. by truncating a large file
       -1MiB at a time). In the local filesystem, this can be done by
       simply not checking the return code of write (0) and/or the error
       (ENOSPACE) that is set. Over NFS with an async mount, even clients
       with proper error checking will behave this way since the linux NFS
       client implementation will not propagate the server errors [the
       write syscalls immediately return success] until the file handle is
       closed. This leads to a situation where NFS clients send a
       continuous stream of WRITE rpcs which result in ERRNOSPACE -- but
       since the client isn't seeing this, the stream of writes continues
       at maximum network speed.
    
       When some space does appear, multiple writers will all attempt to
       claim it for their current write. For NFS, we may see dozens to
       hundreds of threads that do this.
    
       The real-world scenario of this is database backup tooling (in
       particular, github.com/mdkent/percona-xtrabackup) which may write
       large files (>1TiB) to NFS for safe keeping. Some temporary files
       are written, rewound, and read back -- all before closing the file
       handle (the temp file is actually unlinked, to trigger automatic
       deletion on close/crash.) An application like this operating on an
       async NFS mount will not see an error code until TiB have been
       written/read.
    
       The lockup was observed when running this database backup on large
       filesystems (64 TiB in this case) with a high number of block
       groups and no free space. Fragmentation is generally not a factor
       in this filesystem (~thousands of large files, mostly contiguous
       except for the parts written while the filesystem is at capacity.)
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: make directory inode spreading reflect flexbg size [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 8 11:21:26 2022 +0200

    ext4: make directory inode spreading reflect flexbg size
    
    commit 613c5a85898d1cd44e68f28d65eccf64a8ace9cf upstream.
    
    Currently the Orlov inode allocator searches for free inodes for a
    directory only in flex block groups with at most inodes_per_group/16
    more directory inodes than average per flex block group. However with
    growing size of flex block group this becomes unnecessarily strict.
    Scale allowed difference from average directory count per flex block
    group with flex block group size as we do with other metrics.
    
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220908092136.11770-3-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: make mballoc try target group first even with mb_optimize_scan [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 8 11:21:24 2022 +0200

    ext4: make mballoc try target group first even with mb_optimize_scan
    
    commit 4fca50d440cc5d4dc570ad5484cc0b70b381bc2a upstream.
    
    One of the side-effects of mb_optimize_scan was that the optimized
    functions to select next group to try were called even before we tried
    the goal group. As a result we no longer allocate files close to
    corresponding inodes as well as we don't try to expand currently
    allocated extent in the same group. This results in reaim regression
    with workfile.disk workload of upto 8% with many clients on my test
    machine:
    
                         baseline               mb_optimize_scan
    Hmean     disk-1       2114.16 (   0.00%)     2099.37 (  -0.70%)
    Hmean     disk-41     87794.43 (   0.00%)    83787.47 *  -4.56%*
    Hmean     disk-81    148170.73 (   0.00%)   135527.05 *  -8.53%*
    Hmean     disk-121   177506.11 (   0.00%)   166284.93 *  -6.32%*
    Hmean     disk-161   220951.51 (   0.00%)   207563.39 *  -6.06%*
    Hmean     disk-201   208722.74 (   0.00%)   203235.59 (  -2.63%)
    Hmean     disk-241   222051.60 (   0.00%)   217705.51 (  -1.96%)
    Hmean     disk-281   252244.17 (   0.00%)   241132.72 *  -4.41%*
    Hmean     disk-321   255844.84 (   0.00%)   245412.84 *  -4.08%*
    
    Also this is causing huge regression (time increased by a factor of 5 or
    so) when untarring archive with lots of small files on some eMMC storage
    cards.
    
    Fix the problem by making sure we try goal group first.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@kernel.org
    Reported-and-tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/all/20220727105123.ckwrhbilzrxqpt24@quack3/
    Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220908092136.11770-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: use buckets for cr 1 block scan instead of rbtree [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 8 11:21:28 2022 +0200

    ext4: use buckets for cr 1 block scan instead of rbtree
    
    commit 83e80a6e3543f37f74c8e48a5f305b054b65ce2a upstream.
    
    Using rbtree for sorting groups by average fragment size is relatively
    expensive (needs rbtree update on every block freeing or allocation) and
    leads to wide spreading of allocations because selection of block group
    is very sentitive both to changes in free space and amount of blocks
    allocated. Furthermore selecting group with the best matching average
    fragment size is not necessary anyway, even more so because the
    variability of fragment sizes within a group is likely large so average
    is not telling much. We just need a group with large enough average
    fragment size so that we have high probability of finding large enough
    free extent and we don't want average fragment size to be too big so
    that we are likely to find free extent only somewhat larger than what we
    need.
    
    So instead of maintaing rbtree of groups sorted by fragment size keep
    bins (lists) or groups where average fragment size is in the interval
    [2^i, 2^(i+1)). This structure requires less updates on block allocation
    / freeing, generally avoids chaotic spreading of allocations into block
    groups, and still is able to quickly (even faster that the rbtree)
    provide a block group which is likely to have a suitably sized free
    space extent.
    
    This patch reduces number of block groups used when untarring archive
    with medium sized files (size somewhat above 64k which is default
    mballoc limit for avoiding locality group preallocation) to about half
    and thus improves write speeds for eMMC flash significantly.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@kernel.org
    Reported-and-tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
    Link: https://lore.kernel.org/r/20220908092136.11770-5-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: use locality group preallocation for small closed files [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 8 11:21:27 2022 +0200

    ext4: use locality group preallocation for small closed files
    
    commit a9f2a2931d0e197ab28c6007966053fdababd53f upstream.
    
    Curently we don't use any preallocation when a file is already closed
    when allocating blocks (from writeback code when converting delayed
    allocation). However for small files, using locality group preallocation
    is actually desirable as that is not specific to a particular file.
    Rather it is a method to pack small files together to reduce
    fragmentation and for that the fact the file is closed is actually even
    stronger hint the file would benefit from packing. So change the logic
    to allow locality group preallocation in this case.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@kernel.org
    Reported-and-tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
    Link: https://lore.kernel.org/r/20220908092136.11770-4-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
firmware: arm_scmi: Fix the asynchronous reset requests [+ + +]
Author: Cristian Marussi <cristian.marussi@arm.com>
Date:   Wed Aug 17 18:27:30 2022 +0100

    firmware: arm_scmi: Fix the asynchronous reset requests
    
    [ Upstream commit b75c83d9b961fd3abf7310f8d36d5e6e9f573efb ]
    
    SCMI Reset protocol specification allows the asynchronous reset request
    only when an autonomous reset action is specified. Reset requests based
    on explicit assert/deassert of signals should not be served
    asynchronously.
    
    Current implementation will instead issue an asynchronous request in any
    case, as long as the reset domain had advertised to support asynchronous
    resets.
    
    Avoid requesting the asynchronous resets when the reset action is not
    of the autonomous type, even if the target reset domain does, in general,
    support the asynchronous requests.
    
    Link: https://lore.kernel.org/r/20220817172731.1185305-6-cristian.marussi@arm.com
    Fixes: 95a15d80aa0d ("firmware: arm_scmi: Add RESET protocol in SCMI v2.0")
    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: arm_scmi: Harden accesses to the reset domains [+ + +]
Author: Cristian Marussi <cristian.marussi@arm.com>
Date:   Wed Aug 17 18:27:29 2022 +0100

    firmware: arm_scmi: Harden accesses to the reset domains
    
    [ Upstream commit e9076ffbcaed5da6c182b144ef9f6e24554af268 ]
    
    Accessing reset domains descriptors by the index upon the SCMI drivers
    requests through the SCMI reset operations interface can potentially
    lead to out-of-bound violations if the SCMI driver misbehave.
    
    Add an internal consistency check before any such domains descriptors
    accesses.
    
    Link: https://lore.kernel.org/r/20220817172731.1185305-5-cristian.marussi@arm.com
    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: b75c83d9b961 ("firmware: arm_scmi: Fix the asynchronous reset requests")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fsdax: Fix infinite loop in dax_iomap_rw() [+ + +]
Author: Li Jinlin <lijinlin3@huawei.com>
Date:   Mon Jul 25 11:20:50 2022 +0800

    fsdax: Fix infinite loop in dax_iomap_rw()
    
    [ Upstream commit 17d9c15c9b9e7fb285f7ac5367dfb5f00ff575e3 ]
    
    I got an infinite loop and a WARNING report when executing a tail command
    in virtiofs.
    
      WARNING: CPU: 10 PID: 964 at fs/iomap/iter.c:34 iomap_iter+0x3a2/0x3d0
      Modules linked in:
      CPU: 10 PID: 964 Comm: tail Not tainted 5.19.0-rc7
      Call Trace:
      <TASK>
      dax_iomap_rw+0xea/0x620
      ? __this_cpu_preempt_check+0x13/0x20
      fuse_dax_read_iter+0x47/0x80
      fuse_file_read_iter+0xae/0xd0
      new_sync_read+0xfe/0x180
      ? 0xffffffff81000000
      vfs_read+0x14d/0x1a0
      ksys_read+0x6d/0xf0
      __x64_sys_read+0x1a/0x20
      do_syscall_64+0x3b/0x90
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The tail command will call read() with a count of 0. In this case,
    iomap_iter() will report this WARNING, and always return 1 which casuing
    the infinite loop in dax_iomap_rw().
    
    Fixing by checking count whether is 0 in dax_iomap_rw().
    
    Fixes: ca289e0b95af ("fsdax: switch dax_iomap_rw to use iomap_iter")
    Signed-off-by: Li Jinlin <lijinlin3@huawei.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Link: https://lore.kernel.org/r/20220725032050.3873372-1-lijinlin3@huawei.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: ixp4xx: Make irqchip immutable [+ + +]
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Sun Sep 11 21:07:51 2022 +0200

    gpio: ixp4xx: Make irqchip immutable
    
    [ Upstream commit 94e9bc73d85aa6ecfe249e985ff57abe0ab35f34 ]
    
    This turns the IXP4xx GPIO irqchip into an immutable
    irqchip, a bit different from the standard template due
    to being hierarchical.
    
    Tested on the IXP4xx which uses drivers/ata/pata_ixp4xx_cf.c
    for a rootfs on compact flash with IRQs from this GPIO
    block to the CF ATA controller.
    
    Cc: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: mockup: fix NULL pointer dereference when removing debugfs [+ + +]
Author: Bartosz Golaszewski <brgl@bgdev.pl>
Date:   Tue Sep 20 09:18:41 2022 +0200

    gpio: mockup: fix NULL pointer dereference when removing debugfs
    
    commit b7df41a6f79dfb18ba2203f8c5f0e9c0b9b57f68 upstream.
    
    We now remove the device's debugfs entries when unbinding the driver.
    This now causes a NULL-pointer dereference on module exit because the
    platform devices are unregistered *after* the global debugfs directory
    has been recursively removed. Fix it by unregistering the devices first.
    
    Fixes: 303e6da99429 ("gpio: mockup: remove gpio debugfs when remove device")
    Cc: Wei Yongjun <weiyongjun1@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: mockup: Fix potential resource leakage when register a chip [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Sep 20 16:30:31 2022 +0300

    gpio: mockup: Fix potential resource leakage when register a chip
    
    commit 02743c4091ccfb246f5cdbbe3f44b152d5d12933 upstream.
    
    If creation of software node fails, the locally allocated string
    array is left unfreed. Free it on error path.
    
    Fixes: 6fda593f3082 ("gpio: mockup: Convert to use software nodes")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: mt7621: Make the irqchip immutable [+ + +]
Author: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Date:   Tue Sep 13 18:46:38 2022 +0200

    gpio: mt7621: Make the irqchip immutable
    
    [ Upstream commit 09eed5a1ed3c752892663976837eb4244c2f1984 ]
    
    Commit 6c846d026d49 ("gpio: Don't fiddle with irqchips marked as
    immutable") added a warning to indicate if the gpiolib is altering the
    internals of irqchips.  Following this change the following warnings
    are now observed for the mt7621 driver:
    
    gpio gpiochip0: (1e000600.gpio-bank0): not an immutable chip, please consider fixing it!
    gpio gpiochip1: (1e000600.gpio-bank1): not an immutable chip, please consider fixing it!
    gpio gpiochip2: (1e000600.gpio-bank2): not an immutable chip, please consider fixing it!
    
    Fix this by making the irqchip in the mt7621 driver immutable.
    
    Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com>
    Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: tqmx86: fix uninitialized variable girq [+ + +]
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Mon Sep 19 11:12:49 2022 +0800

    gpio: tqmx86: fix uninitialized variable girq
    
    [ Upstream commit 21a9acc162457402c74c5c1e16471fda6eb090c0 ]
    
    The commit 924610607f19 ("gpio: tpmx86: Move PM device over to
    irq domain") adds a dereference of girq that may be uninitialized.
    
    Fix this by moving irq_domain_set_pm_device into if true branch
    as suggested by Marc Zyngier.
    
    Fixes: 924610607f19 ("gpio: tpmx86: Move PM device over to irq domain")
    Suggested-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpiolib: cdev: Set lineevent_state::irq after IRQ register successfully [+ + +]
Author: Meng Li <Meng.Li@windriver.com>
Date:   Wed Sep 21 11:20:20 2022 +0800

    gpiolib: cdev: Set lineevent_state::irq after IRQ register successfully
    
    commit 69bef19d6b9700e96285f4b4e28691cda3dcd0d1 upstream.
    
    When running gpio test on nxp-ls1028 platform with below command
    gpiomon --num-events=3 --rising-edge gpiochip1 25
    There will be a warning trace as below:
    Call trace:
    free_irq+0x204/0x360
    lineevent_free+0x64/0x70
    gpio_ioctl+0x598/0x6a0
    __arm64_sys_ioctl+0xb4/0x100
    invoke_syscall+0x5c/0x130
    ......
    el0t_64_sync+0x1a0/0x1a4
    The reason of this issue is that calling request_threaded_irq()
    function failed, and then lineevent_free() is invoked to release
    the resource. Since the lineevent_state::irq was already set, so
    the subsequent invocation of free_irq() would trigger the above
    warning call trace. To fix this issue, set the lineevent_state::irq
    after the IRQ register successfully.
    
    Fixes: 468242724143 ("gpiolib: cdev: refactor lineevent cleanup into lineevent_free")
    Cc: stable@vger.kernel.org
    Signed-off-by: Meng Li <Meng.Li@windriver.com>
    Reviewed-by: Kent Gibson <warthog618@gmail.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gve: Fix GFP flags when allocing pages [+ + +]
Author: Shailend Chand <shailend@google.com>
Date:   Mon Sep 12 17:09:01 2022 -0700

    gve: Fix GFP flags when allocing pages
    
    [ Upstream commit 8ccac4edc8da764389d4fc18b1df740892006557 ]
    
    Use GFP_ATOMIC when allocating pages out of the hotpath,
    continue to use GFP_KERNEL when allocating pages during setup.
    
    GFP_KERNEL will allow blocking which allows it to succeed
    more often in a low memory enviornment but in the hotpath we do
    not want to allow the allocation to block.
    
    Fixes: 9b8dd5e5ea48b ("gve: DQO: Add RX path")
    Signed-off-by: Shailend Chand <shailend@google.com>
    Signed-off-by: Jeroen de Borst <jeroendb@google.com>
    Link: https://lore.kernel.org/r/20220913000901.959546-1-jeroendb@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: imx: If pm_runtime_get_sync() returned 1 device access is possible [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon Sep 12 15:20:40 2022 +0200

    i2c: imx: If pm_runtime_get_sync() returned 1 device access is possible
    
    [ Upstream commit 085aacaa73163f4b8a89dec24ecb32cfacd34017 ]
    
    pm_runtime_get_sync() returning 1 also means the device is powered. So
    resetting the chip registers in .remove() is possible and should be
    done.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: d98bdd3a5b50 ("i2c: imx: Make sure to unregister adapter on remove()")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: mlxbf: Fix frequency calculation [+ + +]
Author: Asmaa Mnebhi <asmaa@nvidia.com>
Date:   Tue Sep 20 13:47:29 2022 -0400

    i2c: mlxbf: Fix frequency calculation
    
    [ Upstream commit 37f071ec327b04c83d47637c5e5c2199b39899ca ]
    
    The i2c-mlxbf.c driver is currently broken because there is a bug
    in the calculation of the frequency. core_f, core_r and core_od
    are components read from hardware registers and are used to
    compute the frequency used to compute different timing parameters.
    The shifting mechanism used to get core_f, core_r and core_od is
    wrong. Use FIELD_GET to mask and shift the bitfields properly.
    
    Fixes: b5b5b32081cd206b (i2c: mlxbf: I2C SMBus driver for Mellanox BlueField SoC)
    Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
    Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: mlxbf: incorrect base address passed during io write [+ + +]
Author: Asmaa Mnebhi <asmaa@nvidia.com>
Date:   Thu Sep 8 13:35:38 2022 -0400

    i2c: mlxbf: incorrect base address passed during io write
    
    [ Upstream commit 2a5be6d1340c0fefcee8a6489cff7fd88a0d5b85 ]
    
    Correct the base address used during io write.
    This bug had no impact over the overall functionality of the read and write
    transactions. MLXBF_I2C_CAUSE_OR_CLEAR=0x18 so writing to (smbus->io + 0x18)
    instead of (mst_cause->ioi + 0x18) actually writes to the sc_low_timeout
    register which just sets the timeout value before a read/write aborts.
    
    Fixes: b5b5b32081cd206b (i2c: mlxbf: I2C SMBus driver for Mellanox BlueField SoC)
    Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
    Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: mlxbf: prevent stack overflow in mlxbf_i2c_smbus_start_transaction() [+ + +]
Author: Asmaa Mnebhi <asmaa@nvidia.com>
Date:   Thu Sep 8 13:35:39 2022 -0400

    i2c: mlxbf: prevent stack overflow in mlxbf_i2c_smbus_start_transaction()
    
    [ Upstream commit de24aceb07d426b6f1c59f33889d6a964770547b ]
    
    memcpy() is called in a loop while 'operation->length' upper bound
    is not checked and 'data_idx' also increments.
    
    Fixes: b5b5b32081cd206b ("i2c: mlxbf: I2C SMBus driver for Mellanox BlueField SoC")
    Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
    Signed-off-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: mux: harden i2c_mux_alloc() against integer overflows [+ + +]
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Sep 15 14:30:58 2022 +0300

    i2c: mux: harden i2c_mux_alloc() against integer overflows
    
    [ Upstream commit b7af938f4379a884f15713319648a7653497a907 ]
    
    A couple years back we went through the kernel an automatically
    converted size calculations to use struct_size() instead.  The
    struct_size() calculation is protected against integer overflows.
    
    However it does not make sense to use the result from struct_size()
    for additional math operations as that would negate any safeness.
    
    Fixes: 1f3b69b6b939 ("i2c: mux: Use struct_size() in devm_kzalloc()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Peter Rosin <peda@axentia.se>
    Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i40e: Fix set max_tx_rate when it is lower than 1 Mbps [+ + +]
Author: Michal Jaron <michalx.jaron@intel.com>
Date:   Thu Sep 1 09:49:33 2022 +0200

    i40e: Fix set max_tx_rate when it is lower than 1 Mbps
    
    [ Upstream commit 198eb7e1b81d8ba676d0f4f120c092032ae69a8e ]
    
    While converting max_tx_rate from bytes to Mbps, this value was set to 0,
    if the original value was lower than 125000 bytes (1 Mbps). This would
    cause no transmission rate limiting to occur. This happened due to lack of
    check of max_tx_rate against the 1 Mbps value for max_tx_rate and the
    following division by 125000. Fix this issue by adding a helper
    i40e_bw_bytes_to_mbits() which sets max_tx_rate to minimum usable value of
    50 Mbps, if its value is less than 1 Mbps, otherwise do the required
    conversion by dividing by 125000.
    
    Fixes: 5ecae4120a6b ("i40e: Refactor VF BW rate limiting")
    Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
    Signed-off-by: Andrii Staikov <andrii.staikov@intel.com>
    Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i40e: Fix VF set max MTU size [+ + +]
Author: Michal Jaron <michalx.jaron@intel.com>
Date:   Tue Sep 13 15:38:36 2022 +0200

    i40e: Fix VF set max MTU size
    
    [ Upstream commit 372539def2824c43b6afe2403045b140f65c5acc ]
    
    Max MTU sent to VF is set to 0 during memory allocation. It cause
    that max MTU on VF is changed to IAVF_MAX_RXBUFFER and does not
    depend on data from HW.
    
    Set max_mtu field in virtchnl_vf_resource struct to inform
    VF in GET_VF_RESOURCES msg what size should be max frame.
    
    Fixes: dab86afdbbd1 ("i40e/i40evf: Change the way we limit the maximum frame size for Rx")
    Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iavf: Fix bad page state [+ + +]
Author: Norbert Zulinski <norbertx.zulinski@intel.com>
Date:   Wed Sep 14 15:39:13 2022 +0200

    iavf: Fix bad page state
    
    [ Upstream commit 66039eb9015eee4f7ff0c99b83c65c7ecb3c8190 ]
    
    Fix bad page state, free inappropriate page in handling dummy
    descriptor. iavf_build_skb now has to check not only if rx_buffer is
    NULL but also if size is zero, same thing in iavf_clean_rx_irq.
    Without this patch driver would free page that will be used
    by napi_build_skb.
    
    Fixes: a9f49e006030 ("iavf: Fix handling of dummy receive descriptors")
    Signed-off-by: Norbert Zulinski <norbertx.zulinski@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iavf: Fix cached head and tail value for iavf_get_tx_pending [+ + +]
Author: Brett Creeley <brett.creeley@intel.com>
Date:   Thu Sep 1 16:34:40 2022 +0200

    iavf: Fix cached head and tail value for iavf_get_tx_pending
    
    [ Upstream commit 809f23c0423a43266e47a7dc67e95b5cb4d1cbfc ]
    
    The underlying hardware may or may not allow reading of the head or tail
    registers and it really makes no difference if we use the software
    cached values. So, always used the software cached values.
    
    Fixes: 9c6c12595b73 ("i40e: Detection and recovery of TX queue hung logic moved to service_task from tx_timeout")
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Co-developed-by: Norbert Zulinski <norbertx.zulinski@intel.com>
    Signed-off-by: Norbert Zulinski <norbertx.zulinski@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iavf: Fix set max MTU size with port VLAN and jumbo frames [+ + +]
Author: Michal Jaron <michalx.jaron@intel.com>
Date:   Tue Sep 13 15:38:35 2022 +0200

    iavf: Fix set max MTU size with port VLAN and jumbo frames
    
    [ Upstream commit 399c98c4dc50b7eb7e9f24da7ffdda6f025676ef ]
    
    After setting port VLAN and MTU to 9000 on VF with ice driver there
    was an iavf error
    "PF returned error -5 (IAVF_ERR_PARAM) to our request 6".
    
    During queue configuration, VF's max packet size was set to
    IAVF_MAX_RXBUFFER but on ice max frame size was smaller by VLAN_HLEN
    due to making some space for port VLAN as VF is not aware whether it's
    in a port VLAN. This mismatch in sizes caused ice to reject queue
    configuration with ERR_PARAM error. Proper max_mtu is sent from ice PF
    to VF with GET_VF_RESOURCES msg but VF does not look at this.
    
    In iavf change max_frame from IAVF_MAX_RXBUFFER to max_mtu
    received from pf with GET_VF_RESOURCES msg to make vf's
    max_frame_size dependent from pf. Add check if received max_mtu is
    not in eligible range then set it to IAVF_MAX_RXBUFFER.
    
    Fixes: dab86afdbbd1 ("i40e/i40evf: Change the way we limit the maximum frame size for Rx")
    Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: config netdev tc before setting queues number [+ + +]
Author: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Date:   Mon Aug 8 11:58:54 2022 +0200

    ice: config netdev tc before setting queues number
    
    [ Upstream commit 122045ca770492660005c22379995506f13efea8 ]
    
    After lowering number of tx queues the warning appears:
    "Number of in use tx queues changed invalidating tc mappings. Priority
    traffic classification disabled!"
    Example command to reproduce:
    ethtool -L enp24s0f0 tx 36 rx 36
    
    Fix this by setting correct tc mapping before setting real number of
    queues on netdev.
    
    Fixes: 0754d65bd4be5 ("ice: Add infrastructure for mqprio support via ndo_setup_tc")
    Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Tested-by: Gurucharan <gurucharanx.g@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: Don't double unplug aux on peer initiated reset [+ + +]
Author: Dave Ertman <david.m.ertman@intel.com>
Date:   Tue Aug 9 10:24:23 2022 -0700

    ice: Don't double unplug aux on peer initiated reset
    
    [ Upstream commit 23c619190318376769ad7b61504c2ea0703fb783 ]
    
    In the IDC callback that is accessed when the aux drivers request a reset,
    the function to unplug the aux devices is called.  This function is also
    called in the ice_prepare_for_reset function. This double call is causing
    a "scheduling while atomic" BUG.
    
    [  662.676430] ice 0000:4c:00.0 rocep76s0: cqp opcode = 0x1 maj_err_code = 0xffff min_err_code = 0x8003
    
    [  662.676609] ice 0000:4c:00.0 rocep76s0: [Modify QP Cmd Error][op_code=8] status=-29 waiting=1 completion_err=1 maj=0xffff min=0x8003
    
    [  662.815006] ice 0000:4c:00.0 rocep76s0: ICE OICR event notification: oicr = 0x10000003
    
    [  662.815014] ice 0000:4c:00.0 rocep76s0: critical PE Error, GLPE_CRITERR=0x00011424
    
    [  662.815017] ice 0000:4c:00.0 rocep76s0: Requesting a reset
    
    [  662.815475] BUG: scheduling while atomic: swapper/37/0/0x00010002
    
    [  662.815475] BUG: scheduling while atomic: swapper/37/0/0x00010002
    [  662.815477] Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs rfkill 8021q garp mrp stp llc vfat fat rpcrdma intel_rapl_msr intel_rapl_common sunrpc i10nm_edac rdma_ucm nfit ib_srpt libnvdimm ib_isert iscsi_target_mod x86_pkg_temp_thermal intel_powerclamp coretemp target_core_mod snd_hda_intel ib_iser snd_intel_dspcfg libiscsi snd_intel_sdw_acpi scsi_transport_iscsi kvm_intel iTCO_wdt rdma_cm snd_hda_codec kvm iw_cm ipmi_ssif iTCO_vendor_support snd_hda_core irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hwdep snd_seq snd_seq_device rapl snd_pcm snd_timer isst_if_mbox_pci pcspkr isst_if_mmio irdma intel_uncore idxd acpi_ipmi joydev isst_if_common snd mei_me idxd_bus ipmi_si soundcore i2c_i801 mei ipmi_devintf i2c_smbus i2c_ismt ipmi_msghandler acpi_power_meter acpi_pad rv(OE) ib_uverbs ib_cm ib_core xfs libcrc32c ast i2c_algo_bit drm_vram_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm_ttm_helpe
     r ttm
    [  662.815546]  nvme nvme_core ice drm crc32c_intel i40e t10_pi wmi pinctrl_emmitsburg dm_mirror dm_region_hash dm_log dm_mod fuse
    [  662.815557] Preemption disabled at:
    [  662.815558] [<0000000000000000>] 0x0
    [  662.815563] CPU: 37 PID: 0 Comm: swapper/37 Kdump: loaded Tainted: G S         OE     5.17.1 #2
    [  662.815566] Hardware name: Intel Corporation D50DNP/D50DNP, BIOS SE5C6301.86B.6624.D18.2111021741 11/02/2021
    [  662.815568] Call Trace:
    [  662.815572]  <IRQ>
    [  662.815574]  dump_stack_lvl+0x33/0x42
    [  662.815581]  __schedule_bug.cold.147+0x7d/0x8a
    [  662.815588]  __schedule+0x798/0x990
    [  662.815595]  schedule+0x44/0xc0
    [  662.815597]  schedule_preempt_disabled+0x14/0x20
    [  662.815600]  __mutex_lock.isra.11+0x46c/0x490
    [  662.815603]  ? __ibdev_printk+0x76/0xc0 [ib_core]
    [  662.815633]  device_del+0x37/0x3d0
    [  662.815639]  ice_unplug_aux_dev+0x1a/0x40 [ice]
    [  662.815674]  ice_schedule_reset+0x3c/0xd0 [ice]
    [  662.815693]  irdma_iidc_event_handler.cold.7+0xb6/0xd3 [irdma]
    [  662.815712]  ? bitmap_find_next_zero_area_off+0x45/0xa0
    [  662.815719]  ice_send_event_to_aux+0x54/0x70 [ice]
    [  662.815741]  ice_misc_intr+0x21d/0x2d0 [ice]
    [  662.815756]  __handle_irq_event_percpu+0x4c/0x180
    [  662.815762]  handle_irq_event_percpu+0xf/0x40
    [  662.815764]  handle_irq_event+0x34/0x60
    [  662.815766]  handle_edge_irq+0x9a/0x1c0
    [  662.815770]  __common_interrupt+0x62/0x100
    [  662.815774]  common_interrupt+0xb4/0xd0
    [  662.815779]  </IRQ>
    [  662.815780]  <TASK>
    [  662.815780]  asm_common_interrupt+0x1e/0x40
    [  662.815785] RIP: 0010:cpuidle_enter_state+0xd6/0x380
    [  662.815789] Code: 49 89 c4 0f 1f 44 00 00 31 ff e8 65 d7 95 ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 64 02 00 00 31 ff e8 ae c5 9c ff fb 45 85 f6 <0f> 88 12 01 00 00 49 63 d6 4c 2b 24 24 48 8d 04 52 48 8d 04 82 49
    [  662.815791] RSP: 0018:ff2c2c4f18edbe80 EFLAGS: 00000202
    [  662.815793] RAX: ff280805df140000 RBX: 0000000000000002 RCX: 000000000000001f
    [  662.815795] RDX: 0000009a52da2d08 RSI: ffffffff93f8240b RDI: ffffffff93f53ee7
    [  662.815796] RBP: ff5e2bd11ff41928 R08: 0000000000000000 R09: 000000000002f8c0
    [  662.815797] R10: 0000010c3f18e2cf R11: 000000000000000f R12: 0000009a52da2d08
    [  662.815798] R13: ffffffff94ad7e20 R14: 0000000000000002 R15: 0000000000000000
    [  662.815801]  cpuidle_enter+0x29/0x40
    [  662.815803]  do_idle+0x261/0x2b0
    [  662.815807]  cpu_startup_entry+0x19/0x20
    [  662.815809]  start_secondary+0x114/0x150
    [  662.815813]  secondary_startup_64_no_verify+0xd5/0xdb
    [  662.815818]  </TASK>
    [  662.815846] bad: scheduling from the idle thread!
    [  662.815849] CPU: 37 PID: 0 Comm: swapper/37 Kdump: loaded Tainted: G S      W  OE     5.17.1 #2
    [  662.815852] Hardware name: Intel Corporation D50DNP/D50DNP, BIOS SE5C6301.86B.6624.D18.2111021741 11/02/2021
    [  662.815853] Call Trace:
    [  662.815855]  <IRQ>
    [  662.815856]  dump_stack_lvl+0x33/0x42
    [  662.815860]  dequeue_task_idle+0x20/0x30
    [  662.815863]  __schedule+0x1c3/0x990
    [  662.815868]  schedule+0x44/0xc0
    [  662.815871]  schedule_preempt_disabled+0x14/0x20
    [  662.815873]  __mutex_lock.isra.11+0x3a8/0x490
    [  662.815876]  ? __ibdev_printk+0x76/0xc0 [ib_core]
    [  662.815904]  device_del+0x37/0x3d0
    [  662.815909]  ice_unplug_aux_dev+0x1a/0x40 [ice]
    [  662.815937]  ice_schedule_reset+0x3c/0xd0 [ice]
    [  662.815961]  irdma_iidc_event_handler.cold.7+0xb6/0xd3 [irdma]
    [  662.815979]  ? bitmap_find_next_zero_area_off+0x45/0xa0
    [  662.815985]  ice_send_event_to_aux+0x54/0x70 [ice]
    [  662.816011]  ice_misc_intr+0x21d/0x2d0 [ice]
    [  662.816033]  __handle_irq_event_percpu+0x4c/0x180
    [  662.816037]  handle_irq_event_percpu+0xf/0x40
    [  662.816039]  handle_irq_event+0x34/0x60
    [  662.816042]  handle_edge_irq+0x9a/0x1c0
    [  662.816045]  __common_interrupt+0x62/0x100
    [  662.816048]  common_interrupt+0xb4/0xd0
    [  662.816052]  </IRQ>
    [  662.816053]  <TASK>
    [  662.816054]  asm_common_interrupt+0x1e/0x40
    [  662.816057] RIP: 0010:cpuidle_enter_state+0xd6/0x380
    [  662.816060] Code: 49 89 c4 0f 1f 44 00 00 31 ff e8 65 d7 95 ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 64 02 00 00 31 ff e8 ae c5 9c ff fb 45 85 f6 <0f> 88 12 01 00 00 49 63 d6 4c 2b 24 24 48 8d 04 52 48 8d 04 82 49
    [  662.816063] RSP: 0018:ff2c2c4f18edbe80 EFLAGS: 00000202
    [  662.816065] RAX: ff280805df140000 RBX: 0000000000000002 RCX: 000000000000001f
    [  662.816067] RDX: 0000009a52da2d08 RSI: ffffffff93f8240b RDI: ffffffff93f53ee7
    [  662.816068] RBP: ff5e2bd11ff41928 R08: 0000000000000000 R09: 000000000002f8c0
    [  662.816070] R10: 0000010c3f18e2cf R11: 000000000000000f R12: 0000009a52da2d08
    [  662.816071] R13: ffffffff94ad7e20 R14: 0000000000000002 R15: 0000000000000000
    [  662.816075]  cpuidle_enter+0x29/0x40
    [  662.816077]  do_idle+0x261/0x2b0
    [  662.816080]  cpu_startup_entry+0x19/0x20
    [  662.816083]  start_secondary+0x114/0x150
    [  662.816087]  secondary_startup_64_no_verify+0xd5/0xdb
    [  662.816091]  </TASK>
    [  662.816169] bad: scheduling from the idle thread!
    
    The correct place to unplug the aux devices for a reset is in the
    prepare_for_reset function, as this is a common place for all reset flows.
    It also has built in protection from being called twice in a single reset
    instance before the aux devices are replugged.
    
    Fixes: f9f5301e7e2d4 ("ice: Register auxiliary device to provide RDMA")
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Tested-by: Helena Anna Dubel <helena.anna.dubel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: Fix crash by keep old cfg when update TCs more than queues [+ + +]
Author: Ding Hui <dinghui@sangfor.com.cn>
Date:   Wed Aug 17 18:53:18 2022 +0800

    ice: Fix crash by keep old cfg when update TCs more than queues
    
    [ Upstream commit a509702cac95a8b450228a037c8542f57e538e5b ]
    
    There are problems if allocated queues less than Traffic Classes.
    
    Commit a632b2a4c920 ("ice: ethtool: Prohibit improper channel config
    for DCB") already disallow setting less queues than TCs.
    
    Another case is if we first set less queues, and later update more TCs
    config due to LLDP, ice_vsi_cfg_tc() will failed but left dirty
    num_txq/rxq and tc_cfg in vsi, that will cause invalid pointer access.
    
    [   95.968089] ice 0000:3b:00.1: More TCs defined than queues/rings allocated.
    [   95.968092] ice 0000:3b:00.1: Trying to use more Rx queues (8), than were allocated (1)!
    [   95.968093] ice 0000:3b:00.1: Failed to config TC for VSI index: 0
    [   95.969621] general protection fault: 0000 [#1] SMP NOPTI
    [   95.969705] CPU: 1 PID: 58405 Comm: lldpad Kdump: loaded Tainted: G     U  W  O     --------- -t - 4.18.0 #1
    [   95.969867] Hardware name: O.E.M/BC11SPSCB10, BIOS 8.23 12/30/2021
    [   95.969992] RIP: 0010:devm_kmalloc+0xa/0x60
    [   95.970052] Code: 5c ff ff ff 31 c0 5b 5d 41 5c c3 b8 f4 ff ff ff eb f4 0f 1f 40 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 89 d1 <8b> 97 60 02 00 00 48 8d 7e 18 48 39 f7 72 3f 55 89 ce 53 48 8b 4c
    [   95.970344] RSP: 0018:ffffc9003f553888 EFLAGS: 00010206
    [   95.970425] RAX: dead000000000200 RBX: ffffea003c425b00 RCX: 00000000006080c0
    [   95.970536] RDX: 00000000006080c0 RSI: 0000000000000200 RDI: dead000000000200
    [   95.970648] RBP: dead000000000200 R08: 00000000000463c0 R09: ffff888ffa900000
    [   95.970760] R10: 0000000000000000 R11: 0000000000000002 R12: ffff888ff6b40100
    [   95.970870] R13: ffff888ff6a55018 R14: 0000000000000000 R15: ffff888ff6a55460
    [   95.970981] FS:  00007f51b7d24700(0000) GS:ffff88903ee80000(0000) knlGS:0000000000000000
    [   95.971108] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   95.971197] CR2: 00007fac5410d710 CR3: 0000000f2c1de002 CR4: 00000000007606e0
    [   95.971309] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   95.971419] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   95.971530] PKRU: 55555554
    [   95.971573] Call Trace:
    [   95.971622]  ice_setup_rx_ring+0x39/0x110 [ice]
    [   95.971695]  ice_vsi_setup_rx_rings+0x54/0x90 [ice]
    [   95.971774]  ice_vsi_open+0x25/0x120 [ice]
    [   95.971843]  ice_open_internal+0xb8/0x1f0 [ice]
    [   95.971919]  ice_ena_vsi+0x4f/0xd0 [ice]
    [   95.971987]  ice_dcb_ena_dis_vsi.constprop.5+0x29/0x90 [ice]
    [   95.972082]  ice_pf_dcb_cfg+0x29a/0x380 [ice]
    [   95.972154]  ice_dcbnl_setets+0x174/0x1b0 [ice]
    [   95.972220]  dcbnl_ieee_set+0x89/0x230
    [   95.972279]  ? dcbnl_ieee_del+0x150/0x150
    [   95.972341]  dcb_doit+0x124/0x1b0
    [   95.972392]  rtnetlink_rcv_msg+0x243/0x2f0
    [   95.972457]  ? dcb_doit+0x14d/0x1b0
    [   95.972510]  ? __kmalloc_node_track_caller+0x1d3/0x280
    [   95.972591]  ? rtnl_calcit.isra.31+0x100/0x100
    [   95.972661]  netlink_rcv_skb+0xcf/0xf0
    [   95.972720]  netlink_unicast+0x16d/0x220
    [   95.972781]  netlink_sendmsg+0x2ba/0x3a0
    [   95.975891]  sock_sendmsg+0x4c/0x50
    [   95.979032]  ___sys_sendmsg+0x2e4/0x300
    [   95.982147]  ? kmem_cache_alloc+0x13e/0x190
    [   95.985242]  ? __wake_up_common_lock+0x79/0x90
    [   95.988338]  ? __check_object_size+0xac/0x1b0
    [   95.991440]  ? _copy_to_user+0x22/0x30
    [   95.994539]  ? move_addr_to_user+0xbb/0xd0
    [   95.997619]  ? __sys_sendmsg+0x53/0x80
    [   96.000664]  __sys_sendmsg+0x53/0x80
    [   96.003747]  do_syscall_64+0x5b/0x1d0
    [   96.006862]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    
    Only update num_txq/rxq when passed check, and restore tc_cfg if setup
    queue map failed.
    
    Fixes: a632b2a4c920 ("ice: ethtool: Prohibit improper channel config for DCB")
    Signed-off-by: Ding Hui <dinghui@sangfor.com.cn>
    Reviewed-by: Anatolii Gerasymenko <anatolii.gerasymenko@intel.com>
    Tested-by: Arpana Arland <arpanax.arland@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 ice_xdp_xmit() when XDP TX queue number is not sufficient [+ + +]
Author: Larysa Zaremba <larysa.zaremba@intel.com>
Date:   Mon Sep 19 15:43:46 2022 +0200

    ice: Fix ice_xdp_xmit() when XDP TX queue number is not sufficient
    
    [ Upstream commit 114f398d48c571bb628187a7b2dd42695156781f ]
    
    The original patch added the static branch to handle the situation,
    when assigning an XDP TX queue to every CPU is not possible,
    so they have to be shared.
    
    However, in the XDP transmit handler ice_xdp_xmit(), an error was
    returned in such cases even before static condition was checked,
    thus making queue sharing still impossible.
    
    Fixes: 22bf877e528f ("ice: introduce XDP_TX fallback path")
    Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com>
    Link: https://lore.kernel.org/r/20220919134346.25030-1-larysa.zaremba@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: Fix interface being down after reset with link-down-on-close flag on [+ + +]
Author: Mateusz Palczewski <mateusz.palczewski@intel.com>
Date:   Fri Aug 26 10:31:23 2022 +0200

    ice: Fix interface being down after reset with link-down-on-close flag on
    
    [ Upstream commit 8ac7132704f3fbd2095abb9459e5303ce8c9e559 ]
    
    When performing a reset on ice driver with link-down-on-close flag on
    interface would always stay down. Fix this by moving a check of this
    flag to ice_stop() that is called only when user wants to bring
    interface down.
    
    Fixes: ab4ab73fc1ec ("ice: Add ethtool private flag to make forcing link down optional")
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Petr Oros <poros@redhat.com>
    Tested-by: Gurucharan <gurucharanx.g@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>

 
io_uring: ensure that cached task references are always put on exit [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Fri Sep 23 13:44:56 2022 -0600

    io_uring: ensure that cached task references are always put on exit
    
    commit e775f93f2ab976a2cdb4a7b53063cbe890904f73 upstream.
    
    io_uring caches task references to avoid doing atomics for each of them
    per request. If a request is put from the same task that allocated it,
    then we can maintain a per-ctx cache of them. This obviously relies
    on io_uring always pruning caches in a reliable way, and there's
    currently a case off io_uring fd release where we can miss that.
    
    One example is a ring setup with IOPOLL, which relies on the task
    polling for completions, which will free them. However, if such a task
    submits a request and then exits or closes the ring without reaping
    the completion, then ring release will reap and put. If release happens
    from that very same task, the completed request task refs will get
    put back into the cache pool. This is problematic, as we're now beyond
    the point of pruning caches.
    
    Manually drop these caches after doing an IOPOLL reap. This releases
    references from the current task, which is enough. If another task
    happens to be doing the release, then the caching will not be
    triggered and there's no issue.
    
    Cc: stable@vger.kernel.org
    Fixes: e98e49b2bbf7 ("io_uring: extend task put optimisations")
    Reported-by: Homin Rhee <hominlab@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/vt-d: Check correct capability for sagaw determination [+ + +]
Author: Yi Liu <yi.l.liu@intel.com>
Date:   Wed Sep 21 10:40:54 2022 +0800

    iommu/vt-d: Check correct capability for sagaw determination
    
    commit 154897807050c1161cb2660e502fc0470d46b986 upstream.
    
    Check 5-level paging capability for 57 bits address width instead of
    checking 1GB large page capability.
    
    Fixes: 53fc7ad6edf2 ("iommu/vt-d: Correctly calculate sagaw value of IOMMU")
    Cc: stable@vger.kernel.org
    Reported-by: Raghunathan Srinivasan <raghunathan.srinivasan@intel.com>
    Signed-off-by: Yi Liu <yi.l.liu@intel.com>
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Reviewed-by: Raghunathan Srinivasan <raghunathan.srinivasan@intel.com>
    Link: https://lore.kernel.org/r/20220916071212.2223869-2-yi.l.liu@intel.com
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6: Fix crash when IPv6 is administratively disabled [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Fri Sep 16 11:48:21 2022 +0300

    ipv6: Fix crash when IPv6 is administratively disabled
    
    [ Upstream commit 76dd07281338da6951fdab3432ced843fa87839c ]
    
    The global 'raw_v6_hashinfo' variable can be accessed even when IPv6 is
    administratively disabled via the 'ipv6.disable=1' kernel command line
    option, leading to a crash [1].
    
    Fix by restoring the original behavior and always initializing the
    variable, regardless of IPv6 support being administratively disabled or
    not.
    
    [1]
     BUG: unable to handle page fault for address: ffffffffffffffc8
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 173e18067 P4D 173e18067 PUD 173e1a067 PMD 0
     Oops: 0000 [#1] PREEMPT SMP KASAN
     CPU: 3 PID: 271 Comm: ss Not tainted 6.0.0-rc4-custom-00136-g0727a9a5fbc1 #1396
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.0-1.fc36 04/01/2014
     RIP: 0010:raw_diag_dump+0x310/0x7f0
     [...]
     Call Trace:
      <TASK>
      __inet_diag_dump+0x10f/0x2e0
      netlink_dump+0x575/0xfd0
      __netlink_dump_start+0x67b/0x940
      inet_diag_handler_cmd+0x273/0x2d0
      sock_diag_rcv_msg+0x317/0x440
      netlink_rcv_skb+0x15e/0x430
      sock_diag_rcv+0x2b/0x40
      netlink_unicast+0x53b/0x800
      netlink_sendmsg+0x945/0xe60
      ____sys_sendmsg+0x747/0x960
      ___sys_sendmsg+0x13a/0x1e0
      __sys_sendmsg+0x118/0x1e0
      do_syscall_64+0x34/0x80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Fixes: 0daf07e52709 ("raw: convert raw sockets to RCU")
    Reported-by: Roberto Ricci <rroberto2r@gmail.com>
    Tested-by: Roberto Ricci <rroberto2r@gmail.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220916084821.229287-1-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipvlan: Fix out-of-bound bugs caused by unset skb->mac_header [+ + +]
Author: Lu Wei <luwei32@huawei.com>
Date:   Wed Sep 7 18:12:04 2022 +0800

    ipvlan: Fix out-of-bound bugs caused by unset skb->mac_header
    
    [ Upstream commit 81225b2ea161af48e093f58e8dfee6d705b16af4 ]
    
    If an AF_PACKET socket is used to send packets through ipvlan and the
    default xmit function of the AF_PACKET socket is changed from
    dev_queue_xmit() to packet_direct_xmit() via setsockopt() with the option
    name of PACKET_QDISC_BYPASS, the skb->mac_header may not be reset and
    remains as the initial value of 65535, this may trigger slab-out-of-bounds
    bugs as following:
    
    =================================================================
    UG: KASAN: slab-out-of-bounds in ipvlan_xmit_mode_l2+0xdb/0x330 [ipvlan]
    PU: 2 PID: 1768 Comm: raw_send Kdump: loaded Not tainted 6.0.0-rc4+ #6
    ardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33
    all Trace:
    print_address_description.constprop.0+0x1d/0x160
    print_report.cold+0x4f/0x112
    kasan_report+0xa3/0x130
    ipvlan_xmit_mode_l2+0xdb/0x330 [ipvlan]
    ipvlan_start_xmit+0x29/0xa0 [ipvlan]
    __dev_direct_xmit+0x2e2/0x380
    packet_direct_xmit+0x22/0x60
    packet_snd+0x7c9/0xc40
    sock_sendmsg+0x9a/0xa0
    __sys_sendto+0x18a/0x230
    __x64_sys_sendto+0x74/0x90
    do_syscall_64+0x3b/0x90
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The root cause is:
      1. packet_snd() only reset skb->mac_header when sock->type is SOCK_RAW
         and skb->protocol is not specified as in packet_parse_headers()
    
      2. packet_direct_xmit() doesn't reset skb->mac_header as dev_queue_xmit()
    
    In this case, skb->mac_header is 65535 when ipvlan_xmit_mode_l2() is
    called. So when ipvlan_xmit_mode_l2() gets mac header with eth_hdr() which
    use "skb->head + skb->mac_header", out-of-bound access occurs.
    
    This patch replaces eth_hdr() with skb_eth_hdr() in ipvlan_xmit_mode_l2()
    and reset mac header in multicast to solve this out-of-bound bug.
    
    Fixes: 2ad7bf363841 ("ipvlan: Initial check-in of the IPVLAN driver.")
    Signed-off-by: Lu Wei <luwei32@huawei.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kasan: call kasan_malloc() from __kmalloc_*track_caller() [+ + +]
Author: Peter Collingbourne <pcc@google.com>
Date:   Tue Sep 13 19:00:01 2022 -0700

    kasan: call kasan_malloc() from __kmalloc_*track_caller()
    
    commit 5373b8a09d6e037ee0587cb5d9fe4cc09077deeb upstream.
    
    We were failing to call kasan_malloc() from __kmalloc_*track_caller()
    which was causing us to sometimes fail to produce KASAN error reports
    for allocations made using e.g. devm_kcalloc(), as the KASAN poison was
    not being initialized. Fix it.
    
    Signed-off-by: Peter Collingbourne <pcc@google.com>
    Cc: <stable@vger.kernel.org> # 5.15
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES [+ + +]
Author: Dr. David Alan Gilbert <dgilbert@redhat.com>
Date:   Wed Aug 24 03:30:56 2022 +0000

    KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES
    
    commit a1020a25e69755a8a1a37735d674b91d6f02939f upstream.
    
    Allow FP and SSE state to be saved and restored via KVM_{G,SET}_XSAVE on
    XSAVE-capable hosts even if their bits are not exposed to the guest via
    XCR0.
    
    Failing to allow FP+SSE first showed up as a QEMU live migration failure,
    where migrating a VM from a pre-XSAVE host, e.g. Nehalem, to an XSAVE
    host failed due to KVM rejecting KVM_SET_XSAVE.  However, the bug also
    causes problems even when migrating between XSAVE-capable hosts as
    KVM_GET_SAVE won't set any bits in user_xfeatures if XSAVE isn't exposed
    to the guest, i.e. KVM will fail to actually migrate FP+SSE.
    
    Because KVM_{G,S}ET_XSAVE are designed to allowing migrating between
    hosts with and without XSAVE, KVM_GET_XSAVE on a non-XSAVE (by way of
    fpu_copy_guest_fpstate_to_uabi()) always sets the FP+SSE bits in the
    header so that KVM_SET_XSAVE will work even if the new host supports
    XSAVE.
    
    Fixes: ad856280ddea ("x86/kvm/fpu: Limit guest user_xfeatures to supported bits of XCR0")
    bz: https://bugzilla.redhat.com/show_bug.cgi?id=2079311
    Cc: stable@vger.kernel.org
    Cc: Leonardo Bras <leobras@redhat.com>
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    [sean: add comment, massage changelog]
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220824033057.3576315-3-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Aug 24 03:30:57 2022 +0000

    KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled
    
    commit 50b2d49bafa16e6311ab2da82f5aafc5f9ada99b upstream.
    
    Inject #UD when emulating XSETBV if CR4.OSXSAVE is not set.  This also
    covers the "XSAVE not supported" check, as setting CR4.OSXSAVE=1 #GPs if
    XSAVE is not supported (and userspace gets to keep the pieces if it
    forces incoherent vCPU state).
    
    Add a comment to kvm_emulate_xsetbv() to call out that the CPU checks
    CR4.OSXSAVE before checking for intercepts.  AMD'S APM implies that #UD
    has priority (says that intercepts are checked before #GP exceptions),
    while Intel's SDM says nothing about interception priority.  However,
    testing on hardware shows that both AMD and Intel CPUs prioritize the #UD
    over interception.
    
    Fixes: 02d4160fbd76 ("x86: KVM: add xsetbv to the emulator")
    Cc: stable@vger.kernel.org
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220824033057.3576315-4-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: x86: Reinstate kvm_vcpu_arch.guest_supported_xcr0 [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Aug 24 03:30:55 2022 +0000

    KVM: x86: Reinstate kvm_vcpu_arch.guest_supported_xcr0
    
    commit ee519b3a2ae3027c341bce829ee8c51f4f494f5b upstream.
    
    Reinstate the per-vCPU guest_supported_xcr0 by partially reverting
    commit 988896bb6182; the implicit assessment that guest_supported_xcr0 is
    always the same as guest_fpu.fpstate->user_xfeatures was incorrect.
    
    kvm_vcpu_after_set_cpuid() isn't the only place that sets user_xfeatures,
    as user_xfeatures is set to fpu_user_cfg.default_features when guest_fpu
    is allocated via fpu_alloc_guest_fpstate() => __fpstate_reset().
    guest_supported_xcr0 on the other hand is zero-allocated.  If userspace
    never invokes KVM_SET_CPUID2, supported XCR0 will be '0', whereas the
    allowed user XFEATURES will be non-zero.
    
    Practically speaking, the edge case likely doesn't matter as no sane
    userspace will live migrate a VM without ever doing KVM_SET_CPUID2. The
    primary motivation is to prepare for KVM intentionally and explicitly
    setting bits in user_xfeatures that are not set in guest_supported_xcr0.
    
    Because KVM_{G,S}ET_XSAVE can be used to svae/restore FP+SSE state even
    if the host doesn't support XSAVE, KVM needs to set the FP+SSE bits in
    user_xfeatures even if they're not allowed in XCR0, e.g. because XCR0
    isn't exposed to the guest.  At that point, the simplest fix is to track
    the two things separately (allowed save/restore vs. allowed XCR0).
    
    Fixes: 988896bb6182 ("x86/kvm/fpu: Remove kvm_vcpu_arch.guest_supported_xcr0")
    Cc: stable@vger.kernel.org
    Cc: Leonardo Bras <leobras@redhat.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220824033057.3576315-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
libperf evlist: Fix polling of system-wide events [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Sep 15 15:26:12 2022 +0300

    libperf evlist: Fix polling of system-wide events
    
    commit 6cc447964555df209c590756bd804d3bb9ce1fe0 upstream.
    
    Originally, (refer commit f90d194a867a5a1d ("perf evlist: Do not poll
    events that use the system_wide flag") there wasn't much reason to poll
    system-wide events because:
    
     1. The mmaps get "merged" via set-output anyway (the per-cpu case)
     2. perf reads all mmaps when any event is woken
     3. system-wide mmaps do not fill up as fast as the mmaps for user
        selected events
    
    But there was 1 reason not to poll which was that it prevented correct
    termination due to POLLHUP on all user selected events.  That issue is
    now easily resolved by using fdarray_flag__nonfilterable.
    
    With the advent of commit ae4f8ae16a078964 ("libperf evlist: Allow
    mixing per-thread and per-cpu mmaps"), system-wide mmaps can be used
    also in the per-thread case where reason 1 does not apply.
    
    Fix the omission of system-wide events from polling by using the
    fdarray_flag__nonfilterable flag.
    
    Example:
    
     Before:
    
        $ perf record --no-bpf-event -vvv -e intel_pt// --per-thread uname 2>err.txt
        Linux
        $ grep 'sys_perf_event_open.*=\|pollfd' err.txt
        sys_perf_event_open: pid 155076  cpu -1  group_fd -1  flags 0x8 = 5
        sys_perf_event_open: pid 155076  cpu -1  group_fd -1  flags 0x8 = 6
        sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
        sys_perf_event_open: pid -1  cpu 1  group_fd -1  flags 0x8 = 9
        sys_perf_event_open: pid -1  cpu 2  group_fd -1  flags 0x8 = 10
        sys_perf_event_open: pid -1  cpu 3  group_fd -1  flags 0x8 = 11
        sys_perf_event_open: pid -1  cpu 4  group_fd -1  flags 0x8 = 12
        sys_perf_event_open: pid -1  cpu 5  group_fd -1  flags 0x8 = 13
        sys_perf_event_open: pid -1  cpu 6  group_fd -1  flags 0x8 = 14
        sys_perf_event_open: pid -1  cpu 7  group_fd -1  flags 0x8 = 15
        thread_data[0x55fb43c29e80]: pollfd[0] <- event_fd=5
        thread_data[0x55fb43c29e80]: pollfd[1] <- event_fd=6
        thread_data[0x55fb43c29e80]: pollfd[2] <- non_perf_event fd=4
    
     After:
    
        $ perf record --no-bpf-event -vvv -e intel_pt// --per-thread uname 2>err.txt
        Linux
        $ grep 'sys_perf_event_open.*=\|pollfd' err.txt
        sys_perf_event_open: pid 156316  cpu -1  group_fd -1  flags 0x8 = 5
        sys_perf_event_open: pid 156316  cpu -1  group_fd -1  flags 0x8 = 6
        sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
        sys_perf_event_open: pid -1  cpu 1  group_fd -1  flags 0x8 = 9
        sys_perf_event_open: pid -1  cpu 2  group_fd -1  flags 0x8 = 10
        sys_perf_event_open: pid -1  cpu 3  group_fd -1  flags 0x8 = 11
        sys_perf_event_open: pid -1  cpu 4  group_fd -1  flags 0x8 = 12
        sys_perf_event_open: pid -1  cpu 5  group_fd -1  flags 0x8 = 13
        sys_perf_event_open: pid -1  cpu 6  group_fd -1  flags 0x8 = 14
        sys_perf_event_open: pid -1  cpu 7  group_fd -1  flags 0x8 = 15
        thread_data[0x55cc19e58e80]: pollfd[0] <- event_fd=5
        thread_data[0x55cc19e58e80]: pollfd[1] <- event_fd=6
        thread_data[0x55cc19e58e80]: pollfd[2] <- event_fd=7
        thread_data[0x55cc19e58e80]: pollfd[3] <- event_fd=9
        thread_data[0x55cc19e58e80]: pollfd[4] <- event_fd=10
        thread_data[0x55cc19e58e80]: pollfd[5] <- event_fd=11
        thread_data[0x55cc19e58e80]: pollfd[6] <- event_fd=12
        thread_data[0x55cc19e58e80]: pollfd[7] <- event_fd=13
        thread_data[0x55cc19e58e80]: pollfd[8] <- event_fd=14
        thread_data[0x55cc19e58e80]: pollfd[9] <- event_fd=15
        thread_data[0x55cc19e58e80]: pollfd[10] <- non_perf_event fd=4
    
    Fixes: ae4f8ae16a078964 ("libperf evlist: Allow mixing per-thread and per-cpu mmaps")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220915122612.81738-3-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.19.12 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 28 11:32:29 2022 +0200

    Linux 5.19.12
    
    Link: https://lore.kernel.org/r/20220926100806.522017616@linuxfoundation.org
    Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Fenil Jain <fkjainco@gmail.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Zan Aziz <zanaziz313@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Makefile.debug: re-enable debug info for .S files [+ + +]
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Mon Sep 19 10:45:47 2022 -0700

    Makefile.debug: re-enable debug info for .S files
    
    [ Upstream commit 32ef9e5054ec0321b9336058c58ec749e9c6b0fe ]
    
    Alexey reported that the fraction of unknown filename instances in
    kallsyms grew from ~0.3% to ~10% recently; Bill and Greg tracked it down
    to assembler defined symbols, which regressed as a result of:
    
    commit b8a9092330da ("Kbuild: do not emit debug info for assembly with LLVM_IAS=1")
    
    In that commit, I allude to restoring debug info for assembler defined
    symbols in a follow up patch, but it seems I forgot to do so in
    
    commit a66049e2cf0e ("Kbuild: make DWARF version a choice")
    
    Link: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=31bf18645d98b4d3d7357353be840e320649a67d
    Fixes: b8a9092330da ("Kbuild: do not emit debug info for assembly with LLVM_IAS=1")
    Reported-by: Alexey Alexandrov <aalexand@google.com>
    Reported-by: Bill Wendling <morbo@google.com>
    Reported-by: Greg Thelen <gthelen@google.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Suggested-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Makefile.debug: set -g unconditional on CONFIG_DEBUG_INFO_SPLIT [+ + +]
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Mon Sep 19 10:30:30 2022 -0700

    Makefile.debug: set -g unconditional on CONFIG_DEBUG_INFO_SPLIT
    
    [ Upstream commit 61f2b7c7497ba96cdde5bbaeb9e07f4c48f41f97 ]
    
    Dmitrii, Fangrui, and Mashahiro note:
    
      Before GCC 11 and Clang 12 -gsplit-dwarf implicitly uses -g2.
    
    Fix CONFIG_DEBUG_INFO_SPLIT for gcc-11+ & clang-12+ which now need -g
    specified in order for -gsplit-dwarf to work at all.
    
    -gsplit-dwarf has been mutually exclusive with -g since support for
    CONFIG_DEBUG_INFO_SPLIT was introduced in
    commit 866ced950bcd ("kbuild: Support split debug info v4")
    I don't think it ever needed to be.
    
    Link: https://lore.kernel.org/lkml/20220815013317.26121-1-dmitrii.bundin.a@gmail.com/
    Link: https://lore.kernel.org/lkml/CAK7LNARPAmsJD5XKAw7m_X2g7Fi-CAAsWDQiP7+ANBjkg7R7ng@mail.gmail.com/
    Link: https://reviews.llvm.org/D80391
    Cc: Andi Kleen <ak@linux.intel.com>
    Reported-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com>
    Reported-by: Fangrui Song <maskray@google.com>
    Reported-by: Masahiro Yamada <masahiroy@kernel.org>
    Suggested-by: Dmitrii Bundin <dmitrii.bundin.a@gmail.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Stable-dep-of: 32ef9e5054ec ("Makefile.debug: re-enable debug info for .S files")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: flexcop-usb: fix endpoint type check [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Aug 22 17:10:27 2022 +0200

    media: flexcop-usb: fix endpoint type check
    
    commit 763679f0eeff0185fc431498849bbc1c24460875 upstream.
    
    Commit d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint
    type") tried to add an endpoint type sanity check for the single
    isochronous endpoint but instead broke the driver by checking the wrong
    descriptor or random data beyond the last endpoint descriptor.
    
    Make sure to check the right endpoint descriptor.
    
    Fixes: d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint type")
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: stable@vger.kernel.org      # 5.9
    Reported-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20220822151027.27026-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
MIPS: lantiq: export clk_get_io() for lantiq_wdt.ko [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sat Sep 17 16:25:40 2022 -0700

    MIPS: lantiq: export clk_get_io() for lantiq_wdt.ko
    
    [ Upstream commit 502550123bee6a2ffa438409b5b9aad4d6db3a8c ]
    
    The lantiq WDT driver uses clk_get_io(), which is not exported,
    so export it to fix a build error:
    
    ERROR: modpost: "clk_get_io" [drivers/watchdog/lantiq_wdt.ko] undefined!
    
    Fixes: 287e3f3f4e68 ("MIPS: lantiq: implement support for clkdev api")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: John Crispin <john@phrozen.org>
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: Loongson32: Fix PHY-mode being left unspecified [+ + +]
Author: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Date:   Mon Sep 12 00:10:09 2022 +0800

    MIPS: Loongson32: Fix PHY-mode being left unspecified
    
    [ Upstream commit e9f3f8f488005f6da3cfb66070706770ecaef747 ]
    
    commit 0060c8783330 ("net: stmmac: implement support for passive mode
    converters via dt") has changed the plat->interface field semantics from
    containing the PHY-mode to specifying the MAC-PCS interface mode. Due to
    that the loongson32 platform code will leave the phylink interface
    uninitialized with the PHY-mode intended by the means of the actual
    platform setup. The commit-author most likely has just missed the
    arch-specific code to fix. Let's mend the Loongson32 platform code then by
    assigning the PHY-mode to the phy_interface field of the STMMAC platform
    data.
    
    Fixes: 0060c8783330 ("net: stmmac: implement support for passive mode converters via dt")
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
    Tested-by: Keguang Zhang <keguang.zhang@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mlxbf_gige: clear MDIO gateway lock after read [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Fri Sep 2 12:42:47 2022 -0400

    mlxbf_gige: clear MDIO gateway lock after read
    
    [ Upstream commit 182447b12144b7be9b63a273d27c5a11bd54960a ]
    
    The MDIO gateway (GW) lock in BlueField-2 GIGE logic is
    set after read.  This patch adds logic to make sure the
    lock is always cleared at the end of each MDIO transaction.
    
    Fixes: f92e1869d74e ("Add Mellanox BlueField Gigabit Ethernet driver")
    Reviewed-by: Asmaa Mnebhi <asmaa@nvidia.com>
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Link: https://lore.kernel.org/r/20220902164247.19862-1-davthompson@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/slab_common: fix possible double free of kmem_cache [+ + +]
Author: Feng Tang <feng.tang@intel.com>
Date:   Mon Sep 19 11:12:41 2022 +0800

    mm/slab_common: fix possible double free of kmem_cache
    
    [ Upstream commit d71608a877362becdc94191f190902fac1e64d35 ]
    
    When doing slub_debug test, kfence's 'test_memcache_typesafe_by_rcu'
    kunit test case cause a use-after-free error:
    
      BUG: KASAN: use-after-free in kobject_del+0x14/0x30
      Read of size 8 at addr ffff888007679090 by task kunit_try_catch/261
    
      CPU: 1 PID: 261 Comm: kunit_try_catch Tainted: G    B            N 6.0.0-rc5-next-20220916 #17
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x34/0x48
       print_address_description.constprop.0+0x87/0x2a5
       print_report+0x103/0x1ed
       kasan_report+0xb7/0x140
       kobject_del+0x14/0x30
       kmem_cache_destroy+0x130/0x170
       test_exit+0x1a/0x30
       kunit_try_run_case+0xad/0xc0
       kunit_generic_run_threadfn_adapter+0x26/0x50
       kthread+0x17b/0x1b0
       </TASK>
    
    The cause is inside kmem_cache_destroy():
    
    kmem_cache_destroy
        acquire lock/mutex
        shutdown_cache
            schedule_work(kmem_cache_release) (if RCU flag set)
        release lock/mutex
        kmem_cache_release (if RCU flag not set)
    
    In some certain timing, the scheduled work could be run before
    the next RCU flag checking, which can then get a wrong value
    and lead to double kmem_cache_release().
    
    Fix it by caching the RCU flag inside protected area, just like 'refcnt'
    
    Fixes: 0495e337b703 ("mm/slab_common: Deleting kobject in kmem_cache_destroy() without holding slab_mutex/cpu_hotplug_lock")
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Reviewed-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/slub: fix to return errno if kmalloc() fails [+ + +]
Author: Chao Yu <chao.yu@oppo.com>
Date:   Wed Aug 31 22:54:54 2022 +0800

    mm/slub: fix to return errno if kmalloc() fails
    
    commit 7e9c323c52b379d261a72dc7bd38120a761a93cd upstream.
    
    In create_unique_id(), kmalloc(, GFP_KERNEL) can fail due to
    out-of-memory, if it fails, return errno correctly rather than
    triggering panic via BUG_ON();
    
    kernel BUG at mm/slub.c:5893!
    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    
    Call trace:
     sysfs_slab_add+0x258/0x260 mm/slub.c:5973
     __kmem_cache_create+0x60/0x118 mm/slub.c:4899
     create_cache mm/slab_common.c:229 [inline]
     kmem_cache_create_usercopy+0x19c/0x31c mm/slab_common.c:335
     kmem_cache_create+0x1c/0x28 mm/slab_common.c:390
     f2fs_kmem_cache_create fs/f2fs/f2fs.h:2766 [inline]
     f2fs_init_xattr_caches+0x78/0xb4 fs/f2fs/xattr.c:808
     f2fs_fill_super+0x1050/0x1e0c fs/f2fs/super.c:4149
     mount_bdev+0x1b8/0x210 fs/super.c:1400
     f2fs_mount+0x44/0x58 fs/f2fs/super.c:4512
     legacy_get_tree+0x30/0x74 fs/fs_context.c:610
     vfs_get_tree+0x40/0x140 fs/super.c:1530
     do_new_mount+0x1dc/0x4e4 fs/namespace.c:3040
     path_mount+0x358/0x914 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __arm64_sys_mount+0x2f8/0x408 fs/namespace.c:3568
    
    Cc: <stable@kernel.org>
    Fixes: 81819f0fc8285 ("SLUB core")
    Reported-by: syzbot+81684812ea68216e08c5@syzkaller.appspotmail.com
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Signed-off-by: Chao Yu <chao.yu@oppo.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: slub: fix flush_cpu_slab()/__free_slab() invocations in task context. [+ + +]
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Mon Sep 19 18:39:29 2022 +0200

    mm: slub: fix flush_cpu_slab()/__free_slab() invocations in task context.
    
    commit e45cc288724f0cfd497bb5920bcfa60caa335729 upstream.
    
    Commit 5a836bf6b09f ("mm: slub: move flush_cpu_slab() invocations
    __free_slab() invocations out of IRQ context") moved all flush_cpu_slab()
    invocations to the global workqueue to avoid a problem related
    with deactivate_slab()/__free_slab() being called from an IRQ context
    on PREEMPT_RT kernels.
    
    When the flush_all_cpu_locked() function is called from a task context
    it may happen that a workqueue with WQ_MEM_RECLAIM bit set ends up
    flushing the global workqueue, this will cause a dependency issue.
    
     workqueue: WQ_MEM_RECLAIM nvme-delete-wq:nvme_delete_ctrl_work [nvme_core]
       is flushing !WQ_MEM_RECLAIM events:flush_cpu_slab
     WARNING: CPU: 37 PID: 410 at kernel/workqueue.c:2637
       check_flush_dependency+0x10a/0x120
     Workqueue: nvme-delete-wq nvme_delete_ctrl_work [nvme_core]
     RIP: 0010:check_flush_dependency+0x10a/0x120[  453.262125] Call Trace:
     __flush_work.isra.0+0xbf/0x220
     ? __queue_work+0x1dc/0x420
     flush_all_cpus_locked+0xfb/0x120
     __kmem_cache_shutdown+0x2b/0x320
     kmem_cache_destroy+0x49/0x100
     bioset_exit+0x143/0x190
     blk_release_queue+0xb9/0x100
     kobject_cleanup+0x37/0x130
     nvme_fc_ctrl_free+0xc6/0x150 [nvme_fc]
     nvme_free_ctrl+0x1ac/0x2b0 [nvme_core]
    
    Fix this bug by creating a workqueue for the flush operation with
    the WQ_MEM_RECLAIM bit set.
    
    Fixes: 5a836bf6b09f ("mm: slub: move flush_cpu_slab() invocations __free_slab() invocations out of IRQ context")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/sched: taprio: avoid disabling offload when it was never enabled [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Sep 15 13:08:01 2022 +0300

    net/sched: taprio: avoid disabling offload when it was never enabled
    
    [ Upstream commit db46e3a88a09c5cf7e505664d01da7238cd56c92 ]
    
    In an incredibly strange API design decision, qdisc->destroy() gets
    called even if qdisc->init() never succeeded, not exclusively since
    commit 87b60cfacf9f ("net_sched: fix error recovery at qdisc creation"),
    but apparently also earlier (in the case of qdisc_create_dflt()).
    
    The taprio qdisc does not fully acknowledge this when it attempts full
    offload, because it starts off with q->flags = TAPRIO_FLAGS_INVALID in
    taprio_init(), then it replaces q->flags with TCA_TAPRIO_ATTR_FLAGS
    parsed from netlink (in taprio_change(), tail called from taprio_init()).
    
    But in taprio_destroy(), we call taprio_disable_offload(), and this
    determines what to do based on FULL_OFFLOAD_IS_ENABLED(q->flags).
    
    But looking at the implementation of FULL_OFFLOAD_IS_ENABLED()
    (a bitwise check of bit 1 in q->flags), it is invalid to call this macro
    on q->flags when it contains TAPRIO_FLAGS_INVALID, because that is set
    to U32_MAX, and therefore FULL_OFFLOAD_IS_ENABLED() will return true on
    an invalid set of flags.
    
    As a result, it is possible to crash the kernel if user space forces an
    error between setting q->flags = TAPRIO_FLAGS_INVALID, and the calling
    of taprio_enable_offload(). This is because drivers do not expect the
    offload to be disabled when it was never enabled.
    
    The error that we force here is to attach taprio as a non-root qdisc,
    but instead as child of an mqprio root qdisc:
    
    $ tc qdisc add dev swp0 root handle 1: \
            mqprio num_tc 8 map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 0
    $ tc qdisc replace dev swp0 parent 1:1 \
            taprio num_tc 8 map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 base-time 0 \
            sched-entry S 0x7f 990000 sched-entry S 0x80 100000 \
            flags 0x0 clockid CLOCK_TAI
    Unable to handle kernel paging request at virtual address fffffffffffffff8
    [fffffffffffffff8] pgd=0000000000000000, p4d=0000000000000000
    Internal error: Oops: 96000004 [#1] PREEMPT SMP
    Call trace:
     taprio_dump+0x27c/0x310
     vsc9959_port_setup_tc+0x1f4/0x460
     felix_port_setup_tc+0x24/0x3c
     dsa_slave_setup_tc+0x54/0x27c
     taprio_disable_offload.isra.0+0x58/0xe0
     taprio_destroy+0x80/0x104
     qdisc_create+0x240/0x470
     tc_modify_qdisc+0x1fc/0x6b0
     rtnetlink_rcv_msg+0x12c/0x390
     netlink_rcv_skb+0x5c/0x130
     rtnetlink_rcv+0x1c/0x2c
    
    Fix this by keeping track of the operations we made, and undo the
    offload only if we actually did it.
    
    I've added "bool offloaded" inside a 4 byte hole between "int clockid"
    and "atomic64_t picos_per_byte". Now the first cache line looks like
    below:
    
    $ pahole -C taprio_sched net/sched/sch_taprio.o
    struct taprio_sched {
            struct Qdisc * *           qdiscs;               /*     0     8 */
            struct Qdisc *             root;                 /*     8     8 */
            u32                        flags;                /*    16     4 */
            enum tk_offsets            tk_offset;            /*    20     4 */
            int                        clockid;              /*    24     4 */
            bool                       offloaded;            /*    28     1 */
    
            /* XXX 3 bytes hole, try to pack */
    
            atomic64_t                 picos_per_byte;       /*    32     0 */
    
            /* XXX 8 bytes hole, try to pack */
    
            spinlock_t                 current_entry_lock;   /*    40     0 */
    
            /* XXX 8 bytes hole, try to pack */
    
            struct sched_entry *       current_entry;        /*    48     8 */
            struct sched_gate_list *   oper_sched;           /*    56     8 */
            /* --- cacheline 1 boundary (64 bytes) --- */
    
    Fixes: 9c66d1564676 ("taprio: Add support for hardware offloading")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo child qdiscs [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Sep 15 13:08:02 2022 +0300

    net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo child qdiscs
    
    [ Upstream commit 1461d212ab277d8bba1a753d33e9afe03d81f9d4 ]
    
    taprio can only operate as root qdisc, and to that end, there exists the
    following check in taprio_init(), just as in mqprio:
    
            if (sch->parent != TC_H_ROOT)
                    return -EOPNOTSUPP;
    
    And indeed, when we try to attach taprio to an mqprio child, it fails as
    expected:
    
    $ tc qdisc add dev swp0 root handle 1: mqprio num_tc 8 \
            map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 0
    $ tc qdisc replace dev swp0 parent 1:2 taprio num_tc 8 \
            map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
            base-time 0 sched-entry S 0x7f 990000 sched-entry S 0x80 100000 \
            flags 0x0 clockid CLOCK_TAI
    Error: sch_taprio: Can only be attached as root qdisc.
    
    (extack message added by me)
    
    But when we try to attach a taprio child to a taprio root qdisc,
    surprisingly it doesn't fail:
    
    $ tc qdisc replace dev swp0 root handle 1: taprio num_tc 8 \
            map 0 1 2 3 4 5 6 7 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
            base-time 0 sched-entry S 0x7f 990000 sched-entry S 0x80 100000 \
            flags 0x0 clockid CLOCK_TAI
    $ tc qdisc replace dev swp0 parent 1:2 taprio num_tc 8 \
            map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
            base-time 0 sched-entry S 0x7f 990000 sched-entry S 0x80 100000 \
            flags 0x0 clockid CLOCK_TAI
    
    This is because tc_modify_qdisc() behaves differently when mqprio is
    root, vs when taprio is root.
    
    In the mqprio case, it finds the parent qdisc through
    p = qdisc_lookup(dev, TC_H_MAJ(clid)), and then the child qdisc through
    q = qdisc_leaf(p, clid). This leaf qdisc q has handle 0, so it is
    ignored according to the comment right below ("It may be default qdisc,
    ignore it"). As a result, tc_modify_qdisc() goes through the
    qdisc_create() code path, and this gives taprio_init() a chance to check
    for sch_parent != TC_H_ROOT and error out.
    
    Whereas in the taprio case, the returned q = qdisc_leaf(p, clid) is
    different. It is not the default qdisc created for each netdev queue
    (both taprio and mqprio call qdisc_create_dflt() and keep them in
    a private q->qdiscs[], or priv->qdiscs[], respectively). Instead, taprio
    makes qdisc_leaf() return the _root_ qdisc, aka itself.
    
    When taprio does that, tc_modify_qdisc() goes through the qdisc_change()
    code path, because the qdisc layer never finds out about the child qdisc
    of the root. And through the ->change() ops, taprio has no reason to
    check whether its parent is root or not, just through ->init(), which is
    not called.
    
    The problem is the taprio_leaf() implementation. Even though code wise,
    it does the exact same thing as mqprio_leaf() which it is copied from,
    it works with different input data. This is because mqprio does not
    attach itself (the root) to each device TX queue, but one of the default
    qdiscs from its private array.
    
    In fact, since commit 13511704f8d7 ("net: taprio offload: enforce qdisc
    to netdev queue mapping"), taprio does this too, but just for the full
    offload case. So if we tried to attach a taprio child to a fully
    offloaded taprio root qdisc, it would properly fail too; just not to a
    software root taprio.
    
    To fix the problem, stop looking at the Qdisc that's attached to the TX
    queue, and instead, always return the default qdiscs that we've
    allocated (and to which we privately enqueue and dequeue, in software
    scheduling mode).
    
    Since Qdisc_class_ops :: leaf  is only called from tc_modify_qdisc(),
    the risk of unforeseen side effects introduced by this change is
    minimal.
    
    Fixes: 5a781ccbd19e ("tc: Add support for configuring the taprio scheduler")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/smc: Stop the CLC flow if no link to map buffers on [+ + +]
Author: Wen Gu <guwen@linux.alibaba.com>
Date:   Tue Sep 20 14:43:09 2022 +0800

    net/smc: Stop the CLC flow if no link to map buffers on
    
    [ Upstream commit e738455b2c6dcdab03e45d97de36476f93f557d2 ]
    
    There might be a potential race between SMC-R buffer map and
    link group termination.
    
    smc_smcr_terminate_all()     | smc_connect_rdma()
    --------------------------------------------------------------
                                 | smc_conn_create()
    for links in smcibdev        |
            schedule links down  |
                                 | smc_buf_create()
                                 |  \- smcr_buf_map_usable_links()
                                 |      \- no usable links found,
                                 |         (rmb->mr = NULL)
                                 |
                                 | smc_clc_send_confirm()
                                 |  \- access conn->rmb_desc->mr[]->rkey
                                 |     (panic)
    
    During reboot and IB device module remove, all links will be set
    down and no usable links remain in link groups. In such situation
    smcr_buf_map_usable_links() should return an error and stop the
    CLC flow accessing to uninitialized mr.
    
    Fixes: b9247544c1bc ("net/smc: convert static link ID instances to support multiple links")
    Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
    Link: https://lore.kernel.org/r/1663656189-32090-1-git-send-email-guwen@linux.alibaba.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: bonding: Share lacpdu_mcast_addr definition [+ + +]
Author: Benjamin Poirier <bpoirier@nvidia.com>
Date:   Wed Sep 7 16:56:39 2022 +0900

    net: bonding: Share lacpdu_mcast_addr definition
    
    [ Upstream commit 1d9a143ee3408349700f44a9197b7ae0e4faae5d ]
    
    There are already a few definitions of arrays containing
    MULTICAST_LACPDU_ADDR and the next patch will add one more use. These all
    contain the same constant data so define one common instance for all
    bonding code.
    
    Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 86247aba599e ("net: bonding: Unsync device addresses on ndo_stop")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: bonding: Unsync device addresses on ndo_stop [+ + +]
Author: Benjamin Poirier <bpoirier@nvidia.com>
Date:   Wed Sep 7 16:56:40 2022 +0900

    net: bonding: Unsync device addresses on ndo_stop
    
    [ Upstream commit 86247aba599e5b07d7e828e6edaaebb0ef2b1158 ]
    
    Netdev drivers are expected to call dev_{uc,mc}_sync() in their
    ndo_set_rx_mode method and dev_{uc,mc}_unsync() in their ndo_stop method.
    This is mentioned in the kerneldoc for those dev_* functions.
    
    The bonding driver calls dev_{uc,mc}_unsync() during ndo_uninit instead of
    ndo_stop. This is ineffective because address lists (dev->{uc,mc}) have
    already been emptied in unregister_netdevice_many() before ndo_uninit is
    called. This mistake can result in addresses being leftover on former bond
    slaves after a bond has been deleted; see test_LAG_cleanup() in the last
    patch in this series.
    
    Add unsync calls, via bond_hw_addr_flush(), at their expected location,
    bond_close().
    Add dev_mc_add() call to bond_open() to match the above change.
    
    v3:
    * When adding or deleting a slave, only sync/unsync, add/del addresses if
      the bond is up. In other cases, it is taken care of at the right time by
      ndo_open/ndo_set_rx_mode/ndo_stop.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: core: fix flow symmetric hash [+ + +]
Author: Ludovic Cintrat <ludovic.cintrat@gatewatcher.com>
Date:   Wed Sep 7 12:08:13 2022 +0200

    net: core: fix flow symmetric hash
    
    [ Upstream commit 64ae13ed478428135cddc2f1113dff162d8112d4 ]
    
    __flow_hash_consistentify() wrongly swaps ipv4 addresses in few cases.
    This function is indirectly used by __skb_get_hash_symmetric(), which is
    used to fanout packets in AF_PACKET.
    Intrusion detection systems may be impacted by this issue.
    
    __flow_hash_consistentify() computes the addresses difference then swaps
    them if the difference is negative. In few cases src - dst and dst - src
    are both negative.
    
    The following snippet mimics __flow_hash_consistentify():
    
    ```
     #include <stdio.h>
     #include <stdint.h>
    
     int main(int argc, char** argv) {
    
         int diffs_d, diffd_s;
         uint32_t dst  = 0xb225a8c0; /* 178.37.168.192 --> 192.168.37.178 */
         uint32_t src  = 0x3225a8c0; /*  50.37.168.192 --> 192.168.37.50  */
         uint32_t dst2 = 0x3325a8c0; /*  51.37.168.192 --> 192.168.37.51  */
    
         diffs_d = src - dst;
         diffd_s = dst - src;
    
         printf("src:%08x dst:%08x, diff(s-d)=%d(0x%x) diff(d-s)=%d(0x%x)\n",
                 src, dst, diffs_d, diffs_d, diffd_s, diffd_s);
    
         diffs_d = src - dst2;
         diffd_s = dst2 - src;
    
         printf("src:%08x dst:%08x, diff(s-d)=%d(0x%x) diff(d-s)=%d(0x%x)\n",
                 src, dst2, diffs_d, diffs_d, diffd_s, diffd_s);
    
         return 0;
     }
    ```
    
    Results:
    
    src:3225a8c0 dst:b225a8c0, \
        diff(s-d)=-2147483648(0x80000000) \
        diff(d-s)=-2147483648(0x80000000)
    
    src:3225a8c0 dst:3325a8c0, \
        diff(s-d)=-16777216(0xff000000) \
        diff(d-s)=16777216(0x1000000)
    
    In the first case the addresses differences are always < 0, therefore
    __flow_hash_consistentify() always swaps, thus dst->src and src->dst
    packets have differents hashes.
    
    Fixes: c3f8324188fa8 ("net: Add full IPv6 addresses to flow_keys")
    Signed-off-by: Ludovic Cintrat <ludovic.cintrat@gatewatcher.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: deny offload of tc-based TSN features on VF interfaces [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Sep 16 16:32:09 2022 +0300

    net: enetc: deny offload of tc-based TSN features on VF interfaces
    
    [ Upstream commit 5641c751fe2f92d3d9e8a8e03c1263ac8caa0b42 ]
    
    TSN features on the ENETC (taprio, cbs, gate, police) are configured
    through a mix of command BD ring messages and port registers:
    enetc_port_rd(), enetc_port_wr().
    
    Port registers are a region of the ENETC memory map which are only
    accessible from the PCIe Physical Function. They are not accessible from
    the Virtual Functions.
    
    Moreover, attempting to access these registers crashes the kernel:
    
    $ echo 1 > /sys/bus/pci/devices/0000\:00\:00.0/sriov_numvfs
    pci 0000:00:01.0: [1957:ef00] type 00 class 0x020001
    fsl_enetc_vf 0000:00:01.0: Adding to iommu group 15
    fsl_enetc_vf 0000:00:01.0: enabling device (0000 -> 0002)
    fsl_enetc_vf 0000:00:01.0 eno0vf0: renamed from eth0
    $ tc qdisc replace dev eno0vf0 root taprio num_tc 8 map 0 1 2 3 4 5 6 7 \
            queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 base-time 0 \
            sched-entry S 0x7f 900000 sched-entry S 0x80 100000 flags 0x2
    Unable to handle kernel paging request at virtual address ffff800009551a08
    Internal error: Oops: 96000007 [#1] PREEMPT SMP
    pc : enetc_setup_tc_taprio+0x170/0x47c
    lr : enetc_setup_tc_taprio+0x16c/0x47c
    Call trace:
     enetc_setup_tc_taprio+0x170/0x47c
     enetc_setup_tc+0x38/0x2dc
     taprio_change+0x43c/0x970
     taprio_init+0x188/0x1e0
     qdisc_create+0x114/0x470
     tc_modify_qdisc+0x1fc/0x6c0
     rtnetlink_rcv_msg+0x12c/0x390
    
    Split enetc_setup_tc() into separate functions for the PF and for the
    VF drivers. Also remove enetc_qos.o from being included into
    enetc-vf.ko, since it serves absolutely no purpose there.
    
    Fixes: 34c6adf1977b ("enetc: Configure the Time-Aware Scheduler via tc-taprio offload")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220916133209.3351399-2-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: move enetc_set_psfp() out of the common enetc_set_features() [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Sep 16 16:32:08 2022 +0300

    net: enetc: move enetc_set_psfp() out of the common enetc_set_features()
    
    [ Upstream commit fed38e64d9b99d65a36c0dbadc3d3f8ddd9ea030 ]
    
    The VF netdev driver shouldn't respond to changes in the NETIF_F_HW_TC
    flag; only PFs should. Moreover, TSN-specific code should go to
    enetc_qos.c, which should not be included in the VF driver.
    
    Fixes: 79e499829f3f ("net: enetc: add hw tc hw offload features for PSPF capability")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220916133209.3351399-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipa: properly limit modem routing table use [+ + +]
Author: Alex Elder <elder@linaro.org>
Date:   Tue Sep 13 15:46:02 2022 -0500

    net: ipa: properly limit modem routing table use
    
    [ Upstream commit cf412ec333250cb82bafe57169204e14a9f1c2ac ]
    
    IPA can route packets between IPA-connected entities.  The AP and
    modem are currently the only such entities supported, and no routing
    is required to transfer packets between them.
    
    The number of entries in each routing table is fixed, and defined at
    initialization time.  Some of these entries are designated for use
    by the modem, and the rest are available for the AP to use.  The AP
    sends a QMI message to the modem which describes (among other
    things) information about routing table memory available for the
    modem to use.
    
    Currently the QMI initialization packet gives wrong information in
    its description of routing tables.  What *should* be supplied is the
    maximum index that the modem can use for the routing table memory
    located at a given location.  The current code instead supplies the
    total *number* of routing table entries.  Furthermore, the modem is
    granted the entire table, not just the subset it's supposed to use.
    
    This patch fixes this.  First, the ipa_mem_bounds structure is
    generalized so its "end" field can be interpreted either as a final
    byte offset, or a final array index.  Second, the IPv4 and IPv6
    (non-hashed and hashed) table information fields in the QMI
    ipa_init_modem_driver_req structure are changed to be ipa_mem_bounds
    rather than ipa_mem_array structures.  Third, we set the "end" value
    for each routing table to be the last index, rather than setting the
    "count" to be the number of indices.  Finally, instead of allowing
    the modem to use all of a routing table's memory, it is limited to
    just the portion meant to be used by the modem.  In all versions of
    IPA currently supported, that is IPA_ROUTE_MODEM_COUNT (8) entries.
    
    Update a few comments for clarity.
    
    Fixes: 530f9216a9537 ("soc: qcom: ipa: AP/modem communications")
    Signed-off-by: Alex Elder <elder@linaro.org>
    Link: https://lore.kernel.org/r/20220913204602.1803004-1-elder@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mana: Add rmb after checking owner bits [+ + +]
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Sun Sep 11 13:40:05 2022 -0700

    net: mana: Add rmb after checking owner bits
    
    commit 6fd2c68da55c552f86e401ebe40c4a619025ef69 upstream.
    
    Per GDMA spec, rmb is necessary after checking owner_bits, before
    reading EQ or CQ entries.
    
    Add rmb in these two places to comply with the specs.
    
    Cc: stable@vger.kernel.org
    Fixes: ca9c54d2d6a5 ("net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)")
    Reported-by: Sinan Kaya <Sinan.Kaya@microsoft.com>
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Reviewed-by: Dexuan Cui <decui@microsoft.com>
    Link: https://lore.kernel.org/r/1662928805-15861-1-git-send-email-haiyangz@microsoft.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: phy: aquantia: wait for the suspend/resume operations to finish [+ + +]
Author: Ioana Ciornei <ioana.ciornei@nxp.com>
Date:   Tue Sep 6 16:04:51 2022 +0300

    net: phy: aquantia: wait for the suspend/resume operations to finish
    
    [ Upstream commit ca2dccdeeb49a7e408112d681bf447984c845292 ]
    
    The Aquantia datasheet notes that after issuing a Processor-Intensive
    MDIO operation, like changing the low-power state of the device, the
    driver should wait for the operation to finish before issuing a new MDIO
    command.
    
    The new aqr107_wait_processor_intensive_op() function is added which can
    be used after these kind of MDIO operations. At the moment, we are only
    adding it at the end of the suspend/resume calls.
    
    The issue was identified on a board featuring the AQR113C PHY, on
    which commands like 'ip link (..) up / down' issued without any delays
    between them would render the link on the PHY to remain down.
    The issue was easy to reproduce with a one-liner:
     $ ip link set dev ethX down; ip link set dev ethX up; \
     ip link set dev ethX down; ip link set dev ethX up;
    
    Fixes: ac9e81c230eb ("net: phy: aquantia: add suspend / resume callbacks for AQR107 family")
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220906130451.1483448-1-ioana.ciornei@nxp.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: micrel: fix shared interrupt on LAN8814 [+ + +]
Author: Michael Walle <michael@walle.cc>
Date:   Tue Sep 20 16:16:19 2022 +0200

    net: phy: micrel: fix shared interrupt on LAN8814
    
    [ Upstream commit 2002fbac743b6e2391b4ed50ad9eb626768dd78a ]
    
    Since commit ece19502834d ("net: phy: micrel: 1588 support for LAN8814
    phy") the handler always returns IRQ_HANDLED, except in an error case.
    Before that commit, the interrupt status register was checked and if
    it was empty, IRQ_NONE was returned. Restore that behavior to play nice
    with the interrupt line being shared with others.
    
    Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
    Reviewed-by: Divya Koppera <Divya.Koppera@microchip.com>
    Link: https://lore.kernel.org/r/20220920141619.808117-1-michael@walle.cc
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ravb: Fix PHY state warning splat during system resume [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Sep 19 16:48:00 2022 +0200

    net: ravb: Fix PHY state warning splat during system resume
    
    [ Upstream commit 4924c0cdce75575295f8fa682851fb8e5d619dd2 ]
    
    Since commit 744d23c71af39c7d ("net: phy: Warn about incorrect
    mdio_bus_phy_resume() state"), a warning splat is printed during system
    resume with Wake-on-LAN disabled:
    
            WARNING: CPU: 0 PID: 1197 at drivers/net/phy/phy_device.c:323 mdio_bus_phy_resume+0xbc/0xc8
    
    As the Renesas Ethernet AVB driver already calls phy_{stop,start}() in
    its suspend/resume callbacks, it is sufficient to just mark the MAC
    responsible for managing the power state of the PHY.
    
    Fixes: fba863b816049b03 ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Link: https://lore.kernel.org/r/8ec796f47620980fdd0403e21bd8b7200b4fa1d4.1663598796.git.geert+renesas@glider.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sched: fix possible refcount leak in tc_new_tfilter() [+ + +]
Author: Hangyu Hua <hbh25y@gmail.com>
Date:   Wed Sep 21 17:27:34 2022 +0800

    net: sched: fix possible refcount leak in tc_new_tfilter()
    
    [ Upstream commit c2e1cfefcac35e0eea229e148c8284088ce437b5 ]
    
    tfilter_put need to be called to put the refount got by tp->ops->get to
    avoid possible refcount leak when chain->tmplt_ops != NULL and
    chain->tmplt_ops != tp->ops.
    
    Fixes: 7d5509fa0d3d ("net: sched: extend proto ops with 'put' callback")
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
    Link: https://lore.kernel.org/r/20220921092734.31700-1-hbh25y@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sh_eth: Fix PHY state warning splat during system resume [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Sep 19 16:48:28 2022 +0200

    net: sh_eth: Fix PHY state warning splat during system resume
    
    [ Upstream commit 6a1dbfefdae4f7809b3e277cc76785dac0ac1cd0 ]
    
    Since commit 744d23c71af39c7d ("net: phy: Warn about incorrect
    mdio_bus_phy_resume() state"), a warning splat is printed during system
    resume with Wake-on-LAN disabled:
    
            WARNING: CPU: 0 PID: 626 at drivers/net/phy/phy_device.c:323 mdio_bus_phy_resume+0xbc/0xe4
    
    As the Renesas SuperH Ethernet driver already calls phy_{stop,start}()
    in its suspend/resume callbacks, it is sufficient to just mark the MAC
    responsible for managing the power state of the PHY.
    
    Fixes: fba863b816049b03 ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Link: https://lore.kernel.org/r/c6e1331b9bef61225fa4c09db3ba3e2e7214ba2d.1663598886.git.geert+renesas@glider.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sunhme: Fix packet reception for len < RX_COPY_THRESHOLD [+ + +]
Author: Sean Anderson <seanga2@gmail.com>
Date:   Tue Sep 20 19:50:18 2022 -0400

    net: sunhme: Fix packet reception for len < RX_COPY_THRESHOLD
    
    [ Upstream commit 878e2405710aacfeeb19364c300f38b7a9abfe8f ]
    
    There is a separate receive path for small packets (under 256 bytes).
    Instead of allocating a new dma-capable skb to be used for the next packet,
    this path allocates a skb and copies the data into it (reusing the existing
    sbk for the next packet). There are two bytes of junk data at the beginning
    of every packet. I believe these are inserted in order to allow aligned DMA
    and IP headers. We skip over them using skb_reserve. Before copying over
    the data, we must use a barrier to ensure we see the whole packet. The
    current code only synchronizes len bytes, starting from the beginning of
    the packet, including the junk bytes. However, this leaves off the final
    two bytes in the packet. Synchronize the whole packet.
    
    To reproduce this problem, ping a HME with a payload size between 17 and
    214
    
            $ ping -s 17 <hme_address>
    
    which will complain rather loudly about the data mismatch. Small packets
    (below 60 bytes on the wire) do not have this issue. I suspect this is
    related to the padding added to increase the minimum packet size.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Sean Anderson <seanga2@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220920235018.1675956-1-seanga2@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: team: Unsync device addresses on ndo_stop [+ + +]
Author: Benjamin Poirier <bpoirier@nvidia.com>
Date:   Wed Sep 7 16:56:41 2022 +0900

    net: team: Unsync device addresses on ndo_stop
    
    [ Upstream commit bd60234222b2fd5573526da7bcd422801f271f5f ]
    
    Netdev drivers are expected to call dev_{uc,mc}_sync() in their
    ndo_set_rx_mode method and dev_{uc,mc}_unsync() in their ndo_stop method.
    This is mentioned in the kerneldoc for those dev_* functions.
    
    The team driver calls dev_{uc,mc}_unsync() during ndo_uninit instead of
    ndo_stop. This is ineffective because address lists (dev->{uc,mc}) have
    already been emptied in unregister_netdevice_many() before ndo_uninit is
    called. This mistake can result in addresses being leftover on former team
    ports after a team device has been deleted; see test_LAG_cleanup() in the
    last patch in this series.
    
    Add unsync calls at their expected location, team_close().
    
    v3:
    * When adding or deleting a port, only sync/unsync addresses if the team
      device is up. In other cases, it is taken care of at the right time by
      ndo_open/ndo_set_rx_mode/ndo_stop.
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netdevsim: Fix hwstats debugfs file permissions [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Fri Sep 9 18:38:30 2022 +0300

    netdevsim: Fix hwstats debugfs file permissions
    
    [ Upstream commit 34513ada53eb3e3f711250d8dbc2de4de493d510 ]
    
    The hwstats debugfs files are only writeable, but they are created with
    read and write permissions, causing certain selftests to fail [1].
    
    Fix by creating the files with write permission only.
    
    [1]
     # ./test_offload.py
     Test destruction of generic XDP...
     Traceback (most recent call last):
       File "/home/idosch/code/linux/tools/testing/selftests/bpf/./test_offload.py", line 810, in <module>
         simdev = NetdevSimDev()
     [...]
     Exception: Command failed: cat /sys/kernel/debug/netdevsim/netdevsim0//ports/0/dev/hwstats/l3/disable_ifindex
    
     cat: /sys/kernel/debug/netdevsim/netdevsim0//ports/0/dev/hwstats/l3/disable_ifindex: Invalid argument
    
    Fixes: 1a6d7ae7d63c ("netdevsim: Introduce support for L3 offload xstats")
    Reported-by: Jie2x Zhou <jie2x.zhou@intel.com>
    Tested-by: Jie2x Zhou <jie2x.zhou@intel.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/20220909153830.3732504-1-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: ebtables: fix memory leak when blob is malformed [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Sep 20 14:20:17 2022 +0200

    netfilter: ebtables: fix memory leak when blob is malformed
    
    [ Upstream commit 62ce44c4fff947eebdf10bb582267e686e6835c9 ]
    
    The bug fix was incomplete, it "replaced" crash with a memory leak.
    The old code had an assignment to "ret" embedded into the conditional,
    restore this.
    
    Fixes: 7997eff82828 ("netfilter: ebtables: reject blobs that don't provide all entry points")
    Reported-and-tested-by: syzbot+a24c5252f3e3ab733464@syzkaller.appspotmail.com
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conntrack_irc: Tighten matching on DCC message [+ + +]
Author: David Leadbeater <dgl@dgl.cx>
Date:   Fri Aug 26 14:56:57 2022 +1000

    netfilter: nf_conntrack_irc: Tighten matching on DCC message
    
    [ Upstream commit e8d5dfd1d8747b56077d02664a8838c71ced948e ]
    
    CTCP messages should only be at the start of an IRC message, not
    anywhere within it.
    
    While the helper only decodes packes in the ORIGINAL direction, its
    possible to make a client send a CTCP message back by empedding one into
    a PING request.  As-is, thats enough to make the helper believe that it
    saw a CTCP message.
    
    Fixes: 869f37d8e48f ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port")
    Signed-off-by: David Leadbeater <dgl@dgl.cx>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conntrack_sip: fix ct_sip_walk_headers [+ + +]
Author: Igor Ryzhov <iryzhov@nfware.com>
Date:   Wed Jun 5 12:32:40 2019 +0300

    netfilter: nf_conntrack_sip: fix ct_sip_walk_headers
    
    [ Upstream commit 39aebedeaaa95757f5c1f2ddb5f43fdddbf478ca ]
    
    ct_sip_next_header and ct_sip_get_header return an absolute
    value of matchoff, not a shift from current dataoff.
    So dataoff should be assigned matchoff, not incremented by it.
    
    This issue can be seen in the scenario when there are multiple
    Contact headers and the first one is using a hostname and other headers
    use IP addresses. In this case, ct_sip_walk_headers will work as follows:
    
    The first ct_sip_get_header call to will find the first Contact header
    but will return -1 as the header uses a hostname. But matchoff will
    be changed to the offset of this header. After that, dataoff should be
    set to matchoff, so that the next ct_sip_get_header call find the next
    Contact header. But instead of assigning dataoff to matchoff, it is
    incremented by it, which is not correct, as matchoff is an absolute
    value of the offset. So on the next call to the ct_sip_get_header,
    dataoff will be incorrect, and the next Contact header may not be
    found at all.
    
    Fixes: 05e3ced297fe ("[NETFILTER]: nf_conntrack_sip: introduce SIP-URI parsing helper")
    Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_ct_ftp: fix deadlock when nat rewrite is needed [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Sep 20 18:31:30 2022 +0200

    netfilter: nf_ct_ftp: fix deadlock when nat rewrite is needed
    
    [ Upstream commit d25088932227680988a6b794221e031a7232f137 ]
    
    We can't use ct->lock, this is already used by the seqadj internals.
    When using ftp helper + nat, seqadj will attempt to acquire ct->lock
    again.
    
    Revert back to a global lock for now.
    
    Fixes: c783a29c7e59 ("netfilter: nf_ct_ftp: prefer skb_linearize")
    Reported-by: Bruno de Paula Larini <bruno.larini@riosoft.com.br>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: fix nft_counters_enabled underflow at nf_tables_addchain() [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Sep 12 21:41:00 2022 +0900

    netfilter: nf_tables: fix nft_counters_enabled underflow at nf_tables_addchain()
    
    [ Upstream commit 921ebde3c0d22c8cba74ce8eb3cc4626abff1ccd ]
    
    syzbot is reporting underflow of nft_counters_enabled counter at
    nf_tables_addchain() [1], for commit 43eb8949cfdffa76 ("netfilter:
    nf_tables: do not leave chain stats enabled on error") missed that
    nf_tables_chain_destroy() after nft_basechain_init() in the error path of
    nf_tables_addchain() decrements the counter because nft_basechain_init()
    makes nft_is_base_chain() return true by setting NFT_CHAIN_BASE flag.
    
    Increment the counter immediately after returning from
    nft_basechain_init().
    
    Link:  https://syzkaller.appspot.com/bug?extid=b5d82a651b71cd8a75ab [1]
    Reported-by: syzbot <syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Tested-by: syzbot <syzbot+b5d82a651b71cd8a75ab@syzkaller.appspotmail.com>
    Fixes: 43eb8949cfdffa76 ("netfilter: nf_tables: do not leave chain stats enabled on error")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_tables: fix percpu memory leak at nf_tables_addchain() [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Sep 12 22:58:51 2022 +0900

    netfilter: nf_tables: fix percpu memory leak at nf_tables_addchain()
    
    [ Upstream commit 9a4d6dd554b86e65581ef6b6638a39ae079b17ac ]
    
    It seems to me that percpu memory for chain stats started leaking since
    commit 3bc158f8d0330f0a ("netfilter: nf_tables: map basechain priority to
    hardware priority") when nft_chain_offload_priority() returned an error.
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 3bc158f8d0330f0a ("netfilter: nf_tables: map basechain priority to hardware priority")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nfnetlink_osf: fix possible bogus match in nf_osf_find() [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Sep 7 10:26:18 2022 +0200

    netfilter: nfnetlink_osf: fix possible bogus match in nf_osf_find()
    
    [ Upstream commit 559c36c5a8d730c49ef805a72b213d3bba155cc8 ]
    
    nf_osf_find() incorrectly returns true on mismatch, this leads to
    copying uninitialized memory area in nft_osf which can be used to leak
    stale kernel stack data to userspace.
    
    Fixes: 22c7652cdaa8 ("netfilter: nft_osf: Add version option support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
of: mdio: Add of_node_put() when breaking out of for_each_xx [+ + +]
Author: Liang He <windhl@126.com>
Date:   Tue Sep 13 20:56:59 2022 +0800

    of: mdio: Add of_node_put() when breaking out of for_each_xx
    
    [ Upstream commit 1c48709e6d9d353acaaac1d8e33474756b121d78 ]
    
    In of_mdiobus_register(), we should call of_node_put() for 'child'
    escaped out of for_each_available_child_of_node().
    
    Fixes: 66bdede495c7 ("of_mdio: Fix broken PHY IRQ in case of probe deferral")
    Co-developed-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Liang He <windhl@126.com>
    Link: https://lore.kernel.org/r/20220913125659.3331969-1-windhl@126.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf jit: Include program header in ELF files [+ + +]
Author: Lieven Hey <lieven.hey@kdab.com>
Date:   Thu Sep 15 11:29:10 2022 +0200

    perf jit: Include program header in ELF files
    
    [ Upstream commit babd04386b1df8c364cdaa39ac0e54349502e1e5 ]
    
    The missing header makes it hard for programs like elfutils to open
    these files.
    
    Fixes: 2d86612aacb7805f ("perf symbol: Correct address for bss symbols")
    Reviewed-by: Leo Yan <leo.yan@linaro.org>
    Signed-off-by: Lieven Hey <lieven.hey@kdab.com>
    Tested-by: Leo Yan <leo.yan@linaro.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Link: https://lore.kernel.org/r/20220915092910.711036-1-lieven.hey@kdab.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf kcore_copy: Do not check /proc/modules is unchanged [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Sep 14 15:24:29 2022 +0300

    perf kcore_copy: Do not check /proc/modules is unchanged
    
    [ Upstream commit 5b427df27b94aec1312cace48a746782a0925c53 ]
    
    /proc/kallsyms and /proc/modules are compared before and after the copy
    in order to ensure no changes during the copy.
    
    However /proc/modules also might change due to reference counts changing
    even though that does not make any difference.
    
    Any modules loaded or unloaded should be visible in changes to kallsyms,
    so it is not necessary to check /proc/modules also anyway.
    
    Remove the comparison checking that /proc/modules is unchanged.
    
    Fixes: fc1b691d7651d949 ("perf buildid-cache: Add ability to add kcore to the cache")
    Reported-by: Daniel Dao <dqminh@cloudflare.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Daniel Dao <dqminh@cloudflare.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20220914122429.8770-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf stat: Fix BPF program section name [+ + +]
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Fri Sep 16 11:41:29 2022 -0700

    perf stat: Fix BPF program section name
    
    [ Upstream commit 0d77326c3369e255715ed2440a78894ccc98dd69 ]
    
    It seems the recent libbpf got more strict about the section name.
    I'm seeing a failure like this:
    
      $ sudo ./perf stat -a --bpf-counters --for-each-cgroup ^. sleep 1
      libbpf: prog 'on_cgrp_switch': missing BPF prog type, check ELF section name 'perf_events'
      libbpf: prog 'on_cgrp_switch': failed to load: -22
      libbpf: failed to load object 'bperf_cgroup_bpf'
      libbpf: failed to load BPF skeleton 'bperf_cgroup_bpf': -22
      Failed to load cgroup skeleton
    
    The section name should be 'perf_event' (without the trailing 's').
    Although it's related to the libbpf change, it'd be better fix the
    section name in the first place.
    
    Fixes: 944138f048f7d759 ("perf stat: Enable BPF counter with --for-each-cgroup")
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: bpf@vger.kernel.org
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/r/20220916184132.1161506-2-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

perf stat: Fix cpu map index in bperf cgroup code [+ + +]
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Fri Sep 16 11:41:30 2022 -0700

    perf stat: Fix cpu map index in bperf cgroup code
    
    [ Upstream commit 3da35231d9e4949c4ae40e3ce653e7c468455d55 ]
    
    The previous cpu map introduced a bug in the bperf cgroup counter.  This
    results in a failure when user gives a partial cpu map starting from
    non-zero.
    
      $ sudo ./perf stat -C 1-2 --bpf-counters --for-each-cgroup ^. sleep 1
      libbpf: prog 'on_cgrp_switch': failed to create BPF link for perf_event FD 0:
                                     -9 (Bad file descriptor)
      Failed to attach cgroup program
    
    To get the FD of an evsel, it should use a map index not the CPU number.
    
    Fixes: 0255571a16059c8e ("perf cpumap: Switch to using perf_cpu_map API")
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: bpf@vger.kernel.org
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/r/20220916184132.1161506-3-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf tools: Honor namespace when synthesizing build-ids [+ + +]
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Tue Sep 20 15:28:21 2022 -0700

    perf tools: Honor namespace when synthesizing build-ids
    
    [ Upstream commit 999e4eaa4b3691acf85d094836260ec4b66c74fd ]
    
    It needs to enter the namespace before reading a file.
    
    Fixes: 4183a8d70a288627 ("perf tools: Allow synthesizing the build id for kernel/modules/tasks in PERF_RECORD_MMAP2")
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20220920222822.2171056-1-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/arm-cmn: Add more bits to child node address offset field [+ + +]
Author: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Date:   Mon Aug 8 12:54:55 2022 -0700

    perf/arm-cmn: Add more bits to child node address offset field
    
    commit 05d6f6d346fea2fa4580a0c2b6be207456bebb08 upstream.
    
    CMN-600 uses bits [27:0] for child node address offset while bits [30:28]
    are required to be zero.
    
    For CMN-650, the child node address offset field has been increased
    to include bits [29:0] while leaving only bit 30 set to zero.
    
    Let's include the missing two bits and assume older implementations
    comply with the spec and set bits [29:28] to 0.
    
    Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
    Fixes: 60d1504070c2 ("perf/arm-cmn: Support new IP features")
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Link: https://lore.kernel.org/r/20220808195455.79277-1-ilkka@os.amperecomputing.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
phy: marvell: phy-mvebu-a3700-comphy: Remove broken reset support [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Mon Aug 29 10:30:46 2022 +0200

    phy: marvell: phy-mvebu-a3700-comphy: Remove broken reset support
    
    commit 0a6fc70d76bddf98278af2ac000379c82aec8f11 upstream.
    
    Reset support for SATA PHY is somehow broken and after calling it, kernel
    is not able to detect and initialize SATA disk Samsung SSD 850 EMT0 [1].
    
    Reset support was introduced in commit 934337080c6c ("phy: marvell:
    phy-mvebu-a3700-comphy: Add native kernel implementation") as part of
    complete rewrite of this driver. v1 patch series of that commit [2] did
    not contain reset support and was tested that is working fine with
    Ethernet, SATA and USB PHYs without issues too.
    
    So for now remove broken reset support and change implementation of
    power_off callback to power off all functions on specified lane (and not
    only selected function) because during startup kernel does not know which
    function was selected and configured by bootloader. Same logic was used
    also in v1 patch series of that commit.
    
    This change fixes issues with initialization of SATA disk Samsung SSD 850
    and disk is working again, like before mentioned commit.
    
    Once problem with PHY reset callback is solved its functionality could be
    re-introduced. But for now it is unknown why it does not work.
    
    [1] - https://lore.kernel.org/r/20220531124159.3e4lgn2v462irbtz@shindev/
    [2] - https://lore.kernel.org/r/20211028184242.22105-1-kabel@kernel.org/
    
    Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Fixes: 934337080c6c ("phy: marvell: phy-mvebu-a3700-comphy: Add native kernel implementation")
    Cc: stable@vger.kernel.org # v5.18+
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Tested-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Link: https://lore.kernel.org/r/20220829083046.15082-1-pali@kernel.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pmem: fix a name collision [+ + +]
Author: Jane Chu <jane.chu@oracle.com>
Date:   Thu Jun 30 12:28:02 2022 -0600

    pmem: fix a name collision
    
    [ Upstream commit 149d17140bcedc906082c4f874dec98b1ffc5a90 ]
    
    Kernel test robot detected name collision when compiled on 'um'
    architecture.  Rename "to_phys()"  to "pmem_to_phys()".
    
    >> drivers/nvdimm/pmem.c:48:20: error: conflicting types for 'to_phys'; have 'phys_addr_t(struct pmem_device *, phys_addr_t)' {aka 'long long unsigned int(struct pmem_device *, long long unsigned int)'}
          48 | static phys_addr_t to_phys(struct pmem_device *pmem, phys_addr_t offset)
             |                    ^~~~~~~
       In file included from arch/um/include/asm/page.h:98,
                        from arch/um/include/asm/thread_info.h:15,
                        from include/linux/thread_info.h:60,
                        from include/asm-generic/preempt.h:5,
                        from ./arch/um/include/generated/asm/preempt.h:1,
    
       arch/um/include/shared/mem.h:12:29: note: previous definition of 'to_phys' with type 'long unsigned int(void *)'
          12 | static inline unsigned long to_phys(void *virt)
             |                             ^~~~~~~
    
    vim +48 drivers/nvdimm/pmem.c
        47
      > 48  static phys_addr_t to_phys(struct pmem_device *pmem, phys_addr_t offset)
        49  {
        50          return pmem->phys_addr + offset;
        51  }
        52
    
    Fixes: 9409c9b6709e (pmem: refactor pmem_clear_poison())
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220630182802.3250449-1-jane.chu@oracle.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "ALSA: usb-audio: Split endpoint setups for hw_params and prepare" [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Sep 20 13:39:29 2022 +0200

    Revert "ALSA: usb-audio: Split endpoint setups for hw_params and prepare"
    
    commit 79764ec772bc1346441ae1c4b1f3bd1991d634e8 upstream.
    
    This reverts commit ff878b408a03bef5d610b7e2302702e16a53636e.
    
    Unfortunately the recent fix seems bringing another regressions with
    PulseAudio / pipewire, at least for Steinberg and MOTU devices.
    
    As a temporary solution, do a straight revert.  The issue for Android
    will be revisited again later by another different fix (if any).
    
    Fixes: ff878b408a03 ("ALSA: usb-audio: Split endpoint setups for hw_params and prepare")
    Cc: <stable@vger.kernel.org>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=216500
    Link: https://lore.kernel.org/r/20220920113929.25162-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "block: freeze the queue earlier in del_gendisk" [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Sep 19 16:40:49 2022 +0200

    Revert "block: freeze the queue earlier in del_gendisk"
    
    commit 4c66a326b5ab784cddd72de07ac5b6210e9e1b06 upstream.
    
    This reverts commit a09b314005f3a0956ebf56e01b3b80339df577cc.
    
    Dusty Mabe reported consistent hang during CoreOS shutdown with a MD
    RAID1 setup.  Although apparently similar hangs happened before,
    and this patch most likely is not the root cause it made it much
    more severe.  Revert it until we can figure out what is going on
    with the md driver.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220919144049.978907-1-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "usb: add quirks for Lenovo OneLink+ Dock" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 31 10:34:25 2022 +0200

    Revert "usb: add quirks for Lenovo OneLink+ Dock"
    
    [ Upstream commit 58bfe7d8e31014d7ce246788df99c56e3cfe6c68 ]
    
    This reverts commit 3d5f70949f1b1168fbb17d06eb5c57e984c56c58.
    
    The quirk does not work properly, more work is needed to determine what
    should be done here.
    
    Reported-by: Oliver Neukum <oneukum@suse.com>
    Cc: Jean-Francois Le Fillatre <jflf_kernel@gmx.com>
    Cc: stable <stable@kernel.org>
    Fixes: 3d5f70949f1b ("usb: add quirks for Lenovo OneLink+ Dock")
    Link: https://lore.kernel.org/r/9a17ea86-079f-510d-e919-01bc53a6d09f@gmx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Revert "usb: gadget: udc-xilinx: replace memcpy with memcpy_toio" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Sep 2 09:10:08 2022 +0200

    Revert "usb: gadget: udc-xilinx: replace memcpy with memcpy_toio"
    
    [ Upstream commit fe0a2ac7c627b064c479ad0c3b25e531d342e048 ]
    
    This reverts commit 8cb339f1c1f04baede9d54c1e40ac96247a6393b as it
    throws up a bunch of sparse warnings as reported by the kernel test
    robot.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Link: https://lore.kernel.org/r/202209020044.CX2PfZzM-lkp@intel.com
    Fixes: 8cb339f1c1f0 ("usb: gadget: udc-xilinx: replace memcpy with memcpy_toio")
    Cc: stable@vger.kernel.org
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Piyush Mehta <piyush.mehta@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
riscv: fix a nasty sigreturn bug... [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 24 01:55:27 2021 +0000

    riscv: fix a nasty sigreturn bug...
    
    commit 762df359aa5849e010ef04c3ed79d57588ce17d9 upstream.
    
    riscv has an equivalent of arm bug fixed by 653d48b22166 ("arm: fix
    really nasty sigreturn bug"); if signal gets caught by an interrupt that
    hits when we have the right value in a0 (-513), *and* another signal
    gets delivered upon sigreturn() (e.g. included into the blocked mask for
    the first signal and posted while the handler had been running), the
    syscall restart logics will see regs->cause equal to EXC_SYSCALL (we are
    in a syscall, after all) and a0 already restored to its original value
    (-513, which happens to be -ERESTARTNOINTR) and assume that we need to
    apply the usual syscall restart logics.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/YxJEiSq%2FCGaL6Gm9@ZenIV/
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Jul 8 18:49:29 2022 -0700

    riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
    
    commit 225e47ea20ea4f37031131f4fa7a6c281fac6657 upstream.
    
    RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
    Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
    quieten this kconfig warning:
    
    WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
      Depends on [n]: !XIP_KERNEL [=y]
      Selected by [y]:
      - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
    
    Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20220709014929.14221-1-rdunlap@infradead.org/
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup [+ + +]
Author: Stefan Haberland <sth@linux.ibm.com>
Date:   Mon Sep 19 17:49:31 2022 +0200

    s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup
    
    commit db7ba07108a48c0f95b74fabbfd5d63e924f992d upstream.
    
    Fix Oops in dasd_alias_get_start_dev() function caused by the pavgroup
    pointer being NULL.
    
    The pavgroup pointer is checked on the entrance of the function but
    without the lcu->lock being held. Therefore there is a race window
    between dasd_alias_get_start_dev() and _lcu_update() which sets
    pavgroup to NULL with the lcu->lock held.
    
    Fix by checking the pavgroup pointer with lcu->lock held.
    
    Cc: <stable@vger.kernel.org> # 2.6.25+
    Fixes: 8e09f21574ea ("[S390] dasd: add hyper PAV support to DASD device driver, part 1")
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220919154931.4123002-2-sth@linux.ibm.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: core: Fix a use-after-free [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Aug 25 17:26:34 2022 -0700

    scsi: core: Fix a use-after-free
    
    [ Upstream commit 8fe4ce5836e932f5766317cb651c1ff2a4cd0506 ]
    
    There are two .exit_cmd_priv implementations. Both implementations use
    resources associated with the SCSI host. Make sure that these resources are
    still available when .exit_cmd_priv is called by waiting inside
    scsi_remove_host() until the tag set has been freed.
    
    This commit fixes the following use-after-free:
    
    ==================================================================
    BUG: KASAN: use-after-free in srp_exit_cmd_priv+0x27/0xd0 [ib_srp]
    Read of size 8 at addr ffff888100337000 by task multipathd/16727
    Call Trace:
     <TASK>
     dump_stack_lvl+0x34/0x44
     print_report.cold+0x5e/0x5db
     kasan_report+0xab/0x120
     srp_exit_cmd_priv+0x27/0xd0 [ib_srp]
     scsi_mq_exit_request+0x4d/0x70
     blk_mq_free_rqs+0x143/0x410
     __blk_mq_free_map_and_rqs+0x6e/0x100
     blk_mq_free_tag_set+0x2b/0x160
     scsi_host_dev_release+0xf3/0x1a0
     device_release+0x54/0xe0
     kobject_put+0xa5/0x120
     device_release+0x54/0xe0
     kobject_put+0xa5/0x120
     scsi_device_dev_release_usercontext+0x4c1/0x4e0
     execute_in_process_context+0x23/0x90
     device_release+0x54/0xe0
     kobject_put+0xa5/0x120
     scsi_disk_release+0x3f/0x50
     device_release+0x54/0xe0
     kobject_put+0xa5/0x120
     disk_release+0x17f/0x1b0
     device_release+0x54/0xe0
     kobject_put+0xa5/0x120
     dm_put_table_device+0xa3/0x160 [dm_mod]
     dm_put_device+0xd0/0x140 [dm_mod]
     free_priority_group+0xd8/0x110 [dm_multipath]
     free_multipath+0x94/0xe0 [dm_multipath]
     dm_table_destroy+0xa2/0x1e0 [dm_mod]
     __dm_destroy+0x196/0x350 [dm_mod]
     dev_remove+0x10c/0x160 [dm_mod]
     ctl_ioctl+0x2c2/0x590 [dm_mod]
     dm_ctl_ioctl+0x5/0x10 [dm_mod]
     __x64_sys_ioctl+0xb4/0xf0
     dm_ctl_ioctl+0x5/0x10 [dm_mod]
     __x64_sys_ioctl+0xb4/0xf0
     do_syscall_64+0x3b/0x90
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Link: https://lore.kernel.org/r/20220826002635.919423-1-bvanassche@acm.org
    Fixes: 65ca846a5314 ("scsi: core: Introduce {init,exit}_cmd_priv()")
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Mike Christie <michael.christie@oracle.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Li Zhijian <lizhijian@fujitsu.com>
    Reported-by: Li Zhijian <lizhijian@fujitsu.com>
    Tested-by: Li Zhijian <lizhijian@fujitsu.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpt3sas: Fix return value check of dma_get_required_mask() [+ + +]
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Tue Sep 13 17:35:38 2022 +0530

    scsi: mpt3sas: Fix return value check of dma_get_required_mask()
    
    [ Upstream commit e0e0747de0ea3dd87cdbb0393311e17471a9baf1 ]
    
    Fix the incorrect return value check of dma_get_required_mask().  Due to
    this incorrect check, the driver was always setting the DMA mask to 63 bit.
    
    Link: https://lore.kernel.org/r/20220913120538.18759-2-sreekanth.reddy@broadcom.com
    Fixes: ba27c5cf286d ("scsi: mpt3sas: Don't change the DMA coherent mask after allocations")
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qla2xxx: Fix memory leak in __qlt_24xx_handle_abts() [+ + +]
Author: Rafael Mendonca <rafaelmendsr@gmail.com>
Date:   Tue Sep 13 23:49:24 2022 -0300

    scsi: qla2xxx: Fix memory leak in __qlt_24xx_handle_abts()
    
    [ Upstream commit 601be20fc6a1b762044d2398befffd6bf236cebf ]
    
    Commit 8f394da36a36 ("scsi: qla2xxx: Drop TARGET_SCF_LOOKUP_LUN_FROM_TAG")
    made the __qlt_24xx_handle_abts() function return early if
    tcm_qla2xxx_find_cmd_by_tag() didn't find a command, but it missed to clean
    up the allocated memory for the management command.
    
    Link: https://lore.kernel.org/r/20220914024924.695604-1-rafaelmendsr@gmail.com
    Fixes: 8f394da36a36 ("scsi: qla2xxx: Drop TARGET_SCF_LOOKUP_LUN_FROM_TAG")
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: forwarding: add shebang for sch_red.sh [+ + +]
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Sep 22 10:44:53 2022 +0800

    selftests: forwarding: add shebang for sch_red.sh
    
    [ Upstream commit 83e4b196838d90799a8879e5054a3beecf9ed256 ]
    
    RHEL/Fedora RPM build checks are stricter, and complain when executable
    files don't have a shebang line, e.g.
    
    *** WARNING: ./kselftests/net/forwarding/sch_red.sh is executable but has no shebang, removing executable bit
    
    Fix it by adding shebang line.
    
    Fixes: 6cf0291f9517 ("selftests: forwarding: Add a RED test for SW datapath")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/20220922024453.437757-1-liuhangbin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: Create uart_xmit_advance() [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Thu Sep 1 17:39:32 2022 +0300

    serial: Create uart_xmit_advance()
    
    commit e77cab77f2cb3a1ca2ba8df4af45bb35617ac16d upstream.
    
    A very common pattern in the drivers is to advance xmit tail
    index and do bookkeeping of Tx'ed characters. Create
    uart_xmit_advance() to handle it.
    
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220901143934.8850-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: fsl_lpuart: Reset prior to registration [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Sep 11 10:22:01 2022 +0200

    serial: fsl_lpuart: Reset prior to registration
    
    commit 60f361722ad2ae5ee667d0b0545d40c42f754daf upstream.
    
    Since commit bd5305dcabbc ("tty: serial: fsl_lpuart: do software reset
    for imx7ulp and imx8qxp"), certain i.MX UARTs are reset after they've
    already been registered.  Register state may thus be clobbered after
    user space has begun to open and access the UART.
    
    Avoid by performing the reset prior to registration.
    
    Fixes: bd5305dcabbc ("tty: serial: fsl_lpuart: do software reset for imx7ulp and imx8qxp")
    Cc: stable@vger.kernel.org # v5.15+
    Cc: Fugang Duan <fugang.duan@nxp.com>
    Cc: Sherry Sun <sherry.sun@nxp.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Link: https://lore.kernel.org/r/72fb646c1b0b11c989850c55f52f9ff343d1b2fa.1662884345.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: tegra-tcu: Use uart_xmit_advance(), fixes icount.tx accounting [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Thu Sep 1 17:39:34 2022 +0300

    serial: tegra-tcu: Use uart_xmit_advance(), fixes icount.tx accounting
    
    commit 1d10cd4da593bc0196a239dcc54dac24b6b0a74e upstream.
    
    Tx'ing does not correctly account Tx'ed characters into icount.tx.
    Using uart_xmit_advance() fixes the problem.
    
    Fixes: 2d908b38d409 ("serial: Add Tegra Combined UART driver")
    Cc: <stable@vger.kernel.org> # serial: Create uart_xmit_advance()
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220901143934.8850-4-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: tegra: Use uart_xmit_advance(), fixes icount.tx accounting [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Thu Sep 1 17:39:33 2022 +0300

    serial: tegra: Use uart_xmit_advance(), fixes icount.tx accounting
    
    commit 754f68044c7dd6c52534ba3e0f664830285c4b15 upstream.
    
    DMA complete & stop paths did not correctly account Tx'ed characters
    into icount.tx. Using uart_xmit_advance() fixes the problem.
    
    Fixes: e9ea096dd225 ("serial: tegra: add serial driver")
    Cc: <stable@vger.kernel.org> # serial: Create uart_xmit_advance()
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220901143934.8850-3-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sfc/siena: fix null pointer dereference in efx_hard_start_xmit [+ + +]
Author: Íñigo Huguet <ihuguet@redhat.com>
Date:   Thu Sep 15 16:19:58 2022 +0200

    sfc/siena: fix null pointer dereference in efx_hard_start_xmit
    
    [ Upstream commit 589c6eded10c77a12b7b2cf235b6b19a2bdb91fa ]
    
    Like in previous patch for sfc, prevent potential (but unlikely) NULL
    pointer dereference.
    
    Fixes: 12804793b17c ("sfc: decouple TXQ type from label")
    Reported-by: Tianhao Zhao <tizhao@redhat.com>
    Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
    Link: https://lore.kernel.org/r/20220915141958.16458-1-ihuguet@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sfc/siena: fix TX channel offset when using legacy interrupts [+ + +]
Author: Íñigo Huguet <ihuguet@redhat.com>
Date:   Thu Sep 15 16:16:53 2022 +0200

    sfc/siena: fix TX channel offset when using legacy interrupts
    
    [ Upstream commit 974bb793aded499491246f6f9826e26c2b127320 ]
    
    As in previous commit for sfc, fix TX channels offset when
    efx_siena_separate_tx_channels is false (the default)
    
    Fixes: 25bde571b4a8 ("sfc/siena: fix wrong tx channel offset with efx_separate_tx_channels")
    Reported-by: Tianhao Zhao <tizhao@redhat.com>
    Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
    Link: https://lore.kernel.org/r/20220915141653.15504-1-ihuguet@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sfc: fix null pointer dereference in efx_hard_start_xmit [+ + +]
Author: Íñigo Huguet <ihuguet@redhat.com>
Date:   Wed Sep 14 13:11:35 2022 +0200

    sfc: fix null pointer dereference in efx_hard_start_xmit
    
    [ Upstream commit 0a242eb2913a4aa3d6fbdb86559f27628e9466f3 ]
    
    Trying to get the channel from the tx_queue variable here is wrong
    because we can only be here if tx_queue is NULL, so we shouldn't
    dereference it. As the above comment in the code says, this is very
    unlikely to happen, but it's wrong anyway so let's fix it.
    
    I hit this issue because of a different bug that caused tx_queue to be
    NULL. If that happens, this is the error message that we get here:
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      [...]
      RIP: 0010:efx_hard_start_xmit+0x153/0x170 [sfc]
    
    Fixes: 12804793b17c ("sfc: decouple TXQ type from label")
    Reported-by: Tianhao Zhao <tizhao@redhat.com>
    Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
    Acked-by: Edward Cree <ecree.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20220914111135.21038-1-ihuguet@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sfc: fix TX channel offset when using legacy interrupts [+ + +]
Author: Íñigo Huguet <ihuguet@redhat.com>
Date:   Wed Sep 14 12:36:48 2022 +0200

    sfc: fix TX channel offset when using legacy interrupts
    
    [ Upstream commit f232af4295653afa4ade3230462b3be15ad16419 ]
    
    In legacy interrupt mode the tx_channel_offset was hardcoded to 1, but
    that's not correct if efx_sepparate_tx_channels is false. In that case,
    the offset is 0 because the tx queues are in the single existing channel
    at index 0, together with the rx queue.
    
    Without this fix, as soon as you try to send any traffic, it tries to
    get the tx queues from an uninitialized channel getting these errors:
      WARNING: CPU: 1 PID: 0 at drivers/net/ethernet/sfc/tx.c:540 efx_hard_start_xmit+0x12e/0x170 [sfc]
      [...]
      RIP: 0010:efx_hard_start_xmit+0x12e/0x170 [sfc]
      [...]
      Call Trace:
       <IRQ>
       dev_hard_start_xmit+0xd7/0x230
       sch_direct_xmit+0x9f/0x360
       __dev_queue_xmit+0x890/0xa40
      [...]
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      [...]
      RIP: 0010:efx_hard_start_xmit+0x153/0x170 [sfc]
      [...]
      Call Trace:
       <IRQ>
       dev_hard_start_xmit+0xd7/0x230
       sch_direct_xmit+0x9f/0x360
       __dev_queue_xmit+0x890/0xa40
      [...]
    
    Fixes: c308dfd1b43e ("sfc: fix wrong tx channel offset with efx_separate_tx_channels")
    Reported-by: Tianhao Zhao <tizhao@redhat.com>
    Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
    Acked-by: Edward Cree <ecree.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20220914103648.16902-1-ihuguet@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb3: fix temporary data corruption in collapse range [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Tue Aug 23 14:07:41 2022 +0100

    smb3: fix temporary data corruption in collapse range
    
    [ Upstream commit fa30a81f255a56cccd89552cd6ce7ea6e8d8acc4 ]
    
    collapse range doesn't discard the affected cached region
    so can risk temporarily corrupting the file data. This
    fixes xfstest generic/031
    
    I also decided to merge a minor cleanup to this into the same patch
    (avoiding rereading inode size repeatedly unnecessarily) to make it
    clearer.
    
    Cc: stable@vger.kernel.org
    Fixes: 5476b5dd82c8b ("cifs: add support for FALLOC_FL_COLLAPSE_RANGE")
    Reported-by: David Howells <dhowells@redhat.com>
    Tested-by: David Howells <dhowells@redhat.com>
    Reviewed-by: David Howells <dhowells@redhat.com>
    cc: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb3: fix temporary data corruption in insert range [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Tue Aug 23 14:07:55 2022 +0100

    smb3: fix temporary data corruption in insert range
    
    [ Upstream commit 9c8b7a293f50253e694f19161c045817a938e551 ]
    
    insert range doesn't discard the affected cached region
    so can risk temporarily corrupting file data.
    
    Also includes some minor cleanup (avoiding rereading
    inode size repeatedly unnecessarily) to make it clearer.
    
    Cc: stable@vger.kernel.org
    Fixes: 7fe6fe95b936 ("cifs: add FALLOC_FL_INSERT_RANGE support")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb3: Move the flush out of smb2_copychunk_range() into its callers [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Tue Aug 23 14:07:28 2022 +0100

    smb3: Move the flush out of smb2_copychunk_range() into its callers
    
    [ Upstream commit c3a72bb213209adfe981a4a92ea5746a778323e4 ]
    
    Move the flush out of smb2_copychunk_range() into its callers.  This will
    allow the pagecache to be invalidated between the flush and the operation
    in smb3_collapse_range() and smb3_insert_range().
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: fa30a81f255a ("smb3: fix temporary data corruption in collapse range")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb3: use filemap_write_and_wait_range instead of filemap_write_and_wait [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Mon Aug 29 11:53:41 2022 -0500

    smb3: use filemap_write_and_wait_range instead of filemap_write_and_wait
    
    [ Upstream commit 3e3761f1ec7df67d88cfca5e2ea98538f529e645 ]
    
    When doing insert range and collapse range we should be
    writing out the cached pages for the ranges affected but not
    the whole file.
    
    Fixes: c3a72bb21320 ("smb3: Move the flush out of smb2_copychunk_range() into its callers")
    Cc: stable@vger.kernel.org
    Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Reviewed-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Add support for Intel Maple Ridge single port controller [+ + +]
Author: Gil Fine <gil.fine@intel.com>
Date:   Thu Sep 8 13:43:20 2022 +0300

    thunderbolt: Add support for Intel Maple Ridge single port controller
    
    commit 14c7d905283744809e6b82efae2f490660a11cda upstream.
    
    Add support for Maple Ridge discrete USB4 host controller from Intel
    which has a single USB4 port (versus the already supported dual port
    Maple Ridge USB4 host controller).
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gil Fine <gil.fine@intel.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
um: fix default console kernel parameter [+ + +]
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Aug 6 21:52:22 2022 +0200

    um: fix default console kernel parameter
    
    [ Upstream commit 782b1f70f8a8b28571949d2ba43fe88b96d75ec3 ]
    
    OpenWrt's UML with 5.15 was producing odd errors/warnings during preinit
    part of the early userspace portion:
    
    |[    0.000000] Kernel command line: ubd0=root.img root=98:0 console=tty
    |[...]
    |[    0.440000] random: jshn: uninitialized urandom read (4 bytes read)
    |[    0.460000] random: jshn: uninitialized urandom read (4 bytes read)
    |/etc/preinit: line 47: can't create /dev/tty: No such device or address
    |/etc/preinit: line 48: can't create /dev/tty: No such device or address
    |/etc/preinit: line 58: can't open /dev/tty: No such device or address
    |[...] repeated many times
    
    That "/dev/tty" came from the command line (which is automatically
    added if no console= parameter was specified for the uml binary).
    
    The TLDP project tells the following about the /dev/tty:
    <https://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3>
    | /dev/tty stands for the controlling terminal (if any) for the current
    | process.[...]
    | /dev/tty is something like a link to the actually terminal device[..]
    
    The "(if any)" is important here, since it's possible for processes to
    not have a controlling terminal.
    
    I think this was a simple typo and the author wanted tty0 there.
    
    CC: Thomas Meyer <thomas@m3y3r.de>
    Fixes: d7ffac33631b ("um: stdio_console: Make preferred console")
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: add quirks for Lenovo OneLink+ Dock [+ + +]
Author: Jean-Francois Le Fillatre <jflf_kernel@gmx.com>
Date:   Wed Aug 24 21:13:21 2022 +0200

    usb: add quirks for Lenovo OneLink+ Dock
    
    [ Upstream commit 3d5f70949f1b1168fbb17d06eb5c57e984c56c58 ]
    
    The Lenovo OneLink+ Dock contains two VL812 USB3.0 controllers:
    17ef:1018 upstream
    17ef:1019 downstream
    
    Those two controllers both have problems with some USB3.0 devices,
    particularly self-powered ones. Typical error messages include:
    
      Timeout while waiting for setup device command
      device not accepting address X, error -62
      unable to enumerate USB device
    
    By process of elimination the controllers themselves were identified as
    the cause of the problem. Through trial and error the issue was solved
    by using USB_QUIRK_RESET_RESUME for both chips.
    
    Signed-off-by: Jean-Francois Le Fillatre <jflf_kernel@gmx.com>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20220824191320.17883-1-jflf_kernel@gmx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
USB: core: Fix RST error in hub.c [+ + +]
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 1 10:36:34 2022 -0400

    USB: core: Fix RST error in hub.c
    
    commit 766a96dc558385be735a370db867e302c8f22153 upstream.
    
    A recent commit added an invalid RST expression to a kerneldoc comment
    in hub.c.  The fix is trivial.
    
    Fixes: 9c6d778800b9 ("USB: core: Prevent nested device-reset calls")
    Cc: <stable@vger.kernel.org>
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YxDDcsLtRZ7c20pq@rowland.harvard.edu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: dwc3: core: leave default DMA if the controller does not support 64-bit DMA [+ + +]
Author: William Wu <william.wu@rock-chips.com>
Date:   Thu Sep 1 16:34:46 2022 +0800

    usb: dwc3: core: leave default DMA if the controller does not support 64-bit DMA
    
    commit 91062e663b261815573ce00967b1895a99e668df upstream.
    
    On some DWC3 controllers (e.g. Rockchip SoCs), the DWC3 core
    doesn't support 64-bit DMA address width. In this case, this
    driver should use the default 32-bit mask. Otherwise, the DWC3
    controller will break if it runs on above 4GB physical memory
    environment.
    
    This patch reads the DWC_USB3_AWIDTH bits of GHWPARAMS0 which
    used for the DMA address width, and only configure 64-bit DMA
    mask if the DWC_USB3_AWIDTH is 64.
    
    Fixes: 45d39448b4d0 ("usb: dwc3: support 64 bit DMA in platform driver")
    Cc: stable <stable@kernel.org>
    Reviewed-by: Sven Peter <sven@svenpeter.dev>
    Signed-off-by: William Wu <william.wu@rock-chips.com>
    Link: https://lore.kernel.org/r/20220901083446.3799754-1-william.wu@rock-chips.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: udc-xilinx: replace memcpy with memcpy_toio [+ + +]
Author: Piyush Mehta <piyush.mehta@amd.com>
Date:   Wed Aug 24 12:42:53 2022 +0530

    usb: gadget: udc-xilinx: replace memcpy with memcpy_toio
    
    [ Upstream commit 8cb339f1c1f04baede9d54c1e40ac96247a6393b ]
    
    For ARM processor, unaligned access to device memory is not allowed.
    Method memcpy does not take care of alignment.
    
    USB detection failure with the unaligned address of memory access, with
    below kernel crash. To fix the unaligned address the kernel panic issue,
    replace memcpy with memcpy_toio method.
    
    Kernel crash:
    Unable to handle kernel paging request at virtual address ffff80000c05008a
    Mem abort info:
      ESR = 0x96000061
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x21: alignment fault
    Data abort info:
      ISV = 0, ISS = 0x00000061
      CM = 0, WnR = 1
    swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000000143b000
    [ffff80000c05008a] pgd=100000087ffff003, p4d=100000087ffff003,
    pud=100000087fffe003, pmd=1000000800bcc003, pte=00680000a0010713
    Internal error: Oops: 96000061 [#1] SMP
    Modules linked in:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.19-xilinx-v2022.1 #1
    Hardware name: ZynqMP ZCU102 Rev1.0 (DT)
    pstate: 200000c5 (nzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : __memcpy+0x30/0x260
    lr : __xudc_ep0_queue+0xf0/0x110
    sp : ffff800008003d00
    x29: ffff800008003d00 x28: ffff800009474e80 x27: 00000000000000a0
    x26: 0000000000000100 x25: 0000000000000012 x24: ffff000800bc8080
    x23: 0000000000000001 x22: 0000000000000012 x21: ffff000800bc8080
    x20: 0000000000000012 x19: ffff000800bc8080 x18: 0000000000000000
    x17: ffff800876482000 x16: ffff800008004000 x15: 0000000000004000
    x14: 00001f09785d0400 x13: 0103020101005567 x12: 0781400000000200
    x11: 00000000c5672a10 x10: 00000000000008d0 x9 : ffff800009463cf0
    x8 : ffff8000094757b0 x7 : 0201010055670781 x6 : 4000000002000112
    x5 : ffff80000c05009a x4 : ffff000800a15012 x3 : ffff00080362ad80
    x2 : 0000000000000012 x1 : ffff000800a15000 x0 : ffff80000c050088
    Call trace:
     __memcpy+0x30/0x260
     xudc_ep0_queue+0x3c/0x60
     usb_ep_queue+0x38/0x44
     composite_ep0_queue.constprop.0+0x2c/0xc0
     composite_setup+0x8d0/0x185c
     configfs_composite_setup+0x74/0xb0
     xudc_irq+0x570/0xa40
     __handle_irq_event_percpu+0x58/0x170
     handle_irq_event+0x60/0x120
     handle_fasteoi_irq+0xc0/0x220
     handle_domain_irq+0x60/0x90
     gic_handle_irq+0x74/0xa0
     call_on_irq_stack+0x2c/0x60
     do_interrupt_handler+0x54/0x60
     el1_interrupt+0x30/0x50
     el1h_64_irq_handler+0x18/0x24
     el1h_64_irq+0x78/0x7c
     arch_cpu_idle+0x18/0x2c
     do_idle+0xdc/0x15c
     cpu_startup_entry+0x28/0x60
     rest_init+0xc8/0xe0
     arch_call_rest_init+0x10/0x1c
     start_kernel+0x694/0x6d4
     __primary_switched+0xa4/0xac
    
    Fixes: 1f7c51660034 ("usb: gadget: Add xilinx usb2 device support")
    Cc: stable@vger.kernel.org
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Piyush Mehta <piyush.mehta@amd.com>
    Link: https://lore.kernel.org/r/20220824071253.1261096-1-piyush.mehta@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
USB: serial: option: add Quectel BG95 0x0203 composition [+ + +]
Author: Carl Yin(殷张成) <carl.yin@quectel.com>
Date:   Fri Sep 2 09:49:43 2022 +0000

    USB: serial: option: add Quectel BG95 0x0203 composition
    
    commit f8f67eff6847f9b8d753fa029723bcc54296055a upstream.
    
    Add support for the following Quectel BG95 composition:
    
    0x0203: Diag + GNSS + Modem + ECM
    
    usb-devices output:
    T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0203 Rev= 0.00
    S:  Manufacturer=Quectel, Incorporated
    S:  Product=Quectel LPWA Module
    S:  SerialNumber=71d3a21b
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Carl Yin <carl.yin@quectel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add Quectel RM520N [+ + +]
Author: jerry meng <jerry-meng@foxmail.com>
Date:   Mon Sep 5 14:35:33 2022 +0800

    USB: serial: option: add Quectel RM520N
    
    commit d640c4cb8f2f933c0ca896541f9de7fb1ae245f4 upstream.
    
    add support for Quectel RM520N which is based on Qualcomm SDX62 chip.
    
    0x0801: DIAG + NMEA + AT + MODEM + RMNET
    
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 10 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0801 Rev= 5.04
    S:  Manufacturer=Quectel
    S:  Product=RM520N-GL
    S:  SerialNumber=384af524
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: jerry meng <jerry-meng@foxmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vmlinux.lds.h: CFI: Reduce alignment of jump-table to function alignment [+ + +]
Author: Will Deacon <will@kernel.org>
Date:   Thu Sep 22 22:57:15 2022 +0100

    vmlinux.lds.h: CFI: Reduce alignment of jump-table to function alignment
    
    commit 13b0566962914e167cb3238fbe29ced618f07a27 upstream.
    
    Due to undocumented, hysterical raisins on x86, the CFI jump-table
    sections in .text are needlessly aligned to PMD_SIZE in the vmlinux
    linker script. When compiling a CFI-enabled arm64 kernel with a 64KiB
    page-size, a PMD maps 512MiB of virtual memory and so the .text section
    increases to a whopping 940MiB and blows the final Image up to 960MiB.
    Others report a link failure.
    
    Since the CFI jump-table requires only instruction alignment, reduce the
    alignment directives to function alignment for parity with other parts
    of the .text section. This reduces the size of the .text section for the
    aforementioned 64KiB page size arm64 kernel to 19MiB for a much more
    reasonable total Image size of 39MiB.
    
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: "Mohan Rao .vanimina" <mailtoc.mohanrao@gmail.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/all/CAL_GTzigiNOMYkOPX1KDnagPhJtFNqSK=1USNbS0wUL4PW6-Uw@mail.gmail.com/
    Fixes: cf68fffb66d6 ("add support for Clang CFI")
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Tested-by: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20220922215715.13345-1-will@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: iwlwifi: Mark IWLMEI as broken [+ + +]
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Wed Sep 7 15:44:50 2022 +0200

    wifi: iwlwifi: Mark IWLMEI as broken
    
    [ Upstream commit 8997f5c8a62760db69fd5c56116705796322c8ed ]
    
    The iwlmei driver breaks iwlwifi when returning from suspend. The interface
    ends up in the 'down' state after coming back from suspend. And iwd doesn't
    touch the interface state, but wpa_supplicant does, so the bug only happens on
    iwd.
    
    The bug report[0] has been open for four months now, and no fix seems to be
    forthcoming. Since just disabling the iwlmei driver works as a workaround,
    let's mark the config option as broken until it can be fixed properly.
    
    [0] https://bugzilla.kernel.org/show_bug.cgi?id=215937
    
    Fixes: 2da4366f9e2c ("iwlwifi: mei: add the driver to allow cooperation with CSME")
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Acked-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20220907134450.1183045-1-toke@toke.dk
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: fix reading current per-tid starting sequence number for aggregation [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Aug 26 20:23:29 2022 +0200

    wifi: mt76: fix reading current per-tid starting sequence number for aggregation
    
    commit c3a510e2b53785df31d882a773c4c0780b4c825f upstream.
    
    The code was accidentally shifting register values down by tid % 32 instead of
    (tid * field_size) % 32.
    
    Cc: stable@vger.kernel.org
    Fixes: a28bef561a5c ("mt76: mt7615: re-enable offloading of sequence number assignment")
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20220826182329.18155-1-nbd@nbd.name
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wireguard: netlink: avoid variable-sized memcpy on sockaddr [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Sep 16 15:37:40 2022 +0100

    wireguard: netlink: avoid variable-sized memcpy on sockaddr
    
    [ Upstream commit 26c013108c12b94bc023bf19198a4300596c98b1 ]
    
    Doing a variable-sized memcpy is slower, and the compiler isn't smart
    enough to turn this into a constant-size assignment.
    
    Further, Kees' latest fortified memcpy will actually bark, because the
    destination pointer is type sockaddr, not explicitly sockaddr_in or
    sockaddr_in6, so it thinks there's an overflow:
    
        memcpy: detected field-spanning write (size 28) of single field
        "&endpoint.addr" at drivers/net/wireguard/netlink.c:446 (size 16)
    
    Fix this by just assigning by using explicit casts for each checked
    case.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reported-by: syzbot+a448cda4dba2dac50de5@syzkaller.appspotmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wireguard: ratelimiter: disable timings test by default [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Sep 16 15:37:38 2022 +0100

    wireguard: ratelimiter: disable timings test by default
    
    [ Upstream commit 684dec3cf45da2b0848298efae4adf3b2aeafeda ]
    
    A previous commit tried to make the ratelimiter timings test more
    reliable but in the process made it less reliable on other
    configurations. This is an impossible problem to solve without
    increasingly ridiculous heuristics. And it's not even a problem that
    actually needs to be solved in any comprehensive way, since this is only
    ever used during development. So just cordon this off with a DEBUG_
    ifdef, just like we do for the trie's randomized tests, so it can be
    enabled while hacking on the code, and otherwise disabled in CI. In the
    process we also revert 151c8e499f47.
    
    Fixes: 151c8e499f47 ("wireguard: ratelimiter: use hrtimer in selftest")
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
workqueue: don't skip lockdep work dependency in cancel_work_sync() [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Fri Jul 29 13:30:23 2022 +0900

    workqueue: don't skip lockdep work dependency in cancel_work_sync()
    
    [ Upstream commit c0feea594e058223973db94c1c32a830c9807c86 ]
    
    Like Hillf Danton mentioned
    
      syzbot should have been able to catch cancel_work_sync() in work context
      by checking lockdep_map in __flush_work() for both flush and cancel.
    
    in [1], being unable to report an obvious deadlock scenario shown below is
    broken. From locking dependency perspective, sync version of cancel request
    should behave as if flush request, for it waits for completion of work if
    that work has already started execution.
    
      ----------
      #include <linux/module.h>
      #include <linux/sched.h>
      static DEFINE_MUTEX(mutex);
      static void work_fn(struct work_struct *work)
      {
        schedule_timeout_uninterruptible(HZ / 5);
        mutex_lock(&mutex);
        mutex_unlock(&mutex);
      }
      static DECLARE_WORK(work, work_fn);
      static int __init test_init(void)
      {
        schedule_work(&work);
        schedule_timeout_uninterruptible(HZ / 10);
        mutex_lock(&mutex);
        cancel_work_sync(&work);
        mutex_unlock(&mutex);
        return -EINVAL;
      }
      module_init(test_init);
      MODULE_LICENSE("GPL");
      ----------
    
    The check this patch restores was added by commit 0976dfc1d0cd80a4
    ("workqueue: Catch more locking problems with flush_work()").
    
    Then, lockdep's crossrelease feature was added by commit b09be676e0ff25bd
    ("locking/lockdep: Implement the 'crossrelease' feature"). As a result,
    this check was once removed by commit fd1a5b04dfb899f8 ("workqueue: Remove
    now redundant lock acquisitions wrt. workqueue flushes").
    
    But lockdep's crossrelease feature was removed by commit e966eaeeb623f099
    ("locking/lockdep: Remove the cross-release locking checks"). At this
    point, this check should have been restored.
    
    Then, commit d6e89786bed977f3 ("workqueue: skip lockdep wq dependency in
    cancel_work_sync()") introduced a boolean flag in order to distinguish
    flush_work() and cancel_work_sync(), for checking "struct workqueue_struct"
    dependency when called from cancel_work_sync() was causing false positives.
    
    Then, commit 87915adc3f0acdf0 ("workqueue: re-add lockdep dependencies for
    flushing") tried to restore "struct work_struct" dependency check, but by
    error checked this boolean flag. Like an example shown above indicates,
    "struct work_struct" dependency needs to be checked for both flush_work()
    and cancel_work_sync().
    
    Link: https://lkml.kernel.org/r/20220504044800.4966-1-hdanton@sina.com [1]
    Reported-by: Hillf Danton <hdanton@sina.com>
    Suggested-by: Lai Jiangshan <jiangshanlai@gmail.com>
    Fixes: 87915adc3f0acdf0 ("workqueue: re-add lockdep dependencies for flushing")
    Cc: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xen/xenbus: fix xenbus_setup_ring() [+ + +]
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Sep 15 15:05:45 2022 +0200

    xen/xenbus: fix xenbus_setup_ring()
    
    commit ce6b8ccdef959ba86b2711e090e84a987a000bf7 upstream.
    
    Commit 4573240f0764 ("xen/xenbus: eliminate xenbus_grant_ring()")
    introduced an error for initialization of multi-page rings.
    
    Cc: stable@vger.kernel.org
    Fixes: 4573240f0764 ("xen/xenbus: eliminate xenbus_grant_ring()")
    Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xfrm: fix XFRMA_LASTUSED comment [+ + +]
Author: Antony Antony <antony.antony@secunet.com>
Date:   Wed Jul 27 17:40:53 2022 +0200

    xfrm: fix XFRMA_LASTUSED comment
    
    [ Upstream commit 36d763509be326bb383b1b1852a129ff58d74e3b ]
    
    It is a __u64, internally time64_t.
    
    Fixes: bf825f81b454 ("xfrm: introduce basic mark infrastructure")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>