commit 5fd8594b3cefd966789dfebf8eb4311574fadbb9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 26 11:48:44 2021 +0100

    Linux 4.9.291
    
    Link: https://lore.kernel.org/r/20211124115703.941380739@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20211125125641.226524689@linuxfoundation.org
    Link: https://lore.kernel.org/r/20211125160515.184659981@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 077cb856cc65fedaad43cb36a2bcb00aa1971a62
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Mar 2 15:24:58 2021 +0300

    soc/tegra: pmc: Fix imbalanced clock disabling in error code path
    
    commit 19221e3083020bd9537624caa0ee0145ed92ba36 upstream.
    
    The tegra_powergate_power_up() has a typo in the error code path where it
    will try to disable clocks twice, fix it. In practice that error never
    happens, so this is a minor correction.
    
    Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
    Tested-by: Nicolas Chauvet <kwizart@gmail.com> # PAZ00 T20 and TK1 T124
    Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 146934b127652b0aef8972bc1318a24251fc17a5
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon Oct 18 22:40:28 2021 +0200

    usb: max-3421: Use driver data instead of maintaining a list of bound devices
    
    commit fc153aba3ef371d0d76eb88230ed4e0dee5b38f2 upstream.
    
    Instead of maintaining a single-linked list of devices that must be
    searched linearly in .remove() just use spi_set_drvdata() to remember the
    link between the spi device and the driver struct. Then the global list
    and the next member can be dropped.
    
    This simplifies the driver, reduces the memory footprint and the time to
    search the list. Also it makes obvious that there is always a corresponding
    driver struct for a given device in .remove(), so the error path for
    !max3421_hcd can be dropped, too.
    
    As a side effect this fixes a data inconsistency when .probe() races with
    itself for a second max3421 device in manipulating max3421_hcd_list. A
    similar race is fixed in .remove(), too.
    
    Fixes: 2d53139f3162 ("Add support for using a MAX3421E chip as a host driver.")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20211018204028.2914597-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e406b0e12dee681aca94c3de61a46c23f7fdc614
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 5 10:09:25 2021 +0100

    ASoC: DAPM: Cover regression by kctl change notification fix
    
    commit 827b0913a9d9d07a0c3e559dbb20ca4d6d285a54 upstream.
    
    The recent fix for DAPM to correct the kctl change notification by the
    commit 5af82c81b2c4 ("ASoC: DAPM: Fix missing kctl change
    notifications") caused other regressions since it changed the behavior
    of snd_soc_dapm_set_pin() that is called from several API functions.
    Formerly it returned always 0 for success, but now it returns 0 or 1.
    
    This patch addresses it, restoring the old behavior of
    snd_soc_dapm_set_pin() while keeping the fix in
    snd_soc_dapm_put_pin_switch().
    
    Fixes: 5af82c81b2c4 ("ASoC: DAPM: Fix missing kctl change notifications")
    Reported-by: Yu-Hsuan Hsu <yuhsuan@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211105090925.20575-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e953d93353b4c5a00a7d0f00f3f673afdaf8a5b
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 20 13:39:58 2021 +0100

    batman-adv: Don't always reallocate the fragmentation skb head
    
    commit 992b03b88e36254e26e9a4977ab948683e21bd9f upstream.
    
    When a packet is fragmented by batman-adv, the original batman-adv header
    is not modified. Only a new fragmentation is inserted between the original
    one and the ethernet header. The code must therefore make sure that it has
    a writable region of this size in the skbuff head.
    
    But it is not useful to always reallocate the skbuff by this size even when
    there would be more than enough headroom still in the skb. The reallocation
    is just to costly during in this codepath.
    
    Fixes: ee75ed88879a ("batman-adv: Fragment and send skbs larger than mtu")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backported: adjust context. ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88d145ee3b15989ccd973348371ed2b791b2c6e7
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 20 13:39:57 2021 +0100

    batman-adv: Reserve needed_*room for fragments
    
    commit c5cbfc87558168ef4c3c27ce36eba6b83391db19 upstream.
    
    The batadv net_device is trying to propagate the needed_headroom and
    needed_tailroom from the lower devices. This is needed to avoid cost
    intensive reallocations using pskb_expand_head during the transmission.
    
    But the fragmentation code split the skb's without adding extra room at the
    end/beginning of the various fragments. This reduced the performance of
    transmissions over complex scenarios (batadv on vxlan on wireguard) because
    the lower devices had to perform the reallocations at least once.
    
    Fixes: ee75ed88879a ("batman-adv: Fragment and send skbs larger than mtu")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backported: adjust context. ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1f84b43cc83a13ecda4f158d3ecae263d597a5c
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 20 13:39:56 2021 +0100

    batman-adv: Consider fragmentation for needed_headroom
    
    commit 4ca23e2c2074465bff55ea14221175fecdf63c5f upstream.
    
    If a batman-adv packets has to be fragmented, then the original batman-adv
    packet header is not stripped away. Instead, only a new header is added in
    front of the packet after it was split.
    
    This size must be considered to avoid cost intensive reallocations during
    the transmission through the various device layers.
    
    Fixes: 7bca68c7844b ("batman-adv: Add lower layer needed_(head|tail)room to own ones")
    Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d670b96a61e7b5abf690ff7a21a2dcab4ed085b8
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Sat Nov 20 13:39:55 2021 +0100

    batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh
    
    commit 2369e827046920ef0599e6a36b975ac5c0a359c2 upstream.
    
    Scenario:
    * Multicast frame send from BLA backbone gateways (multiple nodes
      with their bat0 bridged together, with BLA enabled) sharing the same
      LAN to nodes in the mesh
    
    Issue:
    * Nodes receive the frame multiple times on bat0 from the mesh,
      once from each foreign BLA backbone gateway which shares the same LAN
      with another
    
    For multicast frames via batman-adv broadcast packets coming from the
    same BLA backbone but from different backbone gateways duplicates are
    currently detected via a CRC history of previously received packets.
    
    However this CRC so far was not performed for multicast frames received
    via batman-adv unicast packets. Fixing this by appyling the same check
    for such packets, too.
    
    Room for improvements in the future: Ideally we would introduce the
    possibility to not only claim a client, but a complete originator, too.
    This would allow us to only send a multicast-in-unicast packet from a BLA
    backbone gateway claiming the node and by that avoid potential redundant
    transmissions in the first place.
    
    Fixes: e5cf86d30a9b ("batman-adv: add broadcast duplicate check")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backported: adjust context, correct fixes line ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9063487408110357e2afd6574e3b8109a7adcc1
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Sat Nov 20 13:39:54 2021 +0100

    batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN
    
    commit 3236d215ad38a3f5372e65cd1e0a52cf93d3c6a2 upstream.
    
    Scenario:
    * Multicast frame send from a BLA backbone (multiple nodes with
      their bat0 bridged together, with BLA enabled)
    
    Issue:
    * BLA backbone nodes receive the frame multiple times on bat0
    
    For multicast frames received via batman-adv broadcast packets the
    originator of the broadcast packet is checked before decapsulating and
    forwarding the frame to bat0 (batadv_bla_is_backbone_gw()->
    batadv_recv_bcast_packet()). If it came from a node which shares the
    same BLA backbone with us then it is not forwarded to bat0 to avoid a
    loop.
    
    When sending a multicast frame in a non-4-address batman-adv unicast
    packet we are currently missing this check - and cannot do so because
    the batman-adv unicast packet has no originator address field.
    
    However, we can simply fix this on the sender side by only sending the
    multicast frame via unicasts to interested nodes which do not share the
    same BLA backbone with us. This also nicely avoids some unnecessary
    transmissions on mesh side.
    
    Note that no infinite loop was observed, probably because of dropping
    via batadv_interface_tx()->batadv_bla_tx(). However the duplicates still
    utterly confuse switches/bridges, ICMPv6 duplicate address detection and
    neighbor discovery and therefore leads to long delays before being able
    to establish TCP connections, for instance. And it also leads to the Linux
    bridge printing messages like:
    "br-lan: received packet on eth1 with own address as source address ..."
    
    Fixes: fe2da6ff27c7 ("batman-adv: Modified forwarding behaviour for multicast packets")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backport: drop usage in non-existing batadv_mcast_forw_*. ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c36d7d5c87847a67fdb035f5021b7a714c03b72f
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Sat Nov 20 13:39:53 2021 +0100

    batman-adv: Fix own OGM check in aggregated OGMs
    
    commit d8bf0c01642275c7dca1e5d02c34e4199c200b1f upstream.
    
    The own OGM check is currently misplaced and can lead to the following
    issues:
    
    For one thing we might receive an aggregated OGM from a neighbor node
    which has our own OGM in the first place. We would then not only skip
    our own OGM but erroneously also any other, following OGM in the
    aggregate.
    
    For another, we might receive an OGM aggregate which has our own OGM in
    a place other then the first one. Then we would wrongly not skip this
    OGM, leading to populating the orginator and gateway table with ourself.
    
    Fixes: 9323158ef9f4 ("batman-adv: OGMv2 - implement originators logic")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backported: adjust context, correct fixes line ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bfeeb157006b8ccc5a099cc9df1258baeb5638e
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 20 13:39:52 2021 +0100

    batman-adv: Keep fragments equally sized
    
    commit 1c2bcc766be44467809f1798cd4ceacafe20a852 upstream.
    
    The batman-adv fragmentation packets have the design problem that they
    cannot be refragmented and cannot handle padding by the underlying link.
    The latter often leads to problems when networks are incorrectly configured
    and don't use a common MTU.
    
    The sender could for example fragment a 1271 byte frame (plus external
    ethernet header (14) and batadv unicast header (10)) to fit in a 1280 bytes
    large MTU of the underlying link (max. 1294 byte frames). This would create
    a 1294 bytes large frame (fragment 2) and a 55 bytes large frame
    (fragment 1). The extra 54 bytes are the fragment header (20) added to each
    fragment and the external ethernet header (14) for the second fragment.
    
    Let us assume that the next hop is then not able to transport 1294 bytes to
    its next hop. The 1294 byte large frame will be dropped but the 55 bytes
    large fragment will still be forwarded to its destination.
    
    Or let us assume that the underlying hardware requires that each frame has
    a minimum size (e.g. 60 bytes). Then it will pad the 55 bytes frame to 60
    bytes. The receiver of the 60 bytes frame will no longer be able to
    correctly assemble the two frames together because it is not aware that 5
    bytes of the 60 bytes frame are padding and don't belong to the reassembled
    frame.
    
    This can partly be avoided by splitting frames more equally. In this
    example, the 675 and 674 bytes large fragment frames could both potentially
    reach its destination without being too large or too small.
    
    Reported-by: Martin Weinelt <martin@darmstadt.freifunk.net>
    Fixes: ee75ed88879a ("batman-adv: Fragment and send skbs larger than mtu")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [ bp: 4.9 backported: adjust context. ]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78ef13e32386374882fe6b66eda8153a0719057b
Author: hongao <hongao@uniontech.com>
Date:   Thu Nov 11 11:32:07 2021 +0800

    drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
    
    commit bf552083916a7f8800477b5986940d1c9a31b953 upstream.
    
    amdgpu_connector_vga_get_modes missed function amdgpu_get_native_mode
    which assign amdgpu_encoder->native_mode with *preferred_mode result in
    amdgpu_encoder->native_mode.clock always be 0. That will cause
    amdgpu_connector_set_property returned early on:
    if ((rmx_type != DRM_MODE_SCALE_NONE) &&
            (amdgpu_encoder->native_mode.clock == 0))
    when we try to set scaling mode Full/Full aspect/Center.
    Add the missing function to amdgpu_connector_vga_get_mode can fix this.
    It also works on dvi connectors because
    amdgpu_connector_dvi_helper_funcs.get_mode use the same method.
    
    Signed-off-by: hongao <hongao@uniontech.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d79ef042e0c5350c5e7843fc86bcc80b2e84e95f
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:53:53 2021 +0200

    drm/udl: fix control-message timeout
    
    commit 5591c8f79db1729d9c5ac7f5b4d3a5c26e262d93 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 5320918b9a87 ("drm/udl: initial UDL driver (v4)")
    Cc: stable@vger.kernel.org      # 3.4
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211025115353.5089-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0738cdb636c21ab552eaecf905efa4a6070e3ebc
Author: Nguyen Dinh Phi <phind.uet@gmail.com>
Date:   Thu Oct 28 01:37:22 2021 +0800

    cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
    
    commit 563fbefed46ae4c1f70cffb8eb54c02df480b2c2 upstream.
    
    If the userspace tools switch from NL80211_IFTYPE_P2P_GO to
    NL80211_IFTYPE_ADHOC via send_msg(NL80211_CMD_SET_INTERFACE), it
    does not call the cleanup cfg80211_stop_ap(), this leads to the
    initialization of in-use data. For example, this path re-init the
    sdata->assigned_chanctx_list while it is still an element of
    assigned_vifs list, and makes that linked list corrupt.
    
    Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
    Reported-by: syzbot+bbf402b783eeb6d908db@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20211027173722.777287-1-phind.uet@gmail.com
    Cc: stable@vger.kernel.org
    Fixes: ac800140c20e ("cfg80211: .stop_ap when interface is going down")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92842fc90ca23f3fd3882fdcf0992fae51d71131
Author: Sven Schnelle <svens@stackframe.org>
Date:   Sun Nov 14 17:08:17 2021 +0100

    parisc/sticon: fix reverse colors
    
    commit bec05f33ebc1006899c6d3e59a00c58881fe7626 upstream.
    
    sticon_build_attr() checked the reverse argument and flipped
    background and foreground color, but returned the non-reverse
    value afterwards. Fix this and also add two local variables
    for foreground and background color to make the code easier
    to read.
    
    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 637d652d351fd4f263ef302dc52f3971d314e500
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Tue Nov 2 14:49:16 2021 +0200

    btrfs: fix memory ordering between normal and ordered work functions
    
    commit 45da9c1767ac31857df572f0a909fbe88fd5a7e9 upstream.
    
    Ordered work functions aren't guaranteed to be handled by the same thread
    which executed the normal work functions. The only way execution between
    normal/ordered functions is synchronized is via the WORK_DONE_BIT,
    unfortunately the used bitops don't guarantee any ordering whatsoever.
    
    This manifested as seemingly inexplicable crashes on ARM64, where
    async_chunk::inode is seen as non-null in async_cow_submit which causes
    submit_compressed_extents to be called and crash occurs because
    async_chunk::inode suddenly became NULL. The call trace was similar to:
    
        pc : submit_compressed_extents+0x38/0x3d0
        lr : async_cow_submit+0x50/0xd0
        sp : ffff800015d4bc20
    
        <registers omitted for brevity>
    
        Call trace:
         submit_compressed_extents+0x38/0x3d0
         async_cow_submit+0x50/0xd0
         run_ordered_work+0xc8/0x280
         btrfs_work_helper+0x98/0x250
         process_one_work+0x1f0/0x4ac
         worker_thread+0x188/0x504
         kthread+0x110/0x114
         ret_from_fork+0x10/0x18
    
    Fix this by adding respective barrier calls which ensure that all
    accesses preceding setting of WORK_DONE_BIT are strictly ordered before
    setting the flag. At the same time add a read barrier after reading of
    WORK_DONE_BIT in run_ordered_work which ensures all subsequent loads
    would be strictly ordered after reading the bit. This in turn ensures
    are all accesses before WORK_DONE_BIT are going to be strictly ordered
    before any access that can occur in ordered_func.
    
    Reported-by: Chris Murphy <lists@colorremedies.com>
    Fixes: 08a9ff326418 ("btrfs: Added btrfs_workqueue_struct implemented ordered execution based on kernel workqueue")
    CC: stable@vger.kernel.org # 4.4+
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2011928
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Tested-by: Chris Murphy <chris@colorremedies.com>
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bf727ad61f85863e570c8283e1946f09ca62632
Author: Rustam Kovhaev <rkovhaev@gmail.com>
Date:   Fri Nov 19 16:43:37 2021 -0800

    mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
    
    commit 34dbc3aaf5d9e89ba6cc5e24add9458c21ab1950 upstream.
    
    When kmemleak is enabled for SLOB, system does not boot and does not
    print anything to the console.  At the very early stage in the boot
    process we hit infinite recursion from kmemleak_init() and eventually
    kernel crashes.
    
    kmemleak_init() specifies SLAB_NOLEAKTRACE for KMEM_CACHE(), but
    kmem_cache_create_usercopy() removes it because CACHE_CREATE_MASK is not
    valid for SLOB.
    
    Let's fix CACHE_CREATE_MASK and make kmemleak work with SLOB
    
    Link: https://lkml.kernel.org/r/20211115020850.3154366-1-rkovhaev@gmail.com
    Fixes: d8843922fba4 ("slab: Ignore internal flags in cache creation")
    Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Glauber Costa <glommer@parallels.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a423fb8d1e674cd9b0503971a31dbdcb8e7d23a
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Fri Nov 19 16:43:28 2021 -0800

    hexagon: export raw I/O routines for modules
    
    commit ffb92ce826fd801acb0f4e15b75e4ddf0d189bde upstream.
    
    Patch series "Fixes for ARCH=hexagon allmodconfig", v2.
    
    This series fixes some issues noticed with ARCH=hexagon allmodconfig.
    
    This patch (of 3):
    
    When building ARCH=hexagon allmodconfig, the following errors occur:
    
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/svc-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_writesl" [drivers/i3c/master/dw-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/dw-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_writesl" [drivers/i3c/master/i3c-master-cdns.ko] undefined!
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/i3c-master-cdns.ko] undefined!
    
    Export these symbols so that modules can use them without any errors.
    
    Link: https://lkml.kernel.org/r/20211115174250.1994179-1-nathan@kernel.org
    Link: https://lkml.kernel.org/r/20211115174250.1994179-2-nathan@kernel.org
    Fixes: 013bf24c3829 ("Hexagon: Provide basic implementation and/or stubs for I/O routines.")
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Brian Cain <bcain@codeaurora.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d81d5508c5b3502c91af195ed072048763c00b27
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Nov 12 08:56:03 2021 +0100

    tun: fix bonding active backup with arp monitoring
    
    commit a31d27fbed5d518734cb60956303eb15089a7634 upstream.
    
    As stated in the bonding doc, trans_start must be set manually for drivers
    using NETIF_F_LLTX:
     Drivers that use NETIF_F_LLTX flag must also update
     netdev_queue->trans_start. If they do not, then the ARP monitor will
     immediately fail any slaves using that driver, and those slaves will stay
     down.
    
    Link: https://www.kernel.org/doc/html/v5.15/networking/bonding.html#arp-monitor-operation
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fd8c48f0fe0183091cb4138ce28dda9e8a91fab
Author: Alexander Antonov <alexander.antonov@linux.intel.com>
Date:   Mon Nov 15 12:03:33 2021 +0300

    perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server
    
    [ Upstream commit 3866ae319c846a612109c008f43cba80b8c15e86 ]
    
    According to the latest uncore document, COMP_BUF_OCCUPANCY (0xd5) event
    can be collected on 2-3 counters. Update uncore IIO event constraints for
    Skylake Server.
    
    Fixes: cd34cd97b7b4 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115090334.3789-3-alexander.antonov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 770ca9cc8e9fa9da130732c7de21b72809a6af5d
Author: Alexander Antonov <alexander.antonov@linux.intel.com>
Date:   Mon Nov 15 12:03:32 2021 +0300

    perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server
    
    [ Upstream commit e324234e0aa881b7841c7c713306403e12b069ff ]
    
    According Uncore Reference Manual: any of the CHA events may be filtered
    by Thread/Core-ID by using tid modifier in CHA Filter 0 Register.
    Update skx_cha_hw_config() to follow Uncore Guide.
    
    Fixes: cd34cd97b7b4 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115090334.3789-2-alexander.antonov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff169909eac9e00bf1aa0af739ba6ddfb1b1d135
