Linux 5.17.1

 
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board [+ + +]
Author: Mark Cilissen <mark@yotsuba.nl>
Date:   Mon Mar 7 04:16:58 2022 +0100

    ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
    
    commit e702196bf85778f2c5527ca47f33ef2e2fca8297 upstream.
    
    On this board the ACPI RSDP structure points to both a RSDT and an XSDT,
    but the XSDT points to a truncated FADT. This causes all sorts of trouble
    and usually a complete failure to boot after the following error occurs:
    
      ACPI Error: Unsupported address space: 0x20 (*/hwregs-*)
      ACPI Error: AE_SUPPORT, Unable to initialize fixed events (*/evevent-*)
      ACPI: Unable to start ACPI Interpreter
    
    This leaves the ACPI implementation in such a broken state that subsequent
    kernel subsystem initialisations go wrong, resulting in among others
    mismapped PCI memory, SATA and USB enumeration failures, and freezes.
    
    As this is an older embedded platform that will likely never see any BIOS
    updates to address this issue and its default shipping OS only complies to
    ACPI 1.0, work around this by forcing `acpi=rsdt`. This patch, applied on
    top of Linux 5.10.102, was confirmed on real hardware to fix the issue.
    
    Signed-off-by: Mark Cilissen <mark@yotsuba.nl>
    Cc: All applicable <stable@vger.kernel.org>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3 [+ + +]
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Sun Feb 13 16:49:20 2022 +0100

    ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
    
    commit 7dacee0b9efc8bd061f097b1a8d4daa6591af0c6 upstream.
    
    For some reason, the Microsoft Surface Go 3 uses the standard ACPI
    interface for battery information, but does not use the standard PNP0C0A
    HID. Instead it uses MSHW0146 as identifier. Add that ID to the driver
    as this seems to work well.
    
    Additionally, the power state is not updated immediately after the AC
    has been (un-)plugged, so add the respective quirk for that.
    
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU [+ + +]
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Tue Mar 15 20:02:28 2022 +0100

    ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
    
    commit c844d22fe0c0b37dc809adbdde6ceb6462c43acf upstream.
    
    Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a working
    native and video interface. However the default detection mechanism first
    registers the video interface before unregistering it again and switching
    to the native interface during boot. This results in a dangling SBIOS
    request for backlight change for some reason, causing the backlight to
    switch to ~2% once per boot on the first power cord connect or disconnect
    event. Setting the native interface explicitly circumvents this buggy
    behaviour by avoiding the unregistering process.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: cmipci: Restore aux vol on suspend/resume [+ + +]
Author: Jonathan Teh <jonathan.teh@outlook.com>
Date:   Sun Mar 13 19:56:17 2022 +0000

    ALSA: cmipci: Restore aux vol on suspend/resume
    
    commit c14231cc04337c2c2a937db084af342ce704dbde upstream.
    
    Save and restore CM_REG_AUX_VOL instead of register 0x24 twice on
    suspend/resume.
    
    Tested on CMI8738LX.
    
    Fixes: cb60e5f5b2b1 ("[ALSA] cmipci - Add PM support")
    Signed-off-by: Jonathan Teh <jonathan.teh@outlook.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/DBAPR04MB7366CB3EA9C8521C35C56E8B920E9@DBAPR04MB7366.eurprd04.prod.outlook.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 [+ + +]
Author: huangwenhui <huangwenhuia@uniontech.com>
Date:   Fri Mar 11 17:38:36 2022 +0800

    ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671
    
    commit 882bd07f564f97fca6e42ce6ce627ce24ce1ef5a upstream.
    
    On a HP 288 Pro G8, the front mic could not be detected.In order to
    get it working, the pin configuration needs to be set correctly, and
    the ALC671_FIXUP_HP_HEADSET_MIC2 fixup needs to be applied.
    
    Signed-off-by: huangwenhui <huangwenhuia@uniontech.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220311093836.20754-1-huangwenhuia@uniontech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for ASUS GA402 [+ + +]
Author: Jason Zheng <jasonzheng2004@gmail.com>
Date:   Sun Mar 13 04:22:16 2022 -0500

    ALSA: hda/realtek: Add quirk for ASUS GA402
    
    commit b7557267c233b55d8e8d7ba4c68cf944fe2ec02c upstream.
    
    ASUS GA402 requires a workaround to manage the routing of its 4 speakers
    like the other ASUS models. Add a corresponding quirk entry to fix it.
    
    Signed-off-by: Jason Zheng <jasonzheng2004@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220313092216.29858-1-jasonzheng2004@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for Clevo NP50PNJ [+ + +]
Author: Tim Crawford <tcrawford@system76.com>
Date:   Mon Mar 7 12:32:29 2022 -0700

    ALSA: hda/realtek: Add quirk for Clevo NP50PNJ
    
    commit 9cb727506704b5323998047789fc871e64a6aa14 upstream.
    
    Fixes headset detection on Clevo NP50PNJ.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220307193229.5141-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add quirk for Clevo NP70PNJ [+ + +]
