commit 5040274635dede28b8bef7d5511a05b783ec95e8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 27 13:14:12 2022 +0200

    Linux 4.9.312
    
    Link: https://lore.kernel.org/r/20220426081731.370823950@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edcb92fa5c4c2e1fccef081e061782205413410c
Author: Khazhismel Kumykov <khazhy@google.com>
Date:   Thu Apr 14 15:40:56 2022 -0700

    block/compat_ioctl: fix range check in BLKGETSIZE
    
    commit ccf16413e520164eb718cf8b22a30438da80ff23 upstream.
    
    kernel ulong and compat_ulong_t may not be same width. Use type directly
    to eliminate mismatches.
    
    This would result in truncation rather than EFBIG for 32bit mode for
    large disks.
    
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Link: https://lore.kernel.org/r/20220414224056.2875681-1-khazhy@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53eded330e9489ce963f64c9aa7cc4856fafa4f4
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Apr 14 21:57:49 2022 -0400

    ext4: force overhead calculation if the s_overhead_cluster makes no sense
    
    commit 85d825dbf4899a69407338bae462a59aa9a37326 upstream.
    
    If the file system does not use bigalloc, calculating the overhead is
    cheap, so force the recalculation of the overhead so we don't have to
    trust the precalculated overhead in the superblock.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f658e7745517526f4af56bf88d74ea5047da980
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Apr 14 21:31:27 2022 -0400

    ext4: fix overhead calculation to account for the reserved gdt blocks
    
    commit 10b01ee92df52c8d7200afead4d5e5f55a5c58b1 upstream.
    
    The kernel calculation was underestimating the overhead by not taking
    into account the reserved gdt blocks.  With this change, the overhead
    calculated by the kernel matches the overhead calculation in mke2fs.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea5e8a8fe3ff5bacfba92ddc604486162d03bb9d
