commit 43e577d7a2cb60ad478387155c9de352f152101e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Dec 14 10:57:23 2021 +0100

    Linux 5.15.8
    
    Link: https://lore.kernel.org/r/20211213092945.091487407@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2bd1add2c3ecd496bfb8fb1f7440be16941e1a0
Author: Maxim Mikityanskiy <maximmi@nvidia.com>
Date:   Tue Dec 7 10:15:21 2021 +0200

    bpf: Add selftests to cover packet access corner cases
    
    commit b560b21f71eb4ef9dfc7c8ec1d0e4d7f9aa54b51 upstream.
    
    This commit adds BPF verifier selftests that cover all corner cases by
    packet boundary checks. Specifically, 8-byte packet reads are tested at
    the beginning of data and at the beginning of data_meta, using all kinds
    of boundary checks (all comparison operators: <, >, <=, >=; both
    permutations of operands: data + length compared to end, end compared to
    data + length). For each case there are three tests:
    
    1. Length is just enough for an 8-byte read. Length is either 7 or 8,
       depending on the comparison.
    
    2. Length is increased by 1 - should still pass the verifier. These
       cases are useful, because they failed before commit 2fa7d94afc1a
       ("bpf: Fix the off-by-two error in range markings").
    
    3. Length is decreased by 1 - should be rejected by the verifier.
    
    Some existing tests are just renamed to avoid duplication.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211207081521.41923-1-maximmi@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5475fcf0a1c453b5efe6277db5f4c6b651b774c0
Author: Alexey Sheplyakov <asheplyakov@basealt.ru>
Date:   Tue Nov 9 19:34:02 2021 +0400

    clocksource/drivers/dw_apb_timer_of: Fix probe failure
    
    commit a663bd19114d79f0902e2490fc484e5a7419cdc2 upstream.
    
    The driver refuses to probe with -EINVAL since the commit 5d9814df0aec
    ("clocksource/drivers/dw_apb_timer_of: Add error handling if no clock
    available").
    
    Before the driver used to probe successfully if either "clock-freq" or
    "clock-frequency" properties has been specified in the device tree.
    
    That commit changed
    
    if (A && B)
            panic("No clock nor clock-frequency property");
    
    into
    
    if (!A && !B)
            return 0;
    
    That's a bug: the reverse of `A && B` is '!A || !B', not '!A && !B'
    
    Signed-off-by: Vadim V. Vlasov <vadim.vlasov@elpitech.ru>
    Signed-off-by: Alexey Sheplyakov <asheplyakov@basealt.ru>
    Fixes: 5d9814df0aec56a6 ("clocksource/drivers/dw_apb_timer_of: Add error handling if no clock available").
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: Dinh Nguyen <dinguyen@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vadim V. Vlasov <vadim.vlasov@elpitech.ru>
    Acked-by: Dinh Nguyen <dinguyen@kernel.org>
    Link: https://lore.kernel.org/r/20211109153401.157491-1-asheplyakov@basealt.ru
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6104661b461a18bb7910ec50d377bf26144661
Author: Jeya R <jeyr@codeaurora.org>
Date:   Wed Nov 24 22:01:21 2021 +0530

    misc: fastrpc: fix improper packet size calculation
    
    commit 3a1bf591e9a410f220b7405a142a47407394a1d5 upstream.
    
    The buffer list is sorted and this is not being considered while
    calculating packet size. This would lead to improper copy length
    calculation for non-dmaheap buffers which would eventually cause
    sending improper buffers to DSP.
    
    Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method")
    Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Jeya R <jeyr@codeaurora.org>
    Link: https://lore.kernel.org/r/1637771481-4299-1-git-send-email-jeyr@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62a8ee0502d8a4189b4f2f3e6e2f0840ef5d700c
Author: Vladimir Murzin <vladimir.murzin@arm.com>
Date:   Wed Dec 1 11:02:58 2021 +0000

    irqchip: nvic: Fix offset for Interrupt Priority Offsets
    
    commit c5e0cbe2858d278a27d5b3fe31890aea5be064c4 upstream.
    
    According to ARM(v7M) ARM Interrupt Priority Offsets located at
    0xE000E400-0xE000E5EC, while 0xE000E300-0xE000E33C covers read-only
    Interrupt Active Bit Registers
    
    Fixes: 292ec080491d ("irqchip: Add support for ARMv7-M NVIC")
    Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211201110259.84857-1-vladimir.murzin@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d34992ebe9c5a59fcd182055b6baf418fb405b4
Author: Wudi Wang <wangwudi@hisilicon.com>
Date:   Wed Dec 8 09:54:29 2021 +0800

    irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL
    
    commit b383a42ca523ce54bcbd63f7c8f3cf974abc9b9a upstream.
    
    INVALL CMD specifies that the ITS must ensure any caching associated with
    the interrupt collection defined by ICID is consistent with the LPI
    configuration tables held in memory for all Redistributors. SYNC is
    required to ensure that INVALL is executed.
    
    Currently, LPI configuration data may be inconsistent with that in the
    memory within a short period of time after the INVALL command is executed.
    
    Signed-off-by: Wudi Wang <wangwudi@hisilicon.com>
    Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Fixes: cc2d3216f53c ("irqchip: GICv3: ITS command queue")
    Link: https://lore.kernel.org/r/20211208015429.5007-1-zhangshaokun@hisilicon.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a7c65506473dc1415e6eadcea16e53d12740f6b
Author: Xie Yongji <xieyongji@bytedance.com>
Date:   Mon Sep 13 19:19:28 2021 +0800

    aio: Fix incorrect usage of eventfd_signal_allowed()
    
    commit 4b3749865374899e115aa8c48681709b086fe6d3 upstream.
    
    We should defer eventfd_signal() to the workqueue when
    eventfd_signal_allowed() return false rather than return
    true.
    
    Fixes: b542e383d8c0 ("eventfd: Make signal recursion protection a task bit")
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Link: https://lore.kernel.org/r/20210913111928.98-1-xieyongji@bytedance.com
    Reviewed-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d99d861ce3ef9b6acbcbbd60406bda2da34df91e
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Nov 25 14:00:57 2021 +0100

    irqchip/armada-370-xp: Fix support for Multi-MSI interrupts
    
    commit d0a553502efd545c1ce3fd08fc4d423f8e4ac3d6 upstream.
    
    irq-armada-370-xp driver already sets MSI_FLAG_MULTI_PCI_MSI flag into
    msi_domain_info structure. But allocated interrupt numbers for Multi-MSI
    needs to be properly aligned otherwise devices send MSI interrupt with
    wrong number.
    
    Fix this issue by using function bitmap_find_free_region() instead of
    bitmap_find_next_zero_area() to allocate aligned interrupt numbers.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Fixes: a71b9412c90c ("irqchip/armada-370-xp: Allow allocation of multiple MSIs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211125130057.26705-2-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97912b97fd832b9be671ec5702571fc4360b1afe
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Nov 25 14:00:56 2021 +0100

    irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc()
    
    commit ce20eff57361e72878a772ef08b5239d3ae102b6 upstream.
    
    IRQ domain alloc function should return zero on success. Non-zero value
    indicates failure.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Fixes: fcc392d501bd ("irqchip/armada-370-xp: Use the generic MSI infrastructure")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211125130057.26705-1-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2675399eb2a0f5aa1493f6f5c83d38911cb99af
Author: Billy Tsai <billy_tsai@aspeedtech.com>
Date:   Wed Nov 24 17:43:48 2021 +0800

    irqchip/aspeed-scu: Replace update_bits with write_bits.
    
    commit 8958389681b929fcc7301e7dc5f0da12e4a256a0 upstream.
    
    The interrupt status bits are cleared by writing 1, we should force a
    write to clear the interrupt without checking if the value has changed.
    
    Fixes: 04f605906ff0 ("irqchip: Add Aspeed SCU interrupt controller")
    Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211124094348.11621-1-billy_tsai@aspeedtech.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e18f3e046ccd6fcae6d6c1c7f0d5c780bf105bb6
Author: Kelly Devilliv <kelly.devilliv@gmail.com>
Date:   Mon Nov 1 23:05:02 2021 +0800

    csky: fix typo of fpu config macro
    
    commit a0793fdad9a11a32bc6d21317c93c83f4aa82ebc upstream.
    
    Fix typo which will cause fpe and privilege exception error.
    
    Signed-off-by: Kelly Devilliv <kelly.devilliv@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47b355f25b55c98c63ed7346faa3e1613c895f7e
Author: Loic Poulain <loic.poulain@linaro.org>
Date:   Thu Dec 9 18:46:33 2021 +0530

    bus: mhi: core: Add support for forced PM resume
    
    commit cab2d3fd6866e089b5c50db09dece131f85bfebd upstream.
    
    For whatever reason, some devices like QCA6390, WCN6855 using ath11k
    are not in M3 state during PM resume, but still functional. The
    mhi_pm_resume should then not fail in those cases, and let the higher
    level device specific stack continue resuming process.
    
    Add an API mhi_pm_resume_force(), to force resuming irrespective of the
    current MHI state. This fixes a regression with non functional ath11k WiFi
    after suspend/resume cycle on some machines.
    
    Bug report: https://bugzilla.kernel.org/show_bug.cgi?id=214179
    
    Link: https://lore.kernel.org/regressions/871r5p0x2u.fsf@codeaurora.org/
    Fixes: 020d3b26c07a ("bus: mhi: Early MHI resume failure in non M3 state")
    Cc: stable@vger.kernel.org #5.13
    Reported-by: Kalle Valo <kvalo@codeaurora.org>
    Reported-by: Pengyu Ma <mapengyu@gmail.com>
    Tested-by: Kalle Valo <kvalo@kernel.org>
    Acked-by: Kalle Valo <kvalo@kernel.org>
    Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
    [mani: Switched to API, added bug report, reported-by tags and CCed stable]
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://lore.kernel.org/r/20211209131633.4168-1-manivannan.sadhasivam@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f4b37c7a692dc9e80cc1f37bb903c759a3ed767
Author: Slark Xiao <slark_xiao@163.com>
Date:   Fri Nov 26 16:19:51 2021 +0530

    bus: mhi: pci_generic: Fix device recovery failed issue
    
    commit e2022cbec9c2606514c4edc4a760e3acb7419d8a upstream.
    
    For Foxconn T99W175 device(sdx55 platform) in some host platform,
    it would be unavailable once the host execute the err handler.
    
    After checking, it's caused by the delay time too short to
    get a successful reset.
    
    Please see my test evidence as bewlow(BTW, I add some extra test logs
    in function mhi_pci_reset_prepare and mhi_pci_reset_done):
      When MHI_POST_RESET_DELAY_MS equals to 500ms:
       Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222477] mhi mhi0: Device MHI is not in valid state
       Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222628] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
       Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222631] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
       Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222632] mhi mhi0:  mhi_soc_reset write soc to reset
       Nov  4 14:30:05 jbd-ThinkEdge kernel: [  147.839993] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
       Nov  4 14:30:05 jbd-ThinkEdge kernel: [  147.902063] mhi-pci-generic 0000:2d:00.0: reset failed
    
      When MHI_POST_RESET_DELAY_MS equals to 1000ms or 1500ms:
       Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.067857] mhi mhi0: Device MHI is not in valid state
       Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068029] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
       Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068032] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
       Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068034] mhi mhi0:  mhi_soc_reset write soc to reset
       Nov  4 19:07:29 jbd-ThinkEdge kernel: [  159.607006] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
       Nov  4 19:07:29 jbd-ThinkEdge kernel: [  159.607152] mhi mhi0: Requested to power ON
       Nov  4 19:07:51 jbd-ThinkEdge kernel: [  181.302872] mhi mhi0: Failed to reset MHI due to syserr state
       Nov  4 19:07:51 jbd-ThinkEdge kernel: [  181.303011] mhi-pci-generic 0000:2d:00.0: failed to power up MHI controller
    
      When MHI_POST_RESET_DELAY_MS equals to 2000ms:
       Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180527] mhi mhi0: Failed to transition from PM state: Linkdown or Error Fatal Detect to: SYS ERROR Process
       Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180535] mhi mhi0: Device MHI is not in valid state
       Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180722] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
       Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180725] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
       Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180727] mhi mhi0:  mhi_soc_reset write soc to reset
       Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.230787] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
       Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.230928] mhi mhi0: Requested to power ON
       Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.231173] mhi mhi0: Power on setup success
       Nov  4 17:51:14 jbd-ThinkEdge kernel: [  153.254747] mhi mhi0: Wait for device to enter SBL or Mission mode
    
    I also tried big data like 3000, and it worked as well. 500ms may not be
    enough for all support mhi device. We shall increase it to 2000ms
    at least.
    
    Link: https://lore.kernel.org/r/20211108113127.3938-1-slark_xiao@163.com
    [mani: massaged commit message little bit, added Fixes tag and CCed stable]
    Fixes: 8ccc3279fcad ("mhi: pci_generic: Add support for reset")
    Cc: stable@vger.kernel.org
    Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://lore.kernel.org/r/20211126104951.35685-2-manivannan.sadhasivam@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bff8dff8e21191c643720b7039da55371809ab7
Author: Ralph Siemsen <ralph.siemsen@linaro.org>
Date:   Mon Nov 8 13:16:27 2021 -0500

    nvmem: eeprom: at25: fix FRAM byte_len
    
    commit 9a626577398c24ecab63c0a684436c8928092367 upstream.
    
    Commit fd307a4ad332 ("nvmem: prepare basics for FRAM support") added
    support for FRAM devices such as the Cypress FM25V. During testing, it
    was found that the FRAM detects properly, however reads and writes fail.
    Upon further investigation, two problem were found in at25_probe() routine.
    
    1) In the case of an FRAM device without platform data, eg.
           fram == true && spi->dev.platform_data == NULL
    the stack local variable "struct spi_eeprom chip" is not initialized
    fully, prior to being copied into at25->chip. The chip.flags field in
    particular can cause problems.
    
    2) The byte_len of FRAM is computed from its ID register, and is stored
    into the stack local "struct spi_eeprom chip" structure. This happens
    after the same structure has been copied into at25->chip. As a result,
    at25->chip.byte_len does not contain the correct length of the device.
    In turn this can cause checks at beginning of at25_ee_read() to fail
    (or equally, it could allow reads beyond the end of the device length).
    
    Fix both of these issues by eliminating the on-stack struct spi_eeprom.
    Instead use the one inside at25_data structure, which starts of zeroed.
    
    Fixes: fd307a4ad332 ("nvmem: prepare basics for FRAM support")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>
    Link: https://lore.kernel.org/r/20211108181627.645638-1-ralph.siemsen@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 990bbe3578414dca431ed5bfef07c7440e1ba013
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Nov 26 08:32:44 2021 +0800

    misc: rtsx: Avoid mangling IRQ during runtime PM
    
    commit 0edeb8992db8e7de9b8fe3164ace9a4356b17021 upstream.
    
    After commit 5b4258f6721f ("misc: rtsx: rts5249 support runtime PM"), when the
    rtsx controller is runtime suspended, bring CPUs offline and back online, the
    runtime resume of the controller will fail:
    
    [   47.319391] smpboot: CPU 1 is now offline
    [   47.414140] x86: Booting SMP configuration:
    [   47.414147] smpboot: Booting Node 0 Processor 1 APIC 0x2
    [   47.571334] smpboot: CPU 2 is now offline
    [   47.686055] smpboot: Booting Node 0 Processor 2 APIC 0x4
    [   47.808174] smpboot: CPU 3 is now offline
    [   47.878146] smpboot: Booting Node 0 Processor 3 APIC 0x6
    [   48.003679] smpboot: CPU 4 is now offline
    [   48.086187] smpboot: Booting Node 0 Processor 4 APIC 0x1
    [   48.239627] smpboot: CPU 5 is now offline
    [   48.326059] smpboot: Booting Node 0 Processor 5 APIC 0x3
    [   48.472193] smpboot: CPU 6 is now offline
    [   48.574181] smpboot: Booting Node 0 Processor 6 APIC 0x5
    [   48.743375] smpboot: CPU 7 is now offline
    [   48.838047] smpboot: Booting Node 0 Processor 7 APIC 0x7
    [   48.965447] __common_interrupt: 1.35 No irq handler for vector
    [   51.174065] mmc0: error -110 doing runtime resume
    [   54.978088] I/O error, dev mmcblk0, sector 21479 op 0x1:(WRITE) flags 0x0 phys_seg 11 prio class 0
    [   54.978108] Buffer I/O error on dev mmcblk0p1, logical block 19431, lost async page write
    [   54.978129] Buffer I/O error on dev mmcblk0p1, logical block 19432, lost async page write
    [   54.978134] Buffer I/O error on dev mmcblk0p1, logical block 19433, lost async page write
    [   54.978137] Buffer I/O error on dev mmcblk0p1, logical block 19434, lost async page write
    [   54.978141] Buffer I/O error on dev mmcblk0p1, logical block 19435, lost async page write
    [   54.978145] Buffer I/O error on dev mmcblk0p1, logical block 19436, lost async page write
    [   54.978148] Buffer I/O error on dev mmcblk0p1, logical block 19437, lost async page write
    [   54.978152] Buffer I/O error on dev mmcblk0p1, logical block 19438, lost async page write
    [   54.978155] Buffer I/O error on dev mmcblk0p1, logical block 19439, lost async page write
    [   54.978160] Buffer I/O error on dev mmcblk0p1, logical block 19440, lost async page write
    [   54.978244] mmc0: card aaaa removed
    [   54.978452] FAT-fs (mmcblk0p1): FAT read failed (blocknr 4257)
    
    There's interrupt immediately raised on rtsx_pci_write_register() in
    runtime resume routine, but the IRQ handler hasn't registered yet.
    
    So we can either move rtsx_pci_write_register() after rtsx_pci_acquire_irq(),
    or just stop mangling IRQ on runtime PM. Choose the latter to save some
    CPU cycles.
    
    Fixes: 5b4258f6721f ("misc: rtsx: rts5249 support runtime PM")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    BugLink: https://bugs.launchpad.net/bugs/1951784
    Link: https://lore.kernel.org/r/20211126003246.1068770-1-kai.heng.feng@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14508fe13b1c578b3d2ba574f1d48b351975860c
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 25 20:41:59 2021 +0800

    iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
    
    commit 70c9774e180d151abaab358108e3510a8e615215 upstream.
    
    When ACPI type is ACPI_SMO8500, the data->dready_trig will not be set, the
    memory allocated by iio_triggered_buffer_setup() will not be freed, and cause
    memory leak as follows:
    
    unreferenced object 0xffff888009551400 (size 512):
      comm "i2c-SMO8500-125", pid 911, jiffies 4294911787 (age 83.852s)
      hex dump (first 32 bytes):
        02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 20 e2 e5 c0 ff ff ff ff  ........ .......
      backtrace:
        [<0000000041ce75ee>] kmem_cache_alloc_trace+0x16d/0x360
        [<000000000aeb17b0>] iio_kfifo_allocate+0x41/0x130 [kfifo_buf]
        [<000000004b40c1f5>] iio_triggered_buffer_setup_ext+0x2c/0x210 [industrialio_triggered_buffer]
        [<000000004375b15f>] kxcjk1013_probe+0x10c3/0x1d81 [kxcjk_1013]
    
    Fix it by remove data->dready_trig condition in probe and remove.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: a25691c1f967 ("iio: accel: kxcjk1013: allow using an external trigger")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Cc: <Stable@vger.kernel.org>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20211025124159.2700301-1-yangyingliang@huawei.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2906867da4ca3da11b7f52ff36897587b6b7ff65
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Nov 1 15:40:55 2021 +0100

    iio: ad7768-1: Call iio_trigger_notify_done() on error
    
    commit 6661146427cbbce6d1fe3dbb11ff1c487f55799a upstream.
    
    IIO trigger handlers must call iio_trigger_notify_done() when done. This
    must be done even when an error occurred. Otherwise the trigger will be
    seen as busy indefinitely and the trigger handler will never be called
    again.
    
    The ad7768-1 driver neglects to call iio_trigger_notify_done() when there
    is an error reading the converter data. Fix this by making sure that
    iio_trigger_notify_done() is included in the error exit path.
    
    Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211101144055.13858-2-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3a4c57a96135409d8b54ac17e65e7f0b0f62746
Author: Evgeny Boger <boger@wirenboard.com>
Date:   Wed Nov 17 00:37:46 2021 +0300

    iio: adc: axp20x_adc: fix charging current reporting on AXP22x
    
    commit 92beafb76a31bdc02649eb44e93a8e4f4cfcdbe8 upstream.
    
    Both the charging and discharging currents on AXP22x are stored as
    12-bit integers, in accordance with the datasheet.
    It's also confirmed by vendor BSP (axp20x_adc.c:axp22_icharge_to_mA).
    
    The scale factor of 0.5 is never mentioned in datasheet, nor in the
    vendor source code. I think it was here to compensate for
    erroneous addition bit in register width.
    
    Tested on custom A40i+AXP221s board with external ammeter as
    a reference.
    
    Fixes: 0e34d5de961d ("iio: adc: add support for X-Powers AXP20X and AXP22X PMICs ADCs")
    Signed-off-by: Evgeny Boger <boger@wirenboard.com>
    Acked-by: Chen-Yu Tsai <wens@csie.org>
    Link: https://lore.kernel.org/r/20211116213746.264378-1-boger@wirenboard.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41d241ad3e5558ddde568be78d0db7b4b644a72e
