commit 89b6869b942b8730467f2a0760ea466044aa52d2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Oct 27 09:54:30 2021 +0200

    Linux 5.4.156
    
    Link: https://lore.kernel.org/r/20211025190937.555108060@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cdcaa7c765ba2e6cd8e0225b73bc38268560b3b
Author: Fabien Dessenne <fabien.dessenne@foss.st.com>
Date:   Fri Oct 8 14:25:17 2021 +0200

    pinctrl: stm32: use valid pin identifier in stm32_pinctrl_resume()
    
    commit c370bb474016ab9edfdabd7c08a88dd13a71ddbd upstream.
    
    When resuming from low power, the driver attempts to restore the
    configuration of some pins. This is done by a call to:
      stm32_pinctrl_restore_gpio_regs(struct stm32_pinctrl *pctl, u32 pin)
    where 'pin' must be a valid pin value (i.e. matching some 'groups->pin').
    Fix the current implementation which uses some wrong 'pin' value.
    
    Fixes: e2f3cf18c3e2 ("pinctrl: stm32: add suspend/resume management")
    Signed-off-by: Fabien Dessenne <fabien.dessenne@foss.st.com>
    Link: https://lore.kernel.org/r/20211008122517.617633-1-fabien.dessenne@foss.st.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9c4e246f7c3f8fc7689df3a3fedd7477702a422
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Wed Sep 8 19:25:59 2021 +0100

    ARM: 9122/1: select HAVE_FUTEX_CMPXCHG
    
    commit 9d417cbe36eee7afdd85c2e871685f8dab7c2dba upstream.
    
    tglx notes:
      This function [futex_detect_cmpxchg] is only needed when an
      architecture has to runtime discover whether the CPU supports it or
      not.  ARM has unconditional support for this, so the obvious thing to
      do is the below.
    
    Fixes linkage failure from Clang randconfigs:
    kernel/futex.o:(.text.fixup+0x5c): relocation truncated to fit: R_ARM_JUMP24 against `.init.text'
    and boot failures for CONFIG_THUMB2_KERNEL.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/325
    
    Comments from Nick Desaulniers:
    
     See-also: 03b8c7b623c8 ("futex: Allow architectures to skip
     futex_atomic_cmpxchg_inatomic() test")
    
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: stable@vger.kernel.org # v3.14+
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a98c81ab17511704c1140a48b57906a9661cb3f0
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Mon Oct 18 15:44:12 2021 -0400

    tracing: Have all levels of checks prevent recursion
    
    commit ed65df63a39a3f6ed04f7258de8b6789e5021c18 upstream.
    
    While writing an email explaining the "bit = 0" logic for a discussion on
    making ftrace_test_recursion_trylock() disable preemption, I discovered a
    path that makes the "not do the logic if bit is zero" unsafe.
    
    The recursion logic is done in hot paths like the function tracer. Thus,
    any code executed causes noticeable overhead. Thus, tricks are done to try
    to limit the amount of code executed. This included the recursion testing
    logic.
    
    Having recursion testing is important, as there are many paths that can
    end up in an infinite recursion cycle when tracing every function in the
    kernel. Thus protection is needed to prevent that from happening.
    
    Because it is OK to recurse due to different running context levels (e.g.
    an interrupt preempts a trace, and then a trace occurs in the interrupt
    handler), a set of bits are used to know which context one is in (normal,
    softirq, irq and NMI). If a recursion occurs in the same level, it is
    prevented*.
    
    Then there are infrastructure levels of recursion as well. When more than
    one callback is attached to the same function to trace, it calls a loop
    function to iterate over all the callbacks. Both the callbacks and the
    loop function have recursion protection. The callbacks use the
    "ftrace_test_recursion_trylock()" which has a "function" set of context
    bits to test, and the loop function calls the internal
    trace_test_and_set_recursion() directly, with an "internal" set of bits.
    
    If an architecture does not implement all the features supported by ftrace
    then the callbacks are never called directly, and the loop function is
    called instead, which will implement the features of ftrace.
    
    Since both the loop function and the callbacks do recursion protection, it
    was seemed unnecessary to do it in both locations. Thus, a trick was made
    to have the internal set of recursion bits at a more significant bit
    location than the function bits. Then, if any of the higher bits were set,
    the logic of the function bits could be skipped, as any new recursion
    would first have to go through the loop function.
    
    This is true for architectures that do not support all the ftrace
    features, because all functions being traced must first go through the
    loop function before going to the callbacks. But this is not true for
    architectures that support all the ftrace features. That's because the
    loop function could be called due to two callbacks attached to the same
    function, but then a recursion function inside the callback could be
    called that does not share any other callback, and it will be called
    directly.
    
    i.e.
    
     traced_function_1: [ more than one callback tracing it ]
       call loop_func
    
     loop_func:
       trace_recursion set internal bit
       call callback
    
     callback:
       trace_recursion [ skipped because internal bit is set, return 0 ]
       call traced_function_2
    
     traced_function_2: [ only traced by above callback ]
       call callback
    
     callback:
       trace_recursion [ skipped because internal bit is set, return 0 ]
       call traced_function_2
    
     [ wash, rinse, repeat, BOOM! out of shampoo! ]
    
    Thus, the "bit == 0 skip" trick is not safe, unless the loop function is
    call for all functions.
    
    Since we want to encourage architectures to implement all ftrace features,
    having them slow down due to this extra logic may encourage the
    maintainers to update to the latest ftrace features. And because this
    logic is only safe for them, remove it completely.
    
     [*] There is on layer of recursion that is allowed, and that is to allow
         for the transition between interrupt context (normal -> softirq ->
         irq -> NMI), because a trace may occur before the context update is
         visible to the trace recursion logic.
    
    Link: https://lore.kernel.org/all/609b565a-ed6e-a1da-f025-166691b5d994@linux.alibaba.com/
    Link: https://lkml.kernel.org/r/20211018154412.09fcad3c@gandalf.local.home
    
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Miroslav Benes <mbenes@suse.cz>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Jisheng Zhang <jszhang@kernel.org>
    Cc: =?utf-8?b?546L6LSH?= <yun.wang@linux.alibaba.com>
    Cc: Guo Ren <guoren@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: edc15cafcbfa3 ("tracing: Avoid unnecessary multiple recursion checks")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0feaa8376f52357bf2fd020d0c471713a859728
Author: Yanfei Xu <yanfei.xu@windriver.com>
Date:   Sun Sep 26 12:53:13 2021 +0800

    net: mdiobus: Fix memory leak in __mdiobus_register
    
    commit ab609f25d19858513919369ff3d9a63c02cd9e2e upstream.
    
    Once device_register() failed, we should call put_device() to
    decrement reference count for cleanup. Or it will cause memory
    leak.
    
    BUG: memory leak
    unreferenced object 0xffff888114032e00 (size 256):
      comm "kworker/1:3", pid 2960, jiffies 4294943572 (age 15.920s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 08 2e 03 14 81 88 ff ff  ................
        08 2e 03 14 81 88 ff ff 90 76 65 82 ff ff ff ff  .........ve.....
      backtrace:
        [<ffffffff8265cfab>] kmalloc include/linux/slab.h:591 [inline]
        [<ffffffff8265cfab>] kzalloc include/linux/slab.h:721 [inline]
        [<ffffffff8265cfab>] device_private_init drivers/base/core.c:3203 [inline]
        [<ffffffff8265cfab>] device_add+0x89b/0xdf0 drivers/base/core.c:3253
        [<ffffffff828dd643>] __mdiobus_register+0xc3/0x450 drivers/net/phy/mdio_bus.c:537
        [<ffffffff828cb835>] __devm_mdiobus_register+0x75/0xf0 drivers/net/phy/mdio_devres.c:87
        [<ffffffff82b92a00>] ax88772_init_mdio drivers/net/usb/asix_devices.c:676 [inline]
        [<ffffffff82b92a00>] ax88772_bind+0x330/0x480 drivers/net/usb/asix_devices.c:786
        [<ffffffff82baa33f>] usbnet_probe+0x3ff/0xdf0 drivers/net/usb/usbnet.c:1745
        [<ffffffff82c36e17>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
        [<ffffffff82661d17>] call_driver_probe drivers/base/dd.c:517 [inline]
        [<ffffffff82661d17>] really_probe.part.0+0xe7/0x380 drivers/base/dd.c:596
        [<ffffffff826620bc>] really_probe drivers/base/dd.c:558 [inline]
        [<ffffffff826620bc>] __driver_probe_device+0x10c/0x1e0 drivers/base/dd.c:751
        [<ffffffff826621ba>] driver_probe_device+0x2a/0x120 drivers/base/dd.c:781
        [<ffffffff82662a26>] __device_attach_driver+0xf6/0x140 drivers/base/dd.c:898
        [<ffffffff8265eca7>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:427
        [<ffffffff826625a2>] __device_attach+0x122/0x260 drivers/base/dd.c:969
        [<ffffffff82660916>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:487
        [<ffffffff8265cd0b>] device_add+0x5fb/0xdf0 drivers/base/core.c:3359
        [<ffffffff82c343b9>] usb_set_configuration+0x9d9/0xb90 drivers/usb/core/message.c:2170
        [<ffffffff82c4473c>] usb_generic_driver_probe+0x8c/0xc0 drivers/usb/core/generic.c:238
    
    BUG: memory leak
    unreferenced object 0xffff888116f06900 (size 32):
      comm "kworker/0:2", pid 2670, jiffies 4294944448 (age 7.160s)
      hex dump (first 32 bytes):
        75 73 62 2d 30 30 31 3a 30 30 33 00 00 00 00 00  usb-001:003.....
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff81484516>] kstrdup+0x36/0x70 mm/util.c:60
        [<ffffffff814845a3>] kstrdup_const+0x53/0x80 mm/util.c:83
        [<ffffffff82296ba2>] kvasprintf_const+0xc2/0x110 lib/kasprintf.c:48
        [<ffffffff82358d4b>] kobject_set_name_vargs+0x3b/0xe0 lib/kobject.c:289
        [<ffffffff826575f3>] dev_set_name+0x63/0x90 drivers/base/core.c:3147
        [<ffffffff828dd63b>] __mdiobus_register+0xbb/0x450 drivers/net/phy/mdio_bus.c:535
        [<ffffffff828cb835>] __devm_mdiobus_register+0x75/0xf0 drivers/net/phy/mdio_devres.c:87
        [<ffffffff82b92a00>] ax88772_init_mdio drivers/net/usb/asix_devices.c:676 [inline]
        [<ffffffff82b92a00>] ax88772_bind+0x330/0x480 drivers/net/usb/asix_devices.c:786
        [<ffffffff82baa33f>] usbnet_probe+0x3ff/0xdf0 drivers/net/usb/usbnet.c:1745
        [<ffffffff82c36e17>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
        [<ffffffff82661d17>] call_driver_probe drivers/base/dd.c:517 [inline]
        [<ffffffff82661d17>] really_probe.part.0+0xe7/0x380 drivers/base/dd.c:596
        [<ffffffff826620bc>] really_probe drivers/base/dd.c:558 [inline]
        [<ffffffff826620bc>] __driver_probe_device+0x10c/0x1e0 drivers/base/dd.c:751
        [<ffffffff826621ba>] driver_probe_device+0x2a/0x120 drivers/base/dd.c:781
        [<ffffffff82662a26>] __device_attach_driver+0xf6/0x140 drivers/base/dd.c:898
        [<ffffffff8265eca7>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:427
        [<ffffffff826625a2>] __device_attach+0x122/0x260 drivers/base/dd.c:969
    
    Reported-by: syzbot+398e7dc692ddbbb4cfec@syzkaller.appspotmail.com
    Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ab35e707462df13ad1617483470b50ee8d0a7d9
Author: Dexuan Cui <decui@microsoft.com>
Date:   Thu Oct 7 21:35:46 2021 -0700

    scsi: core: Fix shost->cmd_per_lun calculation in scsi_add_host_with_dma()
    
    commit 50b6cb3516365cb69753b006be2b61c966b70588 upstream.
    
    After commit ea2f0f77538c ("scsi: core: Cap scsi_host cmd_per_lun at
    can_queue"), a 416-CPU VM running on Hyper-V hangs during boot because the
    hv_storvsc driver sets scsi_driver.can_queue to an integer value that
    exceeds SHRT_MAX, and hence scsi_add_host_with_dma() sets
    shost->cmd_per_lun to a negative "short" value.
    
    Use min_t(int, ...) to work around the issue.
    
    Link: https://lore.kernel.org/r/20211008043546.6006-1-decui@microsoft.com
    Fixes: ea2f0f77538c ("scsi: core: Cap scsi_host cmd_per_lun at can_queue")
    Cc: stable@vger.kernel.org
    Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9068beaa049af19d83c26b116be690745fd7c54f
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Oct 15 21:19:33 2021 -0700

    Input: snvs_pwrkey - add clk handling
    
    [ Upstream commit d997cc1715df7b6c3df798881fb9941acf0079f8 ]
    
    On i.MX7S and i.MX8M* (but not i.MX6*) the pwrkey device has an
    associated clock. Accessing the registers requires that this clock is
    enabled. Binding the driver on at least i.MX7S and i.MX8MP while not
    having the clock enabled results in a complete hang of the machine.
    (This usually only happens if snvs_pwrkey is built as a module and the
    rtc-snvs driver isn't already bound because at bootup the required clk
    is on and only gets disabled when the clk framework disables unused clks
    late during boot.)
    
    This completes the fix in commit 135be16d3505 ("ARM: dts: imx7s: add
    snvs clock to pwrkey").
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20211013062848.2667192-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8de335e8199f598bd26e8cbc2c7c87076067c9d8
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Tue Oct 12 17:29:35 2021 +0300

    ALSA: hda: avoid write to STATESTS if controller is in reset
    
    [ Upstream commit b37a15188eae9d4c49c5bb035e0c8d4058e4d9b3 ]
    
    The snd_hdac_bus_reset_link() contains logic to clear STATESTS register
    before performing controller reset. This code dates back to an old
    bugfix in commit e8a7f136f5ed ("[ALSA] hda-intel - Improve HD-audio
    codec probing robustness"). Originally the code was added to
    azx_reset().
    
    The code was moved around in commit a41d122449be ("ALSA: hda - Embed bus
    into controller object") and ended up to snd_hdac_bus_reset_link() and
    called primarily via snd_hdac_bus_init_chip().
    
    The logic to clear STATESTS is correct when snd_hdac_bus_init_chip() is
    called when controller is not in reset. In this case, STATESTS can be
    cleared. This can be useful e.g. when forcing a controller reset to retry
    codec probe. A normal non-power-on reset will not clear the bits.
    
    However, this old logic is problematic when controller is already in
    reset. The HDA specification states that controller must be taken out of
    reset before writing to registers other than GCTL.CRST (1.0a spec,
    3.3.7). The write to STATESTS in snd_hdac_bus_reset_link() will be lost
    if the controller is already in reset per the HDA specification mentioned.
    
    This has been harmless on older hardware. On newer generation of Intel
    PCIe based HDA controllers, if configured to report issues, this write
    will emit an unsupported request error. If ACPI Platform Error Interface
    (APEI) is enabled in kernel, this will end up to kernel log.
    
    Fix the code in snd_hdac_bus_reset_link() to only clear the STATESTS if
    the function is called when controller is not in reset. Otherwise
    clearing the bits is not possible and should be skipped.
    
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20211012142935.3731820-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 570bc60dcd006750e5df31779af51d2a1320ca37
Author: Prashant Malani <pmalani@chromium.org>
Date:   Tue Sep 28 03:19:34 2021 -0700

    platform/x86: intel_scu_ipc: Update timeout value in comment
    
    [ Upstream commit a0c5814b9933f25ecb6de169483c5b88cf632bca ]
    
    The comment decribing the IPC timeout hadn't been updated when the
    actual timeout was changed from 3 to 5 seconds in
    commit a7d53dbbc70a ("platform/x86: intel_scu_ipc: Increase virtual
    timeout from 3 to 5 seconds") .
    
    Since the value is anyway updated to 10s now, take this opportunity to
    update the value in the comment too.
    
    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    Cc: Benson Leung <bleung@chromium.org>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20210928101932.2543937-4-pmalani@chromium.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4054b869dc263228d30a4755800b78f0f2ba0c89
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Sat Oct 9 11:33:49 2021 +0000

    isdn: mISDN: Fix sleeping function called from invalid context
    
    [ Upstream commit 6510e80a0b81b5d814e3aea6297ba42f5e76f73c ]
    
    The driver can call card->isac.release() function from an atomic
    context.
    
    Fix this by calling this function after releasing the lock.
    
    The following log reveals it:
    
    [   44.168226 ] BUG: sleeping function called from invalid context at kernel/workqueue.c:3018
    [   44.168941 ] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 5475, name: modprobe
    [   44.169574 ] INFO: lockdep is turned off.
    [   44.169899 ] irq event stamp: 0
    [   44.170160 ] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
    [   44.170627 ] hardirqs last disabled at (0): [<ffffffff814209ed>] copy_process+0x132d/0x3e00
    [   44.171240 ] softirqs last  enabled at (0): [<ffffffff81420a1a>] copy_process+0x135a/0x3e00
    [   44.171852 ] softirqs last disabled at (0): [<0000000000000000>] 0x0
    [   44.172318 ] Preemption disabled at:
    [   44.172320 ] [<ffffffffa009b0a9>] nj_release+0x69/0x500 [netjet]
    [   44.174441 ] Call Trace:
    [   44.174630 ]  dump_stack_lvl+0xa8/0xd1
    [   44.174912 ]  dump_stack+0x15/0x17
    [   44.175166 ]  ___might_sleep+0x3a2/0x510
    [   44.175459 ]  ? nj_release+0x69/0x500 [netjet]
    [   44.175791 ]  __might_sleep+0x82/0xe0
    [   44.176063 ]  ? start_flush_work+0x20/0x7b0
    [   44.176375 ]  start_flush_work+0x33/0x7b0
    [   44.176672 ]  ? trace_irq_enable_rcuidle+0x85/0x170
    [   44.177034 ]  ? kasan_quarantine_put+0xaa/0x1f0
    [   44.177372 ]  ? kasan_quarantine_put+0xaa/0x1f0
    [   44.177711 ]  __flush_work+0x11a/0x1a0
    [   44.177991 ]  ? flush_work+0x20/0x20
    [   44.178257 ]  ? lock_release+0x13c/0x8f0
    [   44.178550 ]  ? __kasan_check_write+0x14/0x20
    [   44.178872 ]  ? do_raw_spin_lock+0x148/0x360
    [   44.179187 ]  ? read_lock_is_recursive+0x20/0x20
    [   44.179530 ]  ? __kasan_check_read+0x11/0x20
    [   44.179846 ]  ? do_raw_spin_unlock+0x55/0x900
    [   44.180168 ]  ? ____kasan_slab_free+0x116/0x140
    [   44.180505 ]  ? _raw_spin_unlock_irqrestore+0x41/0x60
    [   44.180878 ]  ? skb_queue_purge+0x1a3/0x1c0
    [   44.181189 ]  ? kfree+0x13e/0x290
    [   44.181438 ]  flush_work+0x17/0x20
    [   44.181695 ]  mISDN_freedchannel+0xe8/0x100
    [   44.182006 ]  isac_release+0x210/0x260 [mISDNipac]
    [   44.182366 ]  nj_release+0xf6/0x500 [netjet]
    [   44.182685 ]  nj_remove+0x48/0x70 [netjet]
    [   44.182989 ]  pci_device_remove+0xa9/0x250
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5001160d3ed5e51750f17609d219d260c1086409
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Oct 8 12:34:40 2021 +0200

    ARM: dts: spear3xx: Fix gmac node
    
    [ Upstream commit 6636fec29cdf6665bd219564609e8651f6ddc142 ]
    
    On SPEAr3xx, ethernet driver is not compatible with the SPEAr600
    one.
    Indeed, SPEAr3xx uses an earlier version of this IP (v3.40) and
    needs some driver tuning compare to SPEAr600.
    
    The v3.40 IP support was added to stmmac driver and this patch
    fixes this issue and use the correct compatible string for
    SPEAr3xx
    
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9d9ffa19367fccb1badfabbfd1371a9dfad36e2
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Oct 8 12:34:39 2021 +0200

    net: stmmac: add support for dwmac 3.40a
    
    [ Upstream commit 9cb1d19f47fafad7dcf7c8564e633440c946cfd7 ]
    
    dwmac 3.40a is an old ip version that can be found on SPEAr3xx soc.
    
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 044fa2afd67692a6385367e0e937cc396503b429
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Oct 1 13:52:30 2021 +0100

    btrfs: deal with errors when checking if a dir entry exists during log replay
    
    [ Upstream commit 77a5b9e3d14cbce49ceed2766b2003c034c066dc ]
    
    Currently inode_in_dir() ignores errors returned from
    btrfs_lookup_dir_index_item() and from btrfs_lookup_dir_item(), treating
    any errors as if the directory entry does not exists in the fs/subvolume
    tree, which is obviously not correct, as we can get errors such as -EIO
    when reading extent buffers while searching the fs/subvolume's tree.
    
    Fix that by making inode_in_dir() return the errors and making its only
    caller, add_inode_ref(), deal with returned errors as well.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d49a293b946d5291375d64ff1cbee5661c1e3f03
Author: Brendan Higgins <brendanhiggins@google.com>
Date:   Wed Sep 29 14:27:09 2021 -0700

    gcc-plugins/structleak: add makefile var for disabling structleak
    
    [ Upstream commit 554afc3b9797511e3245864e32aebeb6abbab1e3 ]
    
    KUnit and structleak don't play nice, so add a makefile variable for
    enabling structleak when it complains.
    
    Co-developed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8ef9984418f75aa801e1e4c7f11f1b4db14185c
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Oct 12 18:37:09 2021 +0200

    selftests: netfilter: remove stray bash debug line
    
    commit 3e6ed7703dae6838c104d73d3e76e9b79f5c0528 upstream.
    
    This should not be there.
    
    Fixes: 2de03b45236f ("selftests: netfilter: add flowtable test script")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7fdebde2c9be819f24afa3609036faee78dec96
Author: Vegard Nossum <vegard.nossum@gmail.com>
Date:   Tue Oct 5 22:54:54 2021 +0200

    netfilter: Kconfig: use 'default y' instead of 'm' for bool config option
    
    commit 77076934afdcd46516caf18ed88b2f88025c9ddb upstream.
    
    This option, NF_CONNTRACK_SECMARK, is a bool, so it can never be 'm'.
    
    Fixes: 33b8e77605620 ("[NETFILTER]: Add CONFIG_NETFILTER_ADVANCED option")
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 285e9210b1fab96a11c0be3ed5cea9dd48b6ac54
Author: Xiaolong Huang <butterflyhuangxx@gmail.com>
Date:   Fri Oct 8 14:58:30 2021 +0800

    isdn: cpai: check ctr->cnr to avoid array index out of bound
    
    commit 1f3e2e97c003f80c4b087092b225c8787ff91e4d upstream.
    
    The cmtp_add_connection() would add a cmtp session to a controller
    and run a kernel thread to process cmtp.
    
            __module_get(THIS_MODULE);
            session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d",
                                                                    session->num);
    
    During this process, the kernel thread would call detach_capi_ctr()
    to detach a register controller. if the controller
    was not attached yet, detach_capi_ctr() would
    trigger an array-index-out-bounds bug.
    
    [   46.866069][ T6479] UBSAN: array-index-out-of-bounds in
    drivers/isdn/capi/kcapi.c:483:21
    [   46.867196][ T6479] index -1 is out of range for type 'capi_ctr *[32]'
    [   46.867982][ T6479] CPU: 1 PID: 6479 Comm: kcmtpd_ctr_0 Not tainted
    5.15.0-rc2+ #8
    [   46.869002][ T6479] Hardware name: QEMU Standard PC (i440FX + PIIX,
    1996), BIOS 1.14.0-2 04/01/2014
    [   46.870107][ T6479] Call Trace:
    [   46.870473][ T6479]  dump_stack_lvl+0x57/0x7d
    [   46.870974][ T6479]  ubsan_epilogue+0x5/0x40
    [   46.871458][ T6479]  __ubsan_handle_out_of_bounds.cold+0x43/0x48
    [   46.872135][ T6479]  detach_capi_ctr+0x64/0xc0
    [   46.872639][ T6479]  cmtp_session+0x5c8/0x5d0
    [   46.873131][ T6479]  ? __init_waitqueue_head+0x60/0x60
    [   46.873712][ T6479]  ? cmtp_add_msgpart+0x120/0x120
    [   46.874256][ T6479]  kthread+0x147/0x170
    [   46.874709][ T6479]  ? set_kthread_struct+0x40/0x40
    [   46.875248][ T6479]  ret_from_fork+0x1f/0x30
    [   46.875773][ T6479]
    
    Signed-off-by: Xiaolong Huang <butterflyhuangxx@gmail.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20211008065830.305057-1-butterflyhuangxx@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f75f8883b4fe9fe1856d71f055120315e758188
Author: Lin Ma <linma@zju.edu.cn>
Date:   Thu Oct 7 19:44:30 2021 +0200

    nfc: nci: fix the UAF of rf_conn_info object
    
    commit 1b1499a817c90fd1ce9453a2c98d2a01cca0e775 upstream.
    
    The nci_core_conn_close_rsp_packet() function will release the conn_info
    with given conn_id. However, it needs to set the rf_conn_info to NULL to
    prevent other routines like nci_rf_intf_activated_ntf_packet() to trigger
    the UAF.
    
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f5d1c29cfab5cb0ab885059818751bdef32e2bb
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Mon Oct 18 15:15:59 2021 -0700

    mm, slub: fix potential memoryleak in kmem_cache_open()
    
    commit 9037c57681d25e4dcc442d940d6dbe24dd31f461 upstream.
    
    In error path, the random_seq of slub cache might be leaked.  Fix this
    by using __kmem_cache_release() to release all the relevant resources.
    
    Link: https://lkml.kernel.org/r/20210916123920.48704-4-linmiaohe@huawei.com
    Fixes: 210e7a43fa90 ("mm: SLUB freelist randomization")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Bharata B Rao <bharata@linux.ibm.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Faiyaz Mohammed <faiyazm@codeaurora.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1ec195a1943c39fffa96e47ab6532d74a9f4c78
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Mon Oct 18 15:15:55 2021 -0700

    mm, slub: fix mismatch between reconstructed freelist depth and cnt
    
    commit 899447f669da76cc3605665e1a95ee877bc464cc upstream.
    
    If object's reuse is delayed, it will be excluded from the reconstructed
    freelist.  But we forgot to adjust the cnt accordingly.  So there will
    be a mismatch between reconstructed freelist depth and cnt.  This will
    lead to free_debug_processing() complaining about freelist count or a
    incorrect slub inuse count.
    
    Link: https://lkml.kernel.org/r/20210916123920.48704-3-linmiaohe@huawei.com
    Fixes: c3895391df38 ("kasan, slub: fix handling of kasan_slab_free hook")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Bharata B Rao <bharata@linux.ibm.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Faiyaz Mohammed <faiyazm@codeaurora.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e25a62e8dab7bb09da337354ed1be5df61f83a0
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Oct 20 20:48:26 2021 +1100

    powerpc/idle: Don't corrupt back chain when going idle
    
    commit 496c5fe25c377ddb7815c4ce8ecfb676f051e9b6 upstream.
    
    In isa206_idle_insn_mayloss() we store various registers into the stack
    red zone, which is allowed.
    
    However inside the IDLE_STATE_ENTER_SEQ_NORET macro we save r2 again,
    to 0(r1), which corrupts the stack back chain.
    
    We used to do the same in isa206_idle_insn_mayloss() itself, but we
    fixed that in 73287caa9210 ("powerpc64/idle: Fix SP offsets when saving
    GPRs"), however we missed that the macro also corrupts the back chain.
    
    Corrupting the back chain is bad for debuggability but doesn't
    necessarily cause a bug.
    
    However we recently changed the stack handling in some KVM code, and it
    now relies on the stack back chain being valid when it returns. The
    corruption causes that code to return with r1 pointing somewhere in
    kernel data, at some point LR is restored from the stack and we branch
    to NULL or somewhere else invalid.
    
    Only affects Power8 hosts running KVM guests, with dynamic_mt_modes
    enabled (which it is by default).
    
    The fixes tag below points to the commit that changed the KVM stack
    handling, exposing this bug. The actual corruption of the back chain has
    always existed since 948cf67c4726 ("powerpc: Add NAP mode support on
    Power7 in HV mode").
    
    Fixes: 9b4416c5095c ("KVM: PPC: Book3S HV: Fix stack handling in idle_kvm_start_guest()")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211020094826.3222052-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0148cfaf89ce2af0d76e39943e200365e7fc99a
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Oct 15 23:02:08 2021 +1100

    KVM: PPC: Book3S HV: Make idle_kvm_start_guest() return 0 if it went to guest
    
    commit cdeb5d7d890e14f3b70e8087e745c4a6a7d9f337 upstream.
    
    We call idle_kvm_start_guest() from power7_offline() if the thread has
    been requested to enter KVM. We pass it the SRR1 value that was returned
    from power7_idle_insn() which tells us what sort of wakeup we're
    processing.
    
    Depending on the SRR1 value we pass in, the KVM code might enter the
    guest, or it might return to us to do some host action if the wakeup
    requires it.
    
    If idle_kvm_start_guest() is able to handle the wakeup, and enter the
    guest it is supposed to indicate that by returning a zero SRR1 value to
    us.
    
    That was the behaviour prior to commit 10d91611f426 ("powerpc/64s:
    Reimplement book3s idle code in C"), however in that commit the
    handling of SRR1 was reworked, and the zeroing behaviour was lost.
    
    Returning from idle_kvm_start_guest() without zeroing the SRR1 value can
    confuse the host offline code, causing the guest to crash and other
    weirdness.
    
    Fixes: 10d91611f426 ("powerpc/64s: Reimplement book3s idle code in C")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211015133929.832061-2-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80bbb0bc3a0288442f7fe6fc514f4ee1cb06ccb7
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Oct 15 23:01:48 2021 +1100

    KVM: PPC: Book3S HV: Fix stack handling in idle_kvm_start_guest()
    
    commit 9b4416c5095c20e110c82ae602c254099b83b72f upstream.
    
    In commit 10d91611f426 ("powerpc/64s: Reimplement book3s idle code in
    C") kvm_start_guest() became idle_kvm_start_guest(). The old code
    allocated a stack frame on the emergency stack, but didn't use the
    frame to store anything, and also didn't store anything in its caller's
    frame.
    
    idle_kvm_start_guest() on the other hand is written more like a normal C
    function, it creates a frame on entry, and also stores CR/LR into its
    callers frame (per the ABI). The problem is that there is no caller
    frame on the emergency stack.
    
    The emergency stack for a given CPU is allocated with:
    
      paca_ptrs[i]->emergency_sp = alloc_stack(limit, i) + THREAD_SIZE;
    
    So emergency_sp actually points to the first address above the emergency
    stack allocation for a given CPU, we must not store above it without
    first decrementing it to create a frame. This is different to the
    regular kernel stack, paca->kstack, which is initialised to point at an
    initial frame that is ready to use.
    
    idle_kvm_start_guest() stores the backchain, CR and LR all of which
    write outside the allocation for the emergency stack. It then creates a
    stack frame and saves the non-volatile registers. Unfortunately the
    frame it creates is not large enough to fit the non-volatiles, and so
    the saving of the non-volatile registers also writes outside the
    emergency stack allocation.
    
    The end result is that we corrupt whatever is at 0-24 bytes, and 112-248
    bytes above the emergency stack allocation.
    
    In practice this has gone unnoticed because the memory immediately above
    the emergency stack happens to be used for other stack allocations,
    either another CPUs mc_emergency_sp or an IRQ stack. See the order of
    calls to irqstack_early_init() and emergency_stack_init().
    
    The low addresses of another stack are the top of that stack, and so are
    only used if that stack is under extreme pressue, which essentially
    never happens in practice - and if it did there's a high likelyhood we'd
    crash due to that stack overflowing.
    
    Still, we shouldn't be corrupting someone else's stack, and it is purely
    luck that we aren't corrupting something else.
    
    To fix it we save CR/LR into the caller's frame using the existing r1 on
    entry, we then create a SWITCH_FRAME_SIZE frame (which has space for
    pt_regs) on the emergency stack with the backchain pointing to the
    existing stack, and then finally we switch to the new frame on the
    emergency stack.
    
    Fixes: 10d91611f426 ("powerpc/64s: Reimplement book3s idle code in C")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211015133929.832061-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 722e6f6ac818a56aff3cca39fc1aa8823f510c39
Author: Christopher M. Riedl <cmr@codefail.de>
Date:   Sat Feb 6 01:23:42 2021 -0600

    powerpc64/idle: Fix SP offsets when saving GPRs
    
    commit 73287caa9210ded6066833195f4335f7f688a46b upstream.
    
    The idle entry/exit code saves/restores GPRs in the stack "red zone"
    (Protected Zone according to PowerPC64 ELF ABI v2). However, the offset
    used for the first GPR is incorrect and overwrites the back chain - the
    Protected Zone actually starts below the current SP. In practice this is
    probably not an issue, but it's still incorrect so fix it.
    
    Also expand the comments to explain why using the stack "red zone"
    instead of creating a new stackframe is appropriate here.
    
    Signed-off-by: Christopher M. Riedl <cmr@codefail.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210206072342.5067-1-cmr@codefail.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6f451f1f60c58d73038c7c3177066f8f084e2a2
Author: Gaosheng Cui <cuigaosheng1@huawei.com>
Date:   Sat Oct 16 15:23:50 2021 +0800

    audit: fix possible null-pointer dereference in audit_filter_rules
    
    commit 6e3ee990c90494561921c756481d0e2125d8b895 upstream.
    
    Fix  possible null-pointer dereference in audit_filter_rules.
    
    audit_filter_rules() error: we previously assumed 'ctx' could be null
    
    Cc: stable@vger.kernel.org
    Fixes: bf361231c295 ("audit: add saddr_fam filter field")
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c974f2f92c31a15bf0c92a0df19737b9457054b9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Oct 6 16:17:12 2021 +0200

    ASoC: DAPM: Fix missing kctl change notifications
    
    commit 5af82c81b2c49cfb1cad84d9eb6eab0e3d1c4842 upstream.
    
    The put callback of a kcontrol is supposed to return 1 when the value
    is changed, and this will be notified to user-space.  However, some
    DAPM kcontrols always return 0 (except for errors), hence the
    user-space misses the update of a control value.
    
    This patch corrects the behavior by properly returning 1 when the
    value gets updated.
    
    Reported-and-tested-by: Hans de Goede <hdegoede@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211006141712.2439-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5307a77b71494a37aed0a6eab6c49717358bcf50
Author: Steven Clarkson <sc@lambdal.com>
Date:   Thu Oct 14 06:35:54 2021 -0700

    ALSA: hda/realtek: Add quirk for Clevo PC50HS
    
    commit aef454b40288158b850aab13e3d2a8c406779401 upstream.
    
    Apply existing PCI quirk to the Clevo PC50HS and related models to fix
    audio output on the built in speakers.
    
    Signed-off-by: Steven Clarkson <sc@lambdal.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211014133554.1326741-1-sc@lambdal.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50fc52e5ca59eb386fcf902952c16ad0cefe2d7c
Author: Brendan Grieve <brendan@grieve.com.au>
Date:   Fri Oct 15 10:53:35 2021 +0800

    ALSA: usb-audio: Provide quirk for Sennheiser GSP670 Headset
    
    commit 3c414eb65c294719a91a746260085363413f91c1 upstream.
    
    As per discussion at: https://github.com/szszoke/sennheiser-gsp670-pulseaudio-profile/issues/13
    
    The GSP670 has 2 playback and 1 recording device that by default are
    detected in an incompatible order for alsa. This may have been done to make
    it compatible for the console by the manufacturer and only affects the
    latest firmware which uses its own ID.
    
    This quirk will resolve this by reordering the channels.
    
    Signed-off-by: Brendan Grieve <brendan@grieve.com.au>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211015025335.196592-1-brendan@grieve.com.au
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f218ba4c8aac7041cd8b81a5a893b0d121e6316
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Oct 18 15:16:12 2021 -0700

    vfs: check fd has read access in kernel_read_file_from_fd()
    
    commit 032146cda85566abcd1c4884d9d23e4e30a07e9a upstream.
    
    If we open a file without read access and then pass the fd to a syscall
    whose implementation calls kernel_read_file_from_fd(), we get a warning
    from __kernel_read():
    
            if (WARN_ON_ONCE(!(file->f_mode & FMODE_READ)))
    
    This currently affects both finit_module() and kexec_file_load(), but it
    could affect other syscalls in the future.
    
    Link: https://lkml.kernel.org/r/20211007220110.600005-1-willy@infradead.org
    Fixes: b844f0ecbc56 ("vfs: define kernel_copy_file_from_fd()")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Reported-by: Hao Sun <sunhao.th@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Mimi Zohar <zohar@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f439d2bcb6798e30fe89b0a83d85f2e5030d85ec
Author: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Date:   Mon Oct 18 15:16:09 2021 -0700

    elfcore: correct reference to CONFIG_UML
    
    commit b0e901280d9860a0a35055f220e8e457f300f40a upstream.
    
    Commit 6e7b64b9dd6d ("elfcore: fix building with clang") introduces
    special handling for two architectures, ia64 and User Mode Linux.
    However, the wrong name, i.e., CONFIG_UM, for the intended Kconfig
    symbol for User-Mode Linux was used.
    
    Although the directory for User Mode Linux is ./arch/um; the Kconfig
    symbol for this architecture is called CONFIG_UML.
    
    Luckily, ./scripts/checkkconfigsymbols.py warns on non-existing configs:
    
      UM
      Referencing files: include/linux/elfcore.h
      Similar symbols: UML, NUMA
    
    Correct the name of the config to the intended one.
    
    [akpm@linux-foundation.org: fix um/x86_64, per Catalin]
      Link: https://lkml.kernel.org/r/20211006181119.2851441-1-catalin.marinas@arm.com
      Link: https://lkml.kernel.org/r/YV6pejGzLy5ppEpt@arm.com
    
    Link: https://lkml.kernel.org/r/20211006082209.417-1-lukas.bulwahn@gmail.com
    Fixes: 6e7b64b9dd6d ("elfcore: fix building with clang")
    Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Barret Rhoden <brho@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3a83576378b4c904f711598dde2c5e881c4295c
Author: Valentin Vidic <vvidic@valentin-vidic.from.hr>
Date:   Mon Oct 18 15:15:42 2021 -0700

    ocfs2: mount fails with buffer overflow in strlen
    
    commit b15fa9224e6e1239414525d8d556d824701849fc upstream.
    
    Starting with kernel 5.11 built with CONFIG_FORTIFY_SOURCE mouting an
    ocfs2 filesystem with either o2cb or pcmk cluster stack fails with the
    trace below.  Problem seems to be that strings for cluster stack and
    cluster name are not guaranteed to be null terminated in the disk
    representation, while strlcpy assumes that the source string is always
    null terminated.  This causes a read outside of the source string
    triggering the buffer overflow detection.
    
      detected buffer overflow in strlen
      ------------[ cut here ]------------
      kernel BUG at lib/string.c:1149!
      invalid opcode: 0000 [#1] SMP PTI
      CPU: 1 PID: 910 Comm: mount.ocfs2 Not tainted 5.14.0-1-amd64 #1
        Debian 5.14.6-2
      RIP: 0010:fortify_panic+0xf/0x11
      ...
      Call Trace:
       ocfs2_initialize_super.isra.0.cold+0xc/0x18 [ocfs2]
       ocfs2_fill_super+0x359/0x19b0 [ocfs2]
       mount_bdev+0x185/0x1b0
       legacy_get_tree+0x27/0x40
       vfs_get_tree+0x25/0xb0
       path_mount+0x454/0xa20
       __x64_sys_mount+0x103/0x140
       do_syscall_64+0x3b/0xc0
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Link: https://lkml.kernel.org/r/20210929180654.32460-1-vvidic@valentin-vidic.from.hr
    Signed-off-by: Valentin Vidic <vvidic@valentin-vidic.from.hr>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b05caf023b14cbed9223bb5b48ecc7bffe38f632
Author: Jan Kara <jack@suse.cz>
Date:   Mon Oct 18 15:15:39 2021 -0700

    ocfs2: fix data corruption after conversion from inline format
    
    commit 5314454ea3ff6fc746eaf71b9a7ceebed52888fa upstream.
    
    Commit 6dbf7bb55598 ("fs: Don't invalidate page buffers in
    block_write_full_page()") uncovered a latent bug in ocfs2 conversion
    from inline inode format to a normal inode format.
    
    The code in ocfs2_convert_inline_data_to_extents() attempts to zero out
    the whole cluster allocated for file data by grabbing, zeroing, and
    dirtying all pages covering this cluster.  However these pages are
    beyond i_size, thus writeback code generally ignores these dirty pages
    and no blocks were ever actually zeroed on the disk.
    
    This oversight was fixed by commit 693c241a5f6a ("ocfs2: No need to zero
    pages past i_size.") for standard ocfs2 write path, inline conversion
    path was apparently forgotten; the commit log also has a reasoning why
    the zeroing actually is not needed.
    
    After commit 6dbf7bb55598, things became worse as writeback code stopped
    invalidating buffers on pages beyond i_size and thus these pages end up
    with clean PageDirty bit but with buffers attached to these pages being
    still dirty.  So when a file is converted from inline format, then
    writeback triggers, and then the file is grown so that these pages
    become valid, the invalid dirtiness state is preserved,
    mark_buffer_dirty() does nothing on these pages (buffers are already
    dirty) but page is never written back because it is clean.  So data
    written to these pages is lost once pages are reclaimed.
    
    Simple reproducer for the problem is:
    
      xfs_io -f -c "pwrite 0 2000" -c "pwrite 2000 2000" -c "fsync" \
        -c "pwrite 4000 2000" ocfs2_file
    
    After unmounting and mounting the fs again, you can observe that end of
    'ocfs2_file' has lost its contents.
    
    Fix the problem by not doing the pointless zeroing during conversion
    from inline format similarly as in the standard write path.
    
    [akpm@linux-foundation.org: fix whitespace, per Joseph]
    
    Link: https://lkml.kernel.org/r/20210930095405.21433-1-jack@suse.cz
    Fixes: 6dbf7bb55598 ("fs: Don't invalidate page buffers in block_write_full_page()")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Tested-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Acked-by: Gang He <ghe@suse.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: "Markov, Andrey" <Markov.Andrey@Dell.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bce53fbee94830abf78809b3409ec3a52dd99f3e
Author: Jeff Layton <jlayton@kernel.org>
Date:   Thu Oct 7 14:19:49 2021 -0400

    ceph: fix handling of "meta" errors
    
    commit 1bd85aa65d0e7b5e4d09240f492f37c569fdd431 upstream.
    
    Currently, we check the wb_err too early for directories, before all of
    the unsafe child requests have been waited on. In order to fix that we
    need to check the mapping->wb_err later nearer to the end of ceph_fsync.
    
    We also have an overly-complex method for tracking errors after
    blocklisting. The errors recorded in cleanup_session_requests go to a
    completely separate field in the inode, but we end up reporting them the
    same way we would for any other error (in fsync).
    
    There's no real benefit to tracking these errors in two different
    places, since the only reporting mechanism for them is in fsync, and
    we'd need to advance them both every time.
    
    Given that, we can just remove i_meta_err, and convert the places that
    used it to instead just use mapping->wb_err instead. That also fixes
    the original problem by ensuring that we do a check_and_advance of the
    wb_err at the end of the fsync op.
    
    Cc: stable@vger.kernel.org
    URL: https://tracker.ceph.com/issues/52864
    Reported-by: Patrick Donnelly <pdonnell@redhat.com>
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Xiubo Li <xiubli@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 151c72bba1297d3ca1e56203ea008b7edfc6a70d
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Thu Oct 14 17:26:40 2021 +0800

    can: j1939: j1939_xtp_rx_rts_session_new(): abort TP less than 9 bytes
    
    commit a4fbe70c5cb746441d56b28cf88161d9e0e25378 upstream.
    
    The receiver should abort TP if 'total message size' in TP.CM_RTS and
    TP.CM_BAM is less than 9 or greater than 1785 [1], but currently the
    j1939 stack only checks the upper bound and the receiver will accept
    the following broadcast message:
    
      vcan1  18ECFF00   [8]  20 08 00 02 FF 00 23 01
      vcan1  18EBFF00   [8]  01 00 00 00 00 00 00 00
      vcan1  18EBFF00   [8]  02 00 FF FF FF FF FF FF
    
    This patch adds check for the lower bound and abort illegal TP.
    
    [1] SAE-J1939-82 A.3.4 Row 2 and A.3.6 Row 6.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/all/1634203601-3460-1-git-send-email-zhangchangzhong@huawei.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ddf781882acf4292f88e19f7806a28f5a26fbdb
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Thu Sep 30 11:33:20 2021 +0800

    can: j1939: j1939_xtp_rx_dat_one(): cancel session if receive TP.DT with error length
    
    commit 379743985ab6cfe2cbd32067cf4ed497baca6d06 upstream.
    
    According to SAE-J1939-21, the data length of TP.DT must be 8 bytes, so
    cancel session when receive unexpected TP.DT message.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/all/1632972800-45091-1-git-send-email-zhangchangzhong@huawei.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0e47d2833b4f65e6c799f28c6b636d36b8b936d
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Sun Sep 26 18:47:57 2021 +0800

    can: j1939: j1939_netdev_start(): fix UAF for rx_kref of j1939_priv
    
    commit d9d52a3ebd284882f5562c88e55991add5d01586 upstream.
    
    It will trigger UAF for rx_kref of j1939_priv as following.
    
            cpu0                                    cpu1
    j1939_sk_bind(socket0, ndev0, ...)
    j1939_netdev_start
                                            j1939_sk_bind(socket1, ndev0, ...)
                                            j1939_netdev_start
    j1939_priv_set
                                            j1939_priv_get_by_ndev_locked
    j1939_jsk_add
    .....
    j1939_netdev_stop
    kref_put_lock(&priv->rx_kref, ...)
                                            kref_get(&priv->rx_kref, ...)
                                            REFCOUNT_WARN("addition on 0;...")
    
    ====================================================
    refcount_t: addition on 0; use-after-free.
    WARNING: CPU: 1 PID: 20874 at lib/refcount.c:25 refcount_warn_saturate+0x169/0x1e0
    RIP: 0010:refcount_warn_saturate+0x169/0x1e0
    Call Trace:
     j1939_netdev_start+0x68b/0x920
     j1939_sk_bind+0x426/0xeb0
     ? security_socket_bind+0x83/0xb0
    
    The rx_kref's kref_get() and kref_put() should use j1939_netdev_lock to
    protect.
    
    Fixes: 9d71dd0c70099 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/all/20210926104757.2021540-1-william.xuanziyang@huawei.com
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+85d9878b19c94f9019ad@syzkaller.appspotmail.com
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e66cfed66f9476bd8f636d7ce0294d3c99aec0c
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Sep 6 17:42:19 2021 +0800

    can: j1939: j1939_tp_rxtimer(): fix errant alert in j1939_tp_rxtimer
    
    commit b504a884f6b5a77dac7d580ffa08e482f70d1a30 upstream.
    
    When the session state is J1939_SESSION_DONE, j1939_tp_rxtimer() will
    give an alert "rx timeout, send abort", but do nothing actually. Move
    the alert into session active judgment condition, it is more
    reasonable.
    
    One of the scenarios is that j1939_tp_rxtimer() execute followed by
    j1939_xtp_rx_abort_one(). After j1939_xtp_rx_abort_one(), the session
    state is J1939_SESSION_DONE, then j1939_tp_rxtimer() give an alert.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/all/20210906094219.95924-1-william.xuanziyang@huawei.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1248582e47a9f7ce0ecd156c39fc61f8b6aa3699
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Thu Oct 14 06:28:33 2021 +0000

    can: peak_pci: peak_pci_remove(): fix UAF
    
    commit 949fe9b35570361bc6ee2652f89a0561b26eec98 upstream.
    
    When remove the module peek_pci, referencing 'chan' again after
    releasing 'dev' will cause UAF.
    
    Fix this by releasing 'dev' later.
    
    The following log reveals it:
    
    [   35.961814 ] BUG: KASAN: use-after-free in peak_pci_remove+0x16f/0x270 [peak_pci]
    [   35.963414 ] Read of size 8 at addr ffff888136998ee8 by task modprobe/5537
    [   35.965513 ] Call Trace:
    [   35.965718 ]  dump_stack_lvl+0xa8/0xd1
    [   35.966028 ]  print_address_description+0x87/0x3b0
    [   35.966420 ]  kasan_report+0x172/0x1c0
    [   35.966725 ]  ? peak_pci_remove+0x16f/0x270 [peak_pci]
    [   35.967137 ]  ? trace_irq_enable_rcuidle+0x10/0x170
    [   35.967529 ]  ? peak_pci_remove+0x16f/0x270 [peak_pci]
    [   35.967945 ]  __asan_report_load8_noabort+0x14/0x20
    [   35.968346 ]  peak_pci_remove+0x16f/0x270 [peak_pci]
    [   35.968752 ]  pci_device_remove+0xa9/0x250
    
    Fixes: e6d9c80b7ca1 ("can: peak_pci: add support of some new PEAK-System PCI cards")
    Link: https://lore.kernel.org/all/1634192913-15639-1-git-send-email-zheyuma97@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea82c2463e222422e9d74ab4f21eb37258123b45
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Wed Sep 29 16:21:10 2021 +0200

    can: peak_usb: pcan_usb_fd_decode_status(): fix back to ERROR_ACTIVE state notification
    
    commit 3d031abc7e7249573148871180c28ecedb5e27df upstream.
    
    This corrects the lack of notification of a return to ERROR_ACTIVE
    state for USB - CANFD devices from PEAK-System.
    
    Fixes: 0a25e1f4f185 ("can: peak_usb: add support for PEAK new CANFD USB adapters")
    Link: https://lore.kernel.org/all/20210929142111.55757-1-s.grosjean@peak-system.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c26dcd1cb8db14b2d267a4e642e5fe2cfa9f429a
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Fri Sep 24 16:55:56 2021 +0900

    can: rcar_can: fix suspend/resume
    
    commit f7c05c3987dcfde9a4e8c2d533db013fabebca0d upstream.
    
    If the driver was not opened, rcar_can_suspend() should not call
    clk_disable() because the clock was not enabled.
    
    Fixes: fd1159318e55 ("can: add Renesas R-Car CAN driver")
    Link: https://lore.kernel.org/all/20210924075556.223685-1-yoshihiro.shimoda.uh@renesas.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Ayumi Nakamichi <ayumi.nakamichi.kf@renesas.com>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Tested-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c5585eae3ae0eff2045e669f2d059d60bd42158
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Wed Oct 20 19:52:06 2021 +0300

    net: enetc: fix ethtool counter name for PM0_TERR
    
    [ Upstream commit fb8dc5fc8cbdfd62ecd16493848aee2f42ed84d9 ]
    
    There are two counters named "MAC tx frames", one of them is actually
    incorrect. The correct name for that counter should be "MAC tx error
    frames", which is symmetric to the existing "MAC rx error frames".
    
    Fixes: 16eb4c85c964 ("enetc: Add ethtool statistics")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: <Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20211020165206.1069889-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0b0baade9b80df743565ef249a32218d206c430
Author: Kurt Kanzenbach <kurt@linutronix.de>
Date:   Wed Oct 20 09:04:33 2021 +0200

    net: stmmac: Fix E2E delay mechanism
    
    [ Upstream commit 3cb958027cb8b78d3ee639ce9af54c2ef1bf964f ]
    
    When utilizing End to End delay mechanism, the following error messages show up:
    
    |root@ehl1:~# ptp4l --tx_timestamp_timeout=50 -H -i eno2 -E -m
    |ptp4l[950.573]: selected /dev/ptp3 as PTP clock
    |ptp4l[950.586]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
    |ptp4l[950.586]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
    |ptp4l[952.879]: port 1: new foreign master 001395.fffe.4897b4-1
    |ptp4l[956.879]: selected best master clock 001395.fffe.4897b4
    |ptp4l[956.879]: port 1: assuming the grand master role
    |ptp4l[956.879]: port 1: LISTENING to GRAND_MASTER on RS_GRAND_MASTER
    |ptp4l[962.017]: port 1: received DELAY_REQ without timestamp
    |ptp4l[962.273]: port 1: received DELAY_REQ without timestamp
    |ptp4l[963.090]: port 1: received DELAY_REQ without timestamp
    
    Commit f2fb6b6275eb ("net: stmmac: enable timestamp snapshot for required PTP
    packets in dwmac v5.10a") already addresses this problem for the dwmac
    v5.10. However, same holds true for all dwmacs above version v4.10. Correct the
    check accordingly. Afterwards everything works as expected.
    
    Tested on Intel Atom(R) x6414RE Processor.
    
    Fixes: 14f347334bf2 ("net: stmmac: Correctly take timestamp for PTPv2")
    Fixes: f2fb6b6275eb ("net: stmmac: enable timestamp snapshot for required PTP packets in dwmac v5.10a")
    Suggested-by: Ong Boon Leong <boon.leong.ong@intel.com>
    Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4b64011e458aa2b246cd4e42012cfd83d2d9a5c
Author: Peng Li <lipeng321@huawei.com>
Date:   Tue Oct 19 22:16:35 2021 +0800

    net: hns3: disable sriov before unload hclge layer
    
    [ Upstream commit 0dd8a25f355b4df2d41c08df1716340854c7d4c5 ]
    
    HNS3 driver includes hns3.ko, hnae3.ko and hclge.ko.
    hns3.ko includes network stack and pci_driver, hclge.ko includes
    HW device action, algo_ops and timer task, hnae3.ko includes some
    register function.
    
    When SRIOV is enable and hclge.ko is removed, HW device is unloaded
    but VF still exists, PF will not reply VF mbx messages, and cause
    errors.
    
    This patch fix it by disable SRIOV before remove hclge.ko.
    
    Fixes: e2cb1dec9779 ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support")
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 472acf1582fd02e64e4141d0e99971fcf97f3d27
Author: Guangbin Huang <huangguangbin2@huawei.com>
Date:   Tue Oct 19 22:16:30 2021 +0800

    net: hns3: add limit ets dwrr bandwidth cannot be 0
    
    [ Upstream commit 731797fdffa3d083db536e2fdd07ceb050bb40b1 ]
    
    If ets dwrr bandwidth of tc is set to 0, the hardware will switch to SP
    mode. In this case, this tc may occupy all the tx bandwidth if it has
    huge traffic, so it violates the purpose of the user setting.
    
    To fix this problem, limit the ets dwrr bandwidth must greater than 0.
    
    Fixes: cacde272dd00 ("net: hns3: Add hclge_dcb module for the support of DCB feature")
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1f9380ee230057d3f62c978d1a031dfc6b41180
Author: Guangbin Huang <huangguangbin2@huawei.com>
Date:   Tue Oct 19 22:16:29 2021 +0800

    net: hns3: reset DWRR of unused tc to zero
    
    [ Upstream commit b63fcaab959807282e9822e659034edf95fc8bd1 ]
    
    Currently, DWRR of tc will be initialized to a fixed value when this tc
    is enabled, but it is not been reset to 0 when this tc is disabled. It
    cause a problem that the DWRR of unused tc is not 0 after using tc tool
    to add and delete multi-tc parameters.
    
    For examples, after enabling 4 TCs and restoring to 1 TC by follow
    tc commands:
    
    $ tc qdisc add dev eth0 root mqprio num_tc 4 map 0 1 2 3 0 1 2 3 queues \
      8@0 8@8 8@16 8@24 hw 1 mode channel
    $ tc qdisc del dev eth0 root
    
    Now there is just one TC is enabled for eth0, but the tc info querying by
    debugfs is shown as follow:
    
    $ cat /mnt/hns3/0000:7d:00.0/tm/tc_sch_info
    enabled tc number: 1
    weight_offset: 14
    TC    MODE  WEIGHT
    0     dwrr    100
    1     dwrr    100
    2     dwrr    100
    3     dwrr    100
    4     dwrr      0
    5     dwrr      0
    6     dwrr      0
    7     dwrr      0
    
    This patch fixes it by resetting DWRR of tc to 0 when tc is disabled.
    
    Fixes: 848440544b41 ("net: hns3: Add support of TX Scheduler & Shaper to HNS3 driver")
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12bdcbc043410e4ee13e70981b4f5851aa678bd9
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Oct 4 00:56:06 2021 -0700

    NIOS2: irqflags: rename a redefined register name
    
    [ Upstream commit 4cce60f15c04d69eff6ffc539ab09137dbe15070 ]
    
    Both arch/nios2/ and drivers/mmc/host/tmio_mmc.c define a macro
    with the name "CTL_STATUS". Change the one in arch/nios2/ to be
    "CTL_FSTATUS" (flags status) to eliminate the build warning.
    
    In file included from ../drivers/mmc/host/tmio_mmc.c:22:
    drivers/mmc/host/tmio_mmc.h:31: warning: "CTL_STATUS" redefined
       31 | #define CTL_STATUS 0x1c
    arch/nios2/include/asm/registers.h:14: note: this is the location of the previous definition
       14 | #define CTL_STATUS      0
    
    Fixes: b31ebd8055ea ("nios2: Nios2 registers")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 599766696f6958d68258f126a5f6c9f9d58208e4
Author: Aleksander Jan Bajkowski <olek2@wp.pl>
Date:   Sat Oct 16 00:10:20 2021 +0200

    net: dsa: lantiq_gswip: fix register definition
    
    [ Upstream commit 66d262804a2276721eac86cf18fcd61046149193 ]
    
    I compared the register definitions with the D-Link DWR-966
    GPL sources and found that the PUAFD field definition was
    incorrect. This definition is unused and causes no issues.
    
    Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for vrx200")
    Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
    Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f49ce82f9b7c4a6cf12e82f5a6940056d5cb58d7
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Fri Oct 15 15:07:54 2021 +0200

    lan78xx: select CRC32
    
    [ Upstream commit 46393d61a328d7c4e3264252dae891921126c674 ]
    
    Fix the following build/link error by adding a dependency on the CRC32
    routines:
    
      ld: drivers/net/usb/lan78xx.o: in function `lan78xx_set_multicast':
      lan78xx.c:(.text+0x48cf): undefined reference to `crc32_le'
    
    The actual use of crc32_le() comes indirectly through ether_crc().
    
    Fixes: 55d7de9de6c30 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83094f8c44cb6cc4a0beca1237f0b728d8790e68
Author: Antoine Tenart <atenart@kernel.org>
Date:   Tue Oct 12 16:54:37 2021 +0200

    netfilter: ipvs: make global sysctl readonly in non-init netns
    
    [ Upstream commit 174c376278949c44aad89c514a6b5db6cee8db59 ]
    
    Because the data pointer of net/ipv4/vs/debug_level is not updated per
    netns, it must be marked as read-only in non-init netns.
    
    Fixes: c6d2d445d8de ("IPVS: netns, final patch enabling network name space.")
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce70ee94dde60735aec4424139a376cae4ebc129
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Wed Oct 13 13:17:04 2021 +0800

    ASoC: wm8960: Fix clock configuration on slave mode
    
    [ Upstream commit 6b9b546dc00797c74bef491668ce5431ff54e1e2 ]
    
    There is a noise issue for 8kHz sample rate on slave mode.
    Compared with master mode, the difference is the DACDIV
    setting, after correcting the DACDIV, the noise is gone.
    
    There is no noise issue for 48kHz sample rate, because
    the default value of DACDIV is correct for 48kHz.
    
    So wm8960_configure_clocking() should be functional for
    ADC and DAC function even if it is slave mode.
    
    In order to be compatible for old use case, just add
    condition for checking that sysclk is zero with
    slave mode.
    
    Fixes: 0e50b51aa22f ("ASoC: wm8960: Let wm8960 driver configure its bit clock and frame clock")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/1634102224-3922-1-git-send-email-shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f5b08ca22e1930d2cb0aa176355434b927537bc
Author: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date:   Wed Oct 6 22:19:43 2021 +0200

    dma-debug: fix sg checks in debug_dma_map_sg()
    
    [ Upstream commit 293d92cbbd2418ca2ba43fed07f1b92e884d1c77 ]
    
    The following warning occurred sporadically on s390:
    DMA-API: nvme 0006:00:00.0: device driver maps memory from kernel text or rodata [addr=0000000048cc5e2f] [len=131072]
    WARNING: CPU: 4 PID: 825 at kernel/dma/debug.c:1083 check_for_illegal_area+0xa8/0x138
    
    It is a false-positive warning, due to broken logic in debug_dma_map_sg().
    check_for_illegal_area() checks for overlay of sg elements with kernel text
    or rodata. It is called with sg_dma_len(s) instead of s->length as
    parameter. After the call to ->map_sg(), sg_dma_len() will contain the
    length of possibly combined sg elements in the DMA address space, and not
    the individual sg element length, which would be s->length.
    
    The check will then use the physical start address of an sg element, and
    add the DMA length for the overlap check, which could result in the false
    warning, because the DMA length can be larger than the actual single sg
    element length.
    
    In addition, the call to check_for_illegal_area() happens in the iteration
    over mapped_ents, which will not include all individual sg elements if
    any of them were combined in ->map_sg().
    
    Fix this by using s->length instead of sg_dma_len(s). Also put the call to
    check_for_illegal_area() in a separate loop, iterating over all the
    individual sg elements ("nents" instead of "mapped_ents").
    
    While at it, as suggested by Robin Murphy, also move check_for_stack()
    inside the new loop, as it is similarly concerned with validating the
    individual sg elements.
    
    Link: https://lore.kernel.org/lkml/20210705185252.4074653-1-gerald.schaefer@linux.ibm.com
    Fixes: 884d05970bfb ("dma-debug: use sg_dma_len accessor")
    Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50aefa9acc91727ce9fe06cc1959ed744e7f79ab
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Wed Oct 6 13:20:44 2021 -0400

    NFSD: Keep existing listeners on portlist error
    
    [ Upstream commit c20106944eb679fa3ab7e686fe5f6ba30fbc51e5 ]
    
    If nfsd has existing listening sockets without any processes, then an error
    returned from svc_create_xprt() for an additional transport will remove
    those existing listeners.  We're seeing this in practice when userspace
    attempts to create rpcrdma transports without having the rpcrdma modules
    present before creating nfsd kernel processes.  Fix this by checking for
    existing sockets before calling nfsd_destroy().
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a5bf3e729d9a723f4a1177fbb00e961520b1344
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Aug 1 10:36:59 2021 -0700

    xtensa: xtfpga: Try software restart before simulating CPU reset
    
    [ Upstream commit 012e974501a270d8dfd4ee2039e1fdf7579c907e ]
    
    Rebooting xtensa images loaded with the '-kernel' option in qemu does
    not work. When executing a reboot command, the qemu session either hangs
    or experiences an endless sequence of error messages.
    
      Kernel panic - not syncing: Unrecoverable error in exception handler
    
    Reset code jumps to the CPU restart address, but Linux can not recover
    from there because code and data in the kernel init sections have been
    discarded and overwritten at this point.
    
    XTFPGA platforms have a means to reset the CPU by writing 0xdead into a
    specific FPGA IO address. When used in QEMU the kernel image loaded with
    the '-kernel' option gets restored to its original state allowing the
    machine to boot successfully.
    
    Use that mechanism to attempt a platform reset. If it does not work,
    fall back to the existing mechanism.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31137288b9464c0a702c8dd2d675a6a1fe692404
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Oct 5 11:36:01 2021 -0700

    xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF
    
    [ Upstream commit f3d7c2cdf6dc0d5402ec29c3673893b3542c5ad1 ]
    
    Use platform data to initialize xtfpga device drivers when CONFIG_USE_OF
    is not selected. This fixes xtfpga networking when CONFIG_USE_OF is not
    selected but CONFIG_OF is.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d946a39bad58cf65fdc8d645af6f47331754a820
Author: Eugen Hristev <eugen.hristev@microchip.com>
Date:   Thu Sep 2 15:13:58 2021 +0300

    ARM: dts: at91: sama5d2_som1_ek: disable ISC node by default
    
    [ Upstream commit 4348cc10da6377a86940beb20ad357933b8f91bb ]
    
    Without a sensor node, the ISC will simply fail to probe, as the
    corresponding port node is missing.
    It is then logical to disable the node in the devicetree.
    If we add a port with a connection to a sensor endpoint, ISC can be enabled.
    
    Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Link: https://lore.kernel.org/r/20210902121358.503589-1-eugen.hristev@microchip.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e7c4819c0b6725abe3e32ebf677a38ea6a7ef643
Author: Sumit Garg <sumit.garg@linaro.org>
Date:   Tue Oct 12 13:01:16 2021 +0530

    tee: optee: Fix missing devices unregister during optee_remove
    
    commit 7f565d0ead264329749c0da488de9c8dfa2f18ce upstream.
    
    When OP-TEE driver is built as a module, OP-TEE client devices
    registered on TEE bus during probe should be unregistered during
    optee_remove. So implement optee_unregister_devices() accordingly.
    
    Fixes: c3fa24af9244 ("tee: optee: add TEE bus device enumeration support")
    Reported-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    [SG: backport to 5.4, dev name s/optee-ta/optee-clnt/]
    Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1e9b4e0f656c02d7758674787448d3aa92524b1
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Wed Feb 26 17:14:21 2020 +0000

    net: switchdev: do not propagate bridge updates across bridges
    
    commit 07c6f9805f12f1bb538ef165a092b300350384aa upstream.
    
    When configuring a tree of independent bridges, propagating changes
    from the upper bridge across a bridge master to the lower bridge
    ports brings surprises.
    
    For example, a lower bridge may have vlan filtering enabled.  It
    may have a vlan interface attached to the bridge master, which may
    then be incorporated into another bridge.  As soon as the lower
    bridge vlan interface is attached to the upper bridge, the lower
    bridge has vlan filtering disabled.
    
    This occurs because switchdev recursively applies its changes to
    all lower devices no matter what.
    
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Tested-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Fabian Bläse <fabian@blaese.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d22cd0482897ace98fd6d744129dd2938476795
Author: Helge Deller <deller@gmx.de>
Date:   Wed Sep 1 22:18:18 2021 +0200

    parisc: math-emu: Fix fall-through warnings
    
    commit 6f1fce595b78b775d7fb585c15c2dc3a6994f96e upstream.
    
    Fix lots of fallthrough warnings, e.g.:
    arch/parisc/math-emu/fpudispatch.c:323:33: warning: this statement may fall through [-Wimplicit-fallthrough=]
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>