Author: Tadeusz Struk <tadeusz.struk@linaro.org>
Date:   Thu Mar 31 13:05:15 2022 -0700

    ext4: limit length to bitmap_maxbytes - blocksize in punch_hole
    
    commit 2da376228a2427501feb9d15815a45dbdbdd753e upstream.
    
    Syzbot found an issue [1] in ext4_fallocate().
    The C reproducer [2] calls fallocate(), passing size 0xffeffeff000ul,
    and offset 0x1000000ul, which, when added together exceed the
    bitmap_maxbytes for the inode. This triggers a BUG in
    ext4_ind_remove_space(). According to the comments in this function
    the 'end' parameter needs to be one block after the last block to be
    removed. In the case when the BUG is triggered it points to the last
    block. Modify the ext4_punch_hole() function and add constraint that
    caps the length to satisfy the one before laster block requirement.
    
    LINK: [1] https://syzkaller.appspot.com/bug?id=b80bd9cf348aac724a4f4dff251800106d721331
    LINK: [2] https://syzkaller.appspot.com/text?tag=ReproC&x=14ba0238700000
    
    Fixes: a4bb6b64e39a ("ext4: enable "punch hole" functionality")
    Reported-by: syzbot+7a806094edd5d07ba029@syzkaller.appspotmail.com
    Signed-off-by: Tadeusz Struk <tadeusz.struk@linaro.org>
    Link: https://lore.kernel.org/r/20220331200515.153214-1-tadeusz.struk@linaro.org
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e5893f64d94e20494bc0a5dcfa2846e0e1fe9dc
Author: Sergey Matyukevich <sergey.matyukevich@synopsys.com>
Date:   Thu Apr 14 11:17:22 2022 +0300

    ARC: entry: fix syscall_trace_exit argument
    
    commit b1c6ecfdd06907554518ec384ce8e99889d15193 upstream.
    
    Function syscall_trace_exit expects pointer to pt_regs. However
    r0 is also used to keep syscall return value. Restore pointer
    to pt_regs before calling syscall_trace_exit.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sergey Matyukevich <sergey.matyukevich@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dacfde4ec839e13f8be27ead4a6fd313ba4cd12
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Tue Apr 5 18:56:01 2022 +0300

    e1000e: Fix possible overflow in LTR decoding
    
    commit 04ebaa1cfddae5f240cc7404f009133bb0389a47 upstream.
    
    When we decode the latency and the max_latency, u16 value may not fit
    the required size and could lead to the wrong LTR representation.
    
    Scaling is represented as:
    scale 0 - 1         (2^(5*0)) = 2^0
    scale 1 - 32        (2^(5 *1))= 2^5
    scale 2 - 1024      (2^(5 *2)) =2^10
    scale 3 - 32768     (2^(5 *3)) =2^15
    scale 4 - 1048576   (2^(5 *4)) = 2^20
    scale 5 - 33554432  (2^(5 *4)) = 2^25
    scale 4 and scale 5 required 20 and 25 bits respectively.
    scale 6 reserved.
    
    Replace the u16 type with the u32 type and allow corrected LTR
    representation.
    
    Cc: stable@vger.kernel.org
    Fixes: 44a13a5d99c7 ("e1000e: Fix the max snoop/no-snoop latency for 10M")
    Reported-by: James Hutchinson <jahutchinson99@googlemail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215689
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25f8b8596d05b1dc8cd243038112a49b695fdc7c
Author: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Date:   Tue Mar 29 09:21:34 2022 +0800

    ASoC: soc-dapm: fix two incorrect uses of list iterator
    
    commit f730a46b931d894816af34a0ff8e4ad51565b39f upstream.
    
    These two bug are here:
            list_for_each_entry_safe_continue(w, n, list,
                                            power_list);
            list_for_each_entry_safe_continue(w, n, list,
                                            power_list);
    
    After the list_for_each_entry_safe_continue() exits, the list iterator
    will always be a bogus pointer which point to an invalid struct objdect
    containing HEAD member. The funciton poniter 'w->event' will be a
    invalid value which can lead to a control-flow hijack if the 'w' can be
    controlled.
    
    The original intention was to continue the outer list_for_each_entry_safe()
    loop with the same entry if w->event is NULL, but misunderstanding the
    meaning of list_for_each_entry_safe_continue().
    
    So just add a 'continue;' to fix the bug.
    
    Cc: stable@vger.kernel.org
    Fixes: 163cac061c973 ("ASoC: Factor out DAPM sequence execution")
    Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
    Link: https://lore.kernel.org/r/20220329012134.9375-1-xiam0nd.tong@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aba176280dcd0eb08e291bc59ba6067df22af98
