commit 97581b56b59fc79d6c376994a2e219349c31873f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Mar 8 19:09:39 2022 +0100

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

commit dbbe09d953773e89d7e9bfb49acd936ddf7d84db
Author: Huang Pei <huangpei@loongson.cn>
Date:   Tue Nov 23 19:07:48 2021 +0800

    hamradio: fix macro redefine warning
    
    commit 16517829f2e02f096fb5ea9083d160381127faf3 upstream.
    
    MIPS/IA64 define END as assembly function ending, which conflict
    with END definition in mkiss.c, just undef it at first
    
    Reported-by: lkp@intel.com
    Signed-off-by: Huang Pei <huangpei@loongson.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcd03efd7e8dee7a2f69bede085627fb82a9a94d
Author: Jiri Bohac <jbohac@suse.cz>
Date:   Wed Jan 26 16:00:18 2022 +0100

    Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6"
    
    commit a6d95c5a628a09be129f25d5663a7e9db8261f51 upstream.
    
    This reverts commit b515d2637276a3810d6595e10ab02c13bfd0b63a.
    
    Commit b515d2637276a3810d6595e10ab02c13bfd0b63a ("xfrm: xfrm_state_mtu
    should return at least 1280 for ipv6") in v5.14 breaks the TCP MSS
    calculation in ipsec transport mode, resulting complete stalls of TCP
    connections. This happens when the (P)MTU is 1280 or slighly larger.
    
    The desired formula for the MSS is:
    MSS = (MTU - ESP_overhead) - IP header - TCP header
    
    However, the above commit clamps the (MTU - ESP_overhead) to a
    minimum of 1280, turning the formula into
    MSS = max(MTU - ESP overhead, 1280) -  IP header - TCP header
    
    With the (P)MTU near 1280, the calculated MSS is too large and the
    resulting TCP packets never make it to the destination because they
    are over the actual PMTU.
    
    The above commit also causes suboptimal double fragmentation in
    xfrm tunnel mode, as described in
    https://lore.kernel.org/netdev/20210429202529.codhwpc7w6kbudug@dwarf.suse.cz/
    
    The original problem the above commit was trying to fix is now fixed
    by commit 6596a0229541270fb8d38d989f91b78838e5e9da ("xfrm: fix MTU
    regression").
    
    Signed-off-by: Jiri Bohac <jbohac@suse.cz>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 292e1c88b8a5616ada179f1f4f14c799571217af
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Feb 28 16:29:28 2022 +0000

    btrfs: add missing run of delayed items after unlink during log replay
    
    commit 4751dc99627e4d1465c5bfa8cb7ab31ed418eff5 upstream.
    
    During log replay, whenever we need to check if a name (dentry) exists in
    a directory we do searches on the subvolume tree for inode references or
    or directory entries (BTRFS_DIR_INDEX_KEY keys, and BTRFS_DIR_ITEM_KEY
    keys as well, before kernel 5.17). However when during log replay we
    unlink a name, through btrfs_unlink_inode(), we may not delete inode
    references and dir index keys from a subvolume tree and instead just add
    the deletions to the delayed inode's delayed items, which will only be
    run when we commit the transaction used for log replay. This means that
    after an unlink operation during log replay, if we attempt to search for
    the same name during log replay, we will not see that the name was already
    deleted, since the deletion is recorded only on the delayed items.
    
    We run delayed items after every unlink operation during log replay,
    except at unlink_old_inode_refs() and at add_inode_ref(). This was due
    to an overlook, as delayed items should be run after evert unlink, for
    the reasons stated above.
    
    So fix those two cases.
    
    Fixes: 0d836392cadd5 ("Btrfs: fix mount failure after fsync due to hard link recreation")
    Fixes: 1f250e929a9c9 ("Btrfs: fix log replay failure after unlink and link combination")
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41712c5fa51887252b349700a286ae151d55e460
Author: Sidong Yang <realwakka@gmail.com>
Date:   Mon Feb 28 01:43:40 2022 +0000

    btrfs: qgroup: fix deadlock between rescan worker and remove qgroup
    
    commit d4aef1e122d8bbdc15ce3bd0bc813d6b44a7d63a upstream.
    
    The commit e804861bd4e6 ("btrfs: fix deadlock between quota disable and
    qgroup rescan worker") by Kawasaki resolves deadlock between quota
    disable and qgroup rescan worker. But also there is a deadlock case like
    it. It's about enabling or disabling quota and creating or removing
    qgroup. It can be reproduced in simple script below.
    
    for i in {1..100}
    do
        btrfs quota enable /mnt &
        btrfs qgroup create 1/0 /mnt &
        btrfs qgroup destroy 1/0 /mnt &
        btrfs quota disable /mnt &
    done
    
    Here's why the deadlock happens:
    
    1) The quota rescan task is running.
    
    2) Task A calls btrfs_quota_disable(), locks the qgroup_ioctl_lock
       mutex, and then calls btrfs_qgroup_wait_for_completion(), to wait for
       the quota rescan task to complete.
    
    3) Task B calls btrfs_remove_qgroup() and it blocks when trying to lock
       the qgroup_ioctl_lock mutex, because it's being held by task A. At that
       point task B is holding a transaction handle for the current transaction.
    
    4) The quota rescan task calls btrfs_commit_transaction(). This results
       in it waiting for all other tasks to release their handles on the
       transaction, but task B is blocked on the qgroup_ioctl_lock mutex
       while holding a handle on the transaction, and that mutex is being held
       by task A, which is waiting for the quota rescan task to complete,
       resulting in a deadlock between these 3 tasks.
    
    To resolve this issue, the thread disabling quota should unlock
    qgroup_ioctl_lock before waiting rescan completion. Move
    btrfs_qgroup_wait_for_completion() after unlock of qgroup_ioctl_lock.
    
    Fixes: e804861bd4e6 ("btrfs: fix deadlock between quota disable and qgroup rescan worker")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Sidong Yang <realwakka@gmail.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e0319e770839ab9aaee10e0e2b34edb92491831
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Feb 17 12:12:02 2022 +0000

    btrfs: fix lost prealloc extents beyond eof after full fsync
    
    commit d99478874355d3a7b9d86dfb5d7590d5b1754b1f upstream.
    
    When doing a full fsync, if we have prealloc extents beyond (or at) eof,
    and the leaves that contain them were not modified in the current
    transaction, we end up not logging them. This results in losing those
    extents when we replay the log after a power failure, since the inode is
    truncated to the current value of the logged i_size.
    
    Just like for the fast fsync path, we need to always log all prealloc
    extents starting at or beyond i_size. The fast fsync case was fixed in
    commit 471d557afed155 ("Btrfs: fix loss of prealloc extents past i_size
    after fsync log replay") but it missed the full fsync path. The problem
    exists since the very early days, when the log tree was added by
    commit e02119d5a7b439 ("Btrfs: Add a write ahead tree log to optimize
    synchronous operations").
    
    Example reproducer:
    
      $ mkfs.btrfs -f /dev/sdc
      $ mount /dev/sdc /mnt
    
      # Create our test file with many file extent items, so that they span
      # several leaves of metadata, even if the node/page size is 64K. Use
      # direct IO and not fsync/O_SYNC because it's both faster and it avoids
      # clearing the full sync flag from the inode - we want the fsync below
      # to trigger the slow full sync code path.
      $ xfs_io -f -d -c "pwrite -b 4K 0 16M" /mnt/foo
    
      # Now add two preallocated extents to our file without extending the
      # file's size. One right at i_size, and another further beyond, leaving
      # a gap between the two prealloc extents.
      $ xfs_io -c "falloc -k 16M 1M" /mnt/foo
      $ xfs_io -c "falloc -k 20M 1M" /mnt/foo
    
      # Make sure everything is durably persisted and the transaction is
      # committed. This makes all created extents to have a generation lower
      # than the generation of the transaction used by the next write and
      # fsync.
      sync
    
      # Now overwrite only the first extent, which will result in modifying
      # only the first leaf of metadata for our inode. Then fsync it. This
      # fsync will use the slow code path (inode full sync bit is set) because
      # it's the first fsync since the inode was created/loaded.
      $ xfs_io -c "pwrite 0 4K" -c "fsync" /mnt/foo
    
      # Extent list before power failure.
      $ xfs_io -c "fiemap -v" /mnt/foo
      /mnt/foo:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..7]:          2178048..2178055     8   0x0
         1: [8..16383]:      26632..43007     16376   0x0
         2: [16384..32767]:  2156544..2172927 16384   0x0
         3: [32768..34815]:  2172928..2174975  2048 0x800
         4: [34816..40959]:  hole              6144
         5: [40960..43007]:  2174976..2177023  2048 0x801
    
      <power fail>
    
      # Mount fs again, trigger log replay.
      $ mount /dev/sdc /mnt
    
      # Extent list after power failure and log replay.
      $ xfs_io -c "fiemap -v" /mnt/foo
      /mnt/foo:
       EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
         0: [0..7]:          2178048..2178055     8   0x0
         1: [8..16383]:      26632..43007     16376   0x0
         2: [16384..32767]:  2156544..2172927 16384   0x1
    
      # The prealloc extents at file offsets 16M and 20M are missing.
    
    So fix this by calling btrfs_log_prealloc_extents() when we are doing a
    full fsync, so that we always log all prealloc extents beyond eof.
    
    A test case for fstests will follow soon.
    
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 827172ffa99965fd1c43f868da64dc9e9232407f
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Mar 2 19:17:44 2022 -0800

    tracing: Fix return value of __setup handlers
    
    commit 1d02b444b8d1345ea4708db3bab4db89a7784b55 upstream.
    
    __setup() handlers should generally return 1 to indicate that the
    boot options have been handled.
    
    Using invalid option values causes the entire kernel boot option
    string to be reported as Unknown and added to init's environment
    strings, polluting it.
    
      Unknown kernel command line parameters "BOOT_IMAGE=/boot/bzImage-517rc6
        kprobe_event=p,syscall_any,$arg1 trace_options=quiet
        trace_clock=jiffies", will be passed to user space.
    
     Run /sbin/init as init process
       with arguments:
         /sbin/init
       with environment:
         HOME=/
         TERM=linux
         BOOT_IMAGE=/boot/bzImage-517rc6
         kprobe_event=p,syscall_any,$arg1
         trace_options=quiet
         trace_clock=jiffies
    
    Return 1 from the __setup() handlers so that init's environment is not
    polluted with kernel boot options.
    
    Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
    Link: https://lkml.kernel.org/r/20220303031744.32356-1-rdunlap@infradead.org
    
    Cc: stable@vger.kernel.org
    Fixes: 7bcfaf54f591 ("tracing: Add trace_options kernel command line parameter")
    Fixes: e1e232ca6b8f ("tracing: Add trace_clock=<clock> kernel parameter")
    Fixes: 970988e19eb0 ("tracing/kprobe: Add kprobe_event= boot parameter")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78059b1cfcd954e9c3ed6a5c3a8cd03f3b966c43
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Tue Mar 1 22:29:04 2022 -0500

    tracing/histogram: Fix sorting on old "cpu" value
    
    commit 1d1898f65616c4601208963c3376c1d828cbf2c7 upstream.
    
    When trying to add a histogram against an event with the "cpu" field, it
    was impossible due to "cpu" being a keyword to key off of the running CPU.
    So to fix this, it was changed to "common_cpu" to match the other generic
    fields (like "common_pid"). But since some scripts used "cpu" for keying
    off of the CPU (for events that did not have "cpu" as a field, which is
    most of them), a backward compatibility trick was added such that if "cpu"
    was used as a key, and the event did not have "cpu" as a field name, then
    it would fallback and switch over to "common_cpu".
    
    This fix has a couple of subtle bugs. One was that when switching over to
    "common_cpu", it did not change the field name, it just set a flag. But
    the code still found a "cpu" field. The "cpu" field is used for filtering
    and is returned when the event does not have a "cpu" field.
    
    This was found by:
    
      # cd /sys/kernel/tracing
      # echo hist:key=cpu,pid:sort=cpu > events/sched/sched_wakeup/trigger
      # cat events/sched/sched_wakeup/hist
    
    Which showed the histogram unsorted:
    
    { cpu:         19, pid:       1175 } hitcount:          1
    { cpu:          6, pid:        239 } hitcount:          2
    { cpu:         23, pid:       1186 } hitcount:         14
    { cpu:         12, pid:        249 } hitcount:          2
    { cpu:          3, pid:        994 } hitcount:          5
    
    Instead of hard coding the "cpu" checks, take advantage of the fact that
    trace_event_field_field() returns a special field for "cpu" and "CPU" if
    the event does not have "cpu" as a field. This special field has the
    "filter_type" of "FILTER_CPU". Check that to test if the returned field is
    of the CPU type instead of doing the string compare.
    
    Also, fix the sorting bug by testing for the hist_field flag of
    HIST_FIELD_FL_CPU when setting up the sort routine. Otherwise it will use
    the special CPU field to know what compare routine to use, and since that
    special field does not have a size, it returns tracing_map_cmp_none.
    
    Cc: stable@vger.kernel.org
    Fixes: 1e3bac71c505 ("tracing/histogram: Rename "cpu" to "common_cpu"")
    Reported-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e188fde82d7c80a6301954fbfb398ddaa8647c3
Author: William Mahon <wmahon@chromium.org>
Date:   Thu Mar 3 18:26:22 2022 -0800

    HID: add mapping for KEY_ALL_APPLICATIONS
    
    commit 327b89f0acc4c20a06ed59e4d9af7f6d804dc2e2 upstream.
    
    This patch adds a new key definition for KEY_ALL_APPLICATIONS
    and aliases KEY_DASHBOARD to it.
    
    It also maps the 0x0c/0x2a2 usage code to KEY_ALL_APPLICATIONS.
    
    Signed-off-by: William Mahon <wmahon@chromium.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20220303035618.1.I3a7746ad05d270161a18334ae06e3b6db1a1d339@changeid
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f276ea5035aafc508c4d34b121e2ddf22f131816
Author: William Mahon <wmahon@chromium.org>
Date:   Thu Mar 3 18:23:42 2022 -0800

    HID: add mapping for KEY_DICTATE
    
    commit bfa26ba343c727e055223be04e08f2ebdd43c293 upstream.
    
    Numerous keyboards are adding dictate keys which allows for text
    messages to be dictated by a microphone.
    
    This patch adds a new key definition KEY_DICTATE and maps 0x0c/0x0d8
    usage code to this new keycode. Additionally hid-debug is adjusted to
    recognize this new usage code as well.
    
    Signed-off-by: William Mahon <wmahon@chromium.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20220303021501.1.I5dbf50eb1a7a6734ee727bda4a8573358c6d3ec0@changeid
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b8f2a7aed8005c115684c9126f816a3d4cfe2ea
Author: David Gow <davidgow@google.com>
Date:   Sun Feb 27 21:00:10 2022 -0800

    Input: samsung-keypad - properly state IOMEM dependency
    
    commit ba115adf61b36b8c167126425a62b0efc23f72c0 upstream.
    
    Make the samsung-keypad driver explicitly depend on CONFIG_HAS_IOMEM, as it
    calls devm_ioremap(). This prevents compile errors in some configs (e.g,
    allyesconfig/randconfig under UML):
    
    /usr/bin/ld: drivers/input/keyboard/samsung-keypad.o: in function `samsung_keypad_probe':
    samsung-keypad.c:(.text+0xc60): undefined reference to `devm_ioremap'
    
    Signed-off-by: David Gow <davidgow@google.com>
    Acked-by: anton ivanov <anton.ivanov@cambridgegreys.com>
    Link: https://lore.kernel.org/r/20220225041727.1902850-1-davidgow@google.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a621ae6394ce05177fa9941da1a9b465c9c47d31
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Feb 28 23:39:50 2022 -0800

    Input: elan_i2c - fix regulator enable count imbalance after suspend/resume
    
    commit 04b7762e37c95d9b965d16bb0e18dbd1fa2e2861 upstream.
    
    Before these changes elan_suspend() would only disable the regulator
    when device_may_wakeup() returns false; whereas elan_resume() would
    unconditionally enable it, leading to an enable count imbalance when
    device_may_wakeup() returns true.
    
    This triggers the "WARN_ON(regulator->enable_count)" in regulator_put()
    when the elan_i2c driver gets unbound, this happens e.g. with the
    hot-plugable dock with Elan I2C touchpad for the Asus TF103C 2-in-1.
    
    Fix this by making the regulator_enable() call also be conditional
    on device_may_wakeup() returning false.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220131135436.29638-2-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1397bbcd817f897e8a2ee8b9a026c327f9f5470e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Feb 28 23:39:38 2022 -0800

    Input: elan_i2c - move regulator_[en|dis]able() out of elan_[en|dis]able_power()
    
    commit 81a36d8ce554b82b0a08e2b95d0bd44fcbff339b upstream.
    
    elan_disable_power() is called conditionally on suspend, where as
    elan_enable_power() is always called on resume. This leads to
    an imbalance in the regulator's enable count.
    
    Move the regulator_[en|dis]able() calls out of elan_[en|dis]able_power()
    in preparation of fixing this.
    
    No functional changes intended.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220131135436.29638-1-hdegoede@redhat.com
    [dtor: consolidate elan_[en|dis]able() into elan_set_power()]
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 988f4f29cc44cb2c08d667901425dd7b093fe7cc
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Wed Mar 2 21:39:39 2022 +0200

    net: dcb: disable softirqs in dcbnl_flush_dev()
    
    [ Upstream commit 10b6bb62ae1a49ee818fc479cf57b8900176773e ]
    
    Ido Schimmel points out that since commit 52cff74eef5d ("dcbnl : Disable
    software interrupts before taking dcb_lock"), the DCB API can be called
    by drivers from softirq context.
    
    One such in-tree example is the chelsio cxgb4 driver:
    dcb_rpl
    -> cxgb4_dcb_handle_fw_update
       -> dcb_ieee_setapp
    
    If the firmware for this driver happened to send an event which resulted
    in a call to dcb_ieee_setapp() at the exact same time as another
    DCB-enabled interface was unregistering on the same CPU, the softirq
    would deadlock, because the interrupted process was already holding the
    dcb_lock in dcbnl_flush_dev().
    
    Fix this unlikely event by using spin_lock_bh() in dcbnl_flush_dev() as
    in the rest of the dcbnl code.
    
    Fixes: 91b0383fef06 ("net: dcb: flush lingering app table entries for unregistered devices")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220302193939.1368823-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6828da5dea530f4743ecdef89f90cc117dfe3cee
Author: Qiang Yu <qiang.yu@amd.com>
Date:   Tue Mar 1 14:11:59 2022 +0800

    drm/amdgpu: fix suspend/resume hang regression
    
    [ Upstream commit f1ef17011c765495c876fa75435e59eecfdc1ee4 ]
    
    Regression has been reported that suspend/resume may hang with
    the previous vm ready check commit.
    
    So bring back the evicted list check as a temp fix.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1922
    Fixes: c1a66c3bc425 ("drm/amdgpu: check vm ready by amdgpu_vm->evicting flag")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Qiang Yu <qiang.yu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5e496ef73f307bef4d4f14edb45512d4d245954
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Tue Mar 1 18:00:20 2022 +0800

    nl80211: Handle nla_memdup failures in handle_nan_filter
    
    [ Upstream commit 6ad27f522cb3b210476daf63ce6ddb6568c0508b ]
    
    As there's potential for failure of the nla_memdup(),
    check the return value.
    
    Fixes: a442b761b24b ("cfg80211: add add_nan_func / del_nan_func")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20220301100020.3801187-1-jiasheng@iscas.ac.cn
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64e4305a03d0c906f620b532465c3c158a7201b8
Author: Mateusz Palczewski <mateusz.palczewski@intel.com>
Date:   Thu Aug 19 08:47:40 2021 +0000

    iavf: Refactor iavf state machine tracking
    
    [ Upstream commit 45eebd62999d37d13568723524b99d828e0ce22c ]
    
    Replace state changes of iavf state machine
    with a method that also tracks the previous
    state the machine was on.
    
    This change is required for further work with
    refactoring init and watchdog state machines.
    
    Tracking of previous state would help us
    recover iavf after failure has occurred.
    
    Signed-off-by: Jakub Pawlak <jakub.pawlak@intel.com>
    Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e6bc597fbcb20039ec84b3fdc762e368192889d6
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Fri Feb 25 04:37:27 2022 -0800

    net: chelsio: cxgb3: check the return value of pci_find_capability()
    
    [ Upstream commit 767b9825ed1765894e569a3d698749d40d83762a ]
    
    The function pci_find_capability() in t3_prep_adapter() can fail, so its
    return value should be checked.
    
    Fixes: 4d22de3e6cc4 ("Add support for the latest 1G/10G Chelsio adapter, T3")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 320980b2496dc781b058e56c5dd244840aa6e83a
Author: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Date:   Thu Feb 24 22:23:54 2022 -0800

    ibmvnic: complete init_done on transport events
    
    [ Upstream commit 36491f2df9ad2501e5a4ec25d3d95d72bafd2781 ]
    
    If we get a transport event, set the error and mark the init as
    complete so the attempt to send crq-init or login fail sooner
    rather than wait for the timeout.
    
    Fixes: bbd669a868bb ("ibmvnic: Fix completion structure initialization")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86027004bb9d4021f215027d981228200dc598bd
Author: Thierry Reding <treding@nvidia.com>
Date:   Mon Dec 20 11:32:39 2021 +0100

    ARM: tegra: Move panels to AUX bus
    
    [ Upstream commit 8d3b01e0d4bb54368d73d0984466d72c2eeeac74 ]
    
    Move the eDP panel on Venice 2 and Nyan boards into the corresponding
    AUX bus device tree node. This allows us to avoid a nasty circular
    dependency that would otherwise be created between the DPAUX and panel
    nodes via the DDC/I2C phandle.
    
    Fixes: eb481f9ac95c ("ARM: tegra: add Acer Chromebook 13 device tree")
    Fixes: 59fe02cb079f ("ARM: tegra: Add DTS for the nyan-blaze board")
    Fixes: 40e231c770a4 ("ARM: tegra: Enable eDP for Venice2")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fbb810825aff29e8e594538e5ef3c7a2dd670f96
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Thu Dec 30 09:45:43 2021 +0800

    soc: fsl: qe: Check of ioremap return value
    
    [ Upstream commit a222fd8541394b36b13c89d1698d9530afd59a9c ]
    
    As the possible failure of the ioremap(), the par_io could be NULL.
    Therefore it should be better to check it and return error in order to
    guarantee the success of the initiation.
    But, I also notice that all the caller like mpc85xx_qe_par_io_init() in
    `arch/powerpc/platforms/85xx/common.c` don't check the return value of
    the par_io_init().
    Actually, par_io_init() needs to check to handle the potential error.
    I will submit another patch to fix that.
    Anyway, par_io_init() itsely should be fixed.
    
    Fixes: 7aa1aa6ecec2 ("QE: Move QE from arch/powerpc to drivers/soc")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2824f6939e2623ce1484aa39fadcdcf772d0f484
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Nov 3 21:00:33 2021 +0100

    soc: fsl: guts: Add a missing memory allocation failure check
    
    [ Upstream commit b9abe942cda43a1d46a0fd96efb54f1aa909f757 ]
    
    If 'devm_kstrdup()' fails, we should return -ENOMEM.
    
    While at it, move the 'of_node_put()' call in the error handling path and
    after the 'machine' has been copied.
    Better safe than sorry.
    
    Fixes: a6fc3b698130 ("soc: fsl: add GUTS driver for QorIQ platforms")
    Depends-on: fddacc7ff4dd ("soc: fsl: guts: Revert commit 3c0d64e867ed")
    Suggested-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3afe488d5c9ce82564d6ce5f4706c2c47c652a9f
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Nov 3 21:00:17 2021 +0100

    soc: fsl: guts: Revert commit 3c0d64e867ed
    
    [ Upstream commit b113737cf12964a20cc3ba1ddabe6229099661c6 ]
    
    This reverts commit 3c0d64e867ed
    ("soc: fsl: guts: reuse machine name from device tree").
    
    A following patch will fix the missing memory allocation failure check
    instead.
    
    Suggested-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44709130793bb7e23c929e54b248b0b3816944d6
Author: Anthoine Bourgeois <anthoine.bourgeois@gmail.com>
Date:   Tue Jan 25 20:11:39 2022 +0100

    ARM: dts: Use 32KiHz oscillator on devkit8000
    
    [ Upstream commit 8840f5460a23759403f1f2860429dcbcc2f04a65 ]
    
    Devkit8000 board seems to always used 32k_counter as clocksource.
    Restore this behavior.
    
    If clocksource is back to 32k_counter, timer12 is now the clockevent
    source (as before) and timer2 is not longer needed here.
    
    This commit fixes the same issue observed with commit 23885389dbbb
    ("ARM: dts: Fix timer regression for beagleboard revision c") when sleep
    is blocked until hitting keys over serial console.
    
    Fixes: aba1ad05da08 ("clocksource/drivers/timer-ti-dm: Add clockevent and clocksource support")
    Fixes: e428e250fde6 ("ARM: dts: Configure system timers for omap3")
    Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 298f6fae544f422007db3b2a17f63bcc8eeac42c
Author: Anthoine Bourgeois <anthoine.bourgeois@gmail.com>
Date:   Tue Jan 25 20:11:38 2022 +0100

    ARM: dts: switch timer config to common devkit8000 devicetree
    
    [ Upstream commit 64324ef337d0caa5798fa8fa3f6bbfbd3245868a ]
    
    This patch allow lcd43 and lcd70 flavors to benefit from timer
    evolution.
    
    Fixes: e428e250fde6 ("ARM: dts: Configure system timers for omap3")
    Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b20c1999d3a70c14608f26f752c9155e7db700a
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Thu Feb 24 22:03:29 2022 +0100

    s390/extable: fix exception table sorting
    
    commit c194dad21025dfd043210912653baab823bdff67 upstream.
    
    s390 has a swap_ex_entry_fixup function, however it is not being used
    since common code expects a swap_ex_entry_fixup define. If it is not
    defined the default implementation will be used. So fix this by adding
    a proper define.
    However also the implementation of the function must be fixed, since a
    NULL value for handler has a special meaning and must not be adjusted.
    
    Luckily all of this doesn't fix a real bug currently: the main extable
    is correctly sorted during build time, and for runtime sorting there
    is currently no case where the handler field is not NULL.
    
    Fixes: 05a68e892e89 ("s390/kernel: expand exception table logic to allow new handling options")
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49aa9c9c7fa7c580d8f9f65b7bd05e537a4a3e4b
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Mar 4 20:29:01 2022 -0800

    memfd: fix F_SEAL_WRITE after shmem huge page allocated
    
    commit f2b277c4d1c63a85127e8aa2588e9cc3bd21cb99 upstream.
    
    Wangyong reports: after enabling tmpfs filesystem to support transparent
    hugepage with the following command:
    
      echo always > /sys/kernel/mm/transparent_hugepage/shmem_enabled
    
    the docker program tries to add F_SEAL_WRITE through the following
    command, but it fails unexpectedly with errno EBUSY:
    
      fcntl(5, F_ADD_SEALS, F_SEAL_WRITE) = -1.
    
    That is because memfd_tag_pins() and memfd_wait_for_pins() were never
    updated for shmem huge pages: checking page_mapcount() against
    page_count() is hopeless on THP subpages - they need to check
    total_mapcount() against page_count() on THP heads only.
    
    Make memfd_tag_pins() (compared > 1) as strict as memfd_wait_for_pins()
    (compared != 1): either can be justified, but given the non-atomic
    total_mapcount() calculation, it is better now to be strict.  Bear in
    mind that total_mapcount() itself scans all of the THP subpages, when
    choosing to take an XA_CHECK_SCHED latency break.
    
    Also fix the unlikely xa_is_value() case in memfd_wait_for_pins(): if a
    page has been swapped out since memfd_tag_pins(), then its refcount must
    have fallen, and so it can safely be untagged.
    
    Link: https://lkml.kernel.org/r/a4f79248-df75-2c8c-3df-ba3317ccb5da@google.com
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reported-by: Zeal Robot <zealci@zte.com.cn>
    Reported-by: wangyong <wang.yong12@zte.com.cn>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: CGEL ZTE <cgel.zte@gmail.com>
    Cc: Kirill A. Shutemov <kirill@shutemov.name>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Yang Yang <yang.yang29@zte.com.cn>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6acbc8875282d3ca8a73fa93cd7a9b166de5019c
Author: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Date:   Thu Feb 24 22:23:51 2022 -0800

    ibmvnic: free reset-work-item when flushing
    
    commit 8d0657f39f487d904fca713e0bc39c2707382553 upstream.
    
    Fix a tiny memory leak when flushing the reset work queue.
    
    Fixes: 2770a7984db5 ("ibmvnic: Introduce hard reset recovery")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d8a11d74de547093f1848ee4e5886a31c77aa97
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Sun Feb 20 09:29:15 2022 +0200

    igc: igc_write_phy_reg_gpy: drop premature return
    
    commit c4208653a327a09da1e9e7b10299709b6d9b17bf upstream.
    
    Similar to "igc_read_phy_reg_gpy: drop premature return" patch.
    igc_write_phy_reg_gpy checks the return value from igc_write_phy_reg_mdic
    and if it's not 0, returns immediately. By doing this, it leaves the HW
    semaphore in the acquired state.
    
    Drop this premature return statement, the function returns after
    releasing the semaphore immediately anyway.
    
    Fixes: 5586838fe9ce ("igc: Add code for PHY support")
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Reported-by: Corinna Vinschen <vinschen@redhat.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 223744f5213311abdd2fcabe08c3bae19a9c1716
Author: Samuel Holland <samuel@sholland.org>
Date:   Tue Feb 15 22:00:36 2022 -0600

    pinctrl: sunxi: Use unique lockdep classes for IRQs
    
    commit bac129dbc6560dfeb634c03f0c08b78024e71915 upstream.
    
    This driver, like several others, uses a chained IRQ for each GPIO bank,
    and forwards .irq_set_wake to the GPIO bank's upstream IRQ. As a result,
    a call to irq_set_irq_wake() needs to lock both the upstream and
    downstream irq_desc's. Lockdep considers this to be a possible deadlock
    when the irq_desc's share lockdep classes, which they do by default:
    
     ============================================
     WARNING: possible recursive locking detected
     5.17.0-rc3-00394-gc849047c2473 #1 Not tainted
     --------------------------------------------
     init/307 is trying to acquire lock:
     c2dfe27c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0x58/0xa0
    
     but task is already holding lock:
     c3c0ac7c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0x58/0xa0
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&irq_desc_lock_class);
       lock(&irq_desc_lock_class);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
     4 locks held by init/307:
      #0: c1f29f18 (system_transition_mutex){+.+.}-{3:3}, at: __do_sys_reboot+0x90/0x23c
      #1: c20f7760 (&dev->mutex){....}-{3:3}, at: device_shutdown+0xf4/0x224
      #2: c2e804d8 (&dev->mutex){....}-{3:3}, at: device_shutdown+0x104/0x224
      #3: c3c0ac7c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0x58/0xa0
    
     stack backtrace:
     CPU: 0 PID: 307 Comm: init Not tainted 5.17.0-rc3-00394-gc849047c2473 #1
     Hardware name: Allwinner sun8i Family
      unwind_backtrace from show_stack+0x10/0x14
      show_stack from dump_stack_lvl+0x68/0x90
      dump_stack_lvl from __lock_acquire+0x1680/0x31a0
      __lock_acquire from lock_acquire+0x148/0x3dc
      lock_acquire from _raw_spin_lock_irqsave+0x50/0x6c
      _raw_spin_lock_irqsave from __irq_get_desc_lock+0x58/0xa0
      __irq_get_desc_lock from irq_set_irq_wake+0x2c/0x19c
      irq_set_irq_wake from irq_set_irq_wake+0x13c/0x19c
        [tail call from sunxi_pinctrl_irq_set_wake]
      irq_set_irq_wake from gpio_keys_suspend+0x80/0x1a4
      gpio_keys_suspend from gpio_keys_shutdown+0x10/0x2c
      gpio_keys_shutdown from device_shutdown+0x180/0x224
      device_shutdown from __do_sys_reboot+0x134/0x23c
      __do_sys_reboot from ret_fast_syscall+0x0/0x1c
    
    However, this can never deadlock because the upstream and downstream
    IRQs are never the same (nor do they even involve the same irqchip).
    
    Silence this erroneous lockdep splat by applying what appears to be the
    usual fix of moving the GPIO IRQs to separate lockdep classes.
    
    Fixes: a59c99d9eaf9 ("pinctrl: sunxi: Forward calls to irq_set_irq_wake")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20220216040037.22730-1-samuel@sholland.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2851b76e5fd0ed80402d433ed0d28f970c0e67ff
Author: Amit Cohen <amcohen@nvidia.com>
Date:   Wed Mar 2 18:14:46 2022 +0200

    selftests: mlxsw: tc_police_scale: Make test more robust
    
    commit dc9752075341e7beb653e37c6f4a3723074dc8bc upstream.
    
    The test adds tc filters and checks how many of them were offloaded by
    grepping for 'in_hw'.
    
    iproute2 commit f4cd4f127047 ("tc: add skip_hw and skip_sw to control
    action offload") added offload indication to tc actions, producing the
    following output:
    
     $ tc filter show dev swp2 ingress
     ...
     filter protocol ipv6 pref 1000 flower chain 0 handle 0x7c0
       eth_type ipv6
       dst_ip 2001:db8:1::7bf
       skip_sw
       in_hw in_hw_count 1
             action order 1:  police 0x7c0 rate 10Mbit burst 100Kb mtu 2Kb action drop overhead 0b
             ref 1 bind 1
             not_in_hw
             used_hw_stats immediate
    
    The current grep expression matches on both 'in_hw' and 'not_in_hw',
    resulting in incorrect results.
    
    Fix that by using JSON output instead.
    
    Fixes: 5061e773264b ("selftests: mlxsw: Add scale test for tc-police")
    Signed-off-by: Amit Cohen <amcohen@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85bf489c5c01fcfb46d586a1b90686a9b526f1b8
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Feb 23 20:46:35 2022 +0100

    ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions
    
    commit 7b83299e5b9385943a857d59e15cba270df20d7e upstream.
    
    early_param() handlers should return 0 on success.
    __setup() handlers should return 1 on success, i.e., the parameter
    has been handled. A return of 0 would cause the "option=value" string
    to be added to init's environment strings, polluting it.
    
    ../arch/arm/mm/mmu.c: In function 'test_early_cachepolicy':
    ../arch/arm/mm/mmu.c:215:1: error: no return statement in function returning non-void [-Werror=return-type]
    ../arch/arm/mm/mmu.c: In function 'test_noalign_setup':
    ../arch/arm/mm/mmu.c:221:1: error: no return statement in function returning non-void [-Werror=return-type]
    
    Fixes: b849a60e0903 ("ARM: make cr_alignment read-only #ifndef CONFIG_CPU_CP15")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: patches@armlinux.org.uk
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b6341049086e9a20a33695f8c4ebb6ba3d4e073
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Wed Feb 16 15:37:38 2022 +0000

    ARM: Fix kgdb breakpoint for Thumb2
    
    commit d920eaa4c4559f59be7b4c2d26fa0a2e1aaa3da9 upstream.
    
    The kgdb code needs to register an undef hook for the Thumb UDF
    instruction that will fault in order to be functional on Thumb2
    platforms.
    
    Reported-by: Johannes Stezenbach <js@sig21.net>
    Tested-by: Johannes Stezenbach <js@sig21.net>
    Fixes: 5cbad0ebf45c ("kgdb: support for ARCH=arm")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fefe4cb4a6403d24dd227b3a5667f462ba17dce9
Author: Corinna Vinschen <vinschen@redhat.com>
Date:   Wed Feb 16 14:31:35 2022 +0100

    igc: igc_read_phy_reg_gpy: drop premature return
    
    commit fda2635466cd26ad237e1bc5d3f6a60f97ad09b6 upstream.
    
    igc_read_phy_reg_gpy checks the return value from igc_read_phy_reg_mdic
    and if it's not 0, returns immediately. By doing this, it leaves the HW
    semaphore in the acquired state.
    
    Drop this premature return statement, the function returns after
    releasing the semaphore immediately anyway.
    
    Fixes: 5586838fe9ce ("igc: Add code for PHY support")
    Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0632854fb171ca46a32193a8666c82baf324e253
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Jan 14 15:02:07 2022 -0800

    arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output
    
    commit b5fbaf7d779f5f02b7f75b080e7707222573be2a upstream.
    
    Commit b18c6c3c7768 ("ASoC: rockchip: cdn-dp sound output use spdif")
    switched the platform to SPDIF, but we didn't fix up the device tree.
    
    Drop the pinctrl settings, because the 'spdif_bus' pins are either:
     * unused (on kevin, bob), so the settings is ~harmless
     * used by a different function (on scarlet), which causes probe
       failures (!!)
    
    Fixes: b18c6c3c7768 ("ASoC: rockchip: cdn-dp sound output use spdif")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
    Link: https://lore.kernel.org/r/20220114150129.v2.1.I46f64b00508d9dff34abe1c3e8d2defdab4ea1e5@changeid
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43eaf1b17845a25e3e3a7d3f09c2f5ebd4a9d607
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Tue Feb 15 08:48:14 2022 +0900

    can: gs_usb: change active_channels's type from atomic_t to u8
    
    commit 035b0fcf02707d3c9c2890dc1484b11aa5335eb1 upstream.
    
    The driver uses an atomic_t variable: gs_usb:active_channels to keep
    track of the number of opened channels in order to only allocate
    memory for the URBs when this count changes from zero to one.
    
    However, the driver does not decrement the counter when an error
    occurs in gs_can_open(). This issue is fixed by changing the type from
    atomic_t to u8 and by simplifying the logic accordingly.
    
    It is safe to use an u8 here because the network stack big kernel lock
    (a.k.a. rtnl_mutex) is being hold. For details, please refer to [1].
    
    [1] https://lore.kernel.org/linux-can/CAMZ6Rq+sHpiw34ijPsmp7vbUpDtJwvVtdV7CvRZJsLixjAFfrg@mail.gmail.com/T/#t
    
    Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
    Link: https://lore.kernel.org/all/20220214234814.1321599-1-mailhol.vincent@wanadoo.fr
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit daaed6ced88c021798b7f739839091b5cc38000f
Author: Fabio Estevam <festevam@denx.de>
Date:   Tue Feb 15 09:05:14 2022 -0300

    ASoC: cs4265: Fix the duplicated control name
    
    commit c5487b9cdea5c1ede38a7ec94db0fc59963c8e86 upstream.
    
    Currently, the following error messages are seen during boot:
    
    asoc-simple-card sound: control 2:0:0:SPDIF Switch:0 is already present
    cs4265 1-004f: ASoC: failed to add widget SPDIF dapm kcontrol SPDIF Switch: -16
    
    Quoting Mark Brown:
    
    "The driver is just plain buggy, it defines both a regular SPIDF Switch
    control and a SND_SOC_DAPM_SWITCH() called SPDIF both of which will
    create an identically named control, it can never have loaded without
    error.  One or both of those has to be renamed or they need to be
    merged into one thing."
    
    Fix the duplicated control name by combining the two SPDIF controls here
    and move the register bits onto the DAPM widget and have DAPM control them.
    
    Fixes: f853d6b3ba34 ("ASoC: cs4265: Add a S/PDIF enable switch")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220215120514.1760628-1-festevam@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b8ac465bf526a1241cd2eb1333d039c87911170
Author: Alyssa Ross <hi@alyssa.is>
Date:   Fri Feb 11 10:27:04 2022 +0000

    firmware: arm_scmi: Remove space in MODULE_ALIAS name
    
    commit 1ba603f56568c3b4c2542dfba07afa25f21dcff3 upstream.
    
    modprobe can't handle spaces in aliases. Get rid of it to fix the issue.
    
    Link: https://lore.kernel.org/r/20220211102704.128354-1-sudeep.holla@arm.com
    Fixes: aa4f886f3893 ("firmware: arm_scmi: add basic driver infrastructure for SCMI")
    Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
    Signed-off-by: Alyssa Ross <hi@alyssa.is>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 667df6fe3ece20aaaefc8838659a7e0504cd9a32
Author: Jann Horn <jannh@google.com>
Date:   Fri Feb 18 19:05:59 2022 +0100

    efivars: Respect "block" flag in efivar_entry_set_safe()
    
    commit 258dd902022cb10c83671176688074879517fd21 upstream.
    
    When the "block" flag is false, the old code would sometimes still call
    check_var_size(), which wrongly tells ->query_variable_store() that it can
    block.
    
    As far as I can tell, this can't really materialize as a bug at the moment,
    because ->query_variable_store only does something on X86 with generic EFI,
    and in that configuration we always take the efivar_entry_set_nonblocking()
    path.
    
    Fixes: ca0e30dcaa53 ("efi: Add nonblocking option to efi_query_variable_store()")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20220218180559.1432559-1-jannh@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 283c37e5429e0c5469b6ce785fec9da1248c7d14
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Wed Mar 2 09:59:27 2022 -0800

    ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc()
    
    commit 6c7273a266759d9d36f7c862149f248bcdeddc0f upstream.
    
    Commit c685c69fba71 ("ixgbe: don't do any AF_XDP zero-copy transmit if
    netif is not OK") addressed the ring transient state when
    MEM_TYPE_XSK_BUFF_POOL was being configured which in turn caused the
    interface to through down/up. Maurice reported that when carrier is not
    ok and xsk_pool is present on ring pair, ksoftirqd will consume 100% CPU
    cycles due to the constant NAPI rescheduling as ixgbe_poll() states that
    there is still some work to be done.
    
    To fix this, do not set work_done to false for a !netif_carrier_ok().
    
    Fixes: c685c69fba71 ("ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK")
    Reported-by: Maurice Baijens <maurice.baijens@ellips.com>
    Tested-by: Maurice Baijens <maurice.baijens@ellips.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f394102ee27dbf051a4e283390cd8d1759dacea
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Wed Mar 2 20:24:23 2022 +0800

    net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe()
    
    commit bd6f1fd5d33dfe5d1b4f2502d3694a7cc13f166d upstream.
    
    During driver initialization, the pointer of card info, i.e. the
    variable 'ci' is required. However, the definition of
    'com20020pci_id_table' reveals that this field is empty for some
    devices, which will cause null pointer dereference when initializing
    these devices.
    
    The following log reveals it:
    
    [    3.973806] KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f]
    [    3.973819] RIP: 0010:com20020pci_probe+0x18d/0x13e0 [com20020_pci]
    [    3.975181] Call Trace:
    [    3.976208]  local_pci_probe+0x13f/0x210
    [    3.977248]  pci_device_probe+0x34c/0x6d0
    [    3.977255]  ? pci_uevent+0x470/0x470
    [    3.978265]  really_probe+0x24c/0x8d0
    [    3.978273]  __driver_probe_device+0x1b3/0x280
    [    3.979288]  driver_probe_device+0x50/0x370
    
    Fix this by checking whether the 'ci' is a null pointer first.
    
    Fixes: 8c14f9c70327 ("ARCNET: add com20020 PCI IDs with metadata")
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92b791771abd2ebbd85cbc4d17388f6bd939977f
Author: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Date:   Thu Feb 24 22:23:55 2022 -0800

    ibmvnic: register netdev after init of adapter
    
    commit 570425f8c7c18b14fa8a2a58a0adb431968ad118 upstream.
    
    Finish initializing the adapter before registering netdev so state
    is consistent.
    
    Fixes: c26eba03e407 ("ibmvnic: Update reset infrastructure to support tunable parameters")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e0f986032c50e7d71a167f29f896da1e88cbccd
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Feb 23 19:35:28 2022 -0800

    net: sxgbe: fix return value of __setup handler
    
    commit 50e06ddceeea263f57fe92baa677c638ecd65bb6 upstream.
    
    __setup() handlers should return 1 on success, i.e., the parameter
    has been handled. A return of 0 causes the "option=value" string to be
    added to init's environment strings, polluting it.
    
    Fixes: acc18c147b22 ("net: sxgbe: add EEE(Energy Efficient Ethernet) for Samsung sxgbe")
    Fixes: 1edb9ca69e8a ("net: sxgbe: add basic framework for Samsung 10Gb ethernet driver")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
    Cc: Siva Reddy <siva.kallam@samsung.com>
    Cc: Girish K S <ks.giri@samsung.com>
    Cc: Byungho An <bh74.an@samsung.com>
    Link: https://lore.kernel.org/r/20220224033528.24640-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1a82db1ebaf63d3d7cfbe1fef315393adfdf48e
Author: Slawomir Laba <slawomirx.laba@intel.com>
Date:   Wed Feb 23 13:38:43 2022 +0100

    iavf: Fix missing check for running netdev
    
    commit d2c0f45fcceb0995f208c441d9c9a453623f9ccf upstream.
    
    The driver was queueing reset_task regardless of the netdev
    state.
    
    Do not queue the reset task in iavf_change_mtu if netdev
    is not running.
    
    Fixes: fdd4044ffdc8 ("iavf: Remove timer for work triggering, use delaying work instead")
    Signed-off-by: Slawomir Laba <slawomirx.laba@intel.com>
    Signed-off-by: Phani Burra <phani.r.burra@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9a066fe45930c45e0cc64a12ccf2c3fc339fea2
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Feb 24 10:39:34 2022 +0100

    mac80211: treat some SAE auth steps as final
    
    commit 94d9864cc86f572f881db9b842a78e9d075493ae upstream.
    
    When we get anti-clogging token required (added by the commit
    mentioned below), or the other status codes added by the later
    commit 4e56cde15f7d ("mac80211: Handle special status codes in
    SAE commit") we currently just pretend (towards the internal
    state machine of authentication) that we didn't receive anything.
    
    This has the undesirable consequence of retransmitting the prior
    frame, which is not expected, because the timer is still armed.
    
    If we just disarm the timer at that point, it would result in
    the undesirable side effect of being in this state indefinitely
    if userspace crashes, or so.
    
    So to fix this, reset the timer and set a new auth_data->waiting
    in order to have no more retransmissions, but to have the data
    destroyed when the timer actually fires, which will only happen
    if userspace didn't continue (i.e. crashed or abandoned it.)
    
    Fixes: a4055e74a2ff ("mac80211: Don't destroy auth data in case of anti-clogging")
    Reported-by: Jouni Malinen <j@w1.fi>
    Link: https://lore.kernel.org/r/20220224103932.75964e1d7932.Ia487f91556f29daae734bf61f8181404642e1eec@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6d7f57f919f47cbeee9e608824abfdc0097f1c6
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Feb 23 19:35:36 2022 -0800

    net: stmmac: fix return value of __setup handler
    
    commit e01b042e580f1fbf4fd8da467442451da00c7a90 upstream.
    
    __setup() handlers should return 1 on success, i.e., the parameter
    has been handled. A return of 0 causes the "option=value" string to be
    added to init's environment strings, polluting it.
    
    Fixes: 47dd7a540b8a ("net: add support for STMicroelectronics Ethernet controllers.")
    Fixes: f3240e2811f0 ("stmmac: remove warning when compile as built-in (V2)")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
    Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Jose Abreu <joabreu@synopsys.com>
    Link: https://lore.kernel.org/r/20220224033536.25056-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa65989a48679dd67d8d0fbccd4e204142d4c707
Author: Nicolas Escande <nico.escande@gmail.com>
Date:   Mon Feb 14 18:32:14 2022 +0100

    mac80211: fix forwarded mesh frames AC & queue selection
    
    commit 859ae7018316daa4adbc496012dcbbb458d7e510 upstream.
    
    There are two problems with the current code that have been highlighted
    with the AQL feature that is now enbaled by default.
    
    First problem is in ieee80211_rx_h_mesh_fwding(),
    ieee80211_select_queue_80211() is used on received packets to choose
    the sending AC queue of the forwarding packet although this function
    should only be called on TX packet (it uses ieee80211_tx_info).
    This ends with forwarded mesh packets been sent on unrelated random AC
    queue. To fix that, AC queue can directly be infered from skb->priority
    which has been extracted from QOS info (see ieee80211_parse_qos()).
    
    Second problem is the value of queue_mapping set on forwarded mesh
    frames via skb_set_queue_mapping() is not the AC of the packet but a
    hardware queue index. This may or may not work depending on AC to HW
    queue mapping which is driver specific.
    
    Both of these issues lead to improper AC selection while forwarding
    mesh packets but more importantly due to improper airtime accounting
    (which is done on a per STA, per AC basis) caused traffic stall with
    the introduction of AQL.
    
    Fixes: cf44012810cc ("mac80211: fix unnecessary frame drops in mesh fwding")
    Fixes: d3c1597b8d1b ("mac80211: fix forwarded mesh frame queue mapping")
    Co-developed-by: Remi Pommarel <repk@triplefau.lt>
    Signed-off-by: Remi Pommarel <repk@triplefau.lt>
    Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
    Link: https://lore.kernel.org/r/20220214173214.368862-1-nico.escande@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcc3423c1dca6004e87be94727d86bf946f21ded
Author: Valentin Schneider <valentin.schneider@arm.com>
Date:   Thu Apr 29 22:53:27 2021 -0700

    ia64: ensure proper NUMA distance and possible map initialization
    
    commit b22a8f7b4bde4e4ab73b64908ffd5d90ecdcdbfd upstream.
    
    John Paul reported a warning about bogus NUMA distance values spurred by
    commit:
    
      620a6dc40754 ("sched/topology: Make sched_init_numa() use a set for the deduplicating sort")
    
    In this case, the afflicted machine comes up with a reported 256 possible
    nodes, all of which are 0 distance away from one another.  This was
    previously silently ignored, but is now caught by the aforementioned
    commit.
    
    The culprit is ia64's node_possible_map which remains unchanged from its
    initialization value of NODE_MASK_ALL.  In John's case, the machine
    doesn't have any SRAT nor SLIT table, but AIUI the possible map remains
    untouched regardless of what ACPI tables end up being parsed.  Thus,
    !online && possible nodes remain with a bogus distance of 0 (distances \in
    [0, 9] are "reserved and have no meaning" as per the ACPI spec).
    
    Follow x86 / drivers/base/arch_numa's example and set the possible map to
    the parsed map, which in this case seems to be the online map.
    
    Link: http://lore.kernel.org/r/255d6b5d-194e-eb0e-ecdd-97477a534441@physik.fu-berlin.de
    Link: https://lkml.kernel.org/r/20210318130617.896309-1-valentin.schneider@arm.com
    Fixes: 620a6dc40754 ("sched/topology: Make sched_init_numa() use a set for the deduplicating sort")
    Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
    Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Tested-by: Sergei Trofimovich <slyfox@gentoo.org>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Anatoly Pugachev <matorola@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1312ef5ad0a533009b58bc37f655038cbf21ea82
Author: Dietmar Eggemann <dietmar.eggemann@arm.com>
Date:   Mon Feb 1 10:53:53 2021 +0100

    sched/topology: Fix sched_domain_topology_level alloc in sched_init_numa()
    
    commit 71e5f6644fb2f3304fcb310145ded234a37e7cc1 upstream.
    
    Commit "sched/topology: Make sched_init_numa() use a set for the
    deduplicating sort" allocates 'i + nr_levels (level)' instead of
    'i + nr_levels + 1' sched_domain_topology_level.
    
    This led to an Oops (on Arm64 juno with CONFIG_SCHED_DEBUG):
    
    sched_init_domains
      build_sched_domains()
        __free_domain_allocs()
          __sdt_free() {
            ...
            for_each_sd_topology(tl)
              ...
              sd = *per_cpu_ptr(sdd->sd, j); <--
              ...
          }
    
    Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Vincent Guittot <vincent.guittot@linaro.org>
    Tested-by: Barry Song <song.bao.hua@hisilicon.com>
    Link: https://lkml.kernel.org/r/6000e39e-7d28-c360-9cd6-8798fd22a9bf@arm.com
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d753aecb3d4b9401d24b752a5dd6845041128677
Author: Valentin Schneider <valentin.schneider@arm.com>
Date:   Fri Jan 22 12:39:43 2021 +0000

    sched/topology: Make sched_init_numa() use a set for the deduplicating sort
    
    commit 620a6dc40754dc218f5b6389b5d335e9a107fd29 upstream.
    
    The deduplicating sort in sched_init_numa() assumes that the first line in
    the distance table contains all unique values in the entire table. I've
    been trying to pen what this exactly means for the topology, but it's not
    straightforward. For instance, topology.c uses this example:
    
      node   0   1   2   3
        0:  10  20  20  30
        1:  20  10  20  20
        2:  20  20  10  20
        3:  30  20  20  10
    
      0 ----- 1
      |     / |
      |   /   |
      | /     |
      2 ----- 3
    
    Which works out just fine. However, if we swap nodes 0 and 1:
    
      1 ----- 0
      |     / |
      |   /   |
      | /     |
      2 ----- 3
    
    we get this distance table:
    
      node   0  1  2  3
        0:  10 20 20 20
        1:  20 10 20 30
        2:  20 20 10 20
        3:  20 30 20 10
    
    Which breaks the deduplicating sort (non-representative first line). In
    this case this would just be a renumbering exercise, but it so happens that
    we can have a deduplicating sort that goes through the whole table in O(n²)
    at the extra cost of a temporary memory allocation (i.e. any form of set).
    
    The ACPI spec (SLIT) mentions distances are encoded on 8 bits. Following
    this, implement the set as a 256-bits bitmap. Should this not be
    satisfactory (i.e. we want to support 32-bit values), then we'll have to go
    for some other sparse set implementation.
    
    This has the added benefit of letting us allocate just the right amount of
    memory for sched_domains_numa_distance[], rather than an arbitrary
    (nr_node_ids + 1).
    
    Note: DT binding equivalent (distance-map) decodes distances as 32-bit
    values.
    
    Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210122123943.1217-2-valentin.schneider@arm.com
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05ae1f0fe9c6c5ead08b306e665763a352d20716
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Mon Feb 7 10:23:29 2022 -0800

    ice: fix concurrent reset and removal of VFs
    
    commit fadead80fe4c033b5e514fcbadd20b55c4494112 upstream.
    
    Commit c503e63200c6 ("ice: Stop processing VF messages during teardown")
    introduced a driver state flag, ICE_VF_DEINIT_IN_PROGRESS, which is
    intended to prevent some issues with concurrently handling messages from
    VFs while tearing down the VFs.
    
    This change was motivated by crashes caused while tearing down and
    bringing up VFs in rapid succession.
    
    It turns out that the fix actually introduces issues with the VF driver
    caused because the PF no longer responds to any messages sent by the VF
    during its .remove routine. This results in the VF potentially removing
    its DMA memory before the PF has shut down the device queues.
    
    Additionally, the fix doesn't actually resolve concurrency issues within
    the ice driver. It is possible for a VF to initiate a reset just prior
    to the ice driver removing VFs. This can result in the remove task
    concurrently operating while the VF is being reset. This results in
    similar memory corruption and panics purportedly fixed by that commit.
    
    Fix this concurrency at its root by protecting both the reset and
    removal flows using the existing VF cfg_lock. This ensures that we
    cannot remove the VF while any outstanding critical tasks such as a
    virtchnl message or a reset are occurring.
    
    This locking change also fixes the root cause originally fixed by commit
    c503e63200c6 ("ice: Stop processing VF messages during teardown"), so we
    can simply revert it.
    
    Note that I kept these two changes together because simply reverting the
    original commit alone would leave the driver vulnerable to worse race
    conditions.
    
    Fixes: c503e63200c6 ("ice: Stop processing VF messages during teardown")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41edeeaae51a1064a7e7cdea70623377cb2655cc
Author: Brett Creeley <brett.creeley@intel.com>
Date:   Thu Sep 9 14:38:09 2021 -0700

    ice: Fix race conditions between virtchnl handling and VF ndo ops
    
    commit e6ba5273d4ede03d075d7a116b8edad1f6115f4d upstream.
    
    The VF can be configured via the PF's ndo ops at the same time the PF is
    receiving/handling virtchnl messages. This has many issues, with
    one of them being the ndo op could be actively resetting a VF (i.e.
    resetting it to the default state and deleting/re-adding the VF's VSI)
    while a virtchnl message is being handled. The following error was seen
    because a VF ndo op was used to change a VF's trust setting while the
    VIRTCHNL_OP_CONFIG_VSI_QUEUES was ongoing:
    
    [35274.192484] ice 0000:88:00.0: Failed to set LAN Tx queue context, error: ICE_ERR_PARAM
    [35274.193074] ice 0000:88:00.0: VF 0 failed opcode 6, retval: -5
    [35274.193640] iavf 0000:88:01.0: PF returned error -5 (IAVF_ERR_PARAM) to our request 6
    
    Fix this by making sure the virtchnl handling and VF ndo ops that
    trigger VF resets cannot run concurrently. This is done by adding a
    struct mutex cfg_lock to each VF structure. For VF ndo ops, the mutex
    will be locked around the critical operations and VFR. Since the ndo ops
    will trigger a VFR, the virtchnl thread will use mutex_trylock(). This
    is done because if any other thread (i.e. VF ndo op) has the mutex, then
    that means the current VF message being handled is no longer valid, so
    just ignore it.
    
    This issue can be seen using the following commands:
    
    for i in {0..50}; do
            rmmod ice
            modprobe ice
    
            sleep 1
    
            echo 1 > /sys/class/net/ens785f0/device/sriov_numvfs
            echo 1 > /sys/class/net/ens785f1/device/sriov_numvfs
    
            ip link set ens785f1 vf 0 trust on
            ip link set ens785f0 vf 0 trust on
    
            sleep 2
    
            echo 0 > /sys/class/net/ens785f0/device/sriov_numvfs
            echo 0 > /sys/class/net/ens785f1/device/sriov_numvfs
            sleep 1
            echo 1 > /sys/class/net/ens785f0/device/sriov_numvfs
            echo 1 > /sys/class/net/ens785f1/device/sriov_numvfs
    
            ip link set ens785f1 vf 0 trust on
            ip link set ens785f0 vf 0 trust on
    done
    
    Fixes: 7c710869d64e ("ice: Add handlers for VF netdevice operations")
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c145262ac99fc0b0a1a7ddac749e89a58e78653
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Tue Feb 23 01:09:59 2021 +0100

    rcu/nocb: Fix missed nocb_timer requeue
    
    commit b2fcf2102049f6e56981e0ab3d9b633b8e2741da upstream.
    
    This sequence of events can lead to a failure to requeue a CPU's
    ->nocb_timer:
    
    1.      There are no callbacks queued for any CPU covered by CPU 0-2's
            ->nocb_gp_kthread.  Note that ->nocb_gp_kthread is associated
            with CPU 0.
    
    2.      CPU 1 enqueues its first callback with interrupts disabled, and
            thus must defer awakening its ->nocb_gp_kthread.  It therefore
            queues its rcu_data structure's ->nocb_timer.  At this point,
            CPU 1's rdp->nocb_defer_wakeup is RCU_NOCB_WAKE.
    
    3.      CPU 2, which shares the same ->nocb_gp_kthread, also enqueues a
            callback, but with interrupts enabled, allowing it to directly
            awaken the ->nocb_gp_kthread.
    
    4.      The newly awakened ->nocb_gp_kthread associates both CPU 1's
            and CPU 2's callbacks with a future grace period and arranges
            for that grace period to be started.
    
    5.      This ->nocb_gp_kthread goes to sleep waiting for the end of this
            future grace period.
    
    6.      This grace period elapses before the CPU 1's timer fires.
            This is normally improbably given that the timer is set for only
            one jiffy, but timers can be delayed.  Besides, it is possible
            that kernel was built with CONFIG_RCU_STRICT_GRACE_PERIOD=y.
    
    7.      The grace period ends, so rcu_gp_kthread awakens the
            ->nocb_gp_kthread, which in turn awakens both CPU 1's and
            CPU 2's ->nocb_cb_kthread.  Then ->nocb_gb_kthread sleeps
            waiting for more newly queued callbacks.
    
    8.      CPU 1's ->nocb_cb_kthread invokes its callback, then sleeps
            waiting for more invocable callbacks.
    
    9.      Note that neither kthread updated any ->nocb_timer state,
            so CPU 1's ->nocb_defer_wakeup is still set to RCU_NOCB_WAKE.
    
    10.     CPU 1 enqueues its second callback, this time with interrupts
            enabled so it can wake directly ->nocb_gp_kthread.
            It does so with calling wake_nocb_gp() which also cancels the
            pending timer that got queued in step 2. But that doesn't reset
            CPU 1's ->nocb_defer_wakeup which is still set to RCU_NOCB_WAKE.
            So CPU 1's ->nocb_defer_wakeup and its ->nocb_timer are now
            desynchronized.
    
    11.     ->nocb_gp_kthread associates the callback queued in 10 with a new
            grace period, arranges for that grace period to start and sleeps
            waiting for it to complete.
    
    12.     The grace period ends, rcu_gp_kthread awakens ->nocb_gp_kthread,
            which in turn wakes up CPU 1's ->nocb_cb_kthread which then
            invokes the callback queued in 10.
    
    13.     CPU 1 enqueues its third callback, this time with interrupts
            disabled so it must queue a timer for a deferred wakeup. However
            the value of its ->nocb_defer_wakeup is RCU_NOCB_WAKE which
            incorrectly indicates that a timer is already queued.  Instead,
            CPU 1's ->nocb_timer was cancelled in 10.  CPU 1 therefore fails
            to queue the ->nocb_timer.
    
    14.     CPU 1 has its pending callback and it may go unnoticed until
            some other CPU ever wakes up ->nocb_gp_kthread or CPU 1 ever
            calls an explicit deferred wakeup, for example, during idle entry.
    
    This commit fixes this bug by resetting rdp->nocb_defer_wakeup everytime
    we delete the ->nocb_timer.
    
    It is quite possible that there is a similar scenario involving
    ->nocb_bypass_timer and ->nocb_defer_wakeup.  However, despite some
    effort from several people, a failure scenario has not yet been located.
    However, that by no means guarantees that no such scenario exists.
    Finding a failure scenario is left as an exercise for the reader, and the
    "Fixes:" tag below relates to ->nocb_bypass_timer instead of ->nocb_timer.
    
    Fixes: d1b222c6be1f (rcu/nocb: Add bypass callback queueing)
    Cc: <stable@vger.kernel.org>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Lai Jiangshan <jiangshanlai@gmail.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Reviewed-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bb7237cc740b9f4f8904d1823ed71c71a5e83e8
Author: D. Wythe <alibuda@linux.alibaba.com>
Date:   Wed Mar 2 21:25:12 2022 +0800

    net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server
    
    commit 4940a1fdf31c39f0806ac831cde333134862030b upstream.
    
    The problem of SMC_CLC_DECL_ERR_REGRMB on the server is very clear.
    Based on the fact that whether a new SMC connection can be accepted or
    not depends on not only the limit of conn nums, but also the available
    entries of rtoken. Since the rtoken release is trigger by peer, while
    the conn nums is decrease by local, tons of thing can happen in this
    time difference.
    
    This only thing that needs to be mentioned is that now all connection
    creations are completely protected by smc_server_lgr_pending lock, it's
    enough to check only the available entries in rtokens_used_mask.
    
    Fixes: cd6851f30386 ("smc: remote memory buffers (RMBs)")
    Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7eb662625eb56615f3caec6bac7a6f400080c7a
Author: D. Wythe <alibuda@linux.alibaba.com>
Date:   Wed Mar 2 21:25:11 2022 +0800

    net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client
    
    commit 0537f0a2151375dcf90c1bbfda6a0aaf57164e89 upstream.
    
    The main reason for this unexpected SMC_CLC_DECL_ERR_REGRMB in client
    dues to following execution sequence:
    
    Server Conn A:           Server Conn B:                 Client Conn B:
    
    smc_lgr_unregister_conn
                            smc_lgr_register_conn
                            smc_clc_send_accept     ->
                                                            smc_rtoken_add
    smcr_buf_unuse
                    ->              Client Conn A:
                                    smc_rtoken_delete
    
    smc_lgr_unregister_conn() makes current link available to assigned to new
    incoming connection, while smcr_buf_unuse() has not executed yet, which
    means that smc_rtoken_add may fail because of insufficient rtoken_entry,
    reversing their execution order will avoid this problem.
    
    Fixes: 3e034725c0d8 ("net/smc: common functions for RMBs and send buffers")
    Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e8d465b83db307f04ad265848f8ab3f78f6918f
Author: D. Wythe <alibuda@linux.alibaba.com>
Date:   Thu Feb 24 23:26:19 2022 +0800

    net/smc: fix connection leak
    
    commit 9f1c50cf39167ff71dc5953a3234f3f6eeb8fcb5 upstream.
    
    There's a potential leak issue under following execution sequence :
    
    smc_release                             smc_connect_work
    if (sk->sk_state == SMC_INIT)
                                            send_clc_confirim
            tcp_abort();
                                            ...
                                            sk.sk_state = SMC_ACTIVE
    smc_close_active
    switch(sk->sk_state) {
    ...
    case SMC_ACTIVE:
            smc_close_final()
            // then wait peer closed
    
    Unfortunately, tcp_abort() may discard CLC CONFIRM messages that are
    still in the tcp send buffer, in which case our connection token cannot
    be delivered to the server side, which means that we cannot get a
    passive close message at all. Therefore, it is impossible for the to be
    disconnected at all.
    
    This patch tries a very simple way to avoid this issue, once the state
    has changed to SMC_ACTIVE after tcp_abort(), we can actively abort the
    smc connection, considering that the state is SMC_INIT before
    tcp_abort(), abandoning the complete disconnection process should not
    cause too much problem.
    
    In fact, this problem may exist as long as the CLC CONFIRM message is
    not received by the server. Whether a timer should be added after
    smc_close_final() needs to be discussed in the future. But even so, this
    patch provides a faster release for connection in above case, it should
    also be valuable.
    
    Fixes: 39f41f367b08 ("net/smc: common release code for non-accepted sockets")
    Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a8a4dc2a279b225783a838e04ecd469df6ff21d
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Thu Feb 24 18:01:54 2022 +0200

    net: dcb: flush lingering app table entries for unregistered devices
    
    commit 91b0383fef06f20b847fa9e4f0e3054ead0b1a1b upstream.
    
    If I'm not mistaken (and I don't think I am), the way in which the
    dcbnl_ops work is that drivers call dcb_ieee_setapp() and this populates
    the application table with dynamically allocated struct dcb_app_type
    entries that are kept in the module-global dcb_app_list.
    
    However, nobody keeps exact track of these entries, and although
    dcb_ieee_delapp() is supposed to remove them, nobody does so when the
    interface goes away (example: driver unbinds from device). So the
    dcb_app_list will contain lingering entries with an ifindex that no
    longer matches any device in dcb_app_lookup().
    
    Reclaim the lost memory by listening for the NETDEV_UNREGISTER event and
    flushing the app table entries of interfaces that are now gone.
    
    In fact something like this used to be done as part of the initial
    commit (blamed below), but it was done in dcbnl_exit() -> dcb_flushapp(),
    essentially at module_exit time. That became dead code after commit
    7a6b6f515f77 ("DCB: fix kconfig option") which essentially merged
    "tristate config DCB" and "bool config DCBNL" into a single "bool config
    DCB", so net/dcb/dcbnl.c could not be built as a module anymore.
    
    Commit 36b9ad8084bd ("net/dcb: make dcbnl.c explicitly non-modular")
    recognized this and deleted dcbnl_exit() and dcb_flushapp() altogether,
    leaving us with the version we have today.
    
    Since flushing application table entries can and should be done as soon
    as the netdevice disappears, fundamentally the commit that is to blame
    is the one that introduced the design of this API.
    
    Fixes: 9ab933ab2cc8 ("dcbnl: add appliction tlv handlers")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4c63b24dea9cc2043ff845dcca9aaf8109ea38a
Author: j.nixdorf@avm.de <j.nixdorf@avm.de>
Date:   Thu Feb 24 10:06:49 2022 +0100

    net: ipv6: ensure we call ipv6_mc_down() at most once
    
    commit 9995b408f17ff8c7f11bc725c8aa225ba3a63b1c upstream.
    
    There are two reasons for addrconf_notify() to be called with NETDEV_DOWN:
    either the network device is actually going down, or IPv6 was disabled
    on the interface.
    
    If either of them stays down while the other is toggled, we repeatedly
    call the code for NETDEV_DOWN, including ipv6_mc_down(), while never
    calling the corresponding ipv6_mc_up() in between. This will cause a
    new entry in idev->mc_tomb to be allocated for each multicast group
    the interface is subscribed to, which in turn leaks one struct ifmcaddr6
    per nontrivial multicast group the interface is subscribed to.
    
    The following reproducer will leak at least $n objects:
    
    ip addr add ff2e::4242/32 dev eth0 autojoin
    sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
    for i in $(seq 1 $n); do
            ip link set up eth0; ip link set down eth0
    done
    
    Joining groups with IPV6_ADD_MEMBERSHIP (unprivileged) or setting the
    sysctl net.ipv6.conf.eth0.forwarding to 1 (=> subscribing to ff02::2)
    can also be used to create a nontrivial idev->mc_list, which will the
    leak objects with the right up-down-sequence.
    
    Based on both sources for NETDEV_DOWN events the interface IPv6 state
    should be considered:
    
     - not ready if the network interface is not ready OR IPv6 is disabled
       for it
     - ready if the network interface is ready AND IPv6 is enabled for it
    
    The functions ipv6_mc_up() and ipv6_down() should only be run when this
    state changes.
    
    Implement this by remembering when the IPv6 state is ready, and only
    run ipv6_mc_down() if it actually changed from ready to not ready.
    
    The other direction (not ready -> ready) already works correctly, as:
    
     - the interface notification triggered codepath for NETDEV_UP /
       NETDEV_CHANGE returns early if ipv6 is disabled, and
     - the disable_ipv6=0 triggered codepath skips fully initializing the
       interface as long as addrconf_link_ready(dev) returns false
     - calling ipv6_mc_up() repeatedly does not leak anything
    
    Fixes: 3ce62a84d53c ("ipv6: exit early in addrconf_notify() if IPv6 is disabled")
    Signed-off-by: Johannes Nixdorf <j.nixdorf@avm.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9c4a74ad5ae4a23ce4db8cc9a0ead08ce5b60f3
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sun Feb 27 23:23:49 2022 +0100

    batman-adv: Don't expect inter-netns unique iflink indices
    
    commit 6c1f41afc1dbe59d9d3c8bb0d80b749c119aa334 upstream.
    
    The ifindex doesn't have to be unique for multiple network namespaces on
    the same machine.
    
      $ ip netns add test1
      $ ip -net test1 link add dummy1 type dummy
      $ ip netns add test2
      $ ip -net test2 link add dummy2 type dummy
    
      $ ip -net test1 link show dev dummy1
      6: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
          link/ether 96:81:55:1e:dd:85 brd ff:ff:ff:ff:ff:ff
      $ ip -net test2 link show dev dummy2
      6: dummy2: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
          link/ether 5a:3c:af:35:07:c3 brd ff:ff:ff:ff:ff:ff
    
    But the batman-adv code to walk through the various layers of virtual
    interfaces uses this assumption because dev_get_iflink handles it
    internally and doesn't return the actual netns of the iflink. And
    dev_get_iflink only documents the situation where ifindex == iflink for
    physical devices.
    
    But only checking for dev->netdev_ops->ndo_get_iflink is also not an option
    because ipoib_get_iflink implements it even when it sometimes returns an
    iflink != ifindex and sometimes iflink == ifindex. The caller must
    therefore make sure itself to check both netns and iflink + ifindex for
    equality. Only when they are equal, a "physical" interface was detected
    which should stop the traversal. On the other hand, vxcan_get_iflink can
    also return 0 in case there was currently no valid peer. In this case, it
    is still necessary to stop.
    
    Fixes: b7eddd0b3950 ("batman-adv: prevent using any virtual device created on batman-adv as hard-interface")
    Fixes: 5ed4a460a1d3 ("batman-adv: additional checks for virtual interfaces on top of WiFi")
    Reported-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dae11d21fc8aa57f389fd32ab884b638a04aff2
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Feb 28 00:01:24 2022 +0100

    batman-adv: Request iflink once in batadv_get_real_netdevice
    
    commit 6116ba09423f7d140f0460be6a1644dceaad00da upstream.
    
    There is no need to call dev_get_iflink multiple times for the same
    net_device in batadv_get_real_netdevice. And since some of the
    ndo_get_iflink callbacks are dynamic (for example via RCUs like in
    vxcan_get_iflink), it could easily happen that the returned values are not
    stable. The pre-checks before __dev_get_by_index are then of course bogus.
    
    Fixes: 5ed4a460a1d3 ("batman-adv: additional checks for virtual interfaces on top of WiFi")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcf10d78ff2c38dc5097cb59ae44367db17ed0c0
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Feb 28 00:01:24 2022 +0100

    batman-adv: Request iflink once in batadv-on-batadv check
    
    commit 690bb6fb64f5dc7437317153902573ecad67593d upstream.
    
    There is no need to call dev_get_iflink multiple times for the same
    net_device in batadv_is_on_batman_iface. And since some of the
    .ndo_get_iflink callbacks are dynamic (for example via RCUs like in
    vxcan_get_iflink), it could easily happen that the returned values are not
    stable. The pre-checks before __dev_get_by_index are then of course bogus.
    
    Fixes: b7eddd0b3950 ("batman-adv: prevent using any virtual device created on batman-adv as hard-interface")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81f817f3e559d3e4e56110f6132f8322a97fbc8c
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Mar 1 00:46:19 2022 +0100

    netfilter: nf_queue: handle socket prefetch
    
    commit 3b836da4081fa585cf6c392f62557496f2cb0efe upstream.
    
    In case someone combines bpf socket assign and nf_queue, then we will
    queue an skb who references a struct sock that did not have its
    reference count incremented.
    
    As we leave rcu protection, there is no guarantee that skb->sk is still
    valid.
    
    For refcount-less skb->sk case, try to increment the reference count
    and then override the destructor.
    
    In case of failure we have two choices: orphan the skb and 'delete'
    preselect or let nf_queue() drop the packet.
    
    Do the latter, it should not happen during normal operation.
    
    Fixes: cf7fbe660f2d ("bpf: Add socket assign support")
    Acked-by: Joe Stringer <joe@cilium.io>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d05239203fa38ea8a6f31e228460da4cb17a71a
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Feb 28 06:22:22 2022 +0100

    netfilter: nf_queue: fix possible use-after-free
    
    commit c3873070247d9e3c7a6b0cf9bf9b45e8018427b1 upstream.
    
    Eric Dumazet says:
      The sock_hold() side seems suspect, because there is no guarantee
      that sk_refcnt is not already 0.
    
    On failure, we cannot queue the packet and need to indicate an
    error.  The packet will be dropped by the caller.
    
    v2: split skb prefetch hunk into separate change
    
    Fixes: 271b72c7fa82c ("udp: RCU handling for Unicast packets.")
    Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b9ba964f77cbac7679379f82a6a08ddbef3bc33
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Feb 25 14:02:41 2022 +0100

    netfilter: nf_queue: don't assume sk is full socket
    
    commit 747670fd9a2d1b7774030dba65ca022ba442ce71 upstream.
    
    There is no guarantee that state->sk refers to a full socket.
    
    If refcount transitions to 0, sock_put calls sk_free which then ends up
    with garbage fields.
    
    I'd like to thank Oleksandr Natalenko and Jiri Benc for considerable
    debug work and pointing out state->sk oddities.
    
    Fixes: ca6fb0651883 ("tcp: attach SYNACK messages to request sockets instead of listener")
    Tested-by: Oleksandr Natalenko <oleksandr@redhat.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e178ed14bda47942c1ccad3f60b774870b45db9
Author: lena wang <lena.wang@mediatek.com>
Date:   Tue Mar 1 19:17:09 2022 +0800

    net: fix up skbs delta_truesize in UDP GRO frag_list
    
    commit 224102de2ff105a2c05695e66a08f4b5b6b2d19c upstream.
    
    The truesize for a UDP GRO packet is added by main skb and skbs in main
    skb's frag_list:
    skb_gro_receive_list
            p->truesize += skb->truesize;
    
    The commit 53475c5dd856 ("net: fix use-after-free when UDP GRO with
    shared fraglist") introduced a truesize increase for frag_list skbs.
    When uncloning skb, it will call pskb_expand_head and trusesize for
    frag_list skbs may increase. This can occur when allocators uses
    __netdev_alloc_skb and not jump into __alloc_skb. This flow does not
    use ksize(len) to calculate truesize while pskb_expand_head uses.
    skb_segment_list
    err = skb_unclone(nskb, GFP_ATOMIC);
    pskb_expand_head
            if (!skb->sk || skb->destructor == sock_edemux)
                    skb->truesize += size - osize;
    
    If we uses increased truesize adding as delta_truesize, it will be
    larger than before and even larger than previous total truesize value
    if skbs in frag_list are abundant. The main skb truesize will become
    smaller and even a minus value or a huge value for an unsigned int
    parameter. Then the following memory check will drop this abnormal skb.
    
    To avoid this error we should use the original truesize to segment the
    main skb.
    
    Fixes: 53475c5dd856 ("net: fix use-after-free when UDP GRO with shared fraglist")
    Signed-off-by: lena wang <lena.wang@mediatek.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/1646133431-8948-1-git-send-email-lena.wang@mediatek.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb5e444fe37d467e54d2945c1293f311ce782f67
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Thu Feb 3 14:21:49 2022 +0200

    e1000e: Correct NVM checksum verification flow
    
    commit ffd24fa2fcc76ecb2e61e7a4ef8588177bcb42a6 upstream.
    
    Update MAC type check e1000_pch_tgp because for e1000_pch_cnp,
    NVM checksum update is still possible.
    Emit a more detailed warning message.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1191663
    Fixes: 4051f68318ca ("e1000e: Do not take care about recovery NVM checksum")
    Reported-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b53d4bfd1a6894e00dc8d654af61a22bb914dde4
Author: Leon Romanovsky <leon@kernel.org>
Date:   Tue Feb 8 16:14:32 2022 +0200

    xfrm: enforce validity of offload input flags
    
    commit 7c76ecd9c99b6e9a771d813ab1aa7fa428b3ade1 upstream.
    
    struct xfrm_user_offload has flags variable that received user input,
    but kernel didn't check if valid bits were provided. It caused a situation
    where not sanitized input was forwarded directly to the drivers.
    
    For example, XFRM_OFFLOAD_IPV6 define that was exposed, was used by
    strongswan, but not implemented in the kernel at all.
    
    As a solution, check and sanitize input flags to forward
    XFRM_OFFLOAD_INBOUND to the drivers.
    
    Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f0e6d80e8b570aeb7e6eb6db2e2dd9fdbb6236c
Author: Antony Antony <antony.antony@secunet.com>
Date:   Tue Feb 1 07:51:57 2022 +0100

    xfrm: fix the if_id check in changelink
    
    commit 6d0d95a1c2b07270870e7be16575c513c29af3f1 upstream.
    
    if_id will be always 0, because it was not yet initialized.
    
    Fixes: 8dce43919566 ("xfrm: interface with if_id 0 should return error")
    Reported-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24efaae03b0d093a40e91dce2b820bab03664bca
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 2 08:17:22 2022 -0800

    bpf, sockmap: Do not ignore orig_len parameter
    
    commit 60ce37b03917e593d8e5d8bcc7ec820773daf81d upstream.
    
    Currently, sk_psock_verdict_recv() returns skb->len
    
    This is problematic because tcp_read_sock() might have
    passed orig_len < skb->len, due to the presence of TCP urgent data.
    
    This causes an infinite loop from tcp_read_sock()
    
    Followup patch will make tcp_read_sock() more robust vs bad actors.
    
    Fixes: ef5659280eb1 ("bpf, sockmap: Allow skipping sk_skb parser program")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
    Tested-by: Jakub Sitnicki <jakub@cloudflare.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20220302161723.3910001-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b0142c4143c1ca297dcf2c0cdd045d65dae2344
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Feb 27 10:01:41 2022 -0800

    netfilter: fix use-after-free in __nf_register_net_hook()
    
    commit 56763f12b0f02706576a088e85ef856deacc98a0 upstream.
    
    We must not dereference @new_hooks after nf_hook_mutex has been released,
    because other threads might have freed our allocated hooks already.
    
    BUG: KASAN: use-after-free in nf_hook_entries_get_hook_ops include/linux/netfilter.h:130 [inline]
    BUG: KASAN: use-after-free in hooks_validate net/netfilter/core.c:171 [inline]
    BUG: KASAN: use-after-free in __nf_register_net_hook+0x77a/0x820 net/netfilter/core.c:438
    Read of size 2 at addr ffff88801c1a8000 by task syz-executor237/4430
    
    CPU: 1 PID: 4430 Comm: syz-executor237 Not tainted 5.17.0-rc5-syzkaller-00306-g2293be58d6a1 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0x8d/0x336 mm/kasan/report.c:255
     __kasan_report mm/kasan/report.c:442 [inline]
     kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
     nf_hook_entries_get_hook_ops include/linux/netfilter.h:130 [inline]
     hooks_validate net/netfilter/core.c:171 [inline]
     __nf_register_net_hook+0x77a/0x820 net/netfilter/core.c:438
     nf_register_net_hook+0x114/0x170 net/netfilter/core.c:571
     nf_register_net_hooks+0x59/0xc0 net/netfilter/core.c:587
     nf_synproxy_ipv6_init+0x85/0xe0 net/netfilter/nf_synproxy_core.c:1218
     synproxy_tg6_check+0x30d/0x560 net/ipv6/netfilter/ip6t_SYNPROXY.c:81
     xt_check_target+0x26c/0x9e0 net/netfilter/x_tables.c:1038
     check_target net/ipv6/netfilter/ip6_tables.c:530 [inline]
     find_check_entry.constprop.0+0x7f1/0x9e0 net/ipv6/netfilter/ip6_tables.c:573
     translate_table+0xc8b/0x1750 net/ipv6/netfilter/ip6_tables.c:735
     do_replace net/ipv6/netfilter/ip6_tables.c:1153 [inline]
     do_ip6t_set_ctl+0x56e/0xb90 net/ipv6/netfilter/ip6_tables.c:1639
     nf_setsockopt+0x83/0xe0 net/netfilter/nf_sockopt.c:101
     ipv6_setsockopt+0x122/0x180 net/ipv6/ipv6_sockglue.c:1024
     rawv6_setsockopt+0xd3/0x6a0 net/ipv6/raw.c:1084
     __sys_setsockopt+0x2db/0x610 net/socket.c:2180
     __do_sys_setsockopt net/socket.c:2191 [inline]
     __se_sys_setsockopt net/socket.c:2188 [inline]
     __x64_sys_setsockopt+0xba/0x150 net/socket.c:2188
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f65a1ace7d9
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 71 15 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f65a1a7f308 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 00007f65a1ace7d9
    RDX: 0000000000000040 RSI: 0000000000000029 RDI: 0000000000000003
    RBP: 00007f65a1b574c8 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000020000000 R11: 0000000000000246 R12: 00007f65a1b55130
    R13: 00007f65a1b574c0 R14: 00007f65a1b24090 R15: 0000000000022000
     </TASK>
    
    The buggy address belongs to the page:
    page:ffffea0000706a00 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1c1a8
    flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff)
    raw: 00fff00000000000 ffffea0001c1b108 ffffea000046dd08 0000000000000000
    raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    page_owner tracks the page as freed
    page last allocated via order 2, migratetype Unmovable, gfp_mask 0x52dc0(GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_ZERO), pid 4430, ts 1061781545818, free_ts 1061791488993
     prep_new_page mm/page_alloc.c:2434 [inline]
     get_page_from_freelist+0xa72/0x2f50 mm/page_alloc.c:4165
     __alloc_pages+0x1b2/0x500 mm/page_alloc.c:5389
     __alloc_pages_node include/linux/gfp.h:572 [inline]
     alloc_pages_node include/linux/gfp.h:595 [inline]
     kmalloc_large_node+0x62/0x130 mm/slub.c:4438
     __kmalloc_node+0x35a/0x4a0 mm/slub.c:4454
     kmalloc_node include/linux/slab.h:604 [inline]
     kvmalloc_node+0x97/0x100 mm/util.c:580
     kvmalloc include/linux/slab.h:731 [inline]
     kvzalloc include/linux/slab.h:739 [inline]
     allocate_hook_entries_size net/netfilter/core.c:61 [inline]
     nf_hook_entries_grow+0x140/0x780 net/netfilter/core.c:128
     __nf_register_net_hook+0x144/0x820 net/netfilter/core.c:429
     nf_register_net_hook+0x114/0x170 net/netfilter/core.c:571
     nf_register_net_hooks+0x59/0xc0 net/netfilter/core.c:587
     nf_synproxy_ipv6_init+0x85/0xe0 net/netfilter/nf_synproxy_core.c:1218
     synproxy_tg6_check+0x30d/0x560 net/ipv6/netfilter/ip6t_SYNPROXY.c:81
     xt_check_target+0x26c/0x9e0 net/netfilter/x_tables.c:1038
     check_target net/ipv6/netfilter/ip6_tables.c:530 [inline]
     find_check_entry.constprop.0+0x7f1/0x9e0 net/ipv6/netfilter/ip6_tables.c:573
     translate_table+0xc8b/0x1750 net/ipv6/netfilter/ip6_tables.c:735
     do_replace net/ipv6/netfilter/ip6_tables.c:1153 [inline]
     do_ip6t_set_ctl+0x56e/0xb90 net/ipv6/netfilter/ip6_tables.c:1639
     nf_setsockopt+0x83/0xe0 net/netfilter/nf_sockopt.c:101
    page last free stack trace:
     reset_page_owner include/linux/page_owner.h:24 [inline]
     free_pages_prepare mm/page_alloc.c:1352 [inline]
     free_pcp_prepare+0x374/0x870 mm/page_alloc.c:1404
     free_unref_page_prepare mm/page_alloc.c:3325 [inline]
     free_unref_page+0x19/0x690 mm/page_alloc.c:3404
     kvfree+0x42/0x50 mm/util.c:613
     rcu_do_batch kernel/rcu/tree.c:2527 [inline]
     rcu_core+0x7b1/0x1820 kernel/rcu/tree.c:2778
     __do_softirq+0x29b/0x9c2 kernel/softirq.c:558
    
    Memory state around the buggy address:
     ffff88801c1a7f00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff88801c1a7f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    >ffff88801c1a8000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                       ^
     ffff88801c1a8080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff88801c1a8100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    
    Fixes: 2420b79f8c18 ("netfilter: debug: check for sorted array")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4952faa77d8d1c4c146ac077e13d6245738979f4
Author: Jiri Bohac <jbohac@suse.cz>
Date:   Wed Jan 19 10:22:53 2022 +0100

    xfrm: fix MTU regression
    
    commit 6596a0229541270fb8d38d989f91b78838e5e9da upstream.
    
    Commit 749439bfac6e1a2932c582e2699f91d329658196 ("ipv6: fix udpv6
    sendmsg crash caused by too small MTU") breaks PMTU for xfrm.
    
    A Packet Too Big ICMPv6 message received in response to an ESP
    packet will prevent all further communication through the tunnel
    if the reported MTU minus the ESP overhead is smaller than 1280.
    
    E.g. in a case of a tunnel-mode ESP with sha256/aes the overhead
    is 92 bytes. Receiving a PTB with MTU of 1371 or less will result
    in all further packets in the tunnel dropped. A ping through the
    tunnel fails with "ping: sendmsg: Invalid argument".
    
    Apparently the MTU on the xfrm route is smaller than 1280 and
    fails the check inside ip6_setup_cork() added by 749439bf.
    
    We found this by debugging USGv6/ipv6ready failures. Failing
    tests are: "Phase-2 Interoperability Test Scenario IPsec" /
    5.3.11 and 5.4.11 (Tunnel Mode: Fragmentation).
    
    Commit b515d2637276a3810d6595e10ab02c13bfd0b63a ("xfrm:
    xfrm_state_mtu should return at least 1280 for ipv6") attempted
    to fix this but caused another regression in TCP MSS calculations
    and had to be reverted.
    
    The patch below fixes the situation by dropping the MTU
    check and instead checking for the underflows described in the
    749439bf commit message.
    
    Signed-off-by: Jiri Bohac <jbohac@suse.cz>
    Fixes: 749439bfac6e ("ipv6: fix udpv6 sendmsg crash caused by too small MTU")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e93f2be33d4f4c1aa350dd79b6d1179746ff4cb5
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Mar 4 15:26:32 2022 +0100

    mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls
    
    commit 0708a0afe291bdfe1386d74d5ec1f0c27e8b9168 upstream.
    
    syzkaller was recently triggering an oversized kvmalloc() warning via
    xdp_umem_create().
    
    The triggered warning was added back in 7661809d493b ("mm: don't allow
    oversized kvmalloc() calls"). The rationale for the warning for huge
    kvmalloc sizes was as a reaction to a security bug where the size was
    more than UINT_MAX but not everything was prepared to handle unsigned
    long sizes.
    
    Anyway, the AF_XDP related call trace from this syzkaller report was:
    
      kvmalloc include/linux/mm.h:806 [inline]
      kvmalloc_array include/linux/mm.h:824 [inline]
      kvcalloc include/linux/mm.h:829 [inline]
      xdp_umem_pin_pages net/xdp/xdp_umem.c:102 [inline]
      xdp_umem_reg net/xdp/xdp_umem.c:219 [inline]
      xdp_umem_create+0x6a5/0xf00 net/xdp/xdp_umem.c:252
      xsk_setsockopt+0x604/0x790 net/xdp/xsk.c:1068
      __sys_setsockopt+0x1fd/0x4e0 net/socket.c:2176
      __do_sys_setsockopt net/socket.c:2187 [inline]
      __se_sys_setsockopt net/socket.c:2184 [inline]
      __x64_sys_setsockopt+0xb5/0x150 net/socket.c:2184
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Björn mentioned that requests for >2GB allocation can still be valid:
    
      The structure that is being allocated is the page-pinning accounting.
      AF_XDP has an internal limit of U32_MAX pages, which is *a lot*, but
      still fewer than what memcg allows (PAGE_COUNTER_MAX is a LONG_MAX/
      PAGE_SIZE on 64 bit systems). [...]
    
      I could just change from U32_MAX to INT_MAX, but as I stated earlier
      that has a hacky feeling to it. [...] From my perspective, the code
      isn't broken, with the memcg limits in consideration. [...]
    
    Linus says:
    
      [...] Pretty much every time this has come up, the kernel warning has
      shown that yes, the code was broken and there really wasn't a reason
      for doing allocations that big.
    
      Of course, some people would be perfectly fine with the allocation
      failing, they just don't want the warning. I didn't want __GFP_NOWARN
      to shut it up originally because I wanted people to see all those
      cases, but these days I think we can just say "yeah, people can shut
      it up explicitly by saying 'go ahead and fail this allocation, don't
      warn about it'".
    
      So enough time has passed that by now I'd certainly be ok with [it].
    
    Thus allow call-sites to silence such userspace triggered splats if the
    allocation requests have __GFP_NOWARN. For xdp_umem_pin_pages()'s call
    to kvcalloc() this is already the case, so nothing else needed there.
    
    Fixes: 7661809d493b ("mm: don't allow oversized kvmalloc() calls")
    Reported-by: syzbot+11421fbbff99b989670e@syzkaller.appspotmail.com
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: syzbot+11421fbbff99b989670e@syzkaller.appspotmail.com
    Cc: Björn Töpel <bjorn@kernel.org>
    Cc: Magnus Karlsson <magnus.karlsson@intel.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: David S. Miller <davem@davemloft.net>
    Link: https://lore.kernel.org/bpf/CAJ+HfNhyfsT5cS_U9EC213ducHs9k9zNxX9+abqC0kTrPbQ0gg@mail.gmail.com
    Link: https://lore.kernel.org/bpf/20211201202905.b9892171e3f5b9a60f9da251@linux-foundation.org
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Ackd-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 912186db092c4be979917a036ee94adbd2eb0b05
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Thu Jan 27 13:31:12 2022 -0700

    ntb: intel: fix port config status offset for SPR
    
    commit d5081bf5dcfb1cb83fb538708b0ac07a10a79cc4 upstream.
    
    The field offset for port configuration status on SPR has been changed to
    bit 14 from ICX where it resides at bit 12. By chance link status detection
    continued to work on SPR. This is due to bit 12 being a configuration bit
    which is in sync with the status bit. Fix this by checking for a SPR device
    and checking correct status bit.
    
    Fixes: 26bfe3d0b227 ("ntb: intel: Add Icelake (gen4) support for Intel NTB")
    Tested-by: Jerry Dai <jerry.dai@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c0b51e62a50e9291764d022ed44549e65d6ab9c
Author: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
Date:   Mon Feb 28 12:03:51 2022 +0100

    thermal: core: Fix TZ_GET_TRIP NULL pointer dereference
    
    commit 5838a14832d447990827d85e90afe17e6fb9c175 upstream.
    
    Do not call get_trip_hyst() from thermal_genl_cmd_tz_get_trip() if
    the thermal zone does not define one.
    
    Fixes: 1ce50e7d408e ("thermal: core: genetlink support for events/cmd/sampling")
    Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
    Cc: 5.10+ <stable@vger.kernel.org> # 5.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1753d5c29a6fb9a8966dcf04cb4f3b71e303ae8
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Wed Feb 23 22:19:54 2022 +0100

    xen/netfront: destroy queues before real_num_tx_queues is zeroed
    
    commit dcf4ff7a48e7598e6b10126cc02177abb8ae4f3f upstream.
    
    xennet_destroy_queues() relies on info->netdev->real_num_tx_queues to
    delete queues. Since d7dac083414eb5bb99a6d2ed53dc2c1b405224e5
    ("net-sysfs: update the queue counts in the unregistration path"),
    unregister_netdev() indirectly sets real_num_tx_queues to 0. Those two
    facts together means, that xennet_destroy_queues() called from
    xennet_remove() cannot do its job, because it's called after
    unregister_netdev(). This results in kfree-ing queues that are still
    linked in napi, which ultimately crashes:
    
        BUG: kernel NULL pointer dereference, address: 0000000000000000
        #PF: supervisor read access in kernel mode
        #PF: error_code(0x0000) - not-present page
        PGD 0 P4D 0
        Oops: 0000 [#1] PREEMPT SMP PTI
        CPU: 1 PID: 52 Comm: xenwatch Tainted: G        W         5.16.10-1.32.fc32.qubes.x86_64+ #226
        RIP: 0010:free_netdev+0xa3/0x1a0
        Code: ff 48 89 df e8 2e e9 00 00 48 8b 43 50 48 8b 08 48 8d b8 a0 fe ff ff 48 8d a9 a0 fe ff ff 49 39 c4 75 26 eb 47 e8 ed c1 66 ff <48> 8b 85 60 01 00 00 48 8d 95 60 01 00 00 48 89 ef 48 2d 60 01 00
        RSP: 0000:ffffc90000bcfd00 EFLAGS: 00010286
        RAX: 0000000000000000 RBX: ffff88800edad000 RCX: 0000000000000000
        RDX: 0000000000000001 RSI: ffffc90000bcfc30 RDI: 00000000ffffffff
        RBP: fffffffffffffea0 R08: 0000000000000000 R09: 0000000000000000
        R10: 0000000000000000 R11: 0000000000000001 R12: ffff88800edad050
        R13: ffff8880065f8f88 R14: 0000000000000000 R15: ffff8880066c6680
        FS:  0000000000000000(0000) GS:ffff8880f3300000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000000 CR3: 00000000e998c006 CR4: 00000000003706e0
        Call Trace:
         <TASK>
         xennet_remove+0x13d/0x300 [xen_netfront]
         xenbus_dev_remove+0x6d/0xf0
         __device_release_driver+0x17a/0x240
         device_release_driver+0x24/0x30
         bus_remove_device+0xd8/0x140
         device_del+0x18b/0x410
         ? _raw_spin_unlock+0x16/0x30
         ? klist_iter_exit+0x14/0x20
         ? xenbus_dev_request_and_reply+0x80/0x80
         device_unregister+0x13/0x60
         xenbus_dev_changed+0x18e/0x1f0
         xenwatch_thread+0xc0/0x1a0
         ? do_wait_intr_irq+0xa0/0xa0
         kthread+0x16b/0x190
         ? set_kthread_struct+0x40/0x40
         ret_from_fork+0x22/0x30
         </TASK>
    
    Fix this by calling xennet_destroy_queues() from xennet_uninit(),
    when real_num_tx_queues is still available. This ensures that queues are
    destroyed when real_num_tx_queues is set to 0, regardless of how
    unregister_netdev() was called.
    
    Originally reported at
    https://github.com/QubesOS/qubes-issues/issues/7257
    
    Fixes: d7dac083414eb5bb9 ("net-sysfs: update the queue counts in the unregistration path")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce41d80391967c6b48f7bedf1a381237338e71e1
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Feb 24 15:21:42 2022 +0200

    drm/i915: s/JSP2/ICP2/ PCH
    
    commit 08783aa7693f55619859f4f63f384abf17cb58c5 upstream.
    
    This JSP2 PCH actually seems to be some special Apple
    specific ICP variant rather than a JSP. Make it so. Or at
    least all the references to it seem to be some Apple ICL
    machines. Didn't manage to find these PCI IDs in any
    public chipset docs unfortunately.
    
    The only thing we're losing here with this JSP->ICP change
    is Wa_14011294188, but based on the HSD that isn't actually
    needed on any ICP based design (including JSP), only TGP
    based stuff (including MCC) really need it. The documented
    w/a just never made that distinction because Windows didn't
    want to differentiate between JSP and MCC (not sure how
    they handle hpd/ddc/etc. then though...).
    
    Cc: stable@vger.kernel.org
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4226
    Fixes: 943682e3bd19 ("drm/i915: Introduce Jasper Lake PCH")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220224132142.12927-1-ville.syrjala@linux.intel.com
    Acked-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Tested-by: Tomas Bzatek <bugs@bzatek.net>
    (cherry picked from commit 53581504a8e216d435f114a4f2596ad0dfd902fc)
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61a895da48443c899083c9eddd9b77484e232707
Author: Lennert Buytenhek <buytenh@wantstofly.org>
Date:   Mon Oct 4 13:07:24 2021 +0300

    iommu/amd: Recover from event log overflow
    
    commit 5ce97f4ec5e0f8726a5dda1710727b1ee9badcac upstream.
    
    The AMD IOMMU logs I/O page faults and such to a ring buffer in
    system memory, and this ring buffer can overflow.  The AMD IOMMU
    spec has the following to say about the interrupt status bit that
    signals this overflow condition:
    
            EventOverflow: Event log overflow. RW1C. Reset 0b. 1 = IOMMU
            event log overflow has occurred. This bit is set when a new
            event is to be written to the event log and there is no usable
            entry in the event log, causing the new event information to
            be discarded. An interrupt is generated when EventOverflow = 1b
            and MMIO Offset 0018h[EventIntEn] = 1b. No new event log
            entries are written while this bit is set. Software Note: To
            resume logging, clear EventOverflow (W1C), and write a 1 to
            MMIO Offset 0018h[EventLogEn].
    
    The AMD IOMMU driver doesn't currently implement this recovery
    sequence, meaning that if a ring buffer overflow occurs, logging
    of EVT/PPR/GA events will cease entirely.
    
    This patch implements the spec-mandated reset sequence, with the
    minor tweak that the hardware seems to want to have a 0 written to
    MMIO Offset 0018h[EventLogEn] first, before writing an 1 into this
    field, or the IOMMU won't actually resume logging events.
    
    Signed-off-by: Lennert Buytenhek <buytenh@arista.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/YVrSXEdW2rzEfOvk@wantstofly.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6951a5888165a38bb7c39a2d18f5668b2f1241c7
Author: Marek Vasut <marex@denx.de>
Date:   Tue Feb 15 14:06:45 2022 +0100

    ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min
    
    commit 9bdd10d57a8807dba0003af0325191f3cec0f11c upstream.
    
    While the $val/$val2 values passed in from userspace are always >= 0
    integers, the limits of the control can be signed integers and the $min
    can be non-zero and less than zero. To correctly validate $val/$val2
    against platform_max, add the $min offset to val first.
    
    Fixes: 817f7c9335ec0 ("ASoC: ops: Reject out of bounds values in snd_soc_put_volsw()")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220215130645.164025-1-marex@denx.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd9dd24fd7cb5310fa1db2b1b03431c96663fa7c
Author: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Date:   Fri Feb 25 13:39:51 2022 +0100

    riscv: Fix config KASAN && DEBUG_VIRTUAL
    
    commit c648c4bb7d02ceb53ee40172fdc4433b37cee9c6 upstream.
    
    __virt_to_phys function is called very early in the boot process (ie
    kasan_early_init) so it should not be instrumented by KASAN otherwise it
    bugs.
    
    Fix this by declaring phys_addr.c as non-kasan instrumentable.
    
    Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
    Fixes: 8ad8b72721d0 (riscv: Add KASAN support)
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7211aab2881b0a8b6a002ec2eb341b2d3cb9f003
Author: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Date:   Fri Feb 25 13:39:49 2022 +0100

    riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP
    
    commit a3d328037846d013bb4c7f3777241e190e4c75e1 upstream.
    
    In order to get the pfn of a struct page* when sparsemem is enabled
    without vmemmap, the mem_section structures need to be initialized which
    happens in sparse_init.
    
    But kasan_early_init calls pfn_to_page way before sparse_init is called,
    which then tries to dereference a null mem_section pointer.
    
    Fix this by removing the usage of this function in kasan_early_init.
    
    Fixes: 8ad8b72721d0 ("riscv: Add KASAN support")
    Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fb385f0ac44cfcc8286d27c8841bc12cf5a08f
Author: Sunil V L <sunilvl@ventanamicro.com>
Date:   Fri Jan 28 10:20:04 2022 +0530

    riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value
    
    commit dcf0c838854c86e1f41fb1934aea906845d69782 upstream.
    
    The get_boot_hartid_from_fdt() function currently returns U32_MAX
    for failure case which is not correct because U32_MAX is a valid
    hartid value. This patch fixes the issue by returning error code.
    
    Cc: <stable@vger.kernel.org>
    Fixes: d7071743db31 ("RISC-V: Add EFI stub support.")
    Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
    Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 336872601cb8eb2b09bccbae81b7354d5fbd1cca
Author: Zhen Ni <nizhen@uniontech.com>
Date:   Wed Mar 2 15:42:41 2022 +0800

    ALSA: intel_hdmi: Fix reference to PCM buffer address
    
    commit 0aa6b294b312d9710804679abd2c0c8ca52cc2bc upstream.
    
    PCM buffers might be allocated dynamically when the buffer
    preallocation failed or a larger buffer is requested, and it's not
    guaranteed that substream->dma_buffer points to the actually used
    buffer.  The driver needs to refer to substream->runtime->dma_addr
    instead for the buffer address.
    
    Signed-off-by: Zhen Ni <nizhen@uniontech.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220302074241.30469-1-nizhen@uniontech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e57dfaf66f2b74911e45134e51b95759993fa302
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Thu Jan 13 20:08:40 2022 -0500

    tracing: Add ustring operation to filtering string pointers
    
    [ Upstream commit f37c3bbc635994eda203a6da4ba0f9d05165a8d6 ]
    
    Since referencing user space pointers is special, if the user wants to
    filter on a field that is a pointer to user space, then they need to
    specify it.
    
    Add a ".ustring" attribute to the field name for filters to state that the
    field is pointing to user space such that the kernel can take the
    appropriate action to read that pointer.
    
    Link: https://lore.kernel.org/all/yt9d8rvmt2jq.fsf@linux.ibm.com/
    
    Fixes: 77360f9bbc7e ("tracing: Add test for user space strings when filtering on string pointers")
    Tested-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a9d2390f3e2d128b1a73279d16bb1176207a0e2
Author: Qiang Yu <qiang.yu@amd.com>
Date:   Mon Feb 21 17:53:56 2022 +0800

    drm/amdgpu: check vm ready by amdgpu_vm->evicting flag
    
    [ Upstream commit c1a66c3bc425ff93774fb2f6eefa67b83170dd7e ]
    
    Workstation application ANSA/META v21.1.4 get this error dmesg when
    running CI test suite provided by ANSA/META:
    [drm:amdgpu_gem_va_ioctl [amdgpu]] *ERROR* Couldn't update BO_VA (-16)
    
    This is caused by:
    1. create a 256MB buffer in invisible VRAM
    2. CPU map the buffer and access it causes vm_fault and try to move
       it to visible VRAM
    3. force visible VRAM space and traverse all VRAM bos to check if
       evicting this bo is valuable
    4. when checking a VM bo (in invisible VRAM), amdgpu_vm_evictable()
       will set amdgpu_vm->evicting, but latter due to not in visible
       VRAM, won't really evict it so not add it to amdgpu_vm->evicted
    5. before next CS to clear the amdgpu_vm->evicting, user VM ops
       ioctl will pass amdgpu_vm_ready() (check amdgpu_vm->evicted)
       but fail in amdgpu_vm_bo_update_mapping() (check
       amdgpu_vm->evicting) and get this error log
    
    This error won't affect functionality as next CS will finish the
    waiting VM ops. But we'd better clear the error log by checking
    the amdgpu_vm->evicting flag in amdgpu_vm_ready() to stop calling
    amdgpu_vm_bo_update_mapping() later.
    
    Another reason is amdgpu_vm->evicted list holds all BOs (both
    user buffer and page table), but only page table BOs' eviction
    prevent VM ops. amdgpu_vm->evicting flag is set only for page
    table BOs, so we should use evicting flag instead of evicted list
    in amdgpu_vm_ready().
    
    The side effect of this change is: previously blocked VM op (user
    buffer in "evicted" list but no page table in it) gets done
    immediately.
    
    v2: update commit comments.
    
    Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Qiang Yu <qiang.yu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67e25eb1b4749740e079d94d5f40c2287f4ca1c5
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Sat Feb 19 23:04:29 2022 +0300

    ata: pata_hpt37x: fix PCI clock detection
    
    [ Upstream commit 5f6b0f2d037c8864f20ff15311c695f65eb09db5 ]
    
    The f_CNT register (at the PCI config. address 0x78) is 16-bit, not
    8-bit! The bug was there from the very start... :-(
    
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Fixes: 669a5db411d8 ("[libata] Add a bunch of PATA drivers.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 335f11ff74f25dc5e86d89efac9adb2aa03149d4
Author: Valentin Caron <valentin.caron@foss.st.com>
Date:   Tue Jan 11 17:44:40 2022 +0100

    serial: stm32: prevent TDR register overwrite when sending x_char
    
    [ Upstream commit d3d079bde07e1b7deaeb57506dc0b86010121d17 ]
    
    When sending x_char in stm32_usart_transmit_chars(), driver can overwrite
    the value of TDR register by the value of x_char. If this happens, the
    previous value that was present in TDR register will not be sent through
    uart.
    
    This code checks if the previous value in TDR register is sent before
    writing the x_char value into register.
    
    Fixes: 48a6092fb41f ("serial: stm32-usart: Add STM32 USART Driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
    Link: https://lore.kernel.org/r/20220111164441.6178-2-valentin.caron@foss.st.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c999c5927e96e51c0666fbdd78a9e6dd47fa200b
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Mon Jan 10 11:55:32 2022 -0500

    tracing: Add test for user space strings when filtering on string pointers
    
    [ Upstream commit 77360f9bbc7e5e2ab7a2c8b4c0244fbbfcfc6f62 ]
    
    Pingfan reported that the following causes a fault:
    
      echo "filename ~ \"cpu\"" > events/syscalls/sys_enter_openat/filter
      echo 1 > events/syscalls/sys_enter_at/enable
    
    The reason is that trace event filter treats the user space pointer
    defined by "filename" as a normal pointer to compare against the "cpu"
    string. The following bug happened:
    
     kvm-03-guest16 login: [72198.026181] BUG: unable to handle page fault for address: 00007fffaae8ef60
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0001) - permissions violation
     PGD 80000001008b7067 P4D 80000001008b7067 PUD 2393f1067 PMD 2393ec067 PTE 8000000108f47867
     Oops: 0001 [#1] PREEMPT SMP PTI
     CPU: 1 PID: 1 Comm: systemd Kdump: loaded Not tainted 5.14.0-32.el9.x86_64 #1
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:strlen+0x0/0x20
     Code: 48 89 f9 74 09 48 83 c1 01 80 39 00 75 f7 31 d2 44 0f b6 04 16 44 88 04 11
           48 83 c2 01 45 84 c0 75 ee c3 0f 1f 80 00 00 00 00 <80> 3f 00 74 10 48 89 f8
           48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 31
     RSP: 0018:ffffb5b900013e48 EFLAGS: 00010246
     RAX: 0000000000000018 RBX: ffff8fc1c49ede00 RCX: 0000000000000000
     RDX: 0000000000000020 RSI: ffff8fc1c02d601c RDI: 00007fffaae8ef60
     RBP: 00007fffaae8ef60 R08: 0005034f4ddb8ea4 R09: 0000000000000000
     R10: ffff8fc1c02d601c R11: 0000000000000000 R12: ffff8fc1c8a6e380
     R13: 0000000000000000 R14: ffff8fc1c02d6010 R15: ffff8fc1c00453c0
     FS:  00007fa86123db40(0000) GS:ffff8fc2ffd00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007fffaae8ef60 CR3: 0000000102880001 CR4: 00000000007706e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     PKRU: 55555554
     Call Trace:
      filter_pred_pchar+0x18/0x40
      filter_match_preds+0x31/0x70
      ftrace_syscall_enter+0x27a/0x2c0
      syscall_trace_enter.constprop.0+0x1aa/0x1d0
      do_syscall_64+0x16/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7fa861d88664
    
    The above happened because the kernel tried to access user space directly
    and triggered a "supervisor read access in kernel mode" fault. Worse yet,
    the memory could not even be loaded yet, and a SEGFAULT could happen as
    well. This could be true for kernel space accessing as well.
    
    To be even more robust, test both kernel and user space strings. If the
    string fails to read, then simply have the filter fail.
    
    Note, TASK_SIZE is used to determine if the pointer is user or kernel space
    and the appropriate strncpy_from_kernel/user_nofault() function is used to
    copy the memory. For some architectures, the compare to TASK_SIZE may always
    pick user space or kernel space. If it gets it wrong, the only thing is that
    the filter will fail to match. In the future, this needs to be fixed to have
    the event denote which should be used. But failing a filter is much better
    than panicing the machine, and that can be solved later.
    
    Link: https://lore.kernel.org/all/20220107044951.22080-1-kernelfans@gmail.com/
    Link: https://lkml.kernel.org/r/20220110115532.536088fd@gandalf.local.home
    
    Cc: stable@vger.kernel.org
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Reported-by: Pingfan Liu <kernelfans@gmail.com>
    Tested-by: Pingfan Liu <kernelfans@gmail.com>
    Fixes: 87a342f5db69d ("tracing/filters: Support filtering for char * strings")
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db36a94ed66baa56f54393ad672f19b313c04ade
Author: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
Date:   Mon Nov 22 22:02:37 2021 +0900

    exfat: fix i_blocks for files truncated over 4 GiB
    
    [ Upstream commit 92fba084b79e6bc7b12fc118209f1922c1a2df56 ]
    
    In exfat_truncate(), the computation of inode->i_blocks is wrong if
    the file is larger than 4 GiB because a 32-bit variable is used as a
    mask. This is fixed and simplified by using round_up().
    
    Also fix the same buggy computation in exfat_read_root() and another
    (correct) one in exfat_fill_inode(). The latter was fixed another way
    last month but can be simplified by using round_up() as well. See:
    
      commit 0c336d6e33f4 ("exfat: fix incorrect loading of i_blocks for
                            large files")
    
    Fixes: 98d917047e8b ("exfat: add file operations")
    Cc: stable@vger.kernel.org # v5.7+
    Suggested-by: Matthew Wilcox <willy@infradead.org>
    Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b810d5cb6ce6fb75f32094724cd2e3a720a89b2
Author: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
Date:   Tue Nov 2 22:23:58 2021 +0100

    exfat: reuse exfat_inode_info variable instead of calling EXFAT_I()
    
    [ Upstream commit 7dee6f57d7f22a89dd214518c778aec448270d4c ]
    
    Also add a local "struct exfat_inode_info *ei" variable to
    exfat_truncate() to simplify the code.
    
    Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdd64084e405544c5c11841ca9261785c988e2a1
Author: Hangyu Hua <hbh25y@gmail.com>
Date:   Sat Jan 1 01:21:38 2022 +0800

    usb: gadget: clear related members when goto fail
    
    commit 501e38a5531efbd77d5c73c0ba838a889bfc1d74 upstream.
    
    dev->config and dev->hs_config and dev->dev need to be cleaned if
    dev_config fails to avoid UAF.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Link: https://lore.kernel.org/r/20211231172138.7993-3-hbh25y@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c13159a588818a1d2cd6519f4d3b6f7e17a9ffbd
Author: Hangyu Hua <hbh25y@gmail.com>
Date:   Sat Jan 1 01:21:37 2022 +0800

    usb: gadget: don't release an existing dev->buf
    
    commit 89f3594d0de58e8a57d92d497dea9fee3d4b9cda upstream.
    
    dev->buf does not need to be released if it already exists before
    executing dev_config.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Link: https://lore.kernel.org/r/20211231172138.7993-2-hbh25y@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00d5ac05af3a126e1fbd11a3309478b2b3b0296e
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Feb 15 12:13:35 2022 +0100

    net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990
    
    [ Upstream commit 21e8a96377e6b6debae42164605bf9dcbe5720c5 ]
    
    Add quirk CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE for Telit FN990
    0x1071 composition in order to avoid bind error.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16f903afbafb9f505606e19e6e36ac5d7be96910
Author: Wolfram Sang <wsa@kernel.org>
Date:   Sat Feb 12 20:47:07 2022 +0100

    i2c: qup: allow COMPILE_TEST
    
    [ Upstream commit 5de717974005fcad2502281e9f82e139ca91f4bb ]
    
    Driver builds fine with COMPILE_TEST. Enable it for wider test coverage
    and easier maintenance.
    
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57c333ad8c2829cf92cf1a3edd5742038b021a83
Author: Wolfram Sang <wsa@kernel.org>
Date:   Sat Feb 12 20:45:48 2022 +0100

    i2c: cadence: allow COMPILE_TEST
    
    [ Upstream commit 0b0dcb3882c8f08bdeafa03adb4487e104d26050 ]
    
    Driver builds fine with COMPILE_TEST. Enable it for wider test coverage
    and easier maintenance.
    
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Acked-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d6285e6324121592bb7a7ddecb78c4103802751
Author: Yongzhi Liu <lyz_cs@pku.edu.cn>
Date:   Sat Jan 15 21:34:56 2022 -0800

    dmaengine: shdma: Fix runtime PM imbalance on error
    
    [ Upstream commit 455896c53d5b803733ddd84e1bf8a430644439b6 ]
    
    pm_runtime_get_() increments the runtime PM usage counter even
    when it returns an error code, thus a matching decrement is needed on
    the error handling path to keep the counter balanced.
    
    Signed-off-by: Yongzhi Liu <lyz_cs@pku.edu.cn>
    Link: https://lore.kernel.org/r/1642311296-87020-1-git-send-email-lyz_cs@pku.edu.cn
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37b06d5ebf5cb0a8654a16a9c46c43adb1beec80
Author: Sherry Yang <sherry.yang@oracle.com>
Date:   Thu Feb 10 12:30:49 2022 -0800

    selftests/seccomp: Fix seccomp failure by adding missing headers
    
    [ Upstream commit 21bffcb76ee2fbafc7d5946cef10abc9df5cfff7 ]
    
    seccomp_bpf failed on tests 47 global.user_notification_filter_empty
    and 48 global.user_notification_filter_empty_threaded when it's
    tested on updated kernel but with old kernel headers. Because old
    kernel headers don't have definition of macro __NR_clone3 which is
    required for these two tests. Since under selftests/, we can install
    headers once for all tests (the default INSTALL_HDR_PATH is
    usr/include), fix it by adding usr/include to the list of directories
    to be searched. Use "-isystem" to indicate it's a system directory as
    the real kernel headers directories are.
    
    Signed-off-by: Sherry Yang <sherry.yang@oracle.com>
    Tested-by: Sherry Yang <sherry.yang@oracle.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df9db1a2af37f39ad1653c7b9b0d275d72d0bc67
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Fri Feb 11 02:59:15 2022 +1000

    cifs: fix double free race when mount fails in cifs_get_root()
    
    [ Upstream commit 3d6cc9898efdfb062efb74dc18cfc700e082f5d5 ]
    
    When cifs_get_root() fails during cifs_smb3_do_mount() we call
    deactivate_locked_super() which eventually will call delayed_free() which
    will free the context.
    In this situation we should not proceed to enter the out: section in
    cifs_smb3_do_mount() and free the same resources a second time.
    
    [Thu Feb 10 12:59:06 2022] BUG: KASAN: use-after-free in rcu_cblist_dequeue+0x32/0x60
    [Thu Feb 10 12:59:06 2022] Read of size 8 at addr ffff888364f4d110 by task swapper/1/0
    
    [Thu Feb 10 12:59:06 2022] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G           OE     5.17.0-rc3+ #4
    [Thu Feb 10 12:59:06 2022] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.0 12/17/2019
    [Thu Feb 10 12:59:06 2022] Call Trace:
    [Thu Feb 10 12:59:06 2022]  <IRQ>
    [Thu Feb 10 12:59:06 2022]  dump_stack_lvl+0x5d/0x78
    [Thu Feb 10 12:59:06 2022]  print_address_description.constprop.0+0x24/0x150
    [Thu Feb 10 12:59:06 2022]  ? rcu_cblist_dequeue+0x32/0x60
    [Thu Feb 10 12:59:06 2022]  kasan_report.cold+0x7d/0x117
    [Thu Feb 10 12:59:06 2022]  ? rcu_cblist_dequeue+0x32/0x60
    [Thu Feb 10 12:59:06 2022]  __asan_load8+0x86/0xa0
    [Thu Feb 10 12:59:06 2022]  rcu_cblist_dequeue+0x32/0x60
    [Thu Feb 10 12:59:06 2022]  rcu_core+0x547/0xca0
    [Thu Feb 10 12:59:06 2022]  ? call_rcu+0x3c0/0x3c0
    [Thu Feb 10 12:59:06 2022]  ? __this_cpu_preempt_check+0x13/0x20
    [Thu Feb 10 12:59:06 2022]  ? lock_is_held_type+0xea/0x140
    [Thu Feb 10 12:59:06 2022]  rcu_core_si+0xe/0x10
    [Thu Feb 10 12:59:06 2022]  __do_softirq+0x1d4/0x67b
    [Thu Feb 10 12:59:06 2022]  __irq_exit_rcu+0x100/0x150
    [Thu Feb 10 12:59:06 2022]  irq_exit_rcu+0xe/0x30
    [Thu Feb 10 12:59:06 2022]  sysvec_hyperv_stimer0+0x9d/0xc0
    ...
    [Thu Feb 10 12:59:07 2022] Freed by task 58179:
    [Thu Feb 10 12:59:07 2022]  kasan_save_stack+0x26/0x50
    [Thu Feb 10 12:59:07 2022]  kasan_set_track+0x25/0x30
    [Thu Feb 10 12:59:07 2022]  kasan_set_free_info+0x24/0x40
    [Thu Feb 10 12:59:07 2022]  ____kasan_slab_free+0x137/0x170
    [Thu Feb 10 12:59:07 2022]  __kasan_slab_free+0x12/0x20
    [Thu Feb 10 12:59:07 2022]  slab_free_freelist_hook+0xb3/0x1d0
    [Thu Feb 10 12:59:07 2022]  kfree+0xcd/0x520
    [Thu Feb 10 12:59:07 2022]  cifs_smb3_do_mount+0x149/0xbe0 [cifs]
    [Thu Feb 10 12:59:07 2022]  smb3_get_tree+0x1a0/0x2e0 [cifs]
    [Thu Feb 10 12:59:07 2022]  vfs_get_tree+0x52/0x140
    [Thu Feb 10 12:59:07 2022]  path_mount+0x635/0x10c0
    [Thu Feb 10 12:59:07 2022]  __x64_sys_mount+0x1bf/0x210
    [Thu Feb 10 12:59:07 2022]  do_syscall_64+0x5c/0xc0
    [Thu Feb 10 12:59:07 2022]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    [Thu Feb 10 12:59:07 2022] Last potentially related work creation:
    [Thu Feb 10 12:59:07 2022]  kasan_save_stack+0x26/0x50
    [Thu Feb 10 12:59:07 2022]  __kasan_record_aux_stack+0xb6/0xc0
    [Thu Feb 10 12:59:07 2022]  kasan_record_aux_stack_noalloc+0xb/0x10
    [Thu Feb 10 12:59:07 2022]  call_rcu+0x76/0x3c0
    [Thu Feb 10 12:59:07 2022]  cifs_umount+0xce/0xe0 [cifs]
    [Thu Feb 10 12:59:07 2022]  cifs_kill_sb+0xc8/0xe0 [cifs]
    [Thu Feb 10 12:59:07 2022]  deactivate_locked_super+0x5d/0xd0
    [Thu Feb 10 12:59:07 2022]  cifs_smb3_do_mount+0xab9/0xbe0 [cifs]
    [Thu Feb 10 12:59:07 2022]  smb3_get_tree+0x1a0/0x2e0 [cifs]
    [Thu Feb 10 12:59:07 2022]  vfs_get_tree+0x52/0x140
    [Thu Feb 10 12:59:07 2022]  path_mount+0x635/0x10c0
    [Thu Feb 10 12:59:07 2022]  __x64_sys_mount+0x1bf/0x210
    [Thu Feb 10 12:59:07 2022]  do_syscall_64+0x5c/0xc0
    [Thu Feb 10 12:59:07 2022]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Reported-by: Shyam Prasad N <sprasad@microsoft.com>
    Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3850e211df6817e7a6c3999080a8bc4a63092c0
Author: Hangyu Hua <hbh25y@gmail.com>
Date:   Fri Feb 11 12:55:10 2022 +0800

    tipc: fix a bit overflow in tipc_crypto_key_rcv()
    
    [ Upstream commit 143de8d97d79316590475dc2a84513c63c863ddf ]
    
    msg_data_sz return a 32bit value, but size is 16bit. This may lead to a
    bit overflow.
    
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d4985b8a0bf716dba5ae2caefcd906e9ca3df03
Author: Marc Zyngier <maz@kernel.org>
Date:   Thu Feb 3 09:24:45 2022 +0000

    KVM: arm64: vgic: Read HW interrupt pending state from the HW
    
    [ Upstream commit 5bfa685e62e9ba93c303a9a8db646c7228b9b570 ]
    
    It appears that a read access to GIC[DR]_I[CS]PENDRn doesn't always
    result in the pending interrupts being accurately reported if they are
    mapped to a HW interrupt. This is particularily visible when acking
    the timer interrupt and reading the GICR_ISPENDR1 register immediately
    after, for example (the interrupt appears as not-pending while it really
    is...).
    
    This is because a HW interrupt has its 'active and pending state' kept
    in the *physical* distributor, and not in the virtual one, as mandated
    by the spec (this is what allows the direct deactivation). The virtual
    distributor only caries the pending and active *states* (note the
    plural, as these are two independent and non-overlapping states).
    
    Fix it by reading the HW state back, either from the timer itself or
    from the distributor if necessary.
    
    Reported-by: Ricardo Koller <ricarkol@google.com>
    Tested-by: Ricardo Koller <ricarkol@google.com>
    Reviewed-by: Ricardo Koller <ricarkol@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220208123726.3604198-1-maz@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d4b00e053fc67d1517684050f7720978dc92c48
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Tue Feb 8 09:59:16 2022 -0800

    Input: clear BTN_RIGHT/MIDDLE on buttonpads
    
    [ Upstream commit 37ef4c19b4c659926ce65a7ac709ceaefb211c40 ]
    
    Buttonpads are expected to map the INPUT_PROP_BUTTONPAD property bit
    and the BTN_LEFT key bit.
    
    As explained in the specification, where a device has a button type
    value of 0 (click-pad) or 1 (pressure-pad) there should not be
    discrete buttons:
    https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/touchpad-windows-precision-touchpad-collection#device-capabilities-feature-report
    
    However, some drivers map the BTN_RIGHT and/or BTN_MIDDLE key bits even
    though the device is a buttonpad and therefore does not have those
    buttons.
    
    This behavior has forced userspace applications like libinput to
    implement different workarounds and quirks to detect buttonpads and
    offer to the user the right set of features and configuration options.
    For more information:
    https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/726
    
    In order to avoid this issue clear the BTN_RIGHT and BTN_MIDDLE key
    bits when the input device is register if the INPUT_PROP_BUTTONPAD
    property bit is set.
    
    Notice that this change will not affect udev because it does not check
    for buttons. See systemd/src/udev/udev-builtin-input_id.c.
    
    List of known affected hardware:
    
     - Chuwi AeroBook Plus
     - Chuwi Gemibook
     - Framework Laptop
     - GPD Win Max
     - Huawei MateBook 2020
     - Prestigio Smartbook 141 C2
     - Purism Librem 14v1
     - StarLite Mk II   - AMI firmware
     - StarLite Mk II   - Coreboot firmware
     - StarLite Mk III  - AMI firmware
     - StarLite Mk III  - Coreboot firmware
     - StarLabTop Mk IV - AMI firmware
     - StarLabTop Mk IV - Coreboot firmware
     - StarBook Mk V
    
    Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Acked-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Link: https://lore.kernel.org/r/20220208174806.17183-1-jose.exposito89@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e7015d982ee8defa4b45e652b177800bb38c213
Author: Oliver Barta <oliver.barta@aptiv.com>
Date:   Tue Feb 8 09:46:45 2022 +0100

    regulator: core: fix false positive in regulator_late_cleanup()
    
    [ Upstream commit 4e2a354e3775870ca823f1fb29bbbffbe11059a6 ]
    
    The check done by regulator_late_cleanup() to detect whether a regulator
    is on was inconsistent with the check done by _regulator_is_enabled().
    While _regulator_is_enabled() takes the enable GPIO into account,
    regulator_late_cleanup() was not doing that.
    
    This resulted in a false positive, e.g. when a GPIO-controlled fixed
    regulator was used, which was not enabled at boot time, e.g.
    
    reg_disp_1v2: reg_disp_1v2 {
            compatible = "regulator-fixed";
            regulator-name = "display_1v2";
            regulator-min-microvolt = <1200000>;
            regulator-max-microvolt = <1200000>;
            gpio = <&tlmm 148 0>;
            enable-active-high;
    };
    
    Such regulator doesn't have an is_enabled() operation. Nevertheless
    it's state can be determined based on the enable GPIO. The check in
    regulator_late_cleanup() wrongly assumed that the regulator is on and
    tried to disable it.
    
    Signed-off-by: Oliver Barta <oliver.barta@aptiv.com>
    Link: https://lore.kernel.org/r/20220208084645.8686-1-oliver.barta@aptiv.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 467d664e5fff7a4069ab5fd2fad95773d3df39e9
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Mon Feb 7 17:30:00 2022 +0200

    ASoC: rt5682: do not block workqueue if card is unbound
    
    [ Upstream commit 4c33de0673ced9c7c37b3bbd9bfe0fda72340b2a ]
    
    The current rt5682_jack_detect_handler() assumes the component
    and card will always show up and implements an infinite usleep
    loop waiting for them to show up.
    
    This does not hold true if a codec interrupt (or other
    event) occurs when the card is unbound. The codec driver's
    remove  or shutdown functions cannot cancel the workqueue due
    to the wait loop. As a result, code can either end up blocking
    the workqueue, or hit a kernel oops when the card is freed.
    
    Fix the issue by rescheduling the jack detect handler in
    case the card is not ready. In case card never shows up,
    the shutdown/remove/suspend calls can now cancel the detect
    task.
    
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Shuming Fan <shumingf@realtek.com>
    Link: https://lore.kernel.org/r/20220207153000.3452802-3-kai.vehmanen@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b050b7a0d733526c34cd4cf1e42afee34efac5d
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Mon Feb 7 17:29:59 2022 +0200

    ASoC: rt5668: do not block workqueue if card is unbound
    
    [ Upstream commit a6d78661dc903d90a327892bbc34268f3a5f4b9c ]
    
    The current rt5668_jack_detect_handler() assumes the component
    and card will always show up and implements an infinite usleep
    loop waiting for them to show up.
    
    This does not hold true if a codec interrupt (or other
    event) occurs when the card is unbound. The codec driver's
    remove  or shutdown functions cannot cancel the workqueue due
    to the wait loop. As a result, code can either end up blocking
    the workqueue, or hit a kernel oops when the card is freed.
    
    Fix the issue by rescheduling the jack detect handler in
    case the card is not ready. In case card never shows up,
    the shutdown/remove/suspend calls can now cancel the detect
    task.
    
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Shuming Fan <shumingf@realtek.com>
    Link: https://lore.kernel.org/r/20220207153000.3452802-2-kai.vehmanen@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11956c6eeb5a29cdb0747fca6f0b8fb997a8aef2
Author: Eric Anholt <eric@anholt.net>
Date:   Fri Feb 23 22:42:31 2018 +0100

    i2c: bcm2835: Avoid clock stretching timeouts
    
    [ Upstream commit 9495b9b31abe525ebd93da58de2c88b9f66d3a0e ]
    
    The CLKT register contains at poweron 0x40, which at our typical 100kHz
    bus rate means .64ms. But there is no specified limit to how long devices
    should be able to stretch the clocks, so just disable the timeout. We
    still have a timeout wrapping the entire transfer.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    BugLink: https://github.com/raspberrypi/linux/issues/3064
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13f0ea8d11934a017f5c353fa049a09de3c37ec0
Author: JaeMan Park <jaeman@google.com>
Date:   Thu Jan 13 15:02:35 2022 +0900

    mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work
    
    [ Upstream commit cacfddf82baf1470e5741edeecb187260868f195 ]
    
    In mac80211_hwsim, the probe_req frame is created and sent while
    scanning. It is sent with ieee80211_tx_info which is not initialized.
    Uninitialized ieee80211_tx_info can cause problems when using
    mac80211_hwsim with wmediumd. wmediumd checks the tx_rates field of
    ieee80211_tx_info and doesn't relay probe_req frame to other clients
    even if it is a broadcasting message.
    
    Call ieee80211_tx_prepare_skb() to initialize ieee80211_tx_info for
    the probe_req that is created by hw_scan_work in mac80211_hwsim.
    
    Signed-off-by: JaeMan Park <jaeman@google.com>
    Link: https://lore.kernel.org/r/20220113060235.546107-1-jaeman@google.com
    [fix memory leak]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46f6d66219b5d68854be1c53ce438d2112b2fe34
Author: Benjamin Beichler <benjamin.beichler@uni-rostock.de>
Date:   Tue Jan 11 22:13:26 2022 +0000

    mac80211_hwsim: report NOACK frames in tx_status
    
    [ Upstream commit 42a79960ffa50bfe9e0bf5d6280be89bf563a5dd ]
    
    Add IEEE80211_TX_STAT_NOACK_TRANSMITTED to tx_status flags to have proper
    statistics for non-acked frames.
    
    Signed-off-by: Benjamin Beichler <benjamin.beichler@uni-rostock.de>
    Link: https://lore.kernel.org/r/20220111221327.1499881-1-benjamin.beichler@uni-rostock.de
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>