Author: Lin Ma <linma@zju.edu.cn>
Date:   Tue Nov 16 23:26:52 2021 +0800

    NFC: reorder the logic in nfc_{un,}register_device
    
    [ Upstream commit 3e3b5dfcd16a3e254aab61bd1e8c417dd4503102 ]
    
    There is a potential UAF between the unregistration routine and the NFC
    netlink operations.
    
    The race that cause that UAF can be shown as below:
    
     (FREE)                      |  (USE)
    nfcmrvl_nci_unregister_dev   |  nfc_genl_dev_up
      nci_close_device           |
      nci_unregister_device      |    nfc_get_device
        nfc_unregister_device    |    nfc_dev_up
          rfkill_destory         |
          device_del             |      rfkill_blocked
      ...                        |    ...
    
    The root cause for this race is concluded below:
    1. The rfkill_blocked (USE) in nfc_dev_up is supposed to be placed after
    the device_is_registered check.
    2. Since the netlink operations are possible just after the device_add
    in nfc_register_device, the nfc_dev_up() can happen anywhere during the
    rfkill creation process, which leads to data race.
    
    This patch reorder these actions to permit
    1. Once device_del is finished, the nfc_dev_up cannot dereference the
    rfkill object.
    2. The rfkill_register need to be placed after the device_add of nfc_dev
    because the parent device need to be created first. So this patch keeps
    the order but inject device_lock to prevent the data race.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: be055b2f89b5 ("NFC: RFKILL support")
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211116152652.19217-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a59a3681158a182557c75bacd00d184f9b2a8f5
Author: Lin Ma <linma@zju.edu.cn>
Date:   Mon Nov 15 22:56:00 2021 +0800

    NFC: reorganize the functions in nci_request
    
    [ Upstream commit 86cdf8e38792545161dbe3350a7eced558ba4d15 ]
    
    There is a possible data race as shown below:
    
    thread-A in nci_request()       | thread-B in nci_close_device()
                                    | mutex_lock(&ndev->req_lock);
    test_bit(NCI_UP, &ndev->flags); |
    ...                             | test_and_clear_bit(NCI_UP, &ndev->flags)
    mutex_lock(&ndev->req_lock);    |
                                    |
    
    This race will allow __nci_request() to be awaked while the device is
    getting removed.
    
    Similar to commit e2cb6b891ad2 ("bluetooth: eliminate the potential race
    condition when removing the HCI controller"). this patch alters the
    function sequence in nci_request() to prevent the data races between the
    nci_close_device().
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
    Link: https://lore.kernel.org/r/20211115145600.8320-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18a18172c829b5ca044691998ed21bcafe3773a5
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Nov 7 20:57:07 2021 +0100

    platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
    
    [ Upstream commit c961a7d2aa23ae19e0099fbcdf1040fb760eea83 ]
    
    If 'led_classdev_register()' fails, some additional resources should be
    released.
    
    Add the missing 'i8042_remove_filter()' and 'lis3lv02d_remove_fs()' calls
    that are already in the remove function but are missing here.
    
    Fixes: a4c724d0723b ("platform: hp_accel: add a i8042 filter to remove HPQ6000 data from kb bus stream")
    Fixes: 9e0c79782143 ("lis3lv02d: merge with leds hp disk")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/5a4f218f8f16d2e3a7906b7ca3654ffa946895f8.1636314074.git.christophe.jaillet@wanadoo.fr
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28f874a107344f76ee6663c9f463f992626d99f6
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Nov 14 16:42:18 2021 -0800

    mips: bcm63xx: add support for clk_get_parent()
    
    [ Upstream commit e8f67482e5a4bc8d0b65d606d08cb60ee123b468 ]
    
    BCM63XX selects HAVE_LEGACY_CLK but does not provide/support
    clk_get_parent(), so add a simple implementation of that
    function so that callers of it will build without errors.
    
    Fixes these build errors:
    
    mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4770_adc_init_clk_div':
    ingenic-adc.c:(.text+0xe4): undefined reference to `clk_get_parent'
    mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4725b_adc_init_clk_div':
    ingenic-adc.c:(.text+0x1b8): undefined reference to `clk_get_parent'
    
    Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs." )
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Cc: Artur Rojek <contact@artur-rojek.eu>
    Cc: Paul Cercueil <paul@crapouillou.net>
    Cc: linux-mips@vger.kernel.org
    Cc: Jonathan Cameron <jic23@kernel.org>
    Cc: Lars-Peter Clausen <lars@metafoo.de>
    Cc: linux-iio@vger.kernel.org
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Jonas Gorski <jonas.gorski@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a9ecf33e9cc76ea51cc88b1e3ab550e3b893142
Author: Surabhi Boob <surabhi.boob@intel.com>
Date:   Fri Jun 4 09:48:59 2021 -0700

    iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset
    
    [ Upstream commit 321421b57a12e933f92b228e0e6d0b2c6541f41d ]
    
    While issuing VF Reset from the guest OS, the VF driver prints
    logs about critical / Overflow error detection. This is not an
    actual error since the VF_MBX_ARQLEN register is set to all FF's
    for a short period of time and the VF would catch the bits set if
    it was reading the register during that spike of time.
    This patch introduces an additional check to ignore this condition
    since the VF is in reset.
    
    Fixes: 19b73d8efaa4 ("i40evf: Add additional check for reset")
    Signed-off-by: Surabhi Boob <surabhi.boob@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21c6e6e40d1534a1a78092ded4a7a802b70d60a5
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Nov 14 01:36:36 2021 +0300

    net: bnx2x: fix variable dereferenced before check
    
    [ Upstream commit f8885ac89ce310570e5391fe0bf0ec9c7c9b4fdc ]
    
    Smatch says:
            bnx2x_init_ops.h:640 bnx2x_ilt_client_mem_op()
            warn: variable dereferenced before check 'ilt' (see line 638)
    
    Move ilt_cli variable initialization _after_ ilt validation, because
    it's unsafe to deref the pointer before validation check.
    
    Fixes: 523224a3b3cd ("bnx2x, cnic, bnx2i: use new FW/HSI")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 997443875a7223dc2b55e2e81b69985670b4d078
Author: Vincent Donnefort <vincent.donnefort@arm.com>
Date:   Thu Nov 4 17:51:20 2021 +0000

    sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
    
    [ Upstream commit 42dc938a590c96eeb429e1830123fef2366d9c80 ]
    
    Nothing protects the access to the per_cpu variable sd_llc_id. When testing
    the same CPU (i.e. this_cpu == that_cpu), a race condition exists with
    update_top_cache_domain(). One scenario being:
    
                  CPU1                            CPU2
      ==================================================================
    
      per_cpu(sd_llc_id, CPUX) => 0
                                        partition_sched_domains_locked()
                                          detach_destroy_domains()
      cpus_share_cache(CPUX, CPUX)          update_top_cache_domain(CPUX)
        per_cpu(sd_llc_id, CPUX) => 0
                                              per_cpu(sd_llc_id, CPUX) = CPUX
        per_cpu(sd_llc_id, CPUX) => CPUX
        return false
    
    ttwu_queue_cond() wouldn't catch smp_processor_id() == cpu and the result
    is a warning triggered from ttwu_queue_wakelist().
    
    Avoid a such race in cpus_share_cache() by always returning true when
    this_cpu == that_cpu.
    
    Fixes: 518cd6234178 ("sched: Only queue remote wakeups when crossing cache boundaries")
    Reported-by: Jing-Ting Wu <jing-ting.wu@mediatek.com>
    Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lore.kernel.org/r/20211104175120.857087-1-vincent.donnefort@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f3a44e0d49fc770a9cc714fc4afa6febb565a9a
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sat Nov 6 08:49:11 2021 -0700

    mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
    
    [ Upstream commit 5eeaafc8d69373c095e461bdb39e5c9b62228ac5 ]
    
    Several header files need info on CONFIG_32BIT or CONFIG_64BIT,
    but kconfig symbol BCM63XX does not provide that info. This leads
    to many build errors, e.g.:
    
       arch/mips/include/asm/page.h:196:13: error: use of undeclared identifier 'CAC_BASE'
               return x - PAGE_OFFSET + PHYS_OFFSET;
       arch/mips/include/asm/mach-generic/spaces.h:91:23: note: expanded from macro 'PAGE_OFFSET'
       #define PAGE_OFFSET             (CAC_BASE + PHYS_OFFSET)
       arch/mips/include/asm/io.h:134:28: error: use of undeclared identifier 'CAC_BASE'
               return (void *)(address + PAGE_OFFSET - PHYS_OFFSET);
       arch/mips/include/asm/mach-generic/spaces.h:91:23: note: expanded from macro 'PAGE_OFFSET'
       #define PAGE_OFFSET             (CAC_BASE + PHYS_OFFSET)
    
    arch/mips/include/asm/uaccess.h:82:10: error: use of undeclared identifier '__UA_LIMIT'
               return (__UA_LIMIT & (addr | (addr + size) | __ua_size(size))) == 0;
    
    Selecting the SYS_HAS_CPU_BMIPS* symbols causes SYS_HAS_CPU_BMIPS to be
    set, which then selects CPU_SUPPORT_32BIT_KERNEL, which causes
    CONFIG_32BIT to be set. (a bit more indirect than v1 [RFC].)
    
    Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: linux-mips@vger.kernel.org
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Maxime Bizon <mbizon@freebox.fr>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Suggested-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b511867e135199b5a9211279ce939b6db82ddcfe
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Oct 4 17:19:13 2021 -0700

    sh: define __BIG_ENDIAN for math-emu
    
    [ Upstream commit b929926f01f2d14635345d22eafcf60feed1085e ]
    
    Fix this by defining both ENDIAN macros in
    <asm/sfp-machine.h> so that they can be utilized in
    <math-emu/soft-fp.h> according to the latter's comment:
    /* Allow sfp-machine to have its own byte order definitions. */
    
    (This is what is done in arch/nds32/include/asm/sfp-machine.h.)
    
    This placates these build warnings:
    
    In file included from ../arch/sh/math-emu/math.c:23:
    .../include/math-emu/single.h:50:21: warning: "__BIG_ENDIAN" is not defined, evaluates to 0 [-Wundef]
       50 | #if __BYTE_ORDER == __BIG_ENDIAN
    In file included from ../arch/sh/math-emu/math.c:24:
    .../include/math-emu/double.h:59:21: warning: "__BIG_ENDIAN" is not defined, evaluates to 0 [-Wundef]
       59 | #if __BYTE_ORDER == __BIG_ENDIAN
    
    Fixes: 4b565680d163 ("sh: math-emu support")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3300eb8afe5b9f8838bbd93e8deca48e62c48921
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Oct 4 17:19:10 2021 -0700

    sh: fix kconfig unmet dependency warning for FRAME_POINTER
    
    [ Upstream commit fda1bc533094a7db68b11e7503d2c6c73993d12a ]
    
    FRAME_POINTER depends on DEBUG_KERNEL so DWARF_UNWINDER should
    depend on DEBUG_KERNEL before selecting FRAME_POINTER.
    
    WARNING: unmet direct dependencies detected for FRAME_POINTER
      Depends on [n]: DEBUG_KERNEL [=n] && (M68K || UML || SUPERH [=y]) || ARCH_WANT_FRAME_POINTERS [=n]
      Selected by [y]:
      - DWARF_UNWINDER [=y]
    
    Fixes: bd353861c735 ("sh: dwarf unwinder support.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Matt Fleming <matt@console-pimps.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 911b48b18d8b61c7888328a6930fb112ed7a5d9e
Author: Lu Wei <luwei32@huawei.com>
Date:   Thu Nov 26 10:43:11 2020 +0800

    maple: fix wrong return value of maple_bus_init().
    
    [ Upstream commit bde82ee391fa6d3ad054313c4aa7b726d32515ce ]
    
    If KMEM_CACHE or maple_alloc_dev failed, the maple_bus_init() will return 0
    rather than error, because the retval is not changed after KMEM_CACHE or
    maple_alloc_dev failed.
    
    Fixes: 17be2d2b1c33 ("sh: Add maple bus support for the SEGA Dreamcast.")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Lu Wei <luwei32@huawei.com>
    Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 480e46b8bd603e927e1ec1f498e5274f2482d4a2
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Tue Dec 22 12:54:01 2020 -0800

    sh: check return code of request_irq
    
    [ Upstream commit 0e38225c92c7964482a8bb6b3e37fde4319e965c ]
    
    request_irq is marked __must_check, but the call in shx3_prepare_cpus
    has a void return type, so it can't propagate failure to the caller.
    Follow cues from hexagon and just print an error.
    
    Fixes: c7936b9abcf5 ("sh: smp: Hook in to the generic IPI handler for SH-X3 SMP.")
    Cc: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7b0a539943ec2ace39ed311aae68e5b23684387
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Oct 14 13:44:24 2021 +1100

    powerpc/dcr: Use cmplwi instead of 3-argument cmpli
    
    [ Upstream commit fef071be57dc43679a32d5b0e6ee176d6f12e9f2 ]
    
    In dcr-low.S we use cmpli with three arguments, instead of four
    arguments as defined in the ISA:
    
            cmpli   cr0,r3,1024
    
    This appears to be a PPC440-ism, looking at the "PPC440x5 CPU Core
    User’s Manual" it shows cmpli having no L field, but implied to be 0 due
    to the core being 32-bit. It mentions that the ISA defines four
    arguments and recommends using cmplwi.
    
    It also corresponds to the old POWER instruction set, which had no L
    field there, a reserved bit instead.
    
    dcr-low.S is only built 32-bit, because it is only built when
    DCR_NATIVE=y, which is only selected by 40x and 44x. Looking at the
    generated code (with gcc/gas) we see cmplwi as expected.
    
    Although gas is happy with the 3-argument version when building for
    32-bit, the LLVM assembler is not and errors out with:
    
      arch/powerpc/sysdev/dcr-low.S:27:10: error: invalid operand for instruction
       cmpli 0,%r3,1024; ...
               ^
    
    Switch to the cmplwi extended opcode, which avoids any confusion when
    reading the ISA, fixes the issue with the LLVM assembler, and also means
    the code could be built 64-bit in future (though that's very unlikely).
    
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    BugLink: https://github.com/ClangBuiltLinux/linux/issues/1419
    Link: https://lore.kernel.org/r/20211014024424.528848-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb09c760c201f82df83babc92a5ffea0a01807fc
Author: Chengfeng Ye <cyeaa@connect.ust.hk>
Date:   Sun Oct 24 03:46:11 2021 -0700

    ALSA: gus: fix null pointer dereference on pointer block
    
    [ Upstream commit a0d21bb3279476c777434c40d969ea88ca64f9aa ]
    
    The pointer block return from snd_gf1_dma_next_block could be
    null, so there is a potential null pointer dereference issue.
    Fix this by adding a null check before dereference.
    
    Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
    Link: https://lore.kernel.org/r/20211024104611.9919-1-cyeaa@connect.ust.hk
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01fbe09cb3b437d06486e6c224695038ca3ba55b
Author: Anatolij Gustschin <agust@denx.de>
Date:   Thu Oct 14 00:05:31 2021 +0200

    powerpc/5200: dts: fix memory node unit name
    
    [ Upstream commit aed2886a5e9ffc8269a4220bff1e9e030d3d2eb1 ]
    
    Fixes build warnings:
    Warning (unit_address_vs_reg): /memory: node has a reg or ranges property, but no unit name
    
    Signed-off-by: Anatolij Gustschin <agust@denx.de>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211013220532.24759-4-agust@denx.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5816c036d194743e38d77d901bfa305e521e0f3d
Author: Mike Christie <michael.christie@oracle.com>
Date:   Wed Sep 29 21:04:20 2021 -0500

    scsi: target: Fix alua_tg_pt_gps_count tracking
    
    [ Upstream commit 1283c0d1a32bb924324481586b5d6e8e76f676ba ]
    
    We can't free the tg_pt_gp in core_alua_set_tg_pt_gp_id() because it's
    still accessed via configfs. Its release must go through the normal
    configfs/refcount process.
    
    The max alua_tg_pt_gps_count check should probably have been done in
    core_alua_allocate_tg_pt_gp(), but with the current code userspace could
    have created 0x0000ffff + 1 groups, but only set the id for 0x0000ffff.
    Then it could have deleted a group with an ID set, and then set the ID for
    that extra group and it would work ok.
    
    It's unlikely, but just in case this patch continues to allow that type of
    behavior, and just fixes the kfree() while in use bug.
    
    Link: https://lore.kernel.org/r/20210930020422.92578-4-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57fd3d837d1b186315216472139964fb95e256f4
Author: Mike Christie <michael.christie@oracle.com>
Date:   Wed Sep 29 21:04:19 2021 -0500

    scsi: target: Fix ordered tag handling
    
    [ Upstream commit ed1227e080990ffec5bf39006ec8a57358e6689a ]
    
    This patch fixes the following bugs:
    
    1. If there are multiple ordered cmds queued and multiple simple cmds
       completing, target_restart_delayed_cmds() could be called on different
       CPUs and each instance could start a ordered cmd. They could then run in
       different orders than they were queued.
    
    2. target_restart_delayed_cmds() and target_handle_task_attr() can race
       where:
    
       1. target_handle_task_attr() has passed the simple_cmds == 0 check.
    
       2. transport_complete_task_attr() then decrements simple_cmds to 0.
    
       3. transport_complete_task_attr() runs target_restart_delayed_cmds() and
          it does not see any cmds on the delayed_cmd_list.
    
       4. target_handle_task_attr() adds the cmd to the delayed_cmd_list.
    
       The cmd will then end up timing out.
    
    3. If we are sent > 1 ordered cmds and simple_cmds == 0, we can execute
       them out of order, because target_handle_task_attr() will hit that
       simple_cmds check first and return false for all ordered cmds sent.
    
    4. We run target_restart_delayed_cmds() after every cmd completion, so if
       there is more than 1 simple cmd running, we start executing ordered cmds
       after that first cmd instead of waiting for all of them to complete.
    
    5. Ordered cmds are not supposed to start until HEAD OF QUEUE and all older
       cmds have completed, and not just simple.
    
    6. It's not a bug but it doesn't make sense to take the delayed_cmd_lock
       for every cmd completion when ordered cmds are almost never used. Just
       replacing that lock with an atomic increases IOPs by up to 10% when
       completions are spread over multiple CPUs and there are multiple
       sessions/ mqs/thread accessing the same device.
    
    This patch moves the queued delayed handling to a per device work to
    serialze the cmd executions for each device and adds a new counter to track
    HEAD_OF_QUEUE and SIMPLE cmds. We can then check the new counter to
    determine when to run the work on the completion path.
    
    Link: https://lore.kernel.org/r/20210930020422.92578-3-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bcd25a94990259258299661095dca3f1afe72867
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Oct 12 15:23:12 2021 -0700

    MIPS: sni: Fix the build
    
    [ Upstream commit c91cf42f61dc77b289784ea7b15a8531defa41c0 ]
    
    This patch fixes the following gcc 10 build error:
    
    arch/mips/sni/time.c: In function ‘a20r_set_periodic’:
    arch/mips/sni/time.c:15:26: error: unsigned conversion from ‘int’ to ‘u8’ {aka ‘volatile unsigned char’} changes value from ‘576’ to ‘64’ [-Werror=overflow]
       15 | #define SNI_COUNTER0_DIV ((SNI_CLOCK_TICK_RATE / SNI_COUNTER2_DIV) / HZ)
          |                          ^
    arch/mips/sni/time.c:21:45: note: in expansion of macro ‘SNI_COUNTER0_DIV’
       21 |  *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV;
          |                                             ^~~~~~~~~~~~~~~~
    
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1ffc16ec05ae40d82b6e373322d62e9d6b54fbc
Author: Guanghui Feng <guanghuifeng@linux.alibaba.com>
Date:   Mon Oct 11 22:08:24 2021 +0800

    tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
    
    [ Upstream commit 3968ddcf05fb4b9409cd1859feb06a5b0550a1c1 ]
    
    When running ltp testcase(ltp/testcases/kernel/pty/pty04.c) with arm64, there is a soft lockup,
    which look like this one:
    
      Workqueue: events_unbound flush_to_ldisc
      Call trace:
       dump_backtrace+0x0/0x1ec
       show_stack+0x24/0x30
       dump_stack+0xd0/0x128
       panic+0x15c/0x374
       watchdog_timer_fn+0x2b8/0x304
       __run_hrtimer+0x88/0x2c0
       __hrtimer_run_queues+0xa4/0x120
       hrtimer_interrupt+0xfc/0x270
       arch_timer_handler_phys+0x40/0x50
       handle_percpu_devid_irq+0x94/0x220
       __handle_domain_irq+0x88/0xf0
       gic_handle_irq+0x84/0xfc
       el1_irq+0xc8/0x180
       slip_unesc+0x80/0x214 [slip]
       tty_ldisc_receive_buf+0x64/0x80
       tty_port_default_receive_buf+0x50/0x90
       flush_to_ldisc+0xbc/0x110
       process_one_work+0x1d4/0x4b0
       worker_thread+0x180/0x430
       kthread+0x11c/0x120
    
    In the testcase pty04, The first process call the write syscall to send
    data to the pty master. At the same time, the workqueue will do the
    flush_to_ldisc to pop data in a loop until there is no more data left.
    When the sender and workqueue running in different core, the sender sends
    data fastly in full time which will result in workqueue doing work in loop
    for a long time and occuring softlockup in flush_to_ldisc with kernel
    configured without preempt. So I add need_resched check and cond_resched
    in the flush_to_ldisc loop to avoid it.
    
    Signed-off-by: Guanghui Feng <guanghuifeng@linux.alibaba.com>
    Link: https://lore.kernel.org/r/1633961304-24759-1-git-send-email-guanghuifeng@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f18f97a1a787154a372c0738f1576f14b693d91
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 11 21:49:20 2021 +0800

    usb: host: ohci-tmio: check return value after calling platform_get_resource()
    
    [ Upstream commit 9eff2b2e59fda25051ab36cd1cb5014661df657b ]
    
    It will cause null-ptr-deref if platform_get_resource() returns NULL,
    we need check the return value.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211011134920.118477-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7086e37b89473bbf0175291b5c2305d3caa896b1
Author: Roger Quadros <rogerq@kernel.org>
Date:   Thu Oct 7 15:08:30 2021 +0300

    ARM: dts: omap: fix gpmc,mux-add-data type
    
    [ Upstream commit 51b9e22ffd3c4c56cbb7caae9750f70e55ffa603 ]
    
    gpmc,mux-add-data is not boolean.
    
    Fixes the below errors flagged by dtbs_check.
    
    "ethernet@4,0:gpmc,mux-add-data: True is not of type 'array'"
    
    Signed-off-by: Roger Quadros <rogerq@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad19f7046c24f95c674fbea21870479b2b9f5bab
Author: Guo Zhi <qtxuning1999@sjtu.edu.cn>
Date:   Wed Sep 29 20:25:37 2021 +0800

    scsi: advansys: Fix kernel pointer leak
    
    [ Upstream commit d4996c6eac4c81b8872043e9391563f67f13e406 ]
    
    Pointers should be printed with %p or %px rather than cast to 'unsigned
    long' and printed with %lx.
    
    Change %lx to %p to print the hashed pointer.
    
    Link: https://lore.kernel.org/r/20210929122538.1158235-1-qtxuning1999@sjtu.edu.cn
    Signed-off-by: Guo Zhi <qtxuning1999@sjtu.edu.cn>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3f43659eb0b9af2e6ef18a8d829374610b19e7a
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Wed Sep 15 11:49:25 2021 +0800

    usb: musb: tusb6010: check return value after calling platform_get_resource()
    
    [ Upstream commit 14651496a3de6807a17c310f63c894ea0c5d858e ]
    
    It will cause null-ptr-deref if platform_get_resource() returns NULL,
    we need check the return value.
    
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20210915034925.2399823-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec70d80a8642900086447ba0cdc79e3f44d42e8f
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Sep 10 16:31:46 2021 -0700

    scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
    
    [ Upstream commit 99154581b05c8fb22607afb7c3d66c1bace6aa5d ]
    
    When parsing the txq list in lpfc_drain_txq(), the driver attempts to pass
    the requests to the adapter. If such an attempt fails, a local "fail_msg"
    string is set and a log message output.  The job is then added to a
    completions list for cancellation.
    
    Processing of any further jobs from the txq list continues, but since
    "fail_msg" remains set, jobs are added to the completions list regardless
    of whether a wqe was passed to the adapter.  If successfully added to
    txcmplq, jobs are added to both lists resulting in list corruption.
    
    Fix by clearing the fail_msg string after adding a job to the completions
    list. This stops the subsequent jobs from being added to the completions
    list unless they had an appropriate failure.
    
    Link: https://lore.kernel.org/r/20210910233159.115896-2-jsmart2021@gmail.com
    Co-developed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14cf22e85fff7710a3bed0fc9487821202f733a1
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Nov 9 14:53:57 2021 +0100

    PCI/MSI: Destroy sysfs before freeing entries
    
    commit 3735459037114d31e5acd9894fad9aed104231a0 upstream.
    
    free_msi_irqs() frees the MSI entries before destroying the sysfs entries
    which are exposing them. Nothing prevents a concurrent free while a sysfs
    file is read and accesses the possibly freed entry.
    
    Move the sysfs release ahead of freeing the entries.
    
    Fixes: 1c51b50c2995 ("PCI/MSI: Export MSI mode using attributes, not kobjects")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Bjorn Helgaas <helgaas@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/87sfw5305m.ffs@tglx
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2149103e70d716c136648300951a7fa4b8bd8ed
Author: Sven Schnelle <svens@stackframe.org>
Date:   Sat Nov 13 20:41:17 2021 +0100

    parisc/entry: fix trace test in syscall exit path
    
    commit 3ec18fc7831e7d79e2d536dd1f3bc0d3ba425e8a upstream.
    
    commit 8779e05ba8aa ("parisc: Fix ptrace check on syscall return")
    fixed testing of TI_FLAGS. This uncovered a bug in the test mask.
    syscall_restore_rfi is only used when the kernel needs to exit to
    usespace with single or block stepping and the recovery counter
    enabled. The test however used _TIF_SYSCALL_TRACE_MASK, which
    includes a lot of bits that shouldn't be tested here.
    
    Fix this by using TIF_SINGLESTEP and TIF_BLOCKSTEP directly.
    
    I encountered this bug by enabling syscall tracepoints. Both in qemu and
    on real hardware. As soon as i enabled the tracepoint (sys_exit_read,
    but i guess it doesn't really matter which one), i got random page
    faults in userspace almost immediately.
    
    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ae4974c95795ad60791f9223b61a0c084fec7b2
Author: Corentin Labbe <clabbe.montjoie@gmail.com>
Date:   Fri Sep 1 13:56:04 2017 +0200

    net: mdio-mux: fix unbalanced put_device
    
    commit 60f786525032432af1b7d9b8935cb12936244ccd upstream.
    
    mdio_mux_uninit() call put_device (unconditionally) because of
    of_mdio_find_bus() in mdio_mux_init.
    But of_mdio_find_bus is only called if mux_bus is empty.
    If mux_bus is set, mdio_mux_uninit will print a "refcount_t: underflow"
    trace.
    
    This patch add a get_device in the other branch of "if (mux_bus)".
    
    Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a75be38913acf169cc01b4978b0e87f6342e85a
Author: Pali Rohár <pali@kernel.org>
Date:   Tue Oct 5 20:09:40 2021 +0200

    PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
    
    commit 460275f124fb072dca218a6b43b6370eebbab20d upstream.
    
    Define a macro PCI_EXP_DEVCTL_PAYLOAD_* for every possible Max Payload
    Size in linux/pci_regs.h, in the same style as PCI_EXP_DEVCTL_READRQ_*.
    
    Link: https://lore.kernel.org/r/20211005180952.6812-2-kabel@kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 973b61a5f3ba6690624d109a68cca35d0348b91f
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri Nov 5 13:38:06 2021 -0700

    mm, oom: do not trigger out_of_memory from the #PF
    
    commit 60e2793d440a3ec95abb5d6d4fc034a4b480472d upstream.
    
    Any allocation failure during the #PF path will return with VM_FAULT_OOM
    which in turn results in pagefault_out_of_memory.  This can happen for 2
    different reasons.  a) Memcg is out of memory and we rely on
    mem_cgroup_oom_synchronize to perform the memcg OOM handling or b)
    normal allocation fails.
    
    The latter is quite problematic because allocation paths already trigger
    out_of_memory and the page allocator tries really hard to not fail
    allocations.  Anyway, if the OOM killer has been already invoked there
    is no reason to invoke it again from the #PF path.  Especially when the
    OOM condition might be gone by that time and we have no way to find out
    other than allocate.
    
    Moreover if the allocation failed and the OOM killer hasn't been invoked
    then we are unlikely to do the right thing from the #PF context because
    we have already lost the allocation context and restictions and
    therefore might oom kill a task from a different NUMA domain.
    
    This all suggests that there is no legitimate reason to trigger
    out_of_memory from pagefault_out_of_memory so drop it.  Just to be sure
    that no #PF path returns with VM_FAULT_OOM without allocation print a
    warning that this is happening before we restart the #PF.
    
    [VvS: #PF allocation can hit into limit of cgroup v1 kmem controller.
    This is a local problem related to memcg, however, it causes unnecessary
    global OOM kills that are repeated over and over again and escalate into a
    real disaster.  This has been broken since kmem accounting has been
    introduced for cgroup v1 (3.8).  There was no kmem specific reclaim for
    the separate limit so the only way to handle kmem hard limit was to return
    with ENOMEM.  In upstream the problem will be fixed by removing the
    outdated kmem limit, however stable and LTS kernels cannot do it and are
    still affected.  This patch fixes the problem and should be backported
    into stable/LTS.]
    
    Link: https://lkml.kernel.org/r/f5fd8dd8-0ad4-c524-5f65-920b01972a42@virtuozzo.com
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    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 226b3c797c6246e14c713d048cdb3490a1f67701
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Fri Nov 5 13:38:02 2021 -0700

    mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks
    
    commit 0b28179a6138a5edd9d82ad2687c05b3773c387b upstream.
    
    Patch series "memcg: prohibit unconditional exceeding the limit of dying tasks", v3.
    
    Memory cgroup charging allows killed or exiting tasks to exceed the hard
    limit.  It can be misused and allowed to trigger global OOM from inside
    a memcg-limited container.  On the other hand if memcg fails allocation,
    called from inside #PF handler it triggers global OOM from inside
    pagefault_out_of_memory().
    
    To prevent these problems this patchset:
     (a) removes execution of out_of_memory() from
         pagefault_out_of_memory(), becasue nobody can explain why it is
         necessary.
     (b) allow memcg to fail allocation of dying/killed tasks.
    
    This patch (of 3):
    
    Any allocation failure during the #PF path will return with VM_FAULT_OOM
    which in turn results in pagefault_out_of_memory which in turn executes
    out_out_memory() and can kill a random task.
    
    An allocation might fail when the current task is the oom victim and
    there are no memory reserves left.  The OOM killer is already handled at
    the page allocator level for the global OOM and at the charging level
    for the memcg one.  Both have much more information about the scope of
    allocation/charge request.  This means that either the OOM killer has
    been invoked properly and didn't lead to the allocation success or it
    has been skipped because it couldn't have been invoked.  In both cases
    triggering it from here is pointless and even harmful.
    
    It makes much more sense to let the killed task die rather than to wake
    up an eternally hungry oom-killer and send him to choose a fatter victim
    for breakfast.
    
    Link: https://lkml.kernel.org/r/0828a149-786e-7c06-b70a-52d086818ea3@virtuozzo.com
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Suggested-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    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 f6ba0a9f99fb7b083386824251027b71597d9063
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Mon Nov 15 16:30:37 2021 +0530

    powerpc/bpf: Fix BPF_SUB when imm == 0x80000000
    
    upstream commit 5855c4c1f415ca3ba1046e77c0b3d3dfc96c9025
    
    We aren't handling subtraction involving an immediate value of
    0x80000000 properly. Fix the same.
    
    Fixes: 156d0e290e969c ("powerpc/ebpf/jit: Implement JIT compiler for extended BPF")
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Fold in fix from Naveen to use imm <= 32768]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/fc4b1276eb10761fd7ce0814c8dd089da2815251.1633464148.git.naveen.n.rao@linux.vnet.ibm.com
    [adjust macros to account for commits 0654186510a40e and 3a181237916310]
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a524c9478bae515299a5004e635034a3541c3f1
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Mon Nov 15 16:30:36 2021 +0530

    powerpc/bpf: Validate branch ranges
    
    upstream commit 3832ba4e283d7052b783dab8311df7e3590fed93
    
    Add checks to ensure that we never emit branch instructions with
    truncated branch offsets.
    
    Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Tested-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Acked-by: Song Liu <songliubraving@fb.com>
    Acked-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/71d33a6b7603ec1013c9734dd8bdd4ff5e929142.1633464148.git.naveen.n.rao@linux.vnet.ibm.com
    [expand is_offset_in_[cond_]branch_range() helpers, drop ppc32 changes]
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a72b2f6700e1727e98e182f4da70a06403791819
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sat Nov 6 19:42:29 2021 +0100

    ARM: 9156/1: drop cc-option fallbacks for architecture selection
    
    commit 418ace9992a7647c446ed3186df40cf165b67298 upstream.
    
    Naresh and Antonio ran into a build failure with latest Debian
    armhf compilers, with lots of output like
    
     tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
    
    As it turns out, $(cc-option) fails early here when the FPU is not
    selected before CPU architecture is selected, as the compiler
    option check runs before enabling -msoft-float, which causes
    a problem when testing a target architecture level without an FPU:
    
    cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
    
    Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
    issue, but the fallback logic is already broken because all supported
    compilers (gcc-5 and higher) are much more recent than these options,
    and building with -march=armv5t as a fallback no longer works.
    
    The best way forward that I see is to just remove all the checks, which
    also has the nice side-effect of slightly improving the startup time for
    'make'.
    
    The -mtune=marvell-f option was apparently never supported by any mainline
    compiler, and the custom Codesourcery gcc build that did support is
    now too old to build kernels, so just use -mtune=xscale unconditionally
    for those.
    
    This should be safe to apply on all stable kernels, and will be required
    in order to keep building them with gcc-11 and higher.
    
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
    
    Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
    Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
    Cc: Matthias Klose <doko@debian.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3b3184cbf7e95e7c54349f9fafb419c4a4c5fc4
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Oct 21 10:34:47 2021 +0200

    USB: chipidea: fix interrupt deadlock
    
    commit 9aaa81c3366e8393a62374e3a1c67c69edc07b8a upstream.
    
    Chipidea core was calling the interrupt handler from non-IRQ context
    with interrupts enabled, something which can lead to a deadlock if
    there's an actual interrupt trying to take a lock that's already held
    (e.g. the controller lock in udc_irq()).
    
    Add a wrapper that can be used to fake interrupts instead of calling the
    handler directly.
    
    Fixes: 3ecb3e09b042 ("usb: chipidea: Use extcon framework for VBUS and ID detect")
    Fixes: 876d4e1e8298 ("usb: chipidea: core: add wakeup support for extcon")
    Cc: Peter Chen <peter.chen@kernel.org>
    Cc: stable@vger.kernel.org      # 4.4
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211021083447.20078-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 472970a3b5a6483a46365fffc4f849222df7e53d
Author: Eiichi Tsukata <eiichi.tsukata@nutanix.com>
Date:   Tue Nov 9 00:15:02 2021 +0000

    vsock: prevent unnecessary refcnt inc for nonblocking connect
    
    [ Upstream commit c7cd82b90599fa10915f41e3dd9098a77d0aa7b6 ]
    
    Currently vosck_connect() increments sock refcount for nonblocking
    socket each time it's called, which can lead to memory leak if
    it's called multiple times because connect timeout function decrements
    sock refcount only once.
    
    Fixes it by making vsock_connect() return -EALREADY immediately when
    sock state is already SS_CONNECTING.
    
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Eiichi Tsukata <eiichi.tsukata@nutanix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a85c43a03d41a6cf5735ec406b5e1e245db2238
Author: Chengfeng Ye <cyeaa@connect.ust.hk>
Date:   Fri Nov 5 06:36:36 2021 -0700

    nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails
    
    [ Upstream commit 9fec40f850658e00a14a7dd9e06f7fbc7e59cc4a ]
    
    skb is already freed by dev_kfree_skb in pn533_fill_fragment_skbs,
    but follow error handler branch when pn533_fill_fragment_skbs()
    fails, skb is freed again, results in double free issue. Fix this
    by not free skb in error path of pn533_fill_fragment_skbs.
    
    Fixes: 963a82e07d4e ("NFC: pn533: Split large Tx frames in chunks")
    Fixes: 93ad42020c2d ("NFC: pn533: Target mode Tx fragmentation support")
    Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df69e763d1d8e032f0766fc65ad35e92d29ba7a5
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Nov 5 14:42:14 2021 -0700

    llc: fix out-of-bound array index in llc_sk_dev_hash()
    
    [ Upstream commit 8ac9dfd58b138f7e82098a4e0a0d46858b12215b ]
    
    Both ifindex and LLC_SK_DEV_HASH_ENTRIES are signed.
    
    This means that (ifindex % LLC_SK_DEV_HASH_ENTRIES) is negative
    if @ifindex is negative.
    
    We could simply make LLC_SK_DEV_HASH_ENTRIES unsigned.
    
    In this patch I chose to use hash_32() to get more entropy
    from @ifindex, like llc_sk_laddr_hashfn().
    
    UBSAN: array-index-out-of-bounds in ./include/net/llc.h:75:26
    index -43 is out of range for type 'hlist_head [64]'
    CPU: 1 PID: 20999 Comm: syz-executor.3 Not tainted 5.15.0-syzkaller #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
     ubsan_epilogue+0xb/0x5a lib/ubsan.c:151
     __ubsan_handle_out_of_bounds.cold+0x62/0x6c lib/ubsan.c:291
     llc_sk_dev_hash include/net/llc.h:75 [inline]
     llc_sap_add_socket+0x49c/0x520 net/llc/llc_conn.c:697
     llc_ui_bind+0x680/0xd70 net/llc/af_llc.c:404
     __sys_bind+0x1e9/0x250 net/socket.c:1693
     __do_sys_bind net/socket.c:1704 [inline]
     __se_sys_bind net/socket.c:1702 [inline]
     __x64_sys_bind+0x6f/0xb0 net/socket.c:1702
     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:0x7fa503407ae9
    
    Fixes: 6d2e3ea28446 ("llc: use a device based hash table to speed up multicast delivery")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdcd8b63eaf42a92cc06ae79a0f31b30214ae790
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Fri Nov 5 13:45:03 2021 -0700

    mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and zs_unregister_migration()
    
    [ Upstream commit afe8605ca45424629fdddfd85984b442c763dc47 ]
    
    There is one possible race window between zs_pool_dec_isolated() and
    zs_unregister_migration() because wait_for_isolated_drain() checks the
    isolated count without holding class->lock and there is no order inside
    zs_pool_dec_isolated().  Thus the below race window could be possible:
    
      zs_pool_dec_isolated          zs_unregister_migration
        check pool->destroying != 0
                                      pool->destroying = true;
                                      smp_mb();
                                      wait_for_isolated_drain()
                                        wait for pool->isolated_pages == 0
        atomic_long_dec(&pool->isolated_pages);
        atomic_long_read(&pool->isolated_pages) == 0
    
    Since we observe the pool->destroying (false) before atomic_long_dec()
    for pool->isolated_pages, waking pool->migration_wait up is missed.
    
    Fix this by ensure checking pool->destroying happens after the
    atomic_long_dec(&pool->isolated_pages).
    
    Link: https://lkml.kernel.org/r/20210708115027.7557-1-linmiaohe@huawei.com
    Fixes: 701d678599d0 ("mm/zsmalloc.c: fix race condition in zs_destroy_pool")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Henry Burns <henryburns@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2bcf8fd7159fef85551484e54402821787e7d50
Author: Huang Guobin <huangguobin4@huawei.com>
Date:   Tue Nov 2 17:37:33 2021 +0800

    bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed
    
    [ Upstream commit b93c6a911a3fe926b00add28f3b932007827c4ca ]
    
    When I do fuzz test for bonding device interface, I got the following
    use-after-free Calltrace:
    
    ==================================================================
    BUG: KASAN: use-after-free in bond_enslave+0x1521/0x24f0
    Read of size 8 at addr ffff88825bc11c00 by task ifenslave/7365
    
    CPU: 5 PID: 7365 Comm: ifenslave Tainted: G            E     5.15.0-rc1+ #13
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
    Call Trace:
     dump_stack_lvl+0x6c/0x8b
     print_address_description.constprop.0+0x48/0x70
     kasan_report.cold+0x82/0xdb
     __asan_load8+0x69/0x90
     bond_enslave+0x1521/0x24f0
     bond_do_ioctl+0x3e0/0x450
     dev_ifsioc+0x2ba/0x970
     dev_ioctl+0x112/0x710
     sock_do_ioctl+0x118/0x1b0
     sock_ioctl+0x2e0/0x490
     __x64_sys_ioctl+0x118/0x150
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f19159cf577
    Code: b3 66 90 48 8b 05 11 89 2c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 78
    RSP: 002b:00007ffeb3083c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007ffeb3084bca RCX: 00007f19159cf577
    RDX: 00007ffeb3083ce0 RSI: 0000000000008990 RDI: 0000000000000003
    RBP: 00007ffeb3084bc4 R08: 0000000000000040 R09: 0000000000000000
    R10: 00007ffeb3084bc0 R11: 0000000000000246 R12: 00007ffeb3083ce0
    R13: 0000000000000000 R14: 0000000000000000 R15: 00007ffeb3083cb0
    
    Allocated by task 7365:
     kasan_save_stack+0x23/0x50
     __kasan_kmalloc+0x83/0xa0
     kmem_cache_alloc_trace+0x22e/0x470
     bond_enslave+0x2e1/0x24f0
     bond_do_ioctl+0x3e0/0x450
     dev_ifsioc+0x2ba/0x970
     dev_ioctl+0x112/0x710
     sock_do_ioctl+0x118/0x1b0
     sock_ioctl+0x2e0/0x490
     __x64_sys_ioctl+0x118/0x150
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Freed by task 7365:
     kasan_save_stack+0x23/0x50
     kasan_set_track+0x20/0x30
     kasan_set_free_info+0x24/0x40
     __kasan_slab_free+0xf2/0x130
     kfree+0xd1/0x5c0
     slave_kobj_release+0x61/0x90
     kobject_put+0x102/0x180
     bond_sysfs_slave_add+0x7a/0xa0
     bond_enslave+0x11b6/0x24f0
     bond_do_ioctl+0x3e0/0x450
     dev_ifsioc+0x2ba/0x970
     dev_ioctl+0x112/0x710
     sock_do_ioctl+0x118/0x1b0
     sock_ioctl+0x2e0/0x490
     __x64_sys_ioctl+0x118/0x150
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Last potentially related work creation:
     kasan_save_stack+0x23/0x50
     kasan_record_aux_stack+0xb7/0xd0
     insert_work+0x43/0x190
     __queue_work+0x2e3/0x970
     delayed_work_timer_fn+0x3e/0x50
     call_timer_fn+0x148/0x470
     run_timer_softirq+0x8a8/0xc50
     __do_softirq+0x107/0x55f
    
    Second to last potentially related work creation:
     kasan_save_stack+0x23/0x50
     kasan_record_aux_stack+0xb7/0xd0
     insert_work+0x43/0x190
     __queue_work+0x2e3/0x970
     __queue_delayed_work+0x130/0x180
     queue_delayed_work_on+0xa7/0xb0
     bond_enslave+0xe25/0x24f0
     bond_do_ioctl+0x3e0/0x450
     dev_ifsioc+0x2ba/0x970
     dev_ioctl+0x112/0x710
     sock_do_ioctl+0x118/0x1b0
     sock_ioctl+0x2e0/0x490
     __x64_sys_ioctl+0x118/0x150
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The buggy address belongs to the object at ffff88825bc11c00
     which belongs to the cache kmalloc-1k of size 1024
    The buggy address is located 0 bytes inside of
     1024-byte region [ffff88825bc11c00, ffff88825bc12000)
    The buggy address belongs to the page:
    page:ffffea00096f0400 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x25bc10
    head:ffffea00096f0400 order:3 compound_mapcount:0 compound_pincount:0
    flags: 0x57ff00000010200(slab|head|node=1|zone=2|lastcpupid=0x7ff)
    raw: 057ff00000010200 ffffea0009a71c08 ffff888240001968 ffff88810004dbc0
    raw: 0000000000000000 00000000000a000a 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff88825bc11b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff88825bc11b80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff88825bc11c00: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                       ^
     ffff88825bc11c80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff88825bc11d00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    Put new_slave in bond_sysfs_slave_add() will cause use-after-free problems
    when new_slave is accessed in the subsequent error handling process. Since
    new_slave will be put in the subsequent error handling process, remove the
    unnecessary put to fix it.
    In addition, when sysfs_create_file() fails, if some files have been crea-
    ted successfully, we need to call sysfs_remove_file() to remove them.
    Since there are sysfs_create_files() & sysfs_remove_files() can be used,
    use these two functions instead.
    
    Fixes: 7afcaec49696 (bonding: use kobject_put instead of _del after kobject_add)
    Signed-off-by: Huang Guobin <huangguobin4@huawei.com>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8b8ac3bc00a2284b7c220c6ca972e9b8e996e27
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Oct 31 16:31:35 2021 +0100

    ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses
    
    [ Upstream commit 009a789443fe4c8e6b1ecb7c16b4865c026184cd ]
    
    The handling of PMIC register reads through writing 0 to address 4
    of the OpRegion is wrong. Instead of returning the read value
    through the value64, which is a no-op for function == ACPI_WRITE calls,
    store the value and then on a subsequent function == ACPI_READ with
    address == 3 (the address for the value field of the OpRegion)
    return the stored value.
    
    This has been tested on a Xiaomi Mi Pad 2 and makes the ACPI battery dev
    there mostly functional (unfortunately there are still other issues).
    
    Here are the SET() / GET() functions of the PMIC ACPI device,
    which use this OpRegion, which clearly show the new behavior to
    be correct:
    
    OperationRegion (REGS, 0x8F, Zero, 0x50)
    Field (REGS, ByteAcc, NoLock, Preserve)
    {
        CLNT,   8,
        SA,     8,
        OFF,    8,
        VAL,    8,
        RWM,    8
    }
    
    Method (GET, 3, Serialized)
    {
        If ((AVBE == One))
        {
            CLNT = Arg0
            SA = Arg1
            OFF = Arg2
            RWM = Zero
            If ((AVBG == One))
            {
                GPRW = Zero
            }
        }
    
        Return (VAL) /* \_SB_.PCI0.I2C7.PMI5.VAL_ */
    }
    
    Method (SET, 4, Serialized)
    {
        If ((AVBE == One))
        {
            CLNT = Arg0
            SA = Arg1
            OFF = Arg2
            VAL = Arg3
            RWM = One
            If ((AVBG == One))
            {
                GPRW = One
            }
        }
    }
    
    Fixes: 0afa877a5650 ("ACPI / PMIC: intel: add REGS operation region support")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d90a9fb2dbb6738349c375359dd7ffda3aaa375d
Author: Maxim Kiselev <bigunclemax@gmail.com>
Date:   Mon Nov 1 18:23:41 2021 +0300

    net: davinci_emac: Fix interrupt pacing disable
    
    [ Upstream commit d52bcb47bdf971a59a2467975d2405fcfcb2fa19 ]
    
    This patch allows to use 0 for `coal->rx_coalesce_usecs` param to
    disable rx irq coalescing.
    
    Previously we could enable rx irq coalescing via ethtool
    (For ex: `ethtool -C eth0 rx-usecs 2000`) but we couldn't disable
    it because this part rejects 0 value:
    
           if (!coal->rx_coalesce_usecs)
                   return -EINVAL;
    
    Fixes: 84da2658a619 ("TI DaVinci EMAC : Implement interrupt pacing functionality.")
    Signed-off-by: Maxim Kiselev <bigunclemax@gmail.com>
    Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Link: https://lore.kernel.org/r/20211101152343.4193233-1-bigunclemax@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 848b2123a7b51cb80d7bfb610c080de15d51c39a
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri Oct 8 15:44:17 2021 +0800

    xen-pciback: Fix return in pm_ctrl_init()
    
    [ Upstream commit 4745ea2628bb43a7ec34b71763b5a56407b33990 ]
    
    Return NULL instead of passing to ERR_PTR while err is zero,
    this fix smatch warnings:
    drivers/xen/xen-pciback/conf_space_capability.c:163
     pm_ctrl_init() warn: passing zero to 'ERR_PTR'
    
    Fixes: a92336a1176b ("xen/pciback: Drop two backends, squash and cleanup some code.")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20211008074417.8260-1-yuehaibing@huawei.com
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71755b1219b0f8e1d3f2f186d1df954af2f4ca97
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Aug 19 22:48:08 2021 +0200

    i2c: xlr: Fix a resource leak in the error handling path of 'xlr_i2c_probe()'
    
    [ Upstream commit 7f98960c046ee1136e7096aee168eda03aef8a5d ]
    
    A successful 'clk_prepare()' call should be balanced by a corresponding
    'clk_unprepare()' call in the error handling path of the probe, as already
    done in the remove function.
    
    More specifically, 'clk_prepare_enable()' is used, but 'clk_disable()' is
    also already called. So just the unprepare step has still to be done.
    
    Update the error handling path accordingly.
    
    Fixes: 75d31c2372e4 ("i2c: xlr: add support for Sigma Designs controller variant")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ac3a6340ce226901e7c9f7ae446df96c90ba505
Author: Quinn Tran <qutran@marvell.com>
Date:   Tue Oct 26 04:54:02 2021 -0700

    scsi: qla2xxx: Turn off target reset during issue_lip
    
    [ Upstream commit 0b7a9fd934a68ebfc1019811b7bdc1742072ad7b ]
    
    When user uses issue_lip to do link bounce, driver sends additional target
    reset to remote device before resetting the link. The target reset would
    affect other paths with active I/Os. This patch will remove the unnecessary
    target reset.
    
    Link: https://lore.kernel.org/r/20211026115412.27691-4-njavali@marvell.com
    Fixes: 5854771e314e ("[SCSI] qla2xxx: Add ISPFX00 specific bus reset routine")
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Quinn Tran <qutran@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce5020ff0516a3ec9f37dd8f58d3827b0bf73c4d
Author: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date:   Mon Aug 9 18:20:31 2021 +0200

    watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT
    
    [ Upstream commit 164483c735190775f29d0dcbac0363adc51a068d ]
    
    The fintek watchdog timer can configure timeouts of second granularity
    only up to 255 seconds. Beyond that, the timeout needs to be configured
    with minute granularity. WDIOC_GETTIMEOUT should report the actual
    timeout configured, not just echo back the timeout configured by the
    user. Do so.
    
    Fixes: 96cb4eb019ce ("watchdog: f71808e_wdt: new watchdog driver for Fintek F71808E and F71882FG")
    Suggested-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Link: https://lore.kernel.org/r/5e17960fe8cc0e3cb2ba53de4730b75d9a0f33d5.1628525954.git-series.a.fatoum@pengutronix.de
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f96f743a92e576f191c3e6ebd2029c4657ad7be1
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sat Oct 2 17:02:23 2021 -0700

    m68k: set a default value for MEMORY_RESERVE
    
    [ Upstream commit 1aaa557b2db95c9506ed0981bc34505c32d6b62b ]
    
    'make randconfig' can produce a .config file with
    "CONFIG_MEMORY_RESERVE=" (no value) since it has no default.
    When a subsequent 'make all' is done, kconfig restarts the config
    and prompts for a value for MEMORY_RESERVE. This breaks
    scripting/automation where there is no interactive user input.
    
    Add a default value for MEMORY_RESERVE. (Any integer value will
    work here for kconfig.)
    
    Fixes a kconfig warning:
    
    .config:214:warning: symbol value '' invalid for MEMORY_RESERVE
    * Restart config...
    Memory reservation (MiB) (MEMORY_RESERVE) [] (NEW)
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") # from beginning of git history
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Greg Ungerer <gerg@linux-m68k.org>
    Cc: linux-m68k@lists.linux-m68k.org
    Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a85ec130405ec723d0f8a9b07cab0ac5bc01242
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sat Oct 23 15:41:01 2021 +0200

    dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result`
    
    [ Upstream commit e7e1e880b114ca640a2f280b0d5d38aed98f98c6 ]
    
    Before the `callback_result` callback was introduced drivers coded their
    invocation to the callback in a similar way to:
    
            if (cb->callback) {
                    spin_unlock(&dma->lock);
                    cb->callback(cb->callback_param);
                    spin_lock(&dma->lock);
            }
    
    With the introduction of `callback_result` two helpers where introduced to
    transparently handle both types of callbacks. And drivers where updated to
    look like this:
    
            if (dmaengine_desc_callback_valid(cb)) {
                    spin_unlock(&dma->lock);
                    dmaengine_desc_callback_invoke(cb, ...);
                    spin_lock(&dma->lock);
            }
    
    dmaengine_desc_callback_invoke() correctly handles both `callback_result`
    and `callback`. But we forgot to update the dmaengine_desc_callback_valid()
    function to check for `callback_result`. As a result DMA descriptors that
    use the `callback_result` rather than `callback` don't have their callback
    invoked by drivers that follow the pattern above.
    
    Fix this by checking for both `callback` and `callback_result` in
    dmaengine_desc_callback_valid().
    
    Fixes: f067025bc676 ("dmaengine: add support to provide error result from a DMA transation")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20211023134101.28042-1-lars@metafoo.de
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1e27f9ff124427d311aeef1c4610a88521b8cf3
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Oct 20 18:08:10 2021 +0200

    netfilter: nfnetlink_queue: fix OOB when mac header was cleared
    
    [ Upstream commit 5648b5e1169ff1d6d6a46c35c0b5fbebd2a5cbb2 ]
    
    On 64bit platforms the MAC header is set to 0xffff on allocation and
    also when a helper like skb_unset_mac_header() is called.
    
    dev_parse_header may call skb_mac_header() which assumes valid mac offset:
    
     BUG: KASAN: use-after-free in eth_header_parse+0x75/0x90
     Read of size 6 at addr ffff8881075a5c05 by task nf-queue/1364
     Call Trace:
      memcpy+0x20/0x60
      eth_header_parse+0x75/0x90
      __nfqnl_enqueue_packet+0x1a61/0x3380
      __nf_queue+0x597/0x1300
      nf_queue+0xf/0x40
      nf_hook_slow+0xed/0x190
      nf_hook+0x184/0x440
      ip_output+0x1c0/0x2a0
      nf_reinject+0x26f/0x700
      nfqnl_recv_verdict+0xa16/0x18b0
      nfnetlink_rcv_msg+0x506/0xe70
    
    The existing code only works if the skb has a mac header.
    
    Fixes: 2c38de4c1f8da7 ("netfilter: fix looped (broad|multi)cast's MAC handling")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05d9522a68ea3f1db898504bd62c1d43ab4684ec
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Tue Oct 19 16:45:02 2021 +0200

    auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string
    
    [ Upstream commit afcb5a811ff3ab3969f09666535eb6018a160358 ]
    
    While writing an empty string to a device attribute is a no-op, and thus
    does not need explicit safeguards, the user can still write a single
    newline to an attribute file:
    
        echo > .../message
    
    If that happens, img_ascii_lcd_display() trims the newline, yielding an
    empty string, and causing an infinite loop in img_ascii_lcd_scroll().
    
    Fix this by adding a check for empty strings.  Clear the display in case
    one is encountered.
    
    Fixes: 0cad855fbd083ee5 ("auxdisplay: img-ascii-lcd: driver for simple ASCII LCD displays")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 311d7eb5f98e92701a6fa5fcedab0102fde680a5
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Thu Oct 7 14:12:28 2021 +0300

    dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro
    
    [ Upstream commit 320c88a3104dc955f928a1eecebd551ff89530c0 ]
    
    AT_XDMAC_CC_PERID() should be used to setup bits 24..30 of XDMAC_CC
    register. Using it without parenthesis around 0x7f & (i) will lead to
    setting all the time zero for bits 24..30 of XDMAC_CC as the << operator
    has higher precedence over bitwise &. Thus, add paranthesis around
    0x7f & (i).
    
    Fixes: 15a03850ab8f ("dmaengine: at_xdmac: fix macro typo")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211007111230.2331837-3-claudiu.beznea@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 941c42fce6f4568834e7546a83817a3a4dc159bf
Author: Evgeny Novikov <novikov@ispras.ru>
Date:   Fri Jul 9 17:45:29 2021 +0300

    mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()
    
    [ Upstream commit 78e4d342187625585932bb437ec26e1060f7fc6f ]
    
    hisi_spi_nor_probe() invokes clk_disable_unprepare() on all paths after
    successful call of clk_prepare_enable(). Besides, the clock is enabled by
    hispi_spi_nor_prep() and disabled by hispi_spi_nor_unprep(). So at remove
    time it is not possible to have the clock enabled. The patch removes
    excessive clk_disable_unprepare() from hisi_spi_nor_remove().
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: e523f11141bd ("mtd: spi-nor: add hisilicon spi-nor flash controller driver")
    Signed-off-by: Evgeny Novikov <novikov@ispras.ru>
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
    Link: https://lore.kernel.org/r/20210709144529.31379-1-novikov@ispras.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0b6ae56a61d32694f80a0cf49dd160dd85e1fab
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Tue Mar 9 00:00:20 2021 -0800

    fs: orangefs: fix error return code of orangefs_revalidate_lookup()
    
    [ Upstream commit 4c2b46c824a78fc8190d8eafaaea5a9078fe7479 ]
    
    When op_alloc() returns NULL to new_op, no error return code of
    orangefs_revalidate_lookup() is assigned.
    To fix this bug, ret is assigned with -ENOMEM in this case.
    
    Fixes: 8bb8aefd5afb ("OrangeFS: Change almost all instances of the string PVFS2 to OrangeFS.")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: Mike Marshall <hubcap@omnibond.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e92fac39696fab5e1eae4cd12a6584ddda412548
Author: Marek Behún <kabel@kernel.org>
Date:   Tue Oct 5 20:09:42 2021 +0200

    PCI: aardvark: Don't spam about PIO Response Status
    
    [ Upstream commit 464de7e7fff767e87429cd7be09c4f2cb50a6ccb ]
    
    Use dev_dbg() instead of dev_err() in advk_pcie_check_pio_status().
    
    For example CRS is not an error status, it just says that the request
    should be retried.
    
    Link: https://lore.kernel.org/r/20211005180952.6812-4-kabel@kernel.org
    Fixes: 8c39d710363c1 ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75bcf7ee1c6435ead5d7407cfb8c6dc11431c2a1
Author: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
Date:   Thu Oct 7 02:37:06 2021 -0400

    drm/plane-helper: fix uninitialized variable reference
    
    [ Upstream commit 7be28bd73f23e53d6e7f5fe891ba9503fc0c7210 ]
    
    drivers/gpu/drm/drm_plane_helper.c: In function 'drm_primary_helper_update':
    drivers/gpu/drm/drm_plane_helper.c:113:32: error: 'visible' is used uninitialized [-Werror=uninitialized]
      113 |         struct drm_plane_state plane_state = {
          |                                ^~~~~~~~~~~
    drivers/gpu/drm/drm_plane_helper.c:178:14: note: 'visible' was declared here
      178 |         bool visible;
          |              ^~~~~~~
    cc1: all warnings being treated as errors
    
    visible is an output, not an input. in practice this use might turn out
    OK but it's still UB.
    
    Fixes: df86af9133b4 ("drm/plane-helper: Add drm_plane_helper_check_state()")
    Reviewed-by: Simon Ser <contact@emersion.fr>
    Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
    Signed-off-by: Simon Ser <contact@emersion.fr>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211007063706.305984-1-alex_y_xu@yahoo.ca
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16645db27bb6c1ca3a5d4b7147a2c41ddf5bb9e7
Author: Baptiste Lepers <baptiste.lepers@gmail.com>
Date:   Mon Sep 6 11:59:24 2021 +1000

    pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds
    
    [ Upstream commit a2915fa06227b056a8f9b0d79b61dca08ad5cfc6 ]
    
    _nfs4_pnfs_v3/v4_ds_connect do
       some work
       smp_wmb
       ds->ds_clp = clp;
    
    And nfs4_ff_layout_prepare_ds currently does
       smp_rmb
       if(ds->ds_clp)
          ...
    
    This patch places the smp_rmb after the if. This ensures that following
    reads only happen once nfs4_ff_layout_prepare_ds has checked that data
    has been properly initialized.
    
    Fixes: d67ae825a59d6 ("pnfs/flexfiles: Add the FlexFile Layout Driver")
    Signed-off-by: Baptiste Lepers <baptiste.lepers@gmail.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52355fd439316fac560f3ade53d8640a41f1450d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Oct 31 16:25:22 2021 +0100

    power: supply: bq27xxx: Fix kernel crash on IRQ handler register error
    
    [ Upstream commit cdf10ffe8f626d8a2edc354abf063df0078b2d71 ]
    
    When registering the IRQ handler fails, do not just return the error code,
    this will free the devm_kzalloc()-ed data struct while leaving the queued
    work queued and the registered power_supply registered with both of them
    now pointing to free-ed memory, resulting in various kernel crashes
    soon afterwards.
    
    Instead properly tear-down things on IRQ handler register errors.
    
    Fixes: 703df6c09795 ("power: bq27xxx_battery: Reorganize I2C into a module")
    Cc: Andrew F. Davis <afd@ti.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00b6103b1474c12ca5e6cdecd7c3fe51a28a64cc
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Tue Oct 26 13:27:41 2021 +0300

    serial: xilinx_uartps: Fix race condition causing stuck TX
    
    [ Upstream commit 88b20f84f0fe47409342669caf3e58a3fc64c316 ]
    
    xilinx_uartps .start_tx() clears TXEMPTY when enabling TXEMPTY to avoid
    any previous TXEVENT event asserting the UART interrupt. This clear
    operation is done immediately after filling the TX FIFO.
    
    However, if the bytes inserted by cdns_uart_handle_tx() are consumed by
    the UART before the TXEMPTY is cleared, the clear operation eats the new
    TXEMPTY event as well, causing cdns_uart_isr() to never receive the
    TXEMPTY event. If there are bytes still queued in circbuf, TX will get
    stuck as they will never get transferred to FIFO (unless new bytes are
    queued to circbuf in which case .start_tx() is called again).
    
    While the racy missed TXEMPTY occurs fairly often with short data
    sequences (e.g. write 1 byte), in those cases circbuf is usually empty
    so no action on TXEMPTY would have been needed anyway. On the other
    hand, longer data sequences make the race much more unlikely as UART
    takes longer to consume the TX FIFO. Therefore it is rare for this race
    to cause visible issues in general.
    
    Fix the race by clearing the TXEMPTY bit in ISR *before* filling the
    FIFO.
    
    The TXEMPTY bit in ISR will only get asserted at the exact moment the
    TX FIFO *becomes* empty, so clearing the bit before filling FIFO does
    not cause an extra immediate assertion even if the FIFO is initially
    empty.
    
    This is hard to reproduce directly on a normal system, but inserting
    e.g. udelay(200) after cdns_uart_handle_tx(port), setting 4000000 baud,
    and then running "dd if=/dev/zero bs=128 of=/dev/ttyPS0 count=50"
    reliably reproduces the issue on my ZynqMP test system unless this fix
    is applied.
    
    Fixes: 85baf542d54e ("tty: xuartps: support 64 byte FIFO size")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Link: https://lore.kernel.org/r/20211026102741.2910441-1-anssi.hannula@bitwise.fi
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d3092fe9adf8801dbef38a63d5ef6237bfd3df2
Author: Leon Romanovsky <leon@kernel.org>
Date:   Tue Oct 12 10:28:43 2021 +0300

    RDMA/mlx4: Return missed an error if device doesn't support steering
    
    [ Upstream commit f4e56ec4452f48b8292dcf0e1c4bdac83506fb8b ]
    
    The error flow fixed in this patch is not possible because all kernel
    users of create QP interface check that device supports steering before
    set IB_QP_CREATE_NETIF_QP flag.
    
    Fixes: c1c98501121e ("IB/mlx4: Add support for steerable IB UD QPs")
    Link: https://lore.kernel.org/r/91c61f6e60eb0240f8bbc321fda7a1d2986dd03c.1634023677.git.leonro@nvidia.com
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09cc73bbc1a853089b52dfb924d78c2c294a81ef
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Oct 6 10:32:43 2021 +0300

    scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn()
    
    [ Upstream commit f4875d509a0a78ad294a1a538d534b5ba94e685a ]
    
    This variable is just a temporary variable, used to do an endian
    conversion.  The problem is that the last byte is not initialized.  After
    the conversion is completely done, the last byte is discarded so it doesn't
    cause a problem.  But static checkers and the KMSan runtime checker can
    detect the uninitialized read and will complain about it.
    
    Link: https://lore.kernel.org/r/20211006073242.GA8404@kili
    Fixes: 5036f0a0ecd3 ("[SCSI] csiostor: Fix sparse warnings.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c9323d26a8534746abf5a93359f4314197cb7f0d
Author: Jakob Hauser <jahau@rocketmail.com>
Date:   Fri Oct 8 10:32:45 2021 +0200

    power: supply: rt5033_battery: Change voltage values to µV
    
    [ Upstream commit bf895295e9a73411889816f1a0c1f4f1a2d9c678 ]
    
    Currently the rt5033_battery driver provides voltage values in mV. It
    should be µV as stated in Documentation/power/power_supply_class.rst.
    
    Fixes: b847dd96e659 ("power: rt5033_battery: Add RT5033 Fuel gauge device driver")
    Cc: Beomho Seo <beomho.seo@samsung.com>
    Cc: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Jakob Hauser <jahau@rocketmail.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6971cfba6961c8b49513d1582d1107ff2a4e90c1
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Oct 11 15:37:39 2021 +0300

    usb: gadget: hid: fix error code in do_config()
    
    [ Upstream commit 68e7c510fdf4f6167404609da52e1979165649f6 ]
    
    Return an error code if usb_get_function() fails.  Don't return success.
    
    Fixes: 4bc8a33f2407 ("usb: gadget: hid: convert to new interface of f_hid")
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211011123739.GC15188@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dff3c2949ba63f26d1ce9ff3049ac62dd10d7daf
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Oct 5 16:45:16 2021 +0300

    serial: 8250_dw: Drop wrong use of ACPI_PTR()
    
    [ Upstream commit ebabb77a2a115b6c5e68f7364b598310b5f61fb2 ]
    
    ACPI_PTR() is more harmful than helpful. For example, in this case
    if CONFIG_ACPI=n, the ID table left unused which is not what we want.
    
    Instead of adding ifdeffery here and there, drop ACPI_PTR().
    
    Fixes: 6a7320c4669f ("serial: 8250_dw: Add ACPI 5.0 support")
    Reported-by: Daniel Palmer <daniel@0x0f.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20211005134516.23218-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 988471bfaa18cf505049689f1c254beadf542978
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Wed Sep 15 15:34:35 2021 +0200

    video: fbdev: chipsfb: use memset_io() instead of memset()
    
    [ Upstream commit f2719b26ae27282c145202ffd656d5ff1fe737cc ]
    
    While investigating a lockup at startup on Powerbook 3400C, it was
    identified that the fbdev driver generates alignment exception at
    startup:
    
      --- interrupt: 600 at memset+0x60/0xc0
      NIP:  c0021414 LR: c03fc49c CTR: 00007fff
      REGS: ca021c10 TRAP: 0600   Tainted: G        W          (5.14.2-pmac-00727-g12a41fa69492)
      MSR:  00009032 <EE,ME,IR,DR,RI>  CR: 44008442  XER: 20000100
      DAR: cab80020 DSISR: 00017c07
      GPR00: 00000007 ca021cd0 c14412e0 cab80000 00000000 00100000 cab8001c 00000004
      GPR08: 00100000 00007fff 00000000 00000000 84008442 00000000 c0006fb4 00000000
      GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00100000
      GPR24: 00000000 81800000 00000320 c15fa400 c14d1878 00000000 c14d1800 c094e19c
      NIP [c0021414] memset+0x60/0xc0
      LR [c03fc49c] chipsfb_pci_init+0x160/0x580
      --- interrupt: 600
      [ca021cd0] [c03fc46c] chipsfb_pci_init+0x130/0x580 (unreliable)
      [ca021d20] [c03a3a70] pci_device_probe+0xf8/0x1b8
      [ca021d50] [c043d584] really_probe.part.0+0xac/0x388
      [ca021d70] [c043d914] __driver_probe_device+0xb4/0x170
      [ca021d90] [c043da18] driver_probe_device+0x48/0x144
      [ca021dc0] [c043e318] __driver_attach+0x11c/0x1c4
      [ca021de0] [c043ad30] bus_for_each_dev+0x88/0xf0
      [ca021e10] [c043c724] bus_add_driver+0x190/0x22c
      [ca021e40] [c043ee94] driver_register+0x9c/0x170
      [ca021e60] [c0006c28] do_one_initcall+0x54/0x1ec
      [ca021ed0] [c08246e4] kernel_init_freeable+0x1c0/0x270
      [ca021f10] [c0006fdc] kernel_init+0x28/0x11c
      [ca021f30] [c0017148] ret_from_kernel_thread+0x14/0x1c
      Instruction dump:
      7d4601a4 39490777 7d4701a4 39490888 7d4801a4 39490999 7d4901a4 39290aaa
      7d2a01a4 4c00012c 4bfffe88 0fe00000 <4bfffe80> 9421fff0 38210010 48001970
    
    This is due to 'dcbz' instruction being used on non-cached memory.
    'dcbz' instruction is used by memset() to zeroize a complete
    cacheline at once, and memset() is not expected to be used on non
    cached memory.
    
    When performing a 'sparse' check on fbdev driver, it also appears
    that the use of memset() is unexpected:
    
      drivers/video/fbdev/chipsfb.c:334:17: warning: incorrect type in argument 1 (different address spaces)
      drivers/video/fbdev/chipsfb.c:334:17:    expected void *
      drivers/video/fbdev/chipsfb.c:334:17:    got char [noderef] __iomem *screen_base
      drivers/video/fbdev/chipsfb.c:334:15: warning: memset with byte count of 1048576
    
    Use fb_memset() instead of memset(). fb_memset() is defined as
    memset_io() for powerpc.
    
    Fixes: 8c8709334cec ("[PATCH] ppc32: Remove CONFIG_PMAC_PBOOK")
    Reported-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/884a54f1e5cb774c1d9b4db780209bee5d4f6718.1631712563.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b52958eb22d32c49bd97b77fb224c54d6ed808e7
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Sat Sep 25 23:14:32 2021 +0800

    memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
    
    [ Upstream commit 4ed2f3545c2e5acfbccd7f85fea5b1a82e9862d7 ]
    
    The error handling code of fsl_ifc_ctrl_probe is problematic. When
    fsl_ifc_ctrl_init fails or request_irq of fsl_ifc_ctrl_dev->irq fails,
    it forgets to free the irq and nand_irq. Meanwhile, if request_irq of
    fsl_ifc_ctrl_dev->nand_irq fails, it will still free nand_irq even if
    the request_irq is not successful.
    
    Fix this by refactoring the error handling code.
    
    Fixes: d2ae2e20fbdd ("driver/memory:Move Freescale IFC driver to a common driver")
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Link: https://lore.kernel.org/r/20210925151434.8170-1-mudongliangabcd@gmail.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f4ee9063b54f52379dd0b867e8dca0372428e2d
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Jun 27 17:54:31 2021 +0200

    soc/tegra: Fix an error handling path in tegra_powergate_power_up()
    
    [ Upstream commit 986b5094708e508baa452a23ffe809870934a7df ]
    
    If an error occurs after a successful tegra_powergate_enable_clocks()
    call, it must be undone by a tegra_powergate_disable_clocks() call, as
    already done in the below and above error handling paths of this function.
    
    Update the 'goto' to branch at the correct place of the error handling
    path.
    
    Fixes: a38045121bf4 ("soc/tegra: pmc: Add generic PM domain support")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ef07b41d589479c80eef06933a2a2b2bba83e24
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Fri Oct 1 09:34:15 2021 +0200

    arm: dts: omap3-gta04a4: accelerometer irq fix
    
    [ Upstream commit 884ea75d79a36faf3731ad9d6b9c29f58697638d ]
    
    Fix typo in pinctrl. It did only work because the bootloader
    seems to have initialized it.
    
    Fixes: ee327111953b ("ARM: dts: omap3-gta04: Define and use bma180 irq pin")
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9bd1b50306c2e8bfd0d25fa6355f2a7c25c2469
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Sat Sep 4 10:37:41 2021 +0800

    JFS: fix memleak in jfs_mount
    
    [ Upstream commit c48a14dca2cb57527dde6b960adbe69953935f10 ]
    
    In jfs_mount, when diMount(ipaimap2) fails, it goes to errout35. However,
    the following code does not free ipaimap2 allocated by diReadSpecial.
    
    Fix this by refactoring the error handling code of jfs_mount. To be
    specific, modify the lable name and free ipaimap2 when the above error
    ocurrs.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e77b7002fed2bc12acd1eafba847aa98ad11be4c
Author: Jackie Liu <liuyun01@kylinos.cn>
Date:   Mon Sep 13 14:19:08 2021 +0800

    MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT
    
    [ Upstream commit 7f3b3c2bfa9c93ab9b5595543496f570983dc330 ]
    
    mach/loongson64 fails to build when the FPU support is disabled:
    
    arch/mips/loongson64/cop2-ex.c:45:15: error: implicit declaration of function ‘__is_fpu_owner’; did you mean ‘is_fpu_owner’? [-Werror=implicit-function-declaration]
    arch/mips/loongson64/cop2-ex.c:98:30: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:99:30: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:131:43: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:137:38: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:203:30: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:219:30: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:283:38: error: ‘struct thread_struct’ has no member named ‘fpu’
    arch/mips/loongson64/cop2-ex.c:301:38: error: ‘struct thread_struct’ has no member named ‘fpu’
    
    Fixes: ef2f826c8f2f ("MIPS: Loongson-3: Enable the COP2 usage")
    Suggested-by: Huacai Chen <chenhuacai@kernel.org>
    Reviewed-by: Huacai Chen <chenhuacai@kernel.org>
    Reported-by: k2ci robot <kernel-bot@kylinos.cn>
    Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2810048d9ec7c14b9ae11f33e40606077326ece
Author: Tong Zhang <ztong0001@gmail.com>
Date:   Mon Sep 6 21:07:02 2021 -0700

    scsi: dc395: Fix error case unwinding
    
    [ Upstream commit cbd9a3347c757383f3d2b50cf7cfd03eb479c481 ]
    
    dc395x_init_one()->adapter_init() might fail. In this case, the acb is
    already cleaned up by adapter_init(), no need to do that in
    adapter_uninit(acb) again.
    
    [    1.252251] dc395x: adapter init failed
    [    1.254900] RIP: 0010:adapter_uninit+0x94/0x170 [dc395x]
    [    1.260307] Call Trace:
    [    1.260442]  dc395x_init_one.cold+0x72a/0x9bb [dc395x]
    
    Link: https://lore.kernel.org/r/20210907040702.1846409-1-ztong0001@gmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Finn Thain <fthain@linux-m68k.org>
    Signed-off-by: Tong Zhang <ztong0001@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c56e51a3036633bf5c973d4d7ad51f97562e205b
Author: Jackie Liu <liuyun01@kylinos.cn>
Date:   Wed Sep 1 20:35:57 2021 +0800

    ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc()
    
    [ Upstream commit 2aa717473ce96c93ae43a5dc8c23cedc8ce7dd9f ]
    
    The s3c24xx_init_intc() returns an error pointer upon failure, not NULL.
    let's add an error pointer check in s3c24xx_handle_irq.
    
    s3c_intc[0] is not NULL or ERR, we can simplify the code.
    
    Fixes: 1f629b7a3ced ("ARM: S3C24XX: transform irq handling into a declarative form")
    Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
    Link: https://lore.kernel.org/r/20210901123557.1043953-1-liu.yun@linux.dev
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dce40d2c70f325687e5e2dfbba7cf9048c4a67cf
Author: Junji Wei <weijunji@bytedance.com>
Date:   Tue Aug 31 16:32:23 2021 +0800

    RDMA/rxe: Fix wrong port_cap_flags
    
    [ Upstream commit dcd3f985b20ffcc375f82ca0ca9f241c7025eb5e ]
    
    The port->attr.port_cap_flags should be set to enum
    ib_port_capability_mask_bits in ib_mad.h, not
    RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP.
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Link: https://lore.kernel.org/r/20210831083223.65797-1-weijunji@bytedance.com
    Signed-off-by: Junji Wei <weijunji@bytedance.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c1f8ee59477737e19414010fa7f4f8698124b50
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Thu Oct 21 14:30:28 2021 -0400

    crypto: pcrypt - Delay write to padata->info
    
    [ Upstream commit 68b6dea802cea0dbdd8bd7ccc60716b5a32a5d8a ]
    
    These three events can race when pcrypt is used multiple times in a
    template ("pcrypt(pcrypt(...))"):
    
      1.  [taskA] The caller makes the crypto request via crypto_aead_encrypt()
      2.  [kworkerB] padata serializes the inner pcrypt request
      3.  [kworkerC] padata serializes the outer pcrypt request
    
    3 might finish before the call to crypto_aead_encrypt() returns in 1,
    resulting in two possible issues.
    
    First, a use-after-free of the crypto request's memory when, for
    example, taskA writes to the outer pcrypt request's padata->info in
    pcrypt_aead_enc() after kworkerC completes the request.
    
    Second, the outer pcrypt request overwrites the inner pcrypt request's
    return code with -EINPROGRESS, making a successful request appear to
    fail.  For instance, kworkerB writes the outer pcrypt request's
    padata->info in pcrypt_aead_done() and then taskA overwrites it
    in pcrypt_aead_enc().
    
    Avoid both situations by delaying the write of padata->info until after
    the inner crypto request's return code is checked.  This prevents the
    use-after-free by not touching the crypto request's memory after the
    next-inner crypto request is made, and stops padata->info from being
    overwritten.
    
    Fixes: 5068c7a883d16 ("crypto: pcrypt - Add pcrypt crypto parallelization wrapper")
    Reported-by: syzbot+b187b77c8474f9648fae@syzkaller.appspotmail.com
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d04e38104bed5ef329c12a909957ad3a0a292f2
Author: Wang Hai <wanghai38@huawei.com>
Date:   Wed Oct 20 20:03:45 2021 +0800

    libertas: Fix possible memory leak in probe and disconnect
    
    [ Upstream commit 9692151e2fe7a326bafe99836fd1f20a2cc3a049 ]
    
    I got memory leak as follows when doing fault injection test:
    
    unreferenced object 0xffff88812c7d7400 (size 512):
      comm "kworker/6:1", pid 176, jiffies 4295003332 (age 822.830s)
      hex dump (first 32 bytes):
        00 68 1e 04 81 88 ff ff 01 00 00 00 00 00 00 00  .h..............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8167939c>] slab_post_alloc_hook+0x9c/0x490
        [<ffffffff8167f627>] kmem_cache_alloc_trace+0x1f7/0x470
        [<ffffffffa02c9873>] if_usb_probe+0x63/0x446 [usb8xxx]
        [<ffffffffa022668a>] usb_probe_interface+0x1aa/0x3c0 [usbcore]
        [<ffffffff82b59630>] really_probe+0x190/0x480
        [<ffffffff82b59a19>] __driver_probe_device+0xf9/0x180
        [<ffffffff82b59af3>] driver_probe_device+0x53/0x130
        [<ffffffff82b5a075>] __device_attach_driver+0x105/0x130
        [<ffffffff82b55949>] bus_for_each_drv+0x129/0x190
        [<ffffffff82b593c9>] __device_attach+0x1c9/0x270
        [<ffffffff82b5a250>] device_initial_probe+0x20/0x30
        [<ffffffff82b579c2>] bus_probe_device+0x142/0x160
        [<ffffffff82b52e49>] device_add+0x829/0x1300
        [<ffffffffa02229b1>] usb_set_configuration+0xb01/0xcc0 [usbcore]
        [<ffffffffa0235c4e>] usb_generic_driver_probe+0x6e/0x90 [usbcore]
        [<ffffffffa022641f>] usb_probe_device+0x6f/0x130 [usbcore]
    
    cardp is missing being freed in the error handling path of the probe
    and the path of the disconnect, which will cause memory leak.
    
    This patch adds the missing kfree().
    
    Fixes: 876c9d3aeb98 ("[PATCH] Marvell Libertas 8388 802.11b/g USB driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211020120345.2016045-3-wanghai38@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef32674e377c5ee1c94b59cbdbee56f28a603169
Author: Wang Hai <wanghai38@huawei.com>
Date:   Wed Oct 20 20:03:44 2021 +0800

    libertas_tf: Fix possible memory leak in probe and disconnect
    
    [ Upstream commit d549107305b4634c81223a853701c06bcf657bc3 ]
    
    I got memory leak as follows when doing fault injection test:
    
    unreferenced object 0xffff88810a2ddc00 (size 512):
      comm "kworker/6:1", pid 176, jiffies 4295009893 (age 757.220s)
      hex dump (first 32 bytes):
        00 50 05 18 81 88 ff ff 00 00 00 00 00 00 00 00  .P..............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8167939c>] slab_post_alloc_hook+0x9c/0x490
        [<ffffffff8167f627>] kmem_cache_alloc_trace+0x1f7/0x470
        [<ffffffffa02a1530>] if_usb_probe+0x60/0x37c [libertas_tf_usb]
        [<ffffffffa022668a>] usb_probe_interface+0x1aa/0x3c0 [usbcore]
        [<ffffffff82b59630>] really_probe+0x190/0x480
        [<ffffffff82b59a19>] __driver_probe_device+0xf9/0x180
        [<ffffffff82b59af3>] driver_probe_device+0x53/0x130
        [<ffffffff82b5a075>] __device_attach_driver+0x105/0x130
        [<ffffffff82b55949>] bus_for_each_drv+0x129/0x190
        [<ffffffff82b593c9>] __device_attach+0x1c9/0x270
        [<ffffffff82b5a250>] device_initial_probe+0x20/0x30
        [<ffffffff82b579c2>] bus_probe_device+0x142/0x160
        [<ffffffff82b52e49>] device_add+0x829/0x1300
        [<ffffffffa02229b1>] usb_set_configuration+0xb01/0xcc0 [usbcore]
        [<ffffffffa0235c4e>] usb_generic_driver_probe+0x6e/0x90 [usbcore]
        [<ffffffffa022641f>] usb_probe_device+0x6f/0x130 [usbcore]
    
    cardp is missing being freed in the error handling path of the probe
    and the path of the disconnect, which will cause memory leak.
    
    This patch adds the missing kfree().
    
    Fixes: c305a19a0d0a ("libertas_tf: usb specific functions")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211020120345.2016045-2-wanghai38@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50d9b55d71deae40a2a5067dcc57774360a8430d
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Tue Oct 26 09:51:28 2021 +0800

    samples/kretprobes: Fix return value if register_kretprobe() failed
    
    [ Upstream commit f76fbbbb5061fe14824ba5807c44bd7400a6b4e1 ]
    
    Use the actual return value instead of always -1 if register_kretprobe()
    failed.
    
    E.g. without this patch:
    
     # insmod samples/kprobes/kretprobe_example.ko func=no_such_func
     insmod: ERROR: could not insert module samples/kprobes/kretprobe_example.ko: Operation not permitted
    
    With this patch:
    
     # insmod samples/kprobes/kretprobe_example.ko func=no_such_func
     insmod: ERROR: could not insert module samples/kprobes/kretprobe_example.ko: Unknown symbol in module
    
    Link: https://lkml.kernel.org/r/1635213091-24387-2-git-send-email-yangtiezhu@loongson.cn
    
    Fixes: 804defea1c02 ("Kprobes: move kprobe examples to samples/")
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ee20e812af1b0ffc1c82a31f0a41be1757fedcb
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Oct 20 17:25:22 2021 +0100

    irq: mips: avoid nested irq_enter()
    
    [ Upstream commit c65b52d02f6c1a06ddb20cba175ad49eccd6410d ]
    
    As bcm6345_l1_irq_handle() is a chained irqchip handler, it will be
    invoked within the context of the root irqchip handler, which must have
    entered IRQ context already.
    
    When bcm6345_l1_irq_handle() calls arch/mips's do_IRQ() , this will nest
    another call to irq_enter(), and the resulting nested increment to
    `rcu_data.dynticks_nmi_nesting` will cause rcu_is_cpu_rrupt_from_idle()
    to fail to identify wakeups from idle, resulting in failure to preempt,
    and RCU stalls.
    
    Chained irqchip handlers must invoke IRQ handlers by way of thee core
    irqchip code, i.e. generic_handle_irq() or generic_handle_domain_irq()
    and should not call do_IRQ(), which is intended only for root irqchip
    handlers.
    
    Fix bcm6345_l1_irq_handle() by calling generic_handle_irq() directly.
    
    Fixes: c7c42ec2baa1de7a ("irqchips/bmips: Add bcm6345-l1 interrupt controller")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Marc Zyngier <maz@kernel.org>
    Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b479a4af7ff93dcdb33a8acdca9b00cea9a41cf
Author: David Hildenbrand <david@redhat.com>
Date:   Thu Sep 9 18:22:41 2021 +0200

    s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap()
    
    [ Upstream commit b159f94c86b43cf7e73e654bc527255b1f4eafc4 ]
    
    ... otherwise we will try unlocking a spinlock that was never locked via a
    garbage pointer.
    
    At the time we reach this code path, we usually successfully looked up
    a PGSTE already; however, evil user space could have manipulated the VMA
    layout in the meantime and triggered removal of the page table.
    
    Fixes: 1e133ab296f3 ("s390/mm: split arch/s390/mm/pgtable.c")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Link: https://lore.kernel.org/r/20210909162248.14969-3-david@redhat.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a269586a03ab0e37e221f83012db707277bf9143
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Tue Oct 19 20:27:26 2021 +0900

    smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
    
    [ Upstream commit 0934ad42bb2c5df90a1b9de690f93de735b622fe ]
    
    syzbot is reporting UAF at cipso_v4_doi_search() [1], for smk_cipso_doi()
    is calling kfree() without removing from the cipso_v4_doi_list list after
    netlbl_cfg_cipsov4_map_add() returned an error. We need to use
    netlbl_cfg_cipsov4_del() in order to remove from the list and wait for
    RCU grace period before kfree().
    
    Link: https://syzkaller.appspot.com/bug?extid=93dba5b91f0fed312cbd [1]
    Reported-by: syzbot <syzbot+93dba5b91f0fed312cbd@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 6c2e8ac0953fccdd ("netlabel: Update kernel configuration API")
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 33c82dce33448fe40c4deb70d1cc3ee22bc4802d
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue Oct 19 21:16:47 2021 +0200

    phy: micrel: ksz8041nl: do not use power down mode
    
    [ Upstream commit 2641b62d2fab52648e34cdc6994b2eacde2d27c1 ]
    
    Some Micrel KSZ8041NL PHY chips exhibit continuous RX errors after using
    the power down mode bit (0.11). If the PHY is taken out of power down
    mode in a certain temperature range, the PHY enters a weird state which
    leads to continuously reporting RX errors. In that state, the MAC is not
    able to receive or send any Ethernet frames and the activity LED is
    constantly blinking. Since Linux is using the suspend callback when the
    interface is taken down, ending up in that state can easily happen
    during a normal startup.
    
    Micrel confirmed the issue in errata DS80000700A [*], caused by abnormal
    clock recovery when using power down mode. Even the latest revision (A4,
    Revision ID 0x1513) seems to suffer that problem, and according to the
    errata is not going to be fixed.
    
    Remove the suspend/resume callback to avoid using the power down mode
    completely.
    
    [*] https://ww1.microchip.com/downloads/en/DeviceDoc/80000700A.pdf
    
    Fixes: 1a5465f5d6a2 ("phy/micrel: Add suspend/resume support to Micrel PHYs")
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ed75c7021817a55df586f925add5b796bdbd5e1
Author: Jonas Dreßler <verdre@v0yd.nl>
Date:   Sat Oct 16 17:32:43 2021 +0200

    mwifiex: Send DELBA requests according to spec
    
    [ Upstream commit cc8a8bc37466f79b24d972555237f3d591150602 ]
    
    While looking at on-air packets using Wireshark, I noticed we're never
    setting the initiator bit when sending DELBA requests to the AP: While
    we set the bit on our del_ba_param_set bitmask, we forget to actually
    copy that bitmask over to the command struct, which means we never
    actually set the initiator bit.
    
    Fix that and copy the bitmask over to the host_cmd_ds_11n_delba command
    struct.
    
    Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver")
    Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>
    Acked-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211016153244.24353-5-verdre@v0yd.nl
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7acd98da36299af82977bb5d1d33b30cfdfd9e16
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Mon Oct 18 11:25:37 2021 -0700

    platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning
    
    [ Upstream commit fd96e35ea7b95f1e216277805be89d66e4ae962d ]
    
    A new warning in clang points out a use of bitwise OR with boolean
    expressions in this driver:
    
    drivers/platform/x86/thinkpad_acpi.c:9061:11: error: use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
            else if ((strlencmp(cmd, "level disengaged") == 0) |
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                               ||
    drivers/platform/x86/thinkpad_acpi.c:9061:11: note: cast one or both operands to int to silence this warning
    1 error generated.
    
    This should clearly be a logical OR so change it to fix the warning.
    
    Fixes: fe98a52ce754 ("ACPI: thinkpad-acpi: add sysfs support to fan subdriver")
    Link: https://github.com/ClangBuiltLinux/linux/issues/1476
    Reported-by: Tor Vic <torvic9@mailbox.org>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://lore.kernel.org/r/20211018182537.2316800-1-nathan@kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3f3fde65ab551690b3127aa12b9293afc3f94392
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Oct 16 08:21:44 2021 +0200

    mmc: mxs-mmc: disable regulator on error and in the remove function
    
    [ Upstream commit ce5f6c2c9b0fcb4094f8e162cfd37fb4294204f7 ]
    
    The 'reg_vmmc' regulator is enabled in the probe. It is never disabled.
    Neither in the error handling path of the probe nor in the remove
    function.
    
    Register a devm_action to disable it when needed.
    
    Fixes: 4dc5a79f1350 ("mmc: mxs-mmc: enable regulator for mmc slot")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/4aadb3c97835f7b80f00819c3d549e6130384e67.1634365151.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7737b104c211fa843de268b897d601e070292a72
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Fri Oct 15 06:37:39 2021 -0700

    net: stream: don't purge sk_error_queue in sk_stream_kill_queues()
    
    [ Upstream commit 24bcbe1cc69fa52dc4f7b5b2456678ed464724d8 ]
    
    sk_stream_kill_queues() can be called on close when there are
    still outstanding skbs to transmit. Those skbs may try to queue
    notifications to the error queue (e.g. timestamps).
    If sk_stream_kill_queues() purges the queue without taking
    its lock the queue may get corrupted, and skbs leaked.
    
    This shows up as a warning about an rmem leak:
    
    WARNING: CPU: 24 PID: 0 at net/ipv4/af_inet.c:154 inet_sock_destruct+0x...
    
    The leak is always a multiple of 0x300 bytes (the value is in
    %rax on my builds, so RAX: 0000000000000300). 0x300 is truesize of
    an empty sk_buff. Indeed if we dump the socket state at the time
    of the warning the sk_error_queue is often (but not always)
    corrupted. The ->next pointer points back at the list head,
    but not the ->prev pointer. Indeed we can find the leaked skb
    by scanning the kernel memory for something that looks like
    an skb with ->sk = socket in question, and ->truesize = 0x300.
    The contents of ->cb[] of the skb confirms the suspicion that
    it is indeed a timestamp notification (as generated in
    __skb_complete_tx_timestamp()).
    
    Removing purging of sk_error_queue should be okay, since
    inet_sock_destruct() does it again once all socket refs
    are gone. Eric suggests this may cause sockets that go
    thru disconnect() to maintain notifications from the
    previous incarnations of the socket, but that should be
    okay since the race was there anyway, and disconnect()
    is not exactly dependable.
    
    Thanks to Jonathan Lemon and Omar Sandoval for help at various
    stages of tracing the issue.
    
    Fixes: cb9eff097831 ("net: new user space API for time stamping of incoming and outgoing packets")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96393660e25c03a3201d926865d431267110ab68
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Oct 13 11:13:15 2021 +0300

    drm/msm: uninitialized variable in msm_gem_import()
    
    [ Upstream commit 2203bd0e5c12ffc53ffdd4fbd7b12d6ba27e0424 ]
    
    The msm_gem_new_impl() function cleans up after itself so there is no
    need to call drm_gem_object_put().  Conceptually, it does not make sense
    to call a kref_put() function until after the reference counting has
    been initialized which happens immediately after this call in the
    drm_gem_(private_)object_init() functions.
    
    In the msm_gem_import() function the "obj" pointer is uninitialized, so
    it will lead to a crash.
    
    Fixes: 05b849111c07 ("drm/msm: prime support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211013081315.GG6010@kili
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba26680985e4b115935cd3d340a4dc63108f034b
Author: Sven Eckelmann <seckelmann@datto.com>
Date:   Tue Jun 11 19:21:31 2019 +0200

    ath10k: fix max antenna gain unit
    
    [ Upstream commit 0a491167fe0cf9f26062462de2a8688b96125d48 ]
    
    Most of the txpower for the ath10k firmware is stored as twicepower (0.5 dB
    steps). This isn't the case for max_antenna_gain - which is still expected
    by the firmware as dB.
    
    The firmware is converting it from dB to the internal (twicepower)
    representation when it calculates the limits of a channel. This can be seen
    in tpc_stats when configuring "12" as max_antenna_gain. Instead of the
    expected 12 (6 dB), the tpc_stats shows 24 (12 dB).
    
    Tested on QCA9888 and IPQ4019 with firmware 10.4-3.5.3-00057.
    
    Fixes: 02256930d9b8 ("ath10k: use proper tx power unit")
    Signed-off-by: Sven Eckelmann <seckelmann@datto.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20190611172131.6064-1-sven@narfation.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c68a92435ac796f210d1c58839ec03dac2afa359
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Oct 12 19:27:58 2021 +0800

    hwmon: Fix possible memleak in __hwmon_device_register()
    
    [ Upstream commit ada61aa0b1184a8fda1a89a340c7d6cc4e59aee5 ]
    
    I got memory leak as follows when doing fault injection test:
    
    unreferenced object 0xffff888102740438 (size 8):
      comm "27", pid 859, jiffies 4295031351 (age 143.992s)
      hex dump (first 8 bytes):
        68 77 6d 6f 6e 30 00 00                          hwmon0..
      backtrace:
        [<00000000544b5996>] __kmalloc_track_caller+0x1a6/0x300
        [<00000000df0d62b9>] kvasprintf+0xad/0x140
        [<00000000d3d2a3da>] kvasprintf_const+0x62/0x190
        [<000000005f8f0f29>] kobject_set_name_vargs+0x56/0x140
        [<00000000b739e4b9>] dev_set_name+0xb0/0xe0
        [<0000000095b69c25>] __hwmon_device_register+0xf19/0x1e50 [hwmon]
        [<00000000a7e65b52>] hwmon_device_register_with_info+0xcb/0x110 [hwmon]
        [<000000006f181e86>] devm_hwmon_device_register_with_info+0x85/0x100 [hwmon]
        [<0000000081bdc567>] tmp421_probe+0x2d2/0x465 [tmp421]
        [<00000000502cc3f8>] i2c_device_probe+0x4e1/0xbb0
        [<00000000f90bda3b>] really_probe+0x285/0xc30
        [<000000007eac7b77>] __driver_probe_device+0x35f/0x4f0
        [<000000004953d43d>] driver_probe_device+0x4f/0x140
        [<000000002ada2d41>] __device_attach_driver+0x24c/0x330
        [<00000000b3977977>] bus_for_each_drv+0x15d/0x1e0
        [<000000005bf2a8e3>] __device_attach+0x267/0x410
    
    When device_register() returns an error, the name allocated in
    dev_set_name() will be leaked, the put_device() should be used
    instead of calling hwmon_dev_release() to give up the device
    reference, then the name will be freed in kobject_cleanup().
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: bab2243ce189 ("hwmon: Introduce hwmon_device_register_with_groups")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211012112758.2681084-1-yangyingliang@huawei.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6035f5cfbb1a4f1d4795c5af0b5d9d046d1d3f7
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Oct 11 15:39:12 2021 +0300

    memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host()
    
    [ Upstream commit beae4a6258e64af609ad5995cc6b6056eb0d898e ]
    
    The "msh" pointer is device managed, meaning that memstick_alloc_host()
    calls device_initialize() on it.  That means that it can't be free
    using kfree() but must instead be freed with memstick_free_host().
    Otherwise it leads to a tiny memory leak of device resources.
    
    Fixes: 60fdd931d577 ("memstick: add support for JMicron jmb38x MemoryStick host controller")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211011123912.GD15188@kili
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5460176e6ff4a565c0fff5e000fea87426569b32
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Sep 27 11:44:47 2021 +0200

    memstick: avoid out-of-range warning
    
    [ Upstream commit 4853396f03c3019eccf5cd113e464231e9ddf0b3 ]
    
    clang-14 complains about a sanity check that always passes when the
    page size is 64KB or larger:
    
    drivers/memstick/core/ms_block.c:1739:21: error: result of comparison of constant 65536 with expression of type 'unsigned short' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
            if (msb->page_size > PAGE_SIZE) {
                ~~~~~~~~~~~~~~ ^ ~~~~~~~~~
    
    This is fine, it will still work on all architectures, so just shut
    up that warning with a cast.
    
    Fixes: 0ab30494bc4f ("memstick: add support for legacy memorysticks")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20210927094520.696665-1-arnd@kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a97b984a6ec6637d707513bc3c31b4f775704f92
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Oct 6 10:36:22 2021 +0300

    b43: fix a lower bounds test
    
    [ Upstream commit 9b793db5fca44d01f72d3564a168171acf7c4076 ]
    
    The problem is that "channel" is an unsigned int, when it's less 5 the
    value of "channel - 5" is not a negative number as one would expect but
    is very high positive value instead.
    
    This means that "start" becomes a very high positive value.  The result
    of that is that we never enter the "for (i = start; i <= end; i++) {"
    loop.  Instead of storing the result from b43legacy_radio_aci_detect()
    it just uses zero.
    
    Fixes: ef1a628d83fc ("b43: Implement dynamic PHY API")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Michael Büsch <m@bues.ch>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211006073621.GE8404@kili
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 482899b0af98e7113bdf31d42a708c790aaeb199
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Oct 6 10:35:42 2021 +0300

    b43legacy: fix a lower bounds test
    
    [ Upstream commit c1c8380b0320ab757e60ed90efc8b1992a943256 ]
    
    The problem is that "channel" is an unsigned int, when it's less 5 the
    value of "channel - 5" is not a negative number as one would expect but
    is very high positive value instead.
    
    This means that "start" becomes a very high positive value.  The result
    of that is that we never enter the "for (i = start; i <= end; i++) {"
    loop.  Instead of storing the result from b43legacy_radio_aci_detect()
    it just uses zero.
    
    Fixes: 75388acd0cd8 ("[B43LEGACY]: add mac80211-based driver for legacy BCM43xx devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Michael Büsch <m@bues.ch>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211006073542.GD8404@kili
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0d0694e848948e020c2d075291848fc66d27332
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Tue Sep 28 12:44:30 2021 +0100

    crypto: qat - disregard spurious PFVF interrupts
    
    [ Upstream commit 18fcba469ba5359c1de7e3fb16f7b9e8cd1b8e02 ]
    
    Upon receiving a PFVF message, check if the interrupt bit is set in the
    message. If it is not, that means that the interrupt was probably
    triggered by a collision. In this case, disregard the message and
    re-enable the interrupts.
    
    Fixes: ed8ccaef52fa ("crypto: qat - Add support for SRIOV")
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: Marco Chiappero <marco.chiappero@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57dd5d8a91cc9d4ce0e923c0620cafbb9d1665bc
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Tue Sep 28 12:44:29 2021 +0100

    crypto: qat - detect PFVF collision after ACK
    
    [ Upstream commit 9b768e8a3909ac1ab39ed44a3933716da7761a6f ]
    
    Detect a PFVF collision between the local and the remote function by
    checking if the message on the PFVF CSR has been overwritten.
    This is done after the remote function confirms that the message has
    been received, by clearing the interrupt bit, or the maximum number of
    attempts (ADF_IOV_MSG_ACK_MAX_RETRY) to check the CSR has been exceeded.
    
    Fixes: ed8ccaef52fa ("crypto: qat - Add support for SRIOV")
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Co-developed-by: Marco Chiappero <marco.chiappero@intel.com>
    Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b5c7450ca927a028c3bffda06ea5cc4f79484805
Author: Linus Lüssing <ll@simonwunderlich.de>
Date:   Tue Oct 5 16:55:53 2021 +0300

    ath9k: Fix potential interrupt storm on queue reset
    
    [ Upstream commit 4925642d541278575ad1948c5924d71ffd57ef14 ]
    
    In tests with two Lima boards from 8devices (QCA4531 based) on OpenWrt
    19.07 we could force a silent restart of a device with no serial
    output when we were sending a high amount of UDP traffic (iperf3 at 80
    MBit/s in both directions from external hosts, saturating the wifi and
    causing a load of about 4.5 to 6) and were then triggering an
    ath9k_queue_reset().
    
    Further debugging showed that the restart was caused by the ath79
    watchdog. With disabled watchdog we could observe that the device was
    constantly going into ath_isr() interrupt handler and was returning
    early after the ATH_OP_HW_RESET flag test, without clearing any
    interrupts. Even though ath9k_queue_reset() calls
    ath9k_hw_kill_interrupts().
    
    With JTAG we could observe the following race condition:
    
    1) ath9k_queue_reset()
       ...
       -> ath9k_hw_kill_interrupts()
       -> set_bit(ATH_OP_HW_RESET, &common->op_flags);
       ...
       <- returns
    
          2) ath9k_tasklet()
             ...
             -> ath9k_hw_resume_interrupts()
             ...
             <- returns
    
                     3) loops around:
                        ...
                        handle_int()
                        -> ath_isr()
                           ...
                           -> if (test_bit(ATH_OP_HW_RESET,
                                           &common->op_flags))
                                return IRQ_HANDLED;
    
                        x) ath_reset_internal():
                           => never reached <=
    
    And in ath_isr() we would typically see the following interrupts /
    interrupt causes:
    
    * status: 0x00111030 or 0x00110030
    * async_cause: 2 (AR_INTR_MAC_IPQ)
    * sync_cause: 0
    
    So the ath9k_tasklet() reenables the ath9k interrupts
    through ath9k_hw_resume_interrupts() which ath9k_queue_reset() had just
    disabled. And ath_isr() then keeps firing because it returns IRQ_HANDLED
    without actually clearing the interrupt.
    
    To fix this IRQ storm also clear/disable the interrupts again when we
    are in reset state.
    
    Cc: Sven Eckelmann <sven@narfation.org>
    Cc: Simon Wunderlich <sw@simonwunderlich.de>
    Cc: Linus Lüssing <linus.luessing@c0d3.blue>
    Fixes: 872b5d814f99 ("ath9k: do not access hardware on IRQs during reset")
    Signed-off-by: Linus Lüssing <ll@simonwunderlich.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210914192515.9273-3-linus.luessing@c0d3.blue
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84d93e04986d415096b7b61f0010abade2ee250e
Author: Anel Orazgaliyeva <anelkz@amazon.de>
Date:   Mon Sep 6 18:34:40 2021 +0000

    cpuidle: Fix kobject memory leaks in error paths
    
    [ Upstream commit e5f5a66c9aa9c331da5527c2e3fd9394e7091e01 ]
    
    Commit c343bf1ba5ef ("cpuidle: Fix three reference count leaks")
    fixes the cleanup of kobjects; however, it removes kfree() calls
    altogether, leading to memory leaks.
    
    Fix those and also defer the initialization of dev->kobj_dev until
    after the error check, so that we do not end up with a dangling
    pointer.
    
    Fixes: c343bf1ba5ef ("cpuidle: Fix three reference count leaks")
    Signed-off-by: Anel Orazgaliyeva <anelkz@amazon.de>
    Suggested-by: Aman Priyadarshi <apeureka@amazon.de>
    [ rjw: Subject edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc0a7af85406d4ffe661ad846c21c5b061e5f1f7
Author: Kees Cook <keescook@chromium.org>
Date:   Tue Aug 3 21:46:09 2021 +0200

    media: si470x: Avoid card name truncation
    
    [ Upstream commit 2908249f3878a591f7918368fdf0b7b0a6c3158c ]
    
    The "card" string only holds 31 characters (and the terminating NUL).
    In order to avoid truncation, use a shorter card description instead of
    the current result, "Silicon Labs Si470x FM Radio Re".
    
    Suggested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 78656acdcf48 ("V4L/DVB (7038): USB radio driver for Silicon Labs Si470x FM Radio Receivers")
    Fixes: cc35bbddfe10 ("V4L/DVB (12416): radio-si470x: add i2c driver for si470x")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1f12efecb6733f2d1838cabadcc7825d8a397bc
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Aug 19 22:21:25 2021 +0200

    media: mtk-vpu: Fix a resource leak in the error handling path of 'mtk_vpu_probe()'
    
    [ Upstream commit 2143ad413c05c7be24c3a92760e367b7f6aaac92 ]
    
    A successful 'clk_prepare()' call should be balanced by a corresponding
    'clk_unprepare()' call in the error handling path of the probe, as already
    done in the remove function.
    
    Update the error handling path accordingly.
    
    Fixes: 3003a180ef6b ("[media] VPU: mediatek: support Mediatek VPU")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Houlong Wei <houlong.wei@mediatek.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 265b66ff74178587aa9cb79ab6d50a148cfcf92e
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Fri Aug 13 16:34:20 2021 +0200

    media: dvb-usb: fix ununit-value in az6027_rc_query
    
    [ Upstream commit afae4ef7d5ad913cab1316137854a36bea6268a5 ]
    
    Syzbot reported ununit-value bug in az6027_rc_query(). The problem was
    in missing state pointer initialization. Since this function does nothing
    we can simply initialize state to REMOTE_NO_KEY_PRESSED.
    
    Reported-and-tested-by: syzbot+2cd8c5db4a85f0a04142@syzkaller.appspotmail.com
    
    Fixes: 76f9a820c867 ("V4L/DVB: AZ6027: Initial import of the driver")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit abd8bb72b6055bcafcc5fdbc2c64e4d02dad727b
Author: Waiman Long <longman@redhat.com>
Date:   Sat Sep 18 18:53:08 2021 -0400

    cgroup: Make rebind_subsystems() disable v2 controllers all at once
    
    [ Upstream commit 7ee285395b211cad474b2b989db52666e0430daf ]
    
    It was found that the following warning was displayed when remounting
    controllers from cgroup v2 to v1:
    
    [ 8042.997778] WARNING: CPU: 88 PID: 80682 at kernel/cgroup/cgroup.c:3130 cgroup_apply_control_disable+0x158/0x190
       :
    [ 8043.091109] RIP: 0010:cgroup_apply_control_disable+0x158/0x190
    [ 8043.096946] Code: ff f6 45 54 01 74 39 48 8d 7d 10 48 c7 c6 e0 46 5a a4 e8 7b 67 33 00 e9 41 ff ff ff 49 8b 84 24 e8 01 00 00 0f b7 40 08 eb 95 <0f> 0b e9 5f ff ff ff 48 83 c4 08 5b 5d 41 5c 41 5d 41 5e 41 5f c3
    [ 8043.115692] RSP: 0018:ffffba8a47c23d28 EFLAGS: 00010202
    [ 8043.120916] RAX: 0000000000000036 RBX: ffffffffa624ce40 RCX: 000000000000181a
    [ 8043.128047] RDX: ffffffffa63c43e0 RSI: ffffffffa63c43e0 RDI: ffff9d7284ee1000
    [ 8043.135180] RBP: ffff9d72874c5800 R08: ffffffffa624b090 R09: 0000000000000004
    [ 8043.142314] R10: ffffffffa624b080 R11: 0000000000002000 R12: ffff9d7284ee1000
    [ 8043.149447] R13: ffff9d7284ee1000 R14: ffffffffa624ce70 R15: ffffffffa6269e20
    [ 8043.156576] FS:  00007f7747cff740(0000) GS:ffff9d7a5fc00000(0000) knlGS:0000000000000000
    [ 8043.164663] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8043.170409] CR2: 00007f7747e96680 CR3: 0000000887d60001 CR4: 00000000007706e0
    [ 8043.177539] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 8043.184673] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 8043.191804] PKRU: 55555554
    [ 8043.194517] Call Trace:
    [ 8043.196970]  rebind_subsystems+0x18c/0x470
    [ 8043.201070]  cgroup_setup_root+0x16c/0x2f0
    [ 8043.205177]  cgroup1_root_to_use+0x204/0x2a0
    [ 8043.209456]  cgroup1_get_tree+0x3e/0x120
    [ 8043.213384]  vfs_get_tree+0x22/0xb0
    [ 8043.216883]  do_new_mount+0x176/0x2d0
    [ 8043.220550]  __x64_sys_mount+0x103/0x140
    [ 8043.224474]  do_syscall_64+0x38/0x90
    [ 8043.228063]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    It was caused by the fact that rebind_subsystem() disables
    controllers to be rebound one by one. If more than one disabled
    controllers are originally from the default hierarchy, it means that
    cgroup_apply_control_disable() will be called multiple times for the
    same default hierarchy. A controller may be killed by css_kill() in
    the first round. In the second round, the killed controller may not be
    completely dead yet leading to the warning.
    
    To avoid this problem, we collect all the ssid's of controllers that
    needed to be disabled from the default hierarchy and then disable them
    in one go instead of one by one.
    
    Fixes: 334c3679ec4b ("cgroup: reimplement rebind_subsystems() using cgroup_apply_control() and friends")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15362e6b434b6f43ffdb8915cd1531d72f0f6427
Author: Sven Schnelle <svens@stackframe.org>
Date:   Fri Oct 15 21:49:23 2021 +0200

    parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling
    
    [ Upstream commit 66e29fcda1824f0427966fbee2bd2c85bf362c82 ]
    
    With idle polling, IPIs are not sent when a CPU idle, but queued
    and run later from do_idle(). The default kgdb_call_nmi_hook()
    implementation gets the pointer to struct pt_regs from get_irq_reqs(),
    which doesn't work in that case because it was not called from the
    IPI interrupt handler. Fix it by defining our own kgdb_roundup()
    function which sents an IPI_ENTER_KGDB. When that IPI is received
    on the target CPU kgdb_nmicallback() is called.
    
    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f83d6fe533212754ca70b163d993448f1f0ddc4
Author: Sven Schnelle <svens@stackframe.org>
Date:   Sat Oct 9 20:24:39 2021 +0200

    parisc: fix warning in flush_tlb_all
    
    [ Upstream commit 1030d681319b43869e0d5b568b9d0226652d1a6f ]
    
    I've got the following splat after enabling preemption:
    
    [    3.724721] BUG: using __this_cpu_add() in preemptible [00000000] code: swapper/0/1
    [    3.734630] caller is __this_cpu_preempt_check+0x38/0x50
    [    3.740635] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.15.0-rc4-64bit+ #324
    [    3.744605] Hardware name: 9000/785/C8000
    [    3.744605] Backtrace:
    [    3.744605]  [<00000000401d9d58>] show_stack+0x74/0xb0
    [    3.744605]  [<0000000040c27bd4>] dump_stack_lvl+0x10c/0x188
    [    3.744605]  [<0000000040c27c84>] dump_stack+0x34/0x48
    [    3.744605]  [<0000000040c33438>] check_preemption_disabled+0x178/0x1b0
    [    3.744605]  [<0000000040c334f8>] __this_cpu_preempt_check+0x38/0x50
    [    3.744605]  [<00000000401d632c>] flush_tlb_all+0x58/0x2e0
    [    3.744605]  [<00000000401075c0>] 0x401075c0
    [    3.744605]  [<000000004010b8fc>] 0x4010b8fc
    [    3.744605]  [<00000000401080fc>] 0x401080fc
    [    3.744605]  [<00000000401d5224>] do_one_initcall+0x128/0x378
    [    3.744605]  [<0000000040102de8>] 0x40102de8
    [    3.744605]  [<0000000040c33864>] kernel_init+0x60/0x3a8
    [    3.744605]  [<00000000401d1020>] ret_from_kernel_thread+0x20/0x28
    [    3.744605]
    
    Fix this by moving the __inc_irq_stat() into the locked section.
    
    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4cf3ef906f20c5f4df6a30bd96d3a73d9137151d
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 18 15:34:13 2021 +0800

    spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in bcm_qspi_probe()
    
    [ Upstream commit ca9b8f56ec089d3a436050afefd17b7237301f47 ]
    
    Fix the missing clk_disable_unprepare() before return
    from bcm_qspi_probe() in the error handling case.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211018073413.2029081-1-yangyingliang@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1d2acf895cee85e1589ecc730c6e59e4122f4b2
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:30:06 2021 +0100

    ARM: 9136/1: ARMv7-M uses BE-8, not BE-32
    
    [ Upstream commit 345dac33f58894a56d17b92a41be10e16585ceff ]
    
    When configuring the kernel for big-endian, we set either BE-8 or BE-32
    based on the CPU architecture level. Until linux-4.4, we did not have
    any ARMv7-M platform allowing big-endian builds, but now i.MX/Vybrid
    is in that category, adn we get a build error because of this:
    
    arch/arm/kernel/module-plts.c: In function 'get_module_plt':
    arch/arm/kernel/module-plts.c:60:46: error: implicit declaration of function '__opcode_to_mem_thumb32' [-Werror=implicit-function-declaration]
    
    This comes down to picking the wrong default, ARMv7-M uses BE8
    like ARMv7-A does. Changing the default gets the kernel to compile
    and presumably works.
    
    https://lore.kernel.org/all/1455804123-2526139-2-git-send-email-arnd@arndb.de/
    
    Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 538c974c61e242ddf93202e29ba0c9be3c63e2ad
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Thu Oct 21 09:55:17 2021 +0900

    ARM: clang: Do not rely on lr register for stacktrace
    
    [ Upstream commit b3ea5d56f212ad81328c82454829a736197ebccc ]
    
    Currently the stacktrace on clang compiled arm kernel uses the 'lr'
    register to find the first frame address from pt_regs. However, that
    is wrong after calling another function, because the 'lr' register
    is used by 'bl' instruction and never be recovered.
    
    As same as gcc arm kernel, directly use the frame pointer (r11) of
    the pt_regs to find the first frame address.
    
    Note that this fixes kretprobe stacktrace issue only with
    CONFIG_UNWINDER_FRAME_POINTER=y. For the CONFIG_UNWINDER_ARM,
    we need another fix.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e44e73d095239bfc035df33a89f768f2dd4ba58
Author: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date:   Tue Oct 19 20:54:31 2021 +0900

    smackfs: use __GFP_NOFAIL for smk_cipso_doi()
    
    [ Upstream commit f91488ee15bd3cac467e2d6a361fc2d34d1052ae ]
    
    syzbot is reporting kernel panic at smk_cipso_doi() due to memory
    allocation fault injection [1]. The reason for need to use panic() was
    not explained. But since no fix was proposed for 18 months, for now
    let's use __GFP_NOFAIL for utilizing syzbot resource on other bugs.
    
    Link: https://syzkaller.appspot.com/bug?extid=89731ccb6fec15ce1c22 [1]
    Reported-by: syzbot <syzbot+89731ccb6fec15ce1c22@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b430a4961081d46a5494ccf775ab6a37f1e64f37
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Sun Oct 17 11:43:40 2021 +0300

    iwlwifi: mvm: disable RX-diversity in powersave
    
    [ Upstream commit e5322b9ab5f63536c41301150b7ce64605ce52cc ]
    
    Just like we have default SMPS mode as dynamic in powersave,
    we should not enable RX-diversity in powersave, to reduce
    power consumption when connected to a non-MIMO AP.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20211017113927.fc896bc5cdaa.I1d11da71b8a5cbe921a37058d5f578f1b14a2023@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28502eb0ea28f36fa2f0c74c8ca145c2c55f0519
Author: Ye Bin <yebin10@huawei.com>
Date:   Wed Oct 13 20:19:14 2021 +0800

    PM: hibernate: Get block device exclusively in swsusp_check()
    
    [ Upstream commit 39fbef4b0f77f9c89c8f014749ca533643a37c9f ]
    
    The following kernel crash can be triggered:
    
    [   89.266592] ------------[ cut here ]------------
    [   89.267427] kernel BUG at fs/buffer.c:3020!
    [   89.268264] invalid opcode: 0000 [#1] SMP KASAN PTI
    [   89.269116] CPU: 7 PID: 1750 Comm: kmmpd-loop0 Not tainted 5.10.0-862.14.0.6.x86_64-08610-gc932cda3cef4-dirty #20
    [   89.273169] RIP: 0010:submit_bh_wbc.isra.0+0x538/0x6d0
    [   89.277157] RSP: 0018:ffff888105ddfd08 EFLAGS: 00010246
    [   89.278093] RAX: 0000000000000005 RBX: ffff888124231498 RCX: ffffffffb2772612
    [   89.279332] RDX: 1ffff11024846293 RSI: 0000000000000008 RDI: ffff888124231498
    [   89.280591] RBP: ffff8881248cc000 R08: 0000000000000001 R09: ffffed1024846294
    [   89.281851] R10: ffff88812423149f R11: ffffed1024846293 R12: 0000000000003800
    [   89.283095] R13: 0000000000000001 R14: 0000000000000000 R15: ffff8881161f7000
    [   89.284342] FS:  0000000000000000(0000) GS:ffff88839b5c0000(0000) knlGS:0000000000000000
    [   89.285711] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   89.286701] CR2: 00007f166ebc01a0 CR3: 0000000435c0e000 CR4: 00000000000006e0
    [   89.287919] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   89.289138] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   89.290368] Call Trace:
    [   89.290842]  write_mmp_block+0x2ca/0x510
    [   89.292218]  kmmpd+0x433/0x9a0
    [   89.294902]  kthread+0x2dd/0x3e0
    [   89.296268]  ret_from_fork+0x22/0x30
    [   89.296906] Modules linked in:
    
    by running the following commands:
    
     1. mkfs.ext4 -O mmp  /dev/sda -b 1024
     2. mount /dev/sda /home/test
     3. echo "/dev/sda" > /sys/power/resume
    
    That happens because swsusp_check() calls set_blocksize() on the
    target partition which confuses the file system:
    
           Thread1                       Thread2
    mount /dev/sda /home/test
    get s_mmp_bh  --> has mapped flag
    start kmmpd thread
                                    echo "/dev/sda" > /sys/power/resume
                                      resume_store
                                        software_resume
                                          swsusp_check
                                            set_blocksize
                                              truncate_inode_pages_range
                                                truncate_cleanup_page
                                                  block_invalidatepage
                                                    discard_buffer --> clean mapped flag
    write_mmp_block
      submit_bh
        submit_bh_wbc
          BUG_ON(!buffer_mapped(bh))
    
    To address this issue, modify swsusp_check() to open the target block
    device with exclusive access.
    
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a277907ffdc2e114e6130891179e2b3abee2620
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Sat Oct 16 04:02:59 2021 +0000

    mwl8k: Fix use-after-free in mwl8k_fw_state_machine()
    
    [ Upstream commit 257051a235c17e33782b6e24a4b17f2d7915aaec ]
    
    When the driver fails to request the firmware, it calls its error
    handler. In the error handler, the driver detaches device from driver
    first before releasing the firmware, which can cause a use-after-free bug.
    
    Fix this by releasing firmware first.
    
    The following log reveals it:
    
    [    9.007301 ] BUG: KASAN: use-after-free in mwl8k_fw_state_machine+0x320/0xba0
    [    9.010143 ] Workqueue: events request_firmware_work_func
    [    9.010830 ] Call Trace:
    [    9.010830 ]  dump_stack_lvl+0xa8/0xd1
    [    9.010830 ]  print_address_description+0x87/0x3b0
    [    9.010830 ]  kasan_report+0x172/0x1c0
    [    9.010830 ]  ? mutex_unlock+0xd/0x10
    [    9.010830 ]  ? mwl8k_fw_state_machine+0x320/0xba0
    [    9.010830 ]  ? mwl8k_fw_state_machine+0x320/0xba0
    [    9.010830 ]  __asan_report_load8_noabort+0x14/0x20
    [    9.010830 ]  mwl8k_fw_state_machine+0x320/0xba0
    [    9.010830 ]  ? mwl8k_load_firmware+0x5f0/0x5f0
    [    9.010830 ]  request_firmware_work_func+0x172/0x250
    [    9.010830 ]  ? read_lock_is_recursive+0x20/0x20
    [    9.010830 ]  ? process_one_work+0x7a1/0x1100
    [    9.010830 ]  ? request_firmware_nowait+0x460/0x460
    [    9.010830 ]  ? __this_cpu_preempt_check+0x13/0x20
    [    9.010830 ]  process_one_work+0x9bb/0x1100
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/1634356979-6211-1-git-send-email-zheyuma97@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a23957747d7ce772b2cc1535cb366664ae242580
Author: Kalesh Singh <kaleshsingh@google.com>
Date:   Wed Oct 13 21:52:17 2021 -0700

    tracing/cfi: Fix cmp_entries_* functions signature mismatch
    
    [ Upstream commit 7ce1bb83a14019f8c396d57ec704d19478747716 ]
    
    If CONFIG_CFI_CLANG=y, attempting to read an event histogram will cause
    the kernel to panic due to failed CFI check.
    
        1. echo 'hist:keys=common_pid' >> events/sched/sched_switch/trigger
        2. cat events/sched/sched_switch/hist
        3. kernel panics on attempting to read hist
    
    This happens because the sort() function expects a generic
    int (*)(const void *, const void *) pointer for the compare function.
    To prevent this CFI failure, change tracing map cmp_entries_* function
    signatures to match this.
    
    Also, fix the build error reported by the kernel test robot [1].
    
    [1] https://lore.kernel.org/r/202110141140.zzi4dRh4-lkp@intel.com/
    
    Link: https://lkml.kernel.org/r/20211014045217.3265162-1-kaleshsingh@google.com
    
    Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad78ed60a7f13b291e6e2059164f637ab3a44435
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   Mon Oct 11 05:31:40 2021 +0800

    lib/xz: Validate the value before assigning it to an enum variable
    
    [ Upstream commit 4f8d7abaa413c34da9d751289849dbfb7c977d05 ]
    
    This might matter, for example, if the underlying type of enum xz_check
    was a signed char. In such a case the validation wouldn't have caught an
    unsupported header. I don't know if this problem can occur in the kernel
    on any arch but it's still good to fix it because some people might copy
    the XZ code to their own projects from Linux instead of the upstream
    XZ Embedded repository.
    
    This change may increase the code size by a few bytes. An alternative
    would have been to use an unsigned int instead of enum xz_check but
    using an enumeration looks cleaner.
    
    Link: https://lore.kernel.org/r/20211010213145.17462-3-xiang@kernel.org
    Signed-off-by: Lasse Collin <lasse.collin@tukaani.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9cea212f2ceec5ae4ec83aa01b0a1caf05ea5506
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   Mon Oct 11 05:31:39 2021 +0800

    lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
    
    [ Upstream commit 83d3c4f22a36d005b55f44628f46cc0d319a75e8 ]
    
    With valid files, the safety margin described in lib/decompress_unxz.c
    ensures that these buffers cannot overlap. But if the uncompressed size
    of the input is larger than the caller thought, which is possible when
    the input file is invalid/corrupt, the buffers can overlap. Obviously
    the result will then be garbage (and usually the decoder will return
    an error too) but no other harm will happen when such an over-run occurs.
    
    This change only affects uncompressed LZMA2 chunks and so this
    should have no effect on performance.
    
    Link: https://lore.kernel.org/r/20211010213145.17462-2-xiang@kernel.org
    Signed-off-by: Lasse Collin <lasse.collin@tukaani.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c7d2db717d68e5a77d4ec0e0e9400f4c010b151
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Sat Oct 16 11:26:21 2021 +0000

    memstick: r592: Fix a UAF bug when removing the driver
    
    [ Upstream commit 738216c1953e802aa9f930c5d15b8f9092c847ff ]
    
    In r592_remove(), the driver will free dma after freeing the host, which
    may cause a UAF bug.
    
    The following log reveals it:
    
    [   45.361796 ] BUG: KASAN: use-after-free in r592_remove+0x269/0x350 [r592]
    [   45.364286 ] Call Trace:
    [   45.364472 ]  dump_stack_lvl+0xa8/0xd1
    [   45.364751 ]  print_address_description+0x87/0x3b0
    [   45.365137 ]  kasan_report+0x172/0x1c0
    [   45.365415 ]  ? r592_remove+0x269/0x350 [r592]
    [   45.365834 ]  ? r592_remove+0x269/0x350 [r592]
    [   45.366168 ]  __asan_report_load8_noabort+0x14/0x20
    [   45.366531 ]  r592_remove+0x269/0x350 [r592]
    [   45.378785 ]
    [   45.378903 ] Allocated by task 4674:
    [   45.379162 ]  ____kasan_kmalloc+0xb5/0xe0
    [   45.379455 ]  __kasan_kmalloc+0x9/0x10
    [   45.379730 ]  __kmalloc+0x150/0x280
    [   45.379984 ]  memstick_alloc_host+0x2a/0x190
    [   45.380664 ]
    [   45.380781 ] Freed by task 5509:
    [   45.381014 ]  kasan_set_track+0x3d/0x70
    [   45.381293 ]  kasan_set_free_info+0x23/0x40
    [   45.381635 ]  ____kasan_slab_free+0x10b/0x140
    [   45.381950 ]  __kasan_slab_free+0x11/0x20
    [   45.382241 ]  slab_free_freelist_hook+0x81/0x150
    [   45.382575 ]  kfree+0x13e/0x290
    [   45.382805 ]  memstick_free+0x1c/0x20
    [   45.383070 ]  device_release+0x9c/0x1d0
    [   45.383349 ]  kobject_put+0x2ef/0x4c0
    [   45.383616 ]  put_device+0x1f/0x30
    [   45.383865 ]  memstick_free_host+0x24/0x30
    [   45.384162 ]  r592_remove+0x242/0x350 [r592]
    [   45.384473 ]  pci_device_remove+0xa9/0x250
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Link: https://lore.kernel.org/r/1634383581-11055-1-git-send-email-zheyuma97@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1d2c265c64f5389d2dae764e7731ef5b576ac45
Author: André Almeida <andrealmeid@collabora.com>
Date:   Fri Oct 8 00:05:29 2021 -0300

    ACPI: battery: Accept charges over the design capacity as full
    
    [ Upstream commit 2835f327bd1240508db2c89fe94a056faa53c49a ]
    
    Some buggy firmware and/or brand new batteries can support a charge that's
    slightly over the reported design capacity. In such cases, the kernel will
    report to userspace that the charging state of the battery is "Unknown",
    when in reality the battery charge is "Full", at least from the design
    capacity point of view. Make the fallback condition accepts capacities
    over the designed capacity so userspace knows that is full.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4bc8426a1bd91e9e48b524cc732a0de2245c6fa1
Author: Tuo Li <islituo@gmail.com>
Date:   Thu Aug 5 08:38:53 2021 -0700

    ath: dfs_pattern_detector: Fix possible null-pointer dereference in channel_detector_create()
    
    [ Upstream commit 4b6012a7830b813799a7faf40daa02a837e0fd5b ]
    
    kzalloc() is used to allocate memory for cd->detectors, and if it fails,
    channel_detector_exit() behind the label fail will be called:
      channel_detector_exit(dpd, cd);
    
    In channel_detector_exit(), cd->detectors is dereferenced through:
      struct pri_detector *de = cd->detectors[i];
    
    To fix this possible null-pointer dereference, check cd->detectors before
    the for loop to dereference cd->detectors.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Tuo Li <islituo@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210805153854.154066-1-islituo@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c5e06386a8bf7b825cadef5325987a870eb2cd0
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Aug 18 11:24:50 2021 -0400

    tracefs: Have tracefs directories not set OTH permission bits by default
    
    [ Upstream commit 49d67e445742bbcb03106b735b2ab39f6e5c56bc ]
    
    The tracefs file system is by default mounted such that only root user can
    access it. But there are legitimate reasons to create a group and allow
    those added to the group to have access to tracing. By changing the
    permissions of the tracefs mount point to allow access, it will allow
    group access to the tracefs directory.
    
    There should not be any real reason to allow all access to the tracefs
    directory as it contains sensitive information. Have the default
    permission of directories being created not have any OTH (other) bits set,
    such that an admin that wants to give permission to a group has to first
    disable all OTH bits in the file system.
    
    Link: https://lkml.kernel.org/r/20210818153038.664127804@goodmis.org
    
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e162fc16b2cbbd23bf8eb34c39577c325fff1833
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Mon Dec 7 07:16:06 2020 +0100

    media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte()
    
    [ Upstream commit 899a61a3305d49e8a712e9ab20d0db94bde5929f ]
    
    In dibusb_read_eeprom_byte(), if dibusb_i2c_msg() fails, val gets
    assigned an value that's not properly initialized.
    Using kzalloc() in place of kmalloc() for the buffer fixes this issue,
    as the val can now be set to 0 in the event dibusb_i2c_msg() fails.
    
    Reported-by: syzbot+e27b4fd589762b0b9329@syzkaller.appspotmail.com
    Tested-by: syzbot+e27b4fd589762b0b9329@syzkaller.appspotmail.com
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 95b622cdfeff5b6eb8ad25851357873051689842
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Sep 29 18:31:25 2021 +0200

    ACPICA: Avoid evaluating methods too early during system resume
    
    [ Upstream commit d3c4b6f64ad356c0d9ddbcf73fa471e6a841cc5c ]
    
    ACPICA commit 0762982923f95eb652cf7ded27356b247c9774de
    
    During wakeup from system-wide sleep states, acpi_get_sleep_type_data()
    is called and it tries to get memory from the slab allocator in order
    to evaluate a control method, but if KFENCE is enabled in the kernel,
    the memory allocation attempt causes an IRQ work to be queued and a
    self-IPI to be sent to the CPU running the code which requires the
    memory controller to be ready, so if that happens too early in the
    wakeup path, it doesn't work.
    
    Prevent that from taking place by calling acpi_get_sleep_type_data()
    for S0 upfront, when preparing to enter a given sleep state, and
    saving the data obtained by it for later use during system wakeup.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214271
    Reported-by: Reik Keutterling <spielkind@gmail.com>
    Tested-by: Reik Keutterling <spielkind@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5888710ecc4a848cf1586daa00142de34c968e8
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Sep 26 10:12:24 2021 -0700

    ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK
    
    [ Upstream commit c15b5fc054c3d6c97e953617605235c5cb8ce979 ]
    
    When CONFIG_PRINTK is not set, the CMPXCHG_BUGCHECK() macro calls
    _printk(), but _printk() is a static inline function, not available
    as an extern.
    Since the purpose of the macro is to print the BUGCHECK info,
    make this config option depend on PRINTK.
    
    Fixes multiple occurrences of this build error:
    
    ../include/linux/printk.h:208:5: error: static declaration of '_printk' follows non-static declaration
      208 | int _printk(const char *s, ...)
          |     ^~~~~~~
    In file included from ../arch/ia64/include/asm/cmpxchg.h:5,
    ../arch/ia64/include/uapi/asm/cmpxchg.h:146:28: note: previous declaration of '_printk' with type 'int(const char *, ...)'
      146 |                 extern int _printk(const char *fmt, ...);
    
    Cc: linux-ia64@vger.kernel.org
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Chris Down <chris@chrisdown.name>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 121221d65aea34e1ffbc643dc564dc2f82f8bb9d
Author: Rajat Asthana <rajatasthana4@gmail.com>
Date:   Wed Aug 18 22:31:10 2021 +0200

    media: mceusb: return without resubmitting URB in case of -EPROTO error.
    
    [ Upstream commit 476db72e521983ecb847e4013b263072bb1110fc ]
    
    Syzkaller reported a warning called "rcu detected stall in dummy_timer".
    
    The error seems to be an error in mceusb_dev_recv(). In the case of
    -EPROTO error, the routine immediately resubmits the URB. Instead it
    should return without resubmitting URB.
    
    Reported-by: syzbot+4d3749e9612c2cfab956@syzkaller.appspotmail.com
    Signed-off-by: Rajat Asthana <rajatasthana4@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a00cc9604871e28c10d1970113fd1c1cba34c65
Author: Tuo Li <islituo@gmail.com>
Date:   Thu Aug 5 09:55:35 2021 +0200

    media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe()
    
    [ Upstream commit 8515965e5e33f4feb56134348c95953f3eadfb26 ]
    
    The variable pdev is assigned to dev->plat_dev, and dev->plat_dev is
    checked in:
      if (!dev->plat_dev)
    
    This indicates both dev->plat_dev and pdev can be NULL. If so, the
    function dev_err() is called to print error information.
      dev_err(&pdev->dev, "No platform data specified\n");
    
    However, &pdev->dev is an illegal address, and it is dereferenced in
    dev_err().
    
    To fix this possible null-pointer dereference, replace dev_err() with
    mfc_err().
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Tuo Li <islituo@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa1a067602fd0e1868664dd097a33b5dee538dd5
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Fri Jun 18 14:29:08 2021 +0200

    media: uvcvideo: Set capability in s_param
    
    [ Upstream commit 97a2777a96070afb7da5d587834086c0b586c8cc ]
    
    Fixes v4l2-compliance:
    
    Format ioctls (Input 0):
                    warn: v4l2-test-formats.cpp(1339): S_PARM is supported but doesn't report V4L2_CAP_TIMEPERFRAME
                    fail: v4l2-test-formats.cpp(1241): node->has_frmintervals && !cap->capability
    
    Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0adf706ba7d36f970d2b547a823f75351d521fbb
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Wed Jun 23 08:01:05 2021 +0200

    media: netup_unidvb: handle interrupt properly according to the firmware
    
    [ Upstream commit dbb4cfea6efe979ed153bd59a6a527a90d3d0ab3 ]
    
    The interrupt handling should be related to the firmware version. If
    the driver matches an old firmware, then the driver should not handle
    interrupt such as i2c or dma, otherwise it will cause some errors.
    
    This log reveals it:
    
    [   27.708641] INFO: trying to register non-static key.
    [   27.710851] The code is fine but needs lockdep annotation, or maybe
    [   27.712010] you didn't initialize this object before use?
    [   27.712396] turning off the locking correctness validator.
    [   27.712787] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 5.12.4-g70e7f0549188-dirty #169
    [   27.713349] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [   27.714149] Call Trace:
    [   27.714329]  <IRQ>
    [   27.714480]  dump_stack+0xba/0xf5
    [   27.714737]  register_lock_class+0x873/0x8f0
    [   27.715052]  ? __lock_acquire+0x323/0x1930
    [   27.715353]  __lock_acquire+0x75/0x1930
    [   27.715636]  lock_acquire+0x1dd/0x3e0
    [   27.715905]  ? netup_i2c_interrupt+0x19/0x310
    [   27.716226]  _raw_spin_lock_irqsave+0x4b/0x60
    [   27.716544]  ? netup_i2c_interrupt+0x19/0x310
    [   27.716863]  netup_i2c_interrupt+0x19/0x310
    [   27.717178]  netup_unidvb_isr+0xd3/0x160
    [   27.717467]  __handle_irq_event_percpu+0x53/0x3e0
    [   27.717808]  handle_irq_event_percpu+0x35/0x90
    [   27.718129]  handle_irq_event+0x39/0x60
    [   27.718409]  handle_fasteoi_irq+0xc2/0x1d0
    [   27.718707]  __common_interrupt+0x7f/0x150
    [   27.719008]  common_interrupt+0xb4/0xd0
    [   27.719289]  </IRQ>
    [   27.719446]  asm_common_interrupt+0x1e/0x40
    [   27.719747] RIP: 0010:native_safe_halt+0x17/0x20
    [   27.720084] Code: 07 0f 00 2d 8b ee 4c 00 f4 5d c3 0f 1f 84 00 00 00 00 00 8b 05 72 95 17 02 55 48 89 e5 85 c0 7e 07 0f 00 2d 6b ee 4c 00 fb f4 <5d> c3 cc cc cc cc cc cc cc 55 48 89 e5 e8 67 53 ff ff 8b 0d 29 f6
    [   27.721386] RSP: 0018:ffffc9000008fe90 EFLAGS: 00000246
    [   27.721758] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000000
    [   27.722262] RDX: 0000000000000000 RSI: ffffffff85f7c054 RDI: ffffffff85ded4e6
    [   27.722770] RBP: ffffc9000008fe90 R08: 0000000000000001 R09: 0000000000000001
    [   27.723277] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff86a75408
    [   27.723781] R13: 0000000000000000 R14: 0000000000000000 R15: ffff888100260000
    [   27.724289]  default_idle+0x9/0x10
    [   27.724537]  arch_cpu_idle+0xa/0x10
    [   27.724791]  default_idle_call+0x6e/0x250
    [   27.725082]  do_idle+0x1f0/0x2d0
    [   27.725326]  cpu_startup_entry+0x18/0x20
    [   27.725613]  start_secondary+0x11f/0x160
    [   27.725902]  secondary_startup_64_no_verify+0xb0/0xbb
    [   27.726272] BUG: kernel NULL pointer dereference, address: 0000000000000002
    [   27.726768] #PF: supervisor read access in kernel mode
    [   27.727138] #PF: error_code(0x0000) - not-present page
    [   27.727507] PGD 8000000118688067 P4D 8000000118688067 PUD 10feab067 PMD 0
    [   27.727999] Oops: 0000 [#1] PREEMPT SMP PTI
    [   27.728302] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 5.12.4-g70e7f0549188-dirty #169
    [   27.728861] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [   27.729660] RIP: 0010:netup_i2c_interrupt+0x23/0x310
    [   27.730019] Code: 0f 1f 80 00 00 00 00 55 48 89 e5 41 55 41 54 53 48 89 fb e8 af 6e 95 fd 48 89 df e8 e7 9f 1c 01 49 89 c5 48 8b 83 48 08 00 00 <66> 44 8b 60 02 44 89 e0 48 8b 93 48 08 00 00 83 e0 f8 66 89 42 02
    [   27.731339] RSP: 0018:ffffc90000118e90 EFLAGS: 00010046
    [   27.731716] RAX: 0000000000000000 RBX: ffff88810803c4d8 RCX: 0000000000000000
    [   27.732223] RDX: 0000000000000001 RSI: ffffffff85d37b94 RDI: ffff88810803c4d8
    [   27.732727] RBP: ffffc90000118ea8 R08: 0000000000000000 R09: 0000000000000001
    [   27.733239] R10: ffff88810803c4f0 R11: 61646e6f63657320 R12: 0000000000000000
    [   27.733745] R13: 0000000000000046 R14: ffff888101041000 R15: ffff8881081b2400
    [   27.734251] FS:  0000000000000000(0000) GS:ffff88817bc80000(0000) knlGS:0000000000000000
    [   27.734821] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   27.735228] CR2: 0000000000000002 CR3: 0000000108194000 CR4: 00000000000006e0
    [   27.735735] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   27.736241] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   27.736744] Call Trace:
    [   27.736924]  <IRQ>
    [   27.737074]  netup_unidvb_isr+0xd3/0x160
    [   27.737363]  __handle_irq_event_percpu+0x53/0x3e0
    [   27.737706]  handle_irq_event_percpu+0x35/0x90
    [   27.738028]  handle_irq_event+0x39/0x60
    [   27.738306]  handle_fasteoi_irq+0xc2/0x1d0
    [   27.738602]  __common_interrupt+0x7f/0x150
    [   27.738899]  common_interrupt+0xb4/0xd0
    [   27.739176]  </IRQ>
    [   27.739331]  asm_common_interrupt+0x1e/0x40
    [   27.739633] RIP: 0010:native_safe_halt+0x17/0x20
    [   27.739967] Code: 07 0f 00 2d 8b ee 4c 00 f4 5d c3 0f 1f 84 00 00 00 00 00 8b 05 72 95 17 02 55 48 89 e5 85 c0 7e 07 0f 00 2d 6b ee 4c 00 fb f4 <5d> c3 cc cc cc cc cc cc cc 55 48 89 e5 e8 67 53 ff ff 8b 0d 29 f6
    [   27.741275] RSP: 0018:ffffc9000008fe90 EFLAGS: 00000246
    [   27.741647] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000000
    [   27.742148] RDX: 0000000000000000 RSI: ffffffff85f7c054 RDI: ffffffff85ded4e6
    [   27.742652] RBP: ffffc9000008fe90 R08: 0000000000000001 R09: 0000000000000001
    [   27.743154] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff86a75408
    [   27.743652] R13: 0000000000000000 R14: 0000000000000000 R15: ffff888100260000
    [   27.744157]  default_idle+0x9/0x10
    [   27.744405]  arch_cpu_idle+0xa/0x10
    [   27.744658]  default_idle_call+0x6e/0x250
    [   27.744948]  do_idle+0x1f0/0x2d0
    [   27.745190]  cpu_startup_entry+0x18/0x20
    [   27.745475]  start_secondary+0x11f/0x160
    [   27.745761]  secondary_startup_64_no_verify+0xb0/0xbb
    [   27.746123] Modules linked in:
    [   27.746348] Dumping ftrace buffer:
    [   27.746596]    (ftrace buffer empty)
    [   27.746852] CR2: 0000000000000002
    [   27.747094] ---[ end trace ebafd46f83ab946d ]---
    [   27.747424] RIP: 0010:netup_i2c_interrupt+0x23/0x310
    [   27.747778] Code: 0f 1f 80 00 00 00 00 55 48 89 e5 41 55 41 54 53 48 89 fb e8 af 6e 95 fd 48 89 df e8 e7 9f 1c 01 49 89 c5 48 8b 83 48 08 00 00 <66> 44 8b 60 02 44 89 e0 48 8b 93 48 08 00 00 83 e0 f8 66 89 42 02
    [   27.749082] RSP: 0018:ffffc90000118e90 EFLAGS: 00010046
    [   27.749461] RAX: 0000000000000000 RBX: ffff88810803c4d8 RCX: 0000000000000000
    [   27.749966] RDX: 0000000000000001 RSI: ffffffff85d37b94 RDI: ffff88810803c4d8
    [   27.750471] RBP: ffffc90000118ea8 R08: 0000000000000000 R09: 0000000000000001
    [   27.750976] R10: ffff88810803c4f0 R11: 61646e6f63657320 R12: 0000000000000000
    [   27.751480] R13: 0000000000000046 R14: ffff888101041000 R15: ffff8881081b2400
    [   27.751986] FS:  0000000000000000(0000) GS:ffff88817bc80000(0000) knlGS:0000000000000000
    [   27.752560] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   27.752970] CR2: 0000000000000002 CR3: 0000000108194000 CR4: 00000000000006e0
    [   27.753481] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   27.753984] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   27.754487] Kernel panic - not syncing: Fatal exception in interrupt
    [   27.755033] Dumping ftrace buffer:
    [   27.755279]    (ftrace buffer empty)
    [   27.755534] Kernel Offset: disabled
    [   27.755785] Rebooting in 1 seconds..
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05282c94ce8511d48fd2539ef1ec2342b61db5c8
Author: Dirk Bender <d.bender@phytec.de>
Date:   Mon Jul 26 09:35:15 2021 +0200

    media: mt9p031: Fix corrupted frame after restarting stream
    
    [ Upstream commit 0961ba6dd211a4a52d1dd4c2d59be60ac2dc08c7 ]
    
    To prevent corrupted frames after starting and stopping the sensor its
    datasheet specifies a specific pause sequence to follow:
    
    Stopping:
            Set Pause_Restart Bit -> Set Restart Bit -> Set Chip_Enable Off
    
    Restarting:
            Set Chip_Enable On -> Clear Pause_Restart Bit
    
    The Restart Bit is cleared automatically and must not be cleared
    manually as this would cause undefined behavior.
    
    Signed-off-by: Dirk Bender <d.bender@phytec.de>
    Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3436be819212fbeaa8946a5a0df3f1be8666fd6
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Sep 15 16:19:46 2021 +0200

    x86: Increase exception stack sizes
    
    [ Upstream commit 7fae4c24a2b84a66c7be399727aca11e7a888462 ]
    
    It turns out that a single page of stack is trivial to overflow with
    all the tracing gunk enabled. Raise the exception stacks to 2 pages,
    which is still half the interrupt stacks, which are at 4 pages.
    
    Reported-by: Michael Wang <yun.wang@linux.alibaba.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/YUIO9Ye98S5Eb68w@hirez.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e175e3272e256f30773a9ac99916782f14fe130
Author: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Date:   Sat Aug 28 23:41:40 2021 -0700

    smackfs: Fix use-after-free in netlbl_catmap_walk()
    
    [ Upstream commit 0817534ff9ea809fac1322c5c8c574be8483ea57 ]
    
    Syzkaller reported use-after-free bug as described in [1]. The bug is
    triggered when smk_set_cipso() tries to free stale category bitmaps
    while there are concurrent reader(s) using the same bitmaps.
    
    Wait for RCU grace period to finish before freeing the category bitmaps
    in smk_set_cipso(). This makes sure that there are no more readers using
    the stale bitmaps and freeing them should be safe.
    
    [1] https://lore.kernel.org/netdev/000000000000a814c505ca657a4e@google.com/
    
    Reported-by: syzbot+3f91de0b813cc3d19a80@syzkaller.appspotmail.com
    Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd339667a364fc1223f1549ac15e385c9e90a293
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jun 24 11:41:10 2021 +0200

    locking/lockdep: Avoid RCU-induced noinstr fail
    
    [ Upstream commit ce0b9c805dd66d5e49fd53ec5415ae398f4c56e6 ]
    
    vmlinux.o: warning: objtool: look_up_lock_class()+0xc7: call to rcu_read_lock_any_held() leaves .noinstr.text section
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210624095148.311980536@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ff07b34ead6fccf5371d394f7c833d6bda5f9a2
Author: Aleksander Jan Bajkowski <olek2@wp.pl>
Date:   Tue Sep 14 23:20:59 2021 +0200

    MIPS: lantiq: dma: reset correct number of channel
    
    [ Upstream commit 5ca9ce2ba4d5884cd94d1a856c675ab1242cd242 ]
    
    Different SoCs have a different number of channels, e.g .:
    * amazon-se has 10 channels,
    * danube+ar9 have 20 channels,
    * vr9 has 28 channels,
    * ar10 has 24 channels.
    
    We can read the ID register and, depending on the reported
    number of channels, reset the appropriate number of channels.
    
    Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac9ab5dfcbd1786ef5d0be549de8577f5ca28a6a
Author: Aleksander Jan Bajkowski <olek2@wp.pl>
Date:   Tue Sep 14 23:20:58 2021 +0200

    MIPS: lantiq: dma: add small delay after reset
    
    [ Upstream commit c12aa581f6d5e80c3c3675ab26a52c2b3b62f76e ]
    
    Reading the DMA registers immediately after the reset causes
    Data Bus Error. Adding a small delay fixes this issue.
    
    Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 783ab950cca8f7bdb234acee1e0d498acd537532
Author: Barnabás Pőcze <pobrn@protonmail.com>
Date:   Sat Sep 4 17:56:26 2021 +0000

    platform/x86: wmi: do not fail if disabling fails
    
    [ Upstream commit 1975718c488a39128f1f515b23ae61a5a214cc3d ]
    
    Previously, `__query_block()` would fail if the
    second WCxx method call failed. However, the
    WQxx method might have succeeded, and potentially
    allocated memory for the result. Instead of
    throwing away the result and potentially
    leaking memory, ignore the result of
    the second WCxx call.
    
    Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
    Link: https://lore.kernel.org/r/20210904175450.156801-25-pobrn@protonmail.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d19ea7da0eeb61be28ec05d8b8bddec3dde71610
Author: Wang ShaoBo <bobo.shaobowang@huawei.com>
Date:   Tue Aug 31 17:35:37 2021 -0700

    Bluetooth: fix use-after-free error in lock_sock_nested()
    
    [ Upstream commit 1bff51ea59a9afb67d2dd78518ab0582a54a472c ]
    
    use-after-free error in lock_sock_nested is reported:
    
    [  179.140137][ T3731] =====================================================
    [  179.142675][ T3731] BUG: KMSAN: use-after-free in lock_sock_nested+0x280/0x2c0
    [  179.145494][ T3731] CPU: 4 PID: 3731 Comm: kworker/4:2 Not tainted 5.12.0-rc6+ #54
    [  179.148432][ T3731] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
    [  179.151806][ T3731] Workqueue: events l2cap_chan_timeout
    [  179.152730][ T3731] Call Trace:
    [  179.153301][ T3731]  dump_stack+0x24c/0x2e0
    [  179.154063][ T3731]  kmsan_report+0xfb/0x1e0
    [  179.154855][ T3731]  __msan_warning+0x5c/0xa0
    [  179.155579][ T3731]  lock_sock_nested+0x280/0x2c0
    [  179.156436][ T3731]  ? kmsan_get_metadata+0x116/0x180
    [  179.157257][ T3731]  l2cap_sock_teardown_cb+0xb8/0x890
    [  179.158154][ T3731]  ? __msan_metadata_ptr_for_load_8+0x10/0x20
    [  179.159141][ T3731]  ? kmsan_get_metadata+0x116/0x180
    [  179.159994][ T3731]  ? kmsan_get_shadow_origin_ptr+0x84/0xb0
    [  179.160959][ T3731]  ? l2cap_sock_recv_cb+0x420/0x420
    [  179.161834][ T3731]  l2cap_chan_del+0x3e1/0x1d50
    [  179.162608][ T3731]  ? kmsan_get_metadata+0x116/0x180
    [  179.163435][ T3731]  ? kmsan_get_shadow_origin_ptr+0x84/0xb0
    [  179.164406][ T3731]  l2cap_chan_close+0xeea/0x1050
    [  179.165189][ T3731]  ? kmsan_internal_unpoison_shadow+0x42/0x70
    [  179.166180][ T3731]  l2cap_chan_timeout+0x1da/0x590
    [  179.167066][ T3731]  ? __msan_metadata_ptr_for_load_8+0x10/0x20
    [  179.168023][ T3731]  ? l2cap_chan_create+0x560/0x560
    [  179.168818][ T3731]  process_one_work+0x121d/0x1ff0
    [  179.169598][ T3731]  worker_thread+0x121b/0x2370
    [  179.170346][ T3731]  kthread+0x4ef/0x610
    [  179.171010][ T3731]  ? process_one_work+0x1ff0/0x1ff0
    [  179.171828][ T3731]  ? kthread_blkcg+0x110/0x110
    [  179.172587][ T3731]  ret_from_fork+0x1f/0x30
    [  179.173348][ T3731]
    [  179.173752][ T3731] Uninit was created at:
    [  179.174409][ T3731]  kmsan_internal_poison_shadow+0x5c/0xf0
    [  179.175373][ T3731]  kmsan_slab_free+0x76/0xc0
    [  179.176060][ T3731]  kfree+0x3a5/0x1180
    [  179.176664][ T3731]  __sk_destruct+0x8af/0xb80
    [  179.177375][ T3731]  __sk_free+0x812/0x8c0
    [  179.178032][ T3731]  sk_free+0x97/0x130
    [  179.178686][ T3731]  l2cap_sock_release+0x3d5/0x4d0
    [  179.179457][ T3731]  sock_close+0x150/0x450
    [  179.180117][ T3731]  __fput+0x6bd/0xf00
    [  179.180787][ T3731]  ____fput+0x37/0x40
    [  179.181481][ T3731]  task_work_run+0x140/0x280
    [  179.182219][ T3731]  do_exit+0xe51/0x3e60
    [  179.182930][ T3731]  do_group_exit+0x20e/0x450
    [  179.183656][ T3731]  get_signal+0x2dfb/0x38f0
    [  179.184344][ T3731]  arch_do_signal_or_restart+0xaa/0xe10
    [  179.185266][ T3731]  exit_to_user_mode_prepare+0x2d2/0x560
    [  179.186136][ T3731]  syscall_exit_to_user_mode+0x35/0x60
    [  179.186984][ T3731]  do_syscall_64+0xc5/0x140
    [  179.187681][ T3731]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [  179.188604][ T3731] =====================================================
    
    In our case, there are two Thread A and B:
    
    Context: Thread A:              Context: Thread B:
    
    l2cap_chan_timeout()            __se_sys_shutdown()
      l2cap_chan_close()              l2cap_sock_shutdown()
        l2cap_chan_del()                l2cap_chan_close()
          l2cap_sock_teardown_cb()        l2cap_sock_teardown_cb()
    
    Once l2cap_sock_teardown_cb() excuted, this sock will be marked as SOCK_ZAPPED,
    and can be treated as killable in l2cap_sock_kill() if sock_orphan() has
    excuted, at this time we close sock through sock_close() which end to call
    l2cap_sock_kill() like Thread C:
    
    Context: Thread C:
    
    sock_close()
      l2cap_sock_release()
        sock_orphan()
        l2cap_sock_kill()  #free sock if refcnt is 1
    
    If C completed, Once A or B reaches l2cap_sock_teardown_cb() again,
    use-after-free happened.
    
    We should set chan->data to NULL if sock is destructed, for telling teardown
    operation is not allowed in l2cap_sock_teardown_cb(), and also we should
    avoid killing an already killed socket in l2cap_sock_close_cb().
    
    Signed-off-by: Wang ShaoBo <bobo.shaobowang@huawei.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9bbe312ebea40c9b586c2b07a0d0948ff418beca
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Aug 28 18:18:18 2021 +0200

    Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
    
    [ Upstream commit 99c23da0eed4fd20cae8243f2b51e10e66aa0951 ]
    
    The sco_send_frame() also takes lock_sock() during memcpy_from_msg()
    call that may be endlessly blocked by a task with userfaultd
    technique, and this will result in a hung task watchdog trigger.
    
    Just like the similar fix for hci_sock_sendmsg() in commit
    92c685dc5de0 ("Bluetooth: reorganize functions..."), this patch moves
    the  memcpy_from_msg() out of lock_sock() for addressing the hang.
    
    This should be the last piece for fixing CVE-2021-3640 after a few
    already queued fixes.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f3a74d0712639d6ecfddbf46aedc6c0226efeb9
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:51:59 2021 +0200

    USB: iowarrior: fix control-message timeouts
    
    commit 79a4479a17b83310deb0b1a2a274fe5be12d2318 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Use the common control-message timeout define for the five-second
    timeout and drop the driver-specific one.
    
    Fixes: 946b960d13c1 ("USB: add driver for iowarrior devices.")
    Cc: stable@vger.kernel.org      # 2.6.21
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211025115159.4954-3-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9890ebccd8b6fc60a00e57a83e533507b4487ae5
Author: Wang Hai <wanghai38@huawei.com>
Date:   Fri Oct 15 16:55:43 2021 +0800

    USB: serial: keyspan: fix memleak on probe errors
    
    commit 910c996335c37552ee30fcb837375b808bb4f33b upstream.
    
    I got memory leak as follows when doing fault injection test:
    
    unreferenced object 0xffff888258228440 (size 64):
      comm "kworker/7:2", pid 2005, jiffies 4294989509 (age 824.540s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8167939c>] slab_post_alloc_hook+0x9c/0x490
        [<ffffffff8167f627>] kmem_cache_alloc_trace+0x1f7/0x470
        [<ffffffffa02ac0e4>] keyspan_port_probe+0xa4/0x5d0 [keyspan]
        [<ffffffffa0294c07>] usb_serial_device_probe+0x97/0x1d0 [usbserial]
        [<ffffffff82b50ca7>] really_probe+0x167/0x460
        [<ffffffff82b51099>] __driver_probe_device+0xf9/0x180
        [<ffffffff82b51173>] driver_probe_device+0x53/0x130
        [<ffffffff82b516f5>] __device_attach_driver+0x105/0x130
        [<ffffffff82b4cfe9>] bus_for_each_drv+0x129/0x190
        [<ffffffff82b50a69>] __device_attach+0x1c9/0x270
        [<ffffffff82b518d0>] device_initial_probe+0x20/0x30
        [<ffffffff82b4f062>] bus_probe_device+0x142/0x160
        [<ffffffff82b4a4e9>] device_add+0x829/0x1300
        [<ffffffffa0295fda>] usb_serial_probe.cold+0xc9b/0x14ac [usbserial]
        [<ffffffffa02266aa>] usb_probe_interface+0x1aa/0x3c0 [usbcore]
        [<ffffffff82b50ca7>] really_probe+0x167/0x460
    
    If keyspan_port_probe() fails to allocate memory for an out_buffer[i] or
    in_buffer[i], the previously allocated memory for out_buffer or
    in_buffer needs to be freed on the error handling path, otherwise a
    memory leak will result.
    
    Fixes: bad41a5bf177 ("USB: keyspan: fix port DMA-buffer allocations")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Link: https://lore.kernel.org/r/20211015085543.1203011-1-wanghai38@huawei.com
    Cc: stable@vger.kernel.org      # 3.12
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbe80531732968c8ac43f1d7d6c69ebabe4f13b0
Author: Pekka Korpinen <pekka.korpinen@iki.fi>
Date:   Wed Sep 29 21:57:55 2021 +0300

    iio: dac: ad5446: Fix ad5622_write() return value
    
    commit 558df982d4ead9cac628153d0d7b60feae05ddc8 upstream.
    
    On success i2c_master_send() returns the number of bytes written. The
    call from iio_write_channel_info(), however, expects the return value to
    be zero on success.
    
    This bug causes incorrect consumption of the sysfs buffer in
    iio_write_channel_info(). When writing more than two characters to
    out_voltage0_raw, the ad5446 write handler is called multiple times
    causing unexpected behavior.
    
    Fixes: 3ec36a2cf0d5 ("iio:ad5446: Add support for I2C based DACs")
    Signed-off-by: Pekka Korpinen <pekka.korpinen@iki.fi>
    Link: https://lore.kernel.org/r/20210929185755.2384-1-pekka.korpinen@iki.fi
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dde8a8c56782ba64299316fa242cd28bcd8b848
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Fri Oct 8 17:38:21 2021 +0800

    quota: correct error number in free_dqentry()
    
    commit d0e36a62bd4c60c09acc40e06ba4831a4d0bc75b upstream.
    
    Fix the error path in free_dqentry(), pass out the error number if the
    block to free is not correct.
    
    Fixes: 1ccd14b9c271 ("quota: Split off quota tree handling into a separate file")
    Link: https://lore.kernel.org/r/20211008093821.1001186-3-yi.zhang@huawei.com
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Cc: stable@kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7dd331a896700728492e02c20a69e53221cd7a4
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Fri Oct 8 17:38:20 2021 +0800

    quota: check block number when reading the block in quota file
    
    commit 9bf3d20331295b1ecb81f4ed9ef358c51699a050 upstream.
    
    The block number in the quota tree on disk should be smaller than the
    v2_disk_dqinfo.dqi_blocks. If the quota file was corrupted, we may be
    allocating an 'allocated' block and that would lead to a loop in a tree,
    which will probably trigger oops later. This patch adds a check for the
    block number in the quota tree to prevent such potential issue.
    
    Link: https://lore.kernel.org/r/20211008093821.1001186-2-yi.zhang@huawei.com
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Cc: stable@kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f2410ffd75073157fa0fa0639060c966fcc4267
Author: Marek Behún <kabel@kernel.org>
Date:   Thu Oct 28 20:56:55 2021 +0200

    PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG
    
    commit 95997723b6402cd6c53e0f9e7ac640ec64eaaff8 upstream.
    
    The PCIE_MSI_PAYLOAD_REG contains 16-bit MSI number, not only lower
    8 bits. Fix reading content of this register and add a comment
    describing the access to this register.
    
    Link: https://lore.kernel.org/r/20211028185659.20329-4-kabel@kernel.org
    Fixes: 8c39d710363c ("PCI: aardvark: Add Aardvark PCI host controller driver")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d95acd8b4e56231c9c1a2ac10df7fc847dfcaa7d
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Oct 24 17:03:15 2021 +0300

    ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume
    
    commit 3ab7992018455ac63c33e9b3eaa7264e293e40f4 upstream.
    
    In commit 411cef6adfb3 ("ALSA: mixer: oss: Fix racy access to slots")
    added mutex protection in snd_mixer_oss_set_volume(). Second
    mutex_lock() in same function looks like typo, fix it.
    
    Reported-by: syzbot+ace149a75a9a0a399ac7@syzkaller.appspotmail.com
    Fixes: 411cef6adfb3 ("ALSA: mixer: oss: Fix racy access to slots")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/20211024140315.16704-1-paskripkin@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61a2ded8bf257c4fbc1908475f92b297ead66976
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Oct 20 18:48:46 2021 +0200

    ALSA: mixer: oss: Fix racy access to slots
    
    commit 411cef6adfb38a5bb6bd9af3941b28198e7fb680 upstream.
    
    The OSS mixer can reassign the mapping slots dynamically via proc
    file.  Although the addition and deletion of those slots are protected
    by mixer->reg_mutex, the access to slots aren't, hence this may cause
    UAF when the slots in use are deleted concurrently.
    
    This patch applies the mixer->reg_mutex in all appropriate code paths
    (i.e. the ioctl functions) that may access slots.
    
    Reported-by: syzbot+9988f17cf72a1045a189@syzkaller.appspotmail.com
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/00000000000036adc005ceca9175@google.com
    Link: https://lore.kernel.org/r/20211020164846.922-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4787831e1f1f195f03f3ef7720061a7429881c7
Author: Pali Rohár <pali@kernel.org>
Date:   Sat Oct 2 15:09:00 2021 +0200

    serial: core: Fix initializing and restoring termios speed
    
    commit 027b57170bf8bb6999a28e4a5f3d78bf1db0f90c upstream.
    
    Since commit edc6afc54968 ("tty: switch to ktermios and new framework")
    termios speed is no longer stored only in c_cflag member but also in new
    additional c_ispeed and c_ospeed members. If BOTHER flag is set in c_cflag
    then termios speed is stored only in these new members.
    
    Therefore to correctly restore termios speed it is required to store also
    ispeed and ospeed members, not only cflag member.
    
    In case only cflag member with BOTHER flag is restored then functions
    tty_termios_baud_rate() and tty_termios_input_baud_rate() returns baudrate
    stored in c_ospeed / c_ispeed member, which is zero as it was not restored
    too. If reported baudrate is invalid (e.g. zero) then serial core functions
    report fallback baudrate value 9600. So it means that in this case original
    baudrate is lost and kernel changes it to value 9600.
    
    Simple reproducer of this issue is to boot kernel with following command
    line argument: "console=ttyXXX,86400" (where ttyXXX is the device name).
    For speed 86400 there is no Bnnn constant and therefore kernel has to
    represent this speed via BOTHER c_cflag. Which means that speed is stored
    only in c_ospeed and c_ispeed members, not in c_cflag anymore.
    
    If bootloader correctly configures serial device to speed 86400 then kernel
    prints boot log to early console at speed speed 86400 without any issue.
    But after kernel starts initializing real console device ttyXXX then speed
    is changed to fallback value 9600 because information about speed was lost.
    
    This patch fixes above issue by storing and restoring also ispeed and
    ospeed members, which are required for BOTHER flag.
    
    Fixes: edc6afc54968 ("[PATCH] tty: switch to ktermios and new framework")
    Cc: stable@vger.kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Link: https://lore.kernel.org/r/20211002130900.9518-1-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 662abe01321daabd85f97ff67b6560ba038a2240
Author: Xiaoming Ni <nixiaoming@huawei.com>
Date:   Wed Sep 29 11:36:45 2021 +0800

    powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found
    
    commit 3c2172c1c47b4079c29f0e6637d764a99355ebcd upstream.
    
    When the field described in mpc85xx_smp_guts_ids[] is not configured in
    dtb, the mpc85xx_setup_pmc() does not assign a value to the "guts"
    variable. As a result, the oops is triggered when
    mpc85xx_freeze_time_base() is executed.
    
    Fixes: 56f1ba280719 ("powerpc/mpc85xx: refactor the PM operations")
    Cc: stable@vger.kernel.org # v4.6+
    Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210929033646.39630-2-nixiaoming@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deae21da66443799a6d77b37a8d39ff53f91ee3d
Author: Henrik Grimler <henrik@grimler.se>
Date:   Wed Sep 29 20:14:17 2021 +0200

    power: supply: max17042_battery: use VFSOC for capacity when no rsns
    
    commit 223a3b82834f036a62aa831f67cbf1f1d644c6e2 upstream.
    
    On Galaxy S3 (i9300/i9305), which has the max17047 fuel gauge and no
    current sense resistor (rsns), the RepSOC register does not provide an
    accurate state of charge value. The reported value is wrong, and does
    not change over time. VFSOC however, which uses the voltage fuel gauge
    to determine the state of charge, always shows an accurate value.
    
    For devices without current sense, VFSOC is already used for the
    soc-alert (0x0003 is written to MiscCFG register), so with this change
    the source of the alert and the PROP_CAPACITY value match.
    
    Fixes: 359ab9f5b154 ("power_supply: Add MAX17042 Fuel Gauge Driver")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Suggested-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
    Signed-off-by: Henrik Grimler <henrik@grimler.se>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e38bf8e7d64bd760a90d39b7feede35b274385d
Author: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Date:   Tue Sep 14 14:18:06 2021 +0200

    power: supply: max17042_battery: Prevent int underflow in set_soc_threshold
    
    commit e660dbb68c6b3f7b9eb8b9775846a44f9798b719 upstream.
    
    max17042_set_soc_threshold gets called with offset set to 1, which means
    that minimum threshold value would underflow once SOC got down to 0,
    causing invalid alerts from the gauge.
    
    Fixes: e5f3872d2044 ("max17042: Add support for signalling change in SOC")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c68271803eec193cb776feb3e4fe0d3ef3a6a8b
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Oct 20 12:43:51 2021 -0500

    signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT
    
    commit 95bf9d646c3c3f95cb0be7e703b371db8da5be68 upstream.
    
    When an instruction to save or restore a register from the stack fails
    in _save_fp_context or _restore_fp_context return with -EFAULT.  This
    change was made to r2300_fpu.S[1] but it looks like it got lost with
    the introduction of EX2[2].  This is also what the other implementation
    of _save_fp_context and _restore_fp_context in r4k_fpu.S does, and
    what is needed for the callers to be able to handle the error.
    
    Furthermore calling do_exit(SIGSEGV) from bad_stack is wrong because
    it does not terminate the entire process it just terminates a single
    thread.
    
    As the changed code was the only caller of arch/mips/kernel/syscall.c:bad_stack
    remove the problematic and now unused helper function.
    
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Maciej Rozycki <macro@orcam.me.uk>
    Cc: linux-mips@vger.kernel.org
    [1] 35938a00ba86 ("MIPS: Fix ISA I FP sigcontext access violation handling")
    [2] f92722dc4545 ("MIPS: Correct MIPS I FP sigcontext layout")
    Cc: stable@vger.kernel.org
    Fixes: f92722dc4545 ("MIPS: Correct MIPS I FP sigcontext layout")
    Acked-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Link: https://lkml.kernel.org/r/20211020174406.17889-5-ebiederm@xmission.com
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0045dd6ebe3b070b140d4bf23c97512a7adc3d1e
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Sep 1 13:21:34 2021 -0500

    signal: Remove the bogus sigkill_pending in ptrace_stop
    
    commit 7d613f9f72ec8f90ddefcae038fdae5adb8404b3 upstream.
    
    The existence of sigkill_pending is a little silly as it is
    functionally a duplicate of fatal_signal_pending that is used in
    exactly one place.
    
    Checking for pending fatal signals and returning early in ptrace_stop
    is actively harmful.  It casues the ptrace_stop called by
    ptrace_signal to return early before setting current->exit_code.
    Later when ptrace_signal reads the signal number from
    current->exit_code is undefined, making it unpredictable what will
    happen.
    
    Instead rely on the fact that schedule will not sleep if there is a
    pending signal that can awaken a task.
    
    Removing the explict sigkill_pending test fixes fixes ptrace_signal
    when ptrace_stop does not stop because current->exit_code is always
    set to to signr.
    
    Cc: stable@vger.kernel.org
    Fixes: 3d749b9e676b ("ptrace: simplify ptrace_stop()->sigkill_pending() path")
    Fixes: 1a669c2f16d4 ("Add arch_ptrace_stop")
    Link: https://lkml.kernel.org/r/87pmsyx29t.fsf@disp2133
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f024a12b92c24887a268133f52994e0dc2384e8c
Author: Alok Prasad <palok@marvell.com>
Date:   Wed Oct 27 18:43:29 2021 +0000

    RDMA/qedr: Fix NULL deref for query_qp on the GSI QP
    
    commit 4f960393a0ee9a39469ceb7c8077ae8db665cc12 upstream.
    
    This patch fixes a crash caused by querying the QP via netlink, and
    corrects the state of GSI qp. GSI qp's have a NULL qed_qp.
    
    The call trace is generated by:
     $ rdma res show
    
     BUG: kernel NULL pointer dereference, address: 0000000000000034
     Hardware name: Dell Inc. PowerEdge R720/0M1GCR, BIOS 1.2.6 05/10/2012
     RIP: 0010:qed_rdma_query_qp+0x33/0x1a0 [qed]
     RSP: 0018:ffffba560a08f580 EFLAGS: 00010206
     RAX: 0000000200000000 RBX: ffffba560a08f5b8 RCX: 0000000000000000
     RDX: ffffba560a08f5b8 RSI: 0000000000000000 RDI: ffff9807ee458090
     RBP: ffffba560a08f5a0 R08: 0000000000000000 R09: ffff9807890e7048
     R10: ffffba560a08f658 R11: 0000000000000000 R12: 0000000000000000
     R13: ffff9807ee458090 R14: ffff9807f0afb000 R15: ffffba560a08f7ec
     FS:  00007fbbf8bfe740(0000) GS:ffff980aafa00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000034 CR3: 00000001720ba001 CR4: 00000000000606f0
     Call Trace:
      qedr_query_qp+0x82/0x360 [qedr]
      ib_query_qp+0x34/0x40 [ib_core]
      ? ib_query_qp+0x34/0x40 [ib_core]
      fill_res_qp_entry_query.isra.26+0x47/0x1d0 [ib_core]
      ? __nla_put+0x20/0x30
      ? nla_put+0x33/0x40
      fill_res_qp_entry+0xe3/0x120 [ib_core]
      res_get_common_dumpit+0x3f8/0x5d0 [ib_core]
      ? fill_res_cm_id_entry+0x1f0/0x1f0 [ib_core]
      nldev_res_get_qp_dumpit+0x1a/0x20 [ib_core]
      netlink_dump+0x156/0x2f0
      __netlink_dump_start+0x1ab/0x260
      rdma_nl_rcv+0x1de/0x330 [ib_core]
      ? nldev_res_get_cm_id_dumpit+0x20/0x20 [ib_core]
      netlink_unicast+0x1b8/0x270
      netlink_sendmsg+0x33e/0x470
      sock_sendmsg+0x63/0x70
      __sys_sendto+0x13f/0x180
      ? setup_sgl.isra.12+0x70/0xc0
      __x64_sys_sendto+0x28/0x30
      do_syscall_64+0x3a/0xb0
      entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Cc: stable@vger.kernel.org
    Fixes: cecbcddf6461 ("qedr: Add support for QP verbs")
    Link: https://lore.kernel.org/r/20211027184329.18454-1-palok@marvell.com
    Signed-off-by: Ariel Elior <aelior@marvell.com>
    Signed-off-by: Shai Malin <smalin@marvell.com>
    Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
    Signed-off-by: Alok Prasad <palok@marvell.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86786759de0fc3f1e7b3732f8466637c388c8790
Author: Benjamin Li <benl@squareup.com>
Date:   Wed Sep 1 11:06:05 2021 -0700

    wcn36xx: handle connection loss indication
    
    commit d6dbce453b19c64b96f3e927b10230f9a704b504 upstream.
    
    Firmware sends delete_sta_context_ind when it detects the AP has gone
    away in STA mode. Right now the handler for that indication only handles
    AP mode; fix it to also handle STA mode.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Benjamin Li <benl@squareup.com>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210901180606.11686-1-benl@squareup.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fda1896f4cba7e7346ece703ff68451ab8a2bfc9
Author: Jonas Dreßler <verdre@v0yd.nl>
Date:   Mon Oct 11 15:32:23 2021 +0200

    mwifiex: Read a PCI register after writing the TX ring write pointer
    
    commit e5f4eb8223aa740237cd463246a7debcddf4eda1 upstream.
    
    On the 88W8897 PCIe+USB card the firmware randomly crashes after setting
    the TX ring write pointer. The issue is present in the latest firmware
    version 15.68.19.p21 of the PCIe+USB card.
    
    Those firmware crashes can be worked around by reading any PCI register
    of the card after setting that register, so read the PCI_VENDOR_ID
    register here. The reason this works is probably because we keep the bus
    from entering an ASPM state for a bit longer, because that's what causes
    the cards firmware to crash.
    
    This fixes a bug where during RX/TX traffic and with ASPM L1 substates
    enabled (the specific substates where the issue happens appear to be
    platform dependent), the firmware crashes and eventually a command
    timeout appears in the logs.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=109681
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonas Dreßler <verdre@v0yd.nl>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211011133224.15561-2-verdre@v0yd.nl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 600eb269895dd53b3c119ccb57bf33c586728587
Author: Loic Poulain <loic.poulain@linaro.org>
Date:   Wed Oct 20 15:38:53 2021 +0200

    wcn36xx: Fix HT40 capability for 2Ghz band
    
    commit 960ae77f25631bbe4e3aafefe209b52e044baf31 upstream.
    
    All wcn36xx controllers are supposed to support HT40 (and SGI40),
    This doubles the maximum bitrate/throughput with compatible APs.
    
    Tested with wcn3620 & wcn3680B.
    
    Cc: stable@vger.kernel.org
    Fixes: 8e84c2582169 ("wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware")
    Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/1634737133-22336-1-git-send-email-loic.poulain@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5907f337b40dc1cac71bc7ecce4297e531806d1
Author: Austin Kim <austin.kim@lge.com>
Date:   Thu Oct 28 12:26:42 2021 +0100

    evm: mark evm_fixmode as __ro_after_init
    
    commit 32ba540f3c2a7ef61ed5a577ce25069a3d714fc9 upstream.
    
    The evm_fixmode is only configurable by command-line option and it is never
    modified outside initcalls, so declaring it with __ro_after_init is better.
    
    Signed-off-by: Austin Kim <austin.kim@lge.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbb6e289bd9fdb68735465b3dd8d8735e6db167f
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 14:05:21 2021 +0200

    rtl8187: fix control-message timeouts
    
    commit 2e9be536a213e838daed6ba42024dd68954ac061 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 605bebe23bf6 ("[PATCH] Add rtl8187 wireless driver")
    Cc: stable@vger.kernel.org      # 2.6.23
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211025120522.6045-4-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b8efa9e6588178c7923a55c65e68cfd82237389
Author: Ingmar Klein <ingmar_klein@web.de>
Date:   Fri Apr 9 11:26:33 2021 +0200

    PCI: Mark Atheros QCA6174 to avoid bus reset
    
    commit e3f4bd3462f6f796594ecc0dda7144ed2d1e5a26 upstream.
    
    When passing the Atheros QCA6174 through to a virtual machine, the VM hangs
    at the point where the ath10k driver loads.
    
    Add a quirk to avoid bus resets on this device, which avoids the hang.
    
    [bhelgaas: commit log]
    Link: https://lore.kernel.org/r/08982e05-b6e8-5a8d-24ab-da1488ee50a8@web.de
    Signed-off-by: Ingmar Klein <ingmar_klein@web.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2da164dca0cc035f923322b4de9fae5ffa66f456
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 14:05:20 2021 +0200

    ath6kl: fix control-message timeout
    
    commit a066d28a7e729f808a3e6eff22e70c003091544e upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 241b128b6b69 ("ath6kl: add back beginnings of USB support")
    Cc: stable@vger.kernel.org      # 3.4
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211025120522.6045-3-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d8c77961170e7755e95bb5979faacc2133ae852
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Oct 27 10:08:18 2021 +0200

    ath6kl: fix division by zero in send path
    
    commit c1b9ca365deae667192be9fe24db244919971234 upstream.
    
    Add the missing endpoint max-packet sanity check to probe() to avoid
    division by zero in ath10k_usb_hif_tx_sg() in case a malicious device
    has broken descriptors (or when doing descriptor fuzz testing).
    
    Note that USB core will reject URBs submitted for endpoints with zero
    wMaxPacketSize but that drivers doing packet-size calculations still
    need to handle this (cf. commit 2548288b4fb0 ("USB: Fix: Don't skip
    endpoint descriptors with maxpacket=0")).
    
    Fixes: 9cbee358687e ("ath6kl: add full USB support")
    Cc: stable@vger.kernel.org      # 3.5
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211027080819.6675-3-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99072887e66f7b55c1ebffd0df66e8a4c9fbc720
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Oct 27 10:08:19 2021 +0200

    mwifiex: fix division by zero in fw download path
    
    commit 89f8765a11d8df49296d92c404067f9b5c58ee26 upstream.
    
    Add the missing endpoint sanity checks to probe() to avoid division by
    zero in mwifiex_write_data_sync() in case a malicious device has broken
    descriptors (or when doing descriptor fuzz testing).
    
    Only add checks for the firmware-download boot stage, which require both
    command endpoints, for now. The driver looks like it will handle a
    missing endpoint during normal operation without oopsing, albeit not
    very gracefully as it will try to submit URBs to the default pipe and
    fail.
    
    Note that USB core will reject URBs submitted for endpoints with zero
    wMaxPacketSize but that drivers doing packet-size calculations still
    need to handle this (cf. commit 2548288b4fb0 ("USB: Fix: Don't skip
    endpoint descriptors with maxpacket=0")).
    
    Fixes: 4daffe354366 ("mwifiex: add support for Marvell USB8797 chipset")
    Cc: stable@vger.kernel.org      # 3.5
    Cc: Amitkumar Karwar <akarwar@marvell.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211027080819.6675-4-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1529a3c0b065acac81efa0da3124cfc2842bc69
Author: Eric Badger <ebadger@purestorage.com>
Date:   Sun Oct 10 10:06:56 2021 -0700

    EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
    
    commit 537bddd069c743759addf422d0b8f028ff0f8dbc upstream.
    
    The computation of TOHM is off by one bit. This missed bit results in
    too low a value for TOHM, which can cause errors in regular memory to
    incorrectly report:
    
      EDAC MC0: 1 CE Error at MMIOH area, on addr 0x000000207fffa680 on any memory
    
    Fixes: 50d1bb93672f ("sb_edac: add support for Haswell based systems")
    Cc: stable@vger.kernel.org
    Reported-by: Meeta Saggi <msaggi@purestorage.com>
    Signed-off-by: Eric Badger <ebadger@purestorage.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/r/20211010170127.848113-1-ebadger@purestorage.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89d24fb66037bb7383f5ba7f8c77db30f25ebaf0
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Fri Oct 8 13:37:14 2021 +0200

    regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default-dvs-idx property
    
    commit a7fda04bc9b6ad9da8e19c9e6e3b1dab773d068a upstream.
    
    The driver was always parsing "s5m8767,pmic-buck-default-dvs-idx", not
    "s5m8767,pmic-buck234-default-dvs-idx".
    
    Cc: <stable@vger.kernel.org>
    Fixes: 26aec009f6b6 ("regulator: add device tree support for s5m8767")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Message-Id: <20211008113723.134648-3-krzysztof.kozlowski@canonical.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f430d606311a224b143e08fab228ad428a9dc22
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Fri Oct 8 13:37:13 2021 +0200

    regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled
    
    commit b16bef60a9112b1e6daf3afd16484eb06e7ce792 upstream.
    
    The driver and its bindings, before commit 04f9f068a619 ("regulator:
    s5m8767: Modify parsing method of the voltage table of buck2/3/4") were
    requiring to provide at least one safe/default voltage for DVS registers
    if DVS GPIO is not being enabled.
    
    IOW, if s5m8767,pmic-buck2-uses-gpio-dvs is missing, the
    s5m8767,pmic-buck2-dvs-voltage should still be present and contain one
    voltage.
    
    This requirement was coming from driver behavior matching this condition
    (none of DVS GPIO is enabled): it was always initializing the DVS
    selector pins to 0 and keeping the DVS enable setting at reset value
    (enabled).  Therefore if none of DVS GPIO is enabled in devicetree,
    driver was configuring the first DVS voltage for buck[234].
    
    Mentioned commit 04f9f068a619 ("regulator: s5m8767: Modify parsing
    method of the voltage table of buck2/3/4") broke it because DVS voltage
    won't be parsed from devicetree if DVS GPIO is not enabled.  After the
    change, driver will configure bucks to use the register reset value as
    voltage which might have unpleasant effects.
    
    Fix this by relaxing the bindings constrain: if DVS GPIO is not enabled
    in devicetree (therefore DVS voltage is also not parsed), explicitly
    disable it.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 04f9f068a619 ("regulator: s5m8767: Modify parsing method of the voltage table of buck2/3/4")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Message-Id: <20211008113723.134648-2-krzysztof.kozlowski@canonical.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ad9070df36d9fe9d1dbe721b4862cc9a17375c3
Author: Zev Weiss <zev@bewilderbeest.net>
Date:   Tue Sep 28 02:22:35 2021 -0700

    hwmon: (pmbus/lm25066) Add offset coefficients
    
    commit ae59dc455a78fb73034dd1fbb337d7e59c27cbd8 upstream.
    
    With the exception of the lm5066i, all the devices handled by this
    driver had been missing their offset ('b') coefficients for direct
    format readings.
    
    Cc: stable@vger.kernel.org
    Fixes: 58615a94f6a1 ("hwmon: (pmbus/lm25066) Add support for LM25056")
    Fixes: e53e6497fc9f ("hwmon: (pmbus/lm25066) Refactor device specific coefficients")
    Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
    Link: https://lore.kernel.org/r/20210928092242.30036-2-zev@bewilderbeest.net
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69bd41dc8022fdb5e2b9ead1bedcd84781812c3c
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Oct 14 17:26:04 2021 +0100

    btrfs: fix lost error handling when replaying directory deletes
    
    commit 10adb1152d957a4d570ad630f93a88bb961616c1 upstream.
    
    At replay_dir_deletes(), if find_dir_range() returns an error we break out
    of the main while loop and then assign a value of 0 (success) to the 'ret'
    variable, resulting in completely ignoring that an error happened. Fix
    that by jumping to the 'out' label when find_dir_range() returns an error
    (negative value).
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    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 c785a64aeb1c6d7599d3388a22246757a0e9cc06
Author: Dongli Zhang <dongli.zhang@oracle.com>
Date:   Tue Oct 26 14:50:31 2021 -0700

    vmxnet3: do not stop tx queues after netif_device_detach()
    
    [ Upstream commit 9159f102402a64ac85e676b75cc1f9c62c5b4b73 ]
    
    The netif_device_detach() conditionally stops all tx queues if the queues
    are running. There is no need to call netif_tx_stop_all_queues() again.
    
    Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 787e899382c7579a61515d0d299b5a61bbe2c5b9
Author: Walter Stoll <walter.stoll@duagon.com>
Date:   Thu Oct 14 12:22:29 2021 +0200

    watchdog: Fix OMAP watchdog early handling
    
    [ Upstream commit cd004d8299f1dc6cfa6a4eea8f94cb45eaedf070 ]
    
    TI's implementation does not service the watchdog even if the kernel
    command line parameter omap_wdt.early_enable is set to 1. This patch
    fixes the issue.
    
    Signed-off-by: Walter Stoll <walter.stoll@duagon.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/88a8fe5229cd68fa0f1fd22f5d66666c1b7057a0.camel@duagon.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2552a329064df6da9b90e04ac058a3c54692436
Author: Thomas Perrot <thomas.perrot@bootlin.com>
Date:   Fri Oct 22 16:21:04 2021 +0200

    spi: spl022: fix Microwire full duplex mode
    
    [ Upstream commit d81d0e41ed5fe7229a2c9a29d13bad288c7cf2d2 ]
    
    There are missing braces in the function that verify controller parameters,
    then an error is always returned when the parameter to select Microwire
    frames operation is used on devices allowing it.
    
    Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
    Link: https://lore.kernel.org/r/20211022142104.1386379-1-thomas.perrot@bootlin.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a68d351a5c79b057d12c2a79ae0bd63372ecb3f4
Author: Dongli Zhang <dongli.zhang@oracle.com>
Date:   Fri Oct 22 16:31:39 2021 -0700

    xen/netfront: stop tx queues during live migration
    
    [ Upstream commit 042b2046d0f05cf8124c26ff65dbb6148a4404fb ]
    
    The tx queues are not stopped during the live migration. As a result, the
    ndo_start_xmit() may access netfront_info->queues which is freed by
    talk_to_netback()->xennet_destroy_queues().
    
    This patch is to netif_device_detach() at the beginning of xen-netfront
    resuming, and netif_device_attach() at the end of resuming.
    
         CPU A                                CPU B
    
     talk_to_netback()
     -> if (info->queues)
            xennet_destroy_queues(info);
        to free netfront_info->queues
    
                                            xennet_start_xmit()
                                            to access netfront_info->queues
    
      -> err = xennet_create_queues(info, &num_queues);
    
    The idea is borrowed from virtio-net.
    
    Cc: Joe Jin <joe.jin@oracle.com>
    Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 045644540e75a9898a49003e91e24d609f1897b0
Author: Lorenz Bauer <lmb@cloudflare.com>
Date:   Thu Oct 14 15:25:53 2021 +0100

    bpf: Prevent increasing bpf_jit_limit above max
    
    [ Upstream commit fadb7ff1a6c2c565af56b4aacdd086b067eed440 ]
    
    Restrict bpf_jit_limit to the maximum supported by the arch's JIT.
    
    Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20211014142554.53120-4-lmb@cloudflare.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 524489b3409198f35b0202492a27b899946a5abc
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Oct 17 10:59:49 2021 -0700

    mmc: winbond: don't build on M68K
    
    [ Upstream commit 162079f2dccd02cb4b6654defd32ca387dd6d4d4 ]
    
    The Winbond MMC driver fails to build on ARCH=m68k so prevent
    that build config. Silences these build errors:
    
    ../drivers/mmc/host/wbsd.c: In function 'wbsd_request_end':
    ../drivers/mmc/host/wbsd.c:212:28: error: implicit declaration of function 'claim_dma_lock' [-Werror=implicit-function-declaration]
      212 |                 dmaflags = claim_dma_lock();
    ../drivers/mmc/host/wbsd.c:215:17: error: implicit declaration of function 'release_dma_lock'; did you mean 'release_task'? [-Werror=implicit-function-declaration]
      215 |                 release_dma_lock(dmaflags);
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Pierre Ossman <pierre@ossman.eu>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20211017175949.23838-1-rdunlap@infradead.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a8bed550b569ec1b966529a530a8e87695d71de
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:19:08 2021 +0200

    hyperv/vmbus: include linux/bitops.h
    
    [ Upstream commit 8017c99680fa65e1e8d999df1583de476a187830 ]
    
    On arm64 randconfig builds, hyperv sometimes fails with this
    error:
    
    In file included from drivers/hv/hv_trace.c:3:
    In file included from drivers/hv/hyperv_vmbus.h:16:
    In file included from arch/arm64/include/asm/sync_bitops.h:5:
    arch/arm64/include/asm/bitops.h:11:2: error: only <linux/bitops.h> can be included directly
    In file included from include/asm-generic/bitops/hweight.h:5:
    include/asm-generic/bitops/arch_hweight.h:9:9: error: implicit declaration of function '__sw_hweight32' [-Werror,-Wimplicit-function-declaration]
    include/asm-generic/bitops/atomic.h:17:7: error: implicit declaration of function 'BIT_WORD' [-Werror,-Wimplicit-function-declaration]
    
    Include the correct header first.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20211018131929.2260087-1-arnd@kernel.org
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a566fd381e4bffe7afe5b8885ce4bc8dfc62910
Author: Erik Ekman <erik@kryo.se>
Date:   Wed Oct 20 00:40:16 2021 +0200

    sfc: Don't use netif_info before net_device setup
    
    [ Upstream commit bf6abf345dfa77786aca554bc58c64bd428ecb1d ]
    
    Use pci_info instead to avoid unnamed/uninitialized noise:
    
    [197088.688729] sfc 0000:01:00.0: Solarflare NIC detected
    [197088.690333] sfc 0000:01:00.0: Part Number : SFN5122F
    [197088.729061] sfc 0000:01:00.0 (unnamed net_device) (uninitialized): no SR-IOV VFs probed
    [197088.729071] sfc 0000:01:00.0 (unnamed net_device) (uninitialized): no PTP support
    
    Inspired by fa44821a4ddd ("sfc: don't use netif_info et al before
    net_device is registered") from Heiner Kallweit.
    
    Signed-off-by: Erik Ekman <erik@kryo.se>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92dd22e3e62c4ae26b0822b45a5acbd3e0c23c1b
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Oct 8 17:11:04 2021 -0700

    x86/irq: Ensure PI wakeup handler is unregistered before module unload
    
    commit 6ff53f6a438f72998f56e82e76694a1df9d1ea2c upstream.
    
    Add a synchronize_rcu() after clearing the posted interrupt wakeup handler
    to ensure all readers, i.e. in-flight IRQ handlers, see the new handler
    before returning to the caller.  If the caller is an exiting module and
    is unregistering its handler, failure to wait could result in the IRQ
    handler jumping into an unloaded module.
    
    The registration path doesn't require synchronization, as it's the
    caller's responsibility to not generate interrupts it cares about until
    after its handler is registered.
    
    Fixes: f6b3c72c2366 ("x86/irq: Define a global vector for VT-d Posted-Interrupts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20211009001107.3936588-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 404680c7e94f4e0ee9a32c4cf328d70316de598c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 5 10:15:17 2021 +0100

    ALSA: timer: Unconditionally unlink slave instances, too
    
    commit ffdd98277f0a1d15a67a74ae09bee713df4c0dbc upstream.
    
    Like the previous fix (commit c0317c0e8709 "ALSA: timer: Fix
    use-after-free problem"), we have to unlink slave timer instances
    immediately at snd_timer_stop(), too.  Otherwise it may leave a stale
    entry in the list if the slave instance is freed before actually
    running.
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211105091517.21733-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0991a99e6fe811da6f1c464df209ad452df8989
Author: Wang Wensheng <wangwensheng4@huawei.com>
Date:   Wed Nov 3 03:35:17 2021 +0000

    ALSA: timer: Fix use-after-free problem
    
    commit c0317c0e87094f5b5782b6fdef5ae0a4b150496c upstream.
    
    When the timer instance was add into ack_list but was not currently in
    process, the user could stop it via snd_timer_stop1() without delete it
    from the ack_list. Then the user could free the timer instance and when
    it was actually processed UAF occurred.
    
    This issue could be reproduced via testcase snd_timer01 in ltp - running
    several instances of that testcase at the same time.
    
    What I actually met was that the ack_list of the timer broken and the
    kernel went into deadloop with irqoff. That could be detected by
    hardlockup detector on board or when we run it on qemu, we could use gdb
    to dump the ack_list when the console has no response.
    
    To fix this issue, we delete the timer instance from ack_list and
    active_list unconditionally in snd_timer_stop1().
    
    Signed-off-by: Wang Wensheng <wangwensheng4@huawei.com>
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211103033517.80531-1-wangwensheng4@huawei.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 280b47ed12e52267ad797d9d98bf2a49d4d2bf11
Author: Austin Kim <austin.kim@lge.com>
Date:   Tue Nov 9 00:37:42 2021 +0000

    ALSA: synth: missing check for possible NULL after the call to kstrdup
    
    commit d159037abbe3412285c271bdfb9cdf19e62678ff upstream.
    
    If kcalloc() return NULL due to memory starvation, it is possible for
    kstrdup() to return NULL in similar case. So add null check after the call
    to kstrdup() is made.
    
    [ minor coding-style fix by tiwai ]
    
    Signed-off-by: Austin Kim <austin.kim@lge.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211109003742.GA5423@raspberrypi
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aece550bdb61774e7817a64ccc3c7399a1ae540f
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 14:11:42 2021 +0200

    ALSA: line6: fix control and interrupt message timeouts
    
    commit f4000b58b64344871d7b27c05e73932f137cfef6 upstream.
    
    USB control and interrupt message timeouts are specified in milliseconds
    and should specifically not vary with CONFIG_HZ.
    
    Fixes: 705ececd1c60 ("Staging: add line6 usb driver")
    Cc: stable@vger.kernel.org      # 2.6.30
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211025121142.6531-3-johan@kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e36632b2506eea0bfcff3ab08299d1c6a8779b1
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 14:11:41 2021 +0200

    ALSA: 6fire: fix control and bulk message timeouts
    
    commit 9b371c6cc37f954360989eec41c2ddc5a6b83917 upstream.
    
    USB control and bulk message timeouts are specified in milliseconds and
    should specifically not vary with CONFIG_HZ.
    
    Fixes: c6d43ba816d1 ("ALSA: usb/6fire - Driver for TerraTec DMX 6Fire USB")
    Cc: stable@vger.kernel.org      # 2.6.39
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211025121142.6531-2-johan@kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d58077a8cda356862db13621bed5ff136efe29ff
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Oct 26 11:54:01 2021 +0200

    ALSA: ua101: fix division by zero at probe
    
    commit 55f261b73a7e1cb254577c3536cef8f415de220a upstream.
    
    Add the missing endpoint max-packet sanity check to probe() to avoid
    division by zero in alloc_stream_buffers() in case a malicious device
    has broken descriptors (or when doing descriptor fuzz testing).
    
    Note that USB core will reject URBs submitted for endpoints with zero
    wMaxPacketSize but that drivers doing packet-size calculations still
    need to handle this (cf. commit 2548288b4fb0 ("USB: Fix: Don't skip
    endpoint descriptors with maxpacket=0")).
    
    Fixes: 63978ab3e3e9 ("sound: add Edirol UA-101 support")
    Cc: stable@vger.kernel.org      # 2.6.34
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211026095401.26522-1-johan@kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1d47c1e869b169668ce26252364ef5fe94188d1
Author: Sean Young <sean@mess.org>
Date:   Sun Oct 17 13:01:15 2021 +0100

    media: ite-cir: IR receiver stop working after receive overflow
    
    commit fdc881783099c6343921ff017450831c8766d12a upstream.
    
    On an Intel NUC6iSYK, no IR is reported after a receive overflow.
    
    When a receiver overflow occurs, this condition is only cleared by
    reading the fifo. Make sure we read anything in the fifo.
    
    Fixes: 28c7afb07ccf ("media: ite-cir: check for receive overflow")
    Suggested-by: Bryan Pass <bryan.pass@gmail.com>
    Tested-by: Bryan Pass <bryan.pass@gmail.com>
    Cc: stable@vger.kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ef18373421a319a47f7615e8e220ae4cf61a690
Author: Helge Deller <deller@gmx.de>
Date:   Tue Oct 5 00:27:49 2021 +0200

    parisc: Fix ptrace check on syscall return
    
    commit 8779e05ba8aaffec1829872ef9774a71f44f6580 upstream.
    
    The TIF_XXX flags are stored in the flags field in the thread_info
    struct (TI_FLAGS), not in the flags field of the task_struct structure
    (TASK_FLAGS).
    
    It seems this bug didn't generate any important side-effects, otherwise it
    wouldn't have went unnoticed for 12 years (since v2.6.32).
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Fixes: ecd3d4bc06e48 ("parisc: stop using task->ptrace for {single,block}step flags")
    Cc: Kyle McMartin <kyle@mcmartin.ca>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d6476f032712fe1d9ec386a4c312a1bf0af920a
Author: Christian Löhle <CLoehle@hyperstone.com>
Date:   Thu Sep 16 05:59:19 2021 +0000

    mmc: dw_mmc: Dont wait for DRTO on Write RSP error
    
    commit 43592c8736e84025d7a45e61a46c3fa40536a364 upstream.
    
    Only wait for DRTO on reads, otherwise the driver hangs.
    
    The driver prevents sending CMD12 on response errors like CRCs. According
    to the comment this is because some cards have problems with this during
    the UHS tuning sequence. Unfortunately this workaround currently also
    applies for any command with data. On reads this will set the drto timer,
    which then triggers after a while. On writes this will not set any timer
    and the tasklet will not be scheduled again.
    
    I cannot test for the UHS workarounds need, but even if so, it should at
    most apply to reads. I have observed many hangs when CMD25 response
    contained a CRC error. This patch fixes this without touching the actual
    UHS tuning workaround.
    
    Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
    Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/af8f8b8674ba4fcc9a781019e4aeb72c@hyperstone.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c8fa09edc9b9b3f8af4b2f43f2c7977cee6b72b
Author: Jan Kara <jack@suse.cz>
Date:   Fri Nov 5 13:34:55 2021 -0700

    ocfs2: fix data corruption on truncate
    
    commit 839b63860eb3835da165642923120d305925561d upstream.
    
    Patch series "ocfs2: Truncate data corruption fix".
    
    As further testing has shown, commit 5314454ea3f ("ocfs2: fix data
    corruption after conversion from inline format") didn't fix all the data
    corruption issues the customer started observing after 6dbf7bb55598
    ("fs: Don't invalidate page buffers in block_write_full_page()") This
    time I have tracked them down to two bugs in ocfs2 truncation code.
    
    One bug (truncating page cache before clearing tail cluster and setting
    i_size) could cause data corruption even before 6dbf7bb55598, but before
    that commit it needed a race with page fault, after 6dbf7bb55598 it
    started to be pretty deterministic.
    
    Another bug (zeroing pages beyond old i_size) used to be harmless
    inefficiency before commit 6dbf7bb55598.  But after commit 6dbf7bb55598
    in combination with the first bug it resulted in deterministic data
    corruption.
    
    Although fixing only the first problem is needed to stop data
    corruption, I've fixed both issues to make the code more robust.
    
    This patch (of 2):
    
    ocfs2_truncate_file() did unmap invalidate page cache pages before
    zeroing partial tail cluster and setting i_size.  Thus some pages could
    be left (and likely have left if the cluster zeroing happened) in the
    page cache beyond i_size after truncate finished letting user possibly
    see stale data once the file was extended again.  Also the tail cluster
    zeroing was not guaranteed to finish before truncate finished causing
    possible stale data exposure.  The problem started to be particularly
    easy to hit after commit 6dbf7bb55598 "fs: Don't invalidate page buffers
    in block_write_full_page()" stopped invalidation of pages beyond i_size
    from page writeback path.
    
    Fix these problems by unmapping and invalidating pages in the page cache
    after the i_size is reduced and tail cluster is zeroed out.
    
    Link: https://lkml.kernel.org/r/20211025150008.29002-1-jack@suse.cz
    Link: https://lkml.kernel.org/r/20211025151332.11301-1-jack@suse.cz
    Fixes: ccd979bdbce9 ("[PATCH] OCFS2: The Second Oracle Cluster Filesystem")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 985d5b3f2b3c8837431648a79bbee9fc9193dcb4
Author: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Date:   Thu Nov 4 17:31:58 2021 +0900

    libata: fix read log timeout value
    
    commit 68dbbe7d5b4fde736d104cbbc9a2fce875562012 upstream.
    
    Some ATA drives are very slow to respond to READ_LOG_EXT and
    READ_LOG_DMA_EXT commands issued from ata_dev_configure() when the
    device is revalidated right after resuming a system or inserting the
    ATA adapter driver (e.g. ahci). The default 5s timeout
    (ATA_EH_CMD_DFL_TIMEOUT) used for these commands is too short, causing
    errors during the device configuration. Ex:
    
    ...
    ata9: SATA max UDMA/133 abar m524288@0x9d200000 port 0x9d200400 irq 209
    ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
    ata9.00: ATA-9: XXX  XXXXXXXXXXXXXXX, XXXXXXXX, max UDMA/133
    ata9.00: qc timeout (cmd 0x2f)
    ata9.00: Read log page 0x00 failed, Emask 0x4
    ata9.00: Read log page 0x00 failed, Emask 0x40
    ata9.00: NCQ Send/Recv Log not supported
    ata9.00: Read log page 0x08 failed, Emask 0x40
    ata9.00: 27344764928 sectors, multi 16: LBA48 NCQ (depth 32), AA
    ata9.00: Read log page 0x00 failed, Emask 0x40
    ata9.00: ATA Identify Device Log not supported
    ata9.00: failed to set xfermode (err_mask=0x40)
    ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
    ata9.00: configured for UDMA/133
    ...
    
    The timeout error causes a soft reset of the drive link, followed in
    most cases by a successful revalidation as that give enough time to the
    drive to become fully ready to quickly process the read log commands.
    However, in some cases, this also fails resulting in the device being
    dropped.
    
    Fix this by using adding the ata_eh_revalidate_timeouts entries for the
    READ_LOG_EXT and READ_LOG_DMA_EXT commands. This defines a timeout
    increased to 15s, retriable one time.
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03eea2b5f1dda3357f5071530fd21392ab274a59
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Nov 3 08:00:19 2021 +0100

    Input: i8042 - Add quirk for Fujitsu Lifebook T725
    
    commit 16e28abb7290c4ca3b3a0f333ba067f34bb18c86 upstream.
    
    Fujitsu Lifebook T725 laptop requires, like a few other similar
    models, the nomux and notimeout options to probe the touchpad
    properly.  This patch adds the corresponding quirk entries.
    
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1191980
    Tested-by: Neal Gompa <ngompa13@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211103070019.13374-1-tiwai@suse.de
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bcb68f8c36f347429d760e94d202c10c790e574
Author: Phoenix Huang <phoenix@emc.com.tw>
Date:   Sun Nov 7 22:00:03 2021 -0800

    Input: elantench - fix misreporting trackpoint coordinates
    
    commit be896bd3b72b44126c55768f14c22a8729b0992e upstream.
    
    Some firmwares occasionally report bogus data from trackpoint, with X or Y
    displacement being too large (outside of [-127, 127] range). Let's drop such
    packets so that we do not generate jumps.
    
    Signed-off-by: Phoenix Huang <phoenix@emc.com.tw>
    Tested-by: Yufei Du <yufeidu@cs.unc.edu>
    Link: https://lore.kernel.org/r/20210729010940.5752-1-phoenix@emc.com.tw
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 397ae8d177dce131bc6291d3e331fec187da167e
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Nov 5 18:00:36 2021 +0200

    xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay
    
    commit e1959faf085b004e6c3afaaaa743381f00e7c015 upstream.
    
    Some USB 3.1 enumeration issues were reported after the hub driver removed
    the minimum 100ms limit for the power-on-good delay.
    
    Since commit 90d28fb53d4a ("usb: core: reduce power-on-good delay time of
    root hub") the hub driver sets the power-on-delay based on the
    bPwrOn2PwrGood value in the hub descriptor.
    
    xhci driver has a 20ms bPwrOn2PwrGood value for both roothubs based
    on xhci spec section 5.4.8, but it's clearly not enough for the
    USB 3.1 devices, causing enumeration issues.
    
    Tests indicate full 100ms delay is needed.
    
    Reported-by: Walt Jr. Brake <mr.yming81@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Fixes: 90d28fb53d4a ("usb: core: reduce power-on-good delay time of root hub")
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211105160036.549516-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22d4a6dacee058b58640ef8109b0c8fc5d1b80e2
Author: Todd Kjos <tkjos@google.com>
Date:   Tue Oct 12 09:56:13 2021 -0700

    binder: use cred instead of task for selinux checks
    
    commit 52f88693378a58094c538662ba652aff0253c4fe upstream.
    
    Since binder was integrated with selinux, it has passed
    'struct task_struct' associated with the binder_proc
    to represent the source and target of transactions.
    The conversion of task to SID was then done in the hook
    implementations. It turns out that there are race conditions
    which can result in an incorrect security context being used.
    
    Fix by using the 'struct cred' saved during binder_open and pass
    it to the selinux subsystem.
    
    Cc: stable@vger.kernel.org # 5.14 (need backport for earlier stables)
    Fixes: 79af73079d75 ("Add security hooks to binder and implement the hooks for SELinux.")
    Suggested-by: Jann Horn <jannh@google.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Acked-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 443fc43d2fdbf55be7aa86faae1f7655e761e683
Author: Todd Kjos <tkjos@google.com>
Date:   Tue Oct 12 09:56:12 2021 -0700

    binder: use euid from cred instead of using task
    
    commit 29bc22ac5e5bc63275e850f0c8fc549e3d0e306b upstream.
    
    Save the 'struct cred' associated with a binder process
    at initial open to avoid potential race conditions
    when converting to an euid.
    
    Set a transaction's sender_euid from the 'struct cred'
    saved at binder_open() instead of looking up the euid
    from the binder proc's 'struct task'. This ensures
    the euid is associated with the security context that
    of the task that opened binder.
    
    Cc: stable@vger.kernel.org # 4.4+
    Fixes: 457b9a6f09f0 ("Staging: android: add binder driver")
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Suggested-by: Stephen Smalley <stephen.smalley.work@gmail.com>
    Suggested-by: Jann Horn <jannh@google.com>
    Acked-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>