Author: Paolo Valerio <pvalerio@redhat.com>
Date:   Fri Apr 15 10:08:41 2022 +0200

    openvswitch: fix OOB access in reserve_sfa_size()
    
    commit cefa91b2332d7009bc0be5d951d6cbbf349f90f8 upstream.
    
    Given a sufficiently large number of actions, while copying and
    reserving memory for a new action of a new flow, if next_offset is
    greater than MAX_ACTIONS_BUFSIZE, the function reserve_sfa_size() does
    not return -EMSGSIZE as expected, but it allocates MAX_ACTIONS_BUFSIZE
    bytes increasing actions_len by req_size. This can then lead to an OOB
    write access, especially when further actions need to be copied.
    
    Fix it by rearranging the flow action size check.
    
    KASAN splat below:
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in reserve_sfa_size+0x1ba/0x380 [openvswitch]
    Write of size 65360 at addr ffff888147e4001c by task handler15/836
    
    CPU: 1 PID: 836 Comm: handler15 Not tainted 5.18.0-rc1+ #27
    ...
    Call Trace:
     <TASK>
     dump_stack_lvl+0x45/0x5a
     print_report.cold+0x5e/0x5db
     ? __lock_text_start+0x8/0x8
     ? reserve_sfa_size+0x1ba/0x380 [openvswitch]
     kasan_report+0xb5/0x130
     ? reserve_sfa_size+0x1ba/0x380 [openvswitch]
     kasan_check_range+0xf5/0x1d0
     memcpy+0x39/0x60
     reserve_sfa_size+0x1ba/0x380 [openvswitch]
     __add_action+0x24/0x120 [openvswitch]
     ovs_nla_add_action+0xe/0x20 [openvswitch]
     ovs_ct_copy_action+0x29d/0x1130 [openvswitch]
     ? __kernel_text_address+0xe/0x30
     ? unwind_get_return_address+0x56/0xa0
     ? create_prof_cpu_mask+0x20/0x20
     ? ovs_ct_verify+0xf0/0xf0 [openvswitch]
     ? prep_compound_page+0x198/0x2a0
     ? __kasan_check_byte+0x10/0x40
     ? kasan_unpoison+0x40/0x70
     ? ksize+0x44/0x60
     ? reserve_sfa_size+0x75/0x380 [openvswitch]
     __ovs_nla_copy_actions+0xc26/0x2070 [openvswitch]
     ? __zone_watermark_ok+0x420/0x420
     ? validate_set.constprop.0+0xc90/0xc90 [openvswitch]
     ? __alloc_pages+0x1a9/0x3e0
     ? __alloc_pages_slowpath.constprop.0+0x1da0/0x1da0
     ? unwind_next_frame+0x991/0x1e40
     ? __mod_node_page_state+0x99/0x120
     ? __mod_lruvec_page_state+0x2e3/0x470
     ? __kasan_kmalloc_large+0x90/0xe0
     ovs_nla_copy_actions+0x1b4/0x2c0 [openvswitch]
     ovs_flow_cmd_new+0x3cd/0xb10 [openvswitch]
     ...
    
    Cc: stable@vger.kernel.org
    Fixes: f28cd2af22a0 ("openvswitch: fix flow actions reallocation")
    Signed-off-by: Paolo Valerio <pvalerio@redhat.com>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 916861508d801daa6ad0cf3eea98d93499bfaf59
Author: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Date:   Sun Mar 27 14:11:54 2022 +0800

    dma: at_xdmac: fix a missing check on list iterator
    
    commit 206680c4e46b62fd8909385e0874a36952595b85 upstream.
    
    The bug is here:
            __func__, desc, &desc->tx_dma_desc.phys, ret, cookie, residue);
    
    The list iterator 'desc' will point to a bogus position containing
    HEAD if the list is empty or no element is found. To avoid dev_dbg()
    prints a invalid address, use a new variable 'iter' as the list
    iterator, while use the origin variable 'desc' as a dedicated
    pointer to point to the found element.
    
    Cc: stable@vger.kernel.org
    Fixes: 82e2424635f4c ("dmaengine: xdmac: fix print warning on dma_addr_t variable")
    Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
    Link: https://lore.kernel.org/r/20220327061154.4867-1-xiam0nd.tong@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cca43b9a22456f6eb040dfb8384265279e2f272
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Thu Apr 21 09:39:20 2022 +0800

    ata: pata_marvell: Check the 'bmdma_addr' beforing reading
    
    commit aafa9f958342db36c17ac2a7f1b841032c96feb4 upstream.
    
    Before detecting the cable type on the dma bar, the driver should check
    whether the 'bmdma_addr' is zero, which means the adapter does not
    support DMA, otherwise we will get the following error:
    
    [    5.146634] Bad IO access at port 0x1 (return inb(port))
    [    5.147206] WARNING: CPU: 2 PID: 303 at lib/iomap.c:44 ioread8+0x4a/0x60
    [    5.150856] RIP: 0010:ioread8+0x4a/0x60
    [    5.160238] Call Trace:
    [    5.160470]  <TASK>
    [    5.160674]  marvell_cable_detect+0x6e/0xc0 [pata_marvell]
    [    5.161728]  ata_eh_recover+0x3520/0x6cc0
    [    5.168075]  ata_do_eh+0x49/0x3c0
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 628dd78082bbe6b0122107b65d306c63484fa317
Author: Xiaoke Wang <xkernel.wang@foxmail.com>
Date:   Thu Apr 7 10:31:51 2022 +0800

    drm/msm/mdp5: check the return of kzalloc()
    
    [ Upstream commit 047ae665577776b7feb11bd4f81f46627cff95e7 ]
    
    kzalloc() is a memory allocation function which can return NULL when
    some internal memory errors happen. So it is better to check it to
    prevent potential wrong memory access.
    
    Besides, since mdp5_plane_reset() is void type, so we should better
    set `plane-state` to NULL after releasing it.
    
    Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/481055/
    Link: https://lore.kernel.org/r/tencent_8E2A1C78140EE1784AB2FF4B2088CC0AB908@qq.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 481076026e408aeca6ca2343e53aa2afe608fdf6
