Linux 5.10.124

 
9p: missing chunk of "fs/9p: Don't update file type when updating file attributes" [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Jan 31 14:37:39 2021 -0500

    9p: missing chunk of "fs/9p: Don't update file type when updating file attributes"
    
    commit b577d0cd2104fdfcf0ded3707540a12be8ddd8b0 upstream.
    
    In commit 45089142b149 Aneesh had missed one (admittedly, very unlikely
    to hit) case in v9fs_stat2inode_dotl().  However, the same considerations
    apply there as well - we have no business whatsoever to change ->i_rdev
    or the file type.
    
    Cc: Tadeusz Struk <tadeusz.struk@linaro.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
ALSA: hda/realtek - Add HW8326 support [+ + +]
Author: huangwenhui <huangwenhuia@uniontech.com>
Date:   Wed Jun 8 16:23:57 2022 +0800

    ALSA: hda/realtek - Add HW8326 support
    
    [ Upstream commit 527f4643e03c298c1e3321cfa27866b1374a55e1 ]
    
    Added the support of new Huawei codec HW8326. The HW8326 is developed
    by Huawei with Realtek's IP Core, and it's compatible with ALC256.
    
    Signed-off-by: huangwenhui <huangwenhuia@uniontech.com>
    Link: https://lore.kernel.org/r/20220608082357.26898-1-huangwenhuia@uniontech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine [+ + +]
Author: Andy Chi <andy.chi@canonical.com>
Date:   Fri May 13 20:16:45 2022 +0800

    ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine
    
    commit 024a7ad9eb4df626ca8c77fef4f67fd0ebd559d2 upstream.
    
    The HP EliteBook 630 is using ALC236 codec which used 0x02 to control mute LED
    and 0x01 to control micmute LED. Therefore, add a quirk to make it works.
    
    Signed-off-by: Andy Chi <andy.chi@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220513121648.28584-1-andy.chi@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3 [+ + +]
Author: Adam Ford <aford173@gmail.com>
Date:   Tue Apr 26 15:51:43 2022 -0500

    arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3
    
    commit 4ce01ce36d77137cf60776b320babed89de6bd4c upstream.
    
    There is a header for a DB9 serial port, but any attempts to use
    hardware handshaking fail.  Enable RTS and CTS pin muxing and enable
    handshaking in the uart node.
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: ftrace: consistently handle PLTs. [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Tue Jun 14 09:09:43 2022 +0100

    arm64: ftrace: consistently handle PLTs.
    
    [ Upstream commit a6253579977e4c6f7818eeb05bf2bc65678a7187 ]
    
    Sometimes it is necessary to use a PLT entry to call an ftrace
    trampoline. This is handled by ftrace_make_call() and ftrace_make_nop(),
    with each having *almost* identical logic, but this is not handled by
    ftrace_modify_call() since its introduction in commit:
    
      3b23e4991fb66f6d ("arm64: implement ftrace with regs")
    
    Due to this, if we ever were to call ftrace_modify_call() for a callsite
    which requires a PLT entry for a trampoline, then either:
    
    a) If the old addr requires a trampoline, ftrace_modify_call() will use
       an out-of-range address to generate the 'old' branch instruction.
       This will result in warnings from aarch64_insn_gen_branch_imm() and
       ftrace_modify_code(), and no instructions will be modified. As
       ftrace_modify_call() will return an error, this will result in
       subsequent internal ftrace errors.
    
    b) If the old addr does not require a trampoline, but the new addr does,
       ftrace_modify_call() will use an out-of-range address to generate the
       'new' branch instruction. This will result in warnings from
       aarch64_insn_gen_branch_imm(), and ftrace_modify_code() will replace
       the 'old' branch with a BRK. This will result in a kernel panic when
       this BRK is later executed.
    
    Practically speaking, case (a) is vastly more likely than case (b), and
    typically this will result in internal ftrace errors that don't
    necessarily affect the rest of the system. This can be demonstrated with
    an out-of-tree test module which triggers ftrace_modify_call(), e.g.
    
    | # insmod test_ftrace.ko
    | test_ftrace: Function test_function raw=0xffffb3749399201c, callsite=0xffffb37493992024
    | branch_imm_common: offset out of range
    | branch_imm_common: offset out of range
    | ------------[ ftrace bug ]------------
    | ftrace failed to modify
    | [<ffffb37493992024>] test_function+0x8/0x38 [test_ftrace]
    |  actual:   1d:00:00:94
    | Updating ftrace call site to call a different ftrace function
    | ftrace record flags: e0000002
    |  (2) R
    |  expected tramp: ffffb374ae42ed54
    | ------------[ cut here ]------------
    | WARNING: CPU: 0 PID: 165 at kernel/trace/ftrace.c:2085 ftrace_bug+0x280/0x2b0
    | Modules linked in: test_ftrace(+)
    | CPU: 0 PID: 165 Comm: insmod Not tainted 5.19.0-rc2-00002-g4d9ead8b45ce #13
    | Hardware name: linux,dummy-virt (DT)
    | pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    | pc : ftrace_bug+0x280/0x2b0
    | lr : ftrace_bug+0x280/0x2b0
    | sp : ffff80000839ba00
    | x29: ffff80000839ba00 x28: 0000000000000000 x27: ffff80000839bcf0
    | x26: ffffb37493994180 x25: ffffb374b0991c28 x24: ffffb374b0d70000
    | x23: 00000000ffffffea x22: ffffb374afcc33b0 x21: ffffb374b08f9cc8
    | x20: ffff572b8462c000 x19: ffffb374b08f9000 x18: ffffffffffffffff
    | x17: 6c6c6163202c6331 x16: ffffb374ae5ad110 x15: ffffb374b0d51ee4
    | x14: 0000000000000000 x13: 3435646532346561 x12: 3437336266666666
    | x11: 203a706d61727420 x10: 6465746365707865 x9 : ffffb374ae5149e8
    | x8 : 336266666666203a x7 : 706d617274206465 x6 : 00000000fffff167
    | x5 : ffff572bffbc4a08 x4 : 00000000fffff167 x3 : 0000000000000000
    | x2 : 0000000000000000 x1 : ffff572b84461e00 x0 : 0000000000000022
    | Call trace:
    |  ftrace_bug+0x280/0x2b0
    |  ftrace_replace_code+0x98/0xa0
    |  ftrace_modify_all_code+0xe0/0x144
    |  arch_ftrace_update_code+0x14/0x20
    |  ftrace_startup+0xf8/0x1b0
    |  register_ftrace_function+0x38/0x90
    |  test_ftrace_init+0xd0/0x1000 [test_ftrace]
    |  do_one_initcall+0x50/0x2b0
    |  do_init_module+0x50/0x1f0
    |  load_module+0x17c8/0x1d64
    |  __do_sys_finit_module+0xa8/0x100
    |  __arm64_sys_finit_module+0x2c/0x3c
    |  invoke_syscall+0x50/0x120
    |  el0_svc_common.constprop.0+0xdc/0x100
    |  do_el0_svc+0x3c/0xd0
    |  el0_svc+0x34/0xb0
    |  el0t_64_sync_handler+0xbc/0x140
    |  el0t_64_sync+0x18c/0x190
    | ---[ end trace 0000000000000000 ]---
    
    We can solve this by consistently determining whether to use a PLT entry
    for an address.
    
    Note that since (the earlier) commit:
    
      f1a54ae9af0da4d7 ("arm64: module/ftrace: intialize PLT at load time")
    
    ... we can consistently determine the PLT address that a given callsite
    will use, and therefore ftrace_make_nop() does not need to skip
    validation when a PLT is in use.
    
    This patch factors the existing logic out of ftrace_make_call() and
    ftrace_make_nop() into a common ftrace_find_callable_addr() helper
    function, which is used by ftrace_make_call(), ftrace_make_nop(), and
    ftrace_modify_call(). In ftrace_make_nop() the patching is consistently
    validated by ftrace_modify_code() as we can always determine what the
    old instruction should have been.
    
    Fixes: 3b23e4991fb6 ("arm64: implement ftrace with regs")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Tested-by: "Ivan T. Ivanov" <iivanov@suse.de>
    Reviewed-by: Chengming Zhou <zhouchengming@bytedance.com>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20220614080944.1349146-3-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: ftrace: fix branch range checks [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Tue Jun 14 09:09:42 2022 +0100

    arm64: ftrace: fix branch range checks
    
    [ Upstream commit 3eefdf9d1e406f3da47470b2854347009ffcb6fa ]
    
    The branch range checks in ftrace_make_call() and ftrace_make_nop() are
    incorrect, erroneously permitting a forwards branch of 128M and
    erroneously rejecting a backwards branch of 128M.
    
    This is because both functions calculate the offset backwards,
    calculating the offset *from* the target *to* the branch, rather than
    the other way around as the later comparisons expect.
    
    If an out-of-range branch were erroeously permitted, this would later be
    rejected by aarch64_insn_gen_branch_imm() as branch_imm_common() checks
    the bounds correctly, resulting in warnings and the placement of a BRK
    instruction. Note that this can only happen for a forwards branch of
    exactly 128M, and so the caller would need to be exactly 128M bytes
    below the relevant ftrace trampoline.
    
    If an in-range branch were erroeously rejected, then:
    
    * For modules when CONFIG_ARM64_MODULE_PLTS=y, this would result in the
      use of a PLT entry, which is benign.
    
      Note that this is the common case, as this is selected by
      CONFIG_RANDOMIZE_BASE (and therefore RANDOMIZE_MODULE_REGION_FULL),
      which distributions typically seelct. This is also selected by
      CONFIG_ARM64_ERRATUM_843419.
    
    * For modules when CONFIG_ARM64_MODULE_PLTS=n, this would result in
      internal ftrace failures.
    
    * For core kernel text, this would result in internal ftrace failues.
    
      Note that for this to happen, the kernel text would need to be at
      least 128M bytes in size, and typical configurations are smaller tha
      this.
    
    Fix this by calculating the offset *from* the branch *to* the target in
    both functions.
    
    Fixes: f8af0b364e24 ("arm64: ftrace: don't validate branch via PLT in ftrace_make_nop()")
    Fixes: e71a4e1bebaf ("arm64: ftrace: add support for far branches to dynamic ftrace")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Tested-by: "Ivan T. Ivanov" <iivanov@suse.de>
    Reviewed-by: Chengming Zhou <zhouchengming@bytedance.com>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20220614080944.1349146-2-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: cs35l36: Update digital volume TLV [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:15 2022 +0100

    ASoC: cs35l36: Update digital volume TLV
    
    [ Upstream commit 5005a2345825eb8346546d99bfe669f73111b5c5 ]
    
    The digital volume TLV specifies the step as 0.25dB but the actual step
    of the control is 0.125dB. Update the TLV to correct this.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-3-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs42l51: Correct minimum value for SX volume control [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:19 2022 +0100

    ASoC: cs42l51: Correct minimum value for SX volume control
    
    [ Upstream commit fcb3b5a58926d16d9a338841b74af06d4c29be15 ]
    
    The minimum value for the PGA Volume is given as 0x1A, however the
    values from there to 0x19 are all the same volume and this is not
    represented in the TLV structure. The number of volumes given is correct
    so this leads to all the volumes being shifted. Move the minimum value
    up to 0x19 to fix this.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-7-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs42l52: Correct TLV for Bypass Volume [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:17 2022 +0100

    ASoC: cs42l52: Correct TLV for Bypass Volume
    
    [ Upstream commit 91e90c712fade0b69cdff7cc6512f6099bd18ae5 ]
    
    The Bypass Volume is accidentally using a -6dB minimum TLV rather than
    the correct -60dB minimum. Add a new TLV to correct this.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-5-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs42l52: Fix TLV scales for mixer controls [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:14 2022 +0100

    ASoC: cs42l52: Fix TLV scales for mixer controls
    
    [ Upstream commit 8bf5aabf524eec61013e506f764a0b2652dc5665 ]
    
    The datasheet specifies the range of the mixer volumes as between
    -51.5dB and 12dB with a 0.5dB step. Update the TLVs for this.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-2-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs42l56: Correct typo in minimum level for SX volume controls [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:18 2022 +0100

    ASoC: cs42l56: Correct typo in minimum level for SX volume controls
    
    [ Upstream commit a8928ada9b96944cadd8b65d191e33199fd38782 ]
    
    A couple of the SX volume controls specify 0x84 as the lowest volume
    value, however the correct value from the datasheet is 0x44. The
    datasheet don't include spaces in the value it displays as binary so
    this was almost certainly just a typo reading 1000100.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-6-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: cs53l30: Correct number of volume levels on SX controls [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jun 2 17:21:16 2022 +0100

    ASoC: cs53l30: Correct number of volume levels on SX controls
    
    [ Upstream commit 7fbd6dd68127927e844912a16741016d432a0737 ]
    
    This driver specified the maximum value rather than the number of volume
    levels on the SX controls, this is incorrect, so correct them.
    
    Reported-by: David Rhodes <david.rhodes@cirrus.com>
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220602162119.3393857-4-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: es8328: Fix event generation for deemphasis control [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Jun 3 14:39:37 2022 +0200

    ASoC: es8328: Fix event generation for deemphasis control
    
    [ Upstream commit 8259610c2ec01c5cbfb61882ae176aabacac9c19 ]
    
    Currently the put() method for the deemphasis control returns 0 when a new
    value is written to the control even if the value changed, meaning events
    are not generated. Fix this, skip the work of updating the value when it is
    unchanged and then return 1 after having done so.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220603123937.4013603-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: nau8822: Add operation for internal PLL off and on [+ + +]
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon May 30 12:01:50 2022 +0800

    ASoC: nau8822: Add operation for internal PLL off and on
    
    [ Upstream commit aeca8a3295022bcec46697f16e098140423d8463 ]
    
    We tried to enable the audio on an imx6sx EVB with the codec nau8822,
    after setting the internal PLL fractional parameters, the audio still
    couldn't work and the there was no sdma irq at all.
    
    After checking with the section "8.1.1 Phase Locked Loop (PLL) Design
    Example" of "NAU88C22 Datasheet Rev 0.6", we found we need to
    turn off the PLL before programming fractional parameters and turn on
    the PLL after programming.
    
    After this change, the audio driver could record and play sound and
    the sdma's irq is triggered when playing or recording.
    
    Cc: David Lin <ctlin0@nuvoton.com>
    Cc: John Hsu <kchsu0@nuvoton.com>
    Cc: Seven Li <wtli@nuvoton.com>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20220530040151.95221-2-hui.wang@canonical.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm8962: Fix suspend while playing music [+ + +]
Author: Adam Ford <aford173@gmail.com>
Date:   Thu May 26 13:21:28 2022 -0500

    ASoC: wm8962: Fix suspend while playing music
    
    [ Upstream commit d1f5272c0f7d2e53c6f2480f46725442776f5f78 ]
    
    If the audio CODEC is playing sound when the system is suspended,
    it can be left in a state which throws the following error:
    
    wm8962 3-001a: ASoC: error at soc_component_read_no_lock on wm8962.3-001a: -16
    
    Once this error has occurred, the audio will not work again until rebooted.
    
    Fix this by configuring SET_SYSTEM_SLEEP_PM_OPS.
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220526182129.538472-1-aford173@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put() [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Jun 3 13:50:03 2022 +0200

    ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()
    
    [ Upstream commit 2abdf9f80019e8244d3806ed0e1c9f725e50b452 ]
    
    Currently wm_adsp_fw_put() returns 0 rather than 1 when updating the value
    of the control, meaning that no event is generated to userspace. Fix this
    by setting the default return value to 1, the code already exits early with
    a return value of 0 if the value is unchanged.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220603115003.3865834-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo() [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Sat May 21 23:34:10 2022 +0300

    ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
    
    [ Upstream commit bf476fe22aa1851bab4728e0c49025a6a0bea307 ]
    
    In an unlikely (and probably wrong?) case that the 'ppi' parameter of
    ata_host_alloc_pinfo() points to an array starting with a NULL pointer,
    there's going to be a kernel oops as the 'pi' local variable won't get
    reassigned from the initial value of NULL. Initialize 'pi' instead to
    '&ata_dummy_port_info' to fix the possible kernel oops for good...
    
    Found by Linux Verification Center (linuxtesting.org) with the SVACE static
    analysis tool.
    
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block: Fix handling of offline queues in blk_mq_alloc_request_hctx() [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Jun 15 14:00:04 2022 -0700

    block: Fix handling of offline queues in blk_mq_alloc_request_hctx()
    
    [ Upstream commit 14dc7a18abbe4176f5626c13c333670da8e06aa1 ]
    
    This patch prevents that test nvme/004 triggers the following:
    
    UBSAN: array-index-out-of-bounds in block/blk-mq.h:135:9
    index 512 is out of range for type 'long unsigned int [512]'
    Call Trace:
     show_stack+0x52/0x58
     dump_stack_lvl+0x49/0x5e
     dump_stack+0x10/0x12
     ubsan_epilogue+0x9/0x3b
     __ubsan_handle_out_of_bounds.cold+0x44/0x49
     blk_mq_alloc_request_hctx+0x304/0x310
     __nvme_submit_sync_cmd+0x70/0x200 [nvme_core]
     nvmf_connect_io_queue+0x23e/0x2a0 [nvme_fabrics]
     nvme_loop_connect_io_queues+0x8d/0xb0 [nvme_loop]
     nvme_loop_create_ctrl+0x58e/0x7d0 [nvme_loop]
     nvmf_create_ctrl+0x1d7/0x4d0 [nvme_fabrics]
     nvmf_dev_write+0xae/0x111 [nvme_fabrics]
     vfs_write+0x144/0x560
     ksys_write+0xb7/0x140
     __x64_sys_write+0x42/0x50
     do_syscall_64+0x35/0x80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ming Lei <ming.lei@redhat.com>
    Fixes: 20e4d8139319 ("blk-mq: simplify queue mapping & schedule with each possisble CPU")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20220615210004.1031820-1-bvanassche@acm.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Fix incorrect memory charge cost calculation in stack_map_alloc() [+ + +]
Author: Yuntao Wang <ytcoode@gmail.com>
Date:   Tue Jun 14 22:26:22 2022 +0800

    bpf: Fix incorrect memory charge cost calculation in stack_map_alloc()
    
    commit b45043192b3e481304062938a6561da2ceea46a6 upstream.
    
    This is a backport of the original upstream patch for 5.4/5.10.
    
    The original upstream patch has been applied to 5.4/5.10 branches, which
    simply removed the line:
    
      cost += n_buckets * (value_size + sizeof(struct stack_map_bucket));
    
    This is correct for upstream branch but incorrect for 5.4/5.10 branches,
    as the 5.4/5.10 branches do not have the commit 370868107bf6 ("bpf:
    Eliminate rlimit-based memory accounting for stackmap maps"), so the
    bpf_map_charge_init() function has not been removed.
    
    Currently the bpf_map_charge_init() function in 5.4/5.10 branches takes a
    wrong memory charge cost, the
    
      attr->max_entries * (sizeof(struct stack_map_bucket) + (u64)value_size))
    
    part is missing, let's fix it.
    
    Cc: <stable@vger.kernel.org> # 5.4.y
    Cc: <stable@vger.kernel.org> # 5.10.y
    Signed-off-by: Yuntao Wang <ytcoode@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
certs/blacklist_hashes.c: fix const confusion in certs blacklist [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Jun 12 02:22:30 2022 +0900

    certs/blacklist_hashes.c: fix const confusion in certs blacklist
    
    [ Upstream commit 6a1c3767d82ed8233de1263aa7da81595e176087 ]
    
    This file fails to compile as follows:
    
      CC      certs/blacklist_hashes.o
    certs/blacklist_hashes.c:4:1: error: ignoring attribute ‘section (".init.data")’ because it conflicts with previous ‘section (".init.rodata")’ [-Werror=attributes]
        4 | const char __initdata *const blacklist_hashes[] = {
          | ^~~~~
    In file included from certs/blacklist_hashes.c:2:
    certs/blacklist.h:5:38: note: previous declaration here
        5 | extern const char __initconst *const blacklist_hashes[];
          |                                      ^~~~~~~~~~~~~~~~
    
    Apply the same fix as commit 2be04df5668d ("certs/blacklist_nohashes.c:
    fix const confusion in certs blacklist").
    
    Fixes: 734114f8782f ("KEYS: Add a system blacklist keyring")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Reviewed-by: Mickaël Salaün <mic@linux.microsoft.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clk: imx8mp: fix usb_root_clk parent [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Sat May 7 20:54:30 2022 +0800

    clk: imx8mp: fix usb_root_clk parent
    
    commit cf7f3f4fa9e57b8e9f594823e77e6cbb0ce2b254 upstream.
    
    According to reference mannual CCGR77(usb) sources from hsio_axi, fix
    it.
    
    Fixes: 9c140d9926761 ("clk: imx: Add support for i.MX8MP clock driver")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Abel Vesa <abel.vesa@nxp.com>
    Link: https://lore.kernel.org/r/20220507125430.793287-1-peng.fan@oss.nxp.com
    Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Mon Jun 6 14:02:38 2022 +0900

    clocksource: hyper-v: unexport __init-annotated hv_init_clocksource()
    
    [ Upstream commit 245b993d8f6c4e25f19191edfbd8080b645e12b1 ]
    
    EXPORT_SYMBOL and __init is a bad combination because the .init.text
    section is freed up after the initialization. Hence, modules cannot
    use symbols annotated __init. The access to a freed symbol may end up
    with kernel panic.
    
    modpost used to detect it, but it has been broken for a decade.
    
    Recently, I fixed modpost so it started to warn it again, then this
    showed up in linux-next builds.
    
    There are two ways to fix it:
    
      - Remove __init
      - Remove EXPORT_SYMBOL
    
    I chose the latter for this case because the only in-tree call-site,
    arch/x86/kernel/cpu/mshyperv.c is never compiled as modular.
    (CONFIG_HYPERVISOR_GUEST is boolean)
    
    Fixes: dd2cb348613b ("clocksource/drivers: Continue making Hyper-V clocksource ISA agnostic")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20220606050238.4162200-1-masahiroy@kernel.org
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
comedi: vmk80xx: fix expression for tx buffer size [+ + +]
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Tue Jun 7 18:18:19 2022 +0100

    comedi: vmk80xx: fix expression for tx buffer size
    
    commit 242439f7e279d86b3f73b5de724bc67b2f8aeb07 upstream.
    
    The expression for setting the size of the allocated bulk TX buffer
    (`devpriv->usb_tx_buf`) is calling `usb_endpoint_maxp(devpriv->ep_rx)`,
    which is using the wrong endpoint (should be `devpriv->ep_tx`).  Fix it.
    
    Fixes: a23461c47482 ("comedi: vmk80xx: fix transfer-buffer overflow")
    Cc: Johan Hovold <johan@kernel.org>
    Cc: stable@vger.kernel.org # 4.9+
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Link: https://lore.kernel.org/r/20220607171819.4121-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
crypto: memneq - move into lib/ [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat May 28 12:24:29 2022 +0200

    crypto: memneq - move into lib/
    
    commit abfed87e2a12bd246047d78c01d81eb9529f1d06 upstream.
    
    This is used by code that doesn't need CONFIG_CRYPTO, so move this into
    lib/ with a Kconfig option so that it can be selected by whatever needs
    it.
    
    This fixes a linker error Zheng pointed out when
    CRYPTO_MANAGER_DISABLE_TESTS!=y and CRYPTO=m:
    
      lib/crypto/curve25519-selftest.o: In function `curve25519_selftest':
      curve25519-selftest.c:(.init.text+0x60): undefined reference to `__crypto_memneq'
      curve25519-selftest.c:(.init.text+0xec): undefined reference to `__crypto_memneq'
      curve25519-selftest.c:(.init.text+0x114): undefined reference to `__crypto_memneq'
      curve25519-selftest.c:(.init.text+0x154): undefined reference to `__crypto_memneq'
    
    Reported-by: Zheng Bin <zhengbin13@huawei.com>
    Cc: Eric Biggers <ebiggers@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: aa127963f1ca ("crypto: lib/curve25519 - re-add selftests")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm mirror log: round up region bitmap size to BITS_PER_LONG [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Jun 16 13:28:57 2022 -0400

    dm mirror log: round up region bitmap size to BITS_PER_LONG
    
    commit 85e123c27d5cbc22cfdc01de1e2ca1d9003a02d0 upstream.
    
    The code in dm-log rounds up bitset_size to 32 bits. It then uses
    find_next_zero_bit_le on the allocated region. find_next_zero_bit_le
    accesses the bitmap using unsigned long pointers. So, on 64-bit
    architectures, it may access 4 bytes beyond the allocated size.
    
    Fix this bug by rounding up bitset_size to BITS_PER_LONG.
    
    This bug was found by running the lvm2 testsuite with kasan.
    
    Fixes: 29121bd0b00e ("[PATCH] dm mirror log: bitset_size fix")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dma-debug: make things less spammy under memory pressure [+ + +]
Author: Rob Clark <robdclark@chromium.org>
Date:   Wed Jun 1 07:51:16 2022 -0700

    dma-debug: make things less spammy under memory pressure
    
    [ Upstream commit e19f8fa6ce1ca9b8b934ba7d2e8f34c95abc6e60 ]
    
    Limit the error msg to avoid flooding the console.  If you have a lot of
    threads hitting this at once, they could have already gotten passed the
    dma_debug_disabled() check before they get to the point of allocation
    failure, resulting in quite a lot of this error message spamming the
    log.  Use pr_err_once() to limit that.
    
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma-direct: don't over-decrypt memory [+ + +]
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Fri May 20 18:10:13 2022 +0100

    dma-direct: don't over-decrypt memory
    
    commit 4a37f3dd9a83186cb88d44808ab35b78375082c9 upstream.
    
    The original x86 sev_alloc() only called set_memory_decrypted() on
    memory returned by alloc_pages_node(), so the page order calculation
    fell out of that logic. However, the common dma-direct code has several
    potential allocators, not all of which are guaranteed to round up the
    underlying allocation to a power-of-two size, so carrying over that
    calculation for the encryption/decryption size was a mistake. Fix it by
    rounding to a *number* of pages, rather than an order.
    
    Until recently there was an even worse interaction with DMA_DIRECT_REMAP
    where we could have ended up decrypting part of the next adjacent
    vmalloc area, only averted by no architecture actually supporting both
    configs at once. Don't ask how I found that one out...
    
    Fixes: c10f07aa27da ("dma/direct: Handle force decryption for DMA coherent buffers in common code")
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: David Rientjes <rientjes@google.com>
    [ backport the functional change without all the prior refactoring ]
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Drivers: hv: vmbus: Release cpu lock in error case [+ + +]
Author: Saurabh Sengar <ssengar@linux.microsoft.com>
Date:   Thu Jun 9 10:16:36 2022 -0700

    Drivers: hv: vmbus: Release cpu lock in error case
    
    [ Upstream commit 656c5ba50b7172a0ea25dc1b37606bd51d01fe8d ]
    
    In case of invalid sub channel, release cpu lock before returning.
    
    Fixes: a949e86c0d780 ("Drivers: hv: vmbus: Resolve race between init_vp_index() and CPU hotplug")
    Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/1654794996-13244-1-git-send-email-ssengar@linux.microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Cap OLED brightness per max frame-average luminance [+ + +]
Author: Roman Li <roman.li@amd.com>
Date:   Thu May 19 14:41:16 2022 -0400

    drm/amd/display: Cap OLED brightness per max frame-average luminance
    
    commit 4fd17f2ac0aa4e48823ac2ede5b050fb70300bf4 upstream.
    
    [Why]
    For OLED eDP the Display Manager uses max_cll value as a limit
    for brightness control.
    max_cll defines the content light luminance for individual pixel.
    Whereas max_fall defines frame-average level luminance.
    The user may not observe the difference in brightness in between
    max_fall and max_cll.
    That negatively impacts the user experience.
    
    [How]
    Use max_fall value instead of max_cll as a limit for brightness control.
    
    Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
    Signed-off-by: Roman Li <roman.li@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/reset: Fix error_state_read ptr + offset use [+ + +]
Author: Alan Previn <alan.previn.teres.alexis@intel.com>
Date:   Thu Mar 10 16:43:11 2022 -0800

    drm/i915/reset: Fix error_state_read ptr + offset use
    
    [ Upstream commit c9b576d0c7bf55aeae1a736da7974fa202c4394d ]
    
    Fix our pointer offset usage in error_state_read
    when there is no i915_gpu_coredump but buf offset
    is non-zero.
    
    This fixes a kernel page fault can happen when
    multiple tests are running concurrently in a loop
    and one is producing engine resets and consuming
    the i915 error_state dump while the other is
    forcing full GT resets. (takes a while to trigger).
    
    The dmesg call trace:
    
    [ 5590.803000] BUG: unable to handle page fault for address:
                   ffffffffa0b0e000
    [ 5590.803009] #PF: supervisor read access in kernel mode
    [ 5590.803013] #PF: error_code(0x0000) - not-present page
    [ 5590.803016] PGD 5814067 P4D 5814067 PUD 5815063 PMD 109de4067
                   PTE 0
    [ 5590.803022] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [ 5590.803026] CPU: 5 PID: 13656 Comm: i915_hangman Tainted: G U
                        5.17.0-rc5-ups69-guc-err-capt-rev6+ #136
    [ 5590.803033] Hardware name: Intel Corporation Alder Lake Client
                        Platform/AlderLake-M LP4x RVP, BIOS ADLPFWI1.R00.
                        3031.A02.2201171222 01/17/2022
    [ 5590.803039] RIP: 0010:memcpy_erms+0x6/0x10
    [ 5590.803045] Code: fe ff ff cc eb 1e 0f 1f 00 48 89 f8 48 89 d1
                         48 c1 e9 03 83 e2 07 f3 48 a5 89 d1 f3 a4 c3
                         66 0f 1f 44 00 00 48 89 f8 48 89 d1 <f3> a4
                         c3 0f 1f 80 00 00 00 00 48 89 f8 48 83 fa 20
                         72 7e 40 38 fe
    [ 5590.803054] RSP: 0018:ffffc90003a8fdf0 EFLAGS: 00010282
    [ 5590.803057] RAX: ffff888107ee9000 RBX: ffff888108cb1a00
                   RCX: 0000000000000f8f
    [ 5590.803061] RDX: 0000000000001000 RSI: ffffffffa0b0e000
                   RDI: ffff888107ee9071
    [ 5590.803065] RBP: 0000000000000000 R08: 0000000000000001
                   R09: 0000000000000001
    [ 5590.803069] R10: 0000000000000001 R11: 0000000000000002
                   R12: 0000000000000019
    [ 5590.803073] R13: 0000000000174fff R14: 0000000000001000
                   R15: ffff888107ee9000
    [ 5590.803077] FS: 00007f62a99bee80(0000) GS:ffff88849f880000(0000)
                   knlGS:0000000000000000
    [ 5590.803082] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 5590.803085] CR2: ffffffffa0b0e000 CR3: 000000010a1a8004
                   CR4: 0000000000770ee0
    [ 5590.803089] PKRU: 55555554
    [ 5590.803091] Call Trace:
    [ 5590.803093] <TASK>
    [ 5590.803096] error_state_read+0xa1/0xd0 [i915]
    [ 5590.803175] kernfs_fop_read_iter+0xb2/0x1b0
    [ 5590.803180] new_sync_read+0x116/0x1a0
    [ 5590.803185] vfs_read+0x114/0x1b0
    [ 5590.803189] ksys_read+0x63/0xe0
    [ 5590.803193] do_syscall_64+0x38/0xc0
    [ 5590.803197] entry_SYSCALL_64_after_hwframe+0x44/0xae
    [ 5590.803201] RIP: 0033:0x7f62aaea5912
    [ 5590.803204] Code: c0 e9 b2 fe ff ff 50 48 8d 3d 5a b9 0c 00 e8 05
                         19 02 00 0f 1f 44 00 00 f3 0f 1e fa 64 8b 04 25
                         18 00 00 00 85 c0 75 10 0f 05 <48> 3d 00 f0 ff
                         ff 77 56 c3 0f 1f 44 00 00 48 83 ec 28 48 89 54 24
    [ 5590.803213] RSP: 002b:00007fff5b659ae8 EFLAGS: 00000246
                   ORIG_RAX: 0000000000000000
    [ 5590.803218] RAX: ffffffffffffffda RBX: 0000000000100000
                   RCX: 00007f62aaea5912
    [ 5590.803221] RDX: 000000000008b000 RSI: 00007f62a8c4000f
                   RDI: 0000000000000006
    [ 5590.803225] RBP: 00007f62a8bcb00f R08: 0000000000200010
                   R09: 0000000000101000
    [ 5590.803229] R10: 0000000000000001 R11: 0000000000000246
                   R12: 0000000000000006
    [ 5590.803233] R13: 0000000000075000 R14: 00007f62a8acb010
                   R15: 0000000000200000
    [ 5590.803238] </TASK>
    [ 5590.803240] Modules linked in: i915 ttm drm_buddy drm_dp_helper
                            drm_kms_helper syscopyarea sysfillrect sysimgblt
                            fb_sys_fops prime_numbers nfnetlink br_netfilter
                            overlay mei_pxp mei_hdcp x86_pkg_temp_thermal
                            coretemp kvm_intel snd_hda_codec_hdmi snd_hda_intel
                            snd_intel_dspcfg snd_hda_codec snd_hwdep
                            snd_hda_core snd_pcm mei_me mei fuse ip_tables
                            x_tables crct10dif_pclmul e1000e crc32_pclmul ptp
                            i2c_i801 ghash_clmulni_intel i2c_smbus pps_core
                            [last unloa ded: ttm]
    [ 5590.803277] CR2: ffffffffa0b0e000
    [ 5590.803280] ---[ end trace 0000000000000000 ]---
    
    Fixes: 0e39037b3165 ("drm/i915: Cache the error string")
    Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
    Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
    Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220311004311.514198-2-alan.previn.teres.alexis@intel.com
    (cherry picked from commit 3304033a1e69cd81a2044b4422f0d7e593afb4e6)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: add reserved GDT blocks check [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Wed Jun 1 17:27:17 2022 +0800

    ext4: add reserved GDT blocks check
    
    commit b55c3cd102a6f48b90e61c44f7f3dda8c290c694 upstream.
    
    We capture a NULL pointer issue when resizing a corrupt ext4 image which
    is freshly clear resize_inode feature (not run e2fsck). It could be
    simply reproduced by following steps. The problem is because of the
    resize_inode feature was cleared, and it will convert the filesystem to
    meta_bg mode in ext4_resize_fs(), but the es->s_reserved_gdt_blocks was
    not reduced to zero, so could we mistakenly call reserve_backup_gdb()
    and passing an uninitialized resize_inode to it when adding new group
    descriptors.
    
     mkfs.ext4 /dev/sda 3G
     tune2fs -O ^resize_inode /dev/sda #forget to run requested e2fsck
     mount /dev/sda /mnt
     resize2fs /dev/sda 8G
    
     ========
     BUG: kernel NULL pointer dereference, address: 0000000000000028
     CPU: 19 PID: 3243 Comm: resize2fs Not tainted 5.18.0-rc7-00001-gfde086c5ebfd #748
     ...
     RIP: 0010:ext4_flex_group_add+0xe08/0x2570
     ...
     Call Trace:
      <TASK>
      ext4_resize_fs+0xbec/0x1660
      __ext4_ioctl+0x1749/0x24e0
      ext4_ioctl+0x12/0x20
      __x64_sys_ioctl+0xa6/0x110
      do_syscall_64+0x3b/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f2dd739617b
     ========
    
    The fix is simple, add a check in ext4_resize_begin() to make sure that
    the es->s_reserved_gdt_blocks is zero when the resize_inode feature is
    disabled.
    
    Cc: stable@kernel.org
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Ritesh Harjani <ritesh.list@gmail.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220601092717.763694-1-yi.zhang@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix bug_on ext4_mb_use_inode_pa [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Sat May 28 19:00:15 2022 +0800

    ext4: fix bug_on ext4_mb_use_inode_pa
    
    commit a08f789d2ab5242c07e716baf9a835725046be89 upstream.
    
    Hulk Robot reported a BUG_ON:
    ==================================================================
    kernel BUG at fs/ext4/mballoc.c:3211!
    [...]
    RIP: 0010:ext4_mb_mark_diskspace_used.cold+0x85/0x136f
    [...]
    Call Trace:
     ext4_mb_new_blocks+0x9df/0x5d30
     ext4_ext_map_blocks+0x1803/0x4d80
     ext4_map_blocks+0x3a4/0x1a10
     ext4_writepages+0x126d/0x2c30
     do_writepages+0x7f/0x1b0
     __filemap_fdatawrite_range+0x285/0x3b0
     file_write_and_wait_range+0xb1/0x140
     ext4_sync_file+0x1aa/0xca0
     vfs_fsync_range+0xfb/0x260
     do_fsync+0x48/0xa0
    [...]
    ==================================================================
    
    Above issue may happen as follows:
    -------------------------------------
    do_fsync
     vfs_fsync_range
      ext4_sync_file
       file_write_and_wait_range
        __filemap_fdatawrite_range
         do_writepages
          ext4_writepages
           mpage_map_and_submit_extent
            mpage_map_one_extent
             ext4_map_blocks
              ext4_mb_new_blocks
               ext4_mb_normalize_request
                >>> start + size <= ac->ac_o_ex.fe_logical
               ext4_mb_regular_allocator
                ext4_mb_simple_scan_group
                 ext4_mb_use_best_found
                  ext4_mb_new_preallocation
                   ext4_mb_new_inode_pa
                    ext4_mb_use_inode_pa
                     >>> set ac->ac_b_ex.fe_len <= 0
               ext4_mb_mark_diskspace_used
                >>> BUG_ON(ac->ac_b_ex.fe_len <= 0);
    
    we can easily reproduce this problem with the following commands:
            `fallocate -l100M disk`
            `mkfs.ext4 -b 1024 -g 256 disk`
            `mount disk /mnt`
            `fsstress -d /mnt -l 0 -n 1000 -p 1`
    
    The size must be smaller than or equal to EXT4_BLOCKS_PER_GROUP.
    Therefore, "start + size <= ac->ac_o_ex.fe_logical" may occur
    when the size is truncated. So start should be the start position of
    the group where ac_o_ex.fe_logical is located after alignment.
    In addition, when the value of fe_logical or EXT4_BLOCKS_PER_GROUP
    is very large, the value calculated by start_off is more accurate.
    
    Cc: stable@kernel.org
    Fixes: cd648b8a8fd5 ("ext4: trim allocation requests to group size")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Ritesh Harjani <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/r/20220528110017.354175-2-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: make variable "count" signed [+ + +]
Author: Ding Xiang <dingxiang@cmss.chinamobile.com>
Date:   Mon May 30 18:00:47 2022 +0800

    ext4: make variable "count" signed
    
    commit bc75a6eb856cb1507fa907bf6c1eda91b3fef52f upstream.
    
    Since dx_make_map() may return -EFSCORRUPTED now, so change "count" to
    be a signed integer so we can correctly check for an error code returned
    by dx_make_map().
    
    Fixes: 46c116b920eb ("ext4: verify dir block before splitting it")
    Cc: stable@kernel.org
    Signed-off-by: Ding Xiang <dingxiang@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20220530100047.537598-1-dingxiang@cmss.chinamobile.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
faddr2line: Fix overlapping text section failures, the sequel [+ + +]
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Wed Jun 1 17:42:22 2022 -0700

    faddr2line: Fix overlapping text section failures, the sequel
    
    [ Upstream commit dcea997beed694cbd8705100ca1a6eb0d886de69 ]
    
    If a function lives in a section other than .text, but .text also exists
    in the object, faddr2line may wrongly assume .text.  This can result in
    comically wrong output.  For example:
    
      $ scripts/faddr2line vmlinux.o enter_from_user_mode+0x1c
      enter_from_user_mode+0x1c/0x30:
      find_next_bit at /home/jpoimboe/git/linux/./include/linux/find.h:40
      (inlined by) perf_clear_dirty_counters at /home/jpoimboe/git/linux/arch/x86/events/core.c:2504
    
    Fix it by passing the section name to addr2line, unless the object file
    is vmlinux, in which case the symbol table uses absolute addresses.
    
    Fixes: 1d1a0e7c5100 ("scripts/faddr2line: Fix overlapping text section failures")
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Link: https://lore.kernel.org/r/7d25bc1408bd3a750ac26e60d2f2815a5f4a8363.1654130536.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: dwapb: Don't print error on -EPROBE_DEFER [+ + +]
Author: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Date:   Fri Jun 10 13:45:00 2022 +0300

    gpio: dwapb: Don't print error on -EPROBE_DEFER
    
    [ Upstream commit 77006f6edc0e0f58617eb25e53731f78641e820d ]
    
    Currently if the APB or Debounce clocks aren't yet ready to be requested
    the DW GPIO driver will correctly handle that by deferring the probe
    procedure, but the error is still printed to the system log. It needlessly
    pollutes the log since there was no real error but a request to postpone
    the clock request procedure since the clocks subsystem hasn't been fully
    initialized yet. Let's fix that by using the dev_err_probe method to print
    the APB/clock request error status. It will correctly handle the deferred
    probe situation and print the error if it actually happens.
    
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: designware: Use standard optional ref clock implementation [+ + +]
Author: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Date:   Fri Jun 10 10:42:33 2022 +0300

    i2c: designware: Use standard optional ref clock implementation
    
    [ Upstream commit 27071b5cbca59d8e8f8750c199a6cbf8c9799963 ]
    
    Even though the DW I2C controller reference clock source is requested by
    the method devm_clk_get() with non-optional clock requirement the way the
    clock handler is used afterwards has a pure optional clock semantic
    (though in some circumstances we can get a warning about the clock missing
    printed in the system console). There is no point in reimplementing that
    functionality seeing the kernel clock framework already supports the
    optional interface from scratch. Thus let's convert the platform driver to
    using it.
    
    Note by providing this commit we get to fix two problems. The first one
    was introduced in commit c62ebb3d5f0d ("i2c: designware: Add support for
    an interface clock"). It causes not having the interface clock (pclk)
    enabled/disabled in case if the reference clock isn't provided. The second
    problem was first introduced in commit b33af11de236 ("i2c: designware: Do
    not require clock when SSCN and FFCN are provided"). Since that
    modification the deferred probe procedure has been unsupported in case if
    the interface clock isn't ready.
    
    Fixes: c62ebb3d5f0d ("i2c: designware: Add support for an interface clock")
    Fixes: b33af11de236 ("i2c: designware: Do not require clock when SSCN and FFCN are provided")
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: npcm7xx: Add check for platform_driver_register [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Thu May 26 17:41:00 2022 +0800

    i2c: npcm7xx: Add check for platform_driver_register
    
    [ Upstream commit 6ba12b56b9b844b83ed54fb7ed59fb0eb41e4045 ]
    
    As platform_driver_register() could fail, it should be better
    to deal with the return value in order to maintain the code
    consisitency.
    
    Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Acked-by: Tali Perry <tali.perry1@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i40e: Fix adding ADQ filter to TC0 [+ + +]
Author: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Date:   Fri Apr 29 14:27:08 2022 +0200

    i40e: Fix adding ADQ filter to TC0
    
    [ Upstream commit c3238d36c3a2be0a29a9d848d6c51e1b14be6692 ]
    
    Procedure of configure tc flower filters erroneously allows to create
    filters on TC0 where unfiltered packets are also directed by default.
    Issue was caused by insufficient checks of hw_tc parameter specifying
    the hardware traffic class to pass matching packets to.
    
    Fix checking hw_tc parameter which blocks creation of filters on TC0.
    
    Fixes: 2f4b411a3d67 ("i40e: Enable cloud filters via tc-flower")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i40e: Fix calculating the number of queue pairs [+ + +]
Author: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Date:   Fri Apr 29 14:40:23 2022 +0200

    i40e: Fix calculating the number of queue pairs
    
    [ Upstream commit 0bb050670ac90a167ecfa3f9590f92966c9a3677 ]
    
    If ADQ is enabled for a VF, then actual number of queue pair
    is a number of currently available traffic classes for this VF.
    
    Without this change the configuration of the Rx/Tx queues
    fails with error.
    
    Fixes: d29e0d233e0d ("i40e: missing input validation on VF message handling by the PF")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Bharathi Sreenivas <bharathi.sreenivas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i40e: Fix call trace in setup_tx_descriptors [+ + +]
Author: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Date:   Thu May 19 16:01:45 2022 +0200

    i40e: Fix call trace in setup_tx_descriptors
    
    [ Upstream commit fd5855e6b1358e816710afee68a1d2bc685176ca ]
    
    After PF reset and ethtool -t there was call trace in dmesg
    sometimes leading to panic. When there was some time, around 5
    seconds, between reset and test there were no errors.
    
    Problem was that pf reset calls i40e_vsi_close in prep_for_reset
    and ethtool -t calls i40e_vsi_close in diag_test. If there was not
    enough time between those commands the second i40e_vsi_close starts
    before previous i40e_vsi_close was done which leads to crash.
    
    Add check to diag_test if pf is in reset and don't start offline
    tests if it is true.
    Add netif_info("testing failed") into unhappy path of i40e_diag_test()
    
    Fixes: e17bc411aea8 ("i40e: Disable offline diagnostics if VFs are enabled")
    Fixes: 510efb2682b3 ("i40e: Fix ethtool offline diagnostic with netqueues")
    Signed-off-by: Michal Jaron <michalx.jaron@intel.com>
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
igc: Enable PCIe PTM [+ + +]
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Mon Jul 26 20:36:56 2021 -0700

    igc: Enable PCIe PTM
    
    commit 1b5d73fb862414106cf270a1a7300ce8ae77de83 upstream.
    
    Enables PCIe PTM (Precision Time Measurement) support in the igc
    driver. Notifies the PCI devices that PCIe PTM should be enabled.
    
    PCIe PTM is similar protocol to PTP (Precision Time Protocol) running
    in the PCIe fabric, it allows devices to report time measurements from
    their internal clocks and the correlation with the PCIe root clock.
    
    The i225 NIC exposes some registers that expose those time
    measurements, those registers will be used, in later patches, to
    implement the PTP_SYS_OFFSET_PRECISE ioctl().
    
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Meng Tang <tangmeng@uniontech.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to dmi_use_low_level_irq [+ + +]
Author: Marius Hoch <mail@mariushoch.de>
Date:   Tue Jun 7 12:10:52 2022 -0700

    Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to dmi_use_low_level_irq
    
    [ Upstream commit 6ab2e51898cd4343bbdf8587af8ce8fbabddbcb5 ]
    
    Commit 223f61b8c5ad ("Input: soc_button_array - add Lenovo Yoga Tablet2
    1051L to the dmi_use_low_level_irq list") added the 1051L to this list
    already, but the same problem applies to the 1051F. As there are no
    further 1051 variants (just the F/L), we can just DMI match 1051.
    
    Tested on a Lenovo Yoga Tablet2 1051F: Without this patch the
    home-button stops working after a wakeup from suspend.
    
    Signed-off-by: Marius Hoch <mail@mariushoch.de>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220603120246.3065-1-mail@mariushoch.de
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg [+ + +]
Author: Wang Yufen <wangyufen@huawei.com>
Date:   Tue Jun 7 20:00:28 2022 +0800

    ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg
    
    [ Upstream commit f638a84afef3dfe10554c51820c16e39a278c915 ]
    
    When len >= INT_MAX - transhdrlen, ulen = len + transhdrlen will be
    overflow. To fix, we can follow what udpv6 does and subtract the
    transhdrlen from the max.
    
    Signed-off-by: Wang Yufen <wangyufen@huawei.com>
    Link: https://lore.kernel.org/r/20220607120028.845916-2-wangyufen@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Jun 1 12:09:28 2022 +0400

    irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions
    
    [ Upstream commit ec8401a429ffee34ccf38cebf3443f8d5ae6cb0d ]
    
    of_get_child_by_name() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    When kcalloc fails, it missing of_node_put() and results in refcount
    leak. Fix this by goto out_put_node label.
    
    Fixes: 52085d3f2028 ("irqchip/gic-v3: Dynamically allocate PPI partition descriptors")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220601080930.31005-5-linmq006@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Jun 1 12:09:29 2022 +0400

    irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions
    
    [ Upstream commit fa1ad9d4cc47ca2470cd904ad4519f05d7e43a2b ]
    
    of_find_node_by_phandle() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: e3825ba1af3a ("irqchip/gic-v3: Add support for partitioned PPIs")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220601080930.31005-6-linmq006@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/gic/realview: Fix refcount leak in realview_gic_of_init [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Jun 1 12:09:25 2022 +0400

    irqchip/gic/realview: Fix refcount leak in realview_gic_of_init
    
    [ Upstream commit f4b98e314888cc51486421bcf6d52852452ea48b ]
    
    of_find_matching_node_and_match() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    
    Fixes: 82b0a434b436 ("irqchip/gic/realview: Support more RealView DCC variants")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220601080930.31005-2-linmq006@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: arm64: Don't read a HW interrupt pending state in user context [+ + +]
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Jun 7 14:14:25 2022 +0100

    KVM: arm64: Don't read a HW interrupt pending state in user context
    
    commit 2cdea19a34c2340b3aa69508804efe4e3750fcec upstream.
    
    Since 5bfa685e62e9 ("KVM: arm64: vgic: Read HW interrupt pending state
    from the HW"), we're able to source the pending bit for an interrupt
    that is stored either on the physical distributor or on a device.
    
    However, this state is only available when the vcpu is loaded,
    and is not intended to be accessed from userspace. Unfortunately,
    the GICv2 emulation doesn't provide specific userspace accessors,
    and we fallback with the ones that are intended for the guest,
    with fatal consequences.
    
    Add a new vgic_uaccess_read_pending() accessor for userspace
    to use, build on top of the existing vgic_mmio_read_pending().
    
    Reported-by: Eric Auger <eric.auger@redhat.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Tested-by: Eric Auger <eric.auger@redhat.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Fixes: 5bfa685e62e9 ("KVM: arm64: vgic: Read HW interrupt pending state from the HW")
    Link: https://lore.kernel.org/r/20220607131427.1164881-2-maz@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data leak [+ + +]
Author: Ashish Kalra <ashish.kalra@amd.com>
Date:   Mon May 16 15:43:10 2022 +0000

    KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data leak
    
    commit d22d2474e3953996f03528b84b7f52cc26a39403 upstream.
    
    For some sev ioctl interfaces, the length parameter that is passed maybe
    less than or equal to SEV_FW_BLOB_MAX_SIZE, but larger than the data
    that PSP firmware returns. In this case, kmalloc will allocate memory
    that is the size of the input rather than the size of the data.
    Since PSP firmware doesn't fully overwrite the allocated buffer, these
    sev ioctl interface may return uninitialized kernel slab memory.
    
    Reported-by: Andy Nguyen <theflow@google.com>
    Suggested-by: David Rientjes <rientjes@google.com>
    Suggested-by: Peter Gonda <pgonda@google.com>
    Cc: kvm@vger.kernel.org
    Cc: stable@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Fixes: eaf78265a4ab3 ("KVM: SVM: Move SEV code to separate file")
    Fixes: 2c07ded06427d ("KVM: SVM: add support for SEV attestation command")
    Fixes: 4cfdd47d6d95a ("KVM: SVM: Add KVM_SEV SEND_START command")
    Fixes: d3d1af85e2c75 ("KVM: SVM: Add KVM_SEND_UPDATE_DATA command")
    Fixes: eba04b20e4861 ("KVM: x86: Account a variety of miscellaneous allocations")
    Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
    Reviewed-by: Peter Gonda <pgonda@google.com>
    Message-Id: <20220516154310.3685678-1-Ashish.Kalra@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: x86: Account a variety of miscellaneous allocations [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Mar 30 19:30:25 2021 -0700

    KVM: x86: Account a variety of miscellaneous allocations
    
    commit eba04b20e4861d9bdbd8470a13c0c6e824521a36 upstream.
    
    Switch to GFP_KERNEL_ACCOUNT for a handful of allocations that are
    clearly associated with a single task/VM.
    
    Note, there are a several SEV allocations that aren't accounted, but
    those can (hopefully) be fixed by using the local stack for memory.
    
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20210331023025.2485960-3-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.10.124 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jun 22 14:13:21 2022 +0200

    Linux 5.10.124
    
    Link: https://lore.kernel.org/r/20220620124720.882450983@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mei: me: add raptor lake point S DID [+ + +]
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Mon Jun 6 17:42:25 2022 +0300

    mei: me: add raptor lake point S DID
    
    commit 3ed8c7d39cfef831fe508fc1308f146912fa72e6 upstream.
    
    Add Raptor (Point) Lake S device id.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20220606144225.282375-3-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mellanox: mlx5: avoid uninitialized variable warning with gcc-12 [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jun 9 10:03:28 2022 -0700

    mellanox: mlx5: avoid uninitialized variable warning with gcc-12
    
    [ Upstream commit 842c3b3ddc5f4d17275edbaa09e23d712bf8b915 ]
    
    gcc-12 started warning about 'tracker' being used uninitialized:
    
      drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c: In function ‘mlx5_do_bond’:
      drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c:786:28: warning: ‘tracker’ is used uninitialized [-Wuninitialized]
        786 |         struct lag_tracker tracker;
            |                            ^~~~~~~
    
    which seems to be because it doesn't track how the use (and
    initialization) is bound by the 'do_bond' flag.
    
    But admittedly that 'do_bond' usage is fairly complicated, and involves
    passing it around as an argument to helper functions, so it's somewhat
    understandable that gcc doesn't see how that all works.
    
    This function could be rewritten to make the use of that tracker
    variable more obviously safe, but for now I'm just adding the forced
    initialization of it.
    
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error. [+ + +]
Author: Yupeng Li <liyupeng@zbhlos.com>
Date:   Wed Jun 8 09:12:29 2022 +0800

    MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error.
    
    [ Upstream commit 41e456400212803704e82691716e1d7b0865114a ]
    
      set cpu_hwmon as a module build with loongson_sysconf, loongson_chiptemp
      undefined error,fix cpu_hwmon compile options to be bool.Some kernel
      compilation error information is as follows:
    
      Checking missing-syscalls for N32
      CALL    scripts/checksyscalls.sh
      Checking missing-syscalls for O32
      CALL    scripts/checksyscalls.sh
      CALL    scripts/checksyscalls.sh
      CHK     include/generated/compile.h
      CC [M]  drivers/platform/mips/cpu_hwmon.o
      Building modules, stage 2.
      MODPOST 200 modules
    ERROR: "loongson_sysconf" [drivers/platform/mips/cpu_hwmon.ko] undefined!
    ERROR: "loongson_chiptemp" [drivers/platform/mips/cpu_hwmon.ko] undefined!
    make[1]: *** [scripts/Makefile.modpost:92:__modpost] 错误 1
    make: *** [Makefile:1261:modules] 错误 2
    
    Signed-off-by: Yupeng Li <liyupeng@zbhlos.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Huacai Chen <chenhuacai@kernel.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
misc: atmel-ssc: Fix IRQ check in ssc_probe [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Jun 1 16:30:26 2022 +0400

    misc: atmel-ssc: Fix IRQ check in ssc_probe
    
    [ Upstream commit 1c245358ce0b13669f6d1625f7a4e05c41f28980 ]
    
    platform_get_irq() returns negative error number instead 0 on failure.
    And the doc of platform_get_irq() provides a usage example:
    
        int irq = platform_get_irq(pdev, 0);
        if (irq < 0)
            return irq;
    
    Fix the check of return value to catch errors correctly.
    
    Fixes: eb1f2930609b ("Driver for the Atmel on-chip SSC on AT32AP and AT91")
    Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220601123026.7119-1-linmq006@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mlxsw: spectrum_cnt: Reorder counter pools [+ + +]
Author: Petr Machata <petrm@nvidia.com>
Date:   Mon Jun 13 15:50:17 2022 +0300

    mlxsw: spectrum_cnt: Reorder counter pools
    
    [ Upstream commit 4b7a632ac4e7101ceefee8484d5c2ca505d347b3 ]
    
    Both RIF and ACL flow counters use a 24-bit SW-managed counter address to
    communicate which counter they want to bind.
    
    In a number of Spectrum FW releases, binding a RIF counter is broken and
    slices the counter index to 16 bits. As a result, on Spectrum-2 and above,
    no more than about 410 RIF counters can be effectively used. This
    translates to 205 netdevices for which L3 HW stats can be enabled. (This
    does not happen on Spectrum-1, because there are fewer counters available
    overall and the counter index never exceeds 16 bits.)
    
    Binding counters to ACLs does not have this issue. Therefore reorder the
    counter allocation scheme so that RIF counters come first and therefore get
    lower indices that are below the 16-bit barrier.
    
    Fixes: 98e60dce4da1 ("Merge branch 'mlxsw-Introduce-initial-Spectrum-2-support'")
    Reported-by: Maksym Yaremchuk <maksymy@nvidia.com>
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/20220613125017.2018162-1-idosch@nvidia.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sched: act_police: more accurate MTU policing [+ + +]
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Thu Feb 10 18:56:08 2022 +0100

    net/sched: act_police: more accurate MTU policing
    
    commit 4ddc844eb81da59bfb816d8d52089aba4e59e269 upstream.
    
    in current Linux, MTU policing does not take into account that packets at
    the TC ingress have the L2 header pulled. Thus, the same TC police action
    (with the same value of tcfp_mtu) behaves differently for ingress/egress.
    In addition, the full GSO size is compared to tcfp_mtu: as a consequence,
    the policer drops GSO packets even when individual segments have the L2 +
    L3 + L4 + payload length below the configured valued of tcfp_mtu.
    
    Improve the accuracy of MTU policing as follows:
     - account for mac_len for non-GSO packets at TC ingress.
     - compare MTU threshold with the segmented size for GSO packets.
    Also, add a kselftest that verifies the correct behavior.
    
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [dcaratti: fix conflicts due to lack of the following commits:
     - commit 2ffe0395288a ("net/sched: act_police: add support for
       packet-per-second policing")
     - commit 53b61f29367d ("selftests: forwarding: Add tc-police tests for
       packets per second")]
    Link: https://lore.kernel.org/netdev/876d597a0ff55f6ba786f73c5a9fd9eb8d597a03.1644514748.git.dcaratti@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Tue Jun 14 17:25:57 2022 +0800

    net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg
    
    [ Upstream commit 219b51a6f040fa5367adadd7d58c4dda0896a01d ]
    
    The skb_recv_datagram() in ax25_recvmsg() will hold lock_sock
    and block until it receives a packet from the remote. If the client
    doesn`t connect to server and calls read() directly, it will not
    receive any packets forever. As a result, the deadlock will happen.
    
    The fail log caused by deadlock is shown below:
    
    [  369.606973] INFO: task ax25_deadlock:157 blocked for more than 245 seconds.
    [  369.608919] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  369.613058] Call Trace:
    [  369.613315]  <TASK>
    [  369.614072]  __schedule+0x2f9/0xb20
    [  369.615029]  schedule+0x49/0xb0
    [  369.615734]  __lock_sock+0x92/0x100
    [  369.616763]  ? destroy_sched_domains_rcu+0x20/0x20
    [  369.617941]  lock_sock_nested+0x6e/0x70
    [  369.618809]  ax25_bind+0xaa/0x210
    [  369.619736]  __sys_bind+0xca/0xf0
    [  369.620039]  ? do_futex+0xae/0x1b0
    [  369.620387]  ? __x64_sys_futex+0x7c/0x1c0
    [  369.620601]  ? fpregs_assert_state_consistent+0x19/0x40
    [  369.620613]  __x64_sys_bind+0x11/0x20
    [  369.621791]  do_syscall_64+0x3b/0x90
    [  369.622423]  entry_SYSCALL_64_after_hwframe+0x46/0xb0
    [  369.623319] RIP: 0033:0x7f43c8aa8af7
    [  369.624301] RSP: 002b:00007f43c8197ef8 EFLAGS: 00000246 ORIG_RAX: 0000000000000031
    [  369.625756] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f43c8aa8af7
    [  369.626724] RDX: 0000000000000010 RSI: 000055768e2021d0 RDI: 0000000000000005
    [  369.628569] RBP: 00007f43c8197f00 R08: 0000000000000011 R09: 00007f43c8198700
    [  369.630208] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff845e6afe
    [  369.632240] R13: 00007fff845e6aff R14: 00007f43c8197fc0 R15: 00007f43c8198700
    
    This patch replaces skb_recv_datagram() with an open-coded variant of it
    releasing the socket lock before the __skb_wait_for_more_packets() call
    and re-acquiring it after such call in order that other functions that
    need socket lock could be executed.
    
    what's more, the socket lock will be released only when recvmsg() will
    block and that should produce nicer overall behavior.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Suggested-by: Thomas Osterried <thomas@osterried.de>
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Reported-by: Thomas Habets <thomas@@habets.se>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: bgmac: Fix an erroneous kfree() in bgmac_remove() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Jun 13 22:53:50 2022 +0200

    net: bgmac: Fix an erroneous kfree() in bgmac_remove()
    
    [ Upstream commit d7dd6eccfbc95ac47a12396f84e7e1b361db654b ]
    
    'bgmac' is part of a managed resource allocated with bgmac_alloc(). It
    should not be freed explicitly.
    
    Remove the erroneous kfree() from the .remove() function.
    
    Fixes: 34a5102c3235 ("net: bgmac: allocate struct bgmac just once & don't copy it")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/a026153108dd21239036a032b95c25b5cece253b.1655153616.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag [+ + +]
Author: Chen Lin <chen45464546@163.com>
Date:   Wed Jun 8 20:46:53 2022 +0800

    net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag
    
    [ Upstream commit 2f2c0d2919a14002760f89f4e02960c735a316d2 ]
    
    When rx_flag == MTK_RX_FLAGS_HWLRO,
    rx_data_len = MTK_MAX_LRO_RX_LENGTH(4096 * 3) > PAGE_SIZE.
    netdev_alloc_frag is for alloction of page fragment only.
    Reference to other drivers and Documentation/vm/page_frags.rst
    
    Branch to use __get_free_pages when ring->frag_size > PAGE_SIZE.
    
    Signed-off-by: Chen Lin <chen45464546@163.com>
    Link: https://lore.kernel.org/r/1654692413-2598-1-git-send-email-chen45464546@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: openvswitch: fix misuse of the cached connection on tuple changes [+ + +]
Author: Ilya Maximets <i.maximets@ovn.org>
Date:   Tue Jun 7 00:11:40 2022 +0200

    net: openvswitch: fix misuse of the cached connection on tuple changes
    
    commit 2061ecfdf2350994e5b61c43e50e98a7a70e95ee upstream.
    
    If packet headers changed, the cached nfct is no longer relevant
    for the packet and attempt to re-use it leads to the incorrect packet
    classification.
    
    This issue is causing broken connectivity in OpenStack deployments
    with OVS/OVN due to hairpin traffic being unexpectedly dropped.
    
    The setup has datapath flows with several conntrack actions and tuple
    changes between them:
    
      actions:ct(commit,zone=8,mark=0/0x1,nat(src)),
              set(eth(src=00:00:00:00:00:01,dst=00:00:00:00:00:06)),
              set(ipv4(src=172.18.2.10,dst=192.168.100.6,ttl=62)),
              ct(zone=8),recirc(0x4)
    
    After the first ct() action the packet headers are almost fully
    re-written.  The next ct() tries to re-use the existing nfct entry
    and marks the packet as invalid, so it gets dropped later in the
    pipeline.
    
    Clearing the cached conntrack entry whenever packet tuple is changed
    to avoid the issue.
    
    The flow key should not be cleared though, because we should still
    be able to match on the ct_state if the recirculation happens after
    the tuple change but before the next ct() action.
    
    Cc: stable@vger.kernel.org
    Fixes: 7f8a436eaa2c ("openvswitch: Add conntrack action")
    Reported-by: Frode Nordahl <frode.nordahl@canonical.com>
    Link: https://mail.openvswitch.org/pipermail/ovs-discuss/2022-May/051829.html
    Link: https://bugs.launchpad.net/ubuntu/+source/ovn/+bug/1967856
    Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
    Link: https://lore.kernel.org/r/20220606221140.488984-1-i.maximets@ovn.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [Backport to 5.10: minor rebase in ovs_ct_clear function.
     This version also applicable to and tested on 5.4 and 4.19.]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred [+ + +]
Author: Xiaohui Zhang <xiaohuizhang@ruc.edu.cn>
Date:   Tue Jun 7 16:32:30 2022 +0800

    nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred
    
    [ Upstream commit 8a4d480702b71184fabcf379b80bf7539716752e ]
    
    Similar to the handling of play_deferred in commit 19cfe912c37b
    ("Bluetooth: btusb: Fix memory leak in play_deferred"), we thought
    a patch might be needed here as well.
    
    Currently usb_submit_urb is called directly to submit deferred tx
    urbs after unanchor them.
    
    So the usb_giveback_urb_bh would failed to unref it in usb_unanchor_urb
    and cause memory leak.
    
    Put those urbs in tx_anchor to avoid the leak, and also fix the error
    handling.
    
    Signed-off-by: Xiaohui Zhang <xiaohuizhang@ruc.edu.cn>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20220607083230.6182-1-xiaohuizhang@ruc.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfsd: Replace use of rwsem with errseq_t [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat Dec 18 20:38:01 2021 -0500

    nfsd: Replace use of rwsem with errseq_t
    
    commit 555dbf1a9aac6d3150c8b52fa35f768a692f4eeb upstream.
    
    The nfsd_file nf_rwsem is currently being used to separate file write
    and commit instances to ensure that we catch errors and apply them to
    the correct write/commit.
    We can improve scalability at the expense of a little accuracy (some
    extra false positives) by replacing the nf_rwsem with more careful
    use of the errseq_t mechanism to track errors across the different
    operations.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    [ cel: rebased on zero-verifier fix ]
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme: add device name to warning in uuid_show() [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Tue Jun 7 17:55:55 2022 +0200

    nvme: add device name to warning in uuid_show()
    
    [ Upstream commit 1fc766b5c08417248e0008bca14c3572ac0f1c26 ]
    
    This provides more context to users.
    
    Old message:
    
    [   00.000000] No UUID available providing old NGUID
    
    New message:
    
    [   00.000000] block nvme0n1: No UUID available providing old NGUID
    
    Fixes: d934f9848a77 ("nvme: provide UUID value to userspace")
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme: use sysfs_emit instead of sprintf [+ + +]
Author: Daniel Wagner <dwagner@suse.de>
Date:   Thu Apr 1 11:54:10 2021 +0200

    nvme: use sysfs_emit instead of sprintf
    
    [ Upstream commit bff4bcf3cfc1595e0ef2aeb774b2403c88de1486 ]
    
    sysfs_emit is the recommended API to use for formatting strings to be
    returned to user space. It is equivalent to scnprintf and aware of the
    PAGE_SIZE buffer size.
    
    Suggested-by: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
    Signed-off-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pNFS: Avoid a live lock condition in pnfs_update_layout() [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Tue May 31 11:03:07 2022 -0400

    pNFS: Avoid a live lock condition in pnfs_update_layout()
    
    [ Upstream commit 880265c77ac415090090d1fe72a188fee71cb458 ]
    
    If we're about to send the first layoutget for an empty layout, we want
    to make sure that we drain out the existing pending layoutget calls
    first. The reason is that these layouts may have been already implicitly
    returned to the server by a recall to which the client gave a
    NFS4ERR_NOMATCHING_LAYOUT response.
    
    The problem is that wait_var_event_killable() could in principle see the
    plh_outstanding count go back to '1' when the first process to wake up
    starts sending a new layoutget. If it fails to get a layout, then this
    loop can continue ad infinitum...
    
    Fixes: 0b77f97a7e42 ("NFSv4/pnfs: Fix layoutget behaviour after invalidation")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Tue May 31 11:03:06 2022 -0400

    pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE
    
    [ Upstream commit fe44fb23d6ccde4c914c44ef74ab8d9d9ba02bea ]
    
    If the server tells us that a pNFS layout is not available for a
    specific file, then we should not keep pounding it with further
    layoutget requests.
    
    Fixes: 183d9e7b112a ("pnfs: rework LAYOUTGET retry handling")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/book3e: get rid of #include [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sat Jun 4 17:50:50 2022 +0900

    powerpc/book3e: get rid of #include <generated/compile.h>
    
    commit 7ad4bd887d27c6b6ffbef216f19c19f8fe2b8f52 upstream.
    
    You cannot include <generated/compile.h> here because it is generated
    in init/Makefile but there is no guarantee that it happens before
    arch/powerpc/mm/nohash/kaslr_booke.c is compiled for parallel builds.
    
    The places where you can reliably include <generated/compile.h> are:
    
      - init/          (because init/Makefile can specify the dependency)
      - arch/*/boot/   (because it is compiled after vmlinux)
    
    Commit f231e4333312 ("hexagon: get rid of #include <generated/compile.h>")
    fixed the last breakage at that time, but powerpc re-added this.
    
    <generated/compile.h> was unneeded because 'build_str' is almost the
    same as 'linux_banner' defined in init/version.c
    
    Let's copy the solution from MIPS.
    (get_random_boot() in arch/mips/kernel/relocate.c)
    
    Fixes: 6a38ea1d7b94 ("powerpc/fsl_booke/32: randomize the kernel image offset")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Acked-by: Scott Wood <oss@buserror.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220604085050.4078927-1-masahiroy@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/kasan: Silence KASAN warnings in __get_wchan() [+ + +]
Author: He Ying <heying24@huawei.com>
Date:   Thu Jan 20 20:44:18 2022 -0500

    powerpc/kasan: Silence KASAN warnings in __get_wchan()
    
    [ Upstream commit a1b29ba2f2c171b9bea73be993bfdf0a62d37d15 ]
    
    The following KASAN warning was reported in our kernel.
    
      BUG: KASAN: stack-out-of-bounds in get_wchan+0x188/0x250
      Read of size 4 at addr d216f958 by task ps/14437
    
      CPU: 3 PID: 14437 Comm: ps Tainted: G           O      5.10.0 #1
      Call Trace:
      [daa63858] [c0654348] dump_stack+0x9c/0xe4 (unreliable)
      [daa63888] [c035cf0c] print_address_description.constprop.3+0x8c/0x570
      [daa63908] [c035d6bc] kasan_report+0x1ac/0x218
      [daa63948] [c00496e8] get_wchan+0x188/0x250
      [daa63978] [c0461ec8] do_task_stat+0xce8/0xe60
      [daa63b98] [c0455ac8] proc_single_show+0x98/0x170
      [daa63bc8] [c03cab8c] seq_read_iter+0x1ec/0x900
      [daa63c38] [c03cb47c] seq_read+0x1dc/0x290
      [daa63d68] [c037fc94] vfs_read+0x164/0x510
      [daa63ea8] [c03808e4] ksys_read+0x144/0x1d0
      [daa63f38] [c005b1dc] ret_from_syscall+0x0/0x38
      --- interrupt: c00 at 0x8fa8f4
          LR = 0x8fa8cc
    
      The buggy address belongs to the page:
      page:98ebcdd2 refcount:0 mapcount:0 mapping:00000000 index:0x2 pfn:0x1216f
      flags: 0x0()
      raw: 00000000 00000000 01010122 00000000 00000002 00000000 ffffffff 00000000
      raw: 00000000
      page dumped because: kasan: bad access detected
    
      Memory state around the buggy address:
       d216f800: 00 00 00 00 00 f1 f1 f1 f1 00 00 00 00 00 00 00
       d216f880: f2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      >d216f900: 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00
                                                ^
       d216f980: f2 f2 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00
       d216fa00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    After looking into this issue, I find the buggy address belongs
    to the task stack region. It seems KASAN has something wrong.
    I look into the code of __get_wchan in x86 architecture and
    find the same issue has been resolved by the commit
    f7d27c35ddff ("x86/mm, kasan: Silence KASAN warnings in get_wchan()").
    The solution could be applied to powerpc architecture too.
    
    As Andrey Ryabinin said, get_wchan() is racy by design, it may
    access volatile stack of running task, thus it may access
    redzone in a stack frame and cause KASAN to warn about this.
    
    Use READ_ONCE_NOCHECK() to silence these warnings.
    
    Reported-by: Wanming Hu <huwanming@huaweil.com>
    Signed-off-by: He Ying <heying24@huawei.com>
    Signed-off-by: Chen Jingwen <chenjingwen6@huawei.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220121014418.155675-1-heying24@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
quota: Prevent memory allocation recursion while holding dq_lock [+ + +]
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Sun Jun 5 15:38:13 2022 +0100

    quota: Prevent memory allocation recursion while holding dq_lock
    
    [ Upstream commit 537e11cdc7a6b3ce94fa25ed41306193df9677b7 ]
    
    As described in commit 02117b8ae9c0 ("f2fs: Set GF_NOFS in
    read_cache_page_gfp while doing f2fs_quota_read"), we must not enter
    filesystem reclaim while holding the dq_lock.  Prevent this more generally
    by using memalloc_nofs_save() while holding the lock.
    
    Link: https://lore.kernel.org/r/20220605143815.2330891-2-willy@infradead.org
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
random: credit cpu and bootloader seeds by default [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sun Jun 5 18:30:46 2022 +0200

    random: credit cpu and bootloader seeds by default
    
    [ Upstream commit 846bb97e131d7938847963cca00657c995b1fce1 ]
    
    This commit changes the default Kconfig values of RANDOM_TRUST_CPU and
    RANDOM_TRUST_BOOTLOADER to be Y by default. It does not change any
    existing configs or change any kernel behavior. The reason for this is
    several fold.
    
    As background, I recently had an email thread with the kernel
    maintainers of Fedora/RHEL, Debian, Ubuntu, Gentoo, Arch, NixOS, Alpine,
    SUSE, and Void as recipients. I noted that some distros trust RDRAND,
    some trust EFI, and some trust both, and I asked why or why not. There
    wasn't really much of a "debate" but rather an interesting discussion of
    what the historical reasons have been for this, and it came up that some
    distros just missed the introduction of the bootloader Kconfig knob,
    while another didn't want to enable it until there was a boot time
    switch to turn it off for more concerned users (which has since been
    added). The result of the rather uneventful discussion is that every
    major Linux distro enables these two options by default.
    
    While I didn't have really too strong of an opinion going into this
    thread -- and I mostly wanted to learn what the distros' thinking was
    one way or another -- ultimately I think their choice was a decent
    enough one for a default option (which can be disabled at boot time).
    I'll try to summarize the pros and cons:
    
    Pros:
    
    - The RNG machinery gets initialized super quickly, and there's no
      messing around with subsequent blocking behavior.
    
    - The bootloader mechanism is used by kexec in order for the prior
      kernel to initialize the RNG of the next kernel, which increases
      the entropy available to early boot daemons of the next kernel.
    
    - Previous objections related to backdoors centered around
      Dual_EC_DRBG-like kleptographic systems, in which observing some
      amount of the output stream enables an adversary holding the right key
      to determine the entire output stream.
    
      This used to be a partially justified concern, because RDRAND output
      was mixed into the output stream in varying ways, some of which may
      have lacked pre-image resistance (e.g. XOR or an LFSR).
    
      But this is no longer the case. Now, all usage of RDRAND and
      bootloader seeds go through a cryptographic hash function. This means
      that the CPU would have to compute a hash pre-image, which is not
      considered to be feasible (otherwise the hash function would be
      terribly broken).
    
    - More generally, if the CPU is backdoored, the RNG is probably not the
      realistic vector of choice for an attacker.
    
    - These CPU or bootloader seeds are far from being the only source of
      entropy. Rather, there is generally a pretty huge amount of entropy,
      not all of which is credited, especially on CPUs that support
      instructions like RDRAND. In other words, assuming RDRAND outputs all
      zeros, an attacker would *still* have to accurately model every single
      other entropy source also in use.
    
    - The RNG now reseeds itself quite rapidly during boot, starting at 2
      seconds, then 4, then 8, then 16, and so forth, so that other sources
      of entropy get used without much delay.
    
    - Paranoid users can set random.trust_{cpu,bootloader}=no in the kernel
      command line, and paranoid system builders can set the Kconfig options
      to N, so there's no reduction or restriction of optionality.
    
    - It's a practical default.
    
    - All the distros have it set this way. Microsoft and Apple trust it
      too. Bandwagon.
    
    Cons:
    
    - RDRAND *could* still be backdoored with something like a fixed key or
      limited space serial number seed or another indexable scheme like
      that. (However, it's hard to imagine threat models where the CPU is
      backdoored like this, yet people are still okay making *any*
      computations with it or connecting it to networks, etc.)
    
    - RDRAND *could* be defective, rather than backdoored, and produce
      garbage that is in one way or another insufficient for crypto.
    
    - Suggesting a *reduction* in paranoia, as this commit effectively does,
      may cause some to question my personal integrity as a "security
      person".
    
    - Bootloader seeds and RDRAND are generally very difficult if not all
      together impossible to audit.
    
    Keep in mind that this doesn't actually change any behavior. This
    is just a change in the default Kconfig value. The distros already are
    shipping kernels that set things this way.
    
    Ard made an additional argument in [1]:
    
        We're at the mercy of firmware and micro-architecture anyway, given
        that we are also relying on it to ensure that every instruction in
        the kernel's executable image has been faithfully copied to memory,
        and that the CPU implements those instructions as documented. So I
        don't think firmware or ISA bugs related to RNGs deserve special
        treatment - if they are broken, we should quirk around them like we
        usually do. So enabling these by default is a step in the right
        direction IMHO.
    
    In [2], Phil pointed out that having this disabled masked a bug that CI
    otherwise would have caught:
    
        A clean 5.15.45 boots cleanly, whereas a downstream kernel shows the
        static key warning (but it does go on to boot). The significant
        difference is that our defconfigs set CONFIG_RANDOM_TRUST_BOOTLOADER=y
        defining that on top of multi_v7_defconfig demonstrates the issue on
        a clean 5.15.45. Conversely, not setting that option in a
        downstream kernel build avoids the warning
    
    [1] https://lore.kernel.org/lkml/CAMj1kXGi+ieviFjXv9zQBSaGyyzeGW_VpMpTLJK8PJb2QHEQ-w@mail.gmail.com/
    [2] https://lore.kernel.org/lkml/c47c42e3-1d56-5859-a6ad-976a1a3381c6@raspberrypi.com/
    
    Cc: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "PCI: Make pci_enable_ptm() private" [+ + +]
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Mon Jul 26 20:36:54 2021 -0700

    Revert "PCI: Make pci_enable_ptm() private"
    
    commit 1d71eb53e45187f58089d32b51e27784c791d90e upstream.
    
    Make pci_enable_ptm() accessible from the drivers.
    
    Exposing this to the driver enables the driver to use the
    'ptm_enabled' field of 'pci_dev' to check if PTM is enabled or not.
    
    This reverts commit ac6c26da29c1 ("PCI: Make pci_enable_ptm() private").
    
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Meng Tang <tangmeng@uniontech.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: ipr: Fix missing/incorrect resource cleanup in error case [+ + +]
Author: Chengguang Xu <cgxu519@mykernel.net>
Date:   Sun May 29 23:34:53 2022 +0800

    scsi: ipr: Fix missing/incorrect resource cleanup in error case
    
    [ Upstream commit d64c491911322af1dcada98e5b9ee0d87e8c8fee ]
    
    Fix missing resource cleanup (when '(--i) == 0') for error case in
    ipr_alloc_mem() and skip incorrect resource cleanup (when '(--i) == 0') for
    error case in ipr_request_other_msi_irqs() because variable i started from
    1.
    
    Link: https://lore.kernel.org/r/20220529153456.4183738-4-cgxu519@mykernel.net
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion [+ + +]
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Jun 3 10:43:28 2022 -0700

    scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion
    
    [ Upstream commit 2e7e9c0c1ec05f18d320ecc8a31eec59d2af1af9 ]
    
    NVMe Asynchronous Event Request commands have no command timeout value per
    specifications.
    
    Set WQE option to allow a reduced FLUSH polling rate for I/O error
    detection specifically for nvme_admin_async_event commands.
    
    Link: https://lore.kernel.org/r/20220603174329.63777-9-jsmart2021@gmail.com
    Co-developed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology [+ + +]
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Jun 3 10:43:26 2022 -0700

    scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
    
    [ Upstream commit 336d63615466b4c06b9401c987813fd19bdde39b ]
    
    After issuing a LIP, a specific target vendor does not ACC the FLOGI that
    lpfc sends.  However, it does send its own FLOGI that lpfc ACCs.  The
    target then establishes the port IDs by sending a PLOGI.  lpfc PLOGI_ACCs
    and starts the RPI registration for DID 0x000001.  The target then sends a
    LOGO to the fabric DID.  lpfc is currently treating the LOGO from the
    fabric DID as a link down and cleans up all the ndlps.  The ndlp for DID
    0x000001 is put back into NPR and discovery stops, leaving the port in
    stuck in bypassed mode.
    
    Change lpfc behavior such that if a LOGO is received for the fabric DID in
    PT2PT topology skip the lpfc_linkdown_port() routine and just move the
    fabric DID back to NPR.
    
    Link: https://lore.kernel.org/r/20220603174329.63777-7-jsmart2021@gmail.com
    Co-developed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: pmcraid: Fix missing resource cleanup in error case [+ + +]
Author: Chengguang Xu <cgxu519@mykernel.net>
Date:   Sun May 29 23:34:55 2022 +0800

    scsi: pmcraid: Fix missing resource cleanup in error case
    
    [ Upstream commit ec1e8adcbdf661c57c395bca342945f4f815add7 ]
    
    Fix missing resource cleanup (when '(--i) == 0') for error case in
    pmcraid_register_interrupt_handler().
    
    Link: https://lore.kernel.org/r/20220529153456.4183738-6-cgxu519@mykernel.net
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: vmw_pvscsi: Expand vcpuHint to 16 bits [+ + +]
Author: Wentao Wang <wwentao@vmware.com>
Date:   Thu Jun 2 08:57:00 2022 +0000

    scsi: vmw_pvscsi: Expand vcpuHint to 16 bits
    
    [ Upstream commit cf71d59c2eceadfcde0fb52e237990a0909880d7 ]
    
    vcpuHint has been expanded to 16 bit on host to enable routing to more
    CPUs. Guest side should align with the change. This change has been tested
    with hosts with 8-bit and 16-bit vcpuHint, on both platforms host side can
    get correct value.
    
    Link: https://lore.kernel.org/r/EF35F4D5-5DCC-42C5-BCC4-29DF1729B24C@vmware.com
    Signed-off-by: Wentao Wang <wwentao@vmware.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: 8250: Store to lsr_save_flags after lsr read [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Fri May 20 13:35:41 2022 +0300

    serial: 8250: Store to lsr_save_flags after lsr read
    
    commit be03b0651ffd8bab69dfd574c6818b446c0753ce upstream.
    
    Not all LSR register flags are preserved across reads. Therefore, LSR
    readers must store the non-preserved bits into lsr_save_flags.
    
    This fix was initially mixed into feature commit f6f586102add ("serial:
    8250: Handle UART without interrupt on TEMT using em485"). However,
    that feature change had a flaw and it was reverted to make room for
    simpler approach providing the same feature. The embedded fix got
    reverted with the feature change.
    
    Re-add the lsr_save_flags fix and properly mark it's a fix.
    
    Link: https://lore.kernel.org/all/1d6c31d-d194-9e6a-ddf9-5f29af829f3@linux.intel.com/T/#m1737eef986bd20cf19593e344cebd7b0244945fc
    Fixes: e490c9144cfa ("tty: Add software emulated RS485 support for 8250")
    Cc: stable <stable@kernel.org>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@penugtronix.de>
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/f4d774be-1437-a550-8334-19d8722ab98c@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tty: goldfish: Fix free_irq() on remove [+ + +]
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Thu Jun 9 16:17:04 2022 +0200

    tty: goldfish: Fix free_irq() on remove
    
    [ Upstream commit 499e13aac6c762e1e828172b0f0f5275651d6512 ]
    
    Pass the correct dev_id to free_irq() to fix this splat when the driver
    is unbound:
    
     WARNING: CPU: 0 PID: 30 at kernel/irq/manage.c:1895 free_irq
     Trying to free already-free IRQ 65
     Call Trace:
      warn_slowpath_fmt
      free_irq
      goldfish_tty_remove
      platform_remove
      device_remove
      device_release_driver_internal
      device_driver_detach
      unbind_store
      drv_attr_store
      ...
    
    Fixes: 465893e18878e119 ("tty: goldfish: support platform_device with id -1")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/20220609141704.1080024-1-vincent.whitchurch@axis.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: dwc2: Fix memory leak in dwc2_hcd_init [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Mon May 30 12:54:12 2022 +0400

    usb: dwc2: Fix memory leak in dwc2_hcd_init
    
    commit 3755278f078460b021cd0384562977bf2039a57a upstream.
    
    usb_create_hcd will alloc memory for hcd, and we should
    call usb_put_hcd to free it when platform_get_resource()
    fails to prevent memory leak.
    goto error2 label instead error1 to fix this.
    
    Fixes: 856e6e8e0f93 ("usb: dwc2: check return value after calling platform_get_resource()")
    Cc: stable <stable@kernel.org>
    Acked-by: Minas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220530085413.44068-1-linmq006@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Fri Jun 3 18:02:44 2022 +0400

    usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe
    
    commit 4757c9ade34178b351580133771f510b5ffcf9c8 upstream.
    
    of_parse_phandle() returns a node pointer with refcount
    incremented, we should use of_node_put() on it when not need anymore.
    Add missing of_node_put() to avoid refcount leak.
    of_node_put() will check NULL pointer.
    
    Fixes: 24a28e428351 ("USB: gadget driver for LPC32xx")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220603140246.64529-1-linmq006@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: io_ti: add Agilent E5805A support [+ + +]
Author: Robert Eckelmann <longnoserob@gmail.com>
Date:   Sat May 21 23:08:08 2022 +0900

    USB: serial: io_ti: add Agilent E5805A support
    
    commit 908e698f2149c3d6a67d9ae15c75545a3f392559 upstream.
    
    Add support for Agilent E5805A (rebranded ION Edgeport/4) to io_ti.
    
    Signed-off-by: Robert Eckelmann <longnoserob@gmail.com>
    Link: https://lore.kernel.org/r/20220521230808.30931eca@octoberrain
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

USB: serial: option: add support for Cinterion MV31 with new baseline [+ + +]
Author: Slark Xiao <slark_xiao@163.com>
Date:   Wed Jun 1 11:47:40 2022 +0800

    USB: serial: option: add support for Cinterion MV31 with new baseline
    
    commit 158f7585bfcea4aae0ad4128d032a80fec550df1 upstream.
    
    Adding support for Cinterion device MV31 with Qualcomm
    new baseline. Use different PIDs to separate it from
    previous base line products.
    All interfaces settings keep same as previous.
    
    Below is test evidence:
    T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e2d ProdID=00b8 Rev=04.14
    S:  Manufacturer=Cinterion
    S:  Product=Cinterion PID 0x00B8 USB Mobile Broadband
    S:  SerialNumber=90418e79
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    I:  If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e2d ProdID=00b9 Rev=04.14
    S:  Manufacturer=Cinterion
    S:  Product=Cinterion PID 0x00B9 USB Mobile Broadband
    S:  SerialNumber=90418e79
    C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    I:  If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    
    For PID 00b8, interface 3 is GNSS port which don't use serial driver.
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Link: https://lore.kernel.org/r/20220601034740.5438-1-slark_xiao@163.com
    [ johan: rename defines using a "2" infix ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed [+ + +]
Author: chengkaitao <pilgrimtao@gmail.com>
Date:   Thu Jun 2 08:55:42 2022 +0800

    virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
    
    [ Upstream commit a58a7f97ba11391d2d0d408e0b24f38d86ae748e ]
    
    The reference must be released when device_register(&vm_cmdline_parent)
    failed. Add the corresponding 'put_device()' in the error handling path.
    
    Signed-off-by: chengkaitao <pilgrimtao@gmail.com>
    Message-Id: <20220602005542.16489-1-chengkaitao@didiglobal.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
virtio-pci: Remove wrong address verification in vp_del_vqs() [+ + +]
Author: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
Date:   Thu Apr 14 23:30:02 2022 -0300

    virtio-pci: Remove wrong address verification in vp_del_vqs()
    
    commit 7e415282b41bf0d15c6e0fe268f822d9b083f2f7 upstream.
    
    GCC 12 enhanced -Waddress when comparing array address to null [0],
    which warns:
    
        drivers/virtio/virtio_pci_common.c: In function ‘vp_del_vqs’:
        drivers/virtio/virtio_pci_common.c:257:29: warning: the comparison will always evaluate as ‘true’ for the pointer operand in ‘vp_dev->msix_affinity_masks + (sizetype)((long unsigned int)i * 256)’ must not be NULL [-Waddress]
          257 |                         if (vp_dev->msix_affinity_masks[i])
              |                             ^~~~~~
    
    In fact, the verification is comparing the result of a pointer
    arithmetic, the address "msix_affinity_masks + i", which will always
    evaluate to true.
    
    Under the hood, free_cpumask_var() calls kfree(), which is safe to pass
    NULL, not requiring non-null verification.  So remove the verification
    to make compiler happy (happy compiler, happy life).
    
    [0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102103
    
    Signed-off-by: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
    Message-Id: <20220415023002.49805-1-muriloo@linux.ibm.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Christophe de Dinechin <dinechin@redhat.com>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>