Author: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
Date:   Fri Oct 22 14:19:29 2021 +0200

    iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda
    
    commit f711f28e71e965c0d1141c830fa7131b41abbe75 upstream.
    
    Some I/Os are connected to ADC input channels, when the corresponding bit
    in PCSEL register are set on STM32H7 and STM32MP15. This is done in the
    prepare routine of stm32-adc driver.
    There are constraints here, as PCSEL shouldn't be set when VDDA supply
    is disabled. Enabling/disabling of VDDA supply in done via stm32-adc-core
    runtime PM routines (before/after ADC is enabled/disabled).
    
    Currently, PCSEL remains set when disabling ADC. Later on, PM runtime
    can disable the VDDA supply. This creates some conditions on I/Os that
    can start to leak current.
    So PCSEL needs to be cleared when disabling the ADC.
    
    Fixes: 95e339b6e85d ("iio: adc: stm32: add support for STM32H7")
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    Reviewed-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Link: https://lore.kernel.org/r/1634905169-23762-1-git-send-email-fabrice.gasnier@foss.st.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4071943a533c144f7d81bcd6de263cb85b78e80f
Author: Gwendal Grignou <gwendal@chromium.org>
Date:   Thu Nov 4 01:24:08 2021 -0700

    iio: at91-sama5d2: Fix incorrect sign extension
    
    commit 652e7df485c6884d552085ae2c73efa6cfea3547 upstream.
    
    Use scan_type when processing raw data which also fixes that the sign
    extension was from the wrong bit.
    
    Use channel definition as root of trust and replace constant
    when reading elements directly using the raw sysfs attributes.
    
    Fixes: 6794e23fa3fe ("iio: adc: at91-sama5d2_adc: add support for oversampling resolution")
    Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
    Reviewed-by: Eugen Hristev <eugen.hristev@microchip.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211104082413.3681212-9-gwendal@chromium.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a862c731f7bc089cbee24145a1bad9b5b1eb001a
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Nov 1 14:30:43 2021 +0100

    iio: dln2: Check return value of devm_iio_trigger_register()
    
    commit 90751fb9f224e0e1555b49a8aa9e68f6537e4cec upstream.
    
    Registering a trigger can fail and the return value of
    devm_iio_trigger_register() must be checked. Otherwise undefined behavior
    can occur when the trigger is used.
    
    Fixes: 7c0299e879dd ("iio: adc: Add support for DLN2 ADC")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211101133043.6974-1-lars@metafoo.de
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b4e3b804c41f19c2b3ec68b0bdd4817ff212fac
Author: Noralf Trønnes <noralf@tronnes.org>
Date:   Mon Oct 18 13:37:31 2021 +0200

    iio: dln2-adc: Fix lockdep complaint
    
    commit 59f92868176f191eefde70d284bdfc1ed76a84bc upstream.
    
    When reading the voltage:
    
    $ cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
    
    Lockdep complains:
    
    [  153.910616] ======================================================
    [  153.916918] WARNING: possible circular locking dependency detected
    [  153.923221] 5.14.0+ #5 Not tainted
    [  153.926692] ------------------------------------------------------
    [  153.932992] cat/717 is trying to acquire lock:
    [  153.937525] c2585358 (&indio_dev->mlock){+.+.}-{3:3}, at: iio_device_claim_direct_mode+0x28/0x44
    [  153.946541]
                   but task is already holding lock:
    [  153.952487] c2585860 (&dln2->mutex){+.+.}-{3:3}, at: dln2_adc_read_raw+0x94/0x2bc [dln2_adc]
    [  153.961152]
                   which lock already depends on the new lock.
    
    Fix this by not calling into the iio core underneath the dln2->mutex lock.
    
    Fixes: 7c0299e879dd ("iio: adc: Add support for DLN2 ADC")
    Cc: Jack Andersen <jackoalan@gmail.com>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Link: https://lore.kernel.org/r/20211018113731.25723-1-noralf@tronnes.org
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 363e1286cf817ae4b93c312bb9f4e7c3f6743d66
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Nov 1 15:40:54 2021 +0100

    iio: itg3200: Call iio_trigger_notify_done() on error
    
    commit 67fe29583e72b2103abb661bb58036e3c1f00277 upstream.
    
    IIO trigger handlers must call iio_trigger_notify_done() when done. This
    must be done even when an error occurred. Otherwise the trigger will be
    seen as busy indefinitely and the trigger handler will never be called
    again.
    
    The itg3200 driver neglects to call iio_trigger_notify_done() when there is
    an error reading the gyro data. Fix this by making sure that
    iio_trigger_notify_done() is included in the error exit path.
    
    Fixes: 9dbf091da080 ("iio: gyro: Add itg3200")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211101144055.13858-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4b600ac98ca65f0c49be7f4f914cfb4b876e7a3
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:50 2021 +0200

    iio: kxsd9: Don't return error code in trigger handler
    
    commit 45febe0d63917ee908198c5be08511c64ee1790a upstream.
    
    IIO trigger handlers need to return one of the irqreturn_t values.
    Returning an error code is not supported.
    
    The kxsd9 interrupt handler returns an error code if reading the data
    registers fails. In addition when exiting due to an error the trigger
    handler does not call `iio_trigger_notify_done()`. Which when not done
    keeps the triggered disabled forever.
    
    Modify the code so that the function returns a valid irqreturn_t value as
    well as calling `iio_trigger_notify_done()` on all exit paths.
    
    Since we can't return the error code make sure to at least log it as part
    of the error message.
    
    Fixes: 0427a106a98a ("iio: accel: kxsd9: Add triggered buffer handling")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20211024171251.22896-2-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5df9c2c0e4b410f24aabdd8fc4d61ab68eecbc60
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:49 2021 +0200

    iio: ltr501: Don't return error code in trigger handler
    
    commit ef9d67fa72c1b149a420587e435a3e888bdbf74f upstream.
    
    IIO trigger handlers need to return one of the irqreturn_t values.
    Returning an error code is not supported.
    
    The ltr501 interrupt handler gets this right for most error paths, but
    there is one case where it returns the error code.
    
    In addition for this particular case the trigger handler does not call
    `iio_trigger_notify_done()`. Which when not done keeps the triggered
    disabled forever.
    
    Modify the code so that the function returns a valid irqreturn_t value as
    well as calling `iio_trigger_notify_done()` on all exit paths.
    
    Fixes: 2690be905123 ("iio: Add Lite-On ltr501 ambient light / proximity sensor driver")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024171251.22896-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c43517071dfc9fce34f8f69dbb98a86017f6b739
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 11:26:59 2021 +0200

    iio: mma8452: Fix trigger reference couting
    
    commit cd0082235783f814241a1c9483fb89e405f4f892 upstream.
    
    The mma8452 driver directly assigns a trigger to the struct iio_dev. The
    IIO core when done using this trigger will call `iio_trigger_put()` to drop
    the reference count by 1.
    
    Without the matching `iio_trigger_get()` in the driver the reference count
    can reach 0 too early, the trigger gets freed while still in use and a
    use-after-free occurs.
    
    Fix this by getting a reference to the trigger before assigning it to the
    IIO device.
    
    Fixes: ae6d9ce05691 ("iio: mma8452: Add support for interrupt driven triggers.")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024092700.6844-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00d3c14338b56b5219aaee1f172c16e0f798afb5
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:51 2021 +0200

    iio: stk3310: Don't return error code in interrupt handler
    
    commit 8e1eeca5afa7ba84d885987165dbdc5decf15413 upstream.
    
    Interrupt handlers must return one of the irqreturn_t values. Returning a
    error code is not supported.
    
    The stk3310 event interrupt handler returns an error code when reading the
    flags register fails.
    
    Fix the implementation to always return an irqreturn_t value.
    
    Fixes: 3dd477acbdd1 ("iio: light: Add threshold interrupt support for STK3310")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024171251.22896-3-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 111d5b61fbd786f0cdb1177e40fd07205f24616d
Author: Alyssa Ross <hi@alyssa.is>
Date:   Thu Nov 25 18:28:48 2021 +0000

    iio: trigger: stm32-timer: fix MODULE_ALIAS
    
    commit 893621e0606747c5bbefcaf2794d12c7aa6212b7 upstream.
    
    modprobe can't handle spaces in aliases.
    
    Fixes: 93fbe91b5521 ("iio: Add STM32 timer trigger driver")
    Signed-off-by: Alyssa Ross <hi@alyssa.is>
    Link: https://lore.kernel.org/r/20211125182850.2645424-1-hi@alyssa.is
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2db8ad169cc8fcc09a4608edfcc09e93e9360b0d
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 11:27:00 2021 +0200

    iio: trigger: Fix reference counting
    
    commit a827a4984664308f13599a0b26c77018176d0c7c upstream.
    
    In viio_trigger_alloc() device_initialize() is used to set the initial
    reference count of the trigger to 1. Then another get_device() is called on
    trigger. This sets the reference count to 2 before the trigger is returned.
    
    iio_trigger_free(), which is the matching API to viio_trigger_alloc(),
    calls put_device() which decreases the reference count by 1. But the second
    reference count acquired in viio_trigger_alloc() is never dropped.
    
    As a result the iio_trigger_release() function is never called and the
    memory associated with the trigger is never freed.
    
    Since there is no reason for the trigger to start its lifetime with two
    reference counts just remove the extra get_device() in
    viio_trigger_alloc().
    
    Fixes: 5f9c035cae18 ("staging:iio:triggers. Add a reference get to the core for triggers.")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://lore.kernel.org/r/20211024092700.6844-2-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d2a35d99700b8ff4b84248ad82171a843280c9b
Author: Kister Genesis Jimenez <kister.jimenez@analog.com>
Date:   Mon Nov 15 11:41:47 2021 +0100

    iio: gyro: adxrs290: fix data signedness
    
    commit fde272e78e004a45c7e4976876277d7e6a5a0ede upstream.
    
    Properly sign-extend the rate and temperature data.
    
    Fixes: 2c8920fff1457 ("iio: gyro: Add driver support for ADXRS290")
    Signed-off-by: Kister Genesis Jimenez <kister.jimenez@analog.com>
    Signed-off-by: Nuno Sá <nuno.sa@analog.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20211115104147.18669-1-nuno.sa@analog.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02d5a2a48bb44e7404b794df87e57588b2fd604e
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Dec 10 16:17:35 2021 +0200

    xhci: avoid race between disable slot command and host runtime suspend
    
    commit 7faac1953ed1f658f719cdf7bb7303fa5eef822c upstream.
    
    Make xhci_disable_slot() synchronous, thus ensuring it, and
    xhci_free_dev() calling it return after xHC controller completes
    the disable slot command.
    
    Otherwise the roothub and xHC host may runtime suspend, and clear the
    command ring while the disable slot command is being processed.
    
    This causes a command completion mismatch as the completion event can't
    be mapped to the correct command.
    Command ring gets out of sync and commands time out.
    Driver finally assumes host is unresponsive and bails out.
    
    usb 2-4: USB disconnect, device number 10
    xhci_hcd 0000:00:0d.0: ERROR mismatched command completion event
    ...
    xhci_hcd 0000:00:0d.0: xHCI host controller not responding, assume dead
    xhci_hcd 0000:00:0d.0: HC died; cleaning up
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211210141735.1384209-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d861bc26fe68d6fc61c2b5ff31128805ef115df6
Author: Pavel Hofman <pavel.hofman@ivitera.com>
Date:   Fri Dec 10 09:52:19 2021 +0100

    usb: core: config: using bit mask instead of individual bits
    
    commit ca5737396927afd4d57b133fd2874bbcf3421cdb upstream.
    
    Using standard USB_EP_MAXP_MULT_MASK instead of individual bits for
    extracting multiple-transactions bits from wMaxPacketSize value.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Link: https://lore.kernel.org/r/20211210085219.16796-2-pavel.hofman@ivitera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47c14aceb290e8e9bffcce4171f3304dad628884
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Dec 10 16:17:34 2021 +0200

    xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime suspending
    
    commit 811ae81320da53a5670c36970cefacca8519f90e upstream.
    
    When the xHCI is quirked with XHCI_RESET_ON_RESUME, runtime resume
    routine also resets the controller.
    
    This is bad for USB drivers without reset_resume callback, because
    there's no subsequent call of usb_dev_complete() ->
    usb_resume_complete() to force rebinding the driver to the device. For
    instance, btusb device stops working after xHCI controller is runtime
    resumed, if the controlled is quirked with XHCI_RESET_ON_RESUME.
    
    So always take XHCI_RESET_ON_RESUME into account to solve the issue.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211210141735.1384209-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0141f85b78a51363b1d89cee8910319f385d0af4