Author: Borislav Petkov <bp@alien8.de>
Date:   Tue Apr 5 18:55:37 2022 +0200

    brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant
    
    [ Upstream commit 6fb3a5868b2117611f41e421e10e6a8c2a13039a ]
    
    Fix:
    
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function ‘brcmf_sdio_drivestrengthinit’:
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3798:2: error: case label does not reduce to an integer constant
        case SDIOD_DRVSTR_KEY(BRCM_CC_43143_CHIP_ID, 17):
        ^~~~
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3809:2: error: case label does not reduce to an integer constant
        case SDIOD_DRVSTR_KEY(BRCM_CC_43362_CHIP_ID, 13):
        ^~~~
    
    See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
    details as to why it triggers with older gccs only.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Arend van Spriel <aspriel@gmail.com>
    Cc: Franky Lin <franky.lin@broadcom.com>
    Cc: Hante Meuleman <hante.meuleman@broadcom.com>
    Cc: Kalle Valo <kvalo@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: brcm80211-dev-list.pdl@broadcom.com
    Cc: netdev@vger.kernel.org
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/Ykx0iRlvtBnKqtbG@zn.tnic
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a84775fdf64684c2ca0b894bde4b60b9db73b461
Author: David Howells <dhowells@redhat.com>
Date:   Thu Apr 7 00:03:14 2022 +0100

    cifs: Check the IOCB_DIRECT flag, not O_DIRECT
    
    [ Upstream commit 994fd530a512597ffcd713b0f6d5bc916c5698f0 ]
    
    Use the IOCB_DIRECT indicator flag on the I/O context rather than checking to
    see if the file was opened O_DIRECT.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Steve French <sfrench@samba.org>
    cc: Shyam Prasad N <nspmangalore@gmail.com>
    cc: Rohith Surabattula <rohiths.msft@gmail.com>
    cc: linux-cifs@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31c14bff0b119c4641eb70aa2d7ac1f3b9809840