Author: Tim Crawford <tcrawford@system76.com>
Date:   Fri Mar 4 10:08:40 2022 -0700

    ALSA: hda/realtek: Add quirk for Clevo NP70PNJ
    
    commit 0c20fce13e6e111463e3a15ce3cf6713fe518388 upstream.
    
    Fixes headset detection on Clevo NP70PNJ.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220304170840.3351-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: oss: Fix PCM OSS buffer allocation overflow [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 18 09:20:36 2022 +0100

    ALSA: oss: Fix PCM OSS buffer allocation overflow
    
    commit efb6402c3c4a7c26d97c92d70186424097b6e366 upstream.
    
    We've got syzbot reports hitting INT_MAX overflow at vmalloc()
    allocation that is called from snd_pcm_plug_alloc().  Although we
    apply the restrictions to input parameters, it's based only on the
    hw_params of the underlying PCM device.  Since the PCM OSS layer
    allocates a temporary buffer for the data conversion, the size may
    become unexpectedly large when more channels or higher rates is given;
    in the reported case, it went over INT_MAX, hence it hits WARN_ON().
    
    This patch is an attempt to avoid such an overflow and an allocation
    for too large buffers.  First off, it adds the limit of 1MB as the
    upper bound for period bytes.  This must be large enough for all use
    cases, and we really don't want to handle a larger temporary buffer
    than this size.  The size check is performed at two places, where the
    original period bytes is calculated and where the plugin buffer size
    is calculated.
    
    In addition, the driver uses array_size() and array3_size() for
    multiplications to catch overflows for the converted period size and
    buffer bytes.
    
    Reported-by: syzbot+72732c532ac1454eeee9@syzkaller.appspotmail.com
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/00000000000085b1b305da5a66f3@google.com
    Link: https://lore.kernel.org/r/20220318082036.29699-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec [+ + +]
Author: Giacomo Guiduzzi <guiduzzi.giacomo@gmail.com>
Date:   Tue Mar 22 21:06:54 2022 +0100

    ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
    
    commit 17aaf0193392cb3451bf0ac75ba396ec4cbded6e upstream.
    
    Tests 72 and 78 for ALSA in kselftest fail due to reading
    inconsistent values from some devices on a VirtualBox
    Virtual Machine using the snd_intel8x0 driver for the AC'97
    Audio Controller device.
    Taking for example test number 72, this is what the test reports:
    "Surround Playback Volume.0 expected 1 but read 0, is_volatile 0"
    "Surround Playback Volume.1 expected 0 but read 1, is_volatile 0"
    These errors repeat for each value from 0 to 31.
    
    Taking a look at these error messages it is possible to notice
    that the written values are read back swapped.
    When the write is performed, these values are initially stored in
    an array used to sanity-check them and write them in the pcmreg
    array. To write them, the two one-byte values are packed together
    in a two-byte variable through bitwise operations: the first
    value is shifted left by one byte and the second value is stored in the
    right byte through a bitwise OR. When reading the values back,
    right shifts are performed to retrieve the previously stored
    bytes. These shifts are executed in the wrong order, thus
    reporting the values swapped as shown above.
    
    This patch fixes this mistake by reversing the read
    operations' order.
    
    Signed-off-by: Giacomo Guiduzzi <guiduzzi.giacomo@gmail.com>
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220322200653.15862-1-guiduzzi.giacomo@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pcm: Add stream lock during PCM reset ioctl operations [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 22 18:13:25 2022 +0100

    ALSA: pcm: Add stream lock during PCM reset ioctl operations
    
    commit 1f68915b2efd0d6bfd6e124aa63c94b3c69f127c upstream.
    
    snd_pcm_reset() is a non-atomic operation, and it's allowed to run
    during the PCM stream running.  It implies that the manipulation of
    hw_ptr and other parameters might be racy.
    
    This patch adds the PCM stream lock at appropriate places in
    snd_pcm_*_reset() actions for covering that.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20220322171325.4355-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pcm: Fix races among concurrent hw_params and hw_free calls [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 22 18:07:17 2022 +0100

    ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
    
    commit 92ee3c60ec9fe64404dc035e7c41277d74aa26cb upstream.
    
    Currently we have neither proper check nor protection against the
    concurrent calls of PCM hw_params and hw_free ioctls, which may result
    in a UAF.  Since the existing PCM stream lock can't be used for
    protecting the whole ioctl operations, we need a new mutex to protect
    those racy calls.
    
    This patch introduced a new mutex, runtime->buffer_mutex, and applies
    it to both hw_params and hw_free ioctl code paths.  Along with it, the
    both functions are slightly modified (the mmap_count check is moved
    into the state-check block) for code simplicity.
    
    Reported-by: Hu Jiahui <kirin.say@gmail.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20220322170720.3529-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pcm: Fix races among concurrent prealloc proc writes [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 22 18:07:20 2022 +0100

    ALSA: pcm: Fix races among concurrent prealloc proc writes
    
    commit 69534c48ba8ce552ce383b3dfdb271ffe51820c3 upstream.
    
    We have no protection against concurrent PCM buffer preallocation
    changes via proc files, and it may potentially lead to UAF or some
    weird problem.  This patch applies the PCM open_mutex to the proc
    write operation for avoiding the racy proc writes and the PCM stream
    open (and further operations).
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20220322170720.3529-5-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 22 18:07:19 2022 +0100

    ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls
    
    commit 3c3201f8c7bb77eb53b08a3ca8d9a4ddc500b4c0 upstream.
    
    Like the previous fixes to hw_params and hw_free ioctl races, we need
    to paper over the concurrent prepare ioctl calls against hw_params and
    hw_free, too.
    
    This patch implements the locking with the existing
    runtime->buffer_mutex for prepare ioctls.  Unlike the previous case
    for snd_pcm_hw_hw_params() and snd_pcm_hw_free(), snd_pcm_prepare() is
    performed to the linked streams, hence the lock can't be applied
    simply on the top.  For tracking the lock in each linked substream, we
    modify snd_pcm_action_group() slightly and apply the buffer_mutex for
    the case stream_lock=false (formerly there was no lock applied)
    there.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20220322170720.3529-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: pcm: Fix races among concurrent read/write and buffer changes [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 22 18:07:18 2022 +0100

    ALSA: pcm: Fix races among concurrent read/write and buffer changes
    
    commit dca947d4d26dbf925a64a6cfb2ddbc035e831a3d upstream.
    
    In the current PCM design, the read/write syscalls (as well as the
    equivalent ioctls) are allowed before the PCM stream is running, that
    is, at PCM PREPARED state.  Meanwhile, we also allow to re-issue
    hw_params and hw_free ioctl calls at the PREPARED state that may
    change or free the buffers, too.  The problem is that there is no
    protection against those mix-ups.
    
    This patch applies the previously introduced runtime->buffer_mutex to
    the read/write operations so that the concurrent hw_params or hw_free
    call can no longer interfere during the operation.  The mutex is
    unlocked before scheduling, so we don't take it too long.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Link: https://lore.kernel.org/r/20220322170720.3529-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: add mapping for new Corsair Virtuoso SE [+ + +]
Author: Reza Jahanbakhshi <reza.jahanbakhshi@gmail.com>
Date:   Fri Mar 4 22:23:02 2022 +0100

    ALSA: usb-audio: add mapping for new Corsair Virtuoso SE
    
    commit cd94df1795418056a19ff4cb44eadfc18ac99a57 upstream.
    
    New device id for Corsair Virtuoso SE RGB Wireless that currently is not
    in the mixer_map. This entry in the mixer_map is necessary in order to
    label its mixer appropriately and allow userspace to pick the correct
    volume controls. For instance, my own Corsair Virtuoso SE RGB Wireless
    headset has this new ID and consequently, the sidetone and volume are not
     working correctly without this change.
    > sudo lsusb -v | grep -i corsair
    Bus 007 Device 011: ID 1b1c:0a40 Corsair CORSAIR VIRTUOSO SE Wireless Gam
      idVendor           0x1b1c Corsair
      iManufacturer           1 Corsair
      iProduct                2 CORSAIR VIRTUOSO SE Wireless Gaming Headset
    
    Signed-off-by: Reza Jahanbakhshi <reza.jahanbakhshi@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220304212303.195949-1-reza.jahanbakhshi@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB [+ + +]
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Mar 11 21:14:00 2022 +0100

    ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
    
    commit 0f306cca42fe879694fb5e2382748c43dc9e0196 upstream.
    
    For the RODE NT-USB the lowest Playback mixer volume setting mutes the
    audio output. But it is not reported as such causing e.g. PulseAudio to
    accidentally mute the device when selecting a low volume.
    
    Fix this by applying the existing quirk for this kind of issue when the
    device is detected.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220311201400.235892-1-lars@metafoo.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 15 17:41:58 2022 +0100

    ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
    
    commit 455c5653f50e10b4f460ef24e99f0044fbe3401c upstream.
    
    This is essentially a revert of the commit dc865fb9e7c2 ("ASoC: sti:
    Use snd_pcm_stop_xrun() helper"), which converted the manual
    snd_pcm_stop() calls with snd_pcm_stop_xrun().
    
    The commit above introduced a deadlock as snd_pcm_stop_xrun() itself
    takes the PCM stream lock while the caller already holds it.  Since
    the conversion was done only for consistency reason and the open-call
    with snd_pcm_stop() to the XRUN state is a correct usage, let's revert
    the commit back as the fix.
    
    Fixes: dc865fb9e7c2 ("ASoC: sti: Use snd_pcm_stop_xrun() helper")
    Reported-by: Daniel Palmer <daniel@0x0f.com>
    Cc: Arnaud POULIQUEN <arnaud.pouliquen@st.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220315091319.3351522-1-daniel@0x0f.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Reviewed-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Link: https://lore.kernel.org/r/20220315164158.19804-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: btusb: Add another Realtek 8761BU [+ + +]
Author: Helmut Grohne <helmut@subdivi.de>
Date:   Sat Feb 26 16:22:56 2022 +0100

    Bluetooth: btusb: Add another Realtek 8761BU
    
    commit 6dfbe29f45fb0bde29213dbd754a79e8bfc6ecef upstream.
    
    This device is sometimes wrapped with a label "EDUP".
    
    T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#=107 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2550 ProdID=8761 Rev= 2.00
    S:  Manufacturer=Realtek
    S:  Product=Bluetooth Radio
    S:  SerialNumber=00E04C239987
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Helmut Grohne <helmut@subdivi.de>
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1955351
    Cc: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE [+ + +]
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Wed Jan 19 14:18:37 2022 -0600

    Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE
    
    commit 2e7b4a328ed6ea57d22853939e69bc86c560996d upstream.
    
    This Realtek device has both wifi and BT components. The latter reports
    a USB ID of 0bda:2852, which is not in the table.
    
    BT device description in /sys/kernel/debug/usb/devices contains the following entries:
    
    T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=0bda ProdID=2852 Rev= 0.00
    S: Manufacturer=Realtek
    S: Product=Bluetooth Radio
    S: SerialNumber=00e04c000001
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
    E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
    I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
    I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
    I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
    I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
    I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
    E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
    
    The missing USB_ID was reported by user trius65 at https://github.com/lwfinger/rtw89/issues/122
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: btusb: Use quirk to skip HCI_FLT_CLEAR_ALL on fake CSR controllers [+ + +]
Author: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
Date:   Mon Mar 7 21:04:45 2022 +0100

    Bluetooth: btusb: Use quirk to skip HCI_FLT_CLEAR_ALL on fake CSR controllers
    
    commit b3cf94c8b6b2f1a2b94825a025db291da2b151fd upstream.
    
    Another subset of the more recent batch of Chinese clones aren't
    specs-compliant and seem to lock up whenever they receive a
    HCI_OP_SET_EVENT_FLT with flt_type set to zero/HCI_FLT_CLEAR_ALL,
    which on Linux (until the recent HCI state-machine refactor) happened
    right at BR/EDR setup. As there are other less-straightforward ways
    of reaching those operations, this patch is still relevant.
    
    So, while all the previous efforts to wrangle the herd of fake CSRs
    seem to be paying off (and these also get detected as such) we
    still need to take care of this quirk; testers seem to agree
    that these dongles tend to work well enough afterwards.
    
    From some cursory USB packet capture on Windows it seems like
    that driver doesn't appear to use this clear-all functionality at all.
    
    This patch was tested on some really popular AliExpress-style
    dongles, in my case marked as "V5.0". Chip markings: UG8413,
    the backside of the PCB says "USB Dangel" (sic).
    
    Here is the `hciconfig -a` output; for completeness:
    
    hci0:   Type: Primary  Bus: USB
            BD Address: 00:1A:7D:DA:7X:XX  ACL MTU: 679:8  SCO MTU: 48:16
            UP RUNNING PSCAN ISCAN
            Features: 0xbf 0x3e 0x4d 0xfa 0xdb 0x3d 0x7b 0xc7
            Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
            Link policy: RSWITCH SNIFF
            Link mode: PERIPHERAL ACCEPT
            Name: 'CSR8510 A10.'
            Class: 0x7c0104
            Service Classes: Rendering, Capturing, Object Transfer, Audio, Telephony
            Device Class: Computer, Desktop workstation
            HCI Version: 4.0 (0x6)  Revision: 0x3120
            LMP Version: 4.0 (0x6)  Subversion: 0x22bb
            Manufacturer: Cambridge Silicon Radio (10)
    
    As well as the `lsusb -vv -d 0a12:0001`:
    
    ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass          224 Wireless
      bDeviceSubClass         1 Radio Frequency
      bDeviceProtocol         1 Bluetooth
      bMaxPacketSize0        64
      idVendor           0x0a12 Cambridge Silicon Radio, Ltd
      idProduct          0x0001 Bluetooth Dongle (HCI mode)
      bcdDevice           88.91
      iManufacturer           0
      iProduct                2 BT DONGLE10
      iSerial                 0
      bNumConfigurations      1
    
    Also, changed the benign dmesg print that shows up whenever the
    generic force-suspend fails from bt_dev_err to bt_dev_warn;
    it's okay and done on a best-effort basis, not a problem
    if that does not work.
    
    Also, swapped the HCI subver and LMP subver numbers for the Barrot
    in the comment, which I copied wrong the last time around.
    
    Fixes: 81cac64ba258a ("Bluetooth: Deal with USB devices that are faking CSR vendor")
    Fixes: cde1a8a992875 ("Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers")
    Fixes: d74e0ae7e0303 ("Bluetooth: btusb: Fix detection of some fake CSR controllers with a bcdDevice val of 0x0134")
    Fixes: 0671c0662383e ("Bluetooth: btusb: Add workaround for remote-wakeup issues with Barrot 8041a02 fake CSR controllers")
    Fixes: f4292e2faf522 ("Bluetooth: btusb: Make the CSR clone chip force-suspend workaround more generic")
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=60824
    Link: https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07
    
    Cc: stable@vger.kernel.org
    Cc: Hans de Goede <hdegoede@redhat.com>
    Tested-by: Gonzalo Tornaría <tornaria@cmat.edu.uy>
    Tested-by: Mateus Lemos <lemonsmateus@gmail.com>
    Tested-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
    Signed-off-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: hci_sync: Add a new quirk to skip HCI_FLT_CLEAR_ALL [+ + +]
Author: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
Date:   Mon Mar 7 21:04:44 2022 +0100

    Bluetooth: hci_sync: Add a new quirk to skip HCI_FLT_CLEAR_ALL
    
    commit 0eaecfb2e4814d51ab172df3823e35d7c488b6d2 upstream.
    
    Some controllers have problems with being sent a command to clear
    all filtering. While the HCI code does not unconditionally
    send a clear-all anymore at BR/EDR setup (after the state machine
    refactor), there might be more ways of hitting these codepaths
    in the future as the kernel develops.
    
    Cc: stable@vger.kernel.org
    Cc: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
crypto: qat - disable registration of algorithms [+ + +]
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Fri Mar 4 17:54:47 2022 +0000

    crypto: qat - disable registration of algorithms
    
    commit 8893d27ffcaf6ec6267038a177cb87bcde4dd3de upstream.
    
    The implementations of aead and skcipher in the QAT driver do not
    support properly requests with the CRYPTO_TFM_REQ_MAY_BACKLOG flag set.
    If the HW queue is full, the driver returns -EBUSY but does not enqueue
    the request.
    This can result in applications like dm-crypt waiting indefinitely for a
    completion of a request that was never submitted to the hardware.
    
    To avoid this problem, disable the registration of all crypto algorithms
    in the QAT driver by setting the number of crypto instances to 0 at
    configuration time.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drivers: net: xgene: Fix regression in CRC stripping [+ + +]
Author: Stephane Graber <stgraber@ubuntu.com>
Date:   Tue Mar 22 18:42:06 2022 -0400

    drivers: net: xgene: Fix regression in CRC stripping
    
    commit e9e6faeafaa00da1851bcf47912b0f1acae666b4 upstream.
    
    All packets on ingress (except for jumbo) are terminated with a 4-bytes
    CRC checksum. It's the responsability of the driver to strip those 4
    bytes. Unfortunately a change dating back to March 2017 re-shuffled some
    code and made the CRC stripping code effectively dead.
    
    This change re-orders that part a bit such that the datalen is
    immediately altered if needed.
    
    Fixes: 4902a92270fb ("drivers: net: xgene: Add workaround for errata 10GE_8/ENET_11")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephane Graber <stgraber@ubuntu.com>
    Tested-by: Stephane Graber <stgraber@ubuntu.com>
    Link: https://lore.kernel.org/r/20220322224205.752795-1-stgraber@ubuntu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/msm/gpu: Fix crash on devices without devfreq support (v2) [+ + +]
Author: Rob Clark <robdclark@chromium.org>
Date:   Tue Mar 8 10:48:44 2022 -0800

    drm/msm/gpu: Fix crash on devices without devfreq support (v2)
    
    commit 05afd57f4d34602a652fdaf58e0a2756b3c20fd4 upstream.
    
    Avoid going down devfreq paths on devices where devfreq is not
    initialized.
    
    v2: Change has_devfreq() logic [Dmitry]
    
    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Reported-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Fixes: 6aa89ae1fb04 ("drm/msm/gpu: Cancel idle/boost work on suspend")
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20220308184844.1121029-1-robdclark@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/virtio: Ensure that objs is not NULL in virtio_gpu_array_put_free() [+ + +]
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Mon Dec 13 19:31:22 2021 +0100

    drm/virtio: Ensure that objs is not NULL in virtio_gpu_array_put_free()
    
    commit 6b79f96f4a23846516e5e6e4dd37fc06f43a60dd upstream.
    
    If virtio_gpu_object_shmem_init() fails (e.g. due to fault injection, as it
    happened in the bug report by syzbot), virtio_gpu_array_put_free() could be
    called with objs equal to NULL.
    
    Ensure that objs is not NULL in virtio_gpu_array_put_free(), or otherwise
    return from the function.
    
    Cc: stable@vger.kernel.org # 5.13.x
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Reported-by: syzbot+e9072e90624a31dfa85f@syzkaller.appspotmail.com
    Fixes: 377f8331d0565 ("drm/virtio: fix possible leak/unlock virtio_gpu_object_array")
    Link: http://patchwork.freedesktop.org/patch/msgid/20211213183122.838119-1-roberto.sassu@huawei.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
jbd2: fix use-after-free of transaction_t race [+ + +]
Author: Ritesh Harjani <riteshh@linux.ibm.com>
Date:   Thu Feb 10 21:07:11 2022 +0530

    jbd2: fix use-after-free of transaction_t race
    
    commit cc16eecae687912238ee6efbff71ad31e2bc414e upstream.
    
    jbd2_journal_wait_updates() is called with j_state_lock held. But if
    there is a commit in progress, then this transaction might get committed
    and freed via jbd2_journal_commit_transaction() ->
    jbd2_journal_free_transaction(), when we release j_state_lock.
    So check for journal->j_running_transaction everytime we release and
    acquire j_state_lock to avoid use-after-free issue.
    
    Link: https://lore.kernel.org/r/948c2fed518ae739db6a8f7f83f1d58b504f87d0.1644497105.git.ritesh.list@gmail.com
    Fixes: 4f98186848707f53 ("jbd2: refactor wait logic for transaction updates into a common function")
    Cc: stable@kernel.org
    Reported-and-tested-by: syzbot+afa2ca5171d93e44b348@syzkaller.appspotmail.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.17.1 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Mar 28 10:03:22 2022 +0200

    Linux 5.17.1
    
    Link: https://lore.kernel.org/r/20220325150420.245733653@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Fenil Jain <fkjainco@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
llc: fix netdevice reference leaks in llc_ui_bind() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Mar 22 17:41:47 2022 -0700

    llc: fix netdevice reference leaks in llc_ui_bind()
    
    commit 764f4eb6846f5475f1244767d24d25dd86528a4a upstream.
    
    Whenever llc_ui_bind() and/or llc_ui_autobind()
    took a reference on a netdevice but subsequently fail,
    they must properly release their reference
    or risk the infamous message from unregister_netdevice()
    at device dismantle.
    
    unregister_netdevice: waiting for eth0 to become free. Usage count = 3
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: 赵子轩 <beraphin@gmail.com>
    Reported-by: Stoyan Manolov <smanolov@suse.de>
    Link: https://lore.kernel.org/r/20220323004147.1990845-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

llc: only change llc->dev when bind() succeeds [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Mar 24 20:58:27 2022 -0700

    llc: only change llc->dev when bind() succeeds
    
    commit 2d327a79ee176930dc72c131a970c891d367c1dc upstream.
    
    My latest patch, attempting to fix the refcount leak in a minimal
    way turned out to add a new bug.
    
    Whenever the bind operation fails before we attempt to grab
    a reference count on a device, we might release the device refcount
    of a prior successful bind() operation.
    
    syzbot was not happy about this [1].
    
    Note to stable teams:
    
    Make sure commit b37a46683739 ("netdevice: add the case if dev is NULL")
    is already present in your trees.
    
    [1]
    general protection fault, probably for non-canonical address 0xdffffc0000000070: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000380-0x0000000000000387]
    CPU: 1 PID: 3590 Comm: syz-executor361 Tainted: G        W         5.17.0-syzkaller-04796-g169e77764adc #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:llc_ui_connect+0x400/0xcb0 net/llc/af_llc.c:500
    Code: 80 3c 02 00 0f 85 fc 07 00 00 4c 8b a5 38 05 00 00 48 b8 00 00 00 00 00 fc ff df 49 8d bc 24 80 03 00 00 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 a9 07 00 00 49 8b b4 24 80 03 00 00 4c 89 f2 48
    RSP: 0018:ffffc900038cfcc0 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: ffff8880756eb600 RCX: 0000000000000000
    RDX: 0000000000000070 RSI: ffffc900038cfe3e RDI: 0000000000000380
    RBP: ffff888015ee5000 R08: 0000000000000001 R09: ffff888015ee5535
    R10: ffffed1002bdcaa6 R11: 0000000000000000 R12: 0000000000000000
    R13: ffffc900038cfe37 R14: ffffc900038cfe38 R15: ffff888015ee5012
    FS:  0000555555acd300(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020000280 CR3: 0000000077db6000 CR4: 00000000003506e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __sys_connect_file+0x155/0x1a0 net/socket.c:1900
     __sys_connect+0x161/0x190 net/socket.c:1917
     __do_sys_connect net/socket.c:1927 [inline]
     __se_sys_connect net/socket.c:1924 [inline]
     __x64_sys_connect+0x6f/0xb0 net/socket.c:1924
     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+0x44/0xae
    RIP: 0033:0x7f016acb90b9
    Code: 28 c3 e8 2a 14 00 00 66 2e 0f 1f 84 00 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007ffd417947f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f016acb90b9
    RDX: 0000000000000010 RSI: 0000000020000140 RDI: 0000000000000003
    RBP: 00007f016ac7d0a0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f016ac7d130
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    Modules linked in:
    ---[ end trace 0000000000000000 ]---
    RIP: 0010:llc_ui_connect+0x400/0xcb0 net/llc/af_llc.c:500
    
    Fixes: 764f4eb6846f ("llc: fix netdevice reference leaks in llc_ui_bind()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: 赵子轩 <beraphin@gmail.com>
    Cc: Stoyan Manolov <smanolov@suse.de>
    Link: https://lore.kernel.org/r/20220325035827.360418-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
m68k: fix access_ok for coldfire [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 15 17:59:41 2022 +0100

    m68k: fix access_ok for coldfire
    
    commit 26509034bef198525d5936c116cbd0c3fa491c0b upstream.
    
    While most m68k platforms use separate address spaces for user
    and kernel space, at least coldfire does not, and the other
    ones have a TASK_SIZE that is less than the entire 4GB address
    range.
    
    Using the default implementation of __access_ok() stops coldfire
    user space from trivially accessing kernel memory.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mac80211: fix potential double free on mesh join [+ + +]
Author: Linus Lüssing <ll@simonwunderlich.de>
Date:   Thu Mar 10 19:35:13 2022 +0100

    mac80211: fix potential double free on mesh join
    
    commit 4a2d4496e15ea5bb5c8e83b94ca8ca7fb045e7d3 upstream.
    
    While commit 6a01afcf8468 ("mac80211: mesh: Free ie data when leaving
    mesh") fixed a memory leak on mesh leave / teardown it introduced a
    potential memory corruption caused by a double free when rejoining the
    mesh:
    
      ieee80211_leave_mesh()
      -> kfree(sdata->u.mesh.ie);
      ...
      ieee80211_join_mesh()
      -> copy_mesh_setup()
         -> old_ie = ifmsh->ie;
         -> kfree(old_ie);
    
    This double free / kernel panics can be reproduced by using wpa_supplicant
    with an encrypted mesh (if set up without encryption via "iw" then
    ifmsh->ie is always NULL, which avoids this issue). And then calling:
    
      $ iw dev mesh0 mesh leave
      $ iw dev mesh0 mesh join my-mesh
    
    Note that typically these commands are not used / working when using
    wpa_supplicant. And it seems that wpa_supplicant or wpa_cli are going
    through a NETDEV_DOWN/NETDEV_UP cycle between a mesh leave and mesh join
    where the NETDEV_UP resets the mesh.ie to NULL via a memcpy of
    default_mesh_setup in cfg80211_netdev_notifier_call, which then avoids
    the memory corruption, too.
    
    The issue was first observed in an application which was not using
    wpa_supplicant but "Senf" instead, which implements its own calls to
    nl80211.
    
    Fixing the issue by removing the kfree()'ing of the mesh IE in the mesh
    join function and leaving it solely up to the mesh leave to free the
    mesh IE.
    
    Cc: stable@vger.kernel.org
    Fixes: 6a01afcf8468 ("mac80211: mesh: Free ie data when leaving mesh")
    Reported-by: Matthias Kretschmer <mathias.kretschmer@fit.fraunhofer.de>
    Signed-off-by: Linus Lüssing <ll@simonwunderlich.de>
    Tested-by: Mathias Kretschmer <mathias.kretschmer@fit.fraunhofer.de>
    Link: https://lore.kernel.org/r/20220310183513.28589-1-linus.luessing@c0d3.blue
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nds32: fix access_ok() checks in get/put_user [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Feb 14 15:48:14 2022 +0100

    nds32: fix access_ok() checks in get/put_user
    
    commit 8926d88ced46700bf6117ceaf391480b943ea9f4 upstream.
    
    The get_user()/put_user() functions are meant to check for
    access_ok(), while the __get_user()/__put_user() functions
    don't.
    
    This broke in 4.19 for nds32, when it gained an extraneous
    check in __get_user(), but lost the check it needs in
    __put_user().
    
    Fixes: 487913ab18c2 ("nds32: Extract the checking and getting pointer to a macro")
    Cc: stable@vger.kernel.org @ v4.19+
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
netfilter: nf_tables: initialize registers in nft_do_chain() [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Mar 17 12:04:42 2022 +0100

    netfilter: nf_tables: initialize registers in nft_do_chain()
    
    commit 4c905f6740a365464e91467aa50916555b28213d upstream.
    
    Initialize registers to avoid stack leak into userspace.
    
    Fixes: 96518518cc41 ("netfilter: add nftables")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

netfilter: nf_tables: validate registers coming from userspace. [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Mar 17 11:59:26 2022 +0100

    netfilter: nf_tables: validate registers coming from userspace.
    
    commit 6e1acfa387b9ff82cfc7db8cc3b6959221a95851 upstream.
    
    Bail out in case userspace uses unsupported registers.
    
    Fixes: 49499c3e6e18 ("netfilter: nf_tables: switch registers to 32 bit addressing")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rcu: Don't deboost before reporting expedited quiescent state [+ + +]
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Fri Jan 21 12:40:08 2022 -0800

    rcu: Don't deboost before reporting expedited quiescent state
    
    commit 10c535787436d62ea28156a4b91365fd89b5a432 upstream.
    
    Currently rcu_preempt_deferred_qs_irqrestore() releases rnp->boost_mtx
    before reporting the expedited quiescent state.  Under heavy real-time
    load, this can result in this function being preempted before the
    quiescent state is reported, which can in turn prevent the expedited grace
    period from completing.  Tim Murray reports that the resulting expedited
    grace periods can take hundreds of milliseconds and even more than one
    second, when they should normally complete in less than a millisecond.
    
    This was fine given that there were no particular response-time
    constraints for synchronize_rcu_expedited(), as it was designed
    for throughput rather than latency.  However, some users now need
    sub-100-millisecond response-time constratints.
    
    This patch therefore follows Neeraj's suggestion (seconded by Tim and
    by Uladzislau Rezki) of simply reversing the two operations.
    
    Reported-by: Tim Murray <timmurray@google.com>
    Reported-by: Joel Fernandes <joelaf@google.com>
    Reported-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>
    Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>
    Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Tested-by: Tim Murray <timmurray@google.com>
    Cc: Todd Kjos <tkjos@google.com>
    Cc: Sandeep Patil <sspatil@google.com>
    Cc: <stable@vger.kernel.org> # 5.4.x
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "ath: add support for special 0x0 regulatory domain" [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Feb 25 11:44:32 2022 +0200

    Revert "ath: add support for special 0x0 regulatory domain"
    
    commit 1ec7ed5163c70a0d040150d2279f932c7e7c143f upstream.
    
    This reverts commit 2dc016599cfa9672a147528ca26d70c3654a5423.
    
    Users are reporting regressions in regulatory domain detection and
    channel availability.
    
    The problem this was trying to resolve was fixed in firmware anyway:
    
        QCA6174 hw3.0: sdio-4.4.1: add firmware.bin_WLAN.RMH.4.4.1-00042
        https://github.com/kvalo/ath10k-firmware/commit/4d382787f0efa77dba40394e0bc604f8eff82552
    
    Link: https://bbs.archlinux.org/viewtopic.php?id=254535
    Link: http://lists.infradead.org/pipermail/ath10k/2020-April/014871.html
    Link: http://lists.infradead.org/pipermail/ath10k/2020-May/015152.html
    Link: https://lore.kernel.org/all/1c160dfb-6ccc-b4d6-76f6-4364e0adb6dd@reox.at/
    Fixes: 2dc016599cfa ("ath: add support for special 0x0 regulatory domain")
    Cc: <stable@vger.kernel.org>
    Cc: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20200527165718.129307-1-briannorris@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tpm: Fix error handling in async work [+ + +]
Author: Tadeusz Struk <tstruk@gmail.com>
Date:   Sat Jan 15 17:26:26 2022 -0800

    tpm: Fix error handling in async work
    
    commit 2e8e4c8f6673247e22efc7985ce5497accd16f88 upstream.
    
    When an invalid (non existing) handle is used in a TPM command,
    that uses the resource manager interface (/dev/tpmrm0) the resource
    manager tries to load it from its internal cache, but fails and
    the tpm_dev_transmit returns an -EINVAL error to the caller.
    The existing async handler doesn't handle these error cases
    currently and the condition in the poll handler never returns
    mask with EPOLLIN set.
    The result is that the poll call blocks and the application gets stuck
    until the user_read_timer wakes it up after 120 sec.
    Change the tpm_dev_async_work function to handle error conditions
    returned from tpm_dev_transmit they are also reflected in the poll mask
    and a correct error code could passed back to the caller.
    
    Cc: Jarkko Sakkinen <jarkko@kernel.org>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: <linux-integrity@vger.kernel.org>
    Cc: <stable@vger.kernel.org>
    Cc: <linux-kernel@vger.kernel.org>
    
    Fixes: 9e1b74a63f77 ("tpm: add support for nonblocking operation")
    Tested-by: Jarkko Sakkinen<jarkko@kernel.org>
    Signed-off-by: Tadeusz Struk <tstruk@gmail.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Cc: Tadeusz Struk <tadeusz.struk@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tpm: fix reference counting for struct tpm_chip [+ + +]
Author: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Date:   Wed Mar 2 10:43:53 2022 +0100

    tpm: fix reference counting for struct tpm_chip
    
    commit 7e0438f83dc769465ee663bb5dcf8cc154940712 upstream.
    
    The following sequence of operations results in a refcount warning:
    
    1. Open device /dev/tpmrm.
    2. Remove module tpm_tis_spi.
    3. Write a TPM command to the file descriptor opened at step 1.
    
    ------------[ cut here ]------------
    WARNING: CPU: 3 PID: 1161 at lib/refcount.c:25 kobject_get+0xa0/0xa4
    refcount_t: addition on 0; use-after-free.
    Modules linked in: tpm_tis_spi tpm_tis_core tpm mdio_bcm_unimac brcmfmac
    sha256_generic libsha256 sha256_arm hci_uart btbcm bluetooth cfg80211 vc4
    brcmutil ecdh_generic ecc snd_soc_core crc32_arm_ce libaes
    raspberrypi_hwmon ac97_bus snd_pcm_dmaengine bcm2711_thermal snd_pcm
    snd_timer genet snd phy_generic soundcore [last unloaded: spi_bcm2835]
    CPU: 3 PID: 1161 Comm: hold_open Not tainted 5.10.0ls-main-dirty #2
    Hardware name: BCM2711
    [<c0410c3c>] (unwind_backtrace) from [<c040b580>] (show_stack+0x10/0x14)
    [<c040b580>] (show_stack) from [<c1092174>] (dump_stack+0xc4/0xd8)
    [<c1092174>] (dump_stack) from [<c0445a30>] (__warn+0x104/0x108)
    [<c0445a30>] (__warn) from [<c0445aa8>] (warn_slowpath_fmt+0x74/0xb8)
    [<c0445aa8>] (warn_slowpath_fmt) from [<c08435d0>] (kobject_get+0xa0/0xa4)
    [<c08435d0>] (kobject_get) from [<bf0a715c>] (tpm_try_get_ops+0x14/0x54 [tpm])
    [<bf0a715c>] (tpm_try_get_ops [tpm]) from [<bf0a7d6c>] (tpm_common_write+0x38/0x60 [tpm])
    [<bf0a7d6c>] (tpm_common_write [tpm]) from [<c05a7ac0>] (vfs_write+0xc4/0x3c0)
    [<c05a7ac0>] (vfs_write) from [<c05a7ee4>] (ksys_write+0x58/0xcc)
    [<c05a7ee4>] (ksys_write) from [<c04001a0>] (ret_fast_syscall+0x0/0x4c)
    Exception stack(0xc226bfa8 to 0xc226bff0)
    bfa0:                   00000000 000105b4 00000003 beafe664 00000014 00000000
    bfc0: 00000000 000105b4 000103f8 00000004 00000000 00000000 b6f9c000 beafe684
    bfe0: 0000006c beafe648 0001056c b6eb6944
    ---[ end trace d4b8409def9b8b1f ]---
    
    The reason for this warning is the attempt to get the chip->dev reference
    in tpm_common_write() although the reference counter is already zero.
    
    Since commit 8979b02aaf1d ("tpm: Fix reference count to main device") the
    extra reference used to prevent a premature zero counter is never taken,
    because the required TPM_CHIP_FLAG_TPM2 flag is never set.
    
    Fix this by moving the TPM 2 character device handling from
    tpm_chip_alloc() to tpm_add_char_device() which is called at a later point
    in time when the flag has been set in case of TPM2.
    
    Commit fdc915f7f719 ("tpm: expose spaces via a device link /dev/tpmrm<n>")
    already introduced function tpm_devs_release() to release the extra
    reference but did not implement the required put on chip->devs that results
    in the call of this function.
    
    Fix this by putting chip->devs in tpm_chip_unregister().
    
    Finally move the new implementation for the TPM 2 handling into a new
    function to avoid multiple checks for the TPM_CHIP_FLAG_TPM2 flag in the
    good case and error cases.
    
    Cc: stable@vger.kernel.org
    Fixes: fdc915f7f719 ("tpm: expose spaces via a device link /dev/tpmrm<n>")
    Fixes: 8979b02aaf1d ("tpm: Fix reference count to main device")
    Co-developed-by: Jason Gunthorpe <jgg@ziepe.ca>
    Signed-off-by: Jason Gunthorpe <jgg@ziepe.ca>
    Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
    Tested-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tpm: use try_get_ops() in tpm-space.c [+ + +]
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Mon Mar 7 15:58:03 2022 -0500

    tpm: use try_get_ops() in tpm-space.c
    
    commit fb5abce6b2bb5cb3d628aaa63fa821da8c4600f9 upstream.
    
    As part of the series conversion to remove nested TPM operations:
    
    https://lore.kernel.org/all/20190205224723.19671-1-jarkko.sakkinen@linux.intel.com/
    
    exposure of the chip->tpm_mutex was removed from much of the upper
    level code.  In this conversion, tpm2_del_space() was missed.  This
    didn't matter much because it's usually called closely after a
    converted operation, so there's only a very tiny race window where the
    chip can be removed before the space flushing is done which causes a
    NULL deref on the mutex.  However, there are reports of this window
    being hit in practice, so fix this by converting tpm2_del_space() to
    use tpm_try_get_ops(), which performs all the teardown checks before
    acquring the mutex.
    
    Cc: stable@vger.kernel.org # 5.4.x
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
uaccess: fix integer overflow on access_ok() [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Feb 10 16:24:30 2022 +0100

    uaccess: fix integer overflow on access_ok()
    
    commit 222ca305c9fd39e5ed8104da25c09b2b79a516a8 upstream.
    
    Three architectures check the end of a user access against the
    address limit without taking a possible overflow into account.
    Passing a negative length or another overflow in here returns
    success when it should not.
    
    Use the most common correct implementation here, which optimizes
    for a constant 'size' argument, and turns the common case into a
    single comparison.
    
    Cc: stable@vger.kernel.org
    Fixes: da551281947c ("csky: User access")
    Fixes: f663b60f5215 ("microblaze: Fix uaccess_ok macro")
    Fixes: 7567746e1c0d ("Hexagon: Add user access functions")
    Reported-by: David Laight <David.Laight@aculab.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wcn36xx: Differentiate wcn3660 from wcn3620 [+ + +]
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Tue Jan 25 00:40:46 2022 +0000

    wcn36xx: Differentiate wcn3660 from wcn3620
    
    commit 98d504a82cc75840bec8e3c6ae0e4f411921962b upstream.
    
    The spread of capability between the three WiFi silicon parts wcn36xx
    supports is:
    
    wcn3620 - 802.11 a/b/g
    wcn3660 - 802.11 a/b/g/n
    wcn3680 - 802.11 a/b/g/n/ac
    
    We currently treat wcn3660 as wcn3620 thus limiting it to 2GHz channels.
    Fix this regression by ensuring we differentiate between all three parts.
    
    Fixes: 8490987bdb9a ("wcn36xx: Hook and identify RF_IRIS_WCN3680")
    Cc: stable@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20220125004046.4058284-1-bryan.odonoghue@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>