Author: Pavel Hofman <pavel.hofman@ivitera.com>
Date:   Fri Dec 10 09:52:18 2021 +0100

    usb: core: config: fix validation of wMaxPacketValue entries
    
    commit 1a3910c80966e4a76b25ce812f6bea0ef1b1d530 upstream.
    
    The checks performed by commit aed9d65ac327 ("USB: validate
    wMaxPacketValue entries in endpoint descriptors") require that initial
    value of the maxp variable contains both maximum packet size bits
    (10..0) and multiple-transactions bits (12..11). However, the existing
    code assings only the maximum packet size bits. This patch assigns all
    bits of wMaxPacketSize to the variable.
    
    Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Link: https://lore.kernel.org/r/20211210085219.16796-1-pavel.hofman@ivitera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5230fb9bf8eefbf5ed12a19b8bdb722aa7b21ec
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue Dec 7 09:43:41 2021 -0800

    Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default"
    
    commit 6a97cee39d8f2ed4d6e35a09a302dae1d566db36 upstream.
    
    This reverts commit cefdd52fa0455c0555c30927386ee466a108b060.
    
    On sc7180-trogdor class devices with 'fw_devlink=permissive' and KASAN
    enabled, you'll see a Use-After-Free reported at bootup.
    
    The root of the problem is that dwc3_qcom_of_register_core() is adding
    a devm-allocated "tx-fifo-resize" property to its device tree node
    using of_add_property().
    
    The issue is that of_add_property() makes a _permanent_ addition to
    the device tree that lasts until reboot. That means allocating memory
    for the property using "devm" managed memory is a terrible idea since
    that memory will be freed upon probe deferral or device unbinding.
    
    Let's revert the patch since the system is still functional without
    it. The fact that of_add_property() makes a permanent change is extra
    fodder for those folks who were aruging that the device tree isn't
    really the right way to pass information between parts of the
    driver. It is an exercise left to the reader to submit a patch
    re-adding the new feature in a way that makes everyone happier.
    
    Fixes: cefdd52fa045 ("usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20211207094327.1.Ie3cde3443039342e2963262a4c3ac36dc2c08b30@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6eea4ace62fa6414432692ee44f0c0a3d541d97a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 9 19:02:15 2021 +0100

    USB: gadget: zero allocate endpoint 0 buffers
    
    commit 86ebbc11bb3f60908a51f3e41a17e3f477c2eaa3 upstream.
    
    Under some conditions, USB gadget devices can show allocated buffer
    contents to a host.  Fix this up by zero-allocating them so that any
    extra data will all just be zeros.
    
    Reported-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Tested-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36dfdf11af49d3c009c711fb16f5c6e7a274505d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 9 18:59:27 2021 +0100

    USB: gadget: detect too-big endpoint 0 requests
    
    commit 153a2d7e3350cc89d406ba2d35be8793a64c2038 upstream.
    
    Sometimes USB hosts can ask for buffers that are too large from endpoint
    0, which should not be allowed.  If this happens for OUT requests, stall
    the endpoint, but for IN requests, trim the request size to the endpoint
    buffer size.
    
    Co-developed-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef472b023b85e46bc9af08c1c91ab151fe886e35
Author: Peilin Ye <peilin.ye@bytedance.com>
Date:   Tue Nov 30 16:47:20 2021 -0800

    selftests/fib_tests: Rework fib_rp_filter_test()
    
    commit f6071e5e3961eeb5300bd0901c9e128598730ae3 upstream.
    
    Currently rp_filter tests in fib_tests.sh:fib_rp_filter_test() are
    failing.  ping sockets are bound to dummy1 using the "-I" option
    (SO_BINDTODEVICE), but socket lookup is failing when receiving ping
    replies, since the routing table thinks they belong to dummy0.
    
    For example, suppose ping is using a SOCK_RAW socket for ICMP messages.
    When receiving ping replies, in __raw_v4_lookup(), sk->sk_bound_dev_if
    is 3 (dummy1), but dif (skb_rtable(skb)->rt_iif) says 2 (dummy0), so the
    raw_sk_bound_dev_eq() check fails.  Similar things happen in
    ping_lookup() for SOCK_DGRAM sockets.
    
    These tests used to pass due to a bug [1] in iputils, where "ping -I"
    actually did not bind ICMP message sockets to device.  The bug has been
    fixed by iputils commit f455fee41c07 ("ping: also bind the ICMP socket
    to the specific device") in 2016, which is why our rp_filter tests
    started to fail.  See [2] .
    
    Fixing the tests while keeping everything in one netns turns out to be
    nontrivial.  Rework the tests and build the following topology:
    
     ┌─────────────────────────────┐    ┌─────────────────────────────┐
     │  network namespace 1 (ns1)  │    │  network namespace 2 (ns2)  │
     │                             │    │                             │
     │  ┌────┐     ┌─────┐         │    │  ┌─────┐            ┌────┐  │
     │  │ lo │<───>│veth1│<────────┼────┼─>│veth2│<──────────>│ lo │  │
     │  └────┘     ├─────┴──────┐  │    │  ├─────┴──────┐     └────┘  │
     │             │192.0.2.1/24│  │    │  │192.0.2.1/24│             │
     │             └────────────┘  │    │  └────────────┘             │
     └─────────────────────────────┘    └─────────────────────────────┘
    
    Consider sending an ICMP_ECHO packet A in ns2.  Both source and
    destination IP addresses are 192.0.2.1, and we use strict mode rp_filter
    in both ns1 and ns2:
    
      1. A is routed to lo since its destination IP address is one of ns2's
         local addresses (veth2);
      2. A is redirected from lo's egress to veth2's egress using mirred;
      3. A arrives at veth1's ingress in ns1;
      4. A is redirected from veth1's ingress to lo's ingress, again, using
         mirred;
      5. In __fib_validate_source(), fib_info_nh_uses_dev() returns false,
         since A was received on lo, but reverse path lookup says veth1;
      6. However A is not dropped since we have relaxed this check for lo in
         commit 66f8209547cc ("fib: relax source validation check for loopback
         packets");
    
    Making sure A is not dropped here in this corner case is the whole point
    of having this test.
    
      7. As A reaches the ICMP layer, an ICMP_ECHOREPLY packet, B, is
         generated;
      8. Similarly, B is redirected from lo's egress to veth1's egress (in
         ns1), then redirected once again from veth2's ingress to lo's
         ingress (in ns2), using mirred.
    
    Also test "ping 127.0.0.1" from ns2.  It does not trigger the relaxed
    check in __fib_validate_source(), but just to make sure the topology
    works with loopback addresses.
    
    Tested with ping from iputils 20210722-41-gf9fb573:
    
    $ ./fib_tests.sh -t rp_filter
    
    IPv4 rp_filter tests
        TEST: rp_filter passes local packets                [ OK ]
        TEST: rp_filter passes loopback packets             [ OK ]
    
    [1] https://github.com/iputils/iputils/issues/55
    [2] https://github.com/iputils/iputils/commit/f455fee41c077d4b700a473b2f5b3487b8febc1d
    
    Reported-by: Hangbin Liu <liuhangbin@gmail.com>
    Fixes: adb701d6cfa4 ("selftests: add a test case for rp_filter")
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
    Acked-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211201004720.6357-1-yepeilin.cs@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a72723e89f4d339f2900b3163042e360e9719699
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Dec 7 11:24:16 2021 +0300

    net/qla3xxx: fix an error code in ql_adapter_up()
    
    commit d17b9737c2bc09b4ac6caf469826e5a7ce3ffab7 upstream.
    
    The ql_wait_for_drvr_lock() fails and returns false, then this
    function should return an error code instead of returning success.
    
    The other problem is that the success path prints an error message
    netdev_err(ndev, "Releasing driver lock\n");  Delete that and
    re-order the code a little to make it more clear.
    
    Fixes: 5a4faa873782 ("[PATCH] qla3xxx NIC driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211207082416.GA16110@kili
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c9f1ab29e7f0714f0c2a83defb1fb4d77ec0853
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 6 08:53:29 2021 -0800

    net, neigh: clear whole pneigh_entry at alloc time
    
    commit e195e9b5dee6459d8c8e6a314cc71a644a0537fd upstream.
    
    Commit 2c611ad97a82 ("net, neigh: Extend neigh->flags to 32 bit
    to allow for extensions") enables a new KMSAM warning [1]
    
    I think the bug is actually older, because the following intruction
    only occurred if ndm->ndm_flags had NTF_PROXY set.
    
            pn->flags = ndm->ndm_flags;
    
    Let's clear all pneigh_entry fields at alloc time.
    
    [1]
    BUG: KMSAN: uninit-value in pneigh_fill_info+0x986/0xb30 net/core/neighbour.c:2593
     pneigh_fill_info+0x986/0xb30 net/core/neighbour.c:2593
     pneigh_dump_table net/core/neighbour.c:2715 [inline]
     neigh_dump_info+0x1e3f/0x2c60 net/core/neighbour.c:2832
     netlink_dump+0xaca/0x16a0 net/netlink/af_netlink.c:2265
     __netlink_dump_start+0xd1c/0xee0 net/netlink/af_netlink.c:2370
     netlink_dump_start include/linux/netlink.h:254 [inline]
     rtnetlink_rcv_msg+0x181b/0x18c0 net/core/rtnetlink.c:5534
     netlink_rcv_skb+0x447/0x800 net/netlink/af_netlink.c:2491
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:5589
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x1095/0x1360 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x16f3/0x1870 net/netlink/af_netlink.c:1916
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     sock_write_iter+0x594/0x690 net/socket.c:1057
     call_write_iter include/linux/fs.h:2162 [inline]
     new_sync_write fs/read_write.c:503 [inline]
     vfs_write+0x1318/0x2030 fs/read_write.c:590
     ksys_write+0x28c/0x520 fs/read_write.c:643
     __do_sys_write fs/read_write.c:655 [inline]
     __se_sys_write fs/read_write.c:652 [inline]
     __x64_sys_write+0xdb/0x120 fs/read_write.c:652
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:524 [inline]
     slab_alloc_node mm/slub.c:3251 [inline]
     slab_alloc mm/slub.c:3259 [inline]
     __kmalloc+0xc3c/0x12d0 mm/slub.c:4437
     kmalloc include/linux/slab.h:595 [inline]
     pneigh_lookup+0x60f/0xd70 net/core/neighbour.c:766
     arp_req_set_public net/ipv4/arp.c:1016 [inline]
     arp_req_set+0x430/0x10a0 net/ipv4/arp.c:1032
     arp_ioctl+0x8d4/0xb60 net/ipv4/arp.c:1232
     inet_ioctl+0x4ef/0x820 net/ipv4/af_inet.c:947
     sock_do_ioctl net/socket.c:1118 [inline]
     sock_ioctl+0xa3f/0x13e0 net/socket.c:1235
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:874 [inline]
     __se_sys_ioctl+0x2df/0x4a0 fs/ioctl.c:860
     __x64_sys_ioctl+0xd8/0x110 fs/ioctl.c:860
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    CPU: 1 PID: 20001 Comm: syz-executor.0 Not tainted 5.16.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 62dd93181aaa ("[IPV6] NDISC: Set per-entry is_router flag in Proxy NA.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Roopa Prabhu <roopa@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211206165329.1049835-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48135149c08958c9cd6be737c81ad90e84a74c53
Author: Joakim Zhang <qiangqing.zhang@nxp.com>
Date:   Mon Dec 6 21:54:57 2021 +0800

    net: fec: only clear interrupt of handling queue in fec_enet_rx_queue()
    
    commit b5bd95d17102b6719e3531d627875b9690371383 upstream.
    
    Background:
    We have a customer is running a Profinet stack on the 8MM which receives and
    responds PNIO packets every 4ms and PNIO-CM packets every 40ms. However, from
    time to time the received PNIO-CM package is "stock" and is only handled when
    receiving a new PNIO-CM or DCERPC-Ping packet (tcpdump shows the PNIO-CM and
    the DCERPC-Ping packet at the same time but the PNIO-CM HW timestamp is from
    the expected 40 ms and not the 2s delay of the DCERPC-Ping).
    
    After debugging, we noticed PNIO, PNIO-CM and DCERPC-Ping packets would
    be handled by different RX queues.
    
    The root cause should be driver ack all queues' interrupt when handle a
    specific queue in fec_enet_rx_queue(). The blamed patch is introduced to
    receive as much packets as possible once to avoid interrupt flooding.
    But it's unreasonable to clear other queues'interrupt when handling one
    queue, this patch tries to fix it.
    
    Fixes: ed63f1dcd578 (net: fec: clear receive interrupts before processing a packet)
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Reported-by: Nicolas Diaz <nicolas.diaz@nxp.com>
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Link: https://lore.kernel.org/r/20211206135457.15946-1-qiangqing.zhang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 089bd0b0bf1ee211a5cdec79cb3177254ca2bb71
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Dec 3 13:11:28 2021 +0300

    net: altera: set a couple error code in probe()
    
    commit badd7857f5c933a3dc34942a2c11d67fdbdc24de upstream.
    
    There are two error paths which accidentally return success instead of
    a negative error code.
    
    Fixes: bbd2190ce96d ("Altera TSE: Add main and header file for Altera Ethernet Driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37493d4eb2e521ff1af32f1941a93125a7c0ae05
Author: Lee Jones <lee.jones@linaro.org>
Date:   Thu Dec 2 14:34:37 2021 +0000

    net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero
    
    commit 2be6d4d16a0849455a5c22490e3c5983495fed00 upstream.
    
    Currently, due to the sequential use of min_t() and clamp_t() macros,
    in cdc_ncm_check_tx_max(), if dwNtbOutMaxSize is not set, the logic
    sets tx_max to 0.  This is then used to allocate the data area of the
    SKB requested later in cdc_ncm_fill_tx_frame().
    
    This does not cause an issue presently because when memory is
    allocated during initialisation phase of SKB creation, more memory
    (512b) is allocated than is required for the SKB headers alone (320b),
    leaving some space (512b - 320b = 192b) for CDC data (172b).
    
    However, if more elements (for example 3 x u64 = [24b]) were added to
    one of the SKB header structs, say 'struct skb_shared_info',
    increasing its original size (320b [320b aligned]) to something larger
    (344b [384b aligned]), then suddenly the CDC data (172b) no longer
    fits in the spare SKB data area (512b - 384b = 128b).
    
    Consequently the SKB bounds checking semantics fails and panics:
    
      skbuff: skb_over_panic: text:ffffffff830a5b5f len:184 put:172   \
         head:ffff888119227c00 data:ffff888119227c00 tail:0xb8 end:0x80 dev:<NULL>
    
      ------------[ cut here ]------------
      kernel BUG at net/core/skbuff.c:110!
      RIP: 0010:skb_panic+0x14f/0x160 net/core/skbuff.c:106
      <snip>
      Call Trace:
       <IRQ>
       skb_over_panic+0x2c/0x30 net/core/skbuff.c:115
       skb_put+0x205/0x210 net/core/skbuff.c:1877
       skb_put_zero include/linux/skbuff.h:2270 [inline]
       cdc_ncm_ndp16 drivers/net/usb/cdc_ncm.c:1116 [inline]
       cdc_ncm_fill_tx_frame+0x127f/0x3d50 drivers/net/usb/cdc_ncm.c:1293
       cdc_ncm_tx_fixup+0x98/0xf0 drivers/net/usb/cdc_ncm.c:1514
    
    By overriding the max value with the default CDC_NCM_NTB_MAX_SIZE_TX
    when not offered through the system provided params, we ensure enough
    data space is allocated to handle the CDC data, meaning no crash will
    occur.
    
    Cc: Oliver Neukum <oliver@neukum.org>
    Fixes: 289507d3364f9 ("net: cdc_ncm: use sysfs for rx/tx aggregation tuning")
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Reviewed-by: Bjørn Mork <bjorn@mork.no>
    Link: https://lore.kernel.org/r/20211202143437.1411410-1-lee.jones@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ca1ca40977b311ae11648f38548f383c38ab015
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Nov 30 10:12:41 2021 -0300

    tools build: Remove needless libpython-version feature check that breaks test-all fast path
    
    commit 3d1d57debee2d342a47615707588b96658fabb85 upstream.
    
    Since 66dfdff03d196e51 ("perf tools: Add Python 3 support") we don't use
    the tools/build/feature/test-libpython-version.c version in any Makefile
    feature check:
    
      $ find tools/ -type f | xargs grep feature-libpython-version
      $
    
    The only place where this was used was removed in 66dfdff03d196e51:
    
      -        ifneq ($(feature-libpython-version), 1)
      -          $(warning Python 3 is not yet supported; please set)
      -          $(warning PYTHON and/or PYTHON_CONFIG appropriately.)
      -          $(warning If you also have Python 2 installed, then)
      -          $(warning try something like:)
      -          $(warning $(and ,))
      -          $(warning $(and ,)  make PYTHON=python2)
      -          $(warning $(and ,))
      -          $(warning Otherwise, disable Python support entirely:)
      -          $(warning $(and ,))
      -          $(warning $(and ,)  make NO_LIBPYTHON=1)
      -          $(warning $(and ,))
      -          $(error   $(and ,))
      -        else
      -          LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
      -          EXTLIBS += $(PYTHON_EMBED_LIBADD)
      -          LANG_BINDINGS += $(obj-perf)python/perf.so
      -          $(call detected,CONFIG_LIBPYTHON)
      -        endif
    
    And nowadays we either build with PYTHON=python3 or just install the
    python3 devel packages and perf will build against it.
    
    But the leftover feature-libpython-version check made the fast path
    feature detection to break in all cases except when python2 devel files
    were installed:
    
      $ rpm -qa | grep python.*devel
      python3-devel-3.9.7-1.fc34.x86_64
      $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
      $ make -C tools/perf O=/tmp/build/perf install-bin
      make: Entering directory '/var/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j32' parallel build
        HOSTCC  /tmp/build/perf/fixdep.o
      <SNIP>
      $ cat /tmp/build/perf/feature/test-all.make.output
      In file included from test-all.c:18:
      test-libpython-version.c:5:10: error: #error
          5 |         #error
            |          ^~~~~
      $ ldd ~/bin/perf | grep python
            libpython3.9.so.1.0 => /lib64/libpython3.9.so.1.0 (0x00007fda6dbcf000)
      $
    
    As python3 is the norm these days, fix this by just removing the unused
    feature-libpython-version feature check, making the test-all fast path
    to work with the common case.
    
    With this:
    
      $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
      $ make -C tools/perf O=/tmp/build/perf install-bin |& head
      make: Entering directory '/var/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j32' parallel build
        HOSTCC  /tmp/build/perf/fixdep.o
        HOSTLD  /tmp/build/perf/fixdep-in.o
        LINK    /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      $ ldd ~/bin/perf | grep python
            libpython3.9.so.1.0 => /lib64/libpython3.9.so.1.0 (0x00007f58800b0000)
      $ cat /tmp/build/perf/feature/test-all.make.output
      $
    
    Reviewed-by: James Clark <james.clark@arm.com>
    Fixes: 66dfdff03d196e51 ("perf tools: Add Python 3 support")
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jaroslav Škarvada <jskarvad@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/lkml/YaYmeeC6CS2b8OSz@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c2407afbcd0edd37065ac3796bada8fc525c923
Author: Alexander Stein <alexander.stein@ew.tq-group.com>
Date:   Tue Nov 30 09:27:56 2021 +0100

    dt-bindings: net: Reintroduce PHY no lane swap binding
    
    commit 96db48c9d777a73a33b1d516c5cfed7a417a5f40 upstream.
    
    This binding was already documented in phy.txt, commit 252ae5330daa
    ("Documentation: devicetree: Add PHY no lane swap binding"), but got
    accidently removed during YAML conversion in commit d8704342c109
    ("dt-bindings: net: Add a YAML schemas for the generic PHY options").
    
    Note: 'enet-phy-lane-no-swap' and the absence of 'enet-phy-lane-swap' are
    not identical, as the former one disable this feature, while the latter
    one doesn't change anything.
    
    Fixes: d8704342c109 ("dt-bindings: net: Add a YAML schemas for the generic PHY options")
    Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20211130082756.713919-1-alexander.stein@ew.tq-group.com
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e837d90ec09d106a001ad39fbb3dad1748ff2aa
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Sat Nov 27 17:31:59 2021 +0100

    Documentation/locking/locktypes: Update migrate_disable() bits.
    
    commit 6a631c0432dcccbcf45839016a07c015e335e9ae upstream.
    
    The initial implementation of migrate_disable() for mainline was a
    wrapper around preempt_disable(). RT kernels substituted this with
    a real migrate disable implementation.
    
    Later on mainline gained true migrate disable support, but the
    documentation was not updated.
    
    Update the documentation, remove the claims about migrate_disable()
    mapping to preempt_disable() on non-PREEMPT_RT kernels.
    
    Fixes: 74d862b682f51 ("sched: Make migrate_disable/enable() independent of RT")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211127163200.10466-2-bigeasy@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 395022a71b6cae0c2555a1b5d3f961992640dd31
Author: Ian Rogers <irogers@google.com>
Date:   Tue Nov 23 16:12:29 2021 -0800

    perf tools: Fix SMT detection fast read path
    
    commit 4ffbe87e2d5b53bcb0213d8650bbe70bf942de6a upstream.
    
    sysfs__read_int() returns 0 on success, and so the fast read path was
    always failing.
    
    Fixes: bb629484d924118e ("perf tools: Simplify checking if SMT is active.")
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Clarke <pc@us.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20211124001231.3277836-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1131d3f1b50f5c45916f021fe8713550c5129e3
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Tue Nov 23 11:56:38 2021 -0500

    drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset
    
    commit af6902ec415655236adea91826bd96ed0ab16f42 upstream.
    
    [Why]
    The HW interrupt gets disabled after S3/S4/reset so we don't receive
    notifications for HPD or AUX from DMUB - leading to timeout and
    black screen with (or without) DPIA links connected.
    
    [How]
    Re-enable the interrupt after S3/S4/reset like we do for the other
    DC interrupts.
    
    Guard both instances of the outbox interrupt enable or we'll hang
    during restore on ASIC that don't support it.
    
    Fixes: 6eff272dbee7ad ("drm/amd/display: Fix DPIA outbox timeout after GPU reset")
    
    Reviewed-by: Jude Shih <Jude.Shih@amd.com>
    Acked-by: Pavle Kotarac <Pavle.Kotarac@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99bc19898375f71fd31e125adc36493fcb165a83
Author: Marek Behún <kabel@kernel.org>
Date:   Thu Nov 25 17:01:48 2021 +0100

    Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge"
    
    commit 39bd54d43b3f8b3c7b3a75f5d868d8bb858860e7 upstream.
    
    This reverts commit 239edf686c14a9ff926dec2f350289ed7adfefe2.
    
    239edf686c14 ("PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated
    bridge") added support for the Type 1 Expansion ROM BAR at config offset
    0x38, based on the register being listed in the Marvell Armada A3720 spec.
    But the spec doesn't document it at all for RC mode, and there is no ROM in
    the SOC, so remove this emulation for now.
    
    The PCI bridge which represents aardvark's PCIe Root Port has an Expansion
    ROM Base Address register at offset 0x30, but its meaning is different than
    PCI's Expansion ROM BAR register, although the layout is the same.  (This
    is why we thought it does the same thing.)
    
    First: there is no ROM (or part of BootROM) in the A3720 SOC dedicated for
    PCIe Root Port (or controller in RC mode) containing executable code that
    would initialize the Root Port, suitable for execution in bootloader (this
    is how Expansion ROM BAR is used on x86).
    
    Second: in A3720 spec the register (address 0xD0070030) is not documented
    at all for Root Complex mode, but similar to other BAR registers, it has an
    "entangled partner" in register 0xD0075920, which does address translation
    for the BAR in 0xD0070030:
    
      - the BAR register sets the address from the view of PCIe bus
    
      - the translation register sets the address from the view of the CPU
    
    The other BAR registers also have this entangled partner, and they can be
    used to:
    
      - in RC mode: address-checking on the receive side of the RC (they can
        define address ranges for memory accesses from remote Endpoints to the
        RC)
    
      - in Endpoint mode: allow the remote CPU to access memory on A3720
    
    The Expansion ROM BAR has only the Endpoint part documented, but from the
    similarities we think that it can also be used in RC mode in that way.
    
    So either Expansion ROM BAR has different meaning (if the hypothesis above
    is true), or we don't know it's meaning (since it is not documented for RC
    mode).
    
    Remove the register from the emulated bridge accessing functions.
    
    [bhelgaas: summarize reason for removal (first paragraph)]
    Fixes: 239edf686c14 ("PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge")
    Link: https://lore.kernel.org/r/20211125160148.26029-3-kabel@kernel.org
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16431e442db248ecd8aa9457cf0a656f1885f56e
Author: Norbert Zulinski <norbertx.zulinski@intel.com>
Date:   Mon Nov 22 12:29:05 2021 +0100

    i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc
    
    commit 23ec111bf3549aae37140330c31a16abfc172421 upstream.
    
    When trying to dump VFs VSI RX/TX descriptors
    using debugfs there was a crash
    due to NULL pointer dereference in i40e_dbg_dump_desc.
    Added a check to i40e_dbg_dump_desc that checks if
    VSI type is correct for dumping RX/TX descriptors.
    
    Fixes: 02e9c290814c ("i40e: debugfs interface")
    Signed-off-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
    Signed-off-by: Norbert Zulinski <norbertx.zulinski@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8358589b31b6f39dd006f15f719bf54e7ce89cf
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Fri Nov 19 10:14:18 2021 -0800

    bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap
    
    commit c0d95d3380ee099d735e08618c0d599e72f6c8b0 upstream.
    
    When a sock is added to a sock map we evaluate what proto op hooks need to
    be used. However, when the program is removed from the sock map we have not
    been evaluating if that changes the required program layout.
    
    Before the patch listed in the 'fixes' tag this was not causing failures
    because the base program set handles all cases. Specifically, the case with
    a stream parser and the case with out a stream parser are both handled. With
    the fix below we identified a race when running with a proto op that attempts
    to read skbs off both the stream parser and the skb->receive_queue. Namely,
    that a race existed where when the stream parser is empty checking the
    skb->receive_queue from recvmsg at the precies moment when the parser is
    paused and the receive_queue is not empty could result in skipping the stream
    parser. This may break a RX policy depending on the parser to run.
    
    The fix tag then loads a specific proto ops that resolved this race. But, we
    missed removing that proto ops recv hook when the sock is removed from the
    sockmap. The result is the stream parser is stopped so no more skbs will be
    aggregated there, but the hook and BPF program continues to be attached on
    the psock. User space will then get an EBUSY when trying to read the socket
    because the recvmsg() handler is now waiting on a stopped stream parser.
    
    To fix we rerun the proto ops init() function which will look at the new set
    of progs attached to the psock and rest the proto ops hook to the correct
    handlers. And in the above case where we remove the sock from the sock map
    the RX prog will no longer be listed so the proto ops is removed.
    
    Fixes: c5d2177a72a16 ("bpf, sockmap: Fix race in ingress receive verdict with redirect to self")
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211119181418.353932-3-john.fastabend@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4953e7b6f6ab5e1faf3267b5728e40eac1b6f8d
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Nov 19 16:03:16 2021 +0100

    mtd: rawnand: fsmc: Fix timing computation
    
    commit 9472335eaa1452b51dc8e8edaa1a342997cb80c7 upstream.
    
    Under certain circumstances, the timing settings calculated by
    the FSMC NAND controller driver were inaccurate.
    These settings led to incorrect data reads or fallback to
    timing mode 0 depending on the NAND chip used.
    
    The timing computation did not take into account the following
    constraint given in SPEAr3xx reference manual:
      twait >= tCEA - (tset * TCLK) + TOUTDEL + TINDEL
    
    Enhance the timings calculation by taking into account this
    additional constraint.
    
    This change has no impact on slow timing modes such as mode 0.
    Indeed, on mode 0, computed values are the same with and
    without the patch.
    
    NANDs which previously stayed in mode 0 because of fallback to
    mode 0 can now work at higher speeds and NANDs which were not
    working at all because of the corrupted data work at high
    speeds without troubles.
    
    Overall improvement on a Micron/MT29F1G08 (flash_speed tool):
                            mode0       mode3
    eraseblock write speed  3220 KiB/s  4511 KiB/s
    eraseblock read speed   4491 KiB/s  7529 KiB/s
    
    Fixes: d9fb079571833 ("mtd: nand: fsmc: add support for SDR timings")
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211119150316.43080-5-herve.codina@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebc8909feecdccb36478ba165138dda2127eab2e
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Nov 19 16:03:15 2021 +0100

    mtd: rawnand: fsmc: Take instruction delay into account
    
    commit a4ca0c439f2d5ce9a3dc118d882f9f03449864c8 upstream.
    
    The FSMC NAND controller should apply a delay after the
    instruction has been issued on the bus.
    The FSMC NAND controller driver did not handle this delay.
    
    Add this waiting delay in the FSMC NAND controller driver.
    
    Fixes: 4da712e70294 ("mtd: nand: fsmc: use ->exec_op()")
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211119150316.43080-4-herve.codina@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fabfb7c18c8edb42da006da1237c89ab5f709d68
Author: Mateusz Palczewski <mateusz.palczewski@intel.com>
Date:   Fri Jul 16 11:33:56 2021 +0200

    i40e: Fix pre-set max number of queues for VF
    
    commit 8aa55ab422d9d0d825ebfb877702ed661e96e682 upstream.
    
    After setting pre-set combined to 16 queues and reserving 16 queues by
    tc qdisc, pre-set maximum combined queues returned to default value
    after VF reset being 4 and this generated errors during removing tc.
    Fixed by removing clear num_req_queues before reset VF.
    
    Fixes: e284fc280473 (i40e: Add and delete cloud filter)
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Bindushree P <Bindushree.p@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2132643b956f553f5abddc9bae20dae267b082e0
Author: Karen Sornek <karen.sornek@intel.com>
Date:   Fri May 14 11:43:13 2021 +0200

    i40e: Fix failed opcode appearing if handling messages from VF
    
    commit 61125b8be85dfbc7e9c7fe1cc6c6d631ab603516 upstream.
    
    Fix failed operation code appearing if handling messages from VF.
    Implemented by waiting for VF appropriate state if request starts
    handle while VF reset.
    Without this patch the message handling request while VF is in
    a reset state ends with error -5 (I40E_ERR_PARAM).
    
    Fixes: 5c3c48ac6bf5 ("i40e: implement virtual device interface")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Karen Sornek <karen.sornek@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06ece58874c371235e3d43250e88572e2b9bd655
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Tue Nov 23 08:25:08 2021 -0800

    clk: qcom: clk-alpha-pll: Don't reconfigure running Trion
    
    commit a1f0019c342bd83240b05be68c9888549dde7935 upstream.
    
    In the event that the bootloader has configured the Trion PLL as source
    for the display clocks, e.g. for the continuous splashscreen, then there
    will also be RCGs that are clocked by this instance.
    
    Reconfiguring, and in particular disabling the output of, the PLL will
    cause issues for these downstream RCGs and has been shown to prevent
    them from being re-parented.
    
    Follow downstream and skip configuration if it's determined that the PLL
    is already running.
    
    Fixes: 59128c20a6a9 ("clk: qcom: clk-alpha-pll: Add support for controlling Lucid PLLs")
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Robert Foss <robert.foss@linaro.org>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/20211123162508.153711-1-bjorn.andersson@linaro.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d259ae526fd9de192fa12ee327eee39cf57b9380
Author: Miles Chen <miles.chen@mediatek.com>
Date:   Sun Sep 5 07:54:18 2021 +0800

    clk: imx: use module_platform_driver
    
    commit eee377b8f44e7ac4f76bbf2440e5cbbc1d25c25f upstream.
    
    Replace builtin_platform_driver_probe with module_platform_driver_probe
    because CONFIG_CLK_IMX8QXP can be set to =m (kernel module).
    
    Fixes: e0d0d4d86c766 ("clk: imx8qxp: Support building i.MX8QXP clock driver as module")
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Miles Chen <miles.chen@mediatek.com>
    Link: https://lore.kernel.org/r/20210904235418.2442-1-miles.chen@mediatek.com
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Reviewed-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d044701bdbe3cfcee91d57f317fef520914ea7c
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Fri Nov 12 18:14:40 2021 +0100

    hwmon: (dell-smm) Fix warning on /proc/i8k creation error
    
    commit dbd3e6eaf3d813939b28e8a66e29d81cdc836445 upstream.
    
    The removal function is called regardless of whether
    /proc/i8k was created successfully or not, the later
    causing a WARN() on module removal.
    Fix that by only registering the removal function
    if /proc/i8k was created successfully.
    
    Tested on a Inspiron 3505.
    
    Fixes: 039ae58503f3 ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Acked-by: Pali Rohár <pali@kernel.org>
    Link: https://lore.kernel.org/r/20211112171440.59006-1-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be7c5d58108b39df5bf8f6adffe49e5ce99fce71
Author: Yangyang Li <liyangyang20@huawei.com>
Date:   Tue Nov 23 22:24:02 2021 +0800

    RDMA/hns: Do not destroy QP resources in the hw resetting phase
    
    commit b0969f83890bf8b47f5c8bd42539599b2b52fdeb upstream.
    
    When hns_roce_v2_destroy_qp() is called, the brief calling process of the
    driver is as follows:
    
     ......
     hns_roce_v2_destroy_qp
     hns_roce_v2_qp_modify
               hns_roce_cmd_mbox
     hns_roce_qp_destroy
    
    If hns_roce_cmd_mbox() detects that the hardware is being reset during the
    execution of the hns_roce_cmd_mbox(), the driver will not be able to get
    the return value from the hardware (the firmware cannot respond to the
    driver's mailbox during the hardware reset phase).
    
    The driver needs to wait for the hardware reset to complete before
    continuing to execute hns_roce_qp_destroy(), otherwise it may happen that
    the driver releases the resources but the hardware is still accessing. In
    order to fix this problem, HNS RoCE needs to add a piece of code to wait
    for the hardware reset to complete.
    
    The original interface get_hw_reset_stat() is the instantaneous state of
    the hardware reset, which cannot accurately reflect whether the hardware
    reset is completed, so it needs to be replaced with the ae_dev_reset_cnt
    interface.
    
    The sign that the hardware reset is complete is that the return value of
    the ae_dev_reset_cnt interface is greater than the original value
    reset_cnt recorded by the driver.
    
    Fixes: 6a04aed6afae ("RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset")
    Link: https://lore.kernel.org/r/20211123142402.26936-1-liangwenpeng@huawei.com
    Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 207f5ea62a9f80b7e57dada256fb00c5721864a8
Author: Yangyang Li <liyangyang20@huawei.com>
Date:   Tue Nov 23 16:48:09 2021 +0800

    RDMA/hns: Do not halt commands during reset until later
    
    commit 52414e27d6b568120b087d1fbafbb4482b0ccaab upstream.
    
    is_reset is used to indicate whether the hardware starts to reset. When
    hns_roce_hw_v2_reset_notify_down() is called, the hardware has not yet
    started to reset. If is_reset is set at this time, all mailbox operations
    of resource destroy actions will be intercepted by driver. When the driver
    cleans up resources, but the hardware is still accessed, the following
    errors will appear:
    
      arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000350100000010
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x000002088000003f
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x00000000a50e0800
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000000000000000
      arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000350100000010
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x000002088000043e
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x00000000a50a0800
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000000000000000
      arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000350100000010
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000020880000436
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x00000000a50a0880
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000000000000000
      arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000350100000010
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x000002088000043a
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x00000000a50e0840
      hns3 0000:35:00.0: INT status: CMDQ(0x0) HW errors(0x0) other(0x0)
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000000000000000
      hns3 0000:35:00.0: received unknown or unhandled event of vector0
      arm-smmu-v3 arm-smmu-v3.2.auto: event 0x10 received:
      arm-smmu-v3 arm-smmu-v3.2.auto:       0x0000350100000010
      {34}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 7
    
    is_reset will be set correctly in check_aedev_reset_status(), so the
    setting in hns_roce_hw_v2_reset_notify_down() should be deleted.
    
    Fixes: 726be12f5ca0 ("RDMA/hns: Set reset flag when hw resetting")
    Link: https://lore.kernel.org/r/20211123084809.37318-1-liangwenpeng@huawei.com
    Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b6bf6fca018a54c964d8f668cf0032813c91b2c
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 30 16:05:06 2021 +0000

    ASoC: codecs: wcd934x: return correct value from mixer put
    
    commit d9be0ff4796d1b6f5ee391c1b7e3653a43cedfab upstream.
    
    wcd934x_compander_set() currently returns zero eventhough it changes the value.
    Fix this, so that change notifications are sent correctly.
    
    Fixes: 1cde8b822332 ("ASoC: wcd934x: add basic controls")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211130160507.22180-4-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 339ffb5b56005582aacc860524d2d208604049d1
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 30 16:05:04 2021 +0000

    ASoC: codecs: wcd934x: handle channel mappping list correctly
    
    commit 23ba28616d3063bd4c4953598ed5e439ca891101 upstream.
    
    Currently each channel is added as list to dai channel list, however
    there is danger of adding same channel to multiple dai channel list
    which endups corrupting the other list where its already added.
    
    This patch ensures that the channel is actually free before adding to
    the dai channel list and also ensures that the channel is on the list
    before deleting it.
    
    This check was missing previously, and we did not hit this issue as
    we were testing very simple usecases with sequence of amixer commands.
    
    Fixes: a70d9245759a ("ASoC: wcd934x: add capture dapm widgets")
    Fixes: dd9eb19b5673 ("ASoC: wcd934x: add playback dapm widgets")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211130160507.22180-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71272640d459c9efe2380d43d4d899782bb225a0
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 30 16:05:07 2021 +0000

    ASoC: codecs: wsa881x: fix return values from kcontrol put
    
    commit 3fc27e9a1f619b50700f020e6cd270c1b74755f0 upstream.
    
    wsa881x_set_port() and wsa881x_put_pa_gain() currently returns zero eventhough
    it changes the value. Fix this, so that change notifications are sent
    correctly.
    
    Fixes: a0aab9e1404a ("ASoC: codecs: add wsa881x amplifier support")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211130160507.22180-5-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1e22179376f14ef50126b2537af108ee493f840
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 30 16:31:10 2021 +0000

    ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer
    
    commit 4739d88ad8e1900f809f8a5c98f3c1b65bf76220 upstream.
    
    msm_routing_put_audio_mixer() can return incorrect value in various scenarios.
    
    scenario 1:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0
    
    return value is 0 instead of 1 eventhough value was changed
    
    scenario 2:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    
    return value is 1 instead of 0 eventhough the value was not changed
    
    scenario 3:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0
    return value is 1 instead of 0 eventhough the value was not changed
    
    Fix this by adding checks, so that change notifications are sent correctly.
    
    Fixes: e3a33673e845 ("ASoC: qdsp6: q6routing: Add q6routing driver")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211130163110.5628-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdb5a0d0e0075f9ede20f1aebd0b3f92ec743db4
Author: Rob Clark <robdclark@chromium.org>
Date:   Wed Nov 17 17:04:52 2021 -0800

    ASoC: rt5682: Fix crash due to out of scope stack vars
    
    commit 4999d703c0e66f9f196b6edc0b8fdeca8846b8b6 upstream.
    
    Move the declaration of temporary arrays to somewhere that won't go out
    of scope before the devm_clk_hw_register() call, lest we be at the whim
    of the compiler for whether those stack variables get overwritten.
    
    Fixes a crash seen with gcc version 11.2.1 20210728 (Red Hat 11.2.1-1)
    
    Fixes: edbd24ea1e5c ("ASoC: rt5682: Drop usage of __clk_get_name()")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20211118010453.843286-1-robdclark@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9362a21147afbfa9274a6888605388c6b06006b
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 3 17:19:47 2021 +0100

    PM: runtime: Fix pm_runtime_active() kerneldoc comment
    
    commit 444dd878e85fb33fcfb2682cfdab4c236f33ea3e upstream.
    
    The kerneldoc comment of pm_runtime_active() does not reflect the
    behavior of the function, so update it accordingly.
    
    Fixes: 403d2d116ec0 ("PM: runtime: Add kerneldoc comments to multiple helpers")
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3f0e9b1d6cd02b532cde6205c15148e57d649e2
Author: Manish Chopra <manishc@marvell.com>
Date:   Fri Dec 3 09:44:13 2021 -0800

    qede: validate non LSO skb length
    
    commit 8e227b198a55859bf790dc7f4b1e30c0859c6756 upstream.
    
    Although it is unlikely that stack could transmit a non LSO
    skb with length > MTU, however in some cases or environment such
    occurrences actually resulted into firmware asserts due to packet
    length being greater than the max supported by the device (~9700B).
    
    This patch adds the safeguard for such odd cases to avoid firmware
    asserts.
    
    v2: Added "Fixes" tag with one of the initial driver commit
        which enabled the TX traffic actually (as this was probably
        day1 issue which was discovered recently by some customer
        environment)
    
    Fixes: a2ec6172d29c ("qede: Add support for link")
    Signed-off-by: Manish Chopra <manishc@marvell.com>
    Signed-off-by: Alok Prasad <palok@marvell.com>
    Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
    Signed-off-by: Ariel Elior <aelior@marvell.com>
    Link: https://lore.kernel.org/r/20211203174413.13090-1-manishc@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 069a849819b36b1425f9530207eb3d4745b4b57e
Author: Geraldo Nascimento <geraldogabriel@gmail.com>
Date:   Sat Dec 4 15:52:24 2021 -0300

    ALSA: usb-audio: Reorder snd_djm_devices[] entries
    
    commit fb1af5bea4670c835e42fc0c14c49d3499468774 upstream.
    
    Olivia Mackintosh has posted to alsa-devel reporting that
    there's a potential bug that could break mixer quirks for Pioneer
    devices introduced by 6d27788160362a7ee6c0d317636fe4b1ddbe59a7
    "ALSA: usb-audio: Add support for the Pioneer DJM 750MK2
    Mixer/Soundcard".
    
    This happened because the DJM 750 MK2 was added last to the Pioneer DJM
    device table index and defined as 0x4 but was added to snd_djm_devices[]
    just after the DJM 750 (MK1) entry instead of last, after the DJM 900
    NXS2. This escaped review.
    
    To prevent that from ever happening again, Takashi Iwai suggested to use
    C99 array designators in snd_djm_devices[] instead of simply reordering
    the entries.
    
    Fixes: 6d2778816036 ("ALSA: usb-audio: Add support for the Pioneer DJM 750MK2")
    Reported-by: Olivia Mackintosh <livvy@base.nu>
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
    Link: https://lore.kernel.org/r/Yau46FDzoql0SNnW@geday
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebacb44cb2042b90951140eda806bedad23ef554
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Tue Dec 7 10:06:38 2021 +0900

    scsi: scsi_debug: Fix buffer size of REPORT ZONES command
    
    commit 7db0e0c8190a086ef92ce5bb960836cde49540aa upstream.
    
    According to ZBC and SPC specifications, the unit of ALLOCATION LENGTH
    field of REPORT ZONES command is byte. However, current scsi_debug
    implementation handles it as number of zones to calculate buffer size to
    report zones. When the ALLOCATION LENGTH has a large number, this results
    in too large buffer size and causes memory allocation failure.  Fix the
    failure by handling ALLOCATION LENGTH as byte unit.
    
    Link: https://lore.kernel.org/r/20211207010638.124280-1-shinichiro.kawasaki@wdc.com
    Fixes: f0d1cf9378bd ("scsi: scsi_debug: Add ZBC zone commands")
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8dccc1bdea7e21b5ec06c957aef8831c772661c
Author: Igor Pylypiv <ipylypiv@google.com>
Date:   Tue Nov 30 20:16:27 2021 -0800

    scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc()
    
    commit 653926205741add87a6cf452e21950eebc6ac10b upstream.
    
    Calling scsi_remove_host() before scsi_add_host() results in a crash:
    
     BUG: kernel NULL pointer dereference, address: 0000000000000108
     RIP: 0010:device_del+0x63/0x440
     Call Trace:
      device_unregister+0x17/0x60
      scsi_remove_host+0xee/0x2a0
      pm8001_pci_probe+0x6ef/0x1b90 [pm80xx]
      local_pci_probe+0x3f/0x90
    
    We cannot call scsi_remove_host() in pm8001_alloc() because scsi_add_host()
    has not been called yet at that point in time.
    
    Function call tree:
    
      pm8001_pci_probe()
      |
      `- pm8001_pci_alloc()
      |  |
      |  `- pm8001_alloc()
      |     |
      |     `- scsi_remove_host()
      |
      `- scsi_add_host()
    
    Link: https://lore.kernel.org/r/20211201041627.1592487-1-ipylypiv@google.com
    Fixes: 05c6c029a44d ("scsi: pm80xx: Increase number of supported queues")
    Reviewed-by: Vishakha Channapattan <vishakhavc@google.com>
    Acked-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d429b302c184a0018cadce49a50e099ffaf1dcb7
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri Dec 10 10:20:58 2021 -0800

    block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
    
    commit e6a59aac8a8713f335a37d762db0dbe80e7f6d38 upstream.
    
    do_each_pid_thread(PIDTYPE_PGID) can race with a concurrent
    change_pid(PIDTYPE_PGID) that can move the task from one hlist
    to another while iterating. Serialize ioprio_get to take
    the tasklist_lock in this case, just like it's set counterpart.
    
    Fixes: d69b78ba1de (ioprio: grab rcu_read_lock in sys_ioprio_{set,get}())
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Link: https://lore.kernel.org/r/20211210182058.43417-1-dave@stgolabs.net
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3098ce15fece36ded5e0d298568209e38dbb014
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Tue Dec 7 17:21:44 2021 +1300

    i2c: mpc: Use atomic read and fix break condition
    
    commit a74c313aca266fab0d1d1a72becbb8b7b5286b6e upstream.
    
    Maxime points out that the polling code in mpc_i2c_isr should use the
    _atomic API because it is called in an irq context and that the
    behaviour of the MCF bit is that it is 1 when the byte transfer is
    complete. All of this means the original code was effectively a
    udelay(100).
    
    Fix this by using readb_poll_timeout_atomic() and removing the negation
    of the break condition.
    
    Fixes: 4a8ac5e45cda ("i2c: mpc: Poll for MCF")
    Reported-by: Maxime Bizon <mbizon@freebox.fr>
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Tested-by: Maxime Bizon <mbizon@freebox.fr>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a5f9797d6cad693d990486836311d750c4407f
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Dec 7 17:17:29 2021 -0500

    tracefs: Set all files to the same group ownership as the mount option
    
    commit 48b27b6b5191e2e1f2798cd80877b6e4ef47c351 upstream.
    
    As people have been asking to allow non-root processes to have access to
    the tracefs directory, it was considered best to only allow groups to have
    access to the directory, where it is easier to just set the tracefs file
    system to a specific group (as other would be too dangerous), and that way
    the admins could pick which processes would have access to tracefs.
    
    Unfortunately, this broke tooling on Android that expected the other bit
    to be set. For some special cases, for non-root tools to trace the system,
    tracefs would be mounted and change the permissions of the top level
    directory which gave access to all running tasks permission to the
    tracing directory. Even though this would be dangerous to do in a
    production environment, for testing environments this can be useful.
    
    Now with the new changes to not allow other (which is still the proper
    thing to do), it breaks the testing tooling. Now more code needs to be
    loaded on the system to change ownership of the tracing directory.
    
    The real solution is to have tracefs honor the gid=xxx option when
    mounting. That is,
    
    (tracing group tracing has value 1003)
    
     mount -t tracefs -o gid=1003 tracefs /sys/kernel/tracing
    
    should have it that all files in the tracing directory should be of the
    given group.
    
    Copy the logic from d_walk() from dcache.c and simplify it for the mount
    case of tracefs if gid is set. All the files in tracefs will be walked and
    their group will be set to the value passed in.
    
    Link: https://lkml.kernel.org/r/20211207171729.2a54e1b3@gandalf.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reported-by: Kalesh Singh <kaleshsingh@google.com>
    Reported-by: Yabin Cui <yabinc@google.com>
    Fixes: 49d67e445742 ("tracefs: Have tracefs directories not set OTH permission bits by default")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60d311f9e6381d779d7d53371f87285698ecee24
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Dec 8 17:04:55 2021 -0800

    aio: fix use-after-free due to missing POLLFREE handling
    
    commit 50252e4b5e989ce64555c7aef7516bdefc2fea72 upstream.
    
    signalfd_poll() and binder_poll() are special in that they use a
    waitqueue whose lifetime is the current task, rather than the struct
    file as is normally the case.  This is okay for blocking polls, since a
    blocking poll occurs within one task; however, non-blocking polls
    require another solution.  This solution is for the queue to be cleared
    before it is freed, by sending a POLLFREE notification to all waiters.
    
    Unfortunately, only eventpoll handles POLLFREE.  A second type of
    non-blocking poll, aio poll, was added in kernel v4.18, and it doesn't
    handle POLLFREE.  This allows a use-after-free to occur if a signalfd or
    binder fd is polled with aio poll, and the waitqueue gets freed.
    
    Fix this by making aio poll handle POLLFREE.
    
    A patch by Ramji Jiyani <ramjiyani@google.com>
    (https://lore.kernel.org/r/20211027011834.2497484-1-ramjiyani@google.com)
    tried to do this by making aio_poll_wake() always complete the request
    inline if POLLFREE is seen.  However, that solution had two bugs.
    First, it introduced a deadlock, as it unconditionally locked the aio
    context while holding the waitqueue lock, which inverts the normal
    locking order.  Second, it didn't consider that POLLFREE notifications
    are missed while the request has been temporarily de-queued.
    
    The second problem was solved by my previous patch.  This patch then
    properly fixes the use-after-free by handling POLLFREE in a
    deadlock-free way.  It does this by taking advantage of the fact that
    freeing of the waitqueue is RCU-delayed, similar to what eventpoll does.
    
    Fixes: 2c14fa838cbe ("aio: implement IOCB_CMD_POLL")
    Cc: <stable@vger.kernel.org> # v4.18+
    Link: https://lore.kernel.org/r/20211209010455.42744-6-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 924f51534d428e91c98ea309ab16270f5e8289c6
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Dec 8 17:04:54 2021 -0800

    aio: keep poll requests on waitqueue until completed
    
    commit 363bee27e25804d8981dd1c025b4ad49dc39c530 upstream.
    
    Currently, aio_poll_wake() will always remove the poll request from the
    waitqueue.  Then, if aio_poll_complete_work() sees that none of the
    polled events are ready and the request isn't cancelled, it re-adds the
    request to the waitqueue.  (This can easily happen when polling a file
    that doesn't pass an event mask when waking up its waitqueue.)
    
    This is fundamentally broken for two reasons:
    
      1. If a wakeup occurs between vfs_poll() and the request being
         re-added to the waitqueue, it will be missed because the request
         wasn't on the waitqueue at the time.  Therefore, IOCB_CMD_POLL
         might never complete even if the polled file is ready.
    
      2. When the request isn't on the waitqueue, there is no way to be
         notified that the waitqueue is being freed (which happens when its
         lifetime is shorter than the struct file's).  This is supposed to
         happen via the waitqueue entries being woken up with POLLFREE.
    
    Therefore, leave the requests on the waitqueue until they are actually
    completed (or cancelled).  To keep track of when aio_poll_complete_work
    needs to be scheduled, use new fields in struct poll_iocb.  Remove the
    'done' field which is now redundant.
    
    Note that this is consistent with how sys_poll() and eventpoll work;
    their wakeup functions do *not* remove the waitqueue entries.
    
    Fixes: 2c14fa838cbe ("aio: implement IOCB_CMD_POLL")
    Cc: <stable@vger.kernel.org> # v4.18+
    Link: https://lore.kernel.org/r/20211209010455.42744-5-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d6760fd5d1604df29dd7651033167ef99a7698d
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Dec 8 17:04:53 2021 -0800

    signalfd: use wake_up_pollfree()
    
    commit 9537bae0da1f8d1e2361ab6d0479e8af7824e160 upstream.
    
    wake_up_poll() uses nr_exclusive=1, so it's not guaranteed to wake up
    all exclusive waiters.  Yet, POLLFREE *must* wake up all waiters.  epoll
    and aio poll are fortunately not affected by this, but it's very
    fragile.  Thus, the new function wake_up_pollfree() has been introduced.
    
    Convert signalfd to use wake_up_pollfree().
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: d80e731ecab4 ("epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-4-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f12d997683a7a97e7af834d3181fad61ad67df47
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Dec 8 17:04:52 2021 -0800

    binder: use wake_up_pollfree()
    
    commit a880b28a71e39013e357fd3adccd1d8a31bc69a8 upstream.
    
    wake_up_poll() uses nr_exclusive=1, so it's not guaranteed to wake up
    all exclusive waiters.  Yet, POLLFREE *must* wake up all waiters.  epoll
    and aio poll are fortunately not affected by this, but it's very
    fragile.  Thus, the new function wake_up_pollfree() has been introduced.
    
    Convert binder to use wake_up_pollfree().
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: f5cb779ba163 ("ANDROID: binder: remove waitqueue when thread exits.")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-3-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ebb6cd8c754bfe1a5f9539027980756bce7cb08
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Dec 8 17:04:51 2021 -0800

    wait: add wake_up_pollfree()
    
    commit 42288cb44c4b5fff7653bc392b583a2b8bd6a8c0 upstream.
    
    Several ->poll() implementations are special in that they use a
    waitqueue whose lifetime is the current task, rather than the struct
    file as is normally the case.  This is okay for blocking polls, since a
    blocking poll occurs within one task; however, non-blocking polls
    require another solution.  This solution is for the queue to be cleared
    before it is freed, using 'wake_up_poll(wq, EPOLLHUP | POLLFREE);'.
    
    However, that has a bug: wake_up_poll() calls __wake_up() with
    nr_exclusive=1.  Therefore, if there are multiple "exclusive" waiters,
    and the wakeup function for the first one returns a positive value, only
    that one will be called.  That's *not* what's needed for POLLFREE;
    POLLFREE is special in that it really needs to wake up everyone.
    
    Considering the three non-blocking poll systems:
    
    - io_uring poll doesn't handle POLLFREE at all, so it is broken anyway.
    
    - aio poll is unaffected, since it doesn't support exclusive waits.
      However, that's fragile, as someone could add this feature later.
    
    - epoll doesn't appear to be broken by this, since its wakeup function
      returns 0 when it sees POLLFREE.  But this is fragile.
    
    Although there is a workaround (see epoll), it's better to define a
    function which always sends POLLFREE to all waiters.  Add such a
    function.  Also make it verify that the queue really becomes empty after
    all waiters have been woken up.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-2-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e12976c0c19ebc14b60046b1348c516a74c25a2
Author: Jens Axboe <axboe@kernel.dk>
Date:   Thu Dec 9 08:54:29 2021 -0700

    io_uring: ensure task_work gets run as part of cancelations
    
    commit 78a780602075d8b00c98070fa26e389b3b3efa72 upstream.
    
    If we successfully cancel a work item but that work item needs to be
    processed through task_work, then we can be sleeping uninterruptibly
    in io_uring_cancel_generic() and never process it. Hence we don't
    make forward progress and we end up with an uninterruptible sleep
    warning.
    
    While in there, correct a comment that should be IFF, not IIF.
    
    Reported-and-tested-by: syzbot+21e6887c0be14181206d@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb313c47b2762565d48627d49ce661ae5018d155
Author: Hannes Reinecke <hare@suse.de>
Date:   Wed Dec 8 07:58:53 2021 +0100

    libata: add horkage for ASMedia 1092
    
    commit a66307d473077b7aeba74e9b09c841ab3d399c2d upstream.
    
    The ASMedia 1092 has a configuration mode which will present a
    dummy device; sadly the implementation falsely claims to provide
    a device with 100M which doesn't actually exist.
    So disable this device to avoid errors during boot.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0034d4b71f140aa758a461ba2a556efd4150dd5
Author: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Date:   Wed Dec 8 03:39:35 2021 +0100

    drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.
    
    commit b19926d4f3a660a8b76e5d989ffd1168e619a5c4 upstream.
    
    dma_fence_chain_find_seqno only ever returns the top fence in the
    chain or an unsignalled fence. Hence if we request a seqno that
    is already signalled it returns a NULL fence. Some callers are
    not prepared to handle this, like the syncobj transfer functions
    for example.
    
    This behavior is "new" with timeline syncobj and it looks like
    not all callers were updated. To fix this behavior make sure
    that a successful drm_sync_find_fence always returns a non-NULL
    fence.
    
    v2: Move the fix to drm_syncobj_find_fence from the transfer
        functions.
    
    Fixes: ea569910cbab ("drm/syncobj: add transition iotcls between binary and timeline v2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211208023935.17018-1-bas@basnieuwenhuizen.nl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 021ae1e11dfc33b03b1cc83a2d76431aa5de1e20
Author: Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
Date:   Tue Dec 7 18:05:39 2021 +0530

    thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL
    
    commit f872f73601b92c86f3da8bdf3e19abd0f1780eb9 upstream.
    
    The VCoRefLow CPU FIVR register definition for Tiger Lake is incorrect.
    
    Current implementation reads it from MMIO offset 0x5A18 and bit
    offset [12:14], but the actual correct register definition is from
    bit offset [11:13].
    
    Update to fix the bit offset.
    
    Fixes: 473be51142ad ("thermal: int340x: processor_thermal: Add RFIM driver")
    Signed-off-by: Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
    Cc: 5.14+ <stable@vger.kernel.org> # 5.14+
    [ rjw: New subject, changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0138d396ffcecf9031fc5f2be9f5480938c1efe7
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Nov 16 02:34:07 2021 +0300

    clk: qcom: regmap-mux: fix parent clock lookup
    
    commit 9a61f813fcc8d56d85fcf9ca6119cf2b5ac91dd5 upstream.
    
    The function mux_get_parent() uses qcom_find_src_index() to find the
    parent clock index, which is incorrect: qcom_find_src_index() uses src
    enum for the lookup, while mux_get_parent() should use cfg field (which
    corresponds to the register value). Add qcom_find_cfg_index() function
    doing this kind of lookup and use it for mux parent lookup.
    
    Fixes: df964016490b ("clk: qcom: add parent map for regmap mux")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20211115233407.1046179-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfb7285a82faafb3930f138444fd1a6ddeed2634
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Tue Nov 30 14:23:09 2021 +0100

    mmc: renesas_sdhi: initialize variable properly when tuning
    
    commit 7dba402807a85fa3723f4a27504813caf81cc9d7 upstream.
    
    'cmd_error' is not necessarily initialized on some error paths in
    mmc_send_tuning(). Initialize it.
    
    Fixes: 2c9017d0b5d3 ("mmc: renesas_sdhi: abort tuning when timeout detected")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211130132309.18246-1-wsa+renesas@sang-engineering.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62c613419543a00317783d58144684bfbb24b3a4
Author: Billy Tsai <billy_tsai@aspeedtech.com>
Date:   Tue Nov 30 17:22:12 2021 +0800

    hwmon: (pwm-fan) Ensure the fan going on in .probe()
    
    commit a2ca752055edd39be38b887e264d3de7ca2bc1bb upstream.
    
    Before commit 86585c61972f ("hwmon: (pwm-fan) stop using legacy
    PWM functions and some cleanups") pwm_apply_state() was called
    unconditionally in pwm_fan_probe(). In this commit this direct
    call was replaced by a call to __set_pwm(ct, MAX_PWM) which
    however is a noop if ctx->pwm_value already matches the value to
    set.
    After probe the fan is supposed to run at full speed, and the
    internal driver state suggests it does, but this isn't asserted
    and depending on bootloader and pwm low-level driver, the fan
    might just be off.
    So drop setting pwm_value to MAX_PWM to ensure the check in
    __set_pwm doesn't make it exit early and the fan goes on as
    intended.
    
    Cc: stable@vger.kernel.org
    Fixes: 86585c61972f ("hwmon: (pwm-fan) stop using legacy PWM functions and some cleanups")
    Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20211130092212.17783-1-billy_tsai@aspeedtech.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a85d27b2eff4f5f58a871e159cb9e33313e1ef64
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Aug 5 06:54:23 2021 -0400

    selftests: KVM: avoid failures due to reserved HyperTransport region
    
    commit c8cc43c1eae2910ac96daa4216e0fb3391ad0504 upstream.
    
    AMD proceessors define an address range that is reserved by HyperTransport
    and causes a failure if used for guest physical addresses.  Avoid
    selftests failures by reserving those guest physical addresses; the
    rules are:
    
    - On parts with <40 bits, its fully hidden from software.
    
    - Before Fam17h, it was always 12G just below 1T, even if there was more
    RAM above this location.  In this case we just not use any RAM above 1T.
    
    - On Fam17h and later, it is variable based on SME, and is either just
    below 2^48 (no encryption) or 2^43 (encryption).
    
    Fixes: ef4c9f4f6546 ("KVM: selftests: Fix 32-bit truncation of vm_get_max_gfn()")
    Cc: stable@vger.kernel.org
    Cc: David Matlack <dmatlack@google.com>
    Reported-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20210805105423.412878-1-pbonzini@redhat.com>
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Tested-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 041aae47b00040a40b387b7ccd7f95c1f05e95f9
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Dec 8 07:57:20 2021 -0500

    tracefs: Have new files inherit the ownership of their parent
    
    commit ee7f3666995d8537dec17b1d35425f28877671a9 upstream.
    
    If directories in tracefs have their ownership changed, then any new files
    and directories that are created under those directories should inherit
    the ownership of the director they are created in.
    
    Link: https://lkml.kernel.org/r/20211208075720.4855d180@gandalf.local.home
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Yabin Cui <yabinc@google.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: stable@vger.kernel.org
    Fixes: 4282d60689d4f ("tracefs: Add new tracefs file system")
    Reported-by: Kalesh Singh <kaleshsingh@google.com>
    Reported: https://lore.kernel.org/all/CAC_TJve8MMAv+H_NdLSJXZUSoxOEq2zB_pVaJ9p=7H6Bu3X76g@mail.gmail.com/
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bf902fee5893cfc2f04a698abab47629699ae9a
Author: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date:   Tue Dec 7 15:00:39 2021 +0100

    nfsd: Fix nsfd startup race (again)
    
    commit b10252c7ae9c9d7c90552f88b544a44ee773af64 upstream.
    
    Commit bd5ae9288d64 ("nfsd: register pernet ops last, unregister first")
    has re-opened rpc_pipefs_event() race against nfsd_net_id registration
    (register_pernet_subsys()) which has been fixed by commit bb7ffbf29e76
    ("nfsd: fix nsfd startup race triggering BUG_ON").
    
    Restore the order of register_pernet_subsys() vs register_cld_notifier().
    Add WARN_ON() to prevent a future regression.
    
    Crash info:
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000012
    CPU: 8 PID: 345 Comm: mount Not tainted 5.4.144-... #1
    pc : rpc_pipefs_event+0x54/0x120 [nfsd]
    lr : rpc_pipefs_event+0x48/0x120 [nfsd]
    Call trace:
     rpc_pipefs_event+0x54/0x120 [nfsd]
     blocking_notifier_call_chain
     rpc_fill_super
     get_tree_keyed
     rpc_fs_get_tree
     vfs_get_tree
     do_mount
     ksys_mount
     __arm64_sys_mount
     el0_svc_handler
     el0_svc
    
    Fixes: bd5ae9288d64 ("nfsd: register pernet ops last, unregister first")
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 148c816f10fd11df27ca6a9b3238cdd42fa72cd3
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Mon Nov 29 15:08:00 2021 -0500

    nfsd: fix use-after-free due to delegation race
    
    commit 548ec0805c399c65ed66c6641be467f717833ab5 upstream.
    
    A delegation break could arrive as soon as we've called vfs_setlease.  A
    delegation break runs a callback which immediately (in
    nfsd4_cb_recall_prepare) adds the delegation to del_recall_lru.  If we
    then exit nfs4_set_delegation without hashing the delegation, it will be
    freed as soon as the callback is done with it, without ever being
    removed from del_recall_lru.
    
    Symptoms show up later as use-after-free or list corruption warnings,
    usually in the laundromat thread.
    
    I suspect aba2072f4523 "nfsd: grant read delegations to clients holding
    writes" made this bug easier to hit, but I looked as far back as v3.0
    and it looks to me it already had the same problem.  So I'm not sure
    where the bug was introduced; it may have been there from the beginning.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50dacb2289e50a3ef8daf581f93f834147629915
Author: Markus Hochholdinger <markus@hochholdinger.net>
Date:   Tue Nov 16 10:21:35 2021 +0000

    md: fix update super 1.0 on rdev size change
    
    commit 55df1ce0d4e086e05a8ab20619c73c729350f965 upstream.
    
    The superblock of version 1.0 doesn't get moved to the new position on a
    device size change. This leads to a rdev without a superblock on a known
    position, the raid can't be re-assembled.
    
    The line was removed by mistake and is re-added by this patch.
    
    Fixes: d9c0fa509eaf ("md: fix max sectors calculation for super 1.0")
    Cc: stable@vger.kernel.org
    Signed-off-by: Markus Hochholdinger <markus@hochholdinger.net>
    Reviewed-by: Xiao Ni <xni@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00cd8a99885c78efad89e84bc07d49d6eea7615c
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:23:03 2021 +0200

    perf intel-pt: Fix error timestamp setting on the decoder error path
    
    commit 6665b8e4836caa8023cbc7e53733acd234969c8c upstream.
    
    An error timestamp shows the last known timestamp for the queue, but this
    is not updated on the error path. Fix by setting it.
    
    Fixes: f4aa081949e7b6 ("perf tools: Add Intel PT decoder")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-8-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fbb83c1bf25e8d283cb165f3614852a1518a314
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:23:02 2021 +0200

    perf intel-pt: Fix missing 'instruction' events with 'q' option
    
    commit a882cc94971093e146ffa1163b140ad956236754 upstream.
    
    FUP packets contain IP information, which makes them also an 'instruction'
    event in 'hop' mode i.e. the itrace 'q' option.  That wasn't happening, so
    restructure the logic so that FUP events are added along with appropriate
    'instruction' and 'branch' events.
    
    Fixes: 7c1b16ba0e26e6 ("perf intel-pt: Add support for decoding FUP/TIP only")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-7-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22e5fb70f7254263b7922047e50736c29f7af8dc
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:23:01 2021 +0200

    perf intel-pt: Fix next 'err' value, walking trace
    
    commit a32e6c5da599dbf49e60622a4dfb5b9b40ece029 upstream.
    
    Code after label 'next:' in intel_pt_walk_trace() assumes 'err' is zero,
    but it may not be, if arrived at via a 'goto'. Ensure it is zero.
    
    Fixes: 7c1b16ba0e26e6 ("perf intel-pt: Add support for decoding FUP/TIP only")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-6-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f747cc563afdb44630dde633c0d0a2a4ff9643f1
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:23:00 2021 +0200

    perf intel-pt: Fix state setting when receiving overflow (OVF) packet
    
    commit c79ee2b2160909889df67c8801352d3e69d43a1a upstream.
    
    An overflow (OVF packet) is treated as an error because it represents a
    loss of trace data, but there is no loss of synchronization, so the packet
    state should be INTEL_PT_STATE_IN_SYNC not INTEL_PT_STATE_ERR_RESYNC.
    
    To support that, some additional variables must be reset, and the FUP
    packet that may follow OVF is treated as an FUP event.
    
    Fixes: f4aa081949e7b6 ("perf tools: Add Intel PT decoder")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-5-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e39dd2e600399b9524b5156571c32d862754ce89
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:22:59 2021 +0200

    perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type
    
    commit 4c761d805bb2d2ead1b9baaba75496152b394c80 upstream.
    
    intel_pt_fup_event() assumes it can overwrite the state type if there has
    been an FUP event, but this is an unnecessary and unexpected constraint on
    callers.
    
    Fix by touching only the state type flags that are affected by an FUP
    event.
    
    Fixes: a472e65fc490a ("perf intel-pt: Add decoder support for ptwrite and power event packets")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9c838b927cdc81a0e6c18609991cb0d00fe27fa
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:22:58 2021 +0200

    perf intel-pt: Fix sync state when a PSB (synchronization) packet is found
    
    commit ad106a26aef3a95ac7ca88d033b431661ba346ce upstream.
    
    When syncing, it may be that branch packet generation is not enabled at
    that point, in which case there will not immediately be a control-flow
    packet, so some packets before a control flow packet turns up, get
    ignored.  However, the decoder is in sync as soon as a PSB is found, so
    the state should be set accordingly.
    
    Fixes: f4aa081949e7b6 ("perf tools: Add Intel PT decoder")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-3-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c816dcf69ae4b270b228e5a599b0520c49be9ddd
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 10 18:22:57 2021 +0200

    perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage
    
    commit 057ae59f5a1d924511beb1b09f395bdb316cfd03 upstream.
    
    Packet generation enable (PGE) refers to whether control flow (COFI)
    packets are being produced.
    
    PGE may be false even when branch-tracing is enabled, due to being
    out-of-context, or outside a filter address range.  Fix some missing PGE
    usage.
    
    Fixes: 7c1b16ba0e26e6 ("perf intel-pt: Add support for decoding FUP/TIP only")
    Fixes: 839598176b0554 ("perf intel-pt: Allow decoding with branch tracing disabled")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v5.15+
    Link: https://lore.kernel.org/r/20211210162303.2288710-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca06c5cb1b6dbfe67655b33c02fc394d65824519
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Fri Dec 3 02:55:33 2021 -0800

    btrfs: free exchange changeset on failures
    
    commit da5e817d9d75422eaaa05490d0b9a5e328fc1a51 upstream.
    
    Fstests runs on my VMs have show several kmemleak reports like the following.
    
      unreferenced object 0xffff88811ae59080 (size 64):
        comm "xfs_io", pid 12124, jiffies 4294987392 (age 6.368s)
        hex dump (first 32 bytes):
          00 c0 1c 00 00 00 00 00 ff cf 1c 00 00 00 00 00  ................
          90 97 e5 1a 81 88 ff ff 90 97 e5 1a 81 88 ff ff  ................
        backtrace:
          [<00000000ac0176d2>] ulist_add_merge+0x60/0x150 [btrfs]
          [<0000000076e9f312>] set_state_bits+0x86/0xc0 [btrfs]
          [<0000000014fe73d6>] set_extent_bit+0x270/0x690 [btrfs]
          [<000000004f675208>] set_record_extent_bits+0x19/0x20 [btrfs]
          [<00000000b96137b1>] qgroup_reserve_data+0x274/0x310 [btrfs]
          [<0000000057e9dcbb>] btrfs_check_data_free_space+0x5c/0xa0 [btrfs]
          [<0000000019c4511d>] btrfs_delalloc_reserve_space+0x1b/0xa0 [btrfs]
          [<000000006d37e007>] btrfs_dio_iomap_begin+0x415/0x970 [btrfs]
          [<00000000fb8a74b8>] iomap_iter+0x161/0x1e0
          [<0000000071dff6ff>] __iomap_dio_rw+0x1df/0x700
          [<000000002567ba53>] iomap_dio_rw+0x5/0x20
          [<0000000072e555f8>] btrfs_file_write_iter+0x290/0x530 [btrfs]
          [<000000005eb3d845>] new_sync_write+0x106/0x180
          [<000000003fb505bf>] vfs_write+0x24d/0x2f0
          [<000000009bb57d37>] __x64_sys_pwrite64+0x69/0xa0
          [<000000003eba3fdf>] do_syscall_64+0x43/0x90
    
    In case brtfs_qgroup_reserve_data() or btrfs_delalloc_reserve_metadata()
    fail the allocated extent_changeset will not be freed.
    
    So in btrfs_check_data_free_space() and btrfs_delalloc_reserve_space()
    free the allocated extent_changeset to get rid of the allocated memory.
    
    The issue currently only happens in the direct IO write path, but only
    after 65b3c08606e5 ("btrfs: fix ENOSPC failure when attempting direct IO
    write into NOCOW range"), and also at defrag_one_locked_target(). Every
    other place is always calling extent_changeset_free() even if its call
    to btrfs_delalloc_reserve_space() or btrfs_check_data_free_space() has
    failed.
    
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32d4054cb3e84202a8aee342a7e88c8674deeebd
Author: Qu Wenruo <wqu@suse.com>
Date:   Wed Dec 1 19:56:17 2021 +0800

    btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling
    
    commit 8289ed9f93bef2762f9184e136d994734b16d997 upstream.
    
    I hit the BUG_ON() with generic/475 test case, and to my surprise, all
    callers of btrfs_del_root_ref() are already aborting transaction, thus
    there is not need for such BUG_ON(), just go to @out label and caller
    will properly handle the error.
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 477675049ca803aa95ff77468ffbddd966b415b0
Author: Naohiro Aota <naohiro.aota@wdc.com>
Date:   Tue Nov 30 12:40:21 2021 +0900

    btrfs: fix re-dirty process of tree-log nodes
    
    commit 84c25448929942edacba905cecc0474e91114e7a upstream.
    
    There is a report of a transaction abort of -EAGAIN with the following
    script.
    
      #!/bin/sh
    
      for d in sda sdb; do
              mkfs.btrfs -d single -m single -f /dev/\${d}
      done
    
      mount /dev/sda /mnt/test
      mount /dev/sdb /mnt/scratch
    
      for dir in test scratch; do
              echo 3 >/proc/sys/vm/drop_caches
              fio --directory=/mnt/\${dir} --name=fio.\${dir} --rw=read --size=50G --bs=64m \
                      --numjobs=$(nproc) --time_based --ramp_time=5 --runtime=480 \
                      --group_reporting |& tee /dev/shm/fio.\${dir}
              echo 3 >/proc/sys/vm/drop_caches
      done
    
      for d in sda sdb; do
              umount /dev/\${d}
      done
    
    The stack trace is shown in below.
    
      [3310.967991] BTRFS: error (device sda) in btrfs_commit_transaction:2341: errno=-11 unknown (Error while writing out transaction)
      [3310.968060] BTRFS info (device sda): forced readonly
      [3310.968064] BTRFS warning (device sda): Skipping commit of aborted transaction.
      [3310.968065] ------------[ cut here ]------------
      [3310.968066] BTRFS: Transaction aborted (error -11)
      [3310.968074] WARNING: CPU: 14 PID: 1684 at fs/btrfs/transaction.c:1946 btrfs_commit_transaction.cold+0x209/0x2c8
      [3310.968131] CPU: 14 PID: 1684 Comm: fio Not tainted 5.14.10-300.fc35.x86_64 #1
      [3310.968135] Hardware name: DIAWAY Tartu/Tartu, BIOS V2.01.B10 04/08/2021
      [3310.968137] RIP: 0010:btrfs_commit_transaction.cold+0x209/0x2c8
      [3310.968144] RSP: 0018:ffffb284ce393e10 EFLAGS: 00010282
      [3310.968147] RAX: 0000000000000026 RBX: ffff973f147b0f60 RCX: 0000000000000027
      [3310.968149] RDX: ffff974ecf098a08 RSI: 0000000000000001 RDI: ffff974ecf098a00
      [3310.968150] RBP: ffff973f147b0f08 R08: 0000000000000000 R09: ffffb284ce393c48
      [3310.968151] R10: ffffb284ce393c40 R11: ffffffff84f47468 R12: ffff973f101bfc00
      [3310.968153] R13: ffff971f20cf2000 R14: 00000000fffffff5 R15: ffff973f147b0e58
      [3310.968154] FS:  00007efe65468740(0000) GS:ffff974ecf080000(0000) knlGS:0000000000000000
      [3310.968157] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [3310.968158] CR2: 000055691bcbe260 CR3: 000000105cfa4001 CR4: 0000000000770ee0
      [3310.968160] PKRU: 55555554
      [3310.968161] Call Trace:
      [3310.968167]  ? dput+0xd4/0x300
      [3310.968174]  btrfs_sync_file+0x3f1/0x490
      [3310.968180]  __x64_sys_fsync+0x33/0x60
      [3310.968185]  do_syscall_64+0x3b/0x90
      [3310.968190]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [3310.968194] RIP: 0033:0x7efe6557329b
      [3310.968200] RSP: 002b:00007ffe0236ebc0 EFLAGS: 00000293 ORIG_RAX: 000000000000004a
      [3310.968203] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007efe6557329b
      [3310.968204] RDX: 0000000000000000 RSI: 00007efe58d77010 RDI: 0000000000000006
      [3310.968205] RBP: 0000000004000000 R08: 0000000000000000 R09: 00007efe58d77010
      [3310.968207] R10: 0000000016cacc0c R11: 0000000000000293 R12: 00007efe5ce95980
      [3310.968208] R13: 0000000000000000 R14: 00007efe6447c790 R15: 0000000c80000000
      [3310.968212] ---[ end trace 1a346f4d3c0d96ba ]---
      [3310.968214] BTRFS: error (device sda) in cleanup_transaction:1946: errno=-11 unknown
    
    The abort occurs because of a write hole while writing out freeing tree
    nodes of a tree-log tree. For zoned btrfs, we re-dirty a freed tree
    node to ensure btrfs can write the region and does not leave a hole on
    write on a zoned device. The current code fails to re-dirty a node
    when the tree-log tree's depth is greater or equal to 2. That leads to
    a transaction abort with -EAGAIN.
    
    Fix the issue by properly re-dirtying a node on walking up the tree.
    
    Fixes: d3575156f662 ("btrfs: zoned: redirty released extent buffers")
    CC: stable@vger.kernel.org # 5.12+
    Link: https://github.com/kdave/btrfs-progs/issues/415
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0338e448b90527d46e6debe9f95f8a117706a835
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Nov 24 14:14:23 2021 -0500

    btrfs: clear extent buffer uptodate when we fail to write it
    
    commit c2e39305299f0118298c2201f6d6cc7d3485f29e upstream.
    
    I got dmesg errors on generic/281 on our overnight fstests.  Looking at
    the history this happens occasionally, with errors like this
    
      WARNING: CPU: 0 PID: 673217 at fs/btrfs/extent_io.c:6848 assert_eb_page_uptodate+0x3f/0x50
      CPU: 0 PID: 673217 Comm: kworker/u4:13 Tainted: G        W         5.16.0-rc2+ #469
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      Workqueue: btrfs-cache btrfs_work_helper
      RIP: 0010:assert_eb_page_uptodate+0x3f/0x50
      RSP: 0018:ffffae598230bc60 EFLAGS: 00010246
      RAX: 0017ffffc0002112 RBX: ffffebaec4100900 RCX: 0000000000001000
      RDX: ffffebaec45733c7 RSI: ffffebaec4100900 RDI: ffff9fd98919f340
      RBP: 0000000000000d56 R08: ffff9fd98e300000 R09: 0000000000000000
      R10: 0001207370a91c50 R11: 0000000000000000 R12: 00000000000007b0
      R13: ffff9fd98919f340 R14: 0000000001500000 R15: 0000000001cb0000
      FS:  0000000000000000(0000) GS:ffff9fd9fbc00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f549fcf8940 CR3: 0000000114908004 CR4: 0000000000370ef0
      Call Trace:
    
       extent_buffer_test_bit+0x3f/0x70
       free_space_test_bit+0xa6/0xc0
       load_free_space_tree+0x1d6/0x430
       caching_thread+0x454/0x630
       ? rcu_read_lock_sched_held+0x12/0x60
       ? rcu_read_lock_sched_held+0x12/0x60
       ? rcu_read_lock_sched_held+0x12/0x60
       ? lock_release+0x1f0/0x2d0
       btrfs_work_helper+0xf2/0x3e0
       ? lock_release+0x1f0/0x2d0
       ? finish_task_switch.isra.0+0xf9/0x3a0
       process_one_work+0x270/0x5a0
       worker_thread+0x55/0x3c0
       ? process_one_work+0x5a0/0x5a0
       kthread+0x174/0x1a0
       ? set_kthread_struct+0x40/0x40
       ret_from_fork+0x1f/0x30
    
    This happens because we're trying to read from a extent buffer page that
    is !PageUptodate.  This happens because we will clear the page uptodate
    when we have an IO error, but we don't clear the extent buffer uptodate.
    If we do a read later and find this extent buffer we'll think its valid
    and not return an error, and then trip over this warning.
    
    Fix this by also clearing uptodate on the extent buffer when this
    happens, so that we get an error when we do a btrfs_search_slot() and
    find this block later.
    
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48fc373d9d5419195e0aa1f2f2589246836b6088
Author: Roman Bolshakov <r.bolshakov@yadro.com>
Date:   Fri Nov 12 17:54:46 2021 +0300

    scsi: qla2xxx: Format log strings only if needed
    
    commit 69002c8ce914ef0ae22a6ea14b43bb30b9a9a6a8 upstream.
    
    Commit 598a90f2002c ("scsi: qla2xxx: add ring buffer for tracing debug
    logs") introduced unconditional log string formatting to ql_dbg() even if
    ql_dbg_log event is disabled. It harms performance because some strings are
    formatted in fastpath and/or interrupt context.
    
    Link: https://lore.kernel.org/r/20211112145446.51210-1-r.bolshakov@yadro.com
    Fixes: 598a90f2002c ("scsi: qla2xxx: add ring buffer for tracing debug logs")
    Cc: Rajan Shanmugavelu <rajan.shanmugavelu@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d14bad8c11cc9e78d36bc543930a96920751d99e
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Tue Dec 7 12:54:19 2021 +0100

    cifs: Fix crash on unload of cifs_arc4.ko
    
    commit 51a08bdeca27988a17c87b87d8e64ffecbd2a172 upstream.
    
    The exit function is wrongly placed in the __init section and this leads
    to a crash when the module is unloaded.  Just remove both the init and
    exit functions since this module does not need them.
    
    Fixes: 71c02863246167b3d ("cifs: fork arc4 and create a separate module...")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Acked-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Cc: stable@vger.kernel.org # 5.15
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd7029809947230e15302e9c143d5e14a9f133a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:06 2021 +0100

    ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*()
    
    commit 6665bb30a6b1a4a853d52557c05482ee50e71391 upstream.
    
    A couple of calls in snd_pcm_oss_change_params_locked() ignore the
    possible errors.  Catch those errors and abort the operation for
    avoiding further problems.
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211201073606.11660-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35a3e511032146941085f87dd9fb5b82ea5c00a2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:05 2021 +0100

    ALSA: pcm: oss: Limit the period size to 16MB
    
    commit 8839c8c0f77ab8fc0463f4ab8b37fca3f70677c2 upstream.
    
    Set the practical limit to the period size (the fragment shift in OSS)
    instead of a full 31bit; a too large value could lead to the exhaust
    of memory as we allocate temporary buffers of the period size, too.
    
    As of this patch, we set to 16MB limit, which should cover all use
    cases.
    
    Reported-by: syzbot+bb348e9f9a954d42746f@syzkaller.appspotmail.com
    Reported-by: Bixuan Cui <cuibixuan@linux.alibaba.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1638270978-42412-1-git-send-email-cuibixuan@linux.alibaba.com
    Link: https://lore.kernel.org/r/20211201073606.11660-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00a860678098fcd9fa8db2b5fb9d2ddf4776d4cc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:04 2021 +0100

    ALSA: pcm: oss: Fix negative period/buffer sizes
    
    commit 9d2479c960875ca1239bcb899f386970c13d9cfe upstream.
    
    The period size calculation in OSS layer may receive a negative value
    as an error, but the code there assumes only the positive values and
    handle them with size_t.  Due to that, a too big value may be passed
    to the lower layers.
    
    This patch changes the code to handle with ssize_t and adds the proper
    error checks appropriately.
    
    Reported-by: syzbot+bb348e9f9a954d42746f@syzkaller.appspotmail.com
    Reported-by: Bixuan Cui <cuibixuan@linux.alibaba.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1638270978-42412-1-git-send-email-cuibixuan@linux.alibaba.com
    Link: https://lore.kernel.org/r/20211201073606.11660-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c94a0d734c7bf4ffa5e72f3e66a12b5f36d3f4e2
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Thu Dec 2 17:50:10 2021 +0100

    ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1
    
    commit 619764cc2ec9ce1283a8bbcd89a1376a7c68293b upstream.
    
    This fixes the SND_PCI_QUIRK(...) of the TongFang PHxTxX1 barebone. This
    fixes the issue of sound not working after s3 suspend.
    
    When waking up from s3 suspend the Coef 0x10 is set to 0x0220 instead of
    0x0020. Setting the value manually makes the sound work again. This patch
    does this automatically.
    
    While being on it, I also fixed the comment formatting of the quirk and
    shortened variable and function names.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Fixes: dd6dd6e3c791 ("ALSA: hda/realtek: Add quirk for TongFang PHxTxX1")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211202165010.876431-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 220aaee85f0ea1e8f10cf5a6f500df6fd4b7bcee
Author: Kailang Yang <kailang@realtek.com>
Date:   Tue Nov 23 16:32:44 2021 +0800

    ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform
    
    commit d7f32791a9fcf0dae8b073cdea9b79e29098c5f4 upstream.
    
    Lenovo ALC897 platform had headset Mic.
    This patch enable supported headset Mic.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/baab2c2536cb4cc18677a862c6f6d840@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da171216ac2d5958b19c804d1a64a9bd31b061cb
Author: Alan Young <consult.awy@gmail.com>
Date:   Thu Dec 2 15:06:07 2021 +0000

    ALSA: ctl: Fix copy of updated id with element read/write
    
    commit b6409dd6bdc03aa178bbff0d80db2a30d29b63ac upstream.
    
    When control_compat.c:copy_ctl_value_to_user() is used, by
    ctl_elem_read_user() & ctl_elem_write_user(), it must also copy back the
    snd_ctl_elem_id value that may have been updated (filled in) by the call
    to snd_ctl_elem_read/snd_ctl_elem_write().
    
    This matches the functionality provided by snd_ctl_elem_read_user() and
    snd_ctl_elem_write_user(), via snd_ctl_build_ioff().
    
    Without this, and without making additional calls to snd_ctl_info()
    which are unnecessary when using the non-compat calls, a userspace
    application will not know the numid value for the element and
    consequently will not be able to use the poll/read interface on the
    control file to determine which elements have updates.
    
    Signed-off-by: Alan Young <consult.awy@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211202150607.543389-1-consult.awy@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f987b61daa9860a68e346d620952947327388779
Author: Manjong Lee <mj0123.lee@samsung.com>
Date:   Fri Dec 10 14:47:11 2021 -0800

    mm: bdi: initialize bdi_min_ratio when bdi is unregistered
    
    commit 3c376dfafbf7a8ea0dea212d095ddd83e93280bb upstream.
    
    Initialize min_ratio if it is set during bdi unregistration.  This can
    prevent problems that may occur a when bdi is removed without resetting
    min_ratio.
    
    For example.
    1) insert external sdcard
    2) set external sdcard's min_ratio 70
    3) remove external sdcard without setting min_ratio 0
    4) insert external sdcard
    5) set external sdcard's min_ratio 70 << error occur(can't set)
    
    Because when an sdcard is removed, the present bdi_min_ratio value will
    remain.  Currently, the only way to reset bdi_min_ratio is to reboot.
    
    [akpm@linux-foundation.org: tweak comment and coding style]
    
    Link: https://lkml.kernel.org/r/20211021161942.5983-1-mj0123.lee@samsung.com
    Signed-off-by: Manjong Lee <mj0123.lee@samsung.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Changheun Lee <nanich.lee@samsung.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <seunghwan.hyun@samsung.com>
    Cc: <sookwan7.kim@samsung.com>
    Cc: <yt0928.kim@samsung.com>
    Cc: <junho89.kim@samsung.com>
    Cc: <jisoo2146.oh@samsung.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 dd902bcec34ffeb8eeebf0b2c897f04b035def3b
Author: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date:   Fri Dec 10 14:47:02 2021 -0800

    mm/slub: fix endianness bug for alloc/free_traces attributes
    
    commit 005a79e5c254c3f60ec269a459cc41b55028c798 upstream.
    
    On big-endian s390, the alloc/free_traces attributes produce endless
    output, because of always 0 idx in slab_debugfs_show().
    
    idx is de-referenced from *v, which points to a loff_t value, with
    
        unsigned int idx = *(unsigned int *)v;
    
    This will only give the upper 32 bits on big-endian, which remain 0.
    
    Instead of only fixing this de-reference, during discussion it seemed
    more appropriate to change the seq_ops so that they use an explicit
    iterator in private loc_track struct.
    
    This patch adds idx to loc_track, which will also fix the endianness
    bug.
    
    Link: https://lore.kernel.org/r/20211117193932.4049412-1-gerald.schaefer@linux.ibm.com
    Link: https://lkml.kernel.org/r/20211126171848.17534-1-gerald.schaefer@linux.ibm.com
    Fixes: 64dd68497be7 ("mm: slub: move sysfs slab alloc/free interfaces to debugfs")
    Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Reported-by: Steffen Maier <maier@linux.ibm.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Faiyaz Mohammed <faiyazm@codeaurora.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.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 7d7e02563bcd5cebc18c92cf0882bcc7bb9c8809
Author: SeongJae Park <sj@kernel.org>
Date:   Fri Dec 10 14:46:25 2021 -0800

    mm/damon/core: fix fake load reports due to uninterruptible sleeps
    
    commit 70e9274805fccfd175d0431a947bfd11ee7df40e upstream.
    
    Because DAMON sleeps in uninterruptible mode, /proc/loadavg reports fake
    load while DAMON is turned on, though it is doing nothing.  This can
    confuse users[1].  To avoid the case, this commit makes DAMON sleeps in
    idle mode.
    
    [1] https://lore.kernel.org/all/11868371.O9o76ZdvQC@natalenko.name/
    
    Link: https://lkml.kernel.org/r/20211126145015.15862-3-sj@kernel.org
    Fixes: 2224d8485492 ("mm: introduce Data Access MONitor (DAMON)")
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    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 5a960e533c2a0499f5f7ae6b6962fff847dacf74
Author: SeongJae Park <sj@kernel.org>
Date:   Fri Dec 10 14:46:22 2021 -0800

    timers: implement usleep_idle_range()
    
    commit e4779015fd5d2fb8390c258268addff24d6077c7 upstream.
    
    Patch series "mm/damon: Fix fake /proc/loadavg reports", v3.
    
    This patchset fixes DAMON's fake load report issue.  The first patch
    makes yet another variant of usleep_range() for this fix, and the second
    patch fixes the issue of DAMON by making it using the newly introduced
    function.
    
    This patch (of 2):
    
    Some kernel threads such as DAMON could need to repeatedly sleep in
    micro seconds level.  Because usleep_range() sleeps in uninterruptible
    state, however, such threads would make /proc/loadavg reports fake load.
    
    To help such cases, this commit implements a variant of usleep_range()
    called usleep_idle_range().  It is same to usleep_range() but sets the
    state of the current task as TASK_IDLE while sleeping.
    
    Link: https://lkml.kernel.org/r/20211126145015.15862-1-sj@kernel.org
    Link: https://lkml.kernel.org/r/20211126145015.15862-2-sj@kernel.org
    Signed-off-by: SeongJae Park <sj@kernel.org>
    Suggested-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Cc: John Stultz <john.stultz@linaro.org>
    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 64d320dcf1f1b446bf83ecf50db5c2ee78f9d777
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Thu Dec 9 11:29:37 2021 +0100

    KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush hypercall
    
    commit 1ebfaa11ebb5b603a3c3f54b2e84fcf1030f5a14 upstream.
    
    Prior to commit 0baedd792713 ("KVM: x86: make Hyper-V PV TLB flush use
    tlb_flush_guest()"), kvm_hv_flush_tlb() was using 'KVM_REQ_TLB_FLUSH |
    KVM_REQUEST_NO_WAKEUP' when making a request to flush TLBs on other vCPUs
    and KVM_REQ_TLB_FLUSH is/was defined as:
    
     (0 | KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
    
    so KVM_REQUEST_WAIT was lost. Hyper-V TLFS, however, requires that
    "This call guarantees that by the time control returns back to the
    caller, the observable effects of all flushes on the specified virtual
    processors have occurred." and without KVM_REQUEST_WAIT there's a small
    chance that the vCPU making the TLB flush will resume running before
    all IPIs get delivered to other vCPUs and a stale mapping can get read
    there.
    
    Fix the issue by adding KVM_REQUEST_WAIT flag to KVM_REQ_TLB_FLUSH_GUEST:
    kvm_hv_flush_tlb() is the sole caller which uses it for
    kvm_make_all_cpus_request()/kvm_make_vcpus_request_mask() where
    KVM_REQUEST_WAIT makes a difference.
    
    Cc: stable@kernel.org
    Fixes: 0baedd792713 ("KVM: x86: make Hyper-V PV TLB flush use tlb_flush_guest()")
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20211209102937.584397-1-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21cc93f6df63e3ed3458dd20c4266abb436921f4
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Dec 7 22:09:19 2021 +0000

    KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
    
    commit 3244867af8c065e51969f1bffe732d3ebfd9a7d2 upstream.
    
    Do not bail early if there are no bits set in the sparse banks for a
    non-sparse, a.k.a. "all CPUs", IPI request.  Per the Hyper-V spec, it is
    legal to have a variable length of '0', e.g. VP_SET's BankContents in
    this case, if the request can be serviced without the extra info.
    
      It is possible that for a given invocation of a hypercall that does
      accept variable sized input headers that all the header input fits
      entirely within the fixed size header. In such cases the variable sized
      input header is zero-sized and the corresponding bits in the hypercall
      input should be set to zero.
    
    Bailing early results in KVM failing to send IPIs to all CPUs as expected
    by the guest.
    
    Fixes: 214ff83d4473 ("KVM: x86: hyperv: implement PV IPI send hypercalls")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20211207220926.718794-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eea80da3472bc3e4bf11f1baf18962df4207f732
Author: Sean Christopherson <seanjc@google.com>
Date:   Mon Oct 25 13:13:10 2021 -0700

    KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit
    
    commit d07898eaf39909806128caccb6ebd922ee3edd69 upstream.
    
    Replace a WARN with a comment to call out that userspace can modify RCX
    during an exit to userspace to handle string I/O.  KVM doesn't actually
    support changing the rep count during an exit, i.e. the scenario can be
    ignored, but the WARN needs to go as it's trivial to trigger from
    userspace.
    
    Cc: stable@vger.kernel.org
    Fixes: 3b27de271839 ("KVM: x86: split the two parts of emulator_pio_in")
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20211025201311.1881846-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6c37e679631761f8f2db0abb214d9e4aec0b036
Author: Louis Amas <louis.amas@eho.link>
Date:   Tue Dec 7 15:34:22 2021 +0100

    net: mvpp2: fix XDP rx queues registering
    
    commit a50e659b2a1be14784e80f8492aab177e67c53a2 upstream.
    
    The registration of XDP queue information is incorrect because the
    RX queue id we use is invalid. When port->id == 0 it appears to works
    as expected yet it's no longer the case when port->id != 0.
    
    The problem arised while using a recent kernel version on the
    MACCHIATOBin. This board has several ports:
     * eth0 and eth1 are 10Gbps interfaces ; both ports has port->id == 0;
     * eth2 is a 1Gbps interface with port->id != 0.
    
    Code from xdp-tutorial (more specifically advanced03-AF_XDP) was used
    to test packet capture and injection on all these interfaces. The XDP
    kernel was simplified to:
    
            SEC("xdp_sock")
            int xdp_sock_prog(struct xdp_md *ctx)
            {
                    int index = ctx->rx_queue_index;
    
                    /* A set entry here means that the correspnding queue_id
                    * has an active AF_XDP socket bound to it. */
                    if (bpf_map_lookup_elem(&xsks_map, &index))
                            return bpf_redirect_map(&xsks_map, index, 0);
    
                    return XDP_PASS;
            }
    
    Starting the program using:
    
            ./af_xdp_user -d DEV
    
    Gives the following result:
    
     * eth0 : ok
     * eth1 : ok
     * eth2 : no capture, no injection
    
    Investigating the issue shows that XDP rx queues for eth2 are wrong:
    XDP expects their id to be in the range [0..3] but we found them to be
    in the range [32..35].
    
    Trying to force rx queue ids using:
    
            ./af_xdp_user -d eth2 -Q 32
    
    fails as expected (we shall not have more than 4 queues).
    
    When we register the XDP rx queue information (using
    xdp_rxq_info_reg() in function mvpp2_rxq_init()) we tell it to use
    rxq->id as the queue id. This value is computed as:
    
            rxq->id = port->id * max_rxq_count + queue_id
    
    where max_rxq_count depends on the device version. In the MACCHIATOBin
    case, this value is 32, meaning that rx queues on eth2 are numbered
    from 32 to 35 - there are four of them.
    
    Clearly, this is not the per-port queue id that XDP is expecting:
    it wants a value in the range [0..3]. It shall directly use queue_id
    which is stored in rxq->logic_rxq -- so let's use that value instead.
    
    rxq->id is left untouched ; its value is indeed valid but it should
    not be used in this context.
    
    This is consistent with the remaining part of the code in
    mvpp2_rxq_init().
    
    With this change, packet capture is working as expected on all the
    MACCHIATOBin ports.
    
    Fixes: b27db2274ba8 ("mvpp2: use page_pool allocator")
    Signed-off-by: Louis Amas <louis.amas@eho.link>
    Signed-off-by: Emmanuel Deloget <emmanuel.deloget@eho.link>
    Reviewed-by: Marcin Wojtas <mw@semihalf.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Link: https://lore.kernel.org/r/20211207143423.916334-1-louis.amas@eho.link
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d86216dfda7c98375f809e26a30bfdaaba21d46e
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 9 00:49:37 2021 -0800

    net/sched: fq_pie: prevent dismantle issue
    
    commit 61c2402665f1e10c5742033fce18392e369931d7 upstream.
    
    For some reason, fq_pie_destroy() did not copy
    working code from pie_destroy() and other qdiscs,
    thus causing elusive bug.
    
    Before calling del_timer_sync(&q->adapt_timer),
    we need to ensure timer will not rearm itself.
    
    rcu: INFO: rcu_preempt self-detected stall on CPU
    rcu:    0-....: (4416 ticks this GP) idle=60d/1/0x4000000000000000 softirq=10433/10434 fqs=2579
            (t=10501 jiffies g=13085 q=3989)
    NMI backtrace for cpu 0
    CPU: 0 PID: 13 Comm: ksoftirqd/0 Not tainted 5.16.0-rc4-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     nmi_cpu_backtrace.cold+0x47/0x144 lib/nmi_backtrace.c:111
     nmi_trigger_cpumask_backtrace+0x1b3/0x230 lib/nmi_backtrace.c:62
     trigger_single_cpu_backtrace include/linux/nmi.h:164 [inline]
     rcu_dump_cpu_stacks+0x25e/0x3f0 kernel/rcu/tree_stall.h:343
     print_cpu_stall kernel/rcu/tree_stall.h:627 [inline]
     check_cpu_stall kernel/rcu/tree_stall.h:711 [inline]
     rcu_pending kernel/rcu/tree.c:3878 [inline]
     rcu_sched_clock_irq.cold+0x9d/0x746 kernel/rcu/tree.c:2597
     update_process_times+0x16d/0x200 kernel/time/timer.c:1785
     tick_sched_handle+0x9b/0x180 kernel/time/tick-sched.c:226
     tick_sched_timer+0x1b0/0x2d0 kernel/time/tick-sched.c:1428
     __run_hrtimer kernel/time/hrtimer.c:1685 [inline]
     __hrtimer_run_queues+0x1c0/0xe50 kernel/time/hrtimer.c:1749
     hrtimer_interrupt+0x31c/0x790 kernel/time/hrtimer.c:1811
     local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1086 [inline]
     __sysvec_apic_timer_interrupt+0x146/0x530 arch/x86/kernel/apic/apic.c:1103
     sysvec_apic_timer_interrupt+0x8e/0xc0 arch/x86/kernel/apic/apic.c:1097
     </IRQ>
     <TASK>
     asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:638
    RIP: 0010:write_comp_data kernel/kcov.c:221 [inline]
    RIP: 0010:__sanitizer_cov_trace_const_cmp1+0x1d/0x80 kernel/kcov.c:273
    Code: 54 c8 20 48 89 10 c3 66 0f 1f 44 00 00 53 41 89 fb 41 89 f1 bf 03 00 00 00 65 48 8b 0c 25 40 70 02 00 48 89 ce 4c 8b 54 24 08 <e8> 4e f7 ff ff 84 c0 74 51 48 8b 81 88 15 00 00 44 8b 81 84 15 00
    RSP: 0018:ffffc90000d27b28 EFLAGS: 00000246
    RAX: 0000000000000000 RBX: ffff888064bf1bf0 RCX: ffff888011928000
    RDX: ffff888011928000 RSI: ffff888011928000 RDI: 0000000000000003
    RBP: ffff888064bf1c28 R08: 0000000000000000 R09: 0000000000000000
    R10: ffffffff875d8295 R11: 0000000000000000 R12: 0000000000000000
    R13: ffff8880783dd300 R14: 0000000000000000 R15: 0000000000000000
     pie_calculate_probability+0x405/0x7c0 net/sched/sch_pie.c:418
     fq_pie_timer+0x170/0x2a0 net/sched/sch_fq_pie.c:383
     call_timer_fn+0x1a5/0x6b0 kernel/time/timer.c:1421
     expire_timers kernel/time/timer.c:1466 [inline]
     __run_timers.part.0+0x675/0xa20 kernel/time/timer.c:1734
     __run_timers kernel/time/timer.c:1715 [inline]
     run_timer_softirq+0xb3/0x1d0 kernel/time/timer.c:1747
     __do_softirq+0x29b/0x9c2 kernel/softirq.c:558
     run_ksoftirqd kernel/softirq.c:921 [inline]
     run_ksoftirqd+0x2d/0x60 kernel/softirq.c:913
     smpboot_thread_fn+0x645/0x9c0 kernel/smpboot.c:164
     kthread+0x405/0x4f0 kernel/kthread.c:327
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
     </TASK>
    
    Fixes: ec97ecf1ebe4 ("net: sched: add Flow Queue PIE packet scheduler")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Mohit P. Tahiliani <tahiliani@nitk.edu.in>
    Cc: Sachin D. Patil <sdp.sachin@gmail.com>
    Cc: V. Saicharan <vsaicharan1998@gmail.com>
    Cc: Mohit Bhasi <mohitbhasi1998@gmail.com>
    Cc: Leslie Monis <lesliemonis@gmail.com>
    Cc: Gautam Ramakrishnan <gautamramk@gmail.com>
    Link: https://lore.kernel.org/r/20211209084937.3500020-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 973a0373e88cc19129bd6ef0ec193040535397d9
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Thu Dec 9 12:05:40 2021 +0100

    net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering
    
    commit e8b1d7698038e76363859fb47ae0a262080646f5 upstream.
    
    Avoid a memory leak if there is not a CPU port defined.
    
    Fixes: 8d5f7954b7c8 ("net: dsa: felix: break at first CPU port during init and teardown")
    Addresses-Coverity-ID: 1492897 ("Resource leak")
    Addresses-Coverity-ID: 1492899 ("Resource leak")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20211209110538.11585-1-jose.exposito89@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfc017140aa7a79fb67a08f4038d559f15875554
Author: Ameer Hamza <amhamza.mgc@gmail.com>
Date:   Thu Dec 9 09:15:52 2021 +0500

    net: dsa: mv88e6xxx: error handling for serdes_power functions
    
    commit 0416e7af2369b0d12a28dea8d30b104df9a6953d upstream.
    
    Added default case to handle undefined cmode scenario in
    mv88e6393x_serdes_power() and mv88e6393x_serdes_power() methods.
    
    Addresses-Coverity: 1494644 ("Uninitialized scalar variable")
    Fixes: 21635d9203e1c (net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X)
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Ameer Hamza <amhamza.mgc@gmail.com>
    Link: https://lore.kernel.org/r/20211209041552.9810-1-amhamza.mgc@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76e414aa2a24fe7025693d6cc95c7cfddac256c5
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Fri Dec 3 11:31:06 2021 +0800

    net: bcm4908: Handle dma_set_coherent_mask error codes
    
    commit 128f6ec95a282b2d8bc1041e59bf65810703fa44 upstream.
    
    The return value of dma_set_coherent_mask() is not always 0.
    To catch the exception in case that dma is not support the mask.
    
    Fixes: 9d61d138ab30 ("net: broadcom: rename BCM4908 driver & update DT binding")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe30b70ca84da9c4aca85c03ad86e7a9b89c5ded
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Dec 5 11:28:22 2021 -0800

    devlink: fix netns refcount leak in devlink_nl_cmd_reload()
    
    commit 4dbb0dad8e63fcd0b5a117c2861d2abe7ff5f186 upstream.
    
    While preparing my patch series adding netns refcount tracking,
    I spotted bugs in devlink_nl_cmd_reload()
    
    Some error paths forgot to release a refcount on a netns.
    
    To fix this, we can reduce the scope of get_net()/put_net()
    section around the call to devlink_reload().
    
    Fixes: ccdf07219da6 ("devlink: Add reload action option to devlink reload command")
    Fixes: dc64cc7c6310 ("devlink: Add devlink reload limit option")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Moshe Shemesh <moshe@mellanox.com>
    Cc: Jacob Keller <jacob.e.keller@intel.com>
    Cc: Jiri Pirko <jiri@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Link: https://lore.kernel.org/r/20211205192822.1741045-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9a22d3ed85500d5807c1012160abe6bdcd4ee1c
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Mon Nov 29 14:19:52 2021 -0500

    IB/hfi1: Correct guard on eager buffer deallocation
    
    commit 9292f8f9a2ac42eb320bced7153aa2e63d8cc13a upstream.
    
    The code tests the dma address which legitimately can be 0.
    
    The code should test the kernel logical address to avoid leaking eager
    buffer allocations that happen to map to a dma address of 0.
    
    Fixes: 60368186fd85 ("IB/hfi1: Fix user-space buffers mapping with IOMMU enabled")
    Link: https://lore.kernel.org/r/20211129191952.101968.17137.stgit@awfm-01.cornelisnetworks.com
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20791287eda15cb7c18505fcf70ac3f5c77e059a
Author: Michal Maloszewski <michal.maloszewski@intel.com>
Date:   Tue Oct 26 12:59:09 2021 +0000

    iavf: Fix reporting when setting descriptor count
    
    commit 1a1aa356ddf3f16539f5962c01c5f702686dfc15 upstream.
    
    iavf_set_ringparams doesn't communicate to the user that
    
    1. The user requested descriptor count is out of range. Instead it
       just quietly sets descriptors to the "clamped" value and calls it
       done. This makes it look an invalid value was successfully set as
       the descriptor count when this isn't actually true.
    
    2. The user provided descriptor count needs to be inflated for alignment
       reasons.
    
    This behavior is confusing. The ice driver has already addressed this
    by rejecting invalid values for descriptor count and
    messaging for alignment adjustments.
    Do the same thing here by adding the error and info messages.
    
    Fixes: fbb7ddfef253 ("i40evf: core ethtool functionality")
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0ed80e3ca8888c905318cf0390d8e00c1534571
Author: Mitch Williams <mitch.a.williams@intel.com>
Date:   Fri Jun 4 09:53:28 2021 -0700

    iavf: restore MSI state on reset
    
    commit 7e4dcc13965c57869684d57a1dc6dd7be589488c upstream.
    
    If the PF experiences an FLR, the VF's MSI and MSI-X configuration will
    be conveniently and silently removed in the process. When this happens,
    reset recovery will appear to complete normally but no traffic will
    pass. The netdev watchdog will helpfully notify everyone of this issue.
    
    To prevent such public embarrassment, restore MSI configuration at every
    reset. For normal resets, this will do no harm, but for VF resets
    resulting from a PF FLR, this will keep the VF working.
    
    Fixes: 5eae00c57f5e ("i40evf: main driver core")
    Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
    Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be2b5a78a0c1eb813796eb33fadafc500a6f977e
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Dec 7 10:03:23 2021 -0800

    netfilter: conntrack: annotate data-races around ct->timeout
    
    commit 802a7dc5cf1bef06f7b290ce76d478138408d6b1 upstream.
    
    (struct nf_conn)->timeout can be read/written locklessly,
    add READ_ONCE()/WRITE_ONCE() to prevent load/store tearing.
    
    BUG: KCSAN: data-race in __nf_conntrack_alloc / __nf_conntrack_find_get
    
    write to 0xffff888132e78c08 of 4 bytes by task 6029 on cpu 0:
     __nf_conntrack_alloc+0x158/0x280 net/netfilter/nf_conntrack_core.c:1563
     init_conntrack+0x1da/0xb30 net/netfilter/nf_conntrack_core.c:1635
     resolve_normal_ct+0x502/0x610 net/netfilter/nf_conntrack_core.c:1746
     nf_conntrack_in+0x1c5/0x88f net/netfilter/nf_conntrack_core.c:1901
     ipv6_conntrack_local+0x19/0x20 net/netfilter/nf_conntrack_proto.c:414
     nf_hook_entry_hookfn include/linux/netfilter.h:142 [inline]
     nf_hook_slow+0x72/0x170 net/netfilter/core.c:619
     nf_hook include/linux/netfilter.h:262 [inline]
     NF_HOOK include/linux/netfilter.h:305 [inline]
     ip6_xmit+0xa3a/0xa60 net/ipv6/ip6_output.c:324
     inet6_csk_xmit+0x1a2/0x1e0 net/ipv6/inet6_connection_sock.c:135
     __tcp_transmit_skb+0x132a/0x1840 net/ipv4/tcp_output.c:1402
     tcp_transmit_skb net/ipv4/tcp_output.c:1420 [inline]
     tcp_write_xmit+0x1450/0x4460 net/ipv4/tcp_output.c:2680
     __tcp_push_pending_frames+0x68/0x1c0 net/ipv4/tcp_output.c:2864
     tcp_push_pending_frames include/net/tcp.h:1897 [inline]
     tcp_data_snd_check+0x62/0x2e0 net/ipv4/tcp_input.c:5452
     tcp_rcv_established+0x880/0x10e0 net/ipv4/tcp_input.c:5947
     tcp_v6_do_rcv+0x36e/0xa50 net/ipv6/tcp_ipv6.c:1521
     sk_backlog_rcv include/net/sock.h:1030 [inline]
     __release_sock+0xf2/0x270 net/core/sock.c:2768
     release_sock+0x40/0x110 net/core/sock.c:3300
     sk_stream_wait_memory+0x435/0x700 net/core/stream.c:145
     tcp_sendmsg_locked+0xb85/0x25a0 net/ipv4/tcp.c:1402
     tcp_sendmsg+0x2c/0x40 net/ipv4/tcp.c:1440
     inet6_sendmsg+0x5f/0x80 net/ipv6/af_inet6.c:644
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     __sys_sendto+0x21e/0x2c0 net/socket.c:2036
     __do_sys_sendto net/socket.c:2048 [inline]
     __se_sys_sendto net/socket.c:2044 [inline]
     __x64_sys_sendto+0x74/0x90 net/socket.c:2044
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff888132e78c08 of 4 bytes by task 17446 on cpu 1:
     nf_ct_is_expired include/net/netfilter/nf_conntrack.h:286 [inline]
     ____nf_conntrack_find net/netfilter/nf_conntrack_core.c:776 [inline]
     __nf_conntrack_find_get+0x1c7/0xac0 net/netfilter/nf_conntrack_core.c:807
     resolve_normal_ct+0x273/0x610 net/netfilter/nf_conntrack_core.c:1734
     nf_conntrack_in+0x1c5/0x88f net/netfilter/nf_conntrack_core.c:1901
     ipv6_conntrack_local+0x19/0x20 net/netfilter/nf_conntrack_proto.c:414
     nf_hook_entry_hookfn include/linux/netfilter.h:142 [inline]
     nf_hook_slow+0x72/0x170 net/netfilter/core.c:619
     nf_hook include/linux/netfilter.h:262 [inline]
     NF_HOOK include/linux/netfilter.h:305 [inline]
     ip6_xmit+0xa3a/0xa60 net/ipv6/ip6_output.c:324
     inet6_csk_xmit+0x1a2/0x1e0 net/ipv6/inet6_connection_sock.c:135
     __tcp_transmit_skb+0x132a/0x1840 net/ipv4/tcp_output.c:1402
     __tcp_send_ack+0x1fd/0x300 net/ipv4/tcp_output.c:3956
     tcp_send_ack+0x23/0x30 net/ipv4/tcp_output.c:3962
     __tcp_ack_snd_check+0x2d8/0x510 net/ipv4/tcp_input.c:5478
     tcp_ack_snd_check net/ipv4/tcp_input.c:5523 [inline]
     tcp_rcv_established+0x8c2/0x10e0 net/ipv4/tcp_input.c:5948
     tcp_v6_do_rcv+0x36e/0xa50 net/ipv6/tcp_ipv6.c:1521
     sk_backlog_rcv include/net/sock.h:1030 [inline]
     __release_sock+0xf2/0x270 net/core/sock.c:2768
     release_sock+0x40/0x110 net/core/sock.c:3300
     tcp_sendpage+0x94/0xb0 net/ipv4/tcp.c:1114
     inet_sendpage+0x7f/0xc0 net/ipv4/af_inet.c:833
     rds_tcp_xmit+0x376/0x5f0 net/rds/tcp_send.c:118
     rds_send_xmit+0xbed/0x1500 net/rds/send.c:367
     rds_send_worker+0x43/0x200 net/rds/threads.c:200
     process_one_work+0x3fc/0x980 kernel/workqueue.c:2298
     worker_thread+0x616/0xa70 kernel/workqueue.c:2445
     kthread+0x2c7/0x2e0 kernel/kthread.c:327
     ret_from_fork+0x1f/0x30
    
    value changed: 0x00027cc2 -> 0x00000000
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 17446 Comm: kworker/u4:5 Tainted: G        W         5.16.0-rc4-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: krdsd rds_send_worker
    
    Note: I chose an arbitrary commit for the Fixes: tag,
    because I do not think we need to backport this fix to very old kernels.
    
    Fixes: e37542ba111f ("netfilter: conntrack: avoid possible false sharing")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2cd7c7f8f83b057fefa0b0e69a4a66969ffb8f5
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Nov 30 11:34:04 2021 +0100

    netfilter: nft_exthdr: break evaluation if setting TCP option fails
    
    commit 962e5a40358787105f126ab1dc01604da3d169e9 upstream.
    
    Break rule evaluation on malformed TCP options.
    
    Fixes: 99d1712bc41c ("netfilter: exthdr: tcp option set support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6182c63d827ed556bd5a493b63ddc7b2c999ae5
Author: Jianguo Wu <wujianguo@chinatelecom.cn>
Date:   Wed Dec 8 18:03:33 2021 +0800

    udp: using datalen to cap max gso segments
    
    commit 158390e45612ef0fde160af0826f1740c36daf21 upstream.
    
    The max number of UDP gso segments is intended to cap to UDP_MAX_SEGMENTS,
    this is checked in udp_send_skb():
    
        if (skb->len > cork->gso_size * UDP_MAX_SEGMENTS) {
            kfree_skb(skb);
            return -EINVAL;
        }
    
    skb->len contains network and transport header len here, we should use
    only data len instead.
    
    Fixes: bec1f6f69736 ("udp: generate gso with UDP_SEGMENT")
    Signed-off-by: Jianguo Wu <wujianguo@chinatelecom.cn>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/900742e5-81fb-30dc-6e0b-375c6cdd7982@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98adb2bbfa407c9290bda299d4c6f7a1c4ebd5e1
Author: Andrea Mayer <andrea.mayer@uniroma2.it>
Date:   Wed Dec 8 20:54:09 2021 +0100

    seg6: fix the iif in the IPv6 socket control block
    
    commit ae68d93354e5bf5191ee673982251864ea24dd5c upstream.
    
    When an IPv4 packet is received, the ip_rcv_core(...) sets the receiving
    interface index into the IPv4 socket control block (v5.16-rc4,
    net/ipv4/ip_input.c line 510):
    
        IPCB(skb)->iif = skb->skb_iif;
    
    If that IPv4 packet is meant to be encapsulated in an outer IPv6+SRH
    header, the seg6_do_srh_encap(...) performs the required encapsulation.
    In this case, the seg6_do_srh_encap function clears the IPv6 socket control
    block (v5.16-rc4 net/ipv6/seg6_iptunnel.c line 163):
    
        memset(IP6CB(skb), 0, sizeof(*IP6CB(skb)));
    
    The memset(...) was introduced in commit ef489749aae5 ("ipv6: sr: clear
    IP6CB(skb) on SRH ip4ip6 encapsulation") a long time ago (2019-01-29).
    
    Since the IPv6 socket control block and the IPv4 socket control block share
    the same memory area (skb->cb), the receiving interface index info is lost
    (IP6CB(skb)->iif is set to zero).
    
    As a side effect, that condition triggers a NULL pointer dereference if
    commit 0857d6f8c759 ("ipv6: When forwarding count rx stats on the orig
    netdev") is applied.
    
    To fix that issue, we set the IP6CB(skb)->iif with the index of the
    receiving interface once again.
    
    Fixes: ef489749aae5 ("ipv6: sr: clear IP6CB(skb) on SRH ip4ip6 encapsulation")
    Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211208195409.12169-1-andrea.mayer@uniroma2.it
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f707820c09239d6f67699d9b2ff57863cc7905b0
Author: Jianglei Nie <niejianglei2021@163.com>
Date:   Thu Dec 9 14:15:11 2021 +0800

    nfp: Fix memory leak in nfp_cpp_area_cache_add()
    
    commit c56c96303e9289cc34716b1179597b6f470833de upstream.
    
    In line 800 (#1), nfp_cpp_area_alloc() allocates and initializes a
    CPP area structure. But in line 807 (#2), when the cache is allocated
    failed, this CPP area structure is not freed, which will result in
    memory leak.
    
    We can fix it by freeing the CPP area when the cache is allocated
    failed (#2).
    
    792 int nfp_cpp_area_cache_add(struct nfp_cpp *cpp, size_t size)
    793 {
    794     struct nfp_cpp_area_cache *cache;
    795     struct nfp_cpp_area *area;
    
    800     area = nfp_cpp_area_alloc(cpp, NFP_CPP_ID(7, NFP_CPP_ACTION_RW, 0),
    801                               0, size);
            // #1: allocates and initializes
    
    802     if (!area)
    803             return -ENOMEM;
    
    805     cache = kzalloc(sizeof(*cache), GFP_KERNEL);
    806     if (!cache)
    807             return -ENOMEM; // #2: missing free
    
    817     return 0;
    818 }
    
    Fixes: 4cb584e0ee7d ("nfp: add CPP access core")
    Signed-off-by: Jianglei Nie <niejianglei2021@163.com>
    Acked-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20211209061511.122535-1-niejianglei2021@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6dada2646a0abd81f4c1141a47f2786db6f85cd2
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 2 18:27:18 2021 -0800

    bonding: make tx_rebalance_counter an atomic
    
    commit dac8e00fb640e9569cdeefd3ce8a75639e5d0711 upstream.
    
    KCSAN reported a data-race [1] around tx_rebalance_counter
    which can be accessed from different contexts, without
    the protection of a lock/mutex.
    
    [1]
    BUG: KCSAN: data-race in bond_alb_init_slave / bond_alb_monitor
    
    write to 0xffff888157e8ca24 of 4 bytes by task 7075 on cpu 0:
     bond_alb_init_slave+0x713/0x860 drivers/net/bonding/bond_alb.c:1613
     bond_enslave+0xd94/0x3010 drivers/net/bonding/bond_main.c:1949
     do_set_master net/core/rtnetlink.c:2521 [inline]
     __rtnl_newlink net/core/rtnetlink.c:3475 [inline]
     rtnl_newlink+0x1298/0x13b0 net/core/rtnetlink.c:3506
     rtnetlink_rcv_msg+0x745/0x7e0 net/core/rtnetlink.c:5571
     netlink_rcv_skb+0x14e/0x250 net/netlink/af_netlink.c:2491
     rtnetlink_rcv+0x18/0x20 net/core/rtnetlink.c:5589
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x5fc/0x6c0 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x6e1/0x7d0 net/netlink/af_netlink.c:1916
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     ____sys_sendmsg+0x39a/0x510 net/socket.c:2409
     ___sys_sendmsg net/socket.c:2463 [inline]
     __sys_sendmsg+0x195/0x230 net/socket.c:2492
     __do_sys_sendmsg net/socket.c:2501 [inline]
     __se_sys_sendmsg net/socket.c:2499 [inline]
     __x64_sys_sendmsg+0x42/0x50 net/socket.c:2499
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff888157e8ca24 of 4 bytes by task 1082 on cpu 1:
     bond_alb_monitor+0x8f/0xc00 drivers/net/bonding/bond_alb.c:1511
     process_one_work+0x3fc/0x980 kernel/workqueue.c:2298
     worker_thread+0x616/0xa70 kernel/workqueue.c:2445
     kthread+0x2c7/0x2e0 kernel/kthread.c:327
     ret_from_fork+0x1f/0x30
    
    value changed: 0x00000001 -> 0x00000064
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 1082 Comm: kworker/u4:3 Not tainted 5.16.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: bond1 bond_alb_monitor
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfd719f04267108f5f5bf802b9d7de69e99a99f9
Author: Antoine Tenart <atenart@kernel.org>
Date:   Fri Dec 3 11:13:18 2021 +0100

    ethtool: do not perform operations on net devices being unregistered
    
    commit dde91ccfa25fd58f64c397d91b81a4b393100ffa upstream.
    
    There is a short period between a net device starts to be unregistered
    and when it is actually gone. In that time frame ethtool operations
    could still be performed, which might end up in unwanted or undefined
    behaviours[1].
    
    Do not allow ethtool operations after a net device starts its
    unregistration. This patch targets the netlink part as the ioctl one
    isn't affected: the reference to the net device is taken and the
    operation is executed within an rtnl lock section and the net device
    won't be found after unregister.
    
    [1] For example adding Tx queues after unregister ends up in NULL
        pointer exceptions and UaFs, such as:
    
          BUG: KASAN: use-after-free in kobject_get+0x14/0x90
          Read of size 1 at addr ffff88801961248c by task ethtool/755
    
          CPU: 0 PID: 755 Comm: ethtool Not tainted 5.15.0-rc6+ #778
          Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-4.fc34 04/014
          Call Trace:
           dump_stack_lvl+0x57/0x72
           print_address_description.constprop.0+0x1f/0x140
           kasan_report.cold+0x7f/0x11b
           kobject_get+0x14/0x90
           kobject_add_internal+0x3d1/0x450
           kobject_init_and_add+0xba/0xf0
           netdev_queue_update_kobjects+0xcf/0x200
           netif_set_real_num_tx_queues+0xb4/0x310
           veth_set_channels+0x1c3/0x550
           ethnl_set_channels+0x524/0x610
    
    Fixes: 041b1c5d4a53 ("ethtool: helper functions for netlink interface")
    Suggested-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Link: https://lore.kernel.org/r/20211203101318.435618-1-atenart@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a7e323edb865ebf1223f17fe21072ab5d272d76
Author: Jesse Brandeburg <jesse.brandeburg@intel.com>
Date:   Fri Oct 22 17:28:17 2021 -0700

    ice: ignore dropped packets during init
    
    commit 28dc1b86f8ea9fd6f4c9e0b363db73ecabf84e22 upstream.
    
    If the hardware is constantly receiving unicast or broadcast packets
    during driver load, the device previously counted many GLV_RDPC (VSI
    dropped packets) events during init. This causes confusing dropped
    packet statistics during driver load. The dropped packets counter
    incrementing does stop once the driver finishes loading.
    
    Avoid this problem by baselining our statistics at the end of driver
    open instead of the end of probe.
    
    Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4fb67fd1adf87be9e61486da8bddcc22e9c717c
Author: Maxim Mikityanskiy <maximmi@nvidia.com>
Date:   Tue Nov 30 20:16:07 2021 +0200

    bpf: Fix the off-by-two error in range markings
    
    commit 2fa7d94afc1afbb4d702760c058dc2d7ed30f226 upstream.
    
    The first commit cited below attempts to fix the off-by-one error that
    appeared in some comparisons with an open range. Due to this error,
    arithmetically equivalent pieces of code could get different verdicts
    from the verifier, for example (pseudocode):
    
      // 1. Passes the verifier:
      if (data + 8 > data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
      // 2. Rejected by the verifier (should still pass):
      if (data + 7 >= data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
    The attempted fix, however, shifts the range by one in a wrong
    direction, so the bug not only remains, but also such piece of code
    starts failing in the verifier:
    
      // 3. Rejected by the verifier, but the check is stricter than in #1.
      if (data + 8 >= data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
    The change performed by that fix converted an off-by-one bug into
    off-by-two. The second commit cited below added the BPF selftests
    written to ensure than code chunks like #3 are rejected, however,
    they should be accepted.
    
    This commit fixes the off-by-two error by adjusting new_range in the
    right direction and fixes the tests by changing the range into the
    one that should actually fail.
    
    Fixes: fb2a311a31d3 ("bpf: fix off by one for range markings with L{T, E} patterns")
    Fixes: b37242c773b2 ("bpf: add test cases to bpf selftests to cover all access tests")
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211130181607.593149-1-maximmi@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e76da2e8a09a4ee289e0e90e61092f84feaeb120
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Sat Nov 27 17:32:00 2021 +0100

    bpf: Make sure bpf_disable_instrumentation() is safe vs preemption.
    
    commit 79364031c5b4365ca28ac0fa00acfab5bf465be1 upstream.
    
    The initial implementation of migrate_disable() for mainline was a
    wrapper around preempt_disable(). RT kernels substituted this with a
    real migrate disable implementation.
    
    Later on mainline gained true migrate disable support, but neither
    documentation nor affected code were updated.
    
    Remove stale comments claiming that migrate_disable() is PREEMPT_RT only.
    
    Don't use __this_cpu_inc() in the !PREEMPT_RT path because preemption is
    not disabled and the RMW operation can be preempted.
    
    Fixes: 74d862b682f51 ("sched: Make migrate_disable/enable() independent of RT")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211127163200.10466-3-bigeasy@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c983fd7cf97ee1329c5ce70674abf06b99c2222
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Fri Nov 19 10:14:17 2021 -0800

    bpf, sockmap: Attach map progs to psock early for feature probes
    
    commit 38207a5e81230d6ffbdd51e5fa5681be5116dcae upstream.
    
    When a TCP socket is added to a sock map we look at the programs attached
    to the map to determine what proto op hooks need to be changed. Before
    the patch in the 'fixes' tag there were only two categories -- the empty
    set of programs or a TX policy. In any case the base set handled the
    receive case.
    
    After the fix we have an optimized program for receive that closes a small,
    but possible, race on receive. This program is loaded only when the map the
    psock is being added to includes a RX policy. Otherwise, the race is not
    possible so we don't need to handle the race condition.
    
    In order for the call to sk_psock_init() to correctly evaluate the above
    conditions all progs need to be set in the psock before the call. However,
    in the current code this is not the case. We end up evaluating the
    requirements on the old prog state. If your psock is attached to multiple
    maps -- for example a tx map and rx map -- then the second update would pull
    in the correct maps. But, the other pattern with a single rx enabled map
    the correct receive hooks are not used. The result is the race fixed by the
    patch in the fixes tag below may still be seen in this case.
    
    To fix we simply set all psock->progs before doing the call into
    sock_map_init(). With this the init() call gets the full list of programs
    and chooses the correct proto ops on the first iteration instead of
    requiring the second update to pull them in. This fixes the race case when
    only a single map is used.
    
    Fixes: c5d2177a72a16 ("bpf, sockmap: Fix race in ingress receive verdict with redirect to self")
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211119181418.353932-2-john.fastabend@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c817dcb2a65b72eb0fe3f335631fbb32651c5479
Author: Björn Töpel <bjorn@kernel.org>
Date:   Wed Nov 17 13:57:08 2021 +0100

    bpf, x86: Fix "no previous prototype" warning
    
    commit f45b2974cc0ae959a4c503a071e38a56bd64372f upstream.
    
    The arch_prepare_bpf_dispatcher function does not have a prototype, and
    yields the following warning when W=1 is enabled for the kernel build.
    
      >> arch/x86/net/bpf_jit_comp.c:2188:5: warning: no previous \
      prototype for 'arch_prepare_bpf_dispatcher' [-Wmissing-prototypes]
            2188 | int arch_prepare_bpf_dispatcher(void *image, s64 *funcs, \
            int num_funcs)
                 |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Remove the warning by adding a function declaration to include/linux/bpf.h.
    
    Fixes: 75ccbef6369e ("bpf: Introduce BPF dispatcher")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Björn Töpel <bjorn@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211117125708.769168-1-bjorn@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8193cebf753360f6f96df967ad6cabaadc30bc4
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Nov 26 15:36:12 2021 +0100

    vrf: don't run conntrack on vrf with !dflt qdisc
    
    commit d43b75fbc23f0ac1ef9c14a5a166d3ccb761a451 upstream.
    
    After the below patch, the conntrack attached to skb is set to "notrack" in
    the context of vrf device, for locally generated packets.
    But this is true only when the default qdisc is set to the vrf device. When
    changing the qdisc, notrack is not set anymore.
    In fact, there is a shortcut in the vrf driver, when the default qdisc is
    set, see commit dcdd43c41e60 ("net: vrf: performance improvements for
    IPv4") for more details.
    
    This patch ensures that the behavior is always the same, whatever the qdisc
    is.
    
    To demonstrate the difference, a new test is added in conntrack_vrf.sh.
    
    Fixes: 8c9c296adfae ("vrf: run conntrack only in context of lower/physdev for locally generated packets")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cffab968e94e513bdcef25e11402243ce2919803
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Oct 18 14:38:13 2021 +0200

    selftests: netfilter: add a vrf+conntrack testcase
    
    commit 33b8aad21ac175eba9577a73eb62b0aa141c241c upstream.
    
    Rework the reproducer for the vrf+conntrack regression reported
    by Eugene into a selftest and also add a test for ip masquerading
    that Lahav fixed recently.
    
    With net or net-next tree, the first test fails and the latter
    two pass.
    
    With 09e856d54bda5f28 ("vrf: Reset skb conntrack connection on VRF rcv")
    reverted first test passes but the last two fail.
    
    A proper fix needs more work, for time being a revert seems to be
    the best choice, snat/masquerade did not work before the fix.
    
    Link: https://lore.kernel.org/netdev/378ca299-4474-7e9a-3d36-2350c8c98995@gmail.com/T/#m95358a31810df7392f541f99d187227bc75c9963
    Reported-by: Eugene Crosser <crosser@average.org>
    Cc: Lahav Schlesinger <lschlesinger@drivenets.com>
    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 fae9705d281091254d4a81fa2da9d22346097dca
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Thu Dec 9 09:13:07 2021 +0100

    nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done
    
    commit 4cd8371a234d051f9c9557fcbb1f8c523b1c0d10 upstream.
    
    The done() netlink callback nfc_genl_dump_ses_done() should check if
    received argument is non-NULL, because its allocation could fail earlier
    in dumpit() (nfc_genl_dump_ses()).
    
    Fixes: ac22ac466a65 ("NFC: Add a GET_SE netlink API")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211209081307.57337-1-krzysztof.kozlowski@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0159c7b266830a082f73f0a48da3d21b5936bbec
Author: Fabrizio Bertocci <fabriziobertocci@gmail.com>
Date:   Mon Nov 29 23:15:40 2021 -0500

    platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops
    
    commit 49201b90af818654c5506a0decc18e111eadcb66 upstream.
    
    On some AMD hardware laptops, the system fails communicating with the
    PMC when entering s2idle and the machine is battery powered.
    
    Hardware description: HP Pavilion Aero Laptop 13-be0097nr
    CPU: AMD Ryzen 7 5800U with Radeon Graphics
    GPU: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices,
    Inc. [AMD/ATI] Device [1002:1638] (rev c1)
    
    Detailed description of the problem (and investigation) here:
    https://gitlab.freedesktop.org/drm/amd/-/issues/1799
    
    Patch is a single line: reduce the polling delay in half, from 100uSec
    to 50uSec when waiting for a change in state from the PMC after a
    write command operation.
    
    After changing the delay, I did not see a single failure on this
    machine (I have this fix for now more than one week and s2idle worked
    every single time on battery power).
    
    Cc: stable@vger.kernel.org
    Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Fabrizio Bertocci <fabriziobertocci@gmail.com>
    Link: https://lore.kernel.org/r/CADtzkx7TdfbwtaVEXUdD6YXPey52E-nZVQNs+Z41DTx7gqMqtw@mail.gmail.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b964ecdb71d9a8f07e15427baeefb1195d854e13
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Wed Oct 20 13:02:11 2021 -0500

    x86/sme: Explicitly map new EFI memmap table as encrypted
    
    commit 1ff2fc02862d52e18fd3daabcfe840ec27e920a8 upstream.
    
    Reserving memory using efi_mem_reserve() calls into the x86
    efi_arch_mem_reserve() function. This function will insert a new EFI
    memory descriptor into the EFI memory map representing the area of
    memory to be reserved and marking it as EFI runtime memory. As part
    of adding this new entry, a new EFI memory map is allocated and mapped.
    The mapping is where a problem can occur. This new memory map is mapped
    using early_memremap() and generally mapped encrypted, unless the new
    memory for the mapping happens to come from an area of memory that is
    marked as EFI_BOOT_SERVICES_DATA memory. In this case, the new memory will
    be mapped unencrypted. However, during replacement of the old memory map,
    efi_mem_type() is disabled, so the new memory map will now be long-term
    mapped encrypted (in efi.memmap), resulting in the map containing invalid
    data and causing the kernel boot to crash.
    
    Since it is known that the area will be mapped encrypted going forward,
    explicitly map the new memory map as encrypted using early_memremap_prot().
    
    Cc: <stable@vger.kernel.org> # 4.14.x
    Fixes: 8f716c9b5feb ("x86/mm: Add support to access boot related data in the clear")
    Link: https://lore.kernel.org/all/ebf1eb2940405438a09d51d121ec0d02c8755558.1634752931.git.thomas.lendacky@amd.com/
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    [ardb: incorporate Kconfig fix by Arnd]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbf22d47bb3e922544c76fe34e26feff8c0dcae6
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Thu Dec 9 09:26:47 2021 +0000

    net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports
    
    commit 04ec4e6250e5f58b525b08f3dca45c7d7427620e upstream.
    
    Martyn Welch reports that his CPU port is unable to link where it has
    been necessary to use one of the switch ports with an internal PHY for
    the CPU port. The reason behind this is the port control register is
    left forcing the link down, preventing traffic flow.
    
    This occurs because during initialisation, phylink expects the link to
    be down, and DSA forces the link down by synthesising a call to the
    DSA drivers phylink_mac_link_down() method, but we don't touch the
    forced-link state when we later reconfigure the port.
    
    Resolve this by also unforcing the link state when we are operating in
    PHY mode and the PPU is set to poll the PHY to retrieve link status
    information.
    
    Reported-by: Martyn Welch <martyn.welch@collabora.com>
    Tested-by: Martyn Welch <martyn.welch@collabora.com>
    Fixes: 3be98b2d5fbc ("net: dsa: Down cpu/dsa ports phylink will control")
    Cc: <stable@vger.kernel.org> # 5.7: 2b29cb9e3f7f: net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's"
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1mvFhP-00F8Zb-Ul@rmk-PC.armlinux.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4b8f987a7482abe527e4ee6101b4ea1226fd46d
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Tue Dec 7 10:32:43 2021 +0000

    net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's"
    
    commit 2b29cb9e3f7f038c7f50ad2583b47caf5cb1eaf2 upstream.
    
    This commit fixes a misunderstanding in commit 4a3e0aeddf09 ("net: dsa:
    mv88e6xxx: don't use PHY_DETECT on internal PHY's").
    
    For Marvell DSA switches with the PHY_DETECT bit (for non-6250 family
    devices), controls whether the PPU polls the PHY to retrieve the link,
    speed, duplex and pause status to update the port configuration. This
    applies for both internal and external PHYs.
    
    For some switches such as 88E6352 and 88E6390X, PHY_DETECT has an
    additional function of enabling auto-media mode between the internal
    PHY and SERDES blocks depending on which first gains link.
    
    The original intention of commit 5d5b231da7ac (net: dsa: mv88e6xxx: use
    PHY_DETECT in mac_link_up/mac_link_down) was to allow this bit to be
    used to detect when this propagation is enabled, and allow software to
    update the port configuration. This has found to be necessary for some
    switches which do not automatically propagate status from the SERDES to
    the port, which includes the 88E6390. However, commit 4a3e0aeddf09
    ("net: dsa: mv88e6xxx: don't use PHY_DETECT on internal PHY's") breaks
    this assumption.
    
    Maarten Zanders has confirmed that the issue he was addressing was for
    an 88E6250 switch, which does not have a PHY_DETECT bit in bit 12, but
    instead a link status bit. Therefore, mv88e6xxx_port_ppu_updates() does
    not report correctly.
    
    This patch resolves the above issues by reverting Maarten's change and
    instead making mv88e6xxx_port_ppu_updates() indicate whether the port
    is internal for the 88E6250 family of switches.
    
      Yes, you're right, I'm targeting the 6250 family. And yes, your
      suggestion would solve my case and is a better implementation for
      the other devices (as far as I can see).
    
    Fixes: 4a3e0aeddf09 ("net: dsa: mv88e6xxx: don't use PHY_DETECT on internal PHY's")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Tested-by: Maarten Zanders <maarten.zanders@mind.be>
    Link: https://lore.kernel.org/r/E1muXm7-00EwJB-7n@rmk-PC.armlinux.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c960ae2c22a3f744866b6265251d53784a930db
Author: Brian Silverman <brian.silverman@bluerivertech.com>
Date:   Mon Nov 29 14:26:28 2021 -0800

    can: m_can: Disable and ignore ELO interrupt
    
    commit f58ac1adc76b5beda43c64ef359056077df4d93a upstream.
    
    With the design of this driver, this condition is often triggered.
    However, the counter that this interrupt indicates an overflow is never
    read either, so overflowing is harmless.
    
    On my system, when a CAN bus starts flapping up and down, this locks up
    the whole system with lots of interrupts and printks.
    
    Specifically, this interrupt indicates the CEL field of ECR has
    overflowed. All reads of ECR mask out CEL.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Link: https://lore.kernel.org/all/20211129222628.7490-1-brian.silverman@bluerivertech.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Brian Silverman <brian.silverman@bluerivertech.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 081816acad36249ebab981ddbcd87e5b1250a201
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Thu Nov 18 15:40:11 2021 +0100

    can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo()
    
    commit d737de2d7cc3efdacbf17d4e22efc75697bd76d9 upstream.
    
    The same fix that was previously done in m_can_platform in commit
    99d173fbe894 ("can: m_can: fix iomap_read_fifo() and iomap_write_fifo()")
    is required in m_can_pci as well to make iomap_read_fifo() and
    iomap_write_fifo() work for val_count > 1.
    
    Fixes: 812270e5445b ("can: m_can: Batch FIFO writes during CAN transmit")
    Fixes: 1aa6772f64b4 ("can: m_can: Batch FIFO reads during CAN receive")
    Link: https://lore.kernel.org/all/20211118144011.10921-1-matthias.schiffer@ew.tq-group.com
    Cc: stable@vger.kernel.org
    Cc: Matt Kline <matt@bitbashing.io>
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4848384c17ef8390368e6f8d900274433d45647
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Mon Nov 15 10:18:49 2021 +0100

    can: m_can: pci: fix incorrect reference clock rate
    
    commit 8c03b8bff765ac4146342ef90931bb50e788c758 upstream.
    
    When testing the CAN controller on our Ekhart Lake hardware, we
    determined that all communication was running with twice the configured
    bitrate. Changing the reference clock rate from 100MHz to 200MHz fixed
    this. Intel's support has confirmed to us that 200MHz is indeed the
    correct clock rate.
    
    Fixes: cab7ffc0324f ("can: m_can: add PCI glue driver for Intel Elkhart Lake")
    Link: https://lore.kernel.org/all/c9cf3995f45c363e432b3ae8eb1275e54f009fc8.1636967198.git.matthias.schiffer@ew.tq-group.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75a422165477dd12d2d20aa7c9ee7c9a281c9908
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Sun Nov 7 14:07:55 2021 +0900

    can: m_can: m_can_read_fifo: fix memory leak in error branch
    
    commit 31cb32a590d62b18f69a9a6d433f4e69c74fdd56 upstream.
    
    In m_can_read_fifo(), if the second call to m_can_fifo_read() fails,
    the function jump to the out_fail label and returns without calling
    m_can_receive_skb(). This means that the skb previously allocated by
    alloc_can_skb() is not freed. In other terms, this is a memory leak.
    
    This patch adds a goto label to destroy the skb if an error occurs.
    
    Issue was found with GCC -fanalyzer, please follow the link below for
    details.
    
    Fixes: e39381770ec9 ("can: m_can: Disable IRQs on FIFO bus errors")
    Link: https://lore.kernel.org/all/20211107050755.70655-1-mailhol.vincent@wanadoo.fr
    Cc: stable@vger.kernel.org
    Cc: Matt Kline <matt@bitbashing.io>
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c73fc931658d8cbc8a1714b326cb31eb71d16a7
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Tue Nov 23 20:16:54 2021 +0900

    can: pch_can: pch_can_rx_normal: fix use after free
    
    commit 94cddf1e9227a171b27292509d59691819c458db upstream.
    
    After calling netif_receive_skb(skb), dereferencing skb is unsafe.
    Especially, the can_frame cf which aliases skb memory is dereferenced
    just after the call netif_receive_skb(skb).
    
    Reordering the lines solves the issue.
    
    Fixes: b21d18b51b31 ("can: Topcliff: Add PCH_CAN driver.")
    Link: https://lore.kernel.org/all/20211123111654.621610-1-mailhol.vincent@wanadoo.fr
    Cc: stable@vger.kernel.org
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 474f9a8534f5f89841240a7e978bafd6e1e039ce
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Nov 24 17:50:41 2021 +0300

    can: sja1000: fix use after free in ems_pcmcia_add_card()
    
    commit 3ec6ca6b1a8e64389f0212b5a1b0f6fed1909e45 upstream.
    
    If the last channel is not available then "dev" is freed.  Fortunately,
    we can just use "pdev->irq" instead.
    
    Also we should check if at least one channel was set up.
    
    Fixes: fd734c6f25ae ("can/sja1000: add driver for EMS PCMCIA card")
    Link: https://lore.kernel.org/all/20211124145041.GB13656@kili
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9b5472da3a84a22cd491c252de8e441b87f8200
Author: Jimmy Assarsson <extja@kvaser.com>
Date:   Wed Dec 8 16:21:21 2021 +0100

    can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct stats->{rx,tx}_errors counter
    
    commit 36aea60fc892ce73f96d45dc7eb239c7c4c1fa69 upstream.
    
    Check the direction bit in the error frame packet (EPACK) to determine
    which net_device_stats {rx,tx}_errors counter to increase.
    
    Fixes: 26ad340e582d ("can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices")
    Link: https://lore.kernel.org/all/20211208152122.250852-1-extja@kvaser.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8b513b824e4bf2d88b49c35ef312cd73d958672
Author: Jimmy Assarsson <extja@kvaser.com>
Date:   Wed Dec 8 16:21:22 2021 +0100

    can: kvaser_usb: get CAN clock frequency from device
    
    commit fb12797ab1fef480ad8a32a30984844444eeb00d upstream.
    
    The CAN clock frequency is used when calculating the CAN bittiming
    parameters. When wrong clock frequency is used, the device may end up
    with wrong bittiming parameters, depending on user requested bittiming
    parameters.
    
    To avoid this, get the CAN clock frequency from the device. Various
    existing Kvaser Leaf products use different CAN clocks.
    
    Fixes: 080f40a6fa28 ("can: kvaser_usb: Add support for Kvaser CAN/USB devices")
    Link: https://lore.kernel.org/all/20211208152122.250852-2-extja@kvaser.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 834d0fb978643eaf09da425de197cc16a7c2761b
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Mon Nov 29 14:20:08 2021 -0500

    IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr
    
    commit 60a8b5a1611b4a26de4839ab9c1fc2a9cf3e17c1 upstream.
    
    This buffer is currently allocated in hfi1_init():
    
            if (reinit)
                    ret = init_after_reset(dd);
            else
                    ret = loadtime_init(dd);
            if (ret)
                    goto done;
    
            /* allocate dummy tail memory for all receive contexts */
            dd->rcvhdrtail_dummy_kvaddr = dma_alloc_coherent(&dd->pcidev->dev,
                                                             sizeof(u64),
                                                             &dd->rcvhdrtail_dummy_dma,
                                                             GFP_KERNEL);
    
            if (!dd->rcvhdrtail_dummy_kvaddr) {
                    dd_dev_err(dd, "cannot allocate dummy tail memory\n");
                    ret = -ENOMEM;
                    goto done;
            }
    
    The reinit triggered path will overwrite the old allocation and leak it.
    
    Fix by moving the allocation to hfi1_alloc_devdata() and the deallocation
    to hfi1_free_devdata().
    
    Link: https://lore.kernel.org/r/20211129192008.101968.91302.stgit@awfm-01.cornelisnetworks.com
    Cc: stable@vger.kernel.org
    Fixes: 46b010d3eeb8 ("staging/rdma/hfi1: Workaround to prevent corruption during packet delivery")
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27bbf30f928ad88b221d4f6d948c3e24ad5098f1
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Mon Nov 29 14:20:03 2021 -0500

    IB/hfi1: Fix early init panic
    
    commit f6a3cfec3c01f9983e961c3327cef0db129a3c43 upstream.
    
    The following trace can be observed with an init failure such as firmware
    load failures:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      PGD 0 P4D 0
      Oops: 0010 [#1] SMP PTI
      CPU: 0 PID: 537 Comm: kworker/0:3 Tainted: G           OE    --------- -  - 4.18.0-240.el8.x86_64 #1
      Workqueue: events work_for_cpu_fn
      RIP: 0010:0x0
      Code: Bad RIP value.
      RSP: 0000:ffffae5f878a3c98 EFLAGS: 00010046
      RAX: 0000000000000000 RBX: ffff95e48e025c00 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff95e48e025c00
      RBP: ffff95e4bf3660a4 R08: 0000000000000000 R09: ffffffff86d5e100
      R10: ffff95e49e1de600 R11: 0000000000000001 R12: ffff95e4bf366180
      R13: ffff95e48e025c00 R14: ffff95e4bf366028 R15: ffff95e4bf366000
      FS:  0000000000000000(0000) GS:ffff95e4df200000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffffffffffffffd6 CR3: 0000000f86a0a003 CR4: 00000000001606f0
      Call Trace:
       receive_context_interrupt+0x1f/0x40 [hfi1]
       __free_irq+0x201/0x300
       free_irq+0x2e/0x60
       pci_free_irq+0x18/0x30
       msix_free_irq.part.2+0x46/0x80 [hfi1]
       msix_clean_up_interrupts+0x2b/0x70 [hfi1]
       hfi1_init_dd+0x640/0x1a90 [hfi1]
       do_init_one.isra.19+0x34d/0x680 [hfi1]
       local_pci_probe+0x41/0x90
       work_for_cpu_fn+0x16/0x20
       process_one_work+0x1a7/0x360
       worker_thread+0x1cf/0x390
       ? create_worker+0x1a0/0x1a0
       kthread+0x112/0x130
       ? kthread_flush_work_fn+0x10/0x10
       ret_from_fork+0x35/0x40
    
    The free_irq() results in a callback to the registered interrupt handler,
    and rcd->do_interrupt is NULL because the receive context data structures
    are not fully initialized.
    
    Fix by ensuring that the do_interrupt is always assigned and adding a
    guards in the slow path handler to detect and handle a partially
    initialized receive context and noop the receive.
    
    Link: https://lore.kernel.org/r/20211129192003.101968.33612.stgit@awfm-01.cornelisnetworks.com
    Cc: stable@vger.kernel.org
    Fixes: b0ba3c18d6bf ("IB/hfi1: Move normal functions from hfi1_devdata to const array")
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9e1cc3b95e8355ca96d5133d05efb1adeae88e8
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Mon Nov 29 14:19:58 2021 -0500

    IB/hfi1: Insure use of smp_processor_id() is preempt disabled
    
    commit b6d57e24ce6cc3df8a8845e1b193e88a65d501b1 upstream.
    
    The following BUG has just surfaced with our 5.16 testing:
    
      BUG: using smp_processor_id() in preemptible [00000000] code: mpicheck/1581081
      caller is sdma_select_user_engine+0x72/0x210 [hfi1]
      CPU: 0 PID: 1581081 Comm: mpicheck Tainted: G S                5.16.0-rc1+ #1
      Hardware name: Intel Corporation S2600WT2R/S2600WT2R, BIOS SE5C610.86B.01.01.0016.033120161139 03/31/2016
      Call Trace:
       <TASK>
       dump_stack_lvl+0x33/0x42
       check_preemption_disabled+0xbf/0xe0
       sdma_select_user_engine+0x72/0x210 [hfi1]
       ? _raw_spin_unlock_irqrestore+0x1f/0x31
       ? hfi1_mmu_rb_insert+0x6b/0x200 [hfi1]
       hfi1_user_sdma_process_request+0xa02/0x1120 [hfi1]
       ? hfi1_write_iter+0xb8/0x200 [hfi1]
       hfi1_write_iter+0xb8/0x200 [hfi1]
       do_iter_readv_writev+0x163/0x1c0
       do_iter_write+0x80/0x1c0
       vfs_writev+0x88/0x1a0
       ? recalibrate_cpu_khz+0x10/0x10
       ? ktime_get+0x3e/0xa0
       ? __fget_files+0x66/0xa0
       do_writev+0x65/0x100
       do_syscall_64+0x3a/0x80
    
    Fix this long standing bug by moving the smp_processor_id() to after the
    rcu_read_lock().
    
    The rcu_read_lock() implicitly disables preemption.
    
    Link: https://lore.kernel.org/r/20211129191958.101968.87329.stgit@awfm-01.cornelisnetworks.com
    Cc: stable@vger.kernel.org
    Fixes: 0cb2aa690c7e ("IB/hfi1: Add sysfs interface for affinity setup")
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33bee1ebfc83dc2deca76e655420a3e09ed348b9
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Sat Nov 27 11:33:37 2021 +0100

    nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups
    
    commit b7e945e228d7df1b1473ef6fd2cdec67433065fb upstream.
    
    The sixth byte of packet data has to be looked up in the sixth group,
    not in the seventh one, even if we load the bucket data into ymm6
    (and not ymm5, for convenience of tracking stalls).
    
    Without this fix, matching on a MAC address as first field of a set,
    if 8-bit groups are selected (due to a small set size) would fail,
    that is, the given MAC address would never match.
    
    Reported-by: Nikita Yushchenko <nikita.yushchenko@virtuozzo.com>
    Cc: <stable@vger.kernel.org> # 5.6.x
    Fixes: 7400b063969b ("nft_set_pipapo: Introduce AVX2-based lookup implementation")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Tested-By: Nikita Yushchenko <nikita.yushchenko@virtuozzo.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20d1064ac956da9bf8625558d2d27567753298a8
Author: Alex Hung <alex.hung@canonical.com>
Date:   Fri Dec 3 14:28:10 2021 -0700

    platform/x86/intel: hid: add quirk to support Surface Go 3
    
    commit 7d0c009043f6a970f62dbf5aecda9f8c3ccafcff upstream.
    
    Similar to other systems Surface Go 3 requires a DMI quirk to enable
    5 button array for power and volume buttons.
    
    Buglink: https://github.com/linux-surface/linux-surface/issues/595
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Hung <alex.hung@canonical.com>
    Link: https://lore.kernel.org/r/20211203212810.2666508-1-alex.hung@canonical.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6281306bdc99f1c3f1fe584dd074d14e04dcf381
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Dec 7 13:10:53 2021 +0100

    HID: Ignore battery for Elan touchscreen on Asus UX550VE
    
    commit 14902f8961dca9c66bf190f7b1583767c97a4197 upstream.
    
    Battery status is reported for the Asus UX550VE touchscreen even though
    it does not have a battery. Prevent it from always reporting the
    battery as low.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1897823
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 719d5fb2789acd4b3a6771f7e60a0fe4ca84d2b0
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Thu Dec 2 10:53:31 2021 +0100

    HID: sony: fix error path in probe
    
    commit 7998193bccc1c6e1537c5f3880fd0d5b949ec9d1 upstream.
    
    When the setup of the GHL fails, we are not calling hid_hw_stop().
    This leads to the hidraw node not being released, meaning a crash
    whenever somebody attempts to open the file.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20211202095334.14399-2-benjamin.tissoires@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e537e7ef5e8c19e1cc1b4bc8c282d0a1d2a6f885
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Mon Nov 15 11:38:13 2021 +0000

    mmc: spi: Add device-tree SPI IDs
    
    commit 5f719948b5d43eb39356e94e8d0b462568915381 upstream.
    
    Commit 5fa6863ba692 ("spi: Check we have a spi_device_id for each DT
    compatible") added a test to check that every SPI driver has a
    spi_device_id for each DT compatiable string defined by the driver
    and warns if the spi_device_id is missing. The spi_device_id is
    missing for the MMC SPI driver and the following warning is now seen.
    
     WARNING KERN SPI driver mmc_spi has no spi_device_id for mmc-spi-slot
    
    Fix this by adding the necessary spi_device_id.
    
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20211115113813.238044-1-jonathanh@nvidia.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59146a86b4aa953f26b516ae81f81de4994da21f
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Tue Nov 30 11:24:43 2021 +0000

    mtd: dataflash: Add device-tree SPI IDs
    
    commit 27a030e8729255b2068f35c1cd609b532b263311 upstream.
    
    Commit 5fa6863ba692 ("spi: Check we have a spi_device_id for each DT
    compatible") added a test to check that every SPI driver has a
    spi_device_id for each DT compatiable string defined by the driver
    and warns if the spi_device_id is missing. The spi_device_ids are
    missing for the dataflash driver and the following warnings are now
    seen.
    
     WARNING KERN SPI driver mtd_dataflash has no spi_device_id for atmel,at45
     WARNING KERN SPI driver mtd_dataflash has no spi_device_id for atmel,dataflash
    
    Fix this by adding the necessary spi_device_ids.
    
    Fixes: 96c8395e2166 ("spi: Revert modalias changes")
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211130112443.107730-1-jonathanh@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a579510a64ed15463a69cd6fe1a3339bf9ded33b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:03 2021 +0100

    HID: check for valid USB device for many HID drivers
    
    commit 93020953d0fa7035fd036ad87a47ae2b7aa4ae33 upstream.
    
    Many HID drivers assume that the HID device assigned to them is a USB
    device as that was the only way HID devices used to be able to be
    created in Linux.  However, with the additional ways that HID devices
    can be created for many different bus types, that is no longer true, so
    properly check that we have a USB device associated with the HID device
    before allowing a driver that makes this assumption to claim it.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Michael Zaidman <michael.zaidman@gmail.com>
    Cc: Stefan Achatz <erazor_de@users.sourceforge.net>
    Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    [bentiss: amended for thrustmater.c hunk to apply]
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-3-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05ca95256abaf3971f73fdcf61a1f6091957f8fb
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:02 2021 +0100

    HID: wacom: fix problems when device is not a valid USB device
    
    commit 720ac467204a70308bd687927ed475afb904e11b upstream.
    
    The wacom driver accepts devices of more than just USB types, but some
    code paths can cause problems if the device being controlled is not a
    USB device due to a lack of checking.  Add the needed checks to ensure
    that the USB device accesses are only happening on a "real" USB device,
    and not one on some other bus.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58f15f5ae7786c824868f3a7e093859b74669ce7
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Thu Dec 2 10:53:32 2021 +0100

    HID: bigbenff: prevent null pointer dereference
    
    commit 918aa1ef104d286d16b9e7ef139a463ac7a296f0 upstream.
    
    When emulating the device through uhid, there is a chance we don't have
    output reports and so report_field is null.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20211202095334.14399-3-benjamin.tissoires@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30d3150d909431fd7424ab8ff4c4c2c795554e30
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 2 12:48:19 2021 +0100

    HID: add USB_HID dependancy on some USB HID drivers
    
    commit f237d9028f844a86955fc9da59d7ac4a5c55d7d5 upstream.
    
    Some HID drivers are only for USB drivers, yet did not depend on
    CONFIG_USB_HID.  This was hidden by the fact that the USB functions were
    stubbed out in the past, but now that drivers are checking for USB
    devices properly, build errors can occur with some random
    configurations.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211202114819.2511954-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c765cf5f1bccf6d6f945db9c9e3a7602ad8bb46
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 3 08:59:27 2021 +0100

    HID: add USB_HID dependancy to hid-chicony
    
    commit d080811f27936f712f619f847389f403ac873b8f upstream.
    
    The chicony HID driver only controls USB devices, yet did not have a
    dependancy on USB_HID.  This causes build errors on some configurations
    like sparc when building due to new changes to the chicony driver.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: stable@vger.kernel.org
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203075927.2829218-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10b05037d7a831249bd513ba125e88b242c35a4b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 3 09:12:31 2021 +0100

    HID: add USB_HID dependancy to hid-prodikeys
    
    commit 30cb3c2ad24b66fb7639a6d1f4390c74d6e68f94 upstream.
    
    The prodikeys HID driver only controls USB devices, yet did not have a
    dependancy on USB_HID.  This causes build errors on some configurations
    like nios2 when building due to new changes to the prodikeys driver.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203081231.2856936-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1e21632a4c4d2f85587e204939883ce59d18447
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:01 2021 +0100

    HID: add hid_is_usb() function to make it simpler for USB detection
    
    commit f83baa0cb6cfc92ebaf7f9d3a99d7e34f2e77a8a upstream.
    
    A number of HID drivers already call hid_is_using_ll_driver() but only
    for the detection of if this is a USB device or not.  Make this more
    obvious by creating hid_is_usb() and calling the function that way.
    
    Also converts the existing hid_is_using_ll_driver() functions to use the
    new call.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6892f8e27d6e32e16260a5c3cc24ca96ed9ec336
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Tue Nov 30 07:01:17 2021 +0100

    HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested
    
    commit 086e81f6b90e41a07a1a885bb11e93daa6915747 upstream.
    
    Fixes spurious wakeups from s0ix on Lenovo ThinkPad X1 Cargon Gen 9 on
    lid close.
    
    These wakeups are generated by interrupts from the ISH on changes to the
    lid status.
    
    By disabling the wake IRQ from the ISH we inhibit these spurious
    wakeups while keeping the resume from LID open through the ACPI
    interrupt.
    
    Reports on the Lenovo forums indicate that Lenovo ThinkPad X1 Yoga Gen6
    is also affected.
    
    Fixes: ae02e5d40d5f ("HID: intel-ish-hid: ipc layer")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214855
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211130060117.3026-1-linux@weissschuh.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d38f90239254428dc52be3597ea7920b4d39af95
Author: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
Date:   Fri Dec 3 11:01:19 2021 +0800

    HID: google: add eel USB id
    
    commit caff009098e6cf59fd6ac21c3a3befcc854978b4 upstream.
    
    Add one additional hammer-like device.
    
    Signed-off-by: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203030119.28612-1-xiazhengqiao@huaqin.corp-partner.google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7b9eca23ea2bcf4d19bc0a05fc37ddf77221e48
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Nov 28 22:07:48 2021 +0100

    HID: quirks: Add quirk for the Microsoft Surface 3 type-cover
    
    commit 9003fbe0f3674b972f56fa7e6bf3ac9dbfc4d0ec upstream.
    
    Add a HID_QUIRK_NO_INIT_REPORTS quirk for the
    Microsoft Surface 3 (non pro) type-cover.
    
    Trying to init the reports seems to confuse the type-cover and
    causes 2 issues:
    
    1. Despite hid-multitouch sending the command to switch the
    touchpad to multitouch mode, it keeps sending events on the
    mouse emulation interface.
    
    2. The touchpad completely stops sending events after a reboot.
    
    Adding the HID_QUIRK_NO_INIT_REPORTS quirk fixes both issues.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5131cc731c671a9133b6b1aac665a60c5ef7b81b
Author: Thomas Haemmerle <thomas.haemmerle@wolfvision.net>
Date:   Sun Oct 3 22:13:55 2021 +0200

    usb: gadget: uvc: fix multiple opens
    
    commit 72ee48ee8925446eaeda8e4ef3f2eb16b4a93d2a upstream.
    
    Currently, the UVC function is activated when open on the corresponding
    v4l2 device is called.  On another open the activation of the function
    fails since the deactivation counter in `usb_function_activate` equals
    0. However the error is not returned to userspace since the open of the
    v4l2 device is successful.
    
    On a close the function is deactivated (since deactivation counter still
    equals 0) and the video is disabled in `uvc_v4l2_release`, although the
    UVC application potentially is streaming.
    
    Move activation of UVC function to subscription on UVC_EVENT_SETUP
    because there we can guarantee for a userspace application utilizing
    UVC.  Block subscription on UVC_EVENT_SETUP while another application
    already is subscribed to it, indicated by `bool func_connected` in
    `struct uvc_device`.  Extend the `struct uvc_file_handle` with member
    `bool is_uvc_app_handle` to tag it as the handle used by the userspace
    UVC application.
    
    With this a process is able to check capabilities of the v4l2 device
    without deactivating the function for the actual UVC application.
    
    Reviewed-By: Michael Tretter <m.tretter@pengutronix.de>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Thomas Haemmerle <thomas.haemmerle@wolfvision.net>
    Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
    Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Link: https://lore.kernel.org/r/20211003201355.24081-1-m.grzeschik@pengutronix.de
    Cc: Dan Vacura <W36195@motorola.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>