Author: Hongbin Wang <wh_bin@126.com>
Date:   Wed Apr 6 22:46:22 2022 -0400

    vxlan: fix error return code in vxlan_fdb_append
    
    [ Upstream commit 7cea5560bf656b84f9ed01c0cc829d4eecd0640b ]
    
    When kmalloc and dst_cache_init failed,
    should return ENOMEM rather than ENOBUFS.
    
    Signed-off-by: Hongbin Wang <wh_bin@126.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d5002436a2bfec0aa516515e03bd74420acd9b19
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Apr 5 17:15:08 2022 +0200

    ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant
    
    [ Upstream commit 1ef8715975de8bd481abbd0839ed4f49d9e5b0ff ]
    
    Fix:
    
      sound/usb/midi.c: In function ‘snd_usbmidi_out_endpoint_create’:
      sound/usb/midi.c:1389:2: error: case label does not reduce to an integer constant
        case USB_ID(0xfc08, 0x0101): /* Unknown vendor Cable */
        ^~~~
    
    See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
    details as to why it triggers with older gccs only.
    
    [ A slight correction with parentheses around the argument by tiwai ]
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20220405151517.29753-3-bp@alien8.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4c4ff821a6c5009a051a10251a68f47be1925fa
Author: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Date:   Tue Mar 22 14:18:30 2022 +0800

    platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative
    
    [ Upstream commit 0284d4d1be753f648f28b77bdfbe6a959212af5c ]
    
    Eliminate the follow smatch warnings:
    
    drivers/platform/x86/samsung-laptop.c:1124 kbd_led_set() warn: unsigned
    'value' is never less than zero.
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20220322061830.105579-1-jiapeng.chong@linux.alibaba.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9995aa5fe06f7362ab60418b8945ec1b378e9d69
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Mar 31 12:04:43 2022 -0700

    ARM: vexpress/spc: Avoid negative array index when !SMP
    
    [ Upstream commit b3f1dd52c991d79118f35e6d1bf4d7cb09882e38 ]
    
    When building multi_v7_defconfig+CONFIG_SMP=n, -Warray-bounds exposes
    a couple negative array index accesses:
    
    arch/arm/mach-vexpress/spc.c: In function 've_spc_clk_init':
    arch/arm/mach-vexpress/spc.c:583:21: warning: array subscript -1 is below array bounds of 'bool[2]' {aka '_Bool[2]'} [-Warray-bounds]
      583 |   if (init_opp_table[cluster])
          |       ~~~~~~~~~~~~~~^~~~~~~~~
    arch/arm/mach-vexpress/spc.c:556:7: note: while referencing 'init_opp_table'
      556 |  bool init_opp_table[MAX_CLUSTERS] = { false };
          |       ^~~~~~~~~~~~~~
    arch/arm/mach-vexpress/spc.c:592:18: warning: array subscript -1 is below array bounds of 'bool[2]' {aka '_Bool[2]'} [-Warray-bounds]
      592 |    init_opp_table[cluster] = true;
          |    ~~~~~~~~~~~~~~^~~~~~~~~
    arch/arm/mach-vexpress/spc.c:556:7: note: while referencing 'init_opp_table'
      556 |  bool init_opp_table[MAX_CLUSTERS] = { false };
          |       ^~~~~~~~~~~~~~
    
    Skip this logic when built !SMP.
    
    Link: https://lore.kernel.org/r/20220331190443.851661-1-keescook@chromium.org
    Cc: Liviu Dudau <liviu.dudau@arm.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: linux-arm-kernel@lists.infradead.org
    Acked-by: Liviu Dudau <liviu.dudau@arm.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbdb962b54eddb0d09edd4ffc016ccfdf270a3b8
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Apr 15 11:14:42 2022 -0700

    netlink: reset network and mac headers in netlink_dump()
    
    [ Upstream commit 99c07327ae11e24886d552dddbe4537bfca2765d ]
    
    netlink_dump() is allocating an skb, reserves space in it
    but forgets to reset network header.
    
    This allows a BPF program, invoked later from sk_filter()
    to access uninitialized kernel memory from the reserved
    space.
    
    Theorically mac header reset could be omitted, because
    it is set to a special initial value.
    bpf_internal_load_pointer_neg_helper calls skb_mac_header()
    without checking skb_mac_header_was_set().
    Relying on skb->len not being too big seems fragile.
    We also could add a sanity check in bpf_internal_load_pointer_neg_helper()
    to avoid surprises in the future.
    
    syzbot report was:
    
    BUG: KMSAN: uninit-value in ___bpf_prog_run+0xa22b/0xb420 kernel/bpf/core.c:1637
     ___bpf_prog_run+0xa22b/0xb420 kernel/bpf/core.c:1637
     __bpf_prog_run32+0x121/0x180 kernel/bpf/core.c:1796
     bpf_dispatcher_nop_func include/linux/bpf.h:784 [inline]
     __bpf_prog_run include/linux/filter.h:626 [inline]
     bpf_prog_run include/linux/filter.h:633 [inline]
     __bpf_prog_run_save_cb+0x168/0x580 include/linux/filter.h:756
     bpf_prog_run_save_cb include/linux/filter.h:770 [inline]
     sk_filter_trim_cap+0x3bc/0x8c0 net/core/filter.c:150
     sk_filter include/linux/filter.h:905 [inline]
     netlink_dump+0xe0c/0x16c0 net/netlink/af_netlink.c:2276
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was stored to memory at:
     ___bpf_prog_run+0x96c/0xb420 kernel/bpf/core.c:1558
     __bpf_prog_run32+0x121/0x180 kernel/bpf/core.c:1796
     bpf_dispatcher_nop_func include/linux/bpf.h:784 [inline]
     __bpf_prog_run include/linux/filter.h:626 [inline]
     bpf_prog_run include/linux/filter.h:633 [inline]
     __bpf_prog_run_save_cb+0x168/0x580 include/linux/filter.h:756
     bpf_prog_run_save_cb include/linux/filter.h:770 [inline]
     sk_filter_trim_cap+0x3bc/0x8c0 net/core/filter.c:150
     sk_filter include/linux/filter.h:905 [inline]
     netlink_dump+0xe0c/0x16c0 net/netlink/af_netlink.c:2276
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:737 [inline]
     slab_alloc_node mm/slub.c:3244 [inline]
     __kmalloc_node_track_caller+0xde3/0x14f0 mm/slub.c:4972
     kmalloc_reserve net/core/skbuff.c:354 [inline]
     __alloc_skb+0x545/0xf90 net/core/skbuff.c:426
     alloc_skb include/linux/skbuff.h:1158 [inline]
     netlink_dump+0x30f/0x16c0 net/netlink/af_netlink.c:2242
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    CPU: 0 PID: 3470 Comm: syz-executor751 Not tainted 5.17.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: db65a3aaf29e ("netlink: Trim skb to alloc size to avoid MSG_TRUNC")
    Fixes: 9063e21fb026 ("netlink: autosize skb lengthes")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20220415181442.551228-1-eric.dumazet@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f7c51d906832809b390024655eff783ad8a53ad1
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Apr 14 16:49:25 2022 +0800

    net/packet: fix packet_sock xmit return value checking
    
    [ Upstream commit 29e8e659f984be00d75ec5fef4e37c88def72712 ]
    
    packet_sock xmit could be dev_queue_xmit, which also returns negative
    errors. So only checking positive errors is not enough, or userspace
    sendmsg may return success while packet is not send out.
    
    Move the net_xmit_errno() assignment in the braces as checkpatch.pl said
    do not use assignment in if condition.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Flavio Leitner <fbl@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4333c4ff0e3e578b90f0dfc2ee7980efaa856a7
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Mar 8 06:49:51 2022 +0000

    dmaengine: imx-sdma: Fix error checking in sdma_event_remap
    
    [ Upstream commit 7104b9cb35a33ad803a1adbbfa50569b008faf15 ]
    
    of_parse_phandle() returns NULL on errors, rather than error
    pointers. Using NULL check on grp_np to fix this.
    
    Fixes: d078cd1b4185 ("dmaengine: imx-sdma: Add imx6sx platform support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220308064952.15743-1-linmq006@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c0eb4d18894923c18e1bf5fd5995de1dc2ad5a4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 20 15:02:47 2022 +0200

    ALSA: usb-audio: Clear MIDI port active flag after draining
    
    commit 0665886ad1392e6b5bae85d7a6ccbed48dca1522 upstream.
    
    When a rawmidi output stream is closed, it calls the drain at first,
    then does trigger-off only when the drain returns -ERESTARTSYS as a
    fallback.  It implies that each driver should turn off the stream
    properly after the drain.  Meanwhile, USB-audio MIDI interface didn't
    change the port->active flag after the drain.  This may leave the
    output work picking up the port that is closed right now, which
    eventually leads to a use-after-free for the already released rawmidi
    object.
    
    This patch fixes the bug by properly clearing the port->active flag
    after the output drain.
    
    Reported-by: syzbot+70e777a39907d6d5fd0a@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/00000000000011555605dceaff03@google.com
    Link: https://lore.kernel.org/r/20220420130247.22062-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2797069186dd771a3d72dfd94cc3e349a5a51fb
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Mon Jan 17 10:25:07 2022 -0500

    gfs2: assign rgrp glock before compute_bitstructs
    
    commit 428f651cb80b227af47fc302e4931791f2fb4741 upstream.
    
    Before this patch, function read_rindex_entry called compute_bitstructs
    before it allocated a glock for the rgrp. But if compute_bitstructs found
    a problem with the rgrp, it called gfs2_consist_rgrpd, and that called
    gfs2_dump_glock for rgd->rd_gl which had not yet been assigned.
    
    read_rindex_entry
       compute_bitstructs
          gfs2_consist_rgrpd
             gfs2_dump_glock <---------rgd->rd_gl was not set.
    
    This patch changes read_rindex_entry so it assigns an rgrp glock before
    calling compute_bitstructs so gfs2_dump_glock does not reference an
    unassigned pointer. If an error is discovered, the glock must also be
    put, so a new goto and label were added.
    
    Reported-by: syzbot+c6fd14145e2f62ca0784@syzkaller.appspotmail.com
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27057333467cdd9f8a87cecb6b0b3ae2526d4d0a
Author: Xiongwei Song <sxwjean@gmail.com>
Date:   Fri Jan 14 14:07:24 2022 -0800

    mm: page_alloc: fix building error on -Werror=array-compare
    
    commit ca831f29f8f25c97182e726429b38c0802200c8f upstream.
    
    Arthur Marsh reported we would hit the error below when building kernel
    with gcc-12:
    
      CC      mm/page_alloc.o
      mm/page_alloc.c: In function `mem_init_print_info':
      mm/page_alloc.c:8173:27: error: comparison between two arrays [-Werror=array-compare]
       8173 |                 if (start <= pos && pos < end && size > adj) \
            |
    
    In C++20, the comparision between arrays should be warned.
    
    Link: https://lkml.kernel.org/r/20211125130928.32465-1-sxwjean@me.com
    Signed-off-by: Xiongwei Song <sxwjean@gmail.com>
    Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 096879ef0c4ccc16123ba04aba724d4346d7fbcb
Author: Kees Cook <keescook@chromium.org>
Date:   Sat Feb 12 09:14:49 2022 -0800

    etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overead
    
    commit 2618a0dae09ef37728dab89ff60418cbe25ae6bd upstream.
    
    With GCC 12, -Wstringop-overread was warning about an implicit cast from
    char[6] to char[8]. However, the extra 2 bytes are always thrown away,
    alignment doesn't matter, and the risk of hitting the edge of unallocated
    memory has been accepted, so this prototype can just be converted to a
    regular char *. Silences:
    
    net/core/dev.c: In function ‘bpf_prog_run_generic_xdp’: net/core/dev.c:4618:21: warning: ‘ether_addr_equal_64bits’ reading 8 bytes from a region of size 6 [-Wstringop-overread]
     4618 |         orig_host = ether_addr_equal_64bits(eth->h_dest, > skb->dev->dev_addr);
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    net/core/dev.c:4618:21: note: referencing argument 1 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
    net/core/dev.c:4618:21: note: referencing argument 2 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
    In file included from net/core/dev.c:91: include/linux/etherdevice.h:375:20: note: in a call to function ‘ether_addr_equal_64bits’
      375 | static inline bool ether_addr_equal_64bits(const u8 addr1[6+2],
          |                    ^~~~~~~~~~~~~~~~~~~~~~~
    
    Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Tested-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Link: https://lore.kernel.org/netdev/20220212090811.uuzk6d76agw2vv73@pengutronix.de
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>