óÐÉÓÏË ÉÚÍÅÎÅÎÉÊ × Linux 5.4.174

 
ACPI: battery: Add the ThinkPad "Not Charging" quirk [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Wed Dec 22 22:20:14 2021 +0100

    ACPI: battery: Add the ThinkPad "Not Charging" quirk
    
    [ Upstream commit e96c1197aca628f7d2480a1cc3214912b40b3414 ]
    
    The EC/ACPI firmware on Lenovo ThinkPads used to report a status
    of "Unknown" when the battery is between the charge start and
    charge stop thresholds. On Windows, it reports "Not Charging"
    so the quirk has been added to also report correctly.
    
    Now the "status" attribute returns "Not Charging" when the
    battery on ThinkPads is not physicaly charging.
    
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Reviewed-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>

ACPI: EC: Rework flushing of EC work while suspended to idle [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Nov 23 19:36:51 2021 +0100

    ACPI: EC: Rework flushing of EC work while suspended to idle
    
    [ Upstream commit 4a9af6cac050dce2e895ec3205c4615383ad9112 ]
    
    The flushing of pending work in the EC driver uses drain_workqueue()
    to flush the event handling work that can requeue itself via
    advance_transaction(), but this is problematic, because that
    work may also be requeued from the query workqueue.
    
    Namely, if an EC transaction is carried out during the execution of
    a query handler, it involves calling advance_transaction() which
    may queue up the event handling work again.  This causes the kernel
    to complain about attempts to add a work item to the EC event
    workqueue while it is being drained and worst-case it may cause a
    valid event to be skipped.
    
    To avoid this problem, introduce two new counters, events_in_progress
    and queries_in_progress, incremented when a work item is queued on
    the event workqueue or the query workqueue, respectively, and
    decremented at the end of the corresponding work function, and make
    acpi_ec_dispatch_gpe() the workqueues in a loop until the both of
    these counters are zero (or system wakeup is pending) instead of
    calling acpi_ec_flush_work().
    
    At the same time, change __acpi_ec_flush_work() to call
    flush_workqueue() instead of drain_workqueue() to flush the event
    workqueue.
    
    While at it, use the observation that the work item queued in
    acpi_ec_query() cannot be pending at that time, because it is used
    only once, to simplify the code in there.
    
    Additionally, clean up a comment in acpi_ec_query() and adjust white
    space in acpi_ec_event_processor().
    
    Fixes: f0ac20c3f613 ("ACPI: EC: Fix flushing of pending work")
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Dec 30 12:57:47 2021 +0100

    ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes
    
    [ Upstream commit f85196bdd5a50da74670250564740fc852b3c239 ]
    
    BCM4752 and LNV4752 ACPI nodes describe a Broadcom 4752 GPS module
    attached to an UART of the system.
    
    The GPS modules talk a custom protocol which only works with a closed-
    source Android gpsd daemon which knows this protocol.
    
    The ACPI nodes also describe GPIOs to turn the GPS on/off these are
    handled by the net/rfkill/rfkill-gpio.c code. This handling predates the
    addition of enumeration of ACPI instantiated serdevs to the kernel and
    was broken by that addition, because the ACPI scan code now no longer
    instantiates platform_device-s for these nodes.
    
    Rename the i2c_multi_instantiate_ids HID list to ignore_serial_bus_ids
    and add the BCM4752 and LNV4752 HIDs, so that rfkill-gpio gets
    a platform_device to bind to again; and so that a tty cdev for gpsd
    gets created for these.
    
    Fixes: e361d1f85855 ("ACPI / scan: Fix enumeration for special UART devices")
    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>

 
ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions [+ + +]
Author: Mark Langsdorf <mlangsdo@redhat.com>
Date:   Wed Dec 22 16:57:34 2021 +0100

    ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions
    
    [ Upstream commit f81bdeaf816142e0729eea0cc84c395ec9673151 ]
    
    ACPICA commit bc02c76d518135531483dfc276ed28b7ee632ce1
    
    The current ACPI_ACCESS_*_WIDTH defines do not provide a way to
    test that size is small enough to not cause an overflow when
    applied to a 32-bit integer.
    
    Rather than adding more magic numbers, add ACPI_ACCESS_*_SHIFT,
    ACPI_ACCESS_*_MAX, and ACPI_ACCESS_*_DEFAULT #defines and
    redefine ACPI_ACCESS_*_WIDTH in terms of the new #defines.
    
    This was inititally reported on Linux where a size of 102 in
    ACPI_ACCESS_BIT_WIDTH caused an overflow error in the SPCR
    initialization code.
    
    Link: https://github.com/acpica/acpica/commit/bc02c76d
    Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Dec 22 17:31:05 2021 +0100

    ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R()
    
    [ Upstream commit 24ea5f90ec9548044a6209685c5010edd66ffe8f ]
    
    ACPICA commit d984f12041392fa4156b52e2f7e5c5e7bc38ad9e
    
    If Operand[0] is a reference of the ACPI_REFCLASS_REFOF class,
    acpi_ex_opcode_1A_0T_1R () calls acpi_ns_get_attached_object () to
    obtain return_desc which may require additional resolution with
    the help of acpi_ex_read_data_from_field (). If the latter fails,
    the reference counter of the original return_desc is decremented
    which is incorrect, because acpi_ns_get_attached_object () does not
    increment the reference counter of the object returned by it.
    
    This issue may lead to premature deletion of the attached object
    while it is still attached and a use-after-free and crash in the
    host OS.  For example, this may happen when on evaluation of ref_of()
    a local region field where there is no registered handler for the
    given Operation Region.
    
    Fix it by making acpi_ex_opcode_1A_0T_1R () return Status right away
    after a acpi_ex_read_data_from_field () failure.
    
    Link: https://github.com/acpica/acpica/commit/d984f120
    Link: https://github.com/acpica/acpica/pull/685
    Reported-by: Lenny Szubowicz <lszubowi@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: Fix wrong interpretation of PCC address [+ + +]
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Wed Dec 22 17:31:54 2021 +0100

    ACPICA: Fix wrong interpretation of PCC address
    
    [ Upstream commit 9a3b8655db1ada31c82189ae13f40eb25da48c35 ]
    
    ACPICA commit 41be6afacfdaec2dba3a5ed368736babc2a7aa5c
    
    With the PCC Opregion in the firmware and we are hitting below kernel crash:
    
    -->8
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
     Workqueue: pm pm_runtime_work
     pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : __memcpy+0x54/0x260
     lr : acpi_ex_write_data_to_field+0xb8/0x194
     Call trace:
      __memcpy+0x54/0x260
      acpi_ex_store_object_to_node+0xa4/0x1d4
      acpi_ex_store+0x44/0x164
      acpi_ex_opcode_1A_1T_1R+0x25c/0x508
      acpi_ds_exec_end_op+0x1b4/0x44c
      acpi_ps_parse_loop+0x3a8/0x614
      acpi_ps_parse_aml+0x90/0x2f4
      acpi_ps_execute_method+0x11c/0x19c
      acpi_ns_evaluate+0x1ec/0x2b0
      acpi_evaluate_object+0x170/0x2b0
      acpi_device_set_power+0x118/0x310
      acpi_dev_suspend+0xd4/0x180
      acpi_subsys_runtime_suspend+0x28/0x38
      __rpm_callback+0x74/0x328
      rpm_suspend+0x2d8/0x624
      pm_runtime_work+0xa4/0xb8
      process_one_work+0x194/0x25c
      worker_thread+0x260/0x49c
      kthread+0x14c/0x30c
      ret_from_fork+0x10/0x20
     Code: f9000006 f81f80a7 d65f03c0 361000c2 (b9400026)
     ---[ end trace 24d8a032fa77b68a ]---
    
    The reason for the crash is that the PCC channel index passed via region.address
    in acpi_ex_store_object_to_node is interpreted as the channel subtype
    incorrectly.
    
    Assuming the PCC op_region support is not used by any other type, let us
    remove the subtype check as the AML has no access to the subtype information.
    Once we remove it, the kernel crash disappears and correctly complains about
    missing PCC Opregion handler.
    
    ACPI Error: No handler for Region [PFRM] ((____ptrval____)) [PCC] (20210730/evregion-130)
    ACPI Error: Region PCC (ID=10) has no handler (20210730/exfldio-261)
    ACPI Error: Aborting method \_SB.ETH0._PS3 due to previous error (AE_NOT_EXIST) (20210730/psparse-531)
    
    Link: https://github.com/acpica/acpica/commit/41be6afa
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 [+ + +]
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Wed Dec 22 17:33:51 2021 +0100

    ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5
    
    [ Upstream commit 1d4e0b3abb168b2ee1eca99c527cffa1b80b6161 ]
    
    ACPICA commit 3dd7e1f3996456ef81bfe14cba29860e8d42949e
    
    According to ACPI 6.4, Section 16.2, the CPU cache flushing is
    required on entering to S1, S2, and S3, but the ACPICA code
    flushes the CPU cache regardless of the sleep state.
    
    Blind cache flush on entering S5 causes problems for TDX.
    
    Flushing happens with WBINVD that is not supported in the TDX
    environment.
    
    TDX only supports S5 and adjusting ACPICA code to conform to the
    spec more strictly fixes the issue.
    
    Link: https://github.com/acpica/acpica/commit/3dd7e1f3
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPICA: Utilities: Avoid deleting the same object twice in a row [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Dec 22 17:29:45 2021 +0100

    ACPICA: Utilities: Avoid deleting the same object twice in a row
    
    [ Upstream commit 1cdfe9e346b4c5509ffe19ccde880fd259d9f7a3 ]
    
    ACPICA commit c11af67d8f7e3d381068ce7771322f2b5324d687
    
    If original_count is 0 in acpi_ut_update_ref_count (),
    acpi_ut_delete_internal_obj () is invoked for the target object, which is
    incorrect, because that object has been deleted once already and the
    memory allocated to store it may have been reclaimed and allocated
    for a different purpose by the host OS.  Moreover, a confusing debug
    message following the "Reference Count is already zero, cannot
    decrement" warning is printed in that case.
    
    To fix this issue, make acpi_ut_update_ref_count () return after finding
    that original_count is 0 and printing the above warning.
    
    Link: https://github.com/acpica/acpica/commit/c11af67d
    Link: https://github.com/acpica/acpica/pull/652
    Reported-by: Mark Asselstine <mark.asselstine@windriver.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 14 08:43:28 2022 -0800

    af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress
    
    commit 9d6d7f1cb67cdee15f1a0e85aacfb924e0e02435 upstream.
    
    wait_for_unix_gc() reads unix_tot_inflight & gc_in_progress
    without synchronization.
    
    Adds READ_ONCE()/WRITE_ONCE() and their associated comments
    to better document the intent.
    
    BUG: KCSAN: data-race in unix_inflight / wait_for_unix_gc
    
    write to 0xffffffff86e2b7c0 of 4 bytes by task 9380 on cpu 0:
     unix_inflight+0x1e8/0x260 net/unix/scm.c:63
     unix_attach_fds+0x10c/0x1e0 net/unix/scm.c:121
     unix_scm_to_skb net/unix/af_unix.c:1674 [inline]
     unix_dgram_sendmsg+0x679/0x16b0 net/unix/af_unix.c:1817
     unix_seqpacket_sendmsg+0xcc/0x110 net/unix/af_unix.c:2258
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     ____sys_sendmsg+0x39a/0x510 net/socket.c:2409
     ___sys_sendmsg net/socket.c:2463 [inline]
     __sys_sendmmsg+0x267/0x4c0 net/socket.c:2549
     __do_sys_sendmmsg net/socket.c:2578 [inline]
     __se_sys_sendmmsg net/socket.c:2575 [inline]
     __x64_sys_sendmmsg+0x53/0x60 net/socket.c:2575
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffffffff86e2b7c0 of 4 bytes by task 9375 on cpu 1:
     wait_for_unix_gc+0x24/0x160 net/unix/garbage.c:196
     unix_dgram_sendmsg+0x8e/0x16b0 net/unix/af_unix.c:1772
     unix_seqpacket_sendmsg+0xcc/0x110 net/unix/af_unix.c:2258
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     ____sys_sendmsg+0x39a/0x510 net/socket.c:2409
     ___sys_sendmsg net/socket.c:2463 [inline]
     __sys_sendmmsg+0x267/0x4c0 net/socket.c:2549
     __do_sys_sendmmsg net/socket.c:2578 [inline]
     __se_sys_sendmmsg net/socket.c:2575 [inline]
     __x64_sys_sendmmsg+0x53/0x60 net/socket.c:2575
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0x00000002 -> 0x00000004
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 9375 Comm: syz-executor.1 Not tainted 5.16.0-rc7-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 9915672d4127 ("af_unix: limit unix_tot_inflight")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20220114164328.2038499-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: hda: Add missing rwsem around snd_ctl_remove() calls [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 16 08:13:14 2021 +0100

    ALSA: hda: Add missing rwsem around snd_ctl_remove() calls
    
    [ Upstream commit 80bd64af75b4bb11c0329bc66c35da2ddfb66d88 ]
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch add the missing
    rwsem calls around it.
    
    Fixes: d13bd412dce2 ("ALSA: hda - Manage kcontrol lists")
    Link: https://lore.kernel.org/r/20211116071314.15065-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: jack: Add missing rwsem around snd_ctl_remove() calls [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 16 08:13:12 2021 +0100

    ALSA: jack: Add missing rwsem around snd_ctl_remove() calls
    
    [ Upstream commit 06764dc931848c3a9bc01a63bbf76a605408bb54 ]
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch add the missing
    rwsem calls around it.
    
    Fixes: 9058cbe1eed2 ("ALSA: jack: implement kctl creating for jack devices")
    Link: https://lore.kernel.org/r/20211116071314.15065-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: oss: fix compile error when OSS_DEBUG is enabled [+ + +]
Author: Bixuan Cui <cuibixuan@linux.alibaba.com>
Date:   Wed Dec 1 16:58:54 2021 +0800

    ALSA: oss: fix compile error when OSS_DEBUG is enabled
    
    [ Upstream commit 8e7daf318d97f25e18b2fc7eb5909e34cd903575 ]
    
    Fix compile error when OSS_DEBUG is enabled:
        sound/core/oss/pcm_oss.c: In function 'snd_pcm_oss_set_trigger':
        sound/core/oss/pcm_oss.c:2055:10: error: 'substream' undeclared (first
        use in this function); did you mean 'csubstream'?
          pcm_dbg(substream->pcm, "pcm_oss: trigger = 0x%x\n", trigger);
                  ^
    
    Fixes: 61efcee8608c ("ALSA: oss: Use standard printk helpers")
    Signed-off-by: Bixuan Cui <cuibixuan@linux.alibaba.com>
    Link: https://lore.kernel.org/r/1638349134-110369-1-git-send-email-cuibixuan@linux.alibaba.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 16 08:13:13 2021 +0100

    ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls
    
    [ Upstream commit 5471e9762e1af4b7df057a96bfd46cc250979b88 ]
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch add the missing
    rwsem calls around it.
    
    Fixes: a8ff48cb7083 ("ALSA: pcm: Free chmap at PCM free callback, too")
    Link: https://lore.kernel.org/r/20211116071314.15065-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: seq: Set upper limit of processed events [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 7 17:51:46 2021 +0100

    ALSA: seq: Set upper limit of processed events
    
    [ Upstream commit 6fadb494a638d8b8a55864ecc6ac58194f03f327 ]
    
    Currently ALSA sequencer core tries to process the queued events as
    much as possible when they become dispatchable.  If applications try
    to queue too massive events to be processed at the very same timing,
    the sequencer core would still try to process such all events, either
    in the interrupt context or via some notifier; in either away, it
    might be a cause of RCU stall or such problems.
    
    As a potential workaround for those problems, this patch adds the
    upper limit of the amount of events to be processed.  The remaining
    events are processed in the next batch, so they won't be lost.
    
    For the time being, it's limited up to 1000 events per queue, which
    should be high enough for any normal usages.
    
    Reported-by: Zqiang <qiang.zhang1211@gmail.com>
    Reported-by: syzbot+bb950e68b400ab4f65f8@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20211102033222.3849-1-qiang.zhang1211@gmail.com
    Link: https://lore.kernel.org/r/20211207165146.2888-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply [+ + +]
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Thu Oct 28 18:37:49 2021 -0400

    ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply
    
    [ Upstream commit ae80b6033834342601e99f74f6a62ff5092b1cee ]
    
    Unexpected WDCMSG_TARGET_START replay can lead to null-ptr-deref
    when ar->tx_cmd->odata is NULL. The patch adds a null check to
    prevent such case.
    
    KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
     ar5523_cmd+0x46a/0x581 [ar5523]
     ar5523_probe.cold+0x1b7/0x18da [ar5523]
     ? ar5523_cmd_rx_cb+0x7a0/0x7a0 [ar5523]
     ? __pm_runtime_set_status+0x54a/0x8f0
     ? _raw_spin_trylock_bh+0x120/0x120
     ? pm_runtime_barrier+0x220/0x220
     ? __pm_runtime_resume+0xb1/0xf0
     usb_probe_interface+0x25b/0x710
     really_probe+0x209/0x5d0
     driver_probe_device+0xc6/0x1b0
     device_driver_attach+0xe2/0x120
    
    I found the bug using a custome USBFuzz port. It's a research work
    to fuzz USB stack/drivers. I modified it to fuzz ath9k driver only,
    providing hand-crafted usb descriptors to QEMU.
    
    After fixing the code (fourth byte in usb packet) to WDCMSG_TARGET_START,
    I got the null-ptr-deref bug. I believe the bug is triggerable whenever
    cmd->odata is NULL. After patching, I tested with the same input and no
    longer see the KASAN report.
    
    This was NOT tested on a real device.
    
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/YXsmPQ3awHFLuAj2@10-18-43-117.dynapool.wireless.nyu.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus [+ + +]
Author: Biwen Li <biwen.li@nxp.com>
Date:   Tue Dec 14 03:32:38 2021 -0600

    arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus
    
    [ Upstream commit cbe9d948eadfe352ad45495a7cc5bf20a1b29d90 ]
    
    The i2c rtc is on i2c2 bus not i2c1 bus, so fix it in dts.
    
    Signed-off-by: Biwen Li <biwen.li@nxp.com>
    Signed-off-by: Li Yang <leoyang.lil@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: meson-gxbb-wetek: fix HDMI in early boot [+ + +]
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Tue Oct 12 05:25:20 2021 +0000

    arm64: dts: meson-gxbb-wetek: fix HDMI in early boot
    
    [ Upstream commit 8182a35868db5f053111d5d9d4da8fcb3f99259d ]
    
    Mark the VDDIO_AO18 regulator always-on and set hdmi-supply for the hdmi_tx
    node to ensure HDMI is powered in the early stages of boot.
    
    Fixes: fb72c03e0e32 ("ARM64: dts: meson-gxbb-wetek: add a wetek specific dtsi to cleanup hub and play2")
    
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://lore.kernel.org/r/20211012052522.30873-2-christianshewitt@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: meson-gxbb-wetek: fix missing GPIO binding [+ + +]
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Tue Oct 12 05:25:21 2021 +0000

    arm64: dts: meson-gxbb-wetek: fix missing GPIO binding
    
    [ Upstream commit c019abb2feba3cbbd7cf7178f8e6499c4fa6fced ]
    
    The absence of this binding appears to be harmless in Linux but it breaks
    Ethernet support in mainline u-boot. So add the binding (which is present
    in all other u-boot supported GXBB device-trees).
    
    Fixes: fb72c03e0e32 ("ARM64: dts: meson-gxbb-wetek: add a wetek specific dtsi to cleanup hub and play2")
    
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://lore.kernel.org/r/20211012052522.30873-3-christianshewitt@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8916: fix MMC controller aliases [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Wed Dec 1 05:05:59 2021 +0300

    arm64: dts: qcom: msm8916: fix MMC controller aliases
    
    [ Upstream commit b0293c19d42f6d6951c2fab9a47fed50baf2c14d ]
    
    Change sdhcN aliases to mmcN to make them actually work. Currently the
    board uses non-standard aliases sdhcN, which do not work, resulting in
    mmc0 and mmc1 hosts randomly changing indices between boots.
    
    Fixes: c4da5a561627 ("arm64: dts: qcom: Add msm8916 sdhci configuration nodes")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20211201020559.1611890-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: msm8996: drop not documented adreno properties [+ + +]
Author: David Heidelberg <david@ixit.cz>
Date:   Sat Oct 30 12:04:12 2021 +0200

    arm64: dts: qcom: msm8996: drop not documented adreno properties
    
    commit c41910f257a22dc406c60d8826b4a3b5398003a3 upstream.
    
    These properties aren't documented nor implemented in the driver.
    Drop them.
    
    Fixes warnings as:
    $ make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/msm/gpu.yaml
    ...
    arch/arm64/boot/dts/qcom/msm8996-mtp.dt.yaml: gpu@b00000: 'qcom,gpu-quirk-fault-detect-mask', 'qcom,gpu-quirk-two-pass-use-wfi' do not match any of the regexes: 'pinctrl-[0-9]+'
            From schema: Documentation/devicetree/bindings/display/msm/gpu.yaml
    ...
    
    Fixes: 69cc3114ab0f ("arm64: dts: Add Adreno GPU definitions")
    Signed-off-by: David Heidelberg <david@ixit.cz>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20211030100413.28370-1-david@ixit.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: dts: ti: k3-j721e: correct cache-sets info [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Fri Nov 12 14:31:55 2021 +0800

    arm64: dts: ti: k3-j721e: correct cache-sets info
    
    [ Upstream commit 7a0df1f969c14939f60a7f9a6af72adcc314675f ]
    
    A72 Cluster has 48KB Icache, 32KB Dcache and 1MB L2 Cache
     - ICache is 3-way set-associative
     - Dcache is 2-way set-associative
     - Line size are 64bytes
    
    So correct the cache-sets info.
    
    Fixes: 2d87061e70dea ("arm64: dts: ti: Add Support for J721E SoC")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20211112063155.3485777-1-peng.fan@oss.nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: ti: k3-j721e: Fix the L2 cache sets [+ + +]
Author: Nishanth Menon <nm@ti.com>
Date:   Fri Nov 12 22:36:39 2021 -0600

    arm64: dts: ti: k3-j721e: Fix the L2 cache sets
    
    [ Upstream commit e9ba3a5bc6fdc2c796c69fdaf5ed6c9957cf9f9d ]
    
    A72's L2 cache[1] on J721e[2] is 1MB. A72's L2 is fixed line length of
    64 bytes and 16-way set-associative cache structure.
    
    1MB of L2 / 64 (line length) = 16384 ways
    16384 ways / 16 = 1024 sets
    
    Fix the l2 cache-sets.
    
    [1] https://developer.arm.com/documentation/100095/0003/Level-2-Memory-System/About-the-L2-memory-system
    [2] http://www.ti.com/lit/pdf/spruil1
    
    Fixes: 2d87061e70de ("arm64: dts: ti: Add Support for J721E SoC")
    Reported-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20211113043639.4413-1-nm@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: tegra: Adjust length of CCPLEX cluster MMIO region [+ + +]
Author: Thierry Reding <treding@nvidia.com>
Date:   Tue Dec 7 14:28:29 2021 +0100

    arm64: tegra: Adjust length of CCPLEX cluster MMIO region
    
    [ Upstream commit 2b14cbd643feea5fc17c6e8bead4e71088c69acd ]
    
    The Tegra186 CCPLEX cluster register region is 4 MiB is length, not 4
    MiB - 1. This was likely presumed to be the "limit" rather than length.
    Fix it up.
    
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding [+ + +]
Author: Andre Przywara <andre.przywara@arm.com>
Date:   Mon Nov 22 16:28:43 2021 +0100

    ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding
    
    [ Upstream commit a92882a4d270fbcc021ee6848de5e48b7f0d27f3 ]
    
    In the decompressor's head.S we need to start with an instruction that
    is some kind of NOP, but also mimics as the PE/COFF header, when the
    kernel is linked as an UEFI application. The clever solution here is
    "tstne r0, #0x4d000", which in the worst case just clobbers the
    condition flags, and bears the magic "MZ" signature in the lowest 16 bits.
    
    However the encoding used (0x13105a4d) is actually not valid, since bits
    [15:12] are supposed to be 0 (written as "(0)" in the ARM ARM).
    Violating this is UNPREDICTABLE, and *can* trigger an UNDEFINED
    exception. Common Cortex cores seem to ignore those bits, but QEMU
    chooses to trap, so the code goes fishing because of a missing exception
    handler at this point. We are just saved by the fact that commonly (with
    -kernel or when running from U-Boot) the "Z" bit is set, so the
    instruction is never executed. See [0] for more details.
    
    To make things more robust and avoid UNPREDICTABLE behaviour in the
    kernel code, lets replace this with a "two-instruction NOP":
    The first instruction is an exclusive OR, the effect of which the second
    instruction reverts. This does not leave any trace, neither in a
    register nor in the condition flags. Also it's a perfectly valid
    encoding. Kudos to Peter Maydell for coming up with this gem.
    
    [0] https://lore.kernel.org/qemu-devel/YTPIdbUCmwagL5%2FD@os.inf.tu-dresden.de/T/
    
    Link: https://lore.kernel.org/linux-arm-kernel/20210908162617.104962-1-andre.przywara@arm.com/T/
    
    Fixes: 81a0bc39ea19 ("ARM: add UEFI stub support")
    Signed-off-by: Andre Przywara <andre.przywara@arm.com>
    Reported-by: Adam Lackorzynski <adam@l4re.org>
    Suggested-by: Peter Maydell <peter.maydell@linaro.org>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: armada-38x: Add generic compatible to UART nodes [+ + +]
Author: Marek Behún <kabel@kernel.org>
Date:   Tue Nov 9 17:46:04 2021 +0100

    ARM: dts: armada-38x: Add generic compatible to UART nodes
    
    [ Upstream commit 62480772263ab6b52e758f2346c70a526abd1d28 ]
    
    Add generic compatible string "ns16550a" to serial port nodes of Armada
    38x.
    
    This makes it possible to use earlycon.
    
    Fixes: 0d3d96ab0059 ("ARM: mvebu: add Device Tree description of the Armada 380/385 SoCs")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors [+ + +]
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Mon Dec 6 01:43:34 2021 +0100

    ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors
    
    [ Upstream commit 4754eab7e5a78bdefe7a960c5c260c95ebbb5fa6 ]
    
    Steven Maddox reported in the OpenWrt bugzilla, that his
    RaidSonic IB-NAS4220-B was no longer booting with the new
    OpenWrt 21.02 (uses linux 5.10's device-tree). However, it was
    working with the previous OpenWrt 19.07 series (uses 4.14).
    
    |[    5.548038] No RedBoot partition table detected in 30000000.flash
    |[    5.618553] Searching for RedBoot partition table in 30000000.flash at offset 0x0
    |[    5.739093] No RedBoot partition table detected in 30000000.flash
    |...
    |[    7.039504] Waiting for root device /dev/mtdblock3...
    
    The provided bootlog shows that the RedBoot partition parser was
    looking for the partition table "at offset 0x0". Which is strange
    since the comment in the device-tree says it should be at 0xfe0000.
    
    Further digging on the internet led to a review site that took
    some useful PCB pictures of their review unit back in February 2009.
    Their picture shows a Spansion S29GL128N11TFI01 flash chip.
    
    >From Spansion's Datasheet:
    "S29GL128N: One hundred twenty-eight 64 Kword (128 Kbyte) sectors"
    Steven also provided a "cat /sys/class/mtd/mtd0/erasesize" from his
    unit: "131072".
    
    With the 128 KiB Sector/Erasesize in mind. This patch changes the
    fis-index-block property to (0xfe0000 / 0x20000) = 0x7f.
    
    Fixes: b5a923f8c739 ("ARM: dts: gemini: Switch to redboot partition parsing")
    Reported-by: Steven Maddox <s.maddox@lantizia.me.uk>
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Tested-by: Steven Maddox <s.maddox@lantizia.me.uk>
    Link: https://lore.kernel.org/r/20211206004334.4169408-1-linus.walleij@linaro.org'
    Bugzilla: https://bugs.openwrt.org/index.php?do=details&task_id=4137
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: shmobile: rcar-gen2: Add missing of_node_put() [+ + +]
Author: Wan Jiabing <wanjiabing@vivo.com>
Date:   Sun Oct 17 21:45:03 2021 -0400

    ARM: shmobile: rcar-gen2: Add missing of_node_put()
    
    [ Upstream commit 85744f2d938c5f3cfc44cb6533c157469634da93 ]
    
    Fix following coccicheck warning:
    ./arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c:156:1-33: Function
    for_each_matching_node_and_match should have of_node_put() before break
    and goto.
    
    Early exits from for_each_matching_node_and_match() should decrement the
    node reference counter.
    
    Signed-off-by: Wan Jiabing <wanjiabing@vivo.com>
    Link: https://lore.kernel.org/r/20211018014503.7598-1-wanjiabing@vivo.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: mediatek: Check for error clk pointer [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 22 09:51:57 2021 +0800

    ASoC: mediatek: Check for error clk pointer
    
    [ Upstream commit 9de2b9286a6dd16966959b3cb34fc2ddfd39213e ]
    
    Yes, you are right and now the return code depending on the
    init_clks().
    
    Fixes: 6078c651947a ("soc: mediatek: Refine scpsys to support multiple platform")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20211222015157.1025853-1-jiasheng@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: mediatek: mt8173: fix device_node leak [+ + +]
Author: Tzung-Bi Shih <tzungbi@google.com>
Date:   Fri Dec 24 14:47:16 2021 +0800

    ASoC: mediatek: mt8173: fix device_node leak
    
    [ Upstream commit 493433785df0075afc0c106ab65f10a605d0b35d ]
    
    Fixes the device_node leak.
    
    Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
    Link: https://lore.kernel.org/r/20211224064719.2031210-2-tzungbi@google.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: rt5663: Handle device_property_read_u32_array error codes [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Wed Dec 15 11:15:50 2021 +0800

    ASoC: rt5663: Handle device_property_read_u32_array error codes
    
    [ Upstream commit 2167c0b205960607fb136b4bb3c556a62be1569a ]
    
    The return value of device_property_read_u32_array() is not always 0.
    To catch the exception in case that devm_kzalloc failed and the
    rt5663->imp_table was NULL, which caused the failure of
    device_property_read_u32_array.
    
    Fixes: 450f0f6a8fb4 ("ASoC: rt5663: Add the manual offset field to compensate the DC offset")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20211215031550.70702-1-jiasheng@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: samsung: idma: Check of ioremap return value [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Tue Dec 28 11:40:26 2021 +0800

    ASoC: samsung: idma: Check of ioremap return value
    
    [ Upstream commit 3ecb46755eb85456b459a1a9f952c52986bce8ec ]
    
    Because of the potential failure of the ioremap(), the buf->area could
    be NULL.
    Therefore, we need to check it and return -ENOMEM in order to transfer
    the error.
    
    Fixes: f09aecd50f39 ("ASoC: SAMSUNG: Add I2S0 internal dma driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211228034026.1659385-1-jiasheng@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA [+ + +]
Author: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Date:   Thu Nov 25 10:51:57 2021 +0100

    ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA
    
    [ Upstream commit 49f893253ab43566e34332a969324531fea463f6 ]
    
    Commit f37fe2f9987b ("ASoC: uniphier: add support for UniPhier AIO common
    driver") adds configs SND_SOC_UNIPHIER_{LD11,PXS2}, which select the
    non-existing config SND_SOC_UNIPHIER_AIO_DMA.
    
    Hence, ./scripts/checkkconfigsymbols.py warns:
    
      SND_SOC_UNIPHIER_AIO_DMA
      Referencing files: sound/soc/uniphier/Kconfig
    
    Probably, there is actually no further config intended to be selected
    here. So, just drop selecting the non-existing config.
    
    Fixes: f37fe2f9987b ("ASoC: uniphier: add support for UniPhier AIO common driver")
    Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    Link: https://lore.kernel.org/r/20211125095158.8394-2-lukas.bulwahn@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ath10k: Fix tx hanging [+ + +]
Author: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Date:   Wed May 5 15:58:06 2021 +0700

    ath10k: Fix tx hanging
    
    [ Upstream commit e8a91863eba3966a447d2daa1526082d52b5db2a ]
    
    While running stress tests in roaming scenarios (switching ap's every 5
    seconds, we discovered a issue which leads to tx hangings of exactly 5
    seconds while or after scanning for new accesspoints. We found out that
    this hanging is triggered by ath10k_mac_wait_tx_complete since the
    empty_tx_wq was not wake when the num_tx_pending counter reaches zero.
    To fix this, we simply move the wake_up call to htt_tx_dec_pending,
    since this call was missed on several locations within the ath10k code.
    
    Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20210505085806.11474-1-s.gottschall@dd-wrt.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream [+ + +]
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Thu Oct 28 18:21:42 2021 -0400

    ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream
    
    [ Upstream commit 6ce708f54cc8d73beca213cec66ede5ce100a781 ]
    
    Large pkt_len can lead to out-out-bound memcpy. Current
    ath9k_hif_usb_rx_stream allows combining the content of two urb
    inputs to one pkt. The first input can indicate the size of the
    pkt. Any remaining size is saved in hif_dev->rx_remain_len.
    While processing the next input, memcpy is used with rx_remain_len.
    
    4-byte pkt_len can go up to 0xffff, while a single input is 0x4000
    maximum in size (MAX_RX_BUF_SIZE). Thus, the patch adds a check for
    pkt_len which must not exceed 2 * MAX_RX_BUG_SIZE.
    
    BUG: KASAN: slab-out-of-bounds in ath9k_hif_usb_rx_cb+0x490/0xed7 [ath9k_htc]
    Read of size 46393 at addr ffff888018798000 by task kworker/0:1/23
    
    CPU: 0 PID: 23 Comm: kworker/0:1 Not tainted 5.6.0 #63
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
    BIOS rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org 04/01/2014
    Workqueue: events request_firmware_work_func
    Call Trace:
     <IRQ>
     dump_stack+0x76/0xa0
     print_address_description.constprop.0+0x16/0x200
     ? ath9k_hif_usb_rx_cb+0x490/0xed7 [ath9k_htc]
     ? ath9k_hif_usb_rx_cb+0x490/0xed7 [ath9k_htc]
     __kasan_report.cold+0x37/0x7c
     ? ath9k_hif_usb_rx_cb+0x490/0xed7 [ath9k_htc]
     kasan_report+0xe/0x20
     check_memory_region+0x15a/0x1d0
     memcpy+0x20/0x50
     ath9k_hif_usb_rx_cb+0x490/0xed7 [ath9k_htc]
     ? hif_usb_mgmt_cb+0x2d9/0x2d9 [ath9k_htc]
     ? _raw_spin_lock_irqsave+0x7b/0xd0
     ? _raw_spin_trylock_bh+0x120/0x120
     ? __usb_unanchor_urb+0x12f/0x210
     __usb_hcd_giveback_urb+0x1e4/0x380
     usb_giveback_urb_bh+0x241/0x4f0
     ? __hrtimer_run_queues+0x316/0x740
     ? __usb_hcd_giveback_urb+0x380/0x380
     tasklet_action_common.isra.0+0x135/0x330
     __do_softirq+0x18c/0x634
     irq_exit+0x114/0x140
     smp_apic_timer_interrupt+0xde/0x380
     apic_timer_interrupt+0xf/0x20
    
    I found the bug using a custome USBFuzz port. It's a research work
    to fuzz USB stack/drivers. I modified it to fuzz ath9k driver only,
    providing hand-crafted usb descriptors to QEMU.
    
    After fixing the value of pkt_tag to ATH_USB_RX_STREAM_MODE_TAG in QEMU
    emulation, I found the KASAN report. The bug is triggerable whenever
    pkt_len is above two MAX_RX_BUG_SIZE. I used the same input that crashes
    to test the driver works when applying the patch.
    
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/YXsidrRuK6zBJicZ@10-18-43-117.dynapool.wireless.nyu.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
audit: ensure userspace is penalized the same as the kernel when under pressure [+ + +]
Author: Paul Moore <paul@paul-moore.com>
Date:   Mon Dec 13 15:45:20 2021 -0500

    audit: ensure userspace is penalized the same as the kernel when under pressure
    
    [ Upstream commit 8f110f530635af44fff1f4ee100ecef0bac62510 ]
    
    Due to the audit control mutex necessary for serializing audit
    userspace messages we haven't been able to block/penalize userspace
    processes that attempt to send audit records while the system is
    under audit pressure.  The result is that privileged userspace
    applications have a priority boost with respect to audit as they are
    not bound by the same audit queue throttling as the other tasks on
    the system.
    
    This patch attempts to restore some balance to the system when under
    audit pressure by blocking these privileged userspace tasks after
    they have finished their audit processing, and dropped the audit
    control mutex, but before they return to userspace.
    
    Reported-by: Gaosheng Cui <cuigaosheng1@huawei.com>
    Tested-by: Gaosheng Cui <cuigaosheng1@huawei.com>
    Reviewed-by: Richard Guy Briggs <rgb@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
batman-adv: allow netlink usage in unprivileged containers [+ + +]
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Sun Oct 31 22:30:12 2021 +0100

    batman-adv: allow netlink usage in unprivileged containers
    
    [ Upstream commit 9057d6c23e7388ee9d037fccc9a7bc8557ce277b ]
    
    Currently, creating a batman-adv interface in an unprivileged LXD
    container and attaching secondary interfaces to it with "ip" or "batctl"
    works fine. However all batctl debug and configuration commands
    fail:
    
      root@container:~# batctl originators
      Error received: Operation not permitted
      root@container:~# batctl orig_interval
      1000
      root@container:~# batctl orig_interval 2000
      root@container:~# batctl orig_interval
      1000
    
    To fix this change the generic netlink permissions from GENL_ADMIN_PERM
    to GENL_UNS_ADMIN_PERM. This way a batman-adv interface is fully
    maintainable as root from within a user namespace, from an unprivileged
    container.
    
    All except one batman-adv netlink setting are per interface and do not
    leak information or change settings from the host system and are
    therefore save to retrieve or modify as root from within an unprivileged
    container.
    
    "batctl routing_algo" / BATADV_CMD_GET_ROUTING_ALGOS is the only
    exception: It provides the batman-adv kernel module wide default routing
    algorithm. However it is read-only from netlink and an unprivileged
    container is still not allowed to modify
    /sys/module/batman_adv/parameters/routing_algo. Instead it is advised to
    use the newly introduced "batctl if create routing_algo RA_NAME" /
    IFLA_BATADV_ALGO_NAME to set the routing algorithm on interface
    creation, which already works fine in an unprivileged container.
    
    Cc: Tycho Andersen <tycho@tycho.pizza>
    Signed-off-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: Sasha Levin <sashal@kernel.org>

 
bcmgenet: add WOL IRQ check [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Thu Jan 13 22:46:07 2022 +0300

    bcmgenet: add WOL IRQ check
    
    commit 9deb48b53e7f4056c2eaa2dc2ee3338df619e4f6 upstream.
    
    The driver neglects to check the result of platform_get_irq_optional()'s
    call and blithely passes the negative error codes to devm_request_irq()
    (which takes *unsigned* IRQ #), causing it to fail with -EINVAL.
    Stop calling devm_request_irq() with the invalid IRQ #s.
    
    Fixes: 8562056f267d ("net: bcmgenet: request Wake-on-LAN interrupt")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
binder: fix handling of error during copy [+ + +]
Author: Todd Kjos <tkjos@google.com>
Date:   Tue Nov 30 10:51:49 2021 -0800

    binder: fix handling of error during copy
    
    [ Upstream commit fe6b1869243f23a485a106c214bcfdc7aa0ed593 ]
    
    If a memory copy function fails to copy the whole buffer,
    a positive integar with the remaining bytes is returned.
    In binder_translate_fd_array() this can result in an fd being
    skipped due to the failed copy, but the loop continues
    processing fds since the early return condition expects a
    negative integer on error.
    
    Fix by returning "ret > 0 ? -EINVAL : ret" to handle this case.
    
    Fixes: bb4a2e48d510 ("binder: return errors from buffer copy functions")
    Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Link: https://lore.kernel.org/r/20211130185152.437403-2-tkjos@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: btmtksdio: fix resume failure [+ + +]
Author: Sean Wang <sean.wang@mediatek.com>
Date:   Thu Dec 2 02:02:47 2021 +0800

    Bluetooth: btmtksdio: fix resume failure
    
    [ Upstream commit 561ae1d46a8ddcbc13162d5771f5ed6c8249e730 ]
    
    btmtksdio have to rely on MMC_PM_KEEP_POWER in pm_flags to avoid that
    SDIO power is being shut off during the device is in suspend. That fixes
    the SDIO command fails to access the bus after the device is resumed.
    
    Fixes: 7f3c563c575e7 ("Bluetooth: btmtksdio: Add runtime PM support to SDIO based Bluetooth")
    Co-developed-by: Mark-yw Chen <mark-yw.chen@mediatek.com>
    Signed-off-by: Mark-yw Chen <mark-yw.chen@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails [+ + +]
Author: Wang Hai <wanghai38@huawei.com>
Date:   Mon Oct 25 21:10:12 2021 +0800

    Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails
    
    [ Upstream commit 2a7ca7459d905febf519163bd9e3eed894de6bb7 ]
    
    I got a kernel BUG report when doing fault injection test:
    
    ------------[ cut here ]------------
    kernel BUG at lib/list_debug.c:45!
    ...
    RIP: 0010:__list_del_entry_valid.cold+0x12/0x4d
    ...
    Call Trace:
     proto_unregister+0x83/0x220
     cmtp_cleanup_sockets+0x37/0x40 [cmtp]
     cmtp_exit+0xe/0x1f [cmtp]
     do_syscall_64+0x35/0xb0
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    If cmtp_init_sockets() in cmtp_init() fails, cmtp_init() still returns
    success. This will cause a kernel bug when accessing uncreated ctmp
    related data when the module exits.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: Fix debugfs entry leak in hci_register_dev() [+ + +]
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Wed Oct 13 16:55:46 2021 +0800

    Bluetooth: Fix debugfs entry leak in hci_register_dev()
    
    [ Upstream commit 5a4bb6a8e981d3d0d492aa38412ee80b21033177 ]
    
    Fault injection test report debugfs entry leak as follows:
    
    debugfs: Directory 'hci0' with parent 'bluetooth' already present!
    
    When register_pm_notifier() failed in hci_register_dev(), the debugfs
    create by debugfs_create_dir() do not removed in the error handing path.
    
    Add the remove debugfs code to fix it.
    
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_bcm: Check for error irq [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Fri Dec 24 10:53:18 2021 +0800

    Bluetooth: hci_bcm: Check for error irq
    
    [ Upstream commit b38cd3b42fba66cc538edb9cf77e07881f43f8e2 ]
    
    For the possible failure of the platform_get_irq(), the returned irq
    could be error number and will finally cause the failure of the
    request_irq().
    Consider that platform_get_irq() can now in certain cases return
    -EPROBE_DEFER, and the consequences of letting request_irq() effectively
    convert that into -EINVAL, even at probe time rather than later on.
    So it might be better to check just now.
    
    Fixes: 0395ffc1ee05 ("Bluetooth: hci_bcm: Add PM for BCM devices")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: stop proccessing malicious adv data [+ + +]
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Mon Nov 1 10:12:12 2021 +0300

    Bluetooth: stop proccessing malicious adv data
    
    [ Upstream commit 3a56ef719f0b9682afb8a86d64b2399e36faa4e6 ]
    
    Syzbot reported slab-out-of-bounds read in hci_le_adv_report_evt(). The
    problem was in missing validaion check.
    
    We should check if data is not malicious and we can read next data block.
    If we won't check ptr validness, code can read a way beyond skb->end and
    it can cause problems, of course.
    
    Fixes: e95beb414168 ("Bluetooth: hci_le_adv_report_evt code refactoring")
    Reported-and-tested-by: syzbot+e3fcb9c4f3c2a931dc40@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Do not WARN in bpf_warn_invalid_xdp_action() [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 30 11:08:06 2021 +0100

    bpf: Do not WARN in bpf_warn_invalid_xdp_action()
    
    [ Upstream commit 2cbad989033bff0256675c38f96f5faab852af4b ]
    
    The WARN_ONCE() in bpf_warn_invalid_xdp_action() can be triggered by
    any bugged program, and even attaching a correct program to a NIC
    not supporting the given action.
    
    The resulting splat, beyond polluting the logs, fouls automated tools:
    e.g. a syzkaller reproducers using an XDP program returning an
    unsupported action will never pass validation.
    
    Replace the WARN_ONCE with a less intrusive pr_warn_once().
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/bpf/016ceec56e4817ebb2a9e35ce794d5c917df572c.1638189075.git.pabeni@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Date:   Tue Jan 4 10:31:48 2022 +0900

    bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt().
    
    [ Upstream commit 04c350b1ae6bdb12b84009a4d0bf5ab4e621c47b ]
    
    The commit 4057765f2dee ("sock: consistent handling of extreme
    SO_SNDBUF/SO_RCVBUF values") added a change to prevent underflow
    in setsockopt() around SO_SNDBUF/SO_RCVBUF.
    
    This patch adds the same change to _bpf_setsockopt().
    
    Fixes: 4057765f2dee ("sock: consistent handling of extreme SO_SNDBUF/SO_RCVBUF values")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220104013153.97906-2-kuniyu@amazon.co.jp
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpftool: Enable line buffering for stdout [+ + +]
Author: Paul Chaignon <paul@isovalent.com>
Date:   Mon Dec 20 22:45:28 2021 +0100

    bpftool: Enable line buffering for stdout
    
    [ Upstream commit 1a1a0b0364ad291bd8e509da104ac8b5b1afec5d ]
    
    The output of bpftool prog tracelog is currently buffered, which is
    inconvenient when piping the output into other commands. A simple
    tracelog | grep will typically not display anything. This patch fixes it
    by enabling line buffering on stdout for the whole bpftool binary.
    
    Fixes: 30da46b5dc3a ("tools: bpftool: add a command to dump the trace pipe")
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Paul Chaignon <paul@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20211220214528.GA11706@Mem
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpftool: Remove inclusion of utilities.mak from Makefiles [+ + +]
Author: Quentin Monnet <quentin@isovalent.com>
Date:   Wed Nov 10 11:46:28 2021 +0000

    bpftool: Remove inclusion of utilities.mak from Makefiles
    
    commit 48f5aef4c458c19ab337eed8c95a6486cc014aa3 upstream.
    
    Bpftool's Makefile, and the Makefile for its documentation, both include
    scripts/utilities.mak, but they use none of the items defined in this
    file. Remove the includes.
    
    Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211110114632.24537-3-quentin@isovalent.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
btrfs: check the root node for uptodate before returning it [+ + +]
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Nov 24 14:14:24 2021 -0500

    btrfs: check the root node for uptodate before returning it
    
    commit 120de408e4b97504a2d9b5ca534b383de2c73d49 upstream.
    
    Now that we clear the extent buffer uptodate if we fail to write it out
    we need to check to see if our root node is uptodate before we search
    down it.  Otherwise we could return stale data (or potentially corrupt
    data that was caught by the write verification step) and think that the
    path is OK to search down.
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix deadlock between quota enable and other quota operations [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Oct 27 18:30:25 2021 +0100

    btrfs: fix deadlock between quota enable and other quota operations
    
    commit 232796df8c1437c41d308d161007f0715bac0a54 upstream.
    
    When enabling quotas, we attempt to commit a transaction while holding the
    mutex fs_info->qgroup_ioctl_lock. This can result on a deadlock with other
    quota operations such as:
    
    - qgroup creation and deletion, ioctl BTRFS_IOC_QGROUP_CREATE;
    
    - adding and removing qgroup relations, ioctl BTRFS_IOC_QGROUP_ASSIGN.
    
    This is because these operations join a transaction and after that they
    attempt to lock the mutex fs_info->qgroup_ioctl_lock. Acquiring that mutex
    after joining or starting a transaction is a pattern followed everywhere
    in qgroups, so the quota enablement operation is the one at fault here,
    and should not commit a transaction while holding that mutex.
    
    Fix this by making the transaction commit while not holding the mutex.
    We are safe from two concurrent tasks trying to enable quotas because
    we are serialized by the rw semaphore fs_info->subvol_sem at
    btrfs_ioctl_quota_ctl(), which is the only call site for enabling
    quotas.
    
    When this deadlock happens, it produces a trace like the following:
    
      INFO: task syz-executor:25604 blocked for more than 143 seconds.
      Not tainted 5.15.0-rc6 #4
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      task:syz-executor state:D stack:24800 pid:25604 ppid: 24873 flags:0x00004004
      Call Trace:
      context_switch kernel/sched/core.c:4940 [inline]
      __schedule+0xcd9/0x2530 kernel/sched/core.c:6287
      schedule+0xd3/0x270 kernel/sched/core.c:6366
      btrfs_commit_transaction+0x994/0x2e90 fs/btrfs/transaction.c:2201
      btrfs_quota_enable+0x95c/0x1790 fs/btrfs/qgroup.c:1120
      btrfs_ioctl_quota_ctl fs/btrfs/ioctl.c:4229 [inline]
      btrfs_ioctl+0x637e/0x7b70 fs/btrfs/ioctl.c:5010
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:874 [inline]
      __se_sys_ioctl fs/ioctl.c:860 [inline]
      __x64_sys_ioctl+0x193/0x200 fs/ioctl.c:860
      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:0x7f86920b2c4d
      RSP: 002b:00007f868f61ac58 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00007f86921d90a0 RCX: 00007f86920b2c4d
      RDX: 0000000020005e40 RSI: 00000000c0109428 RDI: 0000000000000008
      RBP: 00007f869212bd80 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007f86921d90a0
      R13: 00007fff6d233e4f R14: 00007fff6d233ff0 R15: 00007f868f61adc0
      INFO: task syz-executor:25628 blocked for more than 143 seconds.
      Not tainted 5.15.0-rc6 #4
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      task:syz-executor state:D stack:29080 pid:25628 ppid: 24873 flags:0x00004004
      Call Trace:
      context_switch kernel/sched/core.c:4940 [inline]
      __schedule+0xcd9/0x2530 kernel/sched/core.c:6287
      schedule+0xd3/0x270 kernel/sched/core.c:6366
      schedule_preempt_disabled+0xf/0x20 kernel/sched/core.c:6425
      __mutex_lock_common kernel/locking/mutex.c:669 [inline]
      __mutex_lock+0xc96/0x1680 kernel/locking/mutex.c:729
      btrfs_remove_qgroup+0xb7/0x7d0 fs/btrfs/qgroup.c:1548
      btrfs_ioctl_qgroup_create fs/btrfs/ioctl.c:4333 [inline]
      btrfs_ioctl+0x683c/0x7b70 fs/btrfs/ioctl.c:5014
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:874 [inline]
      __se_sys_ioctl fs/ioctl.c:860 [inline]
      __x64_sys_ioctl+0x193/0x200 fs/ioctl.c:860
      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
    
    Reported-by: Hao Sun <sunhao.th@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/CACkBjsZQF19bQ1C6=yetF3BvL10OSORpFUcWXTP6HErshDB4dQ@mail.gmail.com/
    Fixes: 340f1aa27f36 ("btrfs: qgroups: Move transaction management inside btrfs_quota_enable/disable")
    CC: stable@vger.kernel.org # 4.19
    Reviewed-by: Qu Wenruo <wqu@suse.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>

btrfs: remove BUG_ON(!eie) in find_parent_nodes [+ + +]
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Nov 5 16:45:35 2021 -0400

    btrfs: remove BUG_ON(!eie) in find_parent_nodes
    
    [ Upstream commit 9f05c09d6baef789726346397438cca4ec43c3ee ]
    
    If we're looking for leafs that point to a data extent we want to record
    the extent items that point at our bytenr.  At this point we have the
    reference and we know for a fact that this leaf should have a reference
    to our bytenr.  However if there's some sort of corruption we may not
    find any references to our leaf, and thus could end up with eie == NULL.
    Replace this BUG_ON() with an ASSERT() and then return -EUCLEAN for the
    mortals.
    
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: remove BUG_ON() in find_parent_nodes() [+ + +]
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Nov 5 16:45:34 2021 -0400

    btrfs: remove BUG_ON() in find_parent_nodes()
    
    [ Upstream commit fcba0120edf88328524a4878d1d6f4ad39f2ec81 ]
    
    We search for an extent entry with .offset = -1, which shouldn't be a
    thing, but corruption happens.  Add an ASSERT() for the developers,
    return -EUCLEAN for mortals.
    
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: respect the max size in the header when activating swap file [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Dec 16 15:00:32 2021 +0000

    btrfs: respect the max size in the header when activating swap file
    
    commit c2f822635df873c510bda6fb7fd1b10b7c31be2d upstream.
    
    If we extended the size of a swapfile after its header was created (by the
    mkswap utility) and then try to activate it, we will map the entire file
    when activating the swap file, instead of limiting to the max size defined
    in the swap file's header.
    
    Currently test case generic/643 from fstests fails because we do not
    respect that size limit defined in the swap file's header.
    
    So fix this by not mapping file ranges beyond the max size defined in the
    swap header.
    
    This is the same type of bug that iomap used to have, and was fixed in
    commit 36ca7943ac18ae ("mm/swap: consider max pages in
    iomap_swapfile_add_extent").
    
    Fixes: ed46ff3d423780 ("Btrfs: support swap files")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-and-tested-by: Josef Bacik <josef@toxicpanda.com
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: softing: softing_startstop(): fix set but not used variable warning [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Sat Jan 8 21:57:51 2022 +0100

    can: softing: softing_startstop(): fix set but not used variable warning
    
    [ Upstream commit 370d988cc529598ebaec6487d4f84c2115dc696b ]
    
    In the function softing_startstop() the variable error_reporting is
    assigned but not used. The code that uses this variable is commented
    out. Its stated that the functionality is not finally verified.
    
    To fix the warning:
    
    | drivers/net/can/softing/softing_fw.c:424:9: error: variable 'error_reporting' set but not used [-Werror,-Wunused-but-set-variable]
    
    remove the comment, activate the code, but add a "0 &&" to the if
    expression and rely on the optimizer rather than the preprocessor to
    remove the code.
    
    Link: https://lore.kernel.org/all/20220109103126.1872833-1-mkl@pengutronix.de
    Fixes: 03fd3cf5a179 ("can: add driver for Softing card")
    Cc: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: softing_cs: softingcs_probe(): fix memleak on registration failure [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Dec 22 11:48:43 2021 +0100

    can: softing_cs: softingcs_probe(): fix memleak on registration failure
    
    commit ced4913efb0acc844ed65cc01d091a85d83a2082 upstream.
    
    In case device registration fails during probe, the driver state and
    the embedded platform device structure needs to be freed using
    platform_device_put() to properly free all resources (e.g. the device
    name).
    
    Fixes: 0a0b7a5f7a04 ("can: add driver for Softing card")
    Link: https://lore.kernel.org/all/20211222104843.6105-1-johan@kernel.org
    Cc: stable@vger.kernel.org # 2.6.38
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: xilinx_can: xcan_probe(): check for error irq [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Fri Dec 24 10:13:24 2021 +0800

    can: xilinx_can: xcan_probe(): check for error irq
    
    [ Upstream commit c6564c13dae25cd7f8e1de5127b4da4500ee5844 ]
    
    For the possible failure of the platform_get_irq(), the returned irq
    could be error number and will finally cause the failure of the
    request_irq().
    
    Consider that platform_get_irq() can now in certain cases return
    -EPROBE_DEFER, and the consequences of letting request_irq()
    effectively convert that into -EINVAL, even at probe time rather than
    later on. So it might be better to check just now.
    
    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Link: https://lore.kernel.org/all/20211224021324.1447494-1-jiasheng@iscas.ac.cn
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
char/mwave: Adjust io port register size [+ + +]
Author: Kees Cook <keescook@chromium.org>
Date:   Fri Dec 3 00:42:06 2021 -0800

    char/mwave: Adjust io port register size
    
    [ Upstream commit f5912cc19acd7c24b2dbf65a6340bf194244f085 ]
    
    Using MKWORD() on a byte-sized variable results in OOB read. Expand the
    size of the reserved area so both MKWORD and MKBYTE continue to work
    without overflow. Silences this warning on a -Warray-bounds build:
    
    drivers/char/mwave/3780i.h:346:22: error: array subscript 'short unsigned int[0]' is partly outside array bounds of 'DSP_ISA_SLAVE_CONTROL[1]' [-Werror=array-bounds]
      346 | #define MKWORD(var) (*((unsigned short *)(&var)))
          |                     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/char/mwave/3780i.h:356:40: note: in definition of macro 'OutWordDsp'
      356 | #define OutWordDsp(index,value)   outw(value,usDspBaseIO+index)
          |                                        ^~~~~
    drivers/char/mwave/3780i.c:373:41: note: in expansion of macro 'MKWORD'
      373 |         OutWordDsp(DSP_IsaSlaveControl, MKWORD(rSlaveControl));
          |                                         ^~~~~~
    drivers/char/mwave/3780i.c:358:31: note: while referencing 'rSlaveControl'
      358 |         DSP_ISA_SLAVE_CONTROL rSlaveControl;
          |                               ^~~~~~~~~~~~~
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20211203084206.3104326-1-keescook@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clk: bcm-2835: Pick the closest clock rate [+ + +]
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Wed Sep 22 14:54:15 2021 +0200

    clk: bcm-2835: Pick the closest clock rate
    
    [ Upstream commit 5517357a4733d7cf7c17fc79d0530cfa47add372 ]
    
    The driver currently tries to pick the closest rate that is lower than
    the rate being requested.
    
    This causes an issue with clk_set_min_rate() since it actively checks
    for the rounded rate to be above the minimum that was just set.
    
    Let's change the logic a bit to pick the closest rate to the requested
    rate, no matter if it's actually higher or lower.
    
    Fixes: 6d18b8adbe67 ("clk: bcm2835: Support for clock parent selection")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
    Tested-by: Nicolas Saenz Julienne <nsaenz@kernel.org> # boot and basic functionality
    Tested-by: Michael Stapelberg <michael@stapelberg.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210922125419.4125779-2-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: bcm-2835: Remove rounding up the dividers [+ + +]
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Wed Sep 22 14:54:16 2021 +0200

    clk: bcm-2835: Remove rounding up the dividers
    
    [ Upstream commit 8ca011ef4af48a7af7b15afd8a4a44039dd04cea ]
    
    The driver, once it found a divider, tries to round it up by increasing
    the least significant bit of the fractional part by one when the
    round_up argument is set and there's a remainder.
    
    However, since it increases the divider it will actually reduce the
    clock rate below what we were asking for, leading to issues with
    clk_set_min_rate() that will complain that our rounded clock rate is
    below the minimum of the rate.
    
    Since the dividers are fairly precise already, let's remove that part so
    that we can have clk_set_min_rate() working.
    
    This is effectively a revert of 9c95b32ca093 ("clk: bcm2835: add a round
    up ability to the clock divisor").
    
    Fixes: 9c95b32ca093 ("clk: bcm2835: add a round up ability to the clock divisor")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
    Tested-by: Nicolas Saenz Julienne <nsaenz@kernel.org> # boot and basic functionality
    Tested-by: Michael Stapelberg <michael@stapelberg.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210922125419.4125779-3-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: imx8mn: Fix imx8mn_clko1_sels [+ + +]
Author: Adam Ford <aford173@gmail.com>
Date:   Wed Nov 17 07:32:02 2021 -0600

    clk: imx8mn: Fix imx8mn_clko1_sels
    
    [ Upstream commit 570727e9acfac1c2330a01dd5e1272e9c3acec08 ]
    
    When attempting to use sys_pll1_80m as the parent for clko1, the
    system hangs.  This is due to the fact that the source select
    for sys_pll1_80m was incorrectly pointing to m7_alt_pll_clk, which
    doesn't yet exist.
    
    According to Rev 3 of the TRM, The imx8mn_clko1_sels also incorrectly
    references an osc_27m which does not exist, nor does an entry for
    source select bits 010b.  Fix both by inserting a dummy clock into
    the missing space in the table and renaming the incorrectly name clock
    with dummy.
    
    Fixes: 96d6392b54db ("clk: imx: Add support for i.MX8MN clock driver")
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Link: https://lore.kernel.org/r/20211117133202.775633-1-aford173@gmail.com
    Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB [+ + +]
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sun Oct 31 14:50:06 2021 +0100

    clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB
    
    [ Upstream commit ff54938dd190d85f740b9bf9dde59b550936b621 ]
    
    There are reports that 48kHz audio does not work on the WeTek Play 2
    (which uses a GXBB SoC), while 44.1kHz audio works fine on the same
    board. There are also reports of 48kHz audio working fine on GXL and
    GXM SoCs, which are using an (almost) identical AIU (audio controller).
    
    Experimenting has shown that MPLL0 is causing this problem. In the .dts
    we have by default:
            assigned-clocks = <&clkc CLKID_MPLL0>,
                              <&clkc CLKID_MPLL1>,
                              <&clkc CLKID_MPLL2>;
            assigned-clock-rates = <294912000>,
                                   <270950400>,
                                   <393216000>;
    The MPLL0 rate is divisible by 48kHz without remainder and the MPLL1
    rate is divisible by 44.1kHz without remainder. Swapping these two clock
    rates "fixes" 48kHz audio but breaks 44.1kHz audio.
    
    Everything looks normal when looking at the info provided by the common
    clock framework while playing 48kHz audio (via I2S with mclk-fs = 256):
            mpll_prediv                 1        1        0  2000000000
               mpll0_div                1        1        0   294909641
                  mpll0                 1        1        0   294909641
                     cts_amclk_sel       1        1        0   294909641
                        cts_amclk_div       1        1        0    12287902
                           cts_amclk       1        1        0    12287902
    
    meson-clk-msr however shows that the actual MPLL0 clock is off by more
    than 38MHz:
            mp0_out               333322917    +/-10416Hz
    
    The rate seen by meson-clk-msr is very close to what we would get when
    SDM (the fractional part) was ignored:
      (2000000000Hz * 16384) / ((16384 * 6) = 333.33MHz
    If SDM was considered the we should get close to:
      (2000000000Hz * 16384) / ((16384 * 6) + 12808) = 294.9MHz
    
    Further experimenting shows that HHI_MPLL_CNTL7[15] does not have any
    effect on the rate of MPLL0 as seen my meson-clk-msr (regardless of
    whether that bit is zero or one the rate is always the same according to
    meson-clk-msr). Using HHI_MPLL_CNTL[25] on the other hand as SDM_EN
    results in SDM being considered for the rate output by the hardware. The
    rate - as seen by meson-clk-msr - matches with what we expect when
    SDM_EN is enabled (fractional part is being considered, resulting in a
    294.9MHz output) or disable (fractional part being ignored, resulting in
    a 333.33MHz output).
    
    Reported-by: Christian Hewitt <christianshewitt@gmail.com>
    Tested-by: Christian Hewitt <christianshewitt@gmail.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20211031135006.1508796-1-martin.blumenstingl@googlemail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: si5341: Fix clock HW provider cleanup [+ + +]
Author: Robert Hancock <robert.hancock@calian.com>
Date:   Wed Jan 12 14:38:16 2022 -0600

    clk: si5341: Fix clock HW provider cleanup
    
    commit 49a8f2bc8d88702783c7e163ec84374e9a022f71 upstream.
    
    The call to of_clk_add_hw_provider was not undone on remove or on probe
    failure, which could cause an oops on a subsequent attempt to retrieve
    clocks for the removed device. Switch to the devm version of the
    function to avoid this issue.
    
    Fixes: 3044a860fd09 ("clk: Add Si5341/Si5340 driver")
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Link: https://lore.kernel.org/r/20220112203816.1784610-1-robert.hancock@calian.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system enter shell [+ + +]
Author: Dillon Min <dillon.minfei@gmail.com>
Date:   Tue Oct 26 15:11:21 2021 +0800

    clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system enter shell
    
    [ Upstream commit 6fc058a72f3b7b07fc4de6d66ad1f68951b00f6e ]
    
    stm32's clk driver register two ltdc gate clk to clk core by
    clk_hw_register_gate() and clk_hw_register_composite()
    
    first: 'stm32f429_gates[]', clk name is 'ltdc', which no user to use.
    second: 'stm32f429_aux_clk[]', clk name is 'lcd-tft', used by ltdc driver
    
    both of them point to the same offset of stm32's RCC register. after
    kernel enter console, clk core turn off ltdc's clk as 'stm32f429_gates[]'
    is no one to use. but, actually 'stm32f429_aux_clk[]' is in use.
    
    stm32f469/746/769 have the same issue, fix it.
    
    Fixes: daf2d117cbca ("clk: stm32f4: Add lcd-tft clock")
    Link: https://lore.kernel.org/linux-arm-kernel/1590564453-24499-7-git-send-email-dillon.minfei@gmail.com/
    Link: https://lore.kernel.org/lkml/CAPTRvHkf0cK_4ZidM17rPo99gWDmxgqFt4CDUjqFFwkOeQeFDg@mail.gmail.com/
    Signed-off-by: Dillon Min <dillon.minfei@gmail.com>
    Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
    Acked-by: Gabriel Fernandez <gabriel.fernandez@foss.st.com>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Link: https://lore.kernel.org/r/1635232282-3992-10-git-send-email-dillon.minfei@gmail.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpufreq: Fix initialization of min and max frequency QoS requests [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Dec 16 20:32:15 2021 +0100

    cpufreq: Fix initialization of min and max frequency QoS requests
    
    [ Upstream commit 521223d8b3ec078f670c7c35a1a04b1b2af07966 ]
    
    The min and max frequency QoS requests in the cpufreq core are
    initialized to whatever the current min and max frequency values are
    at the init time, but if any of these values change later (for
    example, cpuinfo.max_freq is updated by the driver), these initial
    request values will be limiting the CPU frequency unnecessarily
    unless they are changed by user space via sysfs.
    
    To address this, initialize min_freq_req and max_freq_req to
    FREQ_QOS_MIN_DEFAULT_VALUE and FREQ_QOS_MAX_DEFAULT_VALUE,
    respectively, so they don't really limit anything until user
    space updates them.
    
    Reported-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Tested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cputime, cpuacct: Include guest time in user time in cpuacct.stat [+ + +]
Author: Andrey Ryabinin <arbn@yandex-team.com>
Date:   Mon Nov 15 19:46:04 2021 +0300

    cputime, cpuacct: Include guest time in user time in cpuacct.stat
    
    commit 9731698ecb9c851f353ce2496292ff9fcea39dff upstream.
    
    cpuacct.stat in no-root cgroups shows user time without guest time
    included int it. This doesn't match with user time shown in root
    cpuacct.stat and /proc/<pid>/stat. This also affects cgroup2's cpu.stat
    in the same way.
    
    Make account_guest_time() to add user time to cgroup's cpustat to
    fix this.
    
    Fixes: ef12fefabf94 ("cpuacct: add per-cgroup utime/stime statistics")
    Signed-off-by: Andrey Ryabinin <arbn@yandex-team.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211115164607.23784-1-arbn@yandex-team.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
crypto: caam - replace this_cpu_ptr with raw_cpu_ptr [+ + +]
Author: Meng Li <Meng.Li@windriver.com>
Date:   Mon Nov 1 11:13:53 2021 +0800

    crypto: caam - replace this_cpu_ptr with raw_cpu_ptr
    
    commit efd21e10fc3bf4c6da122470a5ae89ec4ed8d180 upstream.
    
    When enable the kernel debug config, there is below calltrace detected:
    BUG: using smp_processor_id() in preemptible [00000000] code: cryptomgr_test/339
    caller is debug_smp_processor_id+0x20/0x30
    CPU: 9 PID: 339 Comm: cryptomgr_test Not tainted 5.10.63-yocto-standard #1
    Hardware name: NXP Layerscape LX2160ARDB (DT)
    Call trace:
     dump_backtrace+0x0/0x1a0
     show_stack+0x24/0x30
     dump_stack+0xf0/0x13c
     check_preemption_disabled+0x100/0x110
     debug_smp_processor_id+0x20/0x30
     dpaa2_caam_enqueue+0x10c/0x25c
     ......
     cryptomgr_test+0x38/0x60
     kthread+0x158/0x164
     ret_from_fork+0x10/0x38
    According to the comment in commit ac5d15b4519f("crypto: caam/qi2
     - use affine DPIOs "), because preemption is no longer disabled
    while trying to enqueue an FQID, it might be possible to run the
    enqueue on a different CPU(due to migration, when in process context),
    however this wouldn't be a functionality issue. But there will be
    above calltrace when enable kernel debug config. So, replace this_cpu_ptr
    with raw_cpu_ptr to avoid above call trace.
    
    Fixes: ac5d15b4519f ("crypto: caam/qi2 - use affine DPIOs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Meng Li <Meng.Li@windriver.com>
    Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: omap-aes - Fix broken pm_runtime_and_get() usage [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Fri Dec 17 10:03:30 2021 +0100

    crypto: omap-aes - Fix broken pm_runtime_and_get() usage
    
    commit c2aec59be093bd44627bc4f6bc67e4614a93a7b6 upstream.
    
    This fix is basically the same as 3d6b661330a7 ("crypto: stm32 -
    Revert broken pm_runtime_resume_and_get changes"), just for the omap
    driver. If the return value isn't used, then pm_runtime_get_sync()
    has to be used for ensuring that the usage count is balanced.
    
    Fixes: 1f34cc4a8da3 ("crypto: omap-aes - Fix PM reference leak on omap-aes.c")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: qce - fix uaf on qce_ahash_register_one [+ + +]
Author: Chengfeng Ye <cyeaa@connect.ust.hk>
Date:   Thu Nov 4 06:38:31 2021 -0700

    crypto: qce - fix uaf on qce_ahash_register_one
    
    [ Upstream commit b4cb4d31631912842eb7dce02b4350cbb7562d5e ]
    
    Pointer base points to sub field of tmpl, it
    is dereferenced after tmpl is freed. Fix
    this by accessing base before free tmpl.
    
    Fixes: ec8f5d8f ("crypto: qce - Qualcomm crypto engine driver")
    Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
    Acked-by: Thara Gopinath <thara.gopinath@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: stm32/crc32 - Fix kernel BUG triggered in probe() [+ + +]
Author: Marek Vasut <marex@denx.de>
Date:   Mon Dec 20 20:50:22 2021 +0100

    crypto: stm32/crc32 - Fix kernel BUG triggered in probe()
    
    commit 29009604ad4e3ef784fd9b9fef6f23610ddf633d upstream.
    
    The include/linux/crypto.h struct crypto_alg field cra_driver_name description
    states "Unique name of the transformation provider. " ... " this contains the
    name of the chip or provider and the name of the transformation algorithm."
    
    In case of the stm32-crc driver, field cra_driver_name is identical for all
    registered transformation providers and set to the name of the driver itself,
    which is incorrect. This patch fixes it by assigning a unique cra_driver_name
    to each registered transformation provider.
    
    The kernel crash is triggered when the driver calls crypto_register_shashes()
    which calls crypto_register_shash(), which calls crypto_register_alg(), which
    calls __crypto_register_alg(), which returns -EEXIST, which is propagated
    back through this call chain. Upon -EEXIST from crypto_register_shash(), the
    crypto_register_shashes() starts unregistering the providers back, and calls
    crypto_unregister_shash(), which calls crypto_unregister_alg(), and this is
    where the BUG() triggers due to incorrect cra_refcnt.
    
    Fixes: b51dbe90912a ("crypto: stm32 - Support for STM32 CRC32 crypto module")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: <stable@vger.kernel.org> # 4.12+
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Fabien Dessenne <fabien.dessenne@st.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Lionel Debieve <lionel.debieve@st.com>
    Cc: Nicolas Toromanoff <nicolas.toromanoff@st.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-stm32@st-md-mailman.stormreply.com
    To: linux-crypto@vger.kernel.org
    Acked-by: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: stm32/cryp - fix double pm exit [+ + +]
Author: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
Date:   Tue Nov 30 08:54:58 2021 +0100

    crypto: stm32/cryp - fix double pm exit
    
    [ Upstream commit 6c12e742785bf9333faf60bfb96575bdd763448e ]
    
    Delete extraneous lines in probe error handling code: pm was
    disabled twice.
    
    Fixes: 65f9aa36ee47 ("crypto: stm32/cryp - Add power management support")
    
    Reported-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: stm32/cryp - fix lrw chaining mode [+ + +]
Author: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
Date:   Tue Nov 30 08:54:59 2021 +0100

    crypto: stm32/cryp - fix lrw chaining mode
    
    [ Upstream commit fa97dc2d48b476ea98199d808d3248d285987e99 ]
    
    This fixes the lrw autotest if lrw uses the CRYP as the AES block cipher
    provider (as ecb(aes)). At end of request, CRYP should not update the IV
    in case of ECB chaining mode. Indeed the ECB chaining mode never uses
    the IV, but the software LRW chaining mode uses the IV field as
    a counter and due to the (unexpected) update done by CRYP while the AES
    block process, the counter get a wrong value when the IV overflow.
    
    Fixes: 5f49f18d27cd ("crypto: stm32/cryp - update to return iv_out")
    
    Signed-off-by: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: stm32/cryp - fix xts and race condition in crypto_engine requests [+ + +]
Author: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
Date:   Tue Nov 30 08:54:56 2021 +0100

    crypto: stm32/cryp - fix xts and race condition in crypto_engine requests
    
    [ Upstream commit d703c7a994ee34b7fa89baf21631fca0aa9f17fc ]
    
    Don't erase key:
    If key is erased before the crypto_finalize_.*_request() call, some
    pending process will run with a key={ 0 }.
    Moreover if the key is reset at end of request, it breaks xts chaining
    mode, as for last xts block (in case input len is not a multiple of
    block) a new AES request is started without calling again set_key().
    
    Fixes: 9e054ec21ef8 ("crypto: stm32 - Support for STM32 CRYP crypto module")
    
    Signed-off-by: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
debugfs: lockdown: Allow reading debugfs files that are not world readable [+ + +]
Author: Michal Suchanek <msuchanek@suse.de>
Date:   Tue Jan 4 18:05:05 2022 +0100

    debugfs: lockdown: Allow reading debugfs files that are not world readable
    
    [ Upstream commit 358fcf5ddbec4e6706405847d6a666f5933a6c25 ]
    
    When the kernel is locked down the kernel allows reading only debugfs
    files with mode 444. Mode 400 is also valid but is not allowed.
    
    Make the 444 into a mask.
    
    Fixes: 5496197f9b08 ("debugfs: Restrict debugfs when the kernel is locked down")
    Signed-off-by: Michal Suchanek <msuchanek@suse.de>
    Link: https://lore.kernel.org/r/20220104170505.10248-1-msuchanek@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm btree: add a defensive bounds check to insert_at() [+ + +]
Author: Joe Thornber <ejt@redhat.com>
Date:   Fri Dec 10 13:44:13 2021 +0000

    dm btree: add a defensive bounds check to insert_at()
    
    [ Upstream commit 85bca3c05b6cca31625437eedf2060e846c4bbad ]
    
    Corrupt metadata could trigger an out of bounds write.
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm space map common: add bounds check to sm_ll_lookup_bitmap() [+ + +]
Author: Joe Thornber <ejt@redhat.com>
Date:   Fri Dec 10 13:49:53 2021 +0000

    dm space map common: add bounds check to sm_ll_lookup_bitmap()
    
    [ Upstream commit cba23ac158db7f3cd48a923d6861bee2eb7a2978 ]
    
    Corrupted metadata could warrant returning error from sm_ll_lookup_bitmap().
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() [+ + +]
Author: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Date:   Mon Nov 29 16:27:27 2021 +0100

    dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled()
    
    commit 95d35838880fb040ccb9fe4a48816bd0c8b62df5 upstream.
    
    If a dma_fence_array is reported signaled by a call to
    dma_fence_is_signaled(), it may leak the PENDING_ERROR status.
    
    Fix this by clearing the PENDING_ERROR status if we return true in
    dma_fence_array_signaled().
    
    v2:
    - Update Cc list, and add R-b.
    
    Fixes: 1f70b8b812f3 ("dma-fence: Propagate errors to dma-fence-array container")
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Sumit Semwal <sumit.semwal@linaro.org>
    Cc: Gustavo Padovan <gustavo@padovan.org>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: "Christian König" <christian.koenig@amd.com>
    Cc: linux-media@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: linaro-mm-sig@lists.linaro.org
    Cc: <stable@vger.kernel.org> # v5.4+
    Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211129152727.448908-1-thomas.hellstrom@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: at_xdmac: Don't start transactions at tx_submit level [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Dec 15 13:01:04 2021 +0200

    dmaengine: at_xdmac: Don't start transactions at tx_submit level
    
    commit bccfb96b59179d4f96cbbd1ddff8fac6d335eae4 upstream.
    
    tx_submit is supposed to push the current transaction descriptor to a
    pending queue, waiting for issue_pending() to be called. issue_pending()
    must start the transfer, not tx_submit(), thus remove
    at_xdmac_start_xfer() from at_xdmac_tx_submit(). Clients of at_xdmac that
    assume that tx_submit() starts the transfer must be updated and call
    dma_async_issue_pending() if they miss to call it (one example is
    atmel_serial).
    
    As the at_xdmac_start_xfer() is now called only from
    at_xdmac_advance_work() when !at_xdmac_chan_is_enabled(), the
    at_xdmac_chan_is_enabled() check is no longer needed in
    at_xdmac_start_xfer(), thus remove it.
    
    Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211215110115.191749-2-tudor.ambarus@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: at_xdmac: Fix at_xdmac_lld struct definition [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Dec 15 13:01:13 2021 +0200

    dmaengine: at_xdmac: Fix at_xdmac_lld struct definition
    
    commit 912f7c6f7fac273f40e621447cf17d14b50d6e5b upstream.
    
    The hardware channel next descriptor view structure contains just
    fields of 32 bits, while dma_addr_t can be of type u64 or u32
    depending on CONFIG_ARCH_DMA_ADDR_T_64BIT. Force u32 to comply with
    what the hardware expects.
    
    Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211215110115.191749-11-tudor.ambarus@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: at_xdmac: Fix concurrency over xfers_list [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Dec 15 13:01:10 2021 +0200

    dmaengine: at_xdmac: Fix concurrency over xfers_list
    
    commit 18deddea9184b62941395889ff7659529c877326 upstream.
    
    Since tx_submit can be called from a hard IRQ, xfers_list must be
    protected with a lock to avoid concurency on the list's elements.
    Since at_xdmac_handle_cyclic() is called from a tasklet, spin_lock_irq
    is enough to protect from a hard IRQ.
    
    Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211215110115.191749-8-tudor.ambarus@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: at_xdmac: Fix lld view setting [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Dec 15 13:01:12 2021 +0200

    dmaengine: at_xdmac: Fix lld view setting
    
    commit 1385eb4d14d447cc5d744bc2ac34f43be66c9963 upstream.
    
    AT_XDMAC_CNDC_NDVIEW_NDV3 was set even for AT_XDMAC_MBR_UBC_NDV2,
    because of the wrong bit handling. Fix it.
    
    Fixes: ee0fe35c8dcd ("dmaengine: xdmac: Handle descriptor's view 3 registers")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211215110115.191749-10-tudor.ambarus@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: at_xdmac: Print debug message after realeasing the lock [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Dec 15 13:01:06 2021 +0200

    dmaengine: at_xdmac: Print debug message after realeasing the lock
    
    commit 5edc24ac876a928f36f407a0fcdb33b94a3a210f upstream.
    
    It is desirable to do the prints without the lock held if possible, so
    move the print after the lock is released.
    
    Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211215110115.191749-4-tudor.ambarus@microchip.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: pxa/mmp: stop referencing config->slave_id [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Nov 22 23:21:58 2021 +0100

    dmaengine: pxa/mmp: stop referencing config->slave_id
    
    [ Upstream commit 134c37fa250a87a7e77c80a7c59ae16c462e46e0 ]
    
    The last driver referencing the slave_id on Marvell PXA and MMP platforms
    was the SPI driver, but this stopped doing so a long time ago, so the
    TODO from the earlier patch can no be removed.
    
    Fixes: b729bf34535e ("spi/pxa2xx: Don't use slave_id of dma_slave_config")
    Fixes: 13b3006b8ebd ("dma: mmp_pdma: add filter function")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20211122222203.4103644-7-arnd@kernel.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK [+ + +]
Author: Amelie Delaunay <amelie.delaunay@foss.st.com>
Date:   Mon Dec 20 17:58:27 2021 +0100

    dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK
    
    commit e7f110889a87307fb0fed408a5dee1707796ca04 upstream.
    
    This patch fixes STM32_MDMA_CTBR_TSEL_MASK, which is [5:0], not [7:0].
    
    Fixes: a4ffb13c8946 ("dmaengine: Add STM32 MDMA driver")
    Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
    Link: https://lore.kernel.org/r/20211220165827.1238097-1-amelie.delaunay@foss.st.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Documentation: ACPI: Fix data node reference documentation [+ + +]
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Wed Dec 1 14:59:31 2021 +0200

    Documentation: ACPI: Fix data node reference documentation
    
    commit a11174952205d082f1658fab4314f0caf706e0a8 upstream.
    
    The data node reference documentation was missing a package that must
    contain the property values, instead property name and multiple values
    being present in a single package. This is not aligned with the _DSD
    spec.
    
    Fix it by adding the package for the values.
    
    Also add the missing "reg" properties to two numbered nodes.
    
    Fixes: b10134a3643d ("ACPI: property: Document hierarchical data extension references")
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Documentation: dmaengine: Correctly describe dmatest with channel unset [+ + +]
Author: Daniel Thompson <daniel.thompson@linaro.org>
Date:   Thu Nov 18 10:09:52 2021 +0000

    Documentation: dmaengine: Correctly describe dmatest with channel unset
    
    commit c61d7b2ef141abf81140756b45860a2306f395a2 upstream.
    
    Currently the documentation states that channels must be configured before
    running the dmatest. This has not been true since commit 6b41030fdc79
    ("dmaengine: dmatest: Restore default for channel"). Fix accordingly.
    
    Fixes: 6b41030fdc79 ("dmaengine: dmatest: Restore default for channel")
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Link: https://lore.kernel.org/r/20211118100952.27268-3-daniel.thompson@linaro.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Documentation: fix firewire.rst ABI file path error [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Jan 18 19:39:05 2022 -0800

    Documentation: fix firewire.rst ABI file path error
    
    commit b0ac702f3329cdc8a06dcaac73183d4b5a2b942d upstream.
    
    Adjust the path of the ABI files for firewire.rst to prevent a
    documentation build error. Prevents this problem:
    
    Sphinx parallel build error:
    docutils.utils.SystemMessage: Documentation/driver-api/firewire.rst:22: (SEVERE/4) Problems with "include" directive path:
    InputError: [Errno 2] No such file or directory: '../Documentation/driver-api/ABI/stable/firewire-cdev'.
    
    Fixes: 2f4830ef96d2 ("FireWire: add driver-api Introduction section")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Akira Yokosawa <akiyks@gmail.com>
    Link: https://lore.kernel.org/r/20220119033905.4779-1-rdunlap@infradead.org
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Documentation: refer to config RANDOMIZE_BASE for kernel address-space randomization [+ + +]
Author: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Date:   Thu Dec 30 18:19:40 2021 +0100

    Documentation: refer to config RANDOMIZE_BASE for kernel address-space randomization
    
    commit 82ca67321f55a8d1da6ac3ed611da3c32818bb37 upstream.
    
    The config RANDOMIZE_SLAB does not exist, the authors probably intended to
    refer to the config RANDOMIZE_BASE, which provides kernel address-space
    randomization. They probably just confused SLAB with BASE (these two
    four-letter words coincidentally share three common letters), as they also
    point out the config SLAB_FREELIST_RANDOM as further randomization within
    the same sentence.
    
    Fix the reference of the config for kernel address-space randomization to
    the config that provides that.
    
    Fixes: 6e88559470f5 ("Documentation: Add section about CPU vulnerabilities for Spectre")
    Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    Link: https://lore.kernel.org/r/20211230171940.27558-1-lukas.bulwahn@gmail.com
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: Fix a NULL pointer dereference in amdgpu_connector_lcd_native_mode() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Fri Dec 3 00:17:36 2021 +0800

    drm/amdgpu: Fix a NULL pointer dereference in amdgpu_connector_lcd_native_mode()
    
    [ Upstream commit b220110e4cd442156f36e1d9b4914bb9e87b0d00 ]
    
    In amdgpu_connector_lcd_native_mode(), the return value of
    drm_mode_duplicate() is assigned to mode, and there is a dereference
    of it in amdgpu_connector_lcd_native_mode(), which will lead to a NULL
    pointer dereference on failure of drm_mode_duplicate().
    
    Fix this bug add a check of mode.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_DRM_AMDGPU=m show no new warnings, and
    our static analyzer no longer warns about this code.
    
    Fixes: d38ceaf99ed0 ("drm/amdgpu: add core driver (v4)")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: fixup bad vram size on gmc v8 [+ + +]
Author: Zongmin Zhou <zhouzongmin@kylinos.cn>
Date:   Wed Dec 15 17:23:37 2021 +0800

    drm/amdgpu: fixup bad vram size on gmc v8
    
    [ Upstream commit 11544d77e3974924c5a9c8a8320b996a3e9b2f8b ]
    
    Some boards(like RX550) seem to have garbage in the upper
    16 bits of the vram size register.  Check for
    this and clamp the size properly.  Fixes
    boards reporting bogus amounts of vram.
    
    after add this patch,the maximum GPU VRAM size is 64GB,
    otherwise only 64GB vram size will be used.
    
    Signed-off-by: Zongmin Zhou<zhouzongmin@kylinos.cn>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: analogix_dp: Make PSR-exit block less [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Nov 3 13:52:00 2021 -0700

    drm/bridge: analogix_dp: Make PSR-exit block less
    
    commit c4c6ef229593366ab593d4d424addc7025b54a76 upstream.
    
    Prior to commit 6c836d965bad ("drm/rockchip: Use the helpers for PSR"),
    "PSR exit" used non-blocking analogix_dp_send_psr_spd(). The refactor
    started using the blocking variant, for a variety of reasons -- quoting
    Sean Paul's potentially-faulty memory:
    
    """
     - To avoid racing a subsequent PSR entry (if exit takes a long time)
     - To avoid racing disable/modeset
     - We're not displaying new content while exiting PSR anyways, so there
       is minimal utility in allowing frames to be submitted
     - We're lying to userspace telling them frames are on the screen when
       we're just dropping them on the floor
    """
    
    However, I'm finding that this blocking transition is causing upwards of
    60+ ms of unneeded latency on PSR-exit, to the point that initial cursor
    movements when leaving PSR are unbearably jumpy.
    
    It turns out that we need to meet in the middle somewhere: Sean is right
    that we were "lying to userspace" with a non-blocking PSR-exit, but the
    new blocking behavior is also waiting too long:
    
    According to the eDP specification, the sink device must support PSR
    entry transitions from both state 4 (ACTIVE_RESYNC) and state 0
    (INACTIVE). It also states that in ACTIVE_RESYNC, "the Sink device must
    display the incoming active frames from the Source device with no
    visible glitches and/or artifacts."
    
    Thus, for our purposes, we only need to wait for ACTIVE_RESYNC before
    moving on; we are ready to display video, and subsequent PSR-entry is
    safe.
    
    Tested on a Samsung Chromebook Plus (i.e., Rockchip RK3399 Gru Kevin),
    where this saves about 60ms of latency, for PSR-exit that used to
    take about 80ms.
    
    Fixes: 6c836d965bad ("drm/rockchip: Use the helpers for PSR")
    Cc: <stable@vger.kernel.org>
    Cc: Zain Wang <wzz@rock-chips.com>
    Cc: Tomasz Figa <tfiga@chromium.org>
    Cc: Heiko Stuebner <heiko@sntech.de>
    Cc: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Robert Foss <robert.foss@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211103135112.v3.1.I67612ea073c3306c71b46a87be894f79707082df@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/bridge: megachips: Ensure both bridges are probed before registration [+ + +]
Author: Martyn Welch <martyn.welch@collabora.com>
Date:   Thu Nov 25 10:53:02 2021 +0000

    drm/bridge: megachips: Ensure both bridges are probed before registration
    
    [ Upstream commit 11632d4aa2b3f126790e81a4415d6c23103cf8bb ]
    
    In the configuration used by the b850v3, the STDP2690 is used to read EDID
    data whilst it's the STDP4028 which can detect when monitors are connected.
    
    This can result in problems at boot with monitors connected when the
    STDP4028 is probed first, a monitor is detected and an attempt is made to
    read the EDID data before the STDP2690 has probed:
    
    [    3.795721] Unable to handle kernel NULL pointer dereference at virtual address 00000018
    [    3.803845] pgd = (ptrval)
    [    3.806581] [00000018] *pgd=00000000
    [    3.810180] Internal error: Oops: 5 [#1] SMP ARM
    [    3.814813] Modules linked in:
    [    3.817879] CPU: 0 PID: 64 Comm: kworker/u4:1 Not tainted 5.15.0 #1
    [    3.824161] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [    3.830705] Workqueue: events_unbound deferred_probe_work_func
    [    3.836565] PC is at stdp2690_get_edid+0x44/0x19c
    [    3.841286] LR is at ge_b850v3_lvds_get_modes+0x2c/0x5c
    [    3.846526] pc : [<805eae10>]    lr : [<805eb138>]    psr: 80000013
    [    3.852802] sp : 81c359d0  ip : 7dbb550b  fp : 81c35a1c
    [    3.858037] r10: 81c73840  r9 : 81c73894  r8 : 816d9800
    [    3.863270] r7 : 00000000  r6 : 81c34000  r5 : 00000000  r4 : 810c35f0
    [    3.869808] r3 : 80e3e294  r2 : 00000080  r1 : 00000cc0  r0 : 81401180
    [    3.876349] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [    3.883499] Control: 10c5387d  Table: 1000404a  DAC: 00000051
    [    3.889254] Register r0 information: slab kmem_cache start 81401180 pointer offset 0
    [    3.897034] Register r1 information: non-paged memory
    [    3.902097] Register r2 information: non-paged memory
    [    3.907160] Register r3 information: non-slab/vmalloc memory
    [    3.912832] Register r4 information: non-slab/vmalloc memory
    [    3.918503] Register r5 information: NULL pointer
    [    3.923217] Register r6 information: non-slab/vmalloc memory
    [    3.928887] Register r7 information: NULL pointer
    [    3.933601] Register r8 information: slab kmalloc-1k start 816d9800 pointer offset 0 size 1024
    [    3.942244] Register r9 information: slab kmalloc-2k start 81c73800 pointer offset 148 size 2048
    [    3.951058] Register r10 information: slab kmalloc-2k start 81c73800 pointer offset 64 size 2048
    [    3.959873] Register r11 information: non-slab/vmalloc memory
    [    3.965632] Register r12 information: non-paged memory
    [    3.970781] Process kworker/u4:1 (pid: 64, stack limit = 0x(ptrval))
    [    3.977148] Stack: (0x81c359d0 to 0x81c36000)
    [    3.981517] 59c0:                                     80b2b668 80b2b5bc 000002e2 0000034e
    [    3.989712] 59e0: 81c35a8c 816d98e8 81c35a14 7dbb550b 805bfcd0 810c35f0 81c73840 824addc0
    [    3.997906] 5a00: 00001000 816d9800 81c73894 81c73840 81c35a34 81c35a20 805eb138 805eadd8
    [    4.006099] 5a20: 810c35f0 00000045 81c35adc 81c35a38 80594188 805eb118 80d7c788 80dd1848
    [    4.014292] 5a40: 00000000 81c35a50 80dca950 811194d3 80dca7c4 80dca944 80dca91c 816d9800
    [    4.022485] 5a60: 81c34000 81c760a8 816d9800 80c58c98 810c35f0 816d98e8 00001000 00001000
    [    4.030678] 5a80: 00000000 00000000 8017712c 81c60000 00000002 00000001 00000000 00000000
    [    4.038870] 5aa0: 816d9900 816d9900 00000000 7dbb550b 805c700c 00000008 826282c8 826282c8
    [    4.047062] 5ac0: 00001000 81e1ce40 00001000 00000002 81c35bf4 81c35ae0 805d9694 80593fc0
    [    4.055255] 5ae0: 8017a970 80179ad8 00000179 00000000 81c35bcc 81c35b00 80177108 8017a950
    [    4.063447] 5b00: 00000000 81c35b10 81c34000 00000000 81004fd8 81010a38 00000000 00000059
    [    4.071639] 5b20: 816d98d4 81fbb718 00000013 826282c8 8017a940 81c35b40 81134448 00000400
    [    4.079831] 5b40: 00000178 00000000 e063b9c1 00000000 c2000049 00000040 00000000 00000008
    [    4.088024] 5b60: 82628300 82628380 00000000 00000000 81c34000 00000000 81fbb700 82628340
    [    4.096216] 5b80: 826283c0 00001000 00000000 00000010 816d9800 826282c0 801766f8 00000000
    [    4.104408] 5ba0: 00000000 81004fd8 00000049 00000000 00000000 00000001 80dcf940 80178de4
    [    4.112601] 5bc0: 81c35c0c 7dbb550b 80178de4 81fbb700 00000010 00000010 810c35f4 81e1ce40
    [    4.120793] 5be0: 81c40908 0000000c 81c35c64 81c35bf8 805a7f18 805d94a0 81c35c3c 816d9800
    [    4.128985] 5c00: 00000010 81c34000 81c35c2c 81c35c18 8012fce0 805be90c 81c35c3c 81c35c28
    [    4.137178] 5c20: 805be90c 80173210 81fbb600 81fbb6b4 81c35c5c 7dbb550b 81c35c64 81fbb700
    [    4.145370] 5c40: 816d9800 00000010 810c35f4 81e1ce40 81c40908 0000000c 81c35c84 81c35c68
    [    4.153565] 5c60: 805a8c78 805a7ed0 816d9800 81fbb700 00000010 00000000 81c35cac 81c35c88
    [    4.161758] 5c80: 805a8dc4 805a8b68 816d9800 00000000 816d9800 00000000 8179f810 810c42d0
    [    4.169950] 5ca0: 81c35ccc 81c35cb0 805e47b0 805a8d18 824aa240 81e1ea80 81c40908 81126b60
    [    4.178144] 5cc0: 81c35d14 81c35cd0 8060db1c 805e46cc 81c35d14 81c35ce0 80dd90f8 810c4d58
    [    4.186338] 5ce0: 80dd90dc 81fe9740 fffffffe 81fe9740 81e1ea80 00000000 810c4d6c 80c4b95c
    [    4.194531] 5d00: 80dd9a3c 815c6810 81c35d34 81c35d18 8060dc9c 8060d8fc 8246b440 815c6800
    [    4.202724] 5d20: 815c6810 eefd8e00 81c35d44 81c35d38 8060dd80 8060dbec 81c35d6c 81c35d48
    [    4.210918] 5d40: 805e98a4 8060dd70 00000000 815c6810 810c45b0 81126e90 81126e90 80dd9a3c
    [    4.219112] 5d60: 81c35d8c 81c35d70 80619574 805e9808 815c6810 00000000 810c45b0 81126e90
    [    4.227305] 5d80: 81c35db4 81c35d90 806168dc 80619514 80625df0 80623c80 815c6810 810c45b0
    [    4.235498] 5da0: 81c35e6c 815c6810 81c35dec 81c35db8 80616d04 80616800 81c35de4 81c35dc8
    [    4.243691] 5dc0: 808382b0 80b2f444 8116e310 8116e314 81c35e6c 815c6810 00000003 80dd9a3c
    [    4.251884] 5de0: 81c35e14 81c35df0 80616ec8 80616c60 00000001 810c45b0 81c35e6c 815c6810
    [    4.260076] 5e00: 00000001 80dd9a3c 81c35e34 81c35e18 80617338 80616e90 00000000 81c35e6c
    [    4.268269] 5e20: 80617284 81c34000 81c35e64 81c35e38 80614730 80617290 81c35e64 8171a06c
    [    4.276461] 5e40: 81e220b8 7dbb550b 815c6810 81c34000 815c6854 81126e90 81c35e9c 81c35e68
    [    4.284654] 5e60: 8061673c 806146a8 8060f5e0 815c6810 00000001 7dbb550b 00000000 810c5080
    [    4.292847] 5e80: 810c5320 815c6810 81126e90 00000000 81c35eac 81c35ea0 80617554 80616650
    [    4.301040] 5ea0: 81c35ecc 81c35eb0 80615694 80617544 810c5080 810c5080 810c5094 81126e90
    [    4.309233] 5ec0: 81c35efc 81c35ed0 80615c6c 8061560c 80615bc0 810c50c0 817eeb00 81412800
    [    4.317425] 5ee0: 814c3000 00000000 814c300d 81119a60 81c35f3c 81c35f00 80141488 80615bcc
    [    4.325618] 5f00: 81c60000 81c34000 81c35f24 81c35f18 80143078 817eeb00 81412800 817eeb18
    [    4.333811] 5f20: 81412818 81003d00 00000088 81412800 81c35f74 81c35f40 80141a48 80141298
    [    4.342005] 5f40: 81c35f74 81c34000 801481ac 817efa40 817efc00 801417d8 817eeb00 00000000
    [    4.350199] 5f60: 815a7e7c 81c34000 81c35fac 81c35f78 80149b1c 801417e4 817efc20 817efc20
    [    4.358391] 5f80: ffffe000 817efa40 801499a8 00000000 00000000 00000000 00000000 00000000
    [    4.366583] 5fa0: 00000000 81c35fb0 80100130 801499b4 00000000 00000000 00000000 00000000
    [    4.374774] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    4.382966] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [    4.391155] Backtrace:
    [    4.393613] [<805eadcc>] (stdp2690_get_edid) from [<805eb138>] (ge_b850v3_lvds_get_modes+0x2c/0x5c)
    [    4.402691]  r10:81c73840 r9:81c73894 r8:816d9800 r7:00001000 r6:824addc0 r5:81c73840
    [    4.410534]  r4:810c35f0
    [    4.413073] [<805eb10c>] (ge_b850v3_lvds_get_modes) from [<80594188>] (drm_helper_probe_single_connector_modes+0x1d4/0x84c)
    [    4.424240]  r5:00000045 r4:810c35f0
    [    4.427822] [<80593fb4>] (drm_helper_probe_single_connector_modes) from [<805d9694>] (drm_client_modeset_probe+0x200/0x1384)
    [    4.439074]  r10:00000002 r9:00001000 r8:81e1ce40 r7:00001000 r6:826282c8 r5:826282c8
    [    4.446917]  r4:00000008
    [    4.449455] [<805d9494>] (drm_client_modeset_probe) from [<805a7f18>] (__drm_fb_helper_initial_config_and_unlock+0x54/0x5b4)
    [    4.460713]  r10:0000000c r9:81c40908 r8:81e1ce40 r7:810c35f4 r6:00000010 r5:00000010
    [    4.468556]  r4:81fbb700
    [    4.471095] [<805a7ec4>] (__drm_fb_helper_initial_config_and_unlock) from [<805a8c78>] (drm_fbdev_client_hotplug+0x11c/0x1b0)
    [    4.482434]  r10:0000000c r9:81c40908 r8:81e1ce40 r7:810c35f4 r6:00000010 r5:816d9800
    [    4.490276]  r4:81fbb700
    [    4.492814] [<805a8b5c>] (drm_fbdev_client_hotplug) from [<805a8dc4>] (drm_fbdev_generic_setup+0xb8/0x1a4)
    [    4.502494]  r7:00000000 r6:00000010 r5:81fbb700 r4:816d9800
    [    4.508160] [<805a8d0c>] (drm_fbdev_generic_setup) from [<805e47b0>] (imx_drm_bind+0xf0/0x130)
    [    4.516805]  r7:810c42d0 r6:8179f810 r5:00000000 r4:816d9800
    [    4.522474] [<805e46c0>] (imx_drm_bind) from [<8060db1c>] (try_to_bring_up_master+0x22c/0x2f0)
    [    4.531116]  r7:81126b60 r6:81c40908 r5:81e1ea80 r4:824aa240
    [    4.536783] [<8060d8f0>] (try_to_bring_up_master) from [<8060dc9c>] (__component_add+0xbc/0x184)
    [    4.545597]  r10:815c6810 r9:80dd9a3c r8:80c4b95c r7:810c4d6c r6:00000000 r5:81e1ea80
    [    4.553440]  r4:81fe9740
    [    4.555980] [<8060dbe0>] (__component_add) from [<8060dd80>] (component_add+0x1c/0x20)
    [    4.563921]  r7:eefd8e00 r6:815c6810 r5:815c6800 r4:8246b440
    [    4.569589] [<8060dd64>] (component_add) from [<805e98a4>] (dw_hdmi_imx_probe+0xa8/0xe8)
    [    4.577702] [<805e97fc>] (dw_hdmi_imx_probe) from [<80619574>] (platform_probe+0x6c/0xc8)
    [    4.585908]  r9:80dd9a3c r8:81126e90 r7:81126e90 r6:810c45b0 r5:815c6810 r4:00000000
    [    4.593662] [<80619508>] (platform_probe) from [<806168dc>] (really_probe+0xe8/0x460)
    [    4.601524]  r7:81126e90 r6:810c45b0 r5:00000000 r4:815c6810
    [    4.607191] [<806167f4>] (really_probe) from [<80616d04>] (__driver_probe_device+0xb0/0x230)
    [    4.615658]  r7:815c6810 r6:81c35e6c r5:810c45b0 r4:815c6810
    [    4.621326] [<80616c54>] (__driver_probe_device) from [<80616ec8>] (driver_probe_device+0x44/0xe0)
    [    4.630313]  r9:80dd9a3c r8:00000003 r7:815c6810 r6:81c35e6c r5:8116e314 r4:8116e310
    [    4.638068] [<80616e84>] (driver_probe_device) from [<80617338>] (__device_attach_driver+0xb4/0x12c)
    [    4.647227]  r9:80dd9a3c r8:00000001 r7:815c6810 r6:81c35e6c r5:810c45b0 r4:00000001
    [    4.654981] [<80617284>] (__device_attach_driver) from [<80614730>] (bus_for_each_drv+0x94/0xd8)
    [    4.663794]  r7:81c34000 r6:80617284 r5:81c35e6c r4:00000000
    [    4.669461] [<8061469c>] (bus_for_each_drv) from [<8061673c>] (__device_attach+0xf8/0x190)
    [    4.677753]  r7:81126e90 r6:815c6854 r5:81c34000 r4:815c6810
    [    4.683419] [<80616644>] (__device_attach) from [<80617554>] (device_initial_probe+0x1c/0x20)
    [    4.691971]  r8:00000000 r7:81126e90 r6:815c6810 r5:810c5320 r4:810c5080
    [    4.698681] [<80617538>] (device_initial_probe) from [<80615694>] (bus_probe_device+0x94/0x9c)
    [    4.707318] [<80615600>] (bus_probe_device) from [<80615c6c>] (deferred_probe_work_func+0xac/0xf0)
    [    4.716305]  r7:81126e90 r6:810c5094 r5:810c5080 r4:810c5080
    [    4.721973] [<80615bc0>] (deferred_probe_work_func) from [<80141488>] (process_one_work+0x1fc/0x54c)
    [    4.731139]  r10:81119a60 r9:814c300d r8:00000000 r7:814c3000 r6:81412800 r5:817eeb00
    [    4.738981]  r4:810c50c0 r3:80615bc0
    [    4.742563] [<8014128c>] (process_one_work) from [<80141a48>] (worker_thread+0x270/0x570)
    [    4.750765]  r10:81412800 r9:00000088 r8:81003d00 r7:81412818 r6:817eeb18 r5:81412800
    [    4.758608]  r4:817eeb00
    [    4.761147] [<801417d8>] (worker_thread) from [<80149b1c>] (kthread+0x174/0x190)
    [    4.768574]  r10:81c34000 r9:815a7e7c r8:00000000 r7:817eeb00 r6:801417d8 r5:817efc00
    [    4.776417]  r4:817efa40
    [    4.778955] [<801499a8>] (kthread) from [<80100130>] (ret_from_fork+0x14/0x24)
    [    4.786201] Exception stack(0x81c35fb0 to 0x81c35ff8)
    [    4.791266] 5fa0:                                     00000000 00000000 00000000 00000000
    [    4.799459] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    4.807651] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [    4.814279]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:801499a8
    [    4.822120]  r4:817efa40
    [    4.824664] Code: e3a02080 e593001c e3a01d33 e3a05000 (e5979018)
    
    Split the registration from the STDP4028 probe routine and only perform
    registration once both the STDP4028 and STDP2690 have probed.
    
    Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
    CC: Peter Senna Tschudin <peter.senna@gmail.com>
    CC: Martyn Welch <martyn.welch@collabora.co.uk>
    CC: Neil Armstrong <narmstrong@baylibre.com>
    CC: Robert Foss <robert.foss@linaro.org>
    CC: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
    CC: Jonas Karlman <jonas@kwiboo.se>
    CC: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Robert Foss <robert.foss@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/43552c3404e8fdf92d8bc5658fac24e9f03c2c57.1637836606.git.martyn.welch@collabora.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/bridge: ti-sn65dsi86: Set max register for regmap [+ + +]
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Tue Dec 14 16:25:29 2021 -0800

    drm/bridge: ti-sn65dsi86: Set max register for regmap
    
    [ Upstream commit 0b665d4af35837f0a0ae63135b84a3c187c1db3b ]
    
    Set the maximum register to 0xff so we can dump the registers for this
    device in debugfs.
    
    Fixes: a095f15c00e2 ("drm/bridge: add support for sn65dsi86 bridge driver")
    Cc: Rob Clark <robdclark@chromium.org>
    Cc: Douglas Anderson <dianders@chromium.org>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Robert Foss <robert.foss@linaro.org>
    Signed-off-by: Robert Foss <robert.foss@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211215002529.382383-1-swboyd@chromium.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/etnaviv: limit submit sizes [+ + +]
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Dec 17 11:59:28 2021 +0100

    drm/etnaviv: limit submit sizes
    
    commit 6dfa2fab8ddd46faa771a102672176bee7a065de upstream.
    
    Currently we allow rediculous amounts of kernel memory being allocated
    via the etnaviv GEM_SUBMIT ioctl, which is a pretty easy DoS vector. Put
    some reasonable limits in to fix this.
    
    The commandstream size is limited to 64KB, which was already a soft limit
    on older kernels after which the kernel only took submits on a best effort
    base, so there is no userspace that tries to submit commandstreams larger
    than this. Even if the whole commandstream is a single incrementing address
    load, the size limit also limits the number of potential relocs and
    referenced buffers to slightly under 64K, so use the same limit for those
    arguments. The performance monitoring infrastructure currently supports
    less than 50 performance counter signals, so limiting them to 128 on a
    single submit seems like a reasonably future-proof number for now. This
    number can be bumped if needed without breaking the interface.
    
    Cc: stable@vger.kernel.org
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y [+ + +]
Author: Qiang Yu <yuq825@gmail.com>
Date:   Sun Oct 31 12:16:04 2021 +0800

    drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y
    
    [ Upstream commit 89636a06fa2ee7826a19c39c19a9bc99ab9340a9 ]
    
    Otherwise get following warning:
    
    DMA-API: lima 1c40000.gpu: mapping sg segment longer than device claims to support [len=4149248] [max=65536]
    
    See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5496
    
    Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
    Reported-by: Roman Stratiienko <r.stratiienko@gmail.com>
    Signed-off-by: Qiang Yu <yuq825@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211031041604.187216-1-yuq825@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/dpu: fix safe status debugfs file [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Dec 2 01:26:27 2021 +0300

    drm/msm/dpu: fix safe status debugfs file
    
    [ Upstream commit f31b0e24d31e18b4503eeaf0032baeacc0beaff6 ]
    
    Make safe_status debugfs fs file actually return safe status rather than
    danger status data.
    
    Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Link: https://lore.kernel.org/r/20211201222633.2476780-3-dmitry.baryshkov@linaro.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/nouveau/kms/nv04: use vzalloc for nv04_display [+ + +]
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Sun Mar 7 12:48:53 2021 -0500

    drm/nouveau/kms/nv04: use vzalloc for nv04_display
    
    commit bd6e07e72f37f34535bec7eebc807e5fcfe37b43 upstream.
    
    The struct is giant, and triggers an order-7 allocation (512K). There is
    no reason for this to be kmalloc-type memory, so switch to vmalloc. This
    should help loading nouveau on low-memory and/or long-running systems.
    
    Reported-by: Nathan E. Egge <unlord@xiph.org>
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/10
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR [+ + +]
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Feb 24 19:29:52 2021 +1000

    drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR
    
    [ Upstream commit 1d2271d2fb85e54bfc9630a6c30ac0feb9ffb983 ]
    
    There have been reports of the WFI timing out on some boards, and a
    patch was proposed to just remove it.  This stuff is rather fragile,
    and I believe the WFI might be needed with our FW prior to GM200.
    
    However, we probably should not be touching PMU during init on GPUs
    where we depend on NVIDIA FW, outside of limited circumstances, so
    this should be a somewhat safer change that achieves the desired
    result.
    
    Reported-by: Diego Viola <diego.viola@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/10
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/panel: innolux-p079zca: Delete panel on attach() failure [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Thu Sep 23 17:33:54 2021 -0700

    drm/panel: innolux-p079zca: Delete panel on attach() failure
    
    [ Upstream commit 32a267e9c057e1636e7afdd20599aa5741a73079 ]
    
    If we fail to attach (e.g., because 1 of 2 dual-DSI controllers aren't
    ready), we leave a dangling drm_panel reference to freed memory. Clean
    that up on failure.
    
    This problem exists since the driver's introduction, but is especially
    relevant after refactored for dual-DSI variants.
    
    Fixes: 14c8f2e9f8ea ("drm/panel: add Innolux P079ZCA panel driver")
    Fixes: 7ad4e4636c54 ("drm/panel: p079zca: Refactor panel driver to support multiple panels")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210923173336.2.I9023cf8811a3abf4964ed84eb681721d8bb489d6@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Thu Sep 23 17:33:53 2021 -0700

    drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure
    
    [ Upstream commit 5f31dbeae8a88f31c3eb4eb526ab4807c40da241 ]
    
    If we fail to attach (e.g., because 1 of 2 dual-DSI controllers aren't
    ready), we leave a dangling drm_panel reference to freed memory. Clean
    that up on failure.
    
    Fixes: 2a994cbed6b2 ("drm/panel: Add Kingdisplay KD097D04 panel driver")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210923173336.1.Icb4d9dbc1817f4e826361a4f1cea7461541668f0@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon/radeon_kms: Fix a NULL pointer dereference in radeon_driver_open_kms() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Wed Dec 1 23:13:10 2021 +0800

    drm/radeon/radeon_kms: Fix a NULL pointer dereference in radeon_driver_open_kms()
    
    [ Upstream commit ab50cb9df8896b39aae65c537a30de2c79c19735 ]
    
    In radeon_driver_open_kms(), radeon_vm_bo_add() is assigned to
    vm->ib_bo_va and passes and used in radeon_vm_bo_set_addr(). In
    radeon_vm_bo_set_addr(), there is a dereference of vm->ib_bo_va,
    which could lead to a NULL pointer dereference on failure of
    radeon_vm_bo_add().
    
    Fix this bug by adding a check of vm->ib_bo_va.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_DRM_RADEON=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: cc9e67e3d700 ("drm/radeon: fix VM IB handling")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon: fix error handling in radeon_driver_open_kms [+ + +]
Author: Christian König <christian.koenig@amd.com>
Date:   Mon Jan 17 10:31:26 2022 +0100

    drm/radeon: fix error handling in radeon_driver_open_kms
    
    commit 4722f463896cc0ef1a6f1c3cb2e171e949831249 upstream.
    
    The return value was never initialized so the cleanup code executed when
    it isn't even necessary.
    
    Just add proper error handling.
    
    Fixes: ab50cb9df889 ("drm/radeon/radeon_kms: Fix a NULL pointer dereference in radeon_driver_open_kms()")
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Tested-by: Jan Stancek <jstancek@redhat.com>
    Tested-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/rockchip: dsi: Fix unbalanced clock on probe error [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Tue Sep 28 14:35:51 2021 -0700

    drm/rockchip: dsi: Fix unbalanced clock on probe error
    
    [ Upstream commit 251888398753924059f3bb247a44153a2853137f ]
    
    Our probe() function never enabled this clock, so we shouldn't disable
    it if we fail to probe the bridge.
    
    Noted by inspection.
    
    Fixes: 2d4f7bdafd70 ("drm/rockchip: dsi: migrate to use dw-mipi-dsi bridge driver")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
    Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210928143413.v3.3.Ie8ceefb51ab6065a1151869b6fcda41a467d4d2c@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/rockchip: dsi: Hold pm-runtime across bind/unbind [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Tue Sep 28 14:35:49 2021 -0700

    drm/rockchip: dsi: Hold pm-runtime across bind/unbind
    
    commit 514db871922f103886ad4d221cf406b4fcc5e74a upstream.
    
    In commit 43c2de1002d2 ("drm/rockchip: dsi: move all lane config except
    LCDC mux to bind()"), we moved most HW configuration to bind(), but we
    didn't move the runtime PM management. Therefore, depending on initial
    boot state, runtime-PM workqueue delays, and other timing factors, we
    may disable our power domain in between the hardware configuration
    (bind()) and when we enable the display. This can cause us to lose
    hardware state and fail to configure our display. For example:
    
      dw-mipi-dsi-rockchip ff968000.mipi: failed to write command FIFO
      panel-innolux-p079zca ff960000.mipi.0: failed to write command 0
    
    or:
    
      dw-mipi-dsi-rockchip ff968000.mipi: failed to write command FIFO
      panel-kingdisplay-kd097d04 ff960000.mipi.0: failed write init cmds: -110
    
    We should match the runtime PM to the lifetime of the bind()/unbind()
    cycle.
    
    Tested on Acer Chrometab 10 (RK3399 Gru-Scarlet), with panel drivers
    built either as modules or built-in.
    
    Side notes: it seems one is more likely to see this problem when the
    panel driver is built into the kernel. I've also seen this problem
    bisect down to commits that simply changed Kconfig dependencies, because
    it changed the order in which driver init functions were compiled into
    the kernel, and therefore the ordering and timing of built-in device
    probe.
    
    Fixes: 43c2de1002d2 ("drm/rockchip: dsi: move all lane config except LCDC mux to bind()")
    Link: https://lore.kernel.org/linux-rockchip/9aedfb528600ecf871885f7293ca4207c84d16c1.camel@gmail.com/
    Reported-by: <aleksandr.o.makarov@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210928143413.v3.1.Ic2904d37f30013a7f3d8476203ad3733c186827e@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/rockchip: dsi: Reconfigure hardware on resume() [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Tue Sep 28 14:35:50 2021 -0700

    drm/rockchip: dsi: Reconfigure hardware on resume()
    
    commit e584cdc1549932f87a2707b56bc588cfac5d89e0 upstream.
    
    Since commit 43c2de1002d2 ("drm/rockchip: dsi: move all lane config except
    LCDC mux to bind()"), we perform most HW configuration in the bind()
    function. This configuration may be lost on suspend/resume, so we
    need to call it again. That may lead to errors like this after system
    suspend/resume:
    
      dw-mipi-dsi-rockchip ff968000.mipi: failed to write command FIFO
      panel-kingdisplay-kd097d04 ff960000.mipi.0: failed write init cmds: -110
    
    Tested on Acer Chromebook Tab 10 (RK3399 Gru-Scarlet).
    
    Note that early mailing list versions of this driver borrowed Rockchip's
    downstream/BSP solution, to do HW configuration in mode_set() (which
    *is* called at the appropriate pre-enable() times), but that was
    discarded along the way. I've avoided that still, because mode_set()
    documentation doesn't suggest this kind of purpose as far as I can tell.
    
    Fixes: 43c2de1002d2 ("drm/rockchip: dsi: move all lane config except LCDC mux to bind()")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
    Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210928143413.v3.2.I4e9d93aadb00b1ffc7d506e3186a25492bf0b732@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Nov 6 14:02:27 2021 +0100

    drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L
    
    [ Upstream commit bc30c3b0c8a1904d83d5f0d60fb8650a334b207b ]
    
    The Lenovo Yoga Book X91F/L uses a panel which has been mounted
    90 degrees rotated. Add a quirk for this.
    
    Cc: Yauhen Kharuzhy <jekhor@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Simon Ser <contact@emersion.fr>
    Tested-by: Yauhen Kharuzhy <jekhor@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211106130227.11927-1-hdegoede@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property [+ + +]
Author: Alexander Stein <alexander.stein@mailbox.org>
Date:   Thu Dec 23 13:24:32 2021 +0100

    dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property
    
    commit 22bf4047d26980807611b7e2030803db375afd87 upstream.
    
    This is used in meson-gx and meson-g12. Add the property to the binding.
    This fixes the dtschema warning:
    hdmi-tx@c883a000: 'sound-name-prefix' does not match any of the
    regexes: 'pinctrl-[0-9]+'
    
    Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
    Fixes: 376bf52deef5 ("dt-bindings: display: amlogic, meson-dw-hdmi: convert to yaml")
    Acked-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211223122434.39378-2-alexander.stein@mailbox.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dt-bindings: display: meson-vpu: Add missing amlogic,canvas property [+ + +]
Author: Alexander Stein <alexander.stein@mailbox.org>
Date:   Sun Dec 19 10:41:55 2021 +0100

    dt-bindings: display: meson-vpu: Add missing amlogic,canvas property
    
    commit 640f35b871d29cd685ce0ea0762636381beeb98a upstream.
    
    This property was already mentioned in the old textual bindings
    amlogic,meson-vpu.txt, but got dropped during conversion.
    Adding it back similar to amlogic,gx-vdec.yaml.
    
    Fixes: 6b9ebf1e0e67 ("dt-bindings: display: amlogic, meson-vpu: convert to yaml")
    Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
    Acked-by: Rob Herring <robh@kernel.org>
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211219094155.177206-1-alexander.stein@mailbox.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
EDAC/synopsys: Use the quirk for version instead of ddr version [+ + +]
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Tue Oct 12 14:07:06 2021 -0500

    EDAC/synopsys: Use the quirk for version instead of ddr version
    
    [ Upstream commit bd1d6da17c296bd005bfa656952710d256e77dd3 ]
    
    Version 2.40a supports DDR_ECC_INTR_SUPPORT for a quirk, so use that
    quirk to determine a call to setup_address_map().
    
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Michal Simek <michal.simek@xilinx.com>
    Link: https://lkml.kernel.org/r/20211012190709.1504152-1-dinguyen@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: avoid trim error on fs with small groups [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri Nov 12 16:22:02 2021 +0100

    ext4: avoid trim error on fs with small groups
    
    [ Upstream commit 173b6e383d2a204c9921ffc1eca3b87aa2106c33 ]
    
    A user reported FITRIM ioctl failing for him on ext4 on some devices
    without apparent reason.  After some debugging we've found out that
    these devices (being LVM volumes) report rather large discard
    granularity of 42MB and the filesystem had 1k blocksize and thus group
    size of 8MB. Because ext4 FITRIM implementation puts discard
    granularity into minlen, ext4_trim_fs() declared the trim request as
    invalid. However just silently doing nothing seems to be a more
    appropriate reaction to such combination of parameters since user did
    not specify anything wrong.
    
    CC: Lukas Czerner <lczerner@redhat.com>
    Fixes: 5c2ed62fd447 ("ext4: Adjust minlen with discard_granularity in the FITRIM ioctl")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20211112152202.26614-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: don't use the orphan list when migrating an inode [+ + +]
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Jan 5 23:59:56 2022 -0500

    ext4: don't use the orphan list when migrating an inode
    
    commit 6eeaf88fd586f05aaf1d48cb3a139d2a5c6eb055 upstream.
    
    We probably want to remove the indirect block to extents migration
    feature after a deprecation window, but until then, let's fix a
    potential data loss problem caused by the fact that we put the
    tmp_inode on the orphan list.  In the unlikely case where we crash and
    do a journal recovery, the data blocks belonging to the inode being
    migrated are also represented in the tmp_inode on the orphan list ---
    and so its data blocks will get marked unallocated, and available for
    reuse.
    
    Instead, stop putting the tmp_inode on the oprhan list.  So in the
    case where we crash while migrating the inode, we'll leak an inode,
    which is not a disaster.  It will be easily fixed the next time we run
    fsck, and it's better than potentially having blocks getting claimed
    by two different files, and losing data as a result.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Lukas Czerner <lczerner@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: Fix BUG_ON in ext4_bread when write quota data [+ + +]
Author: Ye Bin <yebin10@huawei.com>
Date:   Thu Dec 23 09:55:06 2021 +0800

    ext4: Fix BUG_ON in ext4_bread when write quota data
    
    commit 380a0091cab482489e9b19e07f2a166ad2b76d5c upstream.
    
    We got issue as follows when run syzkaller:
    [  167.936972] EXT4-fs error (device loop0): __ext4_remount:6314: comm rep: Abort forced by user
    [  167.938306] EXT4-fs (loop0): Remounting filesystem read-only
    [  167.981637] Assertion failure in ext4_getblk() at fs/ext4/inode.c:847: '(EXT4_SB(inode->i_sb)->s_mount_state & EXT4_FC_REPLAY) || handle != NULL || create == 0'
    [  167.983601] ------------[ cut here ]------------
    [  167.984245] kernel BUG at fs/ext4/inode.c:847!
    [  167.984882] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    [  167.985624] CPU: 7 PID: 2290 Comm: rep Tainted: G    B             5.16.0-rc5-next-20211217+ #123
    [  167.986823] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-buildvm-ppc64le-16.ppc.fedoraproject.org-3.fc31 04/01/2014
    [  167.988590] RIP: 0010:ext4_getblk+0x17e/0x504
    [  167.989189] Code: c6 01 74 28 49 c7 c0 a0 a3 5c 9b b9 4f 03 00 00 48 c7 c2 80 9c 5c 9b 48 c7 c6 40 b6 5c 9b 48 c7 c7 20 a4 5c 9b e8 77 e3 fd ff <0f> 0b 8b 04 244
    [  167.991679] RSP: 0018:ffff8881736f7398 EFLAGS: 00010282
    [  167.992385] RAX: 0000000000000094 RBX: 1ffff1102e6dee75 RCX: 0000000000000000
    [  167.993337] RDX: 0000000000000001 RSI: ffffffff9b6e29e0 RDI: ffffed102e6dee66
    [  167.994292] RBP: ffff88816a076210 R08: 0000000000000094 R09: ffffed107363fa09
    [  167.995252] R10: ffff88839b1fd047 R11: ffffed107363fa08 R12: ffff88816a0761e8
    [  167.996205] R13: 0000000000000000 R14: 0000000000000021 R15: 0000000000000001
    [  167.997158] FS:  00007f6a1428c740(0000) GS:ffff88839b000000(0000) knlGS:0000000000000000
    [  167.998238] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  167.999025] CR2: 00007f6a140716c8 CR3: 0000000133216000 CR4: 00000000000006e0
    [  167.999987] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  168.000944] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  168.001899] Call Trace:
    [  168.002235]  <TASK>
    [  168.007167]  ext4_bread+0xd/0x53
    [  168.007612]  ext4_quota_write+0x20c/0x5c0
    [  168.010457]  write_blk+0x100/0x220
    [  168.010944]  remove_free_dqentry+0x1c6/0x440
    [  168.011525]  free_dqentry.isra.0+0x565/0x830
    [  168.012133]  remove_tree+0x318/0x6d0
    [  168.014744]  remove_tree+0x1eb/0x6d0
    [  168.017346]  remove_tree+0x1eb/0x6d0
    [  168.019969]  remove_tree+0x1eb/0x6d0
    [  168.022128]  qtree_release_dquot+0x291/0x340
    [  168.023297]  v2_release_dquot+0xce/0x120
    [  168.023847]  dquot_release+0x197/0x3e0
    [  168.024358]  ext4_release_dquot+0x22a/0x2d0
    [  168.024932]  dqput.part.0+0x1c9/0x900
    [  168.025430]  __dquot_drop+0x120/0x190
    [  168.025942]  ext4_clear_inode+0x86/0x220
    [  168.026472]  ext4_evict_inode+0x9e8/0xa22
    [  168.028200]  evict+0x29e/0x4f0
    [  168.028625]  dispose_list+0x102/0x1f0
    [  168.029148]  evict_inodes+0x2c1/0x3e0
    [  168.030188]  generic_shutdown_super+0xa4/0x3b0
    [  168.030817]  kill_block_super+0x95/0xd0
    [  168.031360]  deactivate_locked_super+0x85/0xd0
    [  168.031977]  cleanup_mnt+0x2bc/0x480
    [  168.033062]  task_work_run+0xd1/0x170
    [  168.033565]  do_exit+0xa4f/0x2b50
    [  168.037155]  do_group_exit+0xef/0x2d0
    [  168.037666]  __x64_sys_exit_group+0x3a/0x50
    [  168.038237]  do_syscall_64+0x3b/0x90
    [  168.038751]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    In order to reproduce this problem, the following conditions need to be met:
    1. Ext4 filesystem with no journal;
    2. Filesystem image with incorrect quota data;
    3. Abort filesystem forced by user;
    4. umount filesystem;
    
    As in ext4_quota_write:
    ...
             if (EXT4_SB(sb)->s_journal && !handle) {
                     ext4_msg(sb, KERN_WARNING, "Quota write (off=%llu, len=%llu)"
                             " cancelled because transaction is not started",
                             (unsigned long long)off, (unsigned long long)len);
                     return -EIO;
             }
    ...
    We only check handle if NULL when filesystem has journal. There is need
    check handle if NULL even when filesystem has no journal.
    
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20211223015506.297766-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: make sure quota gets properly shutdown on error [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Oct 7 17:53:35 2021 +0200

    ext4: make sure quota gets properly shutdown on error
    
    commit 15fc69bbbbbc8c72e5f6cc4e1be0f51283c5448e upstream.
    
    When we hit an error when enabling quotas and setting inode flags, we do
    not properly shutdown quota subsystem despite returning error from
    Q_QUOTAON quotactl. This can lead to some odd situations like kernel
    using quota file while it is still writeable for userspace. Make sure we
    properly cleanup the quota subsystem in case of error.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20211007155336.12493-2-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: make sure to reset inode lockdep class when quota enabling fails [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Thu Oct 7 17:53:36 2021 +0200

    ext4: make sure to reset inode lockdep class when quota enabling fails
    
    commit 4013d47a5307fdb5c13370b5392498b00fedd274 upstream.
    
    When we succeed in enabling some quota type but fail to enable another
    one with quota feature, we correctly disable all enabled quota types.
    However we forget to reset i_data_sem lockdep class. When the inode gets
    freed and reused, it will inherit this lockdep class (i_data_sem is
    initialized only when a slab is created) and thus eventually lockdep
    barfs about possible deadlocks.
    
    Reported-and-tested-by: syzbot+3b6f9218b1301ddda3e2@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20211007155336.12493-3-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: set csum seed in tmp inode while migrating to extents [+ + +]
Author: Luís Henriques <lhenriques@suse.de>
Date:   Tue Dec 14 17:50:58 2021 +0000

    ext4: set csum seed in tmp inode while migrating to extents
    
    commit e81c9302a6c3c008f5c30beb73b38adb0170ff2d upstream.
    
    When migrating to extents, the temporary inode will have it's own checksum
    seed.  This means that, when swapping the inodes data, the inode checksums
    will be incorrect.
    
    This can be fixed by recalculating the extents checksums again.  Or simply
    by copying the seed into the temporary inode.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=213357
    Reported-by: Jeroen van Wolffelaar <jeroen@wolffelaar.nl>
    Signed-off-by: Luís Henriques <lhenriques@suse.de>
    Link: https://lore.kernel.org/r/20211214175058.19511-1-lhenriques@suse.de
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: fix to do sanity check in is_alive() [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Mon Dec 6 22:44:21 2021 +0800

    f2fs: fix to do sanity check in is_alive()
    
    commit 77900c45ee5cd5da63bd4d818a41dbdf367e81cd upstream.
    
    In fuzzed image, SSA table may indicate that a data block belongs to
    invalid node, which node ID is out-of-range (0, 1, 2 or max_nid), in
    order to avoid migrating inconsistent data in such corrupted image,
    let's do sanity check anyway before data block migration.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

f2fs: fix to reserve space for IO align feature [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Sat Dec 11 21:27:36 2021 +0800

    f2fs: fix to reserve space for IO align feature
    
    commit 300a842937fbcfb5a189cea9ba15374fdb0b5c6b upstream.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=204137
    
    With below script, we will hit panic during new segment allocation:
    
    DISK=bingo.img
    MOUNT_DIR=/mnt/f2fs
    
    dd if=/dev/zero of=$DISK bs=1M count=105
    mkfs.f2fe -a 1 -o 19 -t 1 -z 1 -f -q $DISK
    
    mount -t f2fs $DISK $MOUNT_DIR -o "noinline_dentry,flush_merge,noextent_cache,mode=lfs,io_bits=7,fsync_mode=strict"
    
    for (( i = 0; i < 4096; i++ )); do
            name=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 10`
            mkdir $MOUNT_DIR/$name
    done
    
    umount $MOUNT_DIR
    rm $DISK

 
firmware: Update Kconfig help text for Google firmware [+ + +]
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Jun 18 23:55:40 2018 +0100

    firmware: Update Kconfig help text for Google firmware
    
    commit d185a3466f0cd5af8f1c5c782c53bc0e6f2e7136 upstream.
    
    The help text for GOOGLE_FIRMWARE states that it should only be
    enabled when building a kernel for Google's own servers.  However,
    many of the drivers dependent on it are also useful on Chromebooks or
    on any platform using coreboot.
    
    Update the help text to reflect this double duty.
    
    Fixes: d384d6f43d1e ("firmware: google memconsole: Add coreboot support")
    Reviewed-by: Julius Werner <jwerner@chromium.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Link: https://lore.kernel.org/r/20180618225540.GD14131@decadent.org.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
floppy: Add max size check for user space request [+ + +]
Author: Xiongwei Song <sxwjean@gmail.com>
Date:   Tue Nov 16 21:10:33 2021 +0800

    floppy: Add max size check for user space request
    
    [ Upstream commit 545a32498c536ee152331cd2e7d2416aa0f20e01 ]
    
    We need to check the max request size that is from user space before
    allocating pages. If the request size exceeds the limit, return -EINVAL.
    This check can avoid the warning below from page allocator.
    
    WARNING: CPU: 3 PID: 16525 at mm/page_alloc.c:5344 current_gfp_context include/linux/sched/mm.h:195 [inline]
    WARNING: CPU: 3 PID: 16525 at mm/page_alloc.c:5344 __alloc_pages+0x45d/0x500 mm/page_alloc.c:5356
    Modules linked in:
    CPU: 3 PID: 16525 Comm: syz-executor.3 Not tainted 5.15.0-syzkaller #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    RIP: 0010:__alloc_pages+0x45d/0x500 mm/page_alloc.c:5344
    Code: be c9 00 00 00 48 c7 c7 20 4a 97 89 c6 05 62 32 a7 0b 01 e8 74 9a 42 07 e9 6a ff ff ff 0f 0b e9 a0 fd ff ff 40 80 e5 3f eb 88 <0f> 0b e9 18 ff ff ff 4c 89 ef 44 89 e6 45 31 ed e8 1e 76 ff ff e9
    RSP: 0018:ffffc90023b87850 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 1ffff92004770f0b RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000033 RDI: 0000000000010cc1
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000001
    R10: ffffffff81bb4686 R11: 0000000000000001 R12: ffffffff902c1960
    R13: 0000000000000033 R14: 0000000000000000 R15: ffff88804cf64a30
    FS:  0000000000000000(0000) GS:ffff88802cd00000(0063) knlGS:00000000f44b4b40
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 000000002c921000 CR3: 000000004f507000 CR4: 0000000000150ee0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     alloc_pages+0x1a7/0x300 mm/mempolicy.c:2191
     __get_free_pages+0x8/0x40 mm/page_alloc.c:5418
     raw_cmd_copyin drivers/block/floppy.c:3113 [inline]
     raw_cmd_ioctl drivers/block/floppy.c:3160 [inline]
     fd_locked_ioctl+0x12e5/0x2820 drivers/block/floppy.c:3528
     fd_ioctl drivers/block/floppy.c:3555 [inline]
     fd_compat_ioctl+0x891/0x1b60 drivers/block/floppy.c:3869
     compat_blkdev_ioctl+0x3b8/0x810 block/ioctl.c:662
     __do_compat_sys_ioctl+0x1c7/0x290 fs/ioctl.c:972
     do_syscall_32_irqs_on arch/x86/entry/common.c:112 [inline]
     __do_fast_syscall_32+0x65/0xf0 arch/x86/entry/common.c:178
     do_fast_syscall_32+0x2f/0x70 arch/x86/entry/common.c:203
     entry_SYSENTER_compat_after_hwframe+0x4d/0x5c
    
    Reported-by: syzbot+23a02c7df2cf2bc93fa2@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20211116131033.27685-1-sxwjean@me.com
    Signed-off-by: Xiongwei Song <sxwjean@gmail.com>
    Signed-off-by: Denis Efremov <efremov@linux.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

floppy: Fix hang in watchdog when disk is ejected [+ + +]
Author: Tasos Sahanidis <tasos@tasossah.com>
Date:   Fri Sep 3 09:47:58 2021 +0300

    floppy: Fix hang in watchdog when disk is ejected
    
    [ Upstream commit fb48febce7e30baed94dd791e19521abd2c3fd83 ]
    
    When the watchdog detects a disk change, it calls cancel_activity(),
    which in turn tries to cancel the fd_timer delayed work.
    
    In the above scenario, fd_timer_fn is set to fd_watchdog(), meaning
    it is trying to cancel its own work.
    This results in a hang as cancel_delayed_work_sync() is waiting for the
    watchdog (itself) to return, which never happens.
    
    This can be reproduced relatively consistently by attempting to read a
    broken floppy, and ejecting it while IO is being attempted and retried.
    
    To resolve this, this patch calls cancel_delayed_work() instead, which
    cancels the work without waiting for the watchdog to return and finish.
    
    Before this regression was introduced, the code in this section used
    del_timer(), and not del_timer_sync() to delete the watchdog timer.
    
    Link: https://lore.kernel.org/r/399e486c-6540-db27-76aa-7a271b061f76@tasossah.com
    Fixes: 070ad7e793dc ("floppy: convert to delayed work and single-thread wq")
    Signed-off-by: Tasos Sahanidis <tasos@tasossah.com>
    Signed-off-by: Denis Efremov <efremov@linux.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs: dlm: filter user dlm messages for kernel locks [+ + +]
Author: Alexander Aring <aahringo@redhat.com>
Date:   Tue Nov 2 15:17:24 2021 -0400

    fs: dlm: filter user dlm messages for kernel locks
    
    [ Upstream commit 6c2e3bf68f3e5e5a647aa52be246d5f552d7496d ]
    
    This patch fixes the following crash by receiving a invalid message:
    
    [  160.672220] ==================================================================
    [  160.676206] BUG: KASAN: user-memory-access in dlm_user_add_ast+0xc3/0x370
    [  160.679659] Read of size 8 at addr 00000000deadbeef by task kworker/u32:13/319
    [  160.681447]
    [  160.681824] CPU: 10 PID: 319 Comm: kworker/u32:13 Not tainted 5.14.0-rc2+ #399
    [  160.683472] Hardware name: Red Hat KVM/RHEL-AV, BIOS 1.14.0-1.module+el8.6.0+12648+6ede71a5 04/01/2014
    [  160.685574] Workqueue: dlm_recv process_recv_sockets
    [  160.686721] Call Trace:
    [  160.687310]  dump_stack_lvl+0x56/0x6f
    [  160.688169]  ? dlm_user_add_ast+0xc3/0x370
    [  160.689116]  kasan_report.cold.14+0x116/0x11b
    [  160.690138]  ? dlm_user_add_ast+0xc3/0x370
    [  160.690832]  dlm_user_add_ast+0xc3/0x370
    [  160.691502]  _receive_unlock_reply+0x103/0x170
    [  160.692241]  _receive_message+0x11df/0x1ec0
    [  160.692926]  ? rcu_read_lock_sched_held+0xa1/0xd0
    [  160.693700]  ? rcu_read_lock_bh_held+0xb0/0xb0
    [  160.694427]  ? lock_acquire+0x175/0x400
    [  160.695058]  ? do_purge.isra.51+0x200/0x200
    [  160.695744]  ? lock_acquired+0x360/0x5d0
    [  160.696400]  ? lock_contended+0x6a0/0x6a0
    [  160.697055]  ? lock_release+0x21d/0x5e0
    [  160.697686]  ? lock_is_held_type+0xe0/0x110
    [  160.698352]  ? lock_is_held_type+0xe0/0x110
    [  160.699026]  ? ___might_sleep+0x1cc/0x1e0
    [  160.699698]  ? dlm_wait_requestqueue+0x94/0x140
    [  160.700451]  ? dlm_process_requestqueue+0x240/0x240
    [  160.701249]  ? down_write_killable+0x2b0/0x2b0
    [  160.701988]  ? do_raw_spin_unlock+0xa2/0x130
    [  160.702690]  dlm_receive_buffer+0x1a5/0x210
    [  160.703385]  dlm_process_incoming_buffer+0x726/0x9f0
    [  160.704210]  receive_from_sock+0x1c0/0x3b0
    [  160.704886]  ? dlm_tcp_shutdown+0x30/0x30
    [  160.705561]  ? lock_acquire+0x175/0x400
    [  160.706197]  ? rcu_read_lock_sched_held+0xa1/0xd0
    [  160.706941]  ? rcu_read_lock_bh_held+0xb0/0xb0
    [  160.707681]  process_recv_sockets+0x32/0x40
    [  160.708366]  process_one_work+0x55e/0xad0
    [  160.709045]  ? pwq_dec_nr_in_flight+0x110/0x110
    [  160.709820]  worker_thread+0x65/0x5e0
    [  160.710423]  ? process_one_work+0xad0/0xad0
    [  160.711087]  kthread+0x1ed/0x220
    [  160.711628]  ? set_kthread_struct+0x80/0x80
    [  160.712314]  ret_from_fork+0x22/0x30
    
    The issue is that we received a DLM message for a user lock but the
    destination lock is a kernel lock. Note that the address which is trying
    to derefence is 00000000deadbeef, which is in a kernel lock
    lkb->lkb_astparam, this field should never be derefenced by the DLM
    kernel stack. In case of a user lock lkb->lkb_astparam is lkb->lkb_ua
    (memory is shared by a union field). The struct lkb_ua will be handled
    by the DLM kernel stack but on a kernel lock it will contain invalid
    data and ends in most likely crashing the kernel.
    
    It can be reproduced with two cluster nodes.
    
    node 2:
    dlm_tool join test
    echo "862 fooobaar 1 2 1" > /sys/kernel/debug/dlm/test_locks
    echo "862 3 1" > /sys/kernel/debug/dlm/test_waiters
    
    node 1:
    dlm_tool join test
    
    python:
    foo = DLM(h_cmd=3, o_nextcmd=1, h_nodeid=1, h_lockspace=0x77222027, \
              m_type=7, m_flags=0x1, m_remid=0x862, m_result=0xFFFEFFFE)
    newFile = open("/sys/kernel/debug/dlm/comms/2/rawmsg", "wb")
    newFile.write(bytes(foo))
    
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fsl/fman: Check for null pointer after calling devm_ioremap [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Thu Jan 6 18:04:10 2022 +0800

    fsl/fman: Check for null pointer after calling devm_ioremap
    
    [ Upstream commit d5a73ec96cc57cf67e51b12820fc2354e7ca46f8 ]
    
    As the possible failure of the allocation, the devm_ioremap() may return
    NULL pointer.
    Take tgec_initialization() as an example.
    If allocation fails, the params->base_addr will be NULL pointer and will
    be assigned to tgec->regs in tgec_config().
    Then it will cause the dereference of NULL pointer in set_mac_address(),
    which is called by tgec_init().
    Therefore, it should be better to add the sanity check after the calling
    of the devm_ioremap().
    
    Fixes: 3933961682a3 ("fsl/fman: Add FMan MAC driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fuse: Pass correct lend value to filemap_write_and_wait_range() [+ + +]
Author: Xie Yongji <xieyongji@bytedance.com>
Date:   Mon Nov 22 17:05:31 2021 +0800

    fuse: Pass correct lend value to filemap_write_and_wait_range()
    
    commit e388164ea385f04666c4633f5dc4f951fca71890 upstream.
    
    The acceptable maximum value of lend parameter in
    filemap_write_and_wait_range() is LLONG_MAX rather than -1. And there is
    also some logic depending on LLONG_MAX check in write_cache_pages(). So
    let's pass LLONG_MAX to filemap_write_and_wait_range() in
    fuse_writeback_range() instead.
    
    Fixes: 59bda8ecee2f ("fuse: flush extending writes")
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Cc: <stable@vger.kernel.org> # v5.15
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock [+ + +]
Author: Iwona Winiarska <iwona.winiarska@intel.com>
Date:   Sat Dec 4 18:10:26 2021 +0100

    gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock
    
    [ Upstream commit 61a7904b6ace99b1bde0d0e867fa3097f5c8cee2 ]
    
    The gpio-aspeed driver implements an irq_chip which need to be invoked
    from hardirq context. Since spin_lock() can sleep with PREEMPT_RT, it is
    no longer legal to invoke it while interrupts are disabled.
    This also causes lockdep to complain about:
    [    0.649797] [ BUG: Invalid wait context ]
    because aspeed_gpio.lock (spin_lock_t) is taken under irq_desc.lock
    (raw_spinlock_t).
    Let's use of raw_spinlock_t instead of spinlock_t.
    
    Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Nov 25 21:30:10 2021 +0100

    gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use
    
    [ Upstream commit bdfd6ab8fdccd8b138837efff66f4a1911496378 ]
    
    If the IRQ is already in use, then acpi_dev_gpio_irq_get_by() really
    should not change the type underneath the current owner.
    
    I specifically hit an issue with this an a Chuwi Hi8 Super (CWI509) Bay
    Trail tablet, when the Boot OS selection in the BIOS is set to Android.
    In this case _STA for a MAX17047 ACPI I2C device wrongly returns 0xf and
    the _CRS resources for this device include a GpioInt pointing to a GPIO
    already in use by an _AEI handler, with a different type then specified
    in the _CRS for the MAX17047 device. Leading to the acpi_dev_gpio_irq_get()
    call done by the i2c-core-acpi.c code changing the type breaking the
    _AEI handler.
    
    Now this clearly is a bug in the DSDT of this tablet (in Android mode),
    but in general calling irq_set_irq_type() on an IRQ which already is
    in use seems like a bad idea.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() [+ + +]
Author: Guillaume Nault <gnault@redhat.com>
Date:   Mon Jan 10 14:43:09 2022 +0100

    gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst()
    
    commit f7716b318568b22fbf0e3be99279a979e217cf71 upstream.
    
    Mask the ECN bits before initialising ->flowi4_tos. The tunnel key may
    have the last ECN bit set, which will interfere with the route lookup
    process as ip_route_output_key_hash() interpretes this bit specially
    (to restrict the route scope).
    
    Found by code inspection, compile tested only.
    
    Fixes: 962924fa2b7a ("ip_gre: Refactor collect metatdata mode tunnel xmit to ip_md_tunnel_xmit")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: apple: Do not reset quirks when the Fn key is not found [+ + +]
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Thu Nov 18 08:29:53 2021 +0100

    HID: apple: Do not reset quirks when the Fn key is not found
    
    [ Upstream commit a5fe7864d8ada170f19cc47d176bf8260ffb4263 ]
    
    When a keyboard without a function key is detected, instead of removing
    all quirks, remove only the APPLE_HAS_FN quirk.
    
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-uclogic-params: Invalid parameter check in uclogic_params_frame_init_v1_buttonpad [+ + +]
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Wed Jan 5 18:29:15 2022 +0100

    HID: hid-uclogic-params: Invalid parameter check in uclogic_params_frame_init_v1_buttonpad
    
    [ Upstream commit aa320fdbbbb482c19100f51461bd0069753ce3d7 ]
    
    The function performs a check on the hdev input parameters, however, it
    is used before the check.
    
    Initialize the udev variable after the sanity check to avoid a
    possible NULL pointer dereference.
    
    Fixes: 9614219e9310e ("HID: uclogic: Extract tablet parameter discovery into a module")
    Addresses-Coverity-ID: 1443763 ("Null pointer dereference")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-uclogic-params: Invalid parameter check in uclogic_params_get_str_desc [+ + +]
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Wed Jan 5 18:29:13 2022 +0100

    HID: hid-uclogic-params: Invalid parameter check in uclogic_params_get_str_desc
    
    [ Upstream commit 0a94131d6920916ccb6a357037c535533af08819 ]
    
    The function performs a check on the hdev input parameters, however, it
    is used before the check.
    
    Initialize the udev variable after the sanity check to avoid a
    possible NULL pointer dereference.
    
    Fixes: 9614219e9310e ("HID: uclogic: Extract tablet parameter discovery into a module")
    Addresses-Coverity-ID: 1443827 ("Null pointer dereference")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-uclogic-params: Invalid parameter check in uclogic_params_huion_init [+ + +]
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Wed Jan 5 18:29:14 2022 +0100

    HID: hid-uclogic-params: Invalid parameter check in uclogic_params_huion_init
    
    [ Upstream commit ff6b548afe4d9d1ff3a0f6ef79e8cbca25d8f905 ]
    
    The function performs a check on its input parameters, however, the
    hdev parameter is used before the check.
    
    Initialize the stack variables after checking the input parameters to
    avoid a possible NULL pointer dereference.
    
    Fixes: 9614219e9310e ("HID: uclogic: Extract tablet parameter discovery into a module")
    Addresses-Coverity-ID: 1443804 ("Null pointer dereference")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init [+ + +]
Author: José Expósito <jose.exposito89@gmail.com>
Date:   Wed Jan 5 18:29:12 2022 +0100

    HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init
    
    [ Upstream commit f364c571a5c77e96de2d32062ff019d6b8d2e2bc ]
    
    The function performs a check on its input parameters, however, the
    hdev parameter is used before the check.
    
    Initialize the stack variables after checking the input parameters to
    avoid a possible NULL pointer dereference.
    
    Fixes: 9614219e9310e ("HID: uclogic: Extract tablet parameter discovery into a module")
    Addresses-Coverity-ID: 1443831 ("Null pointer dereference")
    Signed-off-by: José Expósito <jose.exposito89@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: quirks: Allow inverting the absolute X/Y values [+ + +]
Author: Alistair Francis <alistair@alistair23.me>
Date:   Wed Dec 8 22:40:43 2021 +1000

    HID: quirks: Allow inverting the absolute X/Y values
    
    [ Upstream commit fd8d135b2c5e88662f2729e034913f183455a667 ]
    
    Add a HID_QUIRK_X_INVERT/HID_QUIRK_Y_INVERT quirk that can be used
    to invert the X/Y values.
    
    Signed-off-by: Alistair Francis <alistair@alistair23.me>
    [bentiss: silence checkpatch warning]
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211208124045.61815-2-alistair@alistair23.me
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: uhid: Fix worker destroying device without any protection [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Fri Jan 14 14:33:30 2022 +0100

    HID: uhid: Fix worker destroying device without any protection
    
    commit 4ea5763fb79ed89b3bdad455ebf3f33416a81624 upstream.
    
    uhid has to run hid_add_device() from workqueue context while allowing
    parallel use of the userspace API (which is protected with ->devlock).
    But hid_add_device() can fail. Currently, that is handled by immediately
    destroying the associated HID device, without using ->devlock - but if
    there are concurrent requests from userspace, that's wrong and leads to
    NULL dereferences and/or memory corruption (via use-after-free).
    
    Fix it by leaving the HID device as-is in the worker. We can clean it up
    later, either in the UHID_DESTROY command handler or in the ->release()
    handler.
    
    Cc: stable@vger.kernel.org
    Fixes: 67f8ecc550b5 ("HID: uhid: fix timeout when probe races with IO")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
HID: wacom: Avoid using stale array indicies to read contact count [+ + +]
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jan 18 14:38:41 2022 -0800

    HID: wacom: Avoid using stale array indicies to read contact count
    
    commit 20f3cf5f860f9f267a6a6e5642d3d0525edb1814 upstream.
    
    If we ever see a touch report with contact count data we initialize
    several variables used to read the contact count in the pre-report
    phase. These variables are never reset if we process a report which
    doesn't contain a contact count, however. This can cause the pre-
    report function to trigger a read of arbitrary memory (e.g. NULL
    if we're lucky) and potentially crash the driver.
    
    This commit restores resetting of the variables back to default
    "none" values that were used prior to the commit mentioned
    below.
    
    Link: https://github.com/linuxwacom/input-wacom/issues/276
    Fixes: 003f50ab673c (HID: wacom: Update last_slot_field during pre_report phase)
    CC: stable@vger.kernel.org
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: wacom: Ignore the confidence flag when a touch is removed [+ + +]
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jan 18 14:37:56 2022 -0800

    HID: wacom: Ignore the confidence flag when a touch is removed
    
    commit df03e9bd6d4806619b4cdc91a3d7695818a8e2b7 upstream.
    
    AES hardware may internally re-classify a contact that it thought was
    intentional as a palm. Intentional contacts are reported as "down" with
    the confidence bit set. When this re-classification occurs, however, the
    state transitions to "up" with the confidence bit cleared. This kind of
    transition appears to be legal according to Microsoft docs, but we do
    not handle it correctly. Because the confidence bit is clear, we don't
    call `wacom_wac_finger_slot` and update userspace. This causes hung
    touches that confuse userspace and interfere with pen arbitration.
    
    This commit adds a special case to ignore the confidence flag if a contact
    is reported as removed. This ensures we do not leave a hung touch if one
    of these re-classification events occured. Ideally we'd have some way to
    also let userspace know that the touch has been re-classified as a palm
    and needs to be canceled, but that's not possible right now :)
    
    Link: https://github.com/linuxwacom/input-wacom/issues/288
    Fixes: 7fb0413baa7f (HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts)
    CC: stable@vger.kernel.org
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: wacom: Reset expected and received contact counts at the same time [+ + +]
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jan 18 14:37:55 2022 -0800

    HID: wacom: Reset expected and received contact counts at the same time
    
    commit 546e41ac994cc185ef3de610ca849a294b5df3ba upstream.
    
    These two values go hand-in-hand and must be valid for the driver to
    behave correctly. We are currently lazy about updating the values and
    rely on the "expected" code flow to take care of making sure they're
    valid at the point they're needed. The "expected" flow changed somewhat
    with commit f8b6a74719b5 ("HID: wacom: generic: Support multiple tools
    per report"), however. This led to problems with the DTH-2452 due (in
    part) to *all* contacts being fully processed -- even those past the
    expected contact count. Specifically, the received count gets reset to
    0 once all expected fingers are processed, but not the expected count.
    The rest of the contacts in the report are then *also* processed since
    now the driver thinks we've only processed 0 of N expected contacts.
    
    Later commits such as 7fb0413baa7f (HID: wacom: Use "Confidence" flag to
    prevent reporting invalid contacts) worked around the DTH-2452 issue by
    skipping the invalid contacts at the end of the report, but this is not
    a complete fix. The confidence flag cannot be relied on when a contact
    is removed (see the following patch), and dealing with that condition
    re-introduces the DTH-2452 issue unless we also address this contact
    count laziness. By resetting expected and received counts at the same
    time we ensure the driver understands that there are 0 more contacts
    expected in the report. Similarly, we also make sure to reset the
    received count if for some reason we're out of sync in the pre-report
    phase.
    
    Link: https://github.com/linuxwacom/input-wacom/issues/288
    Fixes: f8b6a74719b5 ("HID: wacom: generic: Support multiple tools per report")
    CC: stable@vger.kernel.org
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HSI: core: Fix return freed object in hsi_new_client [+ + +]
Author: Chengfeng Ye <cyeaa@connect.ust.hk>
Date:   Fri Nov 5 06:45:07 2021 -0700

    HSI: core: Fix return freed object in hsi_new_client
    
    [ Upstream commit a1ee1c08fcd5af03187dcd41dcab12fd5b379555 ]
    
    cl is freed on error of calling device_register, but this
    object is return later, which will cause uaf issue. Fix it
    by return NULL on error.
    
    Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters [+ + +]
Author: Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
Date:   Wed Dec 15 17:12:01 2021 +0200

    i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters
    
    [ Upstream commit d52097010078c1844348dc0e467305e5f90fd317 ]
    
    The data type of hcnt and lcnt in the struct dw_i2c_dev is of type u16.
    It's better to have same data type in struct dw_scl_sda_cfg as well.
    
    Reported-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: i801: Don't silently correct invalid transfer size [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Sun Nov 7 22:57:00 2021 +0100

    i2c: i801: Don't silently correct invalid transfer size
    
    [ Upstream commit effa453168a7eeb8a562ff4edc1dbf9067360a61 ]
    
    If an invalid block size is provided, reject it instead of silently
    changing it to a supported value. Especially critical I see the case of
    a write transfer with block length 0. In this case we have no guarantee
    that the byte we would write is valid. When silently reducing a read to
    32 bytes then we don't return an error and the caller may falsely
    assume that we returned the full requested data.
    
    If this change should break any (broken) caller, then I think we should
    fix the caller.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: mpc: Correct I2C reset procedure [+ + +]
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Thu May 11 14:20:33 2017 +0200

    i2c: mpc: Correct I2C reset procedure
    
    [ Upstream commit ebe82cf92cd4825c3029434cabfcd2f1780e64be ]
    
    Current I2C reset procedure is broken in two ways:
    1) It only generate 1 START instead of 9 STARTs and STOP.
    2) It leaves the bus Busy so every I2C xfer after the first
       fixup calls the reset routine again, for every xfer there after.
    
    This fixes both errors.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Acked-by: Scott Wood <oss@buserror.net>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
inet: frags: annotate races around fqdir->dead and fqdir->high_thresh [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 13 01:22:29 2022 -0800

    inet: frags: annotate races around fqdir->dead and fqdir->high_thresh
    
    commit 91341fa0003befd097e190ec2a4bf63ad957c49a upstream.
    
    Both fields can be read/written without synchronization,
    add proper accessors and documentation.
    
    Fixes: d5dd88794a13 ("inet: fix various use-after-free in defrags units")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure [+ + +]
Author: Yunfei Wang <yf.wang@mediatek.com>
Date:   Tue Dec 7 19:33:15 2021 +0800

    iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure
    
    commit a556cfe4cabc6d79cbb7733f118bbb420b376fe6 upstream.
    
    In __arm_v7s_alloc_table function:
    iommu call kmem_cache_alloc to allocate page table, this function
    allocate memory may fail, when kmem_cache_alloc fails to allocate
    table, call virt_to_phys will be abnomal and return unexpected phys
    and goto out_free, then call kmem_cache_free to release table will
    trigger KE, __get_free_pages and free_pages have similar problem,
    so add error handle for page table allocation failure.
    
    Fixes: 29859aeb8a6e ("iommu/io-pgtable-arm-v7s: Abort allocation when table address overflows the PTE")
    Signed-off-by: Yunfei Wang <yf.wang@mediatek.com>
    Cc: <stable@vger.kernel.org> # 5.10.*
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Link: https://lore.kernel.org/r/20211207113315.29109-1-yf.wang@mediatek.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/io-pgtable-arm: Fix table descriptor paddr formatting [+ + +]
Author: Hector Martin <marcan@marcan.st>
Date:   Sat Nov 20 12:13:43 2021 +0900

    iommu/io-pgtable-arm: Fix table descriptor paddr formatting
    
    [ Upstream commit 9abe2ac834851a7d0b0756e295cf7a292c45ca53 ]
    
    Table descriptors were being installed without properly formatting the
    address using paddr_to_iopte, which does not match up with the
    iopte_deref in __arm_lpae_map. This is incorrect for the LPAE pte
    format, as it does not handle the high bits properly.
    
    This was found on Apple T6000 DARTs, which require a new pte format
    (different shift); adding support for that to
    paddr_to_iopte/iopte_to_paddr caused it to break badly, as even <48-bit
    addresses would end up incorrect in that case.
    
    Fixes: 6c89928ff7a0 ("iommu/io-pgtable-arm: Support 52-bit physical address")
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Link: https://lore.kernel.org/r/20211120031343.88034-1-marcan@marcan.st
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/iova: Fix race between FQ timeout and teardown [+ + +]
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Fri Dec 17 15:30:55 2021 +0000

    iommu/iova: Fix race between FQ timeout and teardown
    
    [ Upstream commit d7061627d701c90e1cac1e1e60c45292f64f3470 ]
    
    It turns out to be possible for hotplugging out a device to reach the
    stage of tearing down the device's group and default domain before the
    domain's flush queue has drained naturally. At this point, it is then
    possible for the timeout to expire just before the del_timer() call
    in free_iova_flush_queue(), such that we then proceed to free the FQ
    resources while fq_flush_timeout() is still accessing them on another
    CPU. Crashes due to this have been observed in the wild while removing
    NVMe devices.
    
    Close the race window by using del_timer_sync() to safely wait for any
    active timeout handler to finish before we start to free things. We
    already avoid any locking in free_iova_flush_queue() since the FQ is
    supposed to be inactive anyway, so the potential deadlock scenario does
    not apply.
    
    Fixes: 9a005a800ae8 ("iommu/iova: Add flush timer")
    Reviewed-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    [ rm: rewrite commit message ]
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Link: https://lore.kernel.org/r/0a365e5b07f14b7344677ad6a9a734966a8422ce.1639753638.git.robin.murphy@arm.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv4: avoid quadratic behavior in netns dismantle [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 19 02:04:12 2022 -0800

    ipv4: avoid quadratic behavior in netns dismantle
    
    commit d07418afea8f1d9896aaf9dc5ae47ac4f45b220c upstream.
    
    net/ipv4/fib_semantics.c uses an hash table of 256 slots,
    keyed by device ifindexes: fib_info_devhash[DEVINDEX_HASHSIZE]
    
    Problem is that with network namespaces, devices tend
    to use the same ifindex.
    
    lo device for instance has a fixed ifindex of one,
    for all network namespaces.
    
    This means that hosts with thousands of netns spend
    a lot of time looking at some hash buckets with thousands
    of elements, notably at netns dismantle.
    
    Simply add a per netns perturbation (net_hash_mix())
    to spread elements more uniformely.
    
    Also change fib_devindex_hashfn() to use more entropy.
    
    Fixes: aa79e66eee5d ("net: Make ifindex generation per-net namespace")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iwlwifi: fix leaks/bad data after failed firmware load [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Dec 10 11:12:42 2021 +0200

    iwlwifi: fix leaks/bad data after failed firmware load
    
    [ Upstream commit ab07506b0454bea606095951e19e72c282bfbb42 ]
    
    If firmware load fails after having loaded some parts of the
    firmware, e.g. the IML image, then this would leak. For the
    host command list we'd end up running into a WARN on the next
    attempt to load another firmware image.
    
    Fix this by calling iwl_dealloc_ucode() on failures, and make
    that also clear the data so we start fresh on the next round.
    
    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.20211210110539.1f742f0eb58a.I1315f22f6aa632d94ae2069f85e1bca5e734dce0@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iwlwifi: mvm: Fix calculation of frame length [+ + +]
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Sun Dec 19 12:18:16 2021 +0200

    iwlwifi: mvm: Fix calculation of frame length
    
    [ Upstream commit 40a0b38d7a7f91a6027287e0df54f5f547e8d27e ]
    
    The RADA might include in the Rx frame the MIC and CRC bytes.
    These bytes should be removed for non monitor interfaces and
    should not be passed to mac80211.
    
    Fix the Rx processing to remove the extra bytes on non monitor
    cases.
    
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20211219121514.098be12c801e.I1d81733d8a75b84c3b20eb6e0d14ab3405ca6a86@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iwlwifi: mvm: Increase the scan timeout guard to 30 seconds [+ + +]
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Fri Dec 10 09:06:21 2021 +0200

    iwlwifi: mvm: Increase the scan timeout guard to 30 seconds
    
    commit ced50f1133af12f7521bb777fcf4046ca908fb77 upstream.
    
    With the introduction of 6GHz channels the scan guard timeout should
    be adjusted to account for the following extreme case:
    
    - All 6GHz channels are scanned passively: 58 channels.
    - The scan is fragmented with the following parameters: 3 fragments,
      95 TUs suspend time, 44 TUs maximal out of channel time.
    
    The above would result with scan time of more than 24 seconds. Thus,
    set the timeout to 30 seconds.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20211210090244.3c851b93aef5.I346fa2e1d79220a6770496e773c6f87a2ad9e6c4@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iwlwifi: mvm: synchronize with FW after multicast commands [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Sat Dec 4 08:35:45 2021 +0200

    iwlwifi: mvm: synchronize with FW after multicast commands
    
    [ Upstream commit db66abeea3aefed481391ecc564fb7b7fb31d742 ]
    
    If userspace installs a lot of multicast groups very quickly, then
    we may run out of command queue space as we send the updates in an
    asynchronous fashion (due to locking concerns), and the CPU can
    create them faster than the firmware can process them. This is true
    even when mac80211 has a work struct that gets scheduled.
    
    Fix this by synchronizing with the firmware after sending all those
    commands - outside of the iteration we can send a synchronous echo
    command that just has the effect of the CPU waiting for the prior
    asynchronous commands to finish. This also will cause fewer of the
    commands to be sent to the firmware overall, because the work will
    only run once when rescheduled multiple times while it's running.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=213649
    Suggested-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Reported-by: Maximilian Ernestus <maximilian@ernestus.de>
    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.20211204083238.51aea5b79ea4.I88a44798efda16e9fe480fb3e94224931d311b29@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iwlwifi: remove module loading failure message [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Dec 10 11:12:45 2021 +0200

    iwlwifi: remove module loading failure message
    
    [ Upstream commit 6518f83ffa51131daaf439b66094f684da3fb0ae ]
    
    When CONFIG_DEBUG_TEST_DRIVER_REMOVE is set, iwlwifi crashes
    when the opmode module cannot be loaded, due to completing
    the completion before using drv->dev, which can then already
    be freed.
    
    Fix this by removing the (fairly useless) message. Moving the
    completion later causes a deadlock instead, so that's not an
    option.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/20211210091245.289008-2-luca@coelho.fi
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jffs2: GC deadlock reading a page that is used in jffs2_write_begin() [+ + +]
Author: Kyeong Yoo <kyeong.yoo@alliedtelesis.co.nz>
Date:   Tue Jul 4 16:22:38 2017 +1200

    jffs2: GC deadlock reading a page that is used in jffs2_write_begin()
    
    [ Upstream commit aa39cc675799bc92da153af9a13d6f969c348e82 ]
    
    GC task can deadlock in read_cache_page() because it may attempt
    to release a page that is actually allocated by another task in
    jffs2_write_begin().
    The reason is that in jffs2_write_begin() there is a small window
    a cache page is allocated for use but not set Uptodate yet.
    
    This ends up with a deadlock between two tasks:
    1) A task (e.g. file copy)
       - jffs2_write_begin() locks a cache page
       - jffs2_write_end() tries to lock "alloc_sem" from
             jffs2_reserve_space() <-- STUCK
    2) GC task (jffs2_gcd_mtd3)
       - jffs2_garbage_collect_pass() locks "alloc_sem"
       - try to lock the same cache page in read_cache_page() <-- STUCK
    
    So to avoid this deadlock, hold "alloc_sem" in jffs2_write_begin()
    while reading data in a cache page.
    
    Signed-off-by: Kyeong Yoo <kyeong.yoo@alliedtelesis.co.nz>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST [+ + +]
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Wed Sep 1 18:45:50 2021 +1000

    KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST
    
    [ Upstream commit 792020907b11c6f9246c21977cab3bad985ae4b6 ]
    
    H_COPY_TOFROM_GUEST is an hcall for an upper level VM to access its nested
    VMs memory. The userspace can trigger WARN_ON_ONCE(!(gfp & __GFP_NOWARN))
    in __alloc_pages() by constructing a tiny VM which only does
    H_COPY_TOFROM_GUEST with a too big GPR9 (number of bytes to copy).
    
    This silences the warning by adding __GFP_NOWARN.
    
    Spotted by syzkaller.
    
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210901084550.1658699-1-aik@ozlabs.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test [+ + +]
Author: Andrey Konovalov <andreyknvl@gmail.com>
Date:   Wed Jan 19 18:09:28 2022 -0800

    lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test
    
    commit e073e5ef90298d2d6e5e7f04b545a0815e92110c upstream.
    
    Make do_kmem_cache_size_bulk() destroy the cache it creates.
    
    Link: https://lkml.kernel.org/r/aced20a94bf04159a139f0846e41d38a1537debb.1640018297.git.andreyknvl@google.com
    Fixes: 03a9349ac0e0 ("lib/test_meminit: add a kmem_cache_alloc_bulk() test")
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Reviewed-by: Marco Elver <elver@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    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>

 
lib82596: Fix IRQ check in sni_82596_probe [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Fri Jan 14 06:57:24 2022 +0000

    lib82596: Fix IRQ check in sni_82596_probe
    
    commit 99218cbf81bf21355a3de61cd46a706d36e900e6 upstream.
    
    platform_get_irq() returns negative error number instead 0 on failure.
    And the doc of platform_get_irq() provides a usage example:
    
        int irq = platform_get_irq(pdev, 0);
        if (irq < 0)
            return irq;
    
    Fix the check of return value to catch errors correctly.
    
    Fixes: 115978859272 ("i825xx: Move the Intel 82586/82593/82596 based drivers")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() [+ + +]
Author: Guillaume Nault <gnault@redhat.com>
Date:   Mon Jan 10 14:43:11 2022 +0100

    libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route()
    
    commit a915deaa9abe4fb3a440312c954253a6a733608e upstream.
    
    Mask the ECN bits before calling ip_route_output_ports(). The tos
    variable might be passed directly from an IPv4 header, so it may have
    the last ECN bit set. This interferes with the route lookup process as
    ip_route_output_key_hash() interpretes this bit specially (to restrict
    the route scope).
    
    Found by code inspection, compile tested only.
    
    Fixes: 804c2f3e36ef ("libcxgb,iw_cxgb4,cxgbit: add cxgb_find_route()")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.4.174 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 27 09:19:56 2022 +0100

    Linux 5.4.174
    
    Link: https://lore.kernel.org/r/20220124183953.750177707@linuxfoundation.org
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Link: https://lore.kernel.org/r/20220125155315.237374794@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Fri Oct 8 18:58:40 2021 +0200

    lkdtm: Fix content of section containing lkdtm_rodata_do_nothing()
    
    commit bc93a22a19eb2b68a16ecf04cdf4b2ed65aaf398 upstream.
    
    On a kernel without CONFIG_STRICT_KERNEL_RWX, running EXEC_RODATA
    test leads to "Illegal instruction" failure.
    
    Looking at the content of rodata_objcopy.o, we see that the
    function content zeroes only:
    
            Disassembly of section .rodata:
    
            0000000000000000 <.lkdtm_rodata_do_nothing>:
               0:   00 00 00 00     .long 0x0
    
    Add the contents flag in order to keep the content of the section
    while renaming it.
    
            Disassembly of section .rodata:
    
            0000000000000000 <.lkdtm_rodata_do_nothing>:
               0:   4e 80 00 20     blr
    
    Fixes: e9e08a07385e ("lkdtm: support llvm-objcopy")
    Cc: stable@vger.kernel.org
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/8900731fbc05fb8b0de18af7133a8fc07c3c53a1.1633712176.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mac80211: allow non-standard VHT MCS-10/11 [+ + +]
Author: Ping-Ke Shih <pkshih@realtek.com>
Date:   Mon Jan 3 09:36:21 2022 +0800

    mac80211: allow non-standard VHT MCS-10/11
    
    [ Upstream commit 04be6d337d37400ad5b3d5f27ca87645ee5a18a3 ]
    
    Some AP can possibly try non-standard VHT rate and mac80211 warns and drops
    packets, and leads low TCP throughput.
    
        Rate marked as a VHT rate but data is invalid: MCS: 10, NSS: 2
        WARNING: CPU: 1 PID: 7817 at net/mac80211/rx.c:4856 ieee80211_rx_list+0x223/0x2f0 [mac8021
    
    Since commit c27aa56a72b8 ("cfg80211: add VHT rate entries for MCS-10 and MCS-11")
    has added, mac80211 adds this support as well.
    
    After this patch, throughput is good and iw can get the bitrate:
        rx bitrate: 975.1 MBit/s VHT-MCS 10 80MHz short GI VHT-NSS 2
    or
        rx bitrate: 1083.3 MBit/s VHT-MCS 11 80MHz short GI VHT-NSS 2
    
    Buglink: https://bugzilla.suse.com/show_bug.cgi?id=1192891
    Reported-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://lore.kernel.org/r/20220103013623.17052-1-pkshih@realtek.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: aspeed: fix mode-detect always time out at 2nd run [+ + +]
Author: Jammy Huang <jammy_huang@aspeedtech.com>
Date:   Wed Nov 3 08:23:54 2021 +0000

    media: aspeed: fix mode-detect always time out at 2nd run
    
    [ Upstream commit 62cea52ad4bead0ae4be2cfe1142eb0aae0e9fbd ]
    
    aspeed_video_get_resolution() will try to do res-detect again if the
    timing got in last try is invalid. But it will always time out because
    VE_SEQ_CTRL_TRIG_MODE_DET is only cleared after 1st mode-detect.
    
    To fix the problem, just clear VE_SEQ_CTRL_TRIG_MODE_DET before setting
    it in aspeed_video_enable_mode_detect().
    
    Fixes: d2b4387f3bdf ("media: platform: Add Aspeed Video Engine driver")
    Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
    Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    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>

media: aspeed: Update signal status immediately to ensure sane hw state [+ + +]
Author: Jammy Huang <jammy_huang@aspeedtech.com>
Date:   Tue Nov 9 03:12:27 2021 +0000

    media: aspeed: Update signal status immediately to ensure sane hw state
    
    [ Upstream commit af6d1bde395cac174ee71adcd3fa43f6435c7206 ]
    
    If res-chg, VE_INTERRUPT_MODE_DETECT_WD irq will be raised. But
    v4l2_input_status won't be updated to no-signal immediately until
    aspeed_video_get_resolution() in aspeed_video_resolution_work().
    
    During the period of time, aspeed_video_start_frame() could be called
    because it doesn't know signal becomes unstable now. If it goes with
    aspeed_video_init_regs() of aspeed_video_irq_res_change()
    simultaneously, it will mess up hw state.
    
    To fix this problem, v4l2_input_status is updated to no-signal
    immediately for VE_INTERRUPT_MODE_DETECT_WD irq.
    
    Fixes: d2b4387f3bdf ("media: platform: Add Aspeed Video Engine driver")
    Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
    Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
    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>

media: b2c2: Add missing check in flexcop_pci_isr: [+ + +]
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Tue May 11 10:00:03 2021 +0100

    media: b2c2: Add missing check in flexcop_pci_isr:
    
    [ Upstream commit b13203032e679674c7c518f52a7ec0801ca3a829 ]
    
    A out-of-bounds bug can be triggered by an interrupt, the reason for
    this bug is the lack of checking of register values.
    
    In flexcop_pci_isr, the driver reads value from a register and uses it as
    a dma address. Finally, this address will be passed to the count parameter
    of find_next_packet. If this value is larger than the size of dma, the
    index of buffer will be out-of-bounds.
    
    Fix this by adding a check after reading the value of the register.
    
    The following KASAN report reveals it:
    
    BUG: KASAN: slab-out-of-bounds in find_next_packet
    drivers/media/dvb-core/dvb_demux.c:528 [inline]
    BUG: KASAN: slab-out-of-bounds in _dvb_dmx_swfilter
    drivers/media/dvb-core/dvb_demux.c:572 [inline]
    BUG: KASAN: slab-out-of-bounds in dvb_dmx_swfilter+0x3fa/0x420
    drivers/media/dvb-core/dvb_demux.c:603
    Read of size 1 at addr ffff8880608c00a0 by task swapper/2/0
    
    CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.19.177-gdba4159c14ef #25
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xec/0x156 lib/dump_stack.c:118
     print_address_description+0x78/0x290 mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report+0x25b/0x380 mm/kasan/report.c:412
     __asan_report_load1_noabort+0x19/0x20 mm/kasan/report.c:430
     find_next_packet drivers/media/dvb-core/dvb_demux.c:528 [inline]
     _dvb_dmx_swfilter drivers/media/dvb-core/dvb_demux.c:572 [inline]
     dvb_dmx_swfilter+0x3fa/0x420 drivers/media/dvb-core/dvb_demux.c:603
     flexcop_pass_dmx_data+0x2e/0x40 drivers/media/common/b2c2/flexcop.c:167
     flexcop_pci_isr+0x3d1/0x5d0 drivers/media/pci/b2c2/flexcop-pci.c:212
     __handle_irq_event_percpu+0xfb/0x770 kernel/irq/handle.c:149
     handle_irq_event_percpu+0x79/0x150 kernel/irq/handle.c:189
     handle_irq_event+0xac/0x140 kernel/irq/handle.c:206
     handle_fasteoi_irq+0x232/0x5c0 kernel/irq/chip.c:725
     generic_handle_irq_desc include/linux/irqdesc.h:155 [inline]
     handle_irq+0x230/0x3a0 arch/x86/kernel/irq_64.c:87
     do_IRQ+0xa7/0x1e0 arch/x86/kernel/irq.c:247
     common_interrupt+0xf/0xf arch/x86/entry/entry_64.S:670
     </IRQ>
    RIP: 0010:native_safe_halt+0x28/0x30 arch/x86/include/asm/irqflags.h:61
    Code: 00 00 55 be 04 00 00 00 48 c7 c7 00 62 2f 8c 48 89 e5 e8 fb 31
    e8 f8 8b 05 75 4f 8e 03 85 c0 7e 07 0f 00 2d 8a 61 66 00 fb f4 <5d> c3
    90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 41 57 41 56 41
    RSP: 0018:ffff88806b71fcc8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffde
    RAX: 0000000000000000 RBX: ffffffff8bde44c8 RCX: ffffffff88a11285
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffffff8c2f6200
    RBP: ffff88806b71fcc8 R08: fffffbfff185ec40 R09: fffffbfff185ec40
    R10: 0000000000000001 R11: fffffbfff185ec40 R12: 0000000000000002
    R13: ffffffff8be9d6e0 R14: 0000000000000000 R15: 0000000000000000
     arch_safe_halt arch/x86/include/asm/paravirt.h:94 [inline]
     default_idle+0x6f/0x360 arch/x86/kernel/process.c:557
     arch_cpu_idle+0xf/0x20 arch/x86/kernel/process.c:548
     default_idle_call+0x3b/0x60 kernel/sched/idle.c:93
     cpuidle_idle_call kernel/sched/idle.c:153 [inline]
     do_idle+0x2ab/0x3c0 kernel/sched/idle.c:263
     cpu_startup_entry+0xcb/0xe0 kernel/sched/idle.c:369
     start_secondary+0x3b8/0x4e0 arch/x86/kernel/smpboot.c:271
     secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:243
    
    Allocated by task 1:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:553
     kasan_slab_alloc+0x11/0x20 mm/kasan/kasan.c:490
     slab_post_alloc_hook mm/slab.h:445 [inline]
     slab_alloc_node mm/slub.c:2741 [inline]
     slab_alloc mm/slub.c:2749 [inline]
     kmem_cache_alloc+0xeb/0x280 mm/slub.c:2754
     kmem_cache_zalloc include/linux/slab.h:699 [inline]
     __kernfs_new_node+0xe2/0x6f0 fs/kernfs/dir.c:633
     kernfs_new_node+0x9a/0x120 fs/kernfs/dir.c:693
     __kernfs_create_file+0x5f/0x340 fs/kernfs/file.c:992
     sysfs_add_file_mode_ns+0x22a/0x4e0 fs/sysfs/file.c:306
     create_files fs/sysfs/group.c:63 [inline]
     internal_create_group+0x34e/0xc30 fs/sysfs/group.c:147
     sysfs_create_group fs/sysfs/group.c:173 [inline]
     sysfs_create_groups+0x9c/0x140 fs/sysfs/group.c:200
     driver_add_groups+0x3e/0x50 drivers/base/driver.c:129
     bus_add_driver+0x3a5/0x790 drivers/base/bus.c:684
     driver_register+0x1cd/0x410 drivers/base/driver.c:170
     __pci_register_driver+0x197/0x200 drivers/pci/pci-driver.c:1411
     cx88_audio_pci_driver_init+0x23/0x25 drivers/media/pci/cx88/cx88-alsa.c:
     1017
     do_one_initcall+0xe0/0x610 init/main.c:884
     do_initcall_level init/main.c:952 [inline]
     do_initcalls init/main.c:960 [inline]
     do_basic_setup init/main.c:978 [inline]
     kernel_init_freeable+0x4d0/0x592 init/main.c:1145
     kernel_init+0x18/0x190 init/main.c:1062
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    Freed by task 0:
    (stack is not available)
    
    The buggy address belongs to the object at ffff8880608c0000
     which belongs to the cache kernfs_node_cache of size 160
    The buggy address is located 0 bytes to the right of
     160-byte region [ffff8880608c0000, ffff8880608c00a0)
    The buggy address belongs to the page:
    page:ffffea0001823000 count:1 mapcount:0 mapping:ffff88806bed1e00
    index:0x0 compound_mapcount: 0
    flags: 0x100000000008100(slab|head)
    raw: 0100000000008100 dead000000000100 dead000000000200 ffff88806bed1e00
    raw: 0000000000000000 0000000000240024 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8880608bff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff8880608c0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff8880608c0080: 00 00 00 00 fc fc fc fc fc fc fc fc 00 00 00 00
                                   ^
     ffff8880608c0100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff8880608c0180: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
    ==================================================================
    
    Link: https://lore.kernel.org/linux-media/1620723603-30912-1-git-send-email-zheyuma97@gmail.com
    Reported-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Mon Dec 6 03:22:01 2021 +0100

    media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes
    
    [ Upstream commit 43f0633f89947df57fe0b5025bdd741768007708 ]
    
    The return value of dma_set_coherent_mask() is not always 0.
    To catch the exception in case that dma is not support the mask.
    
    Link: https://lore.kernel.org/linux-media/20211206022201.1639460-1-jiasheng@iscas.ac.cn
    Fixes: b0444f18e0b1 ("[media] coda: add i.MX6 VDOA driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: cpia2: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:37 2021 +0100

    media: cpia2: fix control-message timeouts
    
    commit 10729be03327f53258cb196362015ad5c6eabe02 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: ab33d5071de7 ("V4L/DVB (3376): Add cpia2 camera support")
    Cc: stable@vger.kernel.org      # 2.6.17
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: dib0700: fix undefined behavior in tuner shutdown [+ + +]
Author: Michael Kuron <michael.kuron@gmail.com>
Date:   Sun Sep 26 21:51:26 2021 +0100

    media: dib0700: fix undefined behavior in tuner shutdown
    
    commit f7b77ebe6d2f49c7747b2d619586d1aa33f9ea91 upstream.
    
    This fixes a problem where closing the tuner would leave it in a state
    where it would not tune to any channel when reopened. This problem was
    discovered as part of https://github.com/hselasky/webcamd/issues/16.
    
    Since adap->id is 0 or 1, this bit-shift overflows, which is undefined
    behavior. The driver still worked in practice as the overflow would in
    most environments result in 0, which rendered the line a no-op. When
    running the driver as part of webcamd however, the overflow could lead
    to 0xff due to optimizations by the compiler, which would, in the end,
    improperly shut down the tuner.
    
    The bug is a regression introduced in the commit referenced below. The
    present patch causes identical behavior to before that commit for
    adap->id equal to 0 or 1. The driver does not contain support for
    dib0700 devices with more adapters, assuming such even exist.
    
    Tests have been performed with the Xbox One Digital TV Tuner on amd64.
    Not all dib0700 devices are expected to be affected by the regression;
    this code path is only taken by those with incorrect endpoint numbers.
    
    Link: https://lore.kernel.org/linux-media/1d2fc36d94ced6f67c7cc21dcc469d5e5bdd8201.1632689033.git.mchehab+huawei@kernel.org
    
    Cc: stable@vger.kernel.org
    Fixes: 7757ddda6f4f ("[media] DiB0700: add function to change I2C-speed")
    Signed-off-by: Michael Kuron <michael.kuron@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: dib8000: Fix a memleak in dib8000_init() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Tue Nov 30 16:38:05 2021 +0100

    media: dib8000: Fix a memleak in dib8000_init()
    
    [ Upstream commit 8dbdcc7269a83305ee9d677b75064d3530a48ee2 ]
    
    In dib8000_init(), the variable fe is not freed or passed out on the
    failure of dib8000_identify(&state->i2c), which could lead to a memleak.
    
    Fix this bug by adding a kfree of fe in the error path.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_DVB_DIB8000=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: 77e2c0f5d471 ("V4L/DVB (12900): DiB8000: added support for DiBcom ISDB-T/ISDB-Tsb demodulator DiB8000")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    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>

media: dmxdev: fix UAF when dvb_register_device() fails [+ + +]
Author: Wang Hai <wanghai38@huawei.com>
Date:   Fri Oct 15 16:57:41 2021 +0800

    media: dmxdev: fix UAF when dvb_register_device() fails
    
    [ Upstream commit ab599eb11882f834951c436cc080c3455ba32b9b ]
    
    I got a use-after-free report:
    
    dvbdev: dvb_register_device: failed to create device dvb1.dvr0 (-12)
    ...
    ==================================================================
    BUG: KASAN: use-after-free in dvb_dmxdev_release+0xce/0x2f0
    ...
    Call Trace:
     dump_stack_lvl+0x6c/0x8b
     print_address_description.constprop.0+0x48/0x70
     kasan_report.cold+0x82/0xdb
     __asan_load4+0x6b/0x90
     dvb_dmxdev_release+0xce/0x2f0
    ...
    Allocated by task 7666:
     kasan_save_stack+0x23/0x50
     __kasan_kmalloc+0x83/0xa0
     kmem_cache_alloc_trace+0x22e/0x470
     dvb_register_device+0x12f/0x980
     dvb_dmxdev_init+0x1f3/0x230
    ...
    Freed by task 7666:
     kasan_save_stack+0x23/0x50
     kasan_set_track+0x20/0x30
     kasan_set_free_info+0x24/0x40
     __kasan_slab_free+0xf2/0x130
     kfree+0xd1/0x5c0
     dvb_register_device.cold+0x1ac/0x1fa
     dvb_dmxdev_init+0x1f3/0x230
    ...
    
    When dvb_register_device() in dvb_dmxdev_init() fails, dvb_dmxdev_init()
    does not return a failure, and the memory pointed to by dvbdev or
    dvr_dvbdev is invalid at this point. If they are used subsequently, it
    will result in UFA or null-ptr-deref.
    
    If dvb_register_device() in dvb_dmxdev_init() fails, fix the bug by making
    dvb_dmxdev_init() return an error as well.
    
    Link: https://lore.kernel.org/linux-media/20211015085741.1203283-1-wanghai38@huawei.com
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: dw2102: Fix use after free [+ + +]
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Thu Aug 22 12:41:47 2019 +0200

    media: dw2102: Fix use after free
    
    [ Upstream commit 589a9f0eb799f77de2c09583bf5bad221fa5d685 ]
    
    dvb_usb_device_init stores parts of properties at d->props
    and d->desc and uses it on dvb_usb_device_exit.
    Free of properties on module probe leads to use after free.
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204597
    
    The patch makes properties static instead of allocated on heap to prevent
    memleak and use after free.
    Also fixes s421_properties.devices initialization to have 2 element
    instead of 6 copied from p7500_properties.
    
    [mchehab: fix function call alignments]
    Link: https://lore.kernel.org/linux-media/20190822104147.4420-1-vasilyev@ispras.ru
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Fixes: 299c7007e936 ("media: dw2102: Fix memleak on sequence of probes")
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: em28xx: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:38 2021 +0100

    media: em28xx: fix control-message timeouts
    
    commit d9b7e8df3aa9b8c10708aab60e72e79ac08237e4 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: a6c2ba283565 ("[PATCH] v4l: 716: support for em28xx board family")
    Cc: stable@vger.kernel.org      # 2.6.16
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: em28xx: fix memory leak in em28xx_init_dev [+ + +]
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Mon Nov 1 09:55:39 2021 +0000

    media: em28xx: fix memory leak in em28xx_init_dev
    
    [ Upstream commit 22be5a10d0b24eec9e45decd15d7e6112b25f080 ]
    
    In the em28xx_init_rev, if em28xx_audio_setup fails, this function fails
    to deallocate the media_dev allocated in the em28xx_media_device_init.
    
    Fix this by adding em28xx_unregister_media_device to free media_dev.
    
    BTW, this patch is tested in my local syzkaller instance, and it can
    prevent the memory leak from occurring again.
    
    CC: Pavel Skripkin <paskripkin@gmail.com>
    Fixes: 37ecc7b1278f ("[media] em28xx: add media controller support")
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Reported-by: syzkaller <syzkaller@googlegroups.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>

media: flexcop-usb: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:36 2021 +0100

    media: flexcop-usb: fix control-message timeouts
    
    commit cd1798a387825cc4a51282f5a611ad05bb1ad75f upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Note that the driver was multiplying some of the timeout values with HZ
    twice resulting in 3000-second timeouts with HZ=1000.
    
    Also note that two of the timeout defines are currently unused.
    
    Fixes: 2154be651b90 ("[media] redrat3: new rc-core IR transceiver device driver")
    Cc: stable@vger.kernel.org      # 3.0
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: hantro: Fix probe func error path [+ + +]
Author: Jernej Skrabec <jernej.skrabec@gmail.com>
Date:   Mon Nov 29 19:26:25 2021 +0100

    media: hantro: Fix probe func error path
    
    [ Upstream commit 37af43b250fda6162005d47bf7c959c70d52b107 ]
    
    If clocks for some reason couldn't be enabled, probe function returns
    immediately, without disabling PM. This obviously leaves PM ref counters
    unbalanced.
    
    Fix that by jumping to appropriate error path, so effects of PM functions
    are reversed.
    
    Fixes: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Acked-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
    Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    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>

media: igorplugusb: receiver overflow should be reported [+ + +]
Author: Sean Young <sean@mess.org>
Date:   Tue Nov 30 23:58:19 2021 +0100

    media: igorplugusb: receiver overflow should be reported
    
    [ Upstream commit 8fede658e7ddb605bbd68ed38067ddb0af033db4 ]
    
    Without this, some IR will be missing mid-stream and we might decode
    something which never really occurred.
    
    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>

media: imx-pxp: Initialize the spinlock prior to using it [+ + +]
Author: Fabio Estevam <festevam@denx.de>
Date:   Fri Oct 8 15:10:14 2021 +0200

    media: imx-pxp: Initialize the spinlock prior to using it
    
    [ Upstream commit ed2f97ad4b21072f849cf4ae6645d1f2b1d3f550 ]
    
    After devm_request_threaded_irq() is called there is a chance that an
    interrupt may occur before the spinlock is initialized, which will trigger
    a kernel oops.
    
    To prevent that, move the initialization of the spinlock prior to
    requesting the interrupts.
    
    Fixes: 51abcf7fdb70 ("media: imx-pxp: add i.MX Pixel Pipeline driver")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    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>

media: m920x: don't use stack on USB reads [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Mon Dec 6 15:34:19 2021 +0100

    media: m920x: don't use stack on USB reads
    
    [ Upstream commit a2ab06d7c4d6bfd0b545a768247a70463e977e27 ]
    
    Using stack-allocated pointers for USB message data don't work.
    This driver is almost OK with that, except for the I2C read
    logic.
    
    Fix it by using a temporary read buffer, just like on all other
    calls to m920x_read().
    
    Link: https://lore.kernel.org/all/ccc99e48-de4f-045e-0fe4-61e3118e3f74@mida.se/
    Reported-by: rkardell@mida.se
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mceusb: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:34 2021 +0100

    media: mceusb: fix control-message timeouts
    
    commit 16394e998cbb050730536bdf7e89f5a70efbd974 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 66e89522aff7 ("V4L/DVB: IR: add mceusb IR receiver driver")
    Cc: stable@vger.kernel.org      # 2.6.36
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: msi001: fix possible null-ptr-deref in msi001_probe() [+ + +]
Author: Wang Hai <wanghai38@huawei.com>
Date:   Tue Oct 26 13:23:48 2021 +0200

    media: msi001: fix possible null-ptr-deref in msi001_probe()
    
    [ Upstream commit 3d5831a40d3464eea158180eb12cbd81c5edfb6a ]
    
    I got a null-ptr-deref report:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000060
    ...
    RIP: 0010:v4l2_ctrl_auto_cluster+0x57/0x270
    ...
    Call Trace:
     msi001_probe+0x13b/0x24b [msi001]
     spi_probe+0xeb/0x130
    ...
     do_syscall_64+0x35/0xb0
    
    In msi001_probe(), if the creation of control for bandwidth_auto
    fails, there will be a null-ptr-deref issue when it is used in
    v4l2_ctrl_auto_cluster().
    
    Check dev->hdl.error before v4l2_ctrl_auto_cluster() to fix this bug.
    
    Link: https://lore.kernel.org/linux-media/20211026112348.2878040-1-wanghai38@huawei.com
    Fixes: 93203dd6c7c4 ("[media] msi001: Mirics MSi001 silicon tuner driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released [+ + +]
Author: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Date:   Wed Nov 17 14:06:30 2021 +0100

    media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released
    
    [ Upstream commit 9f89c881bffbdffe4060ffaef3489a2830a6dd9c ]
    
    The func v4l2_m2m_ctx_release waits for currently running jobs
    to finish and then stop streaming both queues and frees the buffers.
    All this should be done before the call to mtk_vcodec_enc_release
    which frees the encoder handler. This fixes null-pointer dereference bug:
    
    [  638.028076] Mem abort info:
    [  638.030932]   ESR = 0x96000004
    [  638.033978]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  638.039293]   SET = 0, FnV = 0
    [  638.042338]   EA = 0, S1PTW = 0
    [  638.045474]   FSC = 0x04: level 0 translation fault
    [  638.050349] Data abort info:
    [  638.053224]   ISV = 0, ISS = 0x00000004
    [  638.057055]   CM = 0, WnR = 0
    [  638.060018] user pgtable: 4k pages, 48-bit VAs, pgdp=000000012b6db000
    [  638.066485] [00000000000001a0] pgd=0000000000000000, p4d=0000000000000000
    [  638.073277] Internal error: Oops: 96000004 [#1] SMP
    [  638.078145] Modules linked in: rfkill mtk_vcodec_dec mtk_vcodec_enc uvcvideo mtk_mdp mtk_vcodec_common videobuf2_dma_contig v4l2_h264 cdc_ether v4l2_mem2mem videobuf2_vmalloc usbnet videobuf2_memops videobuf2_v4l2 r8152 videobuf2_common videodev cros_ec_sensors cros_ec_sensors_core industrialio_triggered_buffer kfifo_buf elan_i2c elants_i2c sbs_battery mc cros_usbpd_charger cros_ec_chardev cros_usbpd_logger crct10dif_ce mtk_vpu fuse ip_tables x_tables ipv6
    [  638.118583] CPU: 0 PID: 212 Comm: kworker/u8:5 Not tainted 5.15.0-06427-g58a1d4dcfc74-dirty #109
    [  638.127357] Hardware name: Google Elm (DT)
    [  638.131444] Workqueue: mtk-vcodec-enc mtk_venc_worker [mtk_vcodec_enc]
    [  638.137974] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  638.144925] pc : vp8_enc_encode+0x34/0x2b0 [mtk_vcodec_enc]
    [  638.150493] lr : venc_if_encode+0xac/0x1b0 [mtk_vcodec_enc]
    [  638.156060] sp : ffff8000124d3c40
    [  638.159364] x29: ffff8000124d3c40 x28: 0000000000000000 x27: 0000000000000000
    [  638.166493] x26: 0000000000000000 x25: ffff0000e7f252d0 x24: ffff8000124d3d58
    [  638.173621] x23: ffff8000124d3d58 x22: ffff8000124d3d60 x21: 0000000000000001
    [  638.180750] x20: ffff80001137e000 x19: 0000000000000000 x18: 0000000000000001
    [  638.187878] x17: 000000040044ffff x16: 00400032b5503510 x15: 0000000000000000
    [  638.195006] x14: ffff8000118536c0 x13: ffff8000ee1da000 x12: 0000000030d4d91d
    [  638.202134] x11: 0000000000000000 x10: 0000000000000980 x9 : ffff8000124d3b20
    [  638.209262] x8 : ffff0000c18d4ea0 x7 : ffff0000c18d44c0 x6 : ffff0000c18d44c0
    [  638.216391] x5 : ffff80000904a3b0 x4 : ffff8000124d3d58 x3 : ffff8000124d3d60
    [  638.223519] x2 : ffff8000124d3d78 x1 : 0000000000000001 x0 : ffff80001137efb8
    [  638.230648] Call trace:
    [  638.233084]  vp8_enc_encode+0x34/0x2b0 [mtk_vcodec_enc]
    [  638.238304]  venc_if_encode+0xac/0x1b0 [mtk_vcodec_enc]
    [  638.243525]  mtk_venc_worker+0x110/0x250 [mtk_vcodec_enc]
    [  638.248918]  process_one_work+0x1f8/0x498
    [  638.252923]  worker_thread+0x140/0x538
    [  638.256664]  kthread+0x148/0x158
    [  638.259884]  ret_from_fork+0x10/0x20
    [  638.263455] Code: f90023f9 2a0103f5 aa0303f6 aa0403f8 (f940d277)
    [  638.269538] ---[ end trace e374fc10f8e181f5 ]---
    
    [gst-master] root@debian:~/gst-build# [  638.019193] Unable to handle kernel NULL pointer dereference at virtual address 00000000000001a0
    Fixes: 4e855a6efa547 ("[media] vcodec: mediatek: Add Mediatek V4L2 Video Encoder Driver")
    Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.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>

media: pvrusb2: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:39 2021 +0100

    media: pvrusb2: fix control-message timeouts
    
    commit b82bf9b9dc305d7d3d93eab106d70dbf2171b43e upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: d855497edbfb ("V4L/DVB (4228a): pvrusb2 to kernel 2.6.18")
    Cc: stable@vger.kernel.org      # 2.6.18
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: rcar-csi2: Correct the selection of hsfreqrange [+ + +]
Author: Suresh Udipi <sudipi@jp.adit-jv.com>
Date:   Fri Aug 13 17:07:54 2021 +0200

    media: rcar-csi2: Correct the selection of hsfreqrange
    
    [ Upstream commit cee44d4fbacbbdfe62697ec94e76c6e4f726c5df ]
    
    hsfreqrange should be chosen based on the calculated mbps which
    is closer to the default bit rate  and within the range as per
    table[1]. But current calculation always selects first value which
    is greater than or equal to the calculated mbps which may lead
    to chosing a wrong range in some cases.
    
    For example for 360 mbps for H3/M3N
    Existing logic selects
    Calculated value 360Mbps : Default 400Mbps Range [368.125 -433.125 mbps]
    
    This hsfreqrange is out of range.
    
    The logic is changed to get the default value which is closest to the
    calculated value [1]
    
    Calculated value 360Mbps : Default 350Mbps  Range [320.625 -380.625 mpbs]
    
    [1] specs r19uh0105ej0200-r-car-3rd-generation.pdf [Table 25.9]
    
    Please note that According to Renesas in Table 25.9 the range for
    220 default value is corrected as below
    
     |Range (Mbps)     |  Default  Bit rate (Mbps) |
     -----------------------------------------------
     | 197.125-244.125 |     220                   |
     -----------------------------------------------
    
    Fixes: 769afd212b16 ("media: rcar-csi2: add Renesas R-Car MIPI CSI-2 receiver driver")
    Signed-off-by: Suresh Udipi <sudipi@jp.adit-jv.com>
    Signed-off-by: Kazuyoshi Akiyama <akiyama@nds-osk.co.jp>
    Signed-off-by: Michael Rodin <mrodin@de.adit-jv.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    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>

media: rcar-csi2: Optimize the selection PHTW register [+ + +]
Author: Suresh Udipi <sudipi@jp.adit-jv.com>
Date:   Fri Aug 13 17:07:56 2021 +0200

    media: rcar-csi2: Optimize the selection PHTW register
    
    commit 549cc89cd09a85aaa16dc07ef3db811d5cf9bcb1 upstream.
    
    PHTW register is selected based on default bit rate from Table[1].
    for the bit rates less than or equal to 250. Currently first
    value of default bit rate which is greater than or equal to
    the caculated mbps is selected. This selection can be further
    improved by selecting the default bit rate which is nearest to
    the calculated value.
    
    [1] specs r19uh0105ej0200-r-car-3rd-generation.pdf [Table 25.12]
    
    Fixes: 769afd212b16 ("media: rcar-csi2: add Renesas R-Car MIPI CSI-2 receiver driver")
    Signed-off-by: Suresh Udipi <sudipi@jp.adit-jv.com>
    Signed-off-by: Michael Rodin <mrodin@de.adit-jv.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: redrat3: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:35 2021 +0100

    media: redrat3: fix control-message timeouts
    
    commit 2adc965c8bfa224e11ecccf9c92fd458c4236428 upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 2154be651b90 ("[media] redrat3: new rc-core IR transceiver device driver")
    Cc: stable@vger.kernel.org      # 3.0
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: s2255: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:40 2021 +0100

    media: s2255: fix control-message timeouts
    
    commit f71d272ad4e354097020a4e6b1dc6e4b59feb50f 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
    timeouts.
    
    Fixes: 38f993ad8b1f ("V4L/DVB (8125): This driver adds support for the Sensoray 2255 devices.")
    Cc: stable@vger.kernel.org      # 2.6.27
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: saa7146: hexium_gemini: Fix a NULL pointer dereference in hexium_attach() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Fri Dec 3 16:40:30 2021 +0100

    media: saa7146: hexium_gemini: Fix a NULL pointer dereference in hexium_attach()
    
    [ Upstream commit 3af86b046933ba513d08399dba0d4d8b50d607d0 ]
    
    In hexium_attach(dev, info), saa7146_vv_init() is called to allocate
    a new memory for dev->vv_data. saa7146_vv_release() will be called on
    failure of saa7146_register_device(). There is a dereference of
    dev->vv_data in saa7146_vv_release(), which could lead to a NULL
    pointer dereference on failure of saa7146_vv_init().
    
    Fix this bug by adding a check of saa7146_vv_init().
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_VIDEO_HEXIUM_GEMINI=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Link: https://lore.kernel.org/linux-media/20211203154030.111210-1-zhou1615@umn.edu
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: saa7146: hexium_orion: Fix a NULL pointer dereference in hexium_attach() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Tue Nov 30 17:25:49 2021 +0100

    media: saa7146: hexium_orion: Fix a NULL pointer dereference in hexium_attach()
    
    [ Upstream commit 348df8035301dd212e3cc2860efe4c86cb0d3303 ]
    
    In hexium_attach(dev, info), saa7146_vv_init() is called to allocate
    a new memory for dev->vv_data. In hexium_detach(), saa7146_vv_release()
    will be called and there is a dereference of dev->vv_data in
    saa7146_vv_release(), which could lead to a NULL pointer dereference
    on failure of saa7146_vv_init() according to the following logic.
    
    Both hexium_attach() and hexium_detach() are callback functions of
    the variable 'extension', so there exists a possible call chain directly
    from hexium_attach() to hexium_detach():
    
    hexium_attach(dev, info) -- fail to alloc memory to dev->vv_data
            |                               in saa7146_vv_init().
            |
            |
    hexium_detach() -- a dereference of dev->vv_data in saa7146_vv_release()
    
    Fix this bug by adding a check of saa7146_vv_init().
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_VIDEO_HEXIUM_ORION=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    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>

media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Tue Nov 30 17:34:44 2021 +0100

    media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach()
    
    [ Upstream commit 0407c49ebe330333478440157c640fffd986f41b ]
    
    In mxb_attach(dev, info), saa7146_vv_init() is called to allocate a
    new memory for dev->vv_data. saa7146_vv_release() will be called on
    failure of mxb_probe(dev). There is a dereference of dev->vv_data
    in saa7146_vv_release(), which could lead to a NULL pointer dereference
    on failure of saa7146_vv_init().
    
    Fix this bug by adding a check of saa7146_vv_init().
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_VIDEO_MXB=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: 03b1930efd3c ("V4L/DVB: saa7146: fix regression of the av7110/budget-av driver")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    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>

media: si2157: Fix "warm" tuner state detection [+ + +]
Author: Robert Schlabbach <robert_s@gmx.net>
Date:   Wed Dec 1 22:08:43 2021 +0100

    media: si2157: Fix "warm" tuner state detection
    
    [ Upstream commit a6441ea29cb2c9314654e093a1cd8020b9b851c8 ]
    
    Commit e955f959ac52 ("media: si2157: Better check for running tuner in
    init") completely broke the "warm" tuner detection of the si2157 driver
    due to a simple endian error: The Si2157 CRYSTAL_TRIM property code is
    0x0402 and needs to be transmitted LSB first. However, it was inserted
    MSB first, causing the warm detection to always fail and spam the kernel
    log with tuner initialization messages each time the DVB frontend
    device was closed and reopened:
    
    [  312.215682] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [  312.264334] si2157 16-0060: firmware version: 3.0.5
    [  342.248593] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [  342.295743] si2157 16-0060: firmware version: 3.0.5
    [  372.328574] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [  372.385035] si2157 16-0060: firmware version: 3.0.5
    
    Also, the reinitializations were observed disturb _other_ tuners on
    multi-tuner cards such as the Hauppauge WinTV-QuadHD, leading to missed
    or errored packets when one of the other DVB frontend devices on that
    card was opened.
    
    Fix the order of the property code bytes to make the warm detection work
    again, also reducing the tuner initialization message in the kernel log
    to once per power-on, as well as fixing the interference with other
    tuners.
    
    Link: https://lore.kernel.org/linux-media/trinity-2a86eb9d-6264-4387-95e1-ba7b79a4050f-1638392923493@3c-app-gmx-bap03
    
    Fixes: e955f959ac52 ("media: si2157: Better check for running tuner in init")
    Reported-by: Robert Schlabbach <robert_s@gmx.net>
    Signed-off-by: Robert Schlabbach <robert_s@gmx.net>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Fri Oct 15 11:58:55 2021 +0200

    media: si470x-i2c: fix possible memory leak in si470x_i2c_probe()
    
    [ Upstream commit ef054e345ed8c79ce1121a3599b5a2dfd78e57a0 ]
    
    n the 'radio->hdl.error' error handling, ctrl handler allocated by
    v4l2_ctrl_new_std() does not released, and caused memory leak as
    follows:
    
    unreferenced object 0xffff888033d54200 (size 256):
      comm "i2c-si470x-19", pid 909, jiffies 4294914203 (age 8.072s)
      hex dump (first 32 bytes):
        e8 69 11 03 80 88 ff ff 00 46 d5 33 80 88 ff ff  .i.......F.3....
        10 42 d5 33 80 88 ff ff 10 42 d5 33 80 88 ff ff  .B.3.....B.3....
      backtrace:
        [<00000000086bd4ed>] __kmalloc_node+0x1eb/0x360
        [<00000000bdb68871>] kvmalloc_node+0x66/0x120
        [<00000000fac74e4c>] v4l2_ctrl_new+0x7b9/0x1c60 [videodev]
        [<00000000693bf940>] v4l2_ctrl_new_std+0x19b/0x270 [videodev]
        [<00000000c0cb91bc>] si470x_i2c_probe+0x2d3/0x9a0 [radio_si470x_i2c]
        [<0000000056a6f01f>] i2c_device_probe+0x4d8/0xbe0
    
    Fix the error handling path to avoid memory leak.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 8c081b6f9a9b ("media: radio: Critical v4l2 registration...")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.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>

media: stk1160: fix control-message timeouts [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:16:41 2021 +0100

    media: stk1160: fix control-message timeouts
    
    commit 6aa6e70cdb5b863a57bad61310bf89b6617a5d2d upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 9cb2173e6ea8 ("[media] media: Add stk1160 new driver (easycap replacement)")
    Cc: stable@vger.kernel.org      # 3.7
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. [+ + +]
Author: James Hilliard <james.hilliard1@gmail.com>
Date:   Sun Nov 14 09:52:36 2021 +0100

    media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds.
    
    [ Upstream commit c8ed7d2f614cd8b315981d116c7a2fb01829500d ]
    
    Some uvc devices appear to require the maximum allowed USB timeout
    for GET_CUR/SET_CUR requests.
    
    So lets just bump the UVC control timeout to 5 seconds which is the
    same as the usb ctrl get/set defaults:
    USB_CTRL_GET_TIMEOUT 5000
    USB_CTRL_SET_TIMEOUT 5000
    
    It fixes the following runtime warnings:
       Failed to query (GET_CUR) UVC control 11 on unit 2: -110 (exp. 1).
       Failed to query (SET_CUR) UVC control 3 on unit 2: -110 (exp. 2).
    
    Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
    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>

media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE [+ + +]
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Wed Nov 3 12:28:31 2021 +0000

    media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE
    
    commit cd9d9377ed235b294a492a094e1666178a5e78fd upstream.
    
    If V4L2_CAP_READWRITE is not set, then readbuffers must be set to 0,
    otherwise v4l2-compliance will complain.
    
    A note on the Fixes tag below: this patch does not really fix that commit,
    but it can be applied from that commit onwards. For older code there is no
    guarantee that device_caps is set, so even though this patch would apply,
    it will not work reliably.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 049e684f2de9 (media: v4l2-dev: fix WARN_ON(!vdev->device_caps))
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: venus: core: Fix a resource leak in the error handling path of 'venus_probe()' [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Aug 19 22:05:28 2021 +0200

    media: venus: core: Fix a resource leak in the error handling path of 'venus_probe()'
    
    [ Upstream commit 8cc7a1b2aca067397a016cdb971a5e6ad9b640c7 ]
    
    A successful 'of_platform_populate()' call should be balanced by a
    corresponding 'of_platform_depopulate()' call in the error handling path
    of the probe, as already done in the remove function.
    
    A successful 'venus_firmware_init()' call should be balanced by a
    corresponding 'venus_firmware_deinit()' call in the error handling path
    of the probe, as already done in the remove function.
    
    Update the error handling path accordingly.
    
    Fixes: f9799fcce4bb ("media: venus: firmware: register separate platform_device for firmware loader")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: videobuf2: Fix the size printk format [+ + +]
Author: Dillon Min <dillon.minfei@gmail.com>
Date:   Tue Oct 19 09:43:19 2021 +0100

    media: videobuf2: Fix the size printk format
    
    [ Upstream commit c9ee220d76775e42f35d634479c978d9350077d3 ]
    
    Since the type of parameter size is unsigned long,
    it should printk by %lu, instead of %ld, fix it.
    
    Fixes: 7952be9b6ece ("media: drivers/media/common/videobuf2: rename from videobuf")
    Signed-off-by: Dillon Min <dillon.minfei@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>

 
mips: bcm63xx: add support for clk_set_parent() [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Dec 28 16:05:53 2021 -0800

    mips: bcm63xx: add support for clk_set_parent()
    
    [ Upstream commit 6f03055d508ff4feb8db02ba3df9303a1db8d381 ]
    
    The MIPS BMC63XX subarch does not provide/support clk_set_parent().
    This causes build errors in a few drivers, so add a simple implementation
    of that function so that callers of it will build without errors.
    
    Fixes these build errors:
    
    ERROR: modpost: "clk_set_parent" [sound/soc/jz4740/snd-soc-jz4740-i2s.ko] undefined!
    ERROR: modpost: "clk_set_parent" [sound/soc/atmel/snd-soc-atmel-i2s.ko] undefined!
    
    Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs." )
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.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>

mips: lantiq: add support for clk_set_parent() [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Dec 28 16:03:45 2021 -0800

    mips: lantiq: add support for clk_set_parent()
    
    [ Upstream commit 76f66dfd60dc5d2f9dec22d99091fea1035c5d03 ]
    
    Provide a simple implementation of clk_set_parent() in the lantiq
    subarch so that callers of it will build without errors.
    
    Fixes these build errors:
    
    ERROR: modpost: "clk_set_parent" [sound/soc/jz4740/snd-soc-jz4740-i2s.ko] undefined!
    ERROR: modpost: "clk_set_parent" [sound/soc/atmel/snd-soc-atmel-i2s.ko] undefined!
    
    Fixes: 171bb2f19ed6 ("MIPS: Lantiq: Add initial support for Lantiq SoCs")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    --to=linux-mips@vger.kernel.org --cc="John Crispin <john@phrozen.org>" --cc="Jonathan Cameron <jic23@kernel.org>" --cc="Russell King <linux@armlinux.org.uk>" --cc="Andy Shevchenko <andy.shevchenko@gmail.com>" --cc=alsa-devel@alsa-project.org --to="Thomas Bogendoerfer <tsbogend@alpha.franken.de>"
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: OCTEON: add put_device() after of_find_device_by_node() [+ + +]
Author: Ye Guojin <ye.guojin@zte.com.cn>
Date:   Tue Nov 16 08:10:51 2021 +0000

    MIPS: OCTEON: add put_device() after of_find_device_by_node()
    
    [ Upstream commit 858779df1c0787d3fec827fb705708df9ebdb15b ]
    
    This was found by coccicheck:
    ./arch/mips/cavium-octeon/octeon-platform.c, 332, 1-7, ERROR missing
    put_device; call of_find_device_by_node on line 324, but without a
    corresponding object release within this function.
    ./arch/mips/cavium-octeon/octeon-platform.c, 395, 1-7, ERROR missing
    put_device; call of_find_device_by_node on line 387, but without a
    corresponding object release within this function.
    ./arch/mips/cavium-octeon/octeon-usb.c, 512, 3-9, ERROR missing
    put_device; call of_find_device_by_node on line 515, but without a
    corresponding object release within this function.
    ./arch/mips/cavium-octeon/octeon-usb.c, 543, 1-7, ERROR missing
    put_device; call of_find_device_by_node on line 515, but without a
    corresponding object release within this function.
    
    Reported-by: Zeal Robot <zealci@zte.com.cn>
    Signed-off-by: Ye Guojin <ye.guojin@zte.com.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: Octeon: Fix build errors using clang [+ + +]
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Thu Dec 16 17:50:14 2021 +0800

    MIPS: Octeon: Fix build errors using clang
    
    [ Upstream commit 95339b70677dc6f9a2d669c4716058e71b8dc1c7 ]
    
    A large number of the following errors is reported when compiling
    with clang:
    
      cvmx-bootinfo.h:326:3: error: adding 'int' to a string does not append to the string [-Werror,-Wstring-plus-int]
                      ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NULL)
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      cvmx-bootinfo.h:321:20: note: expanded from macro 'ENUM_BRD_TYPE_CASE'
              case x: return(#x + 16);        /* Skip CVMX_BOARD_TYPE_ */
                             ~~~^~~~
      cvmx-bootinfo.h:326:3: note: use array indexing to silence this warning
      cvmx-bootinfo.h:321:20: note: expanded from macro 'ENUM_BRD_TYPE_CASE'
              case x: return(#x + 16);        /* Skip CVMX_BOARD_TYPE_ */
                              ^
    
    Follow the prompts to use the address operator '&' to fix this error.
    
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
misc: lattice-ecp3-config: Fix task hung when firmware load failed [+ + +]
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Dec 28 12:55:22 2021 +0000

    misc: lattice-ecp3-config: Fix task hung when firmware load failed
    
    [ Upstream commit fcee5ce50bdb21116711e38635e3865594af907e ]
    
    When firmware load failed, kernel report task hung as follows:
    
    INFO: task xrun:5191 blocked for more than 147 seconds.
          Tainted: G        W         5.16.0-rc5-next-20211220+ #11
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:xrun            state:D stack:    0 pid: 5191 ppid:   270 flags:0x00000004
    Call Trace:
     __schedule+0xc12/0x4b50 kernel/sched/core.c:4986
     schedule+0xd7/0x260 kernel/sched/core.c:6369 (discriminator 1)
     schedule_timeout+0x7aa/0xa80 kernel/time/timer.c:1857
     wait_for_completion+0x181/0x290 kernel/sched/completion.c:85
     lattice_ecp3_remove+0x32/0x40 drivers/misc/lattice-ecp3-config.c:221
     spi_remove+0x72/0xb0 drivers/spi/spi.c:409
    
    lattice_ecp3_remove() wait for signals from firmware loading, but when
    load failed, firmware_load() does not send this signal. This cause
    device remove hung. Fix it by sending signal even if load failed.
    
    Fixes: 781551df57c7 ("misc: Add Lattice ECP3 FPGA configuration via SPI")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20211228125522.3122284-1-weiyongjun1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mlxsw: pci: Add shutdown method in PCI driver [+ + +]
Author: Danielle Ratson <danieller@nvidia.com>
Date:   Tue Nov 23 09:54:47 2021 +0200

    mlxsw: pci: Add shutdown method in PCI driver
    
    [ Upstream commit c1020d3cf4752f61a6a413f632ea2ce2370e150d ]
    
    On an arm64 platform with the Spectrum ASIC, after loading and executing
    a new kernel via kexec, the following trace [1] is observed. This seems
    to be caused by the fact that the device is not properly shutdown before
    executing the new kernel.
    
    Fix this by implementing a shutdown method which mirrors the remove
    method, as recommended by the kexec maintainer [2][3].
    
    [1]
    BUG: Bad page state in process devlink pfn:22f73d
    page:fffffe00089dcf40 refcount:-1 mapcount:0 mapping:0000000000000000 index:0x0
    flags: 0x2ffff00000000000()
    raw: 2ffff00000000000 0000000000000000 ffffffff089d0201 0000000000000000
    raw: 0000000000000000 0000000000000000 ffffffffffffffff 0000000000000000
    page dumped because: nonzero _refcount
    Modules linked in:
    CPU: 1 PID: 16346 Comm: devlink Tainted: G B 5.8.0-rc6-custom-273020-gac6b365b1bf5 #44
    Hardware name: Marvell Armada 7040 TX4810M (DT)
    Call trace:
     dump_backtrace+0x0/0x1d0
     show_stack+0x1c/0x28
     dump_stack+0xbc/0x118
     bad_page+0xcc/0xf8
     check_free_page_bad+0x80/0x88
     __free_pages_ok+0x3f8/0x418
     __free_pages+0x38/0x60
     kmem_freepages+0x200/0x2a8
     slab_destroy+0x28/0x68
     slabs_destroy+0x60/0x90
     ___cache_free+0x1b4/0x358
     kfree+0xc0/0x1d0
     skb_free_head+0x2c/0x38
     skb_release_data+0x110/0x1a0
     skb_release_all+0x2c/0x38
     consume_skb+0x38/0x130
     __dev_kfree_skb_any+0x44/0x50
     mlxsw_pci_rdq_fini+0x8c/0xb0
     mlxsw_pci_queue_fini.isra.0+0x28/0x58
     mlxsw_pci_queue_group_fini+0x58/0x88
     mlxsw_pci_aqs_fini+0x2c/0x60
     mlxsw_pci_fini+0x34/0x50
     mlxsw_core_bus_device_unregister+0x104/0x1d0
     mlxsw_devlink_core_bus_device_reload_down+0x2c/0x48
     devlink_reload+0x44/0x158
     devlink_nl_cmd_reload+0x270/0x290
     genl_rcv_msg+0x188/0x2f0
     netlink_rcv_skb+0x5c/0x118
     genl_rcv+0x3c/0x50
     netlink_unicast+0x1bc/0x278
     netlink_sendmsg+0x194/0x390
     __sys_sendto+0xe0/0x158
     __arm64_sys_sendto+0x2c/0x38
     el0_svc_common.constprop.0+0x70/0x168
     do_el0_svc+0x28/0x88
     el0_sync_handler+0x88/0x190
     el0_sync+0x140/0x180
    
    [2]
    https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1195432.html
    
    [3]
    https://patchwork.kernel.org/project/linux-scsi/patch/20170212214920.28866-1-anton@ozlabs.org/#20116693
    
    Cc: Eric Biederman <ebiederm@xmission.com>
    Signed-off-by: Danielle Ratson <danieller@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed pages [+ + +]
Author: Baoquan He <bhe@redhat.com>
Date:   Fri Jan 14 14:07:44 2022 -0800

    mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed pages
    
    commit c4dc63f0032c77464fbd4e7a6afc22fa6913c4a7 upstream.
    
    In kdump kernel of x86_64, page allocation failure is observed:
    
     kworker/u2:2: page allocation failure: order:0, mode:0xcc1(GFP_KERNEL|GFP_DMA), nodemask=(null),cpuset=/,mems_allowed=0
     CPU: 0 PID: 55 Comm: kworker/u2:2 Not tainted 5.16.0-rc4+ #5
     Hardware name: AMD Dinar/Dinar, BIOS RDN1505B 06/05/2013
     Workqueue: events_unbound async_run_entry_fn
     Call Trace:
      <TASK>
      dump_stack_lvl+0x48/0x5e
      warn_alloc.cold+0x72/0xd6
      __alloc_pages_slowpath.constprop.0+0xc69/0xcd0
      __alloc_pages+0x1df/0x210
      new_slab+0x389/0x4d0
      ___slab_alloc+0x58f/0x770
      __slab_alloc.constprop.0+0x4a/0x80
      kmem_cache_alloc_trace+0x24b/0x2c0
      sr_probe+0x1db/0x620
      ......
      device_add+0x405/0x920
      ......
      __scsi_add_device+0xe5/0x100
      ata_scsi_scan_host+0x97/0x1d0
      async_run_entry_fn+0x30/0x130
      process_one_work+0x1e8/0x3c0
      worker_thread+0x50/0x3b0
      ? rescuer_thread+0x350/0x350
      kthread+0x16b/0x190
      ? set_kthread_struct+0x40/0x40
      ret_from_fork+0x22/0x30
      </TASK>
     Mem-Info:
     ......
    
    The above failure happened when calling kmalloc() to allocate buffer with
    GFP_DMA.  It requests to allocate slab page from DMA zone while no managed
    pages at all in there.
    
     sr_probe()
     --> get_capabilities()
         --> buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
    
    Because in the current kernel, dma-kmalloc will be created as long as
    CONFIG_ZONE_DMA is enabled.  However, kdump kernel of x86_64 doesn't have
    managed pages on DMA zone since commit 6f599d84231f ("x86/kdump: Always
    reserve the low 1M when the crashkernel option is specified").  The
    failure can be always reproduced.
    
    For now, let's mute the warning of allocation failure if requesting pages
    from DMA zone while no managed pages.
    
    [akpm@linux-foundation.org: fix warning]
    
    Link: https://lkml.kernel.org/r/20211223094435.248523-4-bhe@redhat.com
    Fixes: 6f599d84231f ("x86/kdump: Always reserve the low 1M when the crashkernel option is specified")
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Acked-by: John Donnelly  <john.p.donnelly@oracle.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.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: Vlastimil Babka <vbabka@suse.cz>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Robin Murphy <robin.murphy@arm.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>

 
mm_zone: add function to check if managed dma zone exists [+ + +]
Author: Baoquan He <bhe@redhat.com>
Date:   Fri Jan 14 14:07:37 2022 -0800

    mm_zone: add function to check if managed dma zone exists
    
    commit 62b3107073646e0946bd97ff926832bafb846d17 upstream.
    
    Patch series "Handle warning of allocation failure on DMA zone w/o
    managed pages", v4.
    
    **Problem observed:
    On x86_64, when crash is triggered and entering into kdump kernel, page
    allocation failure can always be seen.
    
     ---------------------------------
     DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
     swapper/0: page allocation failure: order:5, mode:0xcc1(GFP_KERNEL|GFP_DMA), nodemask=(null),cpuset=/,mems_allowed=0
     CPU: 0 PID: 1 Comm: swapper/0
     Call Trace:
      dump_stack+0x7f/0xa1
      warn_alloc.cold+0x72/0xd6
      ......
      __alloc_pages+0x24d/0x2c0
      ......
      dma_atomic_pool_init+0xdb/0x176
      do_one_initcall+0x67/0x320
      ? rcu_read_lock_sched_held+0x3f/0x80
      kernel_init_freeable+0x290/0x2dc
      ? rest_init+0x24f/0x24f
      kernel_init+0xa/0x111
      ret_from_fork+0x22/0x30
     Mem-Info:
     ------------------------------------
    
    ***Root cause:
    In the current kernel, it assumes that DMA zone must have managed pages
    and try to request pages if CONFIG_ZONE_DMA is enabled. While this is not
    always true. E.g in kdump kernel of x86_64, only low 1M is presented and
    locked down at very early stage of boot, so that this low 1M won't be
    added into buddy allocator to become managed pages of DMA zone. This
    exception will always cause page allocation failure if page is requested
    from DMA zone.
    
    ***Investigation:
    This failure happens since below commit merged into linus's tree.
      1a6a9044b967 x86/setup: Remove CONFIG_X86_RESERVE_LOW and reservelow= options
      23721c8e92f7 x86/crash: Remove crash_reserve_low_1M()
      f1d4d47c5851 x86/setup: Always reserve the first 1M of RAM
      7c321eb2b843 x86/kdump: Remove the backup region handling
      6f599d84231f x86/kdump: Always reserve the low 1M when the crashkernel option is specified
    
    Before them, on x86_64, the low 640K area will be reused by kdump kernel.
    So in kdump kernel, the content of low 640K area is copied into a backup
    region for dumping before jumping into kdump. Then except of those firmware
    reserved region in [0, 640K], the left area will be added into buddy
    allocator to become available managed pages of DMA zone.
    
    However, after above commits applied, in kdump kernel of x86_64, the low
    1M is reserved by memblock, but not released to buddy allocator. So any
    later page allocation requested from DMA zone will fail.
    
    At the beginning, if crashkernel is reserved, the low 1M need be locked
    down because AMD SME encrypts memory making the old backup region
    mechanims impossible when switching into kdump kernel.
    
    Later, it was also observed that there are BIOSes corrupting memory
    under 1M. To solve this, in commit f1d4d47c5851, the entire region of
    low 1M is always reserved after the real mode trampoline is allocated.
    
    Besides, recently, Intel engineer mentioned their TDX (Trusted domain
    extensions) which is under development in kernel also needs to lock down
    the low 1M. So we can't simply revert above commits to fix the page allocation
    failure from DMA zone as someone suggested.
    
    ***Solution:
    Currently, only DMA atomic pool and dma-kmalloc will initialize and
    request page allocation with GFP_DMA during bootup.
    
    So only initializ DMA atomic pool when DMA zone has available managed
    pages, otherwise just skip the initialization.
    
    For dma-kmalloc(), for the time being, let's mute the warning of
    allocation failure if requesting pages from DMA zone while no manged
    pages.  Meanwhile, change code to use dma_alloc_xx/dma_map_xx API to
    replace kmalloc(GFP_DMA), or do not use GFP_DMA when calling kmalloc() if
    not necessary.  Christoph is posting patches to fix those under
    drivers/scsi/.  Finally, we can remove the need of dma-kmalloc() as people
    suggested.
    
    This patch (of 3):
    
    In some places of the current kernel, it assumes that dma zone must have
    managed pages if CONFIG_ZONE_DMA is enabled.  While this is not always
    true.  E.g in kdump kernel of x86_64, only low 1M is presented and locked
    down at very early stage of boot, so that there's no managed pages at all
    in DMA zone.  This exception will always cause page allocation failure if
    page is requested from DMA zone.
    
    Here add function has_managed_dma() and the relevant helper functions to
    check if there's DMA zone with managed pages.  It will be used in later
    patches.
    
    Link: https://lkml.kernel.org/r/20211223094435.248523-1-bhe@redhat.com
    Link: https://lkml.kernel.org/r/20211223094435.248523-2-bhe@redhat.com
    Fixes: 6f599d84231f ("x86/kdump: Always reserve the low 1M when the crashkernel option is specified")
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Acked-by: John Donnelly  <john.p.donnelly@oracle.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Robin Murphy <robin.murphy@arm.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>

 
mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO [+ + +]
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Wed Nov 10 18:17:09 2021 +0100

    mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO
    
    [ Upstream commit 8c3e5b74b9e2146f564905e50ca716591c76d4f1 ]
    
    The mmc core takes a specific path to support initializing of a
    non-standard SDIO card. This is triggered by looking for the card-quirk,
    MMC_QUIRK_NONSTD_SDIO.
    
    In mmc_sdio_init_card() this gets rather messy, as it causes the code to
    bail out earlier, compared to the usual path. This leads to that the OCR
    doesn't get saved properly in card->ocr. Fortunately, only omap_hsmmc has
    been using the MMC_QUIRK_NONSTD_SDIO and is dealing with the issue, by
    assigning a hardcoded value (0x80) to card->ocr from an ->init_card() ops.
    
    To make the behaviour consistent, let's instead rely on the core to save
    the OCR in card->ocr during initialization.
    
    Reported-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Link: https://lore.kernel.org/r/e7936cff7fc24d187ef2680d3b4edb0ade58f293.1636564631.git.hns@goldelico.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mmc: meson-mx-sdio: add IRQ check [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Fri Dec 17 23:27:17 2021 +0300

    mmc: meson-mx-sdio: add IRQ check
    
    [ Upstream commit 8fc9a77bc64e1f23d07953439817d8402ac9706f ]
    
    The driver neglects to check the result of platform_get_irq()'s call and
    blithely passes the negative error codes to devm_request_threaded_irq()
    (which takes *unsigned* IRQ #), causing it to fail with -EINVAL, overriding
    an original error code. Stop calling devm_request_threaded_irq() with the
    invalid IRQ #s.
    
    Fixes: ed80a13bb4c4 ("mmc: meson-mx-sdio: Add a driver for the Amlogic Meson8 and Meson8b SoC")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/20211217202717.10041-3-s.shtylyov@omp.ru
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mtd: nand: bbt: Fix corner case in bad block table handling [+ + +]
Author: Doyle, Patrick <pdoyle@irobot.com>
Date:   Tue Apr 6 10:47:08 2021 +0900

    mtd: nand: bbt: Fix corner case in bad block table handling
    
    commit fd0d8d85f7230052e638a56d1bfea170c488e6bc upstream.
    
    In the unlikely event that both blocks 10 and 11 are marked as bad (on a
    32 bit machine), then the process of marking block 10 as bad stomps on
    cached entry for block 11.  There are (of course) other examples.
    
    Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Yoshio Furuyama <ytc-mb-yfuruyama7@kioxia.com>
    [<miquel.raynal@bootlin.com>: Fixed the title]
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Cc: Frieder Schrempf <frieder.schrempf@kontron.de>
    Link: https://lore.kernel.org/linux-mtd/774a92693f311e7de01e5935e720a179fb1b2468.1616635406.git.ytc-mb-yfuruyama7@kioxia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings [+ + +]
Author: Christian Eggers <ceggers@arri.de>
Date:   Tue Nov 2 21:20:22 2021 +0100

    mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings
    
    commit f53d4c109a666bf1a4883b45d546fba079258717 upstream.
    
    gpmi_io clock needs to be gated off when changing the parent/dividers of
    enfc_clk_root (i.MX6Q/i.MX6UL) respectively qspi2_clk_root (i.MX6SX).
    Otherwise this rate change can lead to an unresponsive GPMI core which
    results in DMA timeouts and failed driver probe:
    
    [    4.072318] gpmi-nand 112000.gpmi-nand: DMA timeout, last DMA
    ...
    [    4.370355] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -110
    ...
    [    4.375988] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
    [    4.381524] gpmi-nand 112000.gpmi-nand: Error in ECC-based read: -22
    [    4.387988] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
    [    4.393535] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
    ...
    
    Other than stated in i.MX 6 erratum ERR007117, it should be sufficient
    to gate only gpmi_io because all other bch/nand clocks are derived from
    different clock roots.
    
    The i.MX6 reference manuals state that changing clock muxers can cause
    glitches but are silent about changing dividers. But tests showed that
    these glitches can definitely happen on i.MX6ULL. For i.MX7D/8MM in turn,
    the manual guarantees that no glitches can happen when changing
    dividers.
    
    Co-developed-by: Stefan Riedmueller <s.riedmueller@phytec.de>
    Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de>
    Signed-off-by: Christian Eggers <ceggers@arri.de>
    Cc: stable@vger.kernel.org
    Acked-by: Han Xu <han.xu@nxp.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211102202022.15551-2-ceggers@arri.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 [+ + +]
Author: Stefan Riedmueller <s.riedmueller@phytec.de>
Date:   Tue Nov 2 21:20:21 2021 +0100

    mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6
    
    commit aa1baa0e6c1aa4872e481dce4fc7fd6f3dd8496b upstream.
    
    There is no need to explicitly set the default gpmi clock rate during
    boot for the i.MX 6 since this is done during nand_detect anyway.
    
    Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de>
    Cc: stable@vger.kernel.org
    Acked-by: Han Xu <han.xu@nxp.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211102202022.15551-1-ceggers@arri.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mwifiex: Fix possible ABBA deadlock [+ + +]
Author: Brian Norris <briannorris@chromium.org>
Date:   Mon Nov 29 16:47:34 2021 -0800

    mwifiex: Fix possible ABBA deadlock
    
    [ Upstream commit 1b8bb8919ef81bfc8873d223b9361f1685f2106d ]
    
    Quoting Jia-Ju Bai <baijiaju1990@gmail.com>:
    
      mwifiex_dequeue_tx_packet()
         spin_lock_bh(&priv->wmm.ra_list_spinlock); --> Line 1432 (Lock A)
         mwifiex_send_addba()
           spin_lock_bh(&priv->sta_list_spinlock); --> Line 608 (Lock B)
    
      mwifiex_process_sta_tx_pause()
         spin_lock_bh(&priv->sta_list_spinlock); --> Line 398 (Lock B)
         mwifiex_update_ralist_tx_pause()
           spin_lock_bh(&priv->wmm.ra_list_spinlock); --> Line 941 (Lock A)
    
    Similar report for mwifiex_process_uap_tx_pause().
    
    While the locking expectations in this driver are a bit unclear, the
    Fixed commit only intended to protect the sta_ptr, so we can drop the
    lock as soon as we're done with it.
    
    IIUC, this deadlock cannot actually happen, because command event
    processing (which calls mwifiex_process_sta_tx_pause()) is
    sequentialized with TX packet processing (e.g.,
    mwifiex_dequeue_tx_packet()) via the main loop (mwifiex_main_process()).
    But it's good not to leave this potential issue lurking.
    
    Fixes: f0f7c2275fb9 ("mwifiex: minor cleanups w/ sta_list_spinlock in cfg80211.c")
    Cc: Douglas Anderson <dianders@chromium.org>
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Link: https://lore.kernel.org/linux-wireless/0e495b14-efbb-e0da-37bd-af6bd677ee2c@gmail.com/
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/YaV0pllJ5p/EuUat@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mwifiex: Fix skb_over_panic in mwifiex_usb_recv() [+ + +]
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Sat Oct 30 22:42:50 2021 -0400

    mwifiex: Fix skb_over_panic in mwifiex_usb_recv()
    
    [ Upstream commit 04d80663f67ccef893061b49ec8a42ff7045ae84 ]
    
    Currently, with an unknown recv_type, mwifiex_usb_recv
    just return -1 without restoring the skb. Next time
    mwifiex_usb_rx_complete is invoked with the same skb,
    calling skb_put causes skb_over_panic.
    
    The bug is triggerable with a compromised/malfunctioning
    usb device. After applying the patch, skb_over_panic
    no longer shows up with the same input.
    
    Attached is the panic report from fuzzing.
    skbuff: skb_over_panic: text:000000003bf1b5fa
     len:2048 put:4 head:00000000dd6a115b data:000000000a9445d8
     tail:0x844 end:0x840 dev:<NULL>
    kernel BUG at net/core/skbuff.c:109!
    invalid opcode: 0000 [#1] SMP KASAN NOPTI
    CPU: 0 PID: 198 Comm: in:imklog Not tainted 5.6.0 #60
    RIP: 0010:skb_panic+0x15f/0x161
    Call Trace:
     <IRQ>
     ? mwifiex_usb_rx_complete+0x26b/0xfcd [mwifiex_usb]
     skb_put.cold+0x24/0x24
     mwifiex_usb_rx_complete+0x26b/0xfcd [mwifiex_usb]
     __usb_hcd_giveback_urb+0x1e4/0x380
     usb_giveback_urb_bh+0x241/0x4f0
     ? __hrtimer_run_queues+0x316/0x740
     ? __usb_hcd_giveback_urb+0x380/0x380
     tasklet_action_common.isra.0+0x135/0x330
     __do_softirq+0x18c/0x634
     irq_exit+0x114/0x140
     smp_apic_timer_interrupt+0xde/0x380
     apic_timer_interrupt+0xf/0x20
     </IRQ>
    
    Reported-by: Brendan Dolan-Gavitt <brendandg@nyu.edu>
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/YX4CqjfRcTa6bVL+@Zekuns-MBP-16.fios-router.home
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net-sysfs: update the queue counts in the unregistration path [+ + +]
Author: Antoine Tenart <atenart@kernel.org>
Date:   Tue Dec 7 15:57:24 2021 +0100

    net-sysfs: update the queue counts in the unregistration path
    
    [ Upstream commit d7dac083414eb5bb99a6d2ed53dc2c1b405224e5 ]
    
    When updating Rx and Tx queue kobjects, the queue count should always be
    updated to match the queue kobjects count. This was not done in the net
    device unregistration path, fix it. Tracking all queue count updates
    will allow in a following up patch to detect illegal updates.
    
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module [+ + +]
Author: Tobias Waldekranz <tobias@waldekranz.com>
Date:   Tue Jan 18 22:50:53 2022 +0100

    net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module
    
    commit 3f7c239c7844d2044ed399399d97a5f1c6008e1b upstream.
    
    As reported by sparse: In the remove path, the driver would attempt to
    unmap its own priv pointer - instead of the io memory that it mapped
    in probe.
    
    Fixes: 9f35a7342cff ("net/fsl: introduce Freescale 10G MDIO driver")
    Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: Set command entry semaphore up once got index free [+ + +]
Author: Moshe Shemesh <moshe@nvidia.com>
Date:   Sun Dec 5 12:07:49 2021 +0200

    net/mlx5: Set command entry semaphore up once got index free
    
    [ Upstream commit 8e715cd613a1e872b9d918e912d90b399785761a ]
    
    Avoid a race where command work handler may fail to allocate command
    entry index, by holding the command semaphore down till command entry
    index is being freed.
    
    Fixes: 410bd754cd73 ("net/mlx5: Add retry mechanism to the command entry index allocation")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5e: Don't block routes with nexthop objects in SW [+ + +]
Author: Maor Dickman <maord@nvidia.com>
Date:   Thu Dec 30 11:20:10 2021 +0200

    net/mlx5e: Don't block routes with nexthop objects in SW
    
    [ Upstream commit 9e72a55a3c9d54b38a704bb7292d984574a81d9d ]
    
    Routes with nexthop objects is currently not supported by multipath offload
    and any attempts to use it is blocked, however this also block adding SW
    routes with nexthop.
    
    Resolve this by returning NOTIFY_DONE instead of an error which will allow such
    a route to be created in SW but not offloaded.
    
    This fix also solve an issue which block adding such routes on different devices
    due to missing check if the route FIB device is one of multipath devices.
    
    Fixes: 6a87afc072c3 ("mlx5: Fail attempts to use routes with nexthop objects")
    Signed-off-by: Maor Dickman <maord@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: axienet: fix number of TX ring slots for available check [+ + +]
Author: Robert Hancock <robert.hancock@calian.com>
Date:   Tue Jan 18 15:41:30 2022 -0600

    net: axienet: fix number of TX ring slots for available check
    
    commit aba57a823d2985a2cc8c74a2535f3a88e68d9424 upstream.
    
    The check for the number of available TX ring slots was off by 1 since a
    slot is required for the skb header as well as each fragment. This could
    result in overwriting a TX ring slot that was still in use.
    
    Fixes: 8a3b7a252dca9 ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: axienet: increase default TX ring size to 128 [+ + +]
Author: Robert Hancock <robert.hancock@calian.com>
Date:   Tue Jan 18 15:41:32 2022 -0600

    net: axienet: increase default TX ring size to 128
    
    commit 2d19c3fd80178160dd505ccd7fed1643831227a5 upstream.
    
    With previous changes to make the driver handle the TX ring size more
    correctly, the default TX ring size of 64 appears to significantly
    bottleneck TX performance to around 600 Mbps on a 1 Gbps link on ZynqMP.
    Increasing this to 128 seems to bring performance up to near line rate and
    shouldn't cause excess bufferbloat (this driver doesn't yet support modern
    byte-based queue management).
    
    Fixes: 8a3b7a252dca9 ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: axienet: limit minimum TX ring size [+ + +]
Author: Robert Hancock <robert.hancock@calian.com>
Date:   Tue Jan 18 15:41:28 2022 -0600

    net: axienet: limit minimum TX ring size
    
    commit 70f5817deddbc6ef3faa35841cab83c280cc653a upstream.
    
    The driver will not work properly if the TX ring size is set to below
    MAX_SKB_FRAGS + 1 since it needs to hold at least one full maximally
    fragmented packet in the TX ring. Limit setting the ring size to below
    this value.
    
    Fixes: 8b09ca823ffb4 ("net: axienet: Make RX/TX ring sizes configurable")
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: bonding: debug: avoid printing debug logs when bond is not notifying peers [+ + +]
Author: Suresh Kumar <surkumar@redhat.com>
Date:   Mon Dec 13 11:17:09 2021 +0530

    net: bonding: debug: avoid printing debug logs when bond is not notifying peers
    
    [ Upstream commit fee32de284ac277ba434a2d59f8ce46528ff3946 ]
    
    Currently "bond_should_notify_peers: slave ..." messages are printed whenever
    "bond_should_notify_peers" function is called.
    
    +++
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:26 node1 kernel: bond0: (slave enp0s25): Received LACPDU on port 1
    Dec 12 12:33:26 node1 kernel: bond0: (slave enp0s25): Rx Machine: Port=1, Last State=6, Curr State=6
    Dec 12 12:33:26 node1 kernel: bond0: (slave enp0s25): partner sync=1
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:26 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    ...
    Dec 12 12:33:30 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:30 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:30 node1 kernel: bond0: (slave enp4s3): Received LACPDU on port 2
    Dec 12 12:33:30 node1 kernel: bond0: (slave enp4s3): Rx Machine: Port=2, Last State=6, Curr State=6
    Dec 12 12:33:30 node1 kernel: bond0: (slave enp4s3): partner sync=1
    Dec 12 12:33:30 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:30 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    Dec 12 12:33:30 node1 kernel: bond0: bond_should_notify_peers: slave enp0s25
    +++
    
    This is confusing and can also clutter up debug logs.
    Print logs only when the peer notification happens.
    
    Signed-off-by: Suresh Kumar <suresh2514@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() [+ + +]
Author: Tom Rix <trix@redhat.com>
Date:   Sat Jan 15 09:49:18 2022 -0800

    net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config()
    
    commit 214b3369ab9b0a6f28d6c970220c209417edbc65 upstream.
    
    Clang static analysis reports this problem
    mtk_eth_soc.c:394:7: warning: Branch condition evaluates
      to a garbage value
                    if (err)
                        ^~~
    
    err is not initialized and only conditionally set.
    So intitialize err.
    
    Fixes: 7e538372694b ("net: ethernet: mediatek: Re-add support SGMII")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: gemini: allow any RGMII interface mode [+ + +]
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Tue Jan 4 16:38:31 2022 +0000

    net: gemini: allow any RGMII interface mode
    
    [ Upstream commit 4e4f325a0a55907b14f579e6b1a38c53755e3de2 ]
    
    The four RGMII interface modes take care of the required RGMII delay
    configuration at the PHY and should not be limited by the network MAC
    driver. Sadly, gemini was only permitting RGMII mode with no delays,
    which would require the required delay to be inserted via PCB tracking
    or by the MAC.
    
    However, there are designs that require the PHY to add the delay, which
    is impossible without Gemini permitting the other three PHY interface
    modes. Fix the driver to allow these.
    
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Link: https://lore.kernel.org/r/E1n4mpT-002PLd-Ha@rmk-PC.armlinux.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mcs7830: handle usb read errors properly [+ + +]
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Fri Jan 7 01:57:16 2022 +0300

    net: mcs7830: handle usb read errors properly
    
    [ Upstream commit d668769eb9c52b150753f1653f7f5a0aeb8239d2 ]
    
    Syzbot reported uninit value in mcs7830_bind(). The problem was in
    missing validation check for bytes read via usbnet_read_cmd().
    
    usbnet_read_cmd() internally calls usb_control_msg(), that returns
    number of bytes read. Code should validate that requested number of bytes
    was actually read.
    
    So, this patch adds missing size validation check inside
    mcs7830_get_reg() to prevent uninit value bugs
    
    Reported-and-tested-by: syzbot+003c0a286b9af5412510@syzkaller.appspotmail.com
    Fixes: 2a36d7083438 ("USB: driver for mcs7830 (aka DeLOCK) USB ethernet adapter")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20220106225716.7425-1-paskripkin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mdio: Demote probed message to debug print [+ + +]
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Jan 3 11:40:24 2022 -0800

    net: mdio: Demote probed message to debug print
    
    [ Upstream commit 7590fc6f80ac2cbf23e6b42b668bbeded070850b ]
    
    On systems with large numbers of MDIO bus/muxes the message indicating
    that a given MDIO bus has been successfully probed is repeated for as
    many buses we have, which can eat up substantial boot time for no
    reason, demote to a debug print.
    
    Reported-by: Maxime Bizon <mbizon@freebox.fr>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220103194024.2620-1-f.fainelli@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: marvell: configure RGMII delays for 88E1118 [+ + +]
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Tue Jan 4 16:38:19 2022 +0000

    net: phy: marvell: configure RGMII delays for 88E1118
    
    [ Upstream commit f22725c95ececb703c3f741e8f946d23705630b7 ]
    
    Corentin Labbe reports that the SSI 1328 does not work when allowing
    the PHY to operate at gigabit speeds, but does work with the generic
    PHY driver.
    
    This appears to be because m88e1118_config_init() writes a fixed value
    to the MSCR register, claiming that this is to enable 1G speeds.
    However, this always sets bits 4 and 5, enabling RGMII transmit and
    receive delays. The suspicion is that the original board this was
    added for required the delays to make 1G speeds work.
    
    Add the necessary configuration for RGMII delays for the 88E1118 to
    bring this into line with the requirements for RGMII support, and thus
    make the SSI 1328 work.
    
    Corentin Labbe has tested this on gemini-ssi1328 and gemini-ns2502.
    
    Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: prefer 1000baseT over 1000baseKX [+ + +]
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Wed Dec 8 11:36:30 2021 +0000

    net: phy: prefer 1000baseT over 1000baseKX
    
    [ Upstream commit f20f94f7f52c4685c81754f489ffcc72186e8bdb ]
    
    The PHY settings table is supposed to be sorted by descending match
    priority - in other words, earlier entries are preferred over later
    entries.
    
    The order of 1000baseKX/Full and 1000baseT/Full is such that we
    prefer 1000baseKX/Full over 1000baseT/Full, but 1000baseKX/Full is
    a lot rarer than 1000baseT/Full, and thus is much less likely to
    be preferred.
    
    This causes phylink problems - it means a fixed link specifying a
    speed of 1G and full duplex gets an ethtool linkmode of 1000baseKX/Full
    rather than 1000baseT/Full as would be expected - and since we offer
    userspace a software emulation of a conventional copper PHY, we want
    to offer copper modes in preference to anything else. However, we do
    still want to allow the rarer modes as well.
    
    Hence, let's reorder these two modes to prefer copper.
    
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reported-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/E1muvFO-00F6jY-1K@rmk-PC.armlinux.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net_sched: restore "mpu xxx" handling [+ + +]
Author: Kevin Bracey <kevin@bracey.fi>
Date:   Wed Jan 12 19:02:10 2022 +0200

    net_sched: restore "mpu xxx" handling
    
    commit fb80445c438c78b40b547d12b8d56596ce4ccfeb upstream.
    
    commit 56b765b79e9a ("htb: improved accuracy at high rates") broke
    "overhead X", "linklayer atm" and "mpu X" attributes.
    
    "overhead X" and "linklayer atm" have already been fixed. This restores
    the "mpu X" handling, as might be used by DOCSIS or Ethernet shaping:
    
        tc class add ... htb rate X overhead 4 mpu 64
    
    The code being fixed is used by htb, tbf and act_police. Cake has its
    own mpu handling. qdisc_calculate_pkt_len still uses the size table
    containing values adjusted for mpu by user space.
    
    iproute2 tc has always passed mpu into the kernel via a tc_ratespec
    structure, but the kernel never directly acted on it, merely stored it
    so that it could be read back by `tc class show`.
    
    Rather, tc would generate length-to-time tables that included the mpu
    (and linklayer) in their construction, and the kernel used those tables.
    
    Since v3.7, the tables were no longer used. Along with "mpu", this also
    broke "overhead" and "linklayer" which were fixed in 01cb71d2d47b
    ("net_sched: restore "overhead xxx" handling", v3.10) and 8a8e3d84b171
    ("net_sched: restore "linklayer atm" handling", v3.11).
    
    "overhead" was fixed by simply restoring use of tc_ratespec::overhead -
    this had originally been used by the kernel but was initially omitted
    from the new non-table-based calculations.
    
    "linklayer" had been handled in the table like "mpu", but the mode was
    not originally passed in tc_ratespec. The new implementation was made to
    handle it by getting new versions of tc to pass the mode in an extended
    tc_ratespec, and for older versions of tc the table contents were analysed
    at load time to deduce linklayer.
    
    As "mpu" has always been given to the kernel in tc_ratespec,
    accompanying the mpu-based table, we can restore system functionality
    with no userspace change by making the kernel act on the tc_ratespec
    value.
    
    Fixes: 56b765b79e9a ("htb: improved accuracy at high rates")
    Signed-off-by: Kevin Bracey <kevin@bracey.fi>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: Vimalkumar <j.vimal@gmail.com>
    Link: https://lore.kernel.org/r/20220112170210.1014351-1-kevin@bracey.fi
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
netfilter: bridge: add support for pppoe filtering [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Nov 23 12:50:31 2021 +0100

    netfilter: bridge: add support for pppoe filtering
    
    [ Upstream commit 28b78ecffea8078d81466b2e01bb5a154509f1ba ]
    
    This makes 'bridge-nf-filter-pppoe-tagged' sysctl work for
    bridged traffic.
    
    Looking at the original commit it doesn't appear this ever worked:
    
     static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
    [..]
            if (skb->protocol == htons(ETH_P_8021Q)) {
                    skb_pull(skb, VLAN_HLEN);
                    skb->network_header += VLAN_HLEN;
    +       } else if (skb->protocol == htons(ETH_P_PPP_SES)) {
    +               skb_pull(skb, PPPOE_SES_HLEN);
    +               skb->network_header += PPPOE_SES_HLEN;
            }
     [..]
            NF_HOOK(... POST_ROUTING, ...)
    
    ... but the adjusted offsets are never restored.
    
    The alternative would be to rip this code out for good,
    but otoh we'd have to keep this anyway for the vlan handling
    (which works because vlan tag info is in the skb, not the packet
     payload).
    
    Reported-and-tested-by: Amish Chana <amish@3g.co.za>
    Fixes: 516299d2f5b6f97 ("[NETFILTER]: bridge-nf: filter bridged IPv4/IPv6 encapsulated in pppoe traffic")
    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>

netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() [+ + +]
Author: Xin Xiong <xiongx18@fudan.edu.cn>
Date:   Thu Dec 23 10:48:12 2021 +0800

    netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check()
    
    [ Upstream commit d94a69cb2cfa77294921aae9afcfb866e723a2da ]
    
    The issue takes place in one error path of clusterip_tg_check(). When
    memcmp() returns nonzero, the function simply returns the error code,
    forgetting to decrease the reference count of a clusterip_config
    object, which is bumped earlier by clusterip_config_find_get(). This
    may incur reference count leak.
    
    Fix this issue by decrementing the refcount of the object in specific
    error path.
    
    Fixes: 06aa151ad1fc74 ("netfilter: ipt_CLUSTERIP: check MAC address when duplicate config is set")
    Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netns: add schedule point in ops_exit_list() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 18 03:43:40 2022 -0800

    netns: add schedule point in ops_exit_list()
    
    commit 2836615aa22de55b8fca5e32fe1b27a67cda625e upstream.
    
    When under stress, cleanup_net() can have to dismantle
    netns in big numbers. ops_exit_list() currently calls
    many helpers [1] that have no schedule point, and we can
    end up with soft lockups, particularly on hosts
    with many cpus.
    
    Even for moderate amount of netns processed by cleanup_net()
    this patch avoids latency spikes.
    
    [1] Some of these helpers like fib_sync_up() and fib_sync_down_dev()
    are very slow because net/ipv4/fib_semantics.c uses host-wide hash tables,
    and ifindex is used as the only input of two hash functions.
        ifindexes tend to be the same for all netns (lo.ifindex==1 per instance)
        This will be fixed in a separate patch.
    
    Fixes: 72ad937abd0a ("net: Add support for batching network namespace cleanups")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed bind() [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Wed Jan 19 08:48:16 2022 +0100

    nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed bind()
    
    commit dded08927ca3c31a5c37f8e7f95fe98770475dd4 upstream.
    
    Syzbot detected a NULL pointer dereference of nfc_llcp_sock->dev pointer
    (which is a 'struct nfc_dev *') with calls to llcp_sock_sendmsg() after
    a failed llcp_sock_bind(). The message being sent is a SOCK_DGRAM.
    
    KASAN report:
    
      BUG: KASAN: null-ptr-deref in nfc_alloc_send_skb+0x2d/0xc0
      Read of size 4 at addr 00000000000005c8 by task llcp_sock_nfc_a/899
    
      CPU: 5 PID: 899 Comm: llcp_sock_nfc_a Not tainted 5.16.0-rc6-next-20211224-00001-gc6437fbf18b0 #125
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x45/0x59
       ? nfc_alloc_send_skb+0x2d/0xc0
       __kasan_report.cold+0x117/0x11c
       ? mark_lock+0x480/0x4f0
       ? nfc_alloc_send_skb+0x2d/0xc0
       kasan_report+0x38/0x50
       nfc_alloc_send_skb+0x2d/0xc0
       nfc_llcp_send_ui_frame+0x18c/0x2a0
       ? nfc_llcp_send_i_frame+0x230/0x230
       ? __local_bh_enable_ip+0x86/0xe0
       ? llcp_sock_connect+0x470/0x470
       ? llcp_sock_connect+0x470/0x470
       sock_sendmsg+0x8e/0xa0
       ____sys_sendmsg+0x253/0x3f0
       ...
    
    The issue was visible only with multiple simultaneous calls to bind() and
    sendmsg(), which resulted in most of the bind() calls to fail.  The
    bind() was failing on checking if there is available WKS/SDP/SAP
    (respective bit in 'struct nfc_llcp_local' fields).  When there was no
    available WKS/SDP/SAP, the bind returned error but the sendmsg() to such
    socket was able to trigger mentioned NULL pointer dereference of
    nfc_llcp_sock->dev.
    
    The code looks simply racy and currently it protects several paths
    against race with checks for (!nfc_llcp_sock->local) which is NULL-ified
    in error paths of bind().  The llcp_sock_sendmsg() did not have such
    check but called function nfc_llcp_send_ui_frame() had, although not
    protected with lock_sock().
    
    Therefore the race could look like (same socket is used all the time):
      CPU0                                     CPU1
      ====                                     ====
      llcp_sock_bind()
      - lock_sock()
        - success
      - release_sock()
      - return 0
                                               llcp_sock_sendmsg()
                                               - lock_sock()
                                               - release_sock()
      llcp_sock_bind(), same socket
      - lock_sock()
        - error
                                               - nfc_llcp_send_ui_frame()
                                                 - if (!llcp_sock->local)
        - llcp_sock->local = NULL
        - nfc_put_device(dev)
                                                 - dereference llcp_sock->dev
      - release_sock()
      - return -ERRNO
    
    The nfc_llcp_send_ui_frame() checked llcp_sock->local outside of the
    lock, which is racy and ineffective check.  Instead, its caller
    llcp_sock_sendmsg(), should perform the check inside lock_sock().
    
    Reported-and-tested-by: syzbot+7f23bcddf626e0593a39@syzkaller.appspotmail.com
    Fixes: b874dec21d1c ("NFC: Implement LLCP connection less Tx path")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
of: base: Fix phandle argument length mismatch error message [+ + +]
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Thu Dec 30 18:31:52 2021 +0200

    of: base: Fix phandle argument length mismatch error message
    
    [ Upstream commit 94a4950a4acff39b5847cc1fee4f65e160813493 ]
    
    The cell_count field of of_phandle_iterator is the number of cells we
    expect in the phandle arguments list when cells_name is missing. The
    error message should show the number of cells we actually see.
    
    Fixes: af3be70a3211 ("of: Improve of_phandle_iterator_next() error message")
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/96519ac55be90a63fa44afe01480c30d08535465.1640881913.git.baruch@tkos.co.il
    Signed-off-by: Sasha Levin <sashal@kernel.org>

of: base: Improve argument length mismatch error [+ + +]
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Thu Dec 30 18:31:53 2021 +0200

    of: base: Improve argument length mismatch error
    
    commit 5d05b811b5acb92fc581a7b328b36646c86f5ab9 upstream.
    
    The cells_name field of of_phandle_iterator might be NULL. Use the
    phandle name instead. With this change instead of:
    
      OF: /soc/pinctrl@1000000: (null) = 3 found 2
    
    We get:
    
      OF: /soc/pinctrl@1000000: phandle pinctrl@1000000 needs 3, found 2
    
    Which is a more helpful messages making DT debugging easier.
    
    In this particular example the phandle name looks like duplicate of the
    same node name. But note that the first node is the parent node
    (it->parent), while the second is the phandle target (it->node). They
    happen to be the same in the case that triggered this improvement. See
    commit 72cb4c48a46a ("arm64: dts: qcom: ipq6018: Fix gpio-ranges
    property").
    
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/f6a68e0088a552ea9dfd4d8e3b5b586d92594738.1640881913.git.baruch@tkos.co.il
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parisc: Avoid calling faulthandler_disabled() twice [+ + +]
Author: John David Anglin <dave.anglin@bell.net>
Date:   Wed Dec 22 16:52:26 2021 +0000

    parisc: Avoid calling faulthandler_disabled() twice
    
    [ Upstream commit 9e9d4b460f23bab61672eae397417d03917d116c ]
    
    In handle_interruption(), we call faulthandler_disabled() to check whether the
    fault handler is not disabled. If the fault handler is disabled, we immediately
    call do_page_fault(). It then calls faulthandler_disabled(). If disabled,
    do_page_fault() attempts to fixup the exception by jumping to no_context:
    
    no_context:
    
            if (!user_mode(regs) && fixup_exception(regs)) {
                    return;
            }
    
            parisc_terminate("Bad Address (null pointer deref?)", regs, code, address);
    
    Apart from the error messages, the two blocks of code perform the same
    function.
    
    We can avoid two calls to faulthandler_disabled() by a simple revision
    to the code in handle_interruption().
    
    Note: I didn't try to fix the formatting of this code block.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu Jan 20 12:18:12 2022 +0000

    parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries
    
    commit d24846a4246b6e61ecbd036880a4adf61681d241 upstream.
    
    kobject_init_and_add() takes reference even when it fails.
    According to the doc of kobject_init_and_add():
    
       If this function returns an error, kobject_put() must be called to
       properly clean up the memory associated with the object.
    
    Fix memory leak by calling kobject_put().
    
    Fixes: 73f368cf679b ("Kobject: change drivers/parisc/pdc_stable.c to use kobject_init_and_add")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Dec 6 23:27:26 2021 +0100

    PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity()
    
    [ Upstream commit 29bbc35e29d9b6347780dcacde2deb4b39344167 ]
    
    pci_irq_vector() and pci_irq_get_affinity() use the list position to find the
    MSI-X descriptor at a given index. That's correct for the normal case where
    the entry number is the same as the list position.
    
    But it's wrong for cases where MSI-X was allocated with an entries array
    describing sparse entry numbers into the hardware message descriptor
    table. That's inconsistent at best.
    
    Make it always check the entry number because that's what the zero base
    index really means. This change won't break existing users which use a
    sparse entries array for allocation because these users retrieve the Linux
    interrupt number from the entries array after allocation and none of them
    uses pci_irq_vector() or pci_irq_get_affinity().
    
    Fixes: aff171641d18 ("PCI: Provide sensible IRQ vector alloc/free routines")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://lore.kernel.org/r/20211206210223.929792157@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller [+ + +]
Author: Yifeng Li <tomli@tomli.me>
Date:   Thu Dec 2 06:35:21 2021 +0000

    PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller
    
    commit e445375882883f69018aa669b67cbb37ec873406 upstream.
    
    Like other SATA controller chips in the Marvell 88SE91xx series, the
    Marvell 88SE9125 has the same DMA requester ID hardware bug that prevents
    it from working under IOMMU.  Add it to the list of devices that need the
    quirk.
    
    Without this patch, device initialization fails with DMA errors:
    
      ata8: softreset failed (1st FIS failed)
      DMAR: DRHD: handling fault status reg 2
      DMAR: [DMA Write NO_PASID] Request device [03:00.1] fault addr 0xfffc0000 [fault reason 0x02] Present bit in context entry is clear
      DMAR: DRHD: handling fault status reg 2
      DMAR: [DMA Read NO_PASID] Request device [03:00.1] fault addr 0xfffc0000 [fault reason 0x02] Present bit in context entry is clear
    
    After applying the patch, the controller can be successfully initialized:
    
      ata8: SATA link up 1.5 Gbps (SStatus 113 SControl 330)
      ata8.00: ATAPI: PIONEER BD-RW   BDR-207M, 1.21, max UDMA/100
      ata8.00: configured for UDMA/100
      scsi 7:0:0:0: CD-ROM            PIONEER  BD-RW   BDR-207M 1.21 PQ: 0 ANSI: 5
    
    Link: https://lore.kernel.org/r/YahpKVR+McJVDdkD@work
    Reported-by: Sam Bingner <sam@bingner.com>
    Tested-by: Sam Bingner <sam@bingner.com>
    Tested-by: Yifeng Li <tomli@tomli.me>
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Krzysztof Wilczyński <kw@linux.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: pci-bridge-emul: Correctly set PCIe capabilities [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Wed Nov 24 16:59:43 2021 +0100

    PCI: pci-bridge-emul: Correctly set PCIe capabilities
    
    commit 1f1050c5e1fefb34ac90a506b43e9da803b5f8f7 upstream.
    
    Older mvebu hardware provides PCIe Capability structure only in version 1.
    New mvebu and aardvark hardware provides it in version 2. So do not force
    version to 2 in pci_bridge_emul_init() and rather allow drivers to set
    correct version. Drivers need to set version in pcie_conf.cap field without
    overwriting PCI_CAP_LIST_ID register. Both drivers (mvebu and aardvark) do
    not provide slot support yet, so do not set PCI_EXP_FLAGS_SLOT flag.
    
    Link: https://lore.kernel.org/r/20211124155944.1290-6-pali@kernel.org
    Fixes: 23a5fba4d941 ("PCI: Introduce PCI bridge emulated config space common logic")
    Signed-off-by: Pali Rohár <pali@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>

PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Wed Nov 24 16:59:40 2021 +0100

    PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space
    
    commit 7b067ac63a5730d2fae18399fed7e45f23d36912 upstream.
    
    Some bits in PCI config space are reserved when device is PCIe. Properly
    define behavior of PCI registers for PCIe emulated bridge and ensure that
    it would not be possible change these reserved bits.
    
    Link: https://lore.kernel.org/r/20211124155944.1290-3-pali@kernel.org
    Fixes: 23a5fba4d941 ("PCI: Introduce PCI bridge emulated config space common logic")
    Signed-off-by: Pali Rohár <pali@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>

PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Wed Nov 24 16:59:44 2021 +0100

    PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device
    
    commit 3be9d243b21724d49b65043d4520d688b6040b36 upstream.
    
    Since all PCI Express device Functions are required to implement the PCI
    Express Capability structure, Capabilities List bit in PCI Status Register
    must be hardwired to 1b. Capabilities Pointer register (which is already
    set by pci-bride-emul.c driver) is valid only when Capabilities List is set
    to 1b.
    
    Link: https://lore.kernel.org/r/20211124155944.1290-7-pali@kernel.org
    Fixes: 23a5fba4d941 ("PCI: Introduce PCI bridge emulated config space common logic")
    Signed-off-by: Pali Rohár <pali@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>

 
pcmcia: fix setting of kthread task states [+ + +]
Author: Dominik Brodowski <linux@dominikbrodowski.net>
Date:   Sun Jan 9 10:02:51 2022 +0100

    pcmcia: fix setting of kthread task states
    
    [ Upstream commit fbb3485f1f931102d8ba606f1c28123f5b48afa3 ]
    
    We need to set TASK_INTERRUPTIBLE before calling kthread_should_stop().
    Otherwise, kthread_stop() might see that the pccardd thread is still
    in TASK_RUNNING state and fail to wake it up.
    
    Additionally, we only need to set the state back to TASK_RUNNING if
    kthread_should_stop() breaks the loop.
    
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Fixes: d3046ba809ce ("pcmcia: fix a boot time warning in pcmcia cs code")
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in __nonstatic_find_io_region() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Wed Dec 1 00:59:23 2021 +0800

    pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in __nonstatic_find_io_region()
    
    [ Upstream commit ca0fe0d7c35c97528bdf621fdca75f13157c27af ]
    
    In __nonstatic_find_io_region(), pcmcia_make_resource() is assigned to
    res and used in pci_bus_alloc_resource(). There is a dereference of res
    in pci_bus_alloc_resource(), which could lead to a NULL pointer
    dereference on failure of pcmcia_make_resource().
    
    Fix this bug by adding a check of res.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_PCCARD_NONSTATIC=y show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: 49b1153adfe1 ("pcmcia: move all pcmcia_resource_ops providers into one module")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    [linux@dominikbrodowski.net: Fix typo in commit message]
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in nonstatic_find_mem_region() [+ + +]
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Wed Dec 1 02:11:40 2021 +0800

    pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in nonstatic_find_mem_region()
    
    [ Upstream commit 977d2e7c63c3d04d07ba340b39987742e3241554 ]
    
    In nonstatic_find_mem_region(), pcmcia_make_resource() is assigned to
    res and used in pci_bus_alloc_resource(). There a dereference of res
    in pci_bus_alloc_resource(), which could lead to a NULL pointer
    dereference on failure of pcmcia_make_resource().
    
    Fix this bug by adding a check of res.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_PCCARD_NONSTATIC=y show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: 49b1153adfe1 ("pcmcia: move all pcmcia_resource_ops providers into one module")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf script: Fix hex dump character output [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Jan 12 10:50:57 2022 +0200

    perf script: Fix hex dump character output
    
    commit 62942e9fda9fd1def10ffcbd5e1c025b3c9eec17 upstream.
    
    Using grep -C with perf script -D can give erroneous results as grep loses
    lines due to non-printable characters, for example, below the 0020, 0060
    and 0070 lines are missing:
    
     $ perf script -D | grep -C10 AUX | head
     .  0010:  08 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 00  ................
     .  0030:  01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00  ................
     .  0040:  00 08 00 00 00 00 00 00 02 00 00 00 00 00 00 00  ................
     .  0050:  00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
     .  0080:  02 00 00 00 00 00 00 00 1b 00 00 00 00 00 00 00  ................
     .  0090:  00 00 00 00 00 00 00 00                          ........
    
     0 0 0x450 [0x98]: PERF_RECORD_AUXTRACE_INFO type: 1
       PMU Type            8
       Time Shift          31
    
    perf's isprint() is a custom implementation from the kernel, but the
    kernel's _ctype appears to include characters from Latin-1 Supplement which
    is not compatible with, for example, UTF-8. Fix by checking also isascii().
    
    After:
    
     $ tools/perf/perf script -D | grep -C10 AUX | head
     .  0010:  08 00 00 00 00 00 00 00 1f 00 00 00 00 00 00 00  ................
     .  0020:  03 84 32 2f 00 00 00 00 63 7c 4f d2 fa ff ff ff  ..2/....c|O.....
     .  0030:  01 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00  ................
     .  0040:  00 08 00 00 00 00 00 00 02 00 00 00 00 00 00 00  ................
     .  0050:  00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
     .  0060:  00 02 00 00 00 00 00 00 00 c0 03 00 00 00 00 00  ................
     .  0070:  e2 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00  ................
     .  0080:  02 00 00 00 00 00 00 00 1b 00 00 00 00 00 00 00  ................
     .  0090:  00 00 00 00 00 00 00 00                          ........
    
    Fixes: 3052ba56bcb58904 ("tools perf: Move from sane_ctype.h obtained from git to the Linux's original")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20220112085057.277205-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
phy: uniphier-usb3ss: fix unintended writing zeros to PHY register [+ + +]
Author: Ryuta NAKANISHI <nakanishi.ryuta@socionext.com>
Date:   Wed Dec 22 14:19:29 2021 +0900

    phy: uniphier-usb3ss: fix unintended writing zeros to PHY register
    
    [ Upstream commit 898c7a9ec81620125f2463714a0f4dea18ad6e54 ]
    
    Similar to commit 4a90bbb478db ("phy: uniphier-pcie: Fix updating phy
    parameters"), in function uniphier_u3ssphy_set_param(), unintentionally
    write zeros to other fields when writing PHY registers.
    
    Fixes: 5ab43d0f8697 ("phy: socionext: add USB3 PHY driver for UniPhier SoC")
    Signed-off-by: Ryuta NAKANISHI <nakanishi.ryuta@socionext.com>
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Link: https://lore.kernel.org/r/1640150369-4134-1-git-send-email-hayashi.kunihiko@socionext.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
power: bq25890: Enable continuous conversion for ADC at charging [+ + +]
Author: Yauhen Kharuzhy <jekhor@gmail.com>
Date:   Sun Nov 7 23:20:01 2021 +0300

    power: bq25890: Enable continuous conversion for ADC at charging
    
    [ Upstream commit 80211be1b9dec04cc2805d3d81e2091ecac289a1 ]
    
    Instead of one shot run of ADC at beginning of charging, run continuous
    conversion to ensure that all charging-related values are monitored
    properly (input voltage, input current, themperature etc.).
    
    Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/6xx: add missing of_node_put [+ + +]
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Fri Nov 20 20:33:19 2015 +0000

    powerpc/6xx: add missing of_node_put
    
    [ Upstream commit f6e82647ff71d427d4148964b71f239fba9d7937 ]
    
    for_each_compatible_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.
    
    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):
    
    // <smpl>
    @@
    expression e;
    local idexpression n;
    @@
    
    @@
    local idexpression n;
    expression e;
    @@
    
     for_each_compatible_node(n,...) {
       ...
    (
       of_node_put(n);
    |
       e = n
    |
    +  of_node_put(n);
    ?  break;
    )
       ...
     }
    ... when != n
    // </smpl>
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1448051604-25256-2-git-send-email-Julia.Lawall@lip6.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/btext: add missing of_node_put [+ + +]
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Fri Nov 20 20:33:23 2015 +0000

    powerpc/btext: add missing of_node_put
    
    [ Upstream commit a1d2b210ffa52d60acabbf7b6af3ef7e1e69cda0 ]
    
    for_each_node_by_type performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.
    
    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):
    
    // <smpl>
    @@
    local idexpression n;
    expression e;
    @@
    
     for_each_node_by_type(n,...) {
       ...
    (
       of_node_put(n);
    |
       e = n
    |
    +  of_node_put(n);
    ?  break;
    )
       ...
     }
    ... when != n
    // </smpl>
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1448051604-25256-6-git-send-email-Julia.Lawall@lip6.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/cell: add missing of_node_put [+ + +]
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Fri Nov 20 21:33:24 2015 +0100

    powerpc/cell: add missing of_node_put
    
    [ Upstream commit a841fd009e51c8c0a8f07c942e9ab6bb48da8858 ]
    
    for_each_node_by_name performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.
    
    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):
    
    // <smpl>
    @@
    expression e,e1;
    local idexpression n;
    @@
    
     for_each_node_by_name(n, e1) {
       ... when != of_node_put(n)
           when != e = n
    (
       return n;
    |
    +  of_node_put(n);
    ?  return ...;
    )
       ...
     }
    // </smpl>
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1448051604-25256-7-git-send-email-Julia.Lawall@lip6.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

powerpc/cell: Fix clang -Wimplicit-fallthrough warning [+ + +]
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Tue Dec 7 12:02:28 2021 +0100

    powerpc/cell: Fix clang -Wimplicit-fallthrough warning
    
    commit e89257e28e844f5d1d39081bb901d9f1183a7705 upstream.
    
    Clang warns:
    
    arch/powerpc/platforms/cell/pervasive.c:81:2: error: unannotated fall-through between switch labels
            case SRR1_WAKEEE:
            ^
    arch/powerpc/platforms/cell/pervasive.c:81:2: note: insert 'break;' to avoid fall-through
            case SRR1_WAKEEE:
            ^
            break;
    1 error generated.
    
    Clang is more pedantic than GCC, which does not warn when failing
    through to a case that is just break or return. Clang's version is more
    in line with the kernel's own stance in deprecated.rst. Add athe missing
    break to silence the warning.
    
    Fixes: 6e83985b0f6e ("powerpc/cbe: Do not process external or decremeter interrupts from sreset")
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211207110228.698956-1-anders.roxell@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses [+ + +]
Author: Tobias Waldekranz <tobias@waldekranz.com>
Date:   Tue Jan 18 22:50:52 2022 +0100

    powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses
    
    commit 0d375d610fa96524e2ee2b46830a46a7bfa92a9f upstream.
    
    This block is used in (at least) T1024 and T1040, including their
    variants like T1023 etc.
    
    Fixes: d55ad2967d89 ("powerpc/mpc85xx: Create dts components for the FSL QorIQ DPAA FMan")
    Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/powermac: Add additional missing lockdep_register_key() [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Wed Dec 8 17:36:52 2021 +0000

    powerpc/powermac: Add additional missing lockdep_register_key()
    
    [ Upstream commit b149d5d45ac9171ed699a256f026c8ebef901112 ]
    
    Commit df1f679d19ed ("powerpc/powermac: Add missing
    lockdep_register_key()") fixed a problem that was causing a WARNING.
    
    There are two other places in the same file with the same problem
    originating from commit 9e607f72748d ("i2c_powermac: shut up lockdep
    warning").
    
    Add missing lockdep_register_key()
    
    Fixes: 9e607f72748d ("i2c_powermac: shut up lockdep warning")
    Reported-by: Erhard Furtner <erhard_f@mailbox.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Depends-on: df1f679d19ed ("powerpc/powermac: Add missing lockdep_register_key()")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200055
    Link: https://lore.kernel.org/r/2c7e421874e21b2fb87813d768cf662f630c2ad4.1638984999.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

powerpc/powermac: Add missing lockdep_register_key() [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Tue Nov 30 10:32:42 2021 +0100

    powerpc/powermac: Add missing lockdep_register_key()
    
    [ Upstream commit df1f679d19edb9eeb67cc2f96b29375f21991945 ]
    
    KeyWest i2c @0xf8001003 irq 42 /uni-n@f8000000/i2c@f8001000
    BUG: key c2d00cbc has not been registered!
    ------------[ cut here ]------------
    DEBUG_LOCKS_WARN_ON(1)
    WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:4801 lockdep_init_map_type+0x4c0/0xb4c
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.15.5-gentoo-PowerMacG4 #9
    NIP:  c01a9428 LR: c01a9428 CTR: 00000000
    REGS: e1033cf0 TRAP: 0700   Not tainted  (5.15.5-gentoo-PowerMacG4)
    MSR:  00029032 <EE,ME,IR,DR,RI>  CR: 24002002  XER: 00000000
    
    GPR00: c01a9428 e1033db0 c2d1cf20 00000016 00000004 00000001 c01c0630 e1033a73
    GPR08: 00000000 00000000 00000000 e1033db0 24002004 00000000 f8729377 00000003
    GPR16: c1829a9c 00000000 18305357 c1416fc0 c1416f80 c006ac60 c2d00ca8 c1416f00
    GPR24: 00000000 c21586f0 c2160000 00000000 c2d00cbc c2170000 c216e1a0 c2160000
    NIP [c01a9428] lockdep_init_map_type+0x4c0/0xb4c
    LR [c01a9428] lockdep_init_map_type+0x4c0/0xb4c
    Call Trace:
    [e1033db0] [c01a9428] lockdep_init_map_type+0x4c0/0xb4c (unreliable)
    [e1033df0] [c1c177b8] kw_i2c_add+0x334/0x424
    [e1033e20] [c1c18294] pmac_i2c_init+0x9ec/0xa9c
    [e1033e80] [c1c1a790] smp_core99_probe+0xbc/0x35c
    [e1033eb0] [c1c03cb0] kernel_init_freeable+0x190/0x5a4
    [e1033f10] [c000946c] kernel_init+0x28/0x154
    [e1033f30] [c0035148] ret_from_kernel_thread+0x14/0x1c
    
    Add missing lockdep_register_key()
    
    Reported-by: Erhard Furtner <erhard_f@mailbox.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/69e4f55565bb45ebb0843977801b245af0c666fe.1638264741.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/powernv: add missing of_node_put [+ + +]
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Fri Nov 20 20:33:21 2015 +0000

    powerpc/powernv: add missing of_node_put
    
    [ Upstream commit 7d405a939ca960162eb30c1475759cb2fdf38f8c ]
    
    for_each_compatible_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.
    
    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):
    
    // <smpl>
    @@
    local idexpression n;
    expression e;
    @@
    
     for_each_compatible_node(n,...) {
       ...
    (
       of_node_put(n);
    |
       e = n
    |
    +  of_node_put(n);
    ?  break;
    )
       ...
     }
    ... when != n
    // </smpl>
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/1448051604-25256-4-git-send-email-Julia.Lawall@lip6.fr
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/prom_init: Fix improper check of prom_getprop() [+ + +]
Author: Peiwei Hu <jlu.hpw@foxmail.com>
Date:   Fri Nov 19 17:12:18 2021 +0800

    powerpc/prom_init: Fix improper check of prom_getprop()
    
    [ Upstream commit 869fb7e5aecbc163003f93f36dcc26d0554319f6 ]
    
    prom_getprop() can return PROM_ERROR. Binary operator can not identify
    it.
    
    Fixes: 94d2dde738a5 ("[POWERPC] Efika: prune fixups and make them more carefull")
    Signed-off-by: Peiwei Hu <jlu.hpw@foxmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/tencent_BA28CC6897B7C95A92EB8C580B5D18589105@qq.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING [+ + +]
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Nov 24 20:32:53 2021 +1100

    powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING
    
    [ Upstream commit a4ac0d249a5db80e79d573db9e4ad29354b643a8 ]
    
    setup_profiling_timer() is only needed when CONFIG_PROFILING is enabled.
    
    Fixes the following W=1 warning when CONFIG_PROFILING=n:
      linux/arch/powerpc/kernel/smp.c:1638:5: error: no previous prototype for ‘setup_profiling_timer’
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211124093254.1054750-5-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/watchdog: Fix missed watchdog reset due to memory ordering race [+ + +]
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed Nov 10 12:50:53 2021 +1000

    powerpc/watchdog: Fix missed watchdog reset due to memory ordering race
    
    [ Upstream commit 5dad4ba68a2483fc80d70b9dc90bbe16e1f27263 ]
    
    It is possible for all CPUs to miss the pending cpumask becoming clear,
    and then nobody resetting it, which will cause the lockup detector to
    stop working. It will eventually expire, but watchdog_smp_panic will
    avoid doing anything if the pending mask is clear and it will never be
    reset.
    
    Order the cpumask clear vs the subsequent test to close this race.
    
    Add an extra check for an empty pending mask when the watchdog fires and
    finds its bit still clear, to try to catch any other possible races or
    bugs here and keep the watchdog working. The extra test in
    arch_touch_nmi_watchdog is required to prevent the new warning from
    firing off.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Reviewed-by: Laurent Dufour <ldufour@linux.ibm.com>
    Debugged-by: Laurent Dufour <ldufour@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211110025056.2084347-2-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc: handle kdump appropriately with crash_kexec_post_notifiers option [+ + +]
Author: Hari Bathini <hbathini@linux.ibm.com>
Date:   Tue Dec 7 16:07:18 2021 +0530

    powerpc: handle kdump appropriately with crash_kexec_post_notifiers option
    
    [ Upstream commit 219572d2fc4135b5ce65c735d881787d48b10e71 ]
    
    Kdump can be triggered after panic_notifers since commit f06e5153f4ae2
    ("kernel/panic.c: add "crash_kexec_post_notifiers" option for kdump
    after panic_notifers") introduced crash_kexec_post_notifiers option.
    But using this option would mean smp_send_stop(), that marks all other
    CPUs as offline, gets called before kdump is triggered. As a result,
    kdump routines fail to save other CPUs' registers. To fix this, kdump
    friendly crash_smp_send_stop() function was introduced with kernel
    commit 0ee59413c967 ("x86/panic: replace smp_send_stop() with kdump
    friendly version in panic path"). Override this kdump friendly weak
    function to handle crash_kexec_post_notifiers option appropriately
    on powerpc.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
    [Fixed signature of crash_stop_this_cpu() - reported by lkp@intel.com]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211207103719.91117-1-hbathini@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ppp: ensure minimum packet size in ppp_write() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 5 03:48:42 2022 -0800

    ppp: ensure minimum packet size in ppp_write()
    
    [ Upstream commit 44073187990d5629804ce0627525f6ea5cfef171 ]
    
    It seems pretty clear ppp layer assumed user space
    would always be kind to provide enough data
    in their write() to a ppp device.
    
    This patch makes sure user provides at least
    2 bytes.
    
    It adds PPP_PROTO_LEN macro that could replace
    in net-next many occurrences of hard-coded 2 value.
    
    I replaced only one occurrence to ease backports
    to stable kernels.
    
    The bug manifests in the following report:
    
    BUG: KMSAN: uninit-value in ppp_send_frame+0x28d/0x27c0 drivers/net/ppp/ppp_generic.c:1740
     ppp_send_frame+0x28d/0x27c0 drivers/net/ppp/ppp_generic.c:1740
     __ppp_xmit_process+0x23e/0x4b0 drivers/net/ppp/ppp_generic.c:1640
     ppp_xmit_process+0x1fe/0x480 drivers/net/ppp/ppp_generic.c:1661
     ppp_write+0x5cb/0x5e0 drivers/net/ppp/ppp_generic.c:513
     do_iter_write+0xb0c/0x1500 fs/read_write.c:853
     vfs_writev fs/read_write.c:924 [inline]
     do_writev+0x645/0xe00 fs/read_write.c:967
     __do_sys_writev fs/read_write.c:1040 [inline]
     __se_sys_writev fs/read_write.c:1037 [inline]
     __x64_sys_writev+0xe5/0x120 fs/read_write.c:1037
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:524 [inline]
     slab_alloc_node mm/slub.c:3251 [inline]
     __kmalloc_node_track_caller+0xe0c/0x1510 mm/slub.c:4974
     kmalloc_reserve net/core/skbuff.c:354 [inline]
     __alloc_skb+0x545/0xf90 net/core/skbuff.c:426
     alloc_skb include/linux/skbuff.h:1126 [inline]
     ppp_write+0x11d/0x5e0 drivers/net/ppp/ppp_generic.c:501
     do_iter_write+0xb0c/0x1500 fs/read_write.c:853
     vfs_writev fs/read_write.c:924 [inline]
     do_writev+0x645/0xe00 fs/read_write.c:967
     __do_sys_writev fs/read_write.c:1040 [inline]
     __se_sys_writev fs/read_write.c:1037 [inline]
     __x64_sys_writev+0xe5/0x120 fs/read_write.c:1037
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: linux-ppp@vger.kernel.org
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
random: do not throw away excess input to crng_fast_load [+ + +]
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Dec 29 22:10:05 2021 +0100

    random: do not throw away excess input to crng_fast_load
    
    [ Upstream commit 73c7733f122e8d0107f88655a12011f68f69e74b ]
    
    When crng_fast_load() is called by add_hwgenerator_randomness(), we
    currently will advance to crng_init==1 once we've acquired 64 bytes, and
    then throw away the rest of the buffer. Usually, that is not a problem:
    When add_hwgenerator_randomness() gets called via EFI or DT during
    setup_arch(), there won't be any IRQ randomness. Therefore, the 64 bytes
    passed by EFI exactly matches what is needed to advance to crng_init==1.
    Usually, DT seems to pass 64 bytes as well -- with one notable exception
    being kexec, which hands over 128 bytes of entropy to the kexec'd kernel.
    In that case, we'll advance to crng_init==1 once 64 of those bytes are
    consumed by crng_fast_load(), but won't continue onward feeding in bytes
    to progress to crng_init==2. This commit fixes the issue by feeding
    any leftover bytes into the next phase in add_hwgenerator_randomness().
    
    [linux@dominikbrodowski.net: rewrite commit message]
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rcu/exp: Mark current CPU as exp-QS in IPI loop second pass [+ + +]
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Tue Nov 30 17:21:08 2021 +0100

    rcu/exp: Mark current CPU as exp-QS in IPI loop second pass
    
    [ Upstream commit 81f6d49cce2d2fe507e3fddcc4a6db021d9c2e7b ]
    
    Expedited RCU grace periods invoke sync_rcu_exp_select_node_cpus(), which
    takes two passes over the leaf rcu_node structure's CPUs.  The first
    pass gathers up the current CPU and CPUs that are in dynticks idle mode.
    The workqueue will report a quiescent state on their behalf later.
    The second pass sends IPIs to the rest of the CPUs, but excludes the
    current CPU, incorrectly assuming it has been included in the first
    pass's list of CPUs.
    
    Unfortunately the current CPU may have changed between the first and
    second pass, due to the fact that the various rcu_node structures'
    ->lock fields have been dropped, thus momentarily enabling preemption.
    This means that if the second pass's CPU was not on the first pass's
    list, it will be ignored completely.  There will be no IPI sent to
    it, and there will be no reporting of quiescent states on its behalf.
    Unfortunately, the expedited grace period will nevertheless be waiting
    for that CPU to report a quiescent state, but with that CPU having no
    reason to believe that such a report is needed.
    
    The result will be an expedited grace period stall.
    
    Fix this by no longer excluding the current CPU from consideration during
    the second pass.
    
    Fixes: b9ad4d6ed18e ("rcu: Avoid self-IPI in sync_rcu_exp_select_node_cpus()")
    Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Neeraj Upadhyay <quic_neeraju@quicinc.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry [+ + +]
Author: Avihai Horon <avihaih@nvidia.com>
Date:   Thu Dec 9 15:16:07 2021 +0200

    RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry
    
    [ Upstream commit 20679094a0161c94faf77e373fa3f7428a8e14bd ]
    
    Currently, when cma_resolve_ib_dev() searches for a matching GID it will
    stop searching after encountering the first empty GID table entry. This
    behavior is wrong since neither IB nor RoCE spec enforce tightly packed
    GID tables.
    
    For example, when the matching valid GID entry exists at index N, and if a
    GID entry is empty at index N-1, cma_resolve_ib_dev() will fail to find
    the matching valid entry.
    
    Fix it by making cma_resolve_ib_dev() continue searching even after
    encountering missing entries.
    
    Fixes: f17df3b0dede ("RDMA/cma: Add support for AF_IB to rdma_resolve_addr()")
    Link: https://lore.kernel.org/r/b7346307e3bb396c43d67d924348c6c496493991.1639055490.git.leonro@nvidia.com
    Signed-off-by: Avihai Horon <avihaih@nvidia.com>
    Reviewed-by: Mark Zhang <markzhang@nvidia.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>

 
RDMA/core: Let ib_find_gid() continue search even after empty entry [+ + +]
Author: Avihai Horon <avihaih@nvidia.com>
Date:   Thu Dec 9 15:16:06 2021 +0200

    RDMA/core: Let ib_find_gid() continue search even after empty entry
    
    [ Upstream commit 483d805191a23191f8294bbf9b4e94836f5d92e4 ]
    
    Currently, ib_find_gid() will stop searching after encountering the first
    empty GID table entry. This behavior is wrong since neither IB nor RoCE
    spec enforce tightly packed GID tables.
    
    For example, when a valid GID entry exists at index N, and if a GID entry
    is empty at index N-1, ib_find_gid() will fail to find the valid entry.
    
    Fix it by making ib_find_gid() continue searching even after encountering
    missing entries.
    
    Fixes: 5eb620c81ce3 ("IB/core: Add helpers for uncached GID and P_Key searches")
    Link: https://lore.kernel.org/r/e55d331b96cecfc2cf19803d16e7109ea966882d.1639055490.git.leonro@nvidia.com
    Signed-off-by: Avihai Horon <avihaih@nvidia.com>
    Reviewed-by: Mark Zhang <markzhang@nvidia.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>

 
RDMA/cxgb4: Set queue pair state when being queried [+ + +]
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Mon Dec 20 17:25:30 2021 +0200

    RDMA/cxgb4: Set queue pair state when being queried
    
    [ Upstream commit e375b9c92985e409c4bb95dd43d34915ea7f5e28 ]
    
    The API for ib_query_qp requires the driver to set cur_qp_state on return,
    add the missing set.
    
    Fixes: 67bbc05512d8 ("RDMA/cxgb4: Add query_qp support")
    Link: https://lore.kernel.org/r/20211220152530.60399-1-kamalheib1@gmail.com
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/hns: Modify the mapping attribute of doorbell to device [+ + +]
Author: Yixing Liu <liuyixing1@huawei.com>
Date:   Mon Dec 6 21:36:52 2021 +0800

    RDMA/hns: Modify the mapping attribute of doorbell to device
    
    commit 39d5534b1302189c809e90641ffae8cbdc42a8fc upstream.
    
    It is more general for ARM device drivers to use the device attribute to
    map PCI BAR spaces.
    
    Fixes: 9a4435375cd1 ("IB/hns: Add driver files for hns RoCE driver")
    Link: https://lore.kernel.org/r/20211206133652.27476-1-liangwenpeng@huawei.com
    Signed-off-by: Yixing Liu <liuyixing1@huawei.com>
    Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

RDMA/hns: Validate the pkey index [+ + +]
Author: Kamal Heib <kamalheib1@gmail.com>
Date:   Wed Nov 17 16:59:54 2021 +0200

    RDMA/hns: Validate the pkey index
    
    [ Upstream commit 2a67fcfa0db6b4075515bd23497750849b88850f ]
    
    Before query pkey, make sure that the queried index is valid.
    
    Fixes: 9a4435375cd1 ("IB/hns: Add driver files for hns RoCE driver")
    Link: https://lore.kernel.org/r/20211117145954.123893-1-kamalheib1@gmail.com
    Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rxe: Fix a typo in opcode name [+ + +]
Author: Chengguang Xu <cgxu519@mykernel.net>
Date:   Sat Dec 18 19:23:20 2021 +0800

    RDMA/rxe: Fix a typo in opcode name
    
    commit 8d1cfb884e881efd69a3be4ef10772c71cb22216 upstream.
    
    There is a redundant ']' in the name of opcode IB_OPCODE_RC_SEND_MIDDLE,
    so just fix it.
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Link: https://lore.kernel.org/r/20211218112320.3558770-1-cgxu519@mykernel.net
    Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
    Acked-by: Zhu Yanjun <zyjzyj2000@gmail.com>
    Reviewed-by: Bob Pearson <rpearsonhpe@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
regulator: qcom_smd: Align probe function with rpmh-regulator [+ + +]
Author: Konrad Dybcio <konrad.dybcio@somainline.org>
Date:   Thu Dec 30 03:34:42 2021 +0100

    regulator: qcom_smd: Align probe function with rpmh-regulator
    
    [ Upstream commit 14e2976fbabdacb01335d7f91eeebbc89c67ddb1 ]
    
    The RPMh regulator driver is much newer and gets more attention, which in
    consequence makes it do a few things better. Update qcom_smd-regulator's
    probe function to mimic what rpmh-regulator does to address a couple of
    issues:
    
    - Probe defer now works correctly, before it used to, well,
      kinda just die.. This fixes reliable probing on (at least) PM8994,
      because Linux apparently cannot deal with supply map dependencies yet..
    
    - Regulator data is now matched more sanely: regulator data is matched
      against each individual regulator node name and throwing an -EINVAL if
      data is missing, instead of just assuming everything is fine and
      iterating over all subsequent array members.
    
    - status = "disabled" will now work for disabling individual regulators in
      DT. Previously it didn't seem to do much if anything at all.
    
    Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
    Link: https://lore.kernel.org/r/20211230023442.1123424-1-konrad.dybcio@somainline.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "ia64: kprobes: Use generic kretprobe trampoline handler" [+ + +]
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Jan 15 21:59:16 2022 +0900

    Revert "ia64: kprobes: Use generic kretprobe trampoline handler"
    
    This reverts commit 77fa5e15c933a1ec812de61ad709c00aa51e96ae.
    
    Since the upstream commit e792ff804f49720ce003b3e4c618b5d996256a18
    depends on the generic kretprobe trampoline handler, which was
    introduced by commit 66ada2ccae4e ("kprobes: Add generic kretprobe
    trampoline handler") but that is not ported to the stable kernel
    because it is not a bugfix series.
    So revert this commit to fix a build error.
    
    NOTE: I keep commit a7fe2378454c ("ia64: kprobes: Fix to pass
    correct trampoline address to the handler") on the tree, that seems
    just a cleanup without the original reverted commit, but it would
    be better to use dereference_function_descriptor() macro instead
    of accessing descriptor's field directly.
    
    Fixes: 77fa5e15c933 ("ia64: kprobes: Use generic kretprobe trampoline handler")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "net/mlx5: Add retry mechanism to the command entry index allocation" [+ + +]
Author: Moshe Shemesh <moshe@nvidia.com>
Date:   Sun Dec 5 11:20:59 2021 +0200

    Revert "net/mlx5: Add retry mechanism to the command entry index allocation"
    
    commit 4f6626b0e140867fd6d5a2e9d4ceaef97f10f46a upstream.
    
    This reverts commit 410bd754cd73c4a2ac3856d9a03d7b08f9c906bf.
    
    The reverted commit had added a retry mechanism to the command entry
    index allocation. The previous patch ensures that there is a free
    command entry index once the command work handler holds the command
    semaphore. Thus the retry mechanism is not needed.
    
    Fixes: 410bd754cd73 ("net/mlx5: Add retry mechanism to the command entry index allocation")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" [+ + +]
Author: Aya Levin <ayal@nvidia.com>
Date:   Sun Oct 24 11:47:41 2021 +0300

    Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels"
    
    [ Upstream commit 64050cdad0983ad8060e33c3f4b5aee2366bcebd ]
    
    This reverts commit 6d6727dddc7f93fcc155cb8d0c49c29ae0e71122.
    
    Although the NIC doesn't support offload of outer header CSUM, using
    gso_partial_features allows offloading the tunnel's segmentation. The
    driver relies on the stack CSUM calculation of the outer header. For
    this, NETIF_F_GSO_UDP_TUNNEL_CSUM must be a member of the device's
    features.
    
    Fixes: 6d6727dddc7f ("net/mlx5e: Block offload of outer header csum for UDP tunnels")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Gal Pressman <gal@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rocker: fix a sleeping in atomic bug [+ + +]
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jan 6 14:57:54 2022 +0300

    rocker: fix a sleeping in atomic bug
    
    [ Upstream commit 43d012123122cc69feacab55b71369f386c19566 ]
    
    This code is holding the &ofdpa->flow_tbl_lock spinlock so it is not
    allowed to sleep.  That means we have to pass the OFDPA_OP_FLAG_NOWAIT
    flag to ofdpa_flow_tbl_del().
    
    Fixes: 936bd486564a ("rocker: use FIB notifications instead of switchdev calls")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rpmsg: core: Clean up resources on announce_create failure. [+ + +]
Author: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Date:   Mon Dec 6 20:07:58 2021 +0100

    rpmsg: core: Clean up resources on announce_create failure.
    
    commit 8066c615cb69b7da8a94f59379847b037b3a5e46 upstream.
    
    During the rpmsg_dev_probe, if rpdev->ops->announce_create returns an
    error, the rpmsg device and default endpoint should be freed before
    exiting the function.
    
    Fixes: 5e619b48677c ("rpmsg: Split rpmsg core and virtio backend")
    Suggested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211206190758.10004-1-arnaud.pouliquen@foss.st.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rsi: Fix out-of-bounds read in rsi_read_pkt() [+ + +]
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Fri Oct 29 16:19:23 2021 -0400

    rsi: Fix out-of-bounds read in rsi_read_pkt()
    
    [ Upstream commit f1cb3476e48b60c450ec3a1d7da0805bffc6e43a ]
    
    rsi_get_* functions rely on an offset variable from usb
    input. The size of usb input is RSI_MAX_RX_USB_PKT_SIZE(3000),
    while 2-byte offset can be up to 0xFFFF. Thus a large offset
    can cause out-of-bounds read.
    
    The patch adds a bound checking condition when rcv_pkt_len is 0,
    indicating it's USB. It's unclear whether this is triggerable
    from other type of bus. The following check might help in that case.
    offset > rcv_pkt_len - FRAME_DESC_SZ
    
    The bug is trigerrable with conpromised/malfunctioning USB devices.
    I tested the patch with the crashing input and got no more bug report.
    
    Attached is the KASAN report from fuzzing.
    
    BUG: KASAN: slab-out-of-bounds in rsi_read_pkt+0x42e/0x500 [rsi_91x]
    Read of size 2 at addr ffff888019439fdb by task RX-Thread/227
    
    CPU: 0 PID: 227 Comm: RX-Thread Not tainted 5.6.0 #66
    Call Trace:
     dump_stack+0x76/0xa0
     print_address_description.constprop.0+0x16/0x200
     ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
     ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
     __kasan_report.cold+0x37/0x7c
     ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
     kasan_report+0xe/0x20
     rsi_read_pkt+0x42e/0x500 [rsi_91x]
     rsi_usb_rx_thread+0x1b1/0x2fc [rsi_usb]
     ? rsi_probe+0x16a0/0x16a0 [rsi_usb]
     ? _raw_spin_lock_irqsave+0x7b/0xd0
     ? _raw_spin_trylock_bh+0x120/0x120
     ? __wake_up_common+0x10b/0x520
     ? rsi_probe+0x16a0/0x16a0 [rsi_usb]
     kthread+0x2b5/0x3b0
     ? kthread_create_on_node+0xd0/0xd0
     ret_from_fork+0x22/0x40
    
    Reported-by: Brendan Dolan-Gavitt <brendandg@nyu.edu>
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/YXxXS4wgu2OsmlVv@10-18-43-117.dynapool.wireless.nyu.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rsi: Fix use-after-free in rsi_rx_done_handler() [+ + +]
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Fri Oct 29 15:49:03 2021 -0400

    rsi: Fix use-after-free in rsi_rx_done_handler()
    
    [ Upstream commit b07e3c6ebc0c20c772c0f54042e430acec2945c3 ]
    
    When freeing rx_cb->rx_skb, the pointer is not set to NULL,
    a later rsi_rx_done_handler call will try to read the freed
    address.
    This bug will very likley lead to double free, although
    detected early as use-after-free bug.
    
    The bug is triggerable with a compromised/malfunctional usb
    device. After applying the patch, the same input no longer
    triggers the use-after-free.
    
    Attached is the kasan report from fuzzing.
    
    BUG: KASAN: use-after-free in rsi_rx_done_handler+0x354/0x430 [rsi_usb]
    Read of size 4 at addr ffff8880188e5930 by task modprobe/231
    Call Trace:
     <IRQ>
     dump_stack+0x76/0xa0
     print_address_description.constprop.0+0x16/0x200
     ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
     ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
     __kasan_report.cold+0x37/0x7c
     ? dma_direct_unmap_page+0x90/0x110
     ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
     kasan_report+0xe/0x20
     rsi_rx_done_handler+0x354/0x430 [rsi_usb]
     __usb_hcd_giveback_urb+0x1e4/0x380
     usb_giveback_urb_bh+0x241/0x4f0
     ? __usb_hcd_giveback_urb+0x380/0x380
     ? apic_timer_interrupt+0xa/0x20
     tasklet_action_common.isra.0+0x135/0x330
     __do_softirq+0x18c/0x634
     ? handle_irq_event+0xcd/0x157
     ? handle_edge_irq+0x1eb/0x7b0
     irq_exit+0x114/0x140
     do_IRQ+0x91/0x1e0
     common_interrupt+0xf/0xf
     </IRQ>
    
    Reported-by: Brendan Dolan-Gavitt <brendandg@nyu.edu>
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/YXxQL/vIiYcZUu/j@10-18-43-117.dynapool.wireless.nyu.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: cmos: take rtc_lock while reading from CMOS [+ + +]
Author: Mateusz Jończyk <mat.jonczyk@o2.pl>
Date:   Fri Dec 10 21:01:23 2021 +0100

    rtc: cmos: take rtc_lock while reading from CMOS
    
    commit 454f47ff464325223129b9b5b8d0b61946ec704d upstream.
    
    Reading from the CMOS involves writing to the index register and then
    reading from the data register. Therefore access to the CMOS has to be
    serialized with rtc_lock. This invocation of CMOS_READ was not
    serialized, which could cause trouble when other code is accessing CMOS
    at the same time.
    
    Use spin_lock_irq() like the rest of the function.
    
    Nothing in kernel modifies the RTC_DM_BINARY bit, so there could be a
    separate pair of spin_lock_irq() / spin_unlock_irq() before doing the
    math.
    
    Signed-off-by: Mateusz Jończyk <mat.jonczyk@o2.pl>
    Reviewed-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20211210200131.153887-2-mat.jonczyk@o2.pl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rtc: pxa: fix null pointer dereference [+ + +]
Author: Laurence de Bruxelles <lfdebrux@gmail.com>
Date:   Sat Jan 1 15:41:49 2022 +0000

    rtc: pxa: fix null pointer dereference
    
    commit 34127b3632b21e5c391756e724b1198eb9917981 upstream.
    
    With the latest stable kernel versions the rtc on the PXA based
    Zaurus does not work, when booting I see the following kernel messages:
    
    pxa-rtc pxa-rtc: failed to find rtc clock source
    pxa-rtc pxa-rtc: Unable to init SA1100 RTC sub-device
    pxa-rtc: probe of pxa-rtc failed with error -2
    hctosys: unable to open rtc device (rtc0)
    
    I think this is because commit f2997775b111 ("rtc: sa1100: fix possible
    race condition") moved the allocation of the rtc_device struct out of
    sa1100_rtc_init and into sa1100_rtc_probe. This means that pxa_rtc_probe
    also needs to do allocation for the rtc_device struct, otherwise
    sa1100_rtc_init will try to dereference a null pointer. This patch adds
    that allocation by copying how sa1100_rtc_probe in
    drivers/rtc/rtc-sa1100.c does it; after the IRQs are set up a managed
    rtc_device is allocated.
    
    I've tested this patch with `qemu-system-arm -machine akita` and with a
    real Zaurus SL-C1000 applied to 4.19, 5.4, and 5.10.
    
    Signed-off-by: Laurence de Bruxelles <lfdebrux@gmail.com>
    Fixes: f2997775b111 ("rtc: sa1100: fix possible race condition")
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20220101154149.12026-1-lfdebrux@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/mm: fix 2KB pgtable release race [+ + +]
Author: Alexander Gordeev <agordeev@linux.ibm.com>
Date:   Thu Nov 4 07:14:44 2021 +0100

    s390/mm: fix 2KB pgtable release race
    
    commit c2c224932fd0ee6854d6ebfc8d059c2bcad86606 upstream.
    
    There is a race on concurrent 2KB-pgtables release paths when
    both upper and lower halves of the containing parent page are
    freed, one via page_table_free_rcu() + __tlb_remove_table(),
    and the other via page_table_free(). The race might lead to a
    corruption as result of remove of list item in page_table_free()
    concurrently with __free_page() in __tlb_remove_table().
    
    Let's assume first the lower and next the upper 2KB-pgtables are
    freed from a page. Since both halves of the page are allocated
    the tracking byte (bits 24-31 of the page _refcount) has value
    of 0x03 initially:
    
    CPU0                            CPU1
    ----                            ----
    
    page_table_free_rcu() // lower half
    {
            // _refcount[31..24] == 0x03
            ...
            atomic_xor_bits(&page->_refcount,
                            0x11U << (0 + 24));
            // _refcount[31..24] <= 0x12
            ...
            table = table | (1U << 0);
            tlb_remove_table(tlb, table);
    }
    ...
    __tlb_remove_table()
    {
            // _refcount[31..24] == 0x12
            mask = _table & 3;
            // mask <= 0x01
            ...
    
                                    page_table_free() // upper half
                                    {
                                            // _refcount[31..24] == 0x12
                                            ...
                                            atomic_xor_bits(
                                                    &page->_refcount,
                                                    1U << (1 + 24));
                                            // _refcount[31..24] <= 0x10
                                            // mask <= 0x10
                                            ...
            atomic_xor_bits(&page->_refcount,
                            mask << (4 + 24));
            // _refcount[31..24] <= 0x00
            // mask <= 0x00
            ...
            if (mask != 0) // == false
                    break;
            fallthrough;
            ...
                                            if (mask & 3) // == false
                                                    ...
                                            else
            __free_page(page);                      list_del(&page->lru);
            ^^^^^^^^^^^^^^^^^^      RACE!           ^^^^^^^^^^^^^^^^^^^^^
    }                                       ...
                                    }
    
    The problem is page_table_free() releases the page as result of
    lower nibble unset and __tlb_remove_table() observing zero too
    early. With this update page_table_free() will use the similar
    logic as page_table_free_rcu() + __tlb_remove_table(), and mark
    the fragment as pending for removal in the upper nibble until
    after the list_del().
    
    In other words, the parent page is considered as unreferenced and
    safe to release only when the lower nibble is cleared already and
    unsetting a bit in upper nibble results in that nibble turned zero.
    
    Cc: stable@vger.kernel.org
    Suggested-by: Vlastimil Babka <vbabka@suse.com>
    Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sched/rt: Try to restart rt period timer when rt runtime exceeded [+ + +]
Author: Li Hua <hucool.lihua@huawei.com>
Date:   Fri Dec 3 03:36:18 2021 +0000

    sched/rt: Try to restart rt period timer when rt runtime exceeded
    
    [ Upstream commit 9b58e976b3b391c0cf02e038d53dd0478ed3013c ]
    
    When rt_runtime is modified from -1 to a valid control value, it may
    cause the task to be throttled all the time. Operations like the following
    will trigger the bug. E.g:
    
      1. echo -1 > /proc/sys/kernel/sched_rt_runtime_us
      2. Run a FIFO task named A that executes while(1)
      3. echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
    
    When rt_runtime is -1, The rt period timer will not be activated when task
    A enqueued. And then the task will be throttled after setting rt_runtime to
    950,000. The task will always be throttled because the rt period timer is
    not activated.
    
    Fixes: d0b27fa77854 ("sched: rt-group: synchonised bandwidth period")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Li Hua <hucool.lihua@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20211203033618.11895-1-hucool.lihua@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scripts/dtc: dtx_diff: remove broken example from help text [+ + +]
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Thu Jan 13 09:19:18 2022 +0100

    scripts/dtc: dtx_diff: remove broken example from help text
    
    commit d8adf5b92a9d2205620874d498c39923ecea8749 upstream.
    
    dtx_diff suggests to use <(...) syntax to pipe two inputs into it, but
    this has never worked: The /proc/self/fds/... paths passed by the shell
    will fail the `[ -f "${dtx}" ] && [ -r "${dtx}" ]` check in compile_to_dts,
    but even with this check removed, the function cannot work: hexdump will
    eat up the DTB magic, making the subsequent dtc call fail, as a pipe
    cannot be rewound.
    
    Simply remove this broken example, as there is already an alternative one
    that works fine.
    
    Fixes: 10eadc253ddf ("dtc: create tool to diff device trees")
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Reviewed-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20220113081918.10387-1-matthias.schiffer@ew.tq-group.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: core: Show SCMD_LAST in text form [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Nov 29 11:46:00 2021 -0800

    scsi: core: Show SCMD_LAST in text form
    
    commit 3369046e54ca8f82e0cb17740643da2d80d3cfa8 upstream.
    
    The SCSI debugfs code supports showing information about pending commands,
    including translating SCSI command flags from numeric into text format.
    Also convert the SCMD_LAST flag from numeric into text form.
    
    Link: https://lore.kernel.org/r/20211129194609.3466071-4-bvanassche@acm.org
    Fixes: 8930a6c20791 ("scsi: core: add support for request batching")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup [+ + +]
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Dec 3 16:26:40 2021 -0800

    scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup
    
    [ Upstream commit 7dd2e2a923173d637c272e483966be8e96a72b64 ]
    
    Extraneous teardown routines are present in the firmware dump path causing
    altered states in firmware captures.
    
    When a firmware dump is requested via sysfs, trigger the dump immediately
    without tearing down structures and changing adapter state.
    
    The driver shall rely on pre-existing firmware error state clean up
    handlers to restore the adapter.
    
    Link: https://lore.kernel.org/r/20211204002644.116455-6-jsmart2021@gmail.com
    Co-developed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: sr: Don't use GFP_DMA [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Dec 22 10:08:42 2021 +0100

    scsi: sr: Don't use GFP_DMA
    
    [ Upstream commit d94d94969a4ba07a43d62429c60372320519c391 ]
    
    The allocated buffers are used as a command payload, for which the block
    layer and/or DMA API do the proper bounce buffering if needed.
    
    Link: https://lore.kernel.org/r/20211222090842.920724-1-hch@lst.de
    Reported-by: Baoquan He <bhe@redhat.com>
    Reviewed-by: Baoquan He <bhe@redhat.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: ufs: Fix race conditions related to driver data [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri Dec 3 15:19:39 2021 -0800

    scsi: ufs: Fix race conditions related to driver data
    
    [ Upstream commit 21ad0e49085deb22c094f91f9da57319a97188e4 ]
    
    The driver data pointer must be set before any callbacks are registered
    that use that pointer. Hence move the initialization of that pointer from
    after the ufshcd_init() call to inside ufshcd_init().
    
    Link: https://lore.kernel.org/r/20211203231950.193369-7-bvanassche@acm.org
    Fixes: 3b1d05807a9a ("[SCSI] ufs: Segregate PCI Specific Code")
    Reported-by: Alexey Dobriyan <adobriyan@gmail.com>
    Tested-by: Bean Huo <beanhuo@micron.com>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selinux: fix potential memleak in selinux_add_opt() [+ + +]
Author: Bernard Zhao <bernard@vivo.com>
Date:   Fri Dec 10 04:03:58 2021 -0800

    selinux: fix potential memleak in selinux_add_opt()
    
    [ Upstream commit 2e08df3c7c4e4e74e3dd5104c100f0bf6288aaa8 ]
    
    This patch try to fix potential memleak in error branch.
    
    Fixes: ba6418623385 ("selinux: new helper - selinux_add_opt()")
    Signed-off-by: Bernard Zhao <bernard@vivo.com>
    [PM: tweak the subject line, add Fixes tag]
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: amba-pl011: do not request memory region twice [+ + +]
Author: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Date:   Mon Nov 29 18:42:38 2021 +0100

    serial: amba-pl011: do not request memory region twice
    
    [ Upstream commit d1180405c7b5c7a1c6bde79d5fc24fe931430737 ]
    
    With commit 3873e2d7f63a ("drivers: PL011: refactor pl011_probe()") the
    function devm_ioremap() called from pl011_setup_port() was replaced with
    devm_ioremap_resource(). Since this function not only remaps but also
    requests the ports io memory region it now collides with the .config_port()
    callback which requests the same region at uart port registration.
    
    Since devm_ioremap_resource() already claims the memory successfully, the
    request in .config_port() fails.
    
    Later at uart port deregistration the attempt to release the unclaimed
    memory also fails. The failure results in a “Trying to free nonexistent
    resource" warning.
    
    Fix these issues by removing the callbacks that implement the redundant
    memory allocation/release. Also make sure that changing the drivers io
    memory base address via TIOCSSERIAL is not allowed any more.
    
    Fixes: 3873e2d7f63a ("drivers: PL011: refactor pl011_probe()")
    Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
    Link: https://lore.kernel.org/r/20211129174238.8333-1-LinoSanfilippo@gmx.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: core: Keep mctrl register state and cached copy in sync [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Jan 2 18:52:44 2022 +0100

    serial: core: Keep mctrl register state and cached copy in sync
    
    [ Upstream commit 93a770b7e16772530196674ffc79bb13fa927dc6 ]
    
    struct uart_port contains a cached copy of the Modem Control signals.
    It is used to skip register writes in uart_update_mctrl() if the new
    signal state equals the old signal state.  It also avoids a register
    read to obtain the current state of output signals.
    
    When a uart_port is registered, uart_configure_port() changes signal
    state but neglects to keep the cached copy in sync.  That may cause
    a subsequent register write to be incorrectly skipped.  Fix it before
    it trips somebody up.
    
    This behavior has been present ever since the serial core was introduced
    in 2002:
    https://git.kernel.org/history/history/c/33c0d1b0c3eb
    
    So far it was never an issue because the cached copy is initialized to 0
    by kzalloc() and when uart_configure_port() is executed, at most DTR has
    been set by uart_set_options() or sunsu_console_setup().  Therefore,
    a stable designation seems unnecessary.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Link: https://lore.kernel.org/r/bceeaba030b028ed810272d55d5fc6f3656ddddb.1641129752.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: Fix incorrect rs485 polarity on uart open [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sat Dec 18 10:58:56 2021 +0100

    serial: Fix incorrect rs485 polarity on uart open
    
    commit d3b3404df318504ec084213ab1065b73f49b0f1d upstream.
    
    Commit a6845e1e1b78 ("serial: core: Consider rs485 settings to drive
    RTS") sought to deassert RTS when opening an rs485-enabled uart port.
    That way, the transceiver does not occupy the bus until it transmits
    data.
    
    Unfortunately, the commit mixed up the logic and *asserted* RTS instead
    of *deasserting* it:
    
    The commit amended uart_port_dtr_rts(), which raises DTR and RTS when
    opening an rs232 port.  "Raising" actually means lowering the signal
    that's coming out of the uart, because an rs232 transceiver not only
    changes a signal's voltage level, it also *inverts* the signal.  See
    the simplified schematic in the MAX232 datasheet for an example:
    https://www.ti.com/lit/ds/symlink/max232.pdf
    
    So, to raise RTS on an rs232 port, TIOCM_RTS is *set* in port->mctrl
    and that results in the signal being driven low.
    
    In contrast to rs232, the signal level for rs485 Transmit Enable is the
    identity, not the inversion:  If the transceiver expects a "high" RTS
    signal for Transmit Enable, the signal coming out of the uart must also
    be high, so TIOCM_RTS must be *cleared* in port->mctrl.
    
    The commit did the exact opposite, but it's easy to see why given the
    confusing semantics of rs232 and rs485.  Fix it.
    
    Fixes: a6845e1e1b78 ("serial: core: Consider rs485 settings to drive RTS")
    Cc: stable@vger.kernel.org # v4.14+
    Cc: Rafael Gago Castano <rgc@hms.se>
    Cc: Jan Kiszka <jan.kiszka@siemens.com>
    Cc: Su Bao Cheng <baocheng.su@siemens.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Link: https://lore.kernel.org/r/9395767847833f2f3193c49cde38501eeb3b5669.1639821059.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

serial: pl010: Drop CR register reset on set_termios [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Jan 2 18:42:44 2022 +0100

    serial: pl010: Drop CR register reset on set_termios
    
    [ Upstream commit 08a0c6dff91c965e39905cf200d22db989203ccb ]
    
    pl010_set_termios() briefly resets the CR register to zero.
    
    Where does this register write come from?
    
    The PL010 driver's IRQ handler ambauart_int() originally modified the CR
    register without holding the port spinlock.  ambauart_set_termios() also
    modified that register.  To prevent concurrent read-modify-writes by the
    IRQ handler and to prevent transmission while changing baudrate,
    ambauart_set_termios() had to disable interrupts.  That is achieved by
    writing zero to the CR register.
    
    However in 2004 the PL010 driver was amended to acquire the port
    spinlock in the IRQ handler, obviating the need to disable interrupts in
    ->set_termios():
    https://git.kernel.org/history/history/c/157c0342e591
    
    That rendered the CR register write obsolete.  Drop it.
    
    Cc: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Link: https://lore.kernel.org/r/fcaff16e5b1abb4cc3da5a2879ac13f278b99ed0.1641128728.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode [+ + +]
Author: Gang Li <ligang.bdlg@bytedance.com>
Date:   Fri Jan 14 14:05:23 2022 -0800

    shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode
    
    commit 62c9827cbb996c2c04f615ecd783ce28bcea894b upstream.
    
    Fix a data race in commit 779750d20b93 ("shmem: split huge pages beyond
    i_size under memory pressure").
    
    Here are call traces causing race:
    
       Call Trace 1:
         shmem_unused_huge_shrink+0x3ae/0x410
         ? __list_lru_walk_one.isra.5+0x33/0x160
         super_cache_scan+0x17c/0x190
         shrink_slab.part.55+0x1ef/0x3f0
         shrink_node+0x10e/0x330
         kswapd+0x380/0x740
         kthread+0xfc/0x130
         ? mem_cgroup_shrink_node+0x170/0x170
         ? kthread_create_on_node+0x70/0x70
         ret_from_fork+0x1f/0x30
    
       Call Trace 2:
         shmem_evict_inode+0xd8/0x190
         evict+0xbe/0x1c0
         do_unlinkat+0x137/0x330
         do_syscall_64+0x76/0x120
         entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    A simple explanation:
    
    Image there are 3 items in the local list (@list).  In the first
    traversal, A is not deleted from @list.
    
      1)    A->B->C
            ^
            |
            pos (leave)
    
    In the second traversal, B is deleted from @list.  Concurrently, A is
    deleted from @list through shmem_evict_inode() since last reference
    counter of inode is dropped by other thread.  Then the @list is corrupted.
    
      2)    A->B->C
            ^  ^
            |  |
         evict pos (drop)
    
    We should make sure the inode is either on the global list or deleted from
    any local list before iput().
    
    Fixed by moving inodes back to global list before we put them.
    
    [akpm@linux-foundation.org: coding style fixes]
    
    Link: https://lkml.kernel.org/r/20211125064502.99983-1-ligang.bdlg@bytedance.com
    Fixes: 779750d20b93 ("shmem: split huge pages beyond i_size under memory pressure")
    Signed-off-by: Gang Li <ligang.bdlg@bytedance.com>
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Hugh Dickins <hughd@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>

 
spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Fri Jan 7 07:54:24 2022 +0000

    spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe
    
    [ Upstream commit 69c1b87516e327a60b39f96b778fe683259408bf ]
    
    If the probe fails, we should use pm_runtime_disable() to balance
    pm_runtime_enable().
    Add missing pm_runtime_disable() for meson_spifc_probe.
    
    Fixes: c3e4bc5434d2 ("spi: meson: Add support for Amlogic Meson SPIFC")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220107075424.7774-1-linmq006@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
staging: greybus: audio: Check null pointer [+ + +]
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Tue Jan 4 23:06:28 2022 +0800

    staging: greybus: audio: Check null pointer
    
    [ Upstream commit 2e81948177d769106754085c3e03534e6cc1f623 ]
    
    As the possible alloc failure of devm_kcalloc(), it could return null
    pointer.
    Therefore, 'strings' should be checked and return NULL if alloc fails to
    prevent the dereference of the NULL pointer.
    Also, the caller should also deal with the return value of the
    gb_generate_enum_strings() and return -ENOMEM if returns NULL.
    Moreover, because the memory allocated with devm_kzalloc() will be
    freed automatically when the last reference to the device is dropped,
    the 'gbe' in gbaudio_tplg_create_enum_kctl() and
    gbaudio_tplg_create_enum_ctl() do not need to free manually.
    But the 'control' in gbaudio_tplg_create_widget() and
    gbaudio_tplg_process_kcontrols() has a specially error handle to
    cleanup.
    So it should be better to cleanup 'control' when fails.
    
    Fixes: e65579e335da ("greybus: audio: topology: Enable enumerated control support")
    Reviewed-by: Alex Elder <elder@linaro.org>
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20220104150628.1987906-1-jiasheng@iscas.ac.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

staging: rtl8192e: return error code from rtllib_softmac_init() [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Dec 2 11:07:02 2021 +0800

    staging: rtl8192e: return error code from rtllib_softmac_init()
    
    [ Upstream commit 68bf78ff59a0891eb1239948e94ce10f73a9dd30 ]
    
    If it fails to allocate 'dot11d_info', rtllib_softmac_init()
    should return error code. And remove unneccessary error message.
    
    Fixes: 94a799425eee ("From: wlanfae <wlanfae@realtek.com>")
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211202030704.2425621-2-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() [+ + +]
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Dec 2 11:07:03 2021 +0800

    staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib()
    
    [ Upstream commit e730cd57ac2dfe94bca0f14a3be8e1b21de41a9c ]
    
    Some variables are leaked in the error handling in alloc_rtllib(), free
    the variables in the error path.
    
    Fixes: 94a799425eee ("From: wlanfae <wlanfae@realtek.com>")
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211202030704.2425621-3-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tee: fix put order in teedev_close_context() [+ + +]
Author: Jens Wiklander <jens.wiklander@linaro.org>
Date:   Tue Jun 15 22:23:50 2021 +0200

    tee: fix put order in teedev_close_context()
    
    [ Upstream commit f18397ab3ae23e8e43bba9986e66af6d4497f2ad ]
    
    Prior to this patch was teedev_close_context() calling tee_device_put()
    before teedev_ctx_put() leading to teedev_ctx_release() accessing
    ctx->teedev just after the reference counter was decreased on the
    teedev. Fix this by calling teedev_ctx_put() before tee_device_put().
    
    Fixes: 217e0250cccb ("tee: use reference counting for tee_context")
    Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/nolibc: fix incorrect truncation of exit code [+ + +]
Author: Willy Tarreau <w@1wt.eu>
Date:   Sun Oct 24 19:28:16 2021 +0200

    tools/nolibc: fix incorrect truncation of exit code
    
    commit de0244ae40ae91145faaf164a4252347607c3711 upstream.
    
    Ammar Faizi reported that our exit code handling is wrong. We truncate
    it to the lowest 8 bits but the syscall itself is expected to take a
    regular 32-bit signed integer, not an unsigned char. It's the kernel
    that later truncates it to the lowest 8 bits. The difference is visible
    in strace, where the program below used to show exit(255) instead of
    exit(-1):
    
      int main(void)
      {
            return -1;
      }
    
    This patch applies the fix to all archs. x86_64, i386, arm64, armv7 and
    mips were all tested and confirmed to work fine now. Risc-v was not
    tested but the change is trivial and exactly the same as for other archs.
    
    Reported-by: Ammar Faizi <ammar.faizi@students.amikom.ac.id>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tools/nolibc: i386: fix initial stack alignment [+ + +]
Author: Willy Tarreau <w@1wt.eu>
Date:   Sun Oct 24 19:28:15 2021 +0200

    tools/nolibc: i386: fix initial stack alignment
    
    commit ebbe0d8a449d183fa43b42d84fcb248e25303985 upstream.
    
    After re-checking in the spec and comparing stack offsets with glibc,
    The last pushed argument must be 16-byte aligned (i.e. aligned before the
    call) so that in the callee esp+4 is multiple of 16, so the principle is
    the 32-bit equivalent to what Ammar fixed for x86_64. It's possible that
    32-bit code using SSE2 or MMX could have been affected. In addition the
    frame pointer ought to be zero at the deepest level.
    
    Link: https://gitlab.com/x86-psABIs/i386-ABI/-/wikis/Intel386-psABI
    Cc: Ammar Faizi <ammar.faizi@students.amikom.ac.id>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tools/nolibc: x86-64: Fix startup code bug [+ + +]
Author: Ammar Faizi <ammar.faizi@students.amikom.ac.id>
Date:   Sun Oct 24 19:28:14 2021 +0200

    tools/nolibc: x86-64: Fix startup code bug
    
    commit 937ed91c712273131de6d2a02caafd3ee84e0c72 upstream.
    
    Before this patch, the `_start` function looks like this:
    ```
    0000000000001170 <_start>:
        1170:       pop    %rdi
        1171:       mov    %rsp,%rsi
        1174:       lea    0x8(%rsi,%rdi,8),%rdx
        1179:       and    $0xfffffffffffffff0,%rsp
        117d:       sub    $0x8,%rsp
        1181:       call   1000 <main>
        1186:       movzbq %al,%rdi
        118a:       mov    $0x3c,%rax
        1191:       syscall
        1193:       hlt
        1194:       data16 cs nopw 0x0(%rax,%rax,1)
        119f:       nop
    ```
    Note the "and" to %rsp with $-16, it makes the %rsp be 16-byte aligned,
    but then there is a "sub" with $0x8 which makes the %rsp no longer
    16-byte aligned, then it calls main. That's the bug!
    
    What actually the x86-64 System V ABI mandates is that right before the
    "call", the %rsp must be 16-byte aligned, not after the "call". So the
    "sub" with $0x8 here breaks the alignment. Remove it.
    
    An example where this rule matters is when the callee needs to align
    its stack at 16-byte for aligned move instruction, like `movdqa` and
    `movaps`. If the callee can't align its stack properly, it will result
    in segmentation fault.
    
    x86-64 System V ABI also mandates the deepest stack frame should be
    zero. Just to be safe, let's zero the %rbp on startup as the content
    of %rbp may be unspecified when the program starts. Now it looks like
    this:
    ```
    0000000000001170 <_start>:
        1170:       pop    %rdi
        1171:       mov    %rsp,%rsi
        1174:       lea    0x8(%rsi,%rdi,8),%rdx
        1179:       xor    %ebp,%ebp                # zero the %rbp
        117b:       and    $0xfffffffffffffff0,%rsp # align the %rsp
        117f:       call   1000 <main>
        1184:       movzbq %al,%rdi
        1188:       mov    $0x3c,%rax
        118f:       syscall
        1191:       hlt
        1192:       data16 cs nopw 0x0(%rax,%rax,1)
        119d:       nopl   (%rax)
    ```
    
    Cc: Bedirhan KURT <windowz414@gnuweeb.org>
    Cc: Louvian Lyndal <louvianlyndal@gmail.com>
    Reported-by: Peter Cordes <peter@cordes.ca>
    Signed-off-by: Ammar Faizi <ammar.faizi@students.amikom.ac.id>
    [wt: I did this on purpose due to a misunderstanding of the spec, other
         archs will thus have to be rechecked, particularly i386]
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tpm: add request_locality before write TPM_INT_ENABLE [+ + +]
Author: Chen Jun <chenjun102@huawei.com>
Date:   Wed Oct 13 06:25:56 2021 +0000

    tpm: add request_locality before write TPM_INT_ENABLE
    
    [ Upstream commit 0ef333f5ba7f24f5d8478425c163d3097f1c7afd ]
    
    Locality is not appropriately requested before writing the int mask.
    Add the missing boilerplate.
    
    Fixes: e6aef069b6e9 ("tpm_tis: convert to using locality callbacks")
    Signed-off-by: Chen Jun <chenjun102@huawei.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing/kprobes: 'nmissed' not showed correctly for kretprobe [+ + +]
Author: Xiangyang Zhang <xyz.sun.ok@gmail.com>
Date:   Fri Jan 7 23:02:42 2022 +0800

    tracing/kprobes: 'nmissed' not showed correctly for kretprobe
    
    commit dfea08a2116fe327f79d8f4d4b2cf6e0c88be11f upstream.
    
    The 'nmissed' column of the 'kprobe_profile' file for kretprobe is
    not showed correctly, kretprobe can be skipped by two reasons,
    shortage of kretprobe_instance which is counted by tk->rp.nmissed,
    and kprobe itself is missed by some reason, so to show the sum.
    
    Link: https://lkml.kernel.org/r/20220107150242.5019-1-xyz.sun.ok@gmail.com
    
    Cc: stable@vger.kernel.org
    Fixes: 4a846b443b4e ("tracing/kprobes: Cleanup kprobe tracer code")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Xiangyang Zhang <xyz.sun.ok@gmail.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tty: serial: atmel: Call dma_async_issue_pending() [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Thu Nov 25 11:00:18 2021 +0200

    tty: serial: atmel: Call dma_async_issue_pending()
    
    [ Upstream commit 4f4b9b5895614eb2e2b5f4cab7858f44bd113e1b ]
    
    The driver wrongly assummed that tx_submit() will start the transfer,
    which is not the case, now that the at_xdmac driver is fixed. tx_submit
    is supposed to push the current transaction descriptor to a pending queue,
    waiting for issue_pending to be called. issue_pending must start the
    transfer, not tx_submit.
    
    Fixes: 34df42f59a60 ("serial: at91: add rx dma support")
    Fixes: 08f738be88bb ("serial: at91: add tx dma support")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20211125090028.786832-4-tudor.ambarus@microchip.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tty: serial: atmel: Check return code of dmaengine_submit() [+ + +]
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Thu Nov 25 11:00:17 2021 +0200

    tty: serial: atmel: Check return code of dmaengine_submit()
    
    [ Upstream commit 1e67bd2b8cb90b66e89562598e9c2046246832d3 ]
    
    The tx_submit() method of struct dma_async_tx_descriptor is entitled
    to do sanity checks and return errors if encountered. It's not the
    case for the DMA controller drivers that this client is using
    (at_h/xdmac), because they currently don't do sanity checks and always
    return a positive cookie at tx_submit() method. In case the controller
    drivers will implement sanity checks and return errors, print a message
    so that the client will be informed that something went wrong at
    tx_submit() level.
    
    Fixes: 08f738be88bb ("serial: at91: add tx dma support")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Acked-by: Richard Genoud <richard.genoud@gmail.com>
    Link: https://lore.kernel.org/r/20211125090028.786832-3-tudor.ambarus@microchip.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tty: serial: uartlite: allow 64 bit address [+ + +]
Author: Lizhi Hou <lizhi.hou@xilinx.com>
Date:   Mon Nov 29 12:23:02 2021 -0800

    tty: serial: uartlite: allow 64 bit address
    
    [ Upstream commit 3672fb65155530b5eea6225685c75329b6debec3 ]
    
    The base address of uartlite registers could be 64 bit address which is from
    device resource. When ulite_probe() calls ulite_assign(), this 64 bit
    address is casted to 32-bit. The fix is to replace "u32" type with
    "phys_addr_t" type for the base address in ulite_assign() argument list.
    
    Fixes: 8fa7b6100693 ("[POWERPC] Uartlite: Separate the bus binding from the driver proper")
    Signed-off-by: Lizhi Hou <lizhi.hou@xilinx.com>
    Link: https://lore.kernel.org/r/20211129202302.1319033-1-lizhi.hou@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers [+ + +]
Author: Petr Cvachoucek <cvachoucek@gmail.com>
Date:   Mon Aug 30 21:20:37 2021 +0200

    ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers
    
    commit 3fea4d9d160186617ff40490ae01f4f4f36b28ff upstream.
    
    it seems freeing the write buffers in the error path of the
    ubifs_remount_rw() is wrong. It leads later to a kernel oops like this:
    
    [10016.431274] UBIFS (ubi0:0): start fixing up free space
    [10090.810042] UBIFS (ubi0:0): free space fixup complete
    [10090.814623] UBIFS error (ubi0:0 pid 512): ubifs_remount_fs: cannot
    spawn "ubifs_bgt0_0", error -4
    [10101.915108] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" started,
    PID 517
    [10105.275498] Unable to handle kernel NULL pointer dereference at
    virtual address 0000000000000030
    [10105.284352] Mem abort info:
    [10105.287160]   ESR = 0x96000006
    [10105.290252]   EC = 0x25: DABT (current EL), IL = 32 bits
    [10105.295592]   SET = 0, FnV = 0
    [10105.298652]   EA = 0, S1PTW = 0
    [10105.301848] Data abort info:
    [10105.304723]   ISV = 0, ISS = 0x00000006
    [10105.308573]   CM = 0, WnR = 0
    [10105.311564] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000f03d1000
    [10105.318034] [0000000000000030] pgd=00000000f6cee003,
    pud=00000000f4884003, pmd=0000000000000000
    [10105.326783] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [10105.332355] Modules linked in: ath10k_pci ath10k_core ath mac80211
    libarc4 cfg80211 nvme nvme_core cryptodev(O)
    [10105.342468] CPU: 3 PID: 518 Comm: touch Tainted: G           O
    5.4.3 #1
    [10105.349517] Hardware name: HYPEX CPU (DT)
    [10105.353525] pstate: 40000005 (nZcv daif -PAN -UAO)
    [10105.358324] pc : atomic64_try_cmpxchg_acquire.constprop.22+0x8/0x34
    [10105.364596] lr : mutex_lock+0x1c/0x34
    [10105.368253] sp : ffff000075633aa0
    [10105.371563] x29: ffff000075633aa0 x28: 0000000000000001
    [10105.376874] x27: ffff000076fa80c8 x26: 0000000000000004
    [10105.382185] x25: 0000000000000030 x24: 0000000000000000
    [10105.387495] x23: 0000000000000000 x22: 0000000000000038
    [10105.392807] x21: 000000000000000c x20: ffff000076fa80c8
    [10105.398119] x19: ffff000076fa8000 x18: 0000000000000000
    [10105.403429] x17: 0000000000000000 x16: 0000000000000000
    [10105.408741] x15: 0000000000000000 x14: fefefefefefefeff
    [10105.414052] x13: 0000000000000000 x12: 0000000000000fe0
    [10105.419364] x11: 0000000000000fe0 x10: ffff000076709020
    [10105.424675] x9 : 0000000000000000 x8 : 00000000000000a0
    [10105.429986] x7 : ffff000076fa80f4 x6 : 0000000000000030
    [10105.435297] x5 : 0000000000000000 x4 : 0000000000000000
    [10105.440609] x3 : 0000000000000000 x2 : ffff00006f276040
    [10105.445920] x1 : ffff000075633ab8 x0 : 0000000000000030
    [10105.451232] Call trace:
    [10105.453676]  atomic64_try_cmpxchg_acquire.constprop.22+0x8/0x34
    [10105.459600]  ubifs_garbage_collect+0xb4/0x334
    [10105.463956]  ubifs_budget_space+0x398/0x458
    [10105.468139]  ubifs_create+0x50/0x180
    [10105.471712]  path_openat+0x6a0/0x9b0
    [10105.475284]  do_filp_open+0x34/0x7c
    [10105.478771]  do_sys_open+0x78/0xe4
    [10105.482170]  __arm64_sys_openat+0x1c/0x24
    [10105.486180]  el0_svc_handler+0x84/0xc8
    [10105.489928]  el0_svc+0x8/0xc
    [10105.492808] Code: 52800013 17fffffb d2800003 f9800011 (c85ffc05)
    [10105.498903] ---[ end trace 46b721d93267a586 ]---
    
    To reproduce the problem:
    
    1. Filesystem initially mounted read-only, free space fixup flag set.
    
    2. mount -o remount,rw <mountpoint>
    
    3. it takes some time (free space fixup running)
        ... try to terminate running mount by CTRL-C
        ... does not respond, only after free space fixup is complete
        ... then "ubifs_remount_fs: cannot spawn "ubifs_bgt0_0", error -4"
    
    4. mount -o remount,rw <mountpoint>
        ... now finished instantly (fixup already done).
    
    5. Create file or just unmount the filesystem and we get the oops.
    
    Cc: <stable@vger.kernel.org>
    Fixes: b50b9f408502 ("UBIFS: do not free write-buffers when in R/O mode")
    Signed-off-by: Petr Cvachoucek <cvachoucek@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
um: registers: Rename function names to avoid conflicts and build problems [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Sep 12 23:12:52 2021 -0700

    um: registers: Rename function names to avoid conflicts and build problems
    
    [ Upstream commit 077b7320942b64b0da182aefd83c374462a65535 ]
    
    The function names init_registers() and restore_registers() are used
    in several net/ethernet/ and gpu/drm/ drivers for other purposes (not
    calls to UML functions), so rename them.
    
    This fixes multiple build errors.
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Cc: linux-um@lists.infradead.org
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: ftdi-elan: fix memory leak on device disconnect [+ + +]
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Fri Dec 17 16:34:28 2021 +0800

    usb: ftdi-elan: fix memory leak on device disconnect
    
    [ Upstream commit 1646566b5e0c556f779180a8514e521ac735de1e ]
    
    'ftdi' is alloced when probe device, but not free on device disconnect,
    this cause a memory leak as follows:
    
    unreferenced object 0xffff88800d584000 (size 8400):
      comm "kworker/0:2", pid 3809, jiffies 4295453055 (age 13.784s)
      hex dump (first 32 bytes):
        00 40 58 0d 80 88 ff ff 00 40 58 0d 80 88 ff ff  .@X......@X.....
        00 00 00 00 00 00 00 00 00 00 00 00 ad 4e ad de  .............N..
      backtrace:
        [<000000000d47f947>] kmalloc_order_trace+0x19/0x110 mm/slab_common.c:960
        [<000000008548ac68>] ftdi_elan_probe+0x8c/0x880 drivers/usb/misc/ftdi-elan.c:2647
        [<000000007f73e422>] usb_probe_interface+0x31b/0x800 drivers/usb/core/driver.c:396
        [<00000000fe8d07fc>] really_probe+0x299/0xc30 drivers/base/dd.c:517
        [<0000000005da7d32>] __driver_probe_device+0x357/0x500 drivers/base/dd.c:751
        [<000000003c2c9579>] driver_probe_device+0x4e/0x140 drivers/base/dd.c:781
    
    Fix it by freeing 'ftdi' after nobody use it.
    
    Fixes: a5c66e4b2418 ("USB: ftdi-elan: client driver for ELAN Uxxx adapters")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20211217083428.2441-1-weiyongjun1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: f_fs: Use stream_open() for endpoint files [+ + +]
Author: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
Date:   Fri Nov 12 15:54:40 2021 +0530

    usb: gadget: f_fs: Use stream_open() for endpoint files
    
    [ Upstream commit c76ef96fc00eb398c8fc836b0eb2f82bcc619dc7 ]
    
    Function fs endpoint file operations are synchronized via an interruptible
    mutex wait. However we see threads that do ep file operations concurrently
    are getting blocked for the mutex lock in __fdget_pos(). This is an
    uninterruptible wait and we see hung task warnings and kernel panic
    if hung_task_panic systcl is enabled if host does not send/receive
    the data for long time.
    
    The reason for threads getting blocked in __fdget_pos() is due to
    the file position protection introduced by the commit 9c225f2655e3
    ("vfs: atomic f_pos accesses as per POSIX"). Since function fs
    endpoint files does not have the notion of the file position, switch
    to the stream mode. This will bypass the file position mutex and
    threads will be blocked in interruptible state for the function fs
    mutex.
    
    It should not affects user space as we are only changing the task state
    changes the task state from UNINTERRUPTIBLE to INTERRUPTIBLE while waiting
    for the USB transfers to be finished. However there is a slight change to
    the O_NONBLOCK behavior. Earlier threads that are using O_NONBLOCK are also
    getting blocked inside fdget_pos(). Now they reach to function fs and error
    code is returned. The non blocking behavior is actually honoured now.
    
    Reviewed-by: John Keeping <john@metanate.com>
    Signed-off-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
    Link: https://lore.kernel.org/r/1636712682-1226-1-git-send-email-quic_pkondeti@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 [+ + +]
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Dec 15 20:01:06 2021 +0800

    usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0
    
    [ Upstream commit 00558586382891540c59c9febc671062425a6e47 ]
    
    When a new USB device gets plugged to nested hubs, the affected hub,
    which connects to usb 2-1.4-port2, doesn't report there's any change,
    hence the nested hubs go back to runtime suspend like nothing happened:
    [  281.032951] usb usb2: usb wakeup-resume
    [  281.032959] usb usb2: usb auto-resume
    [  281.032974] hub 2-0:1.0: hub_resume
    [  281.033011] usb usb2-port1: status 0263 change 0000
    [  281.033077] hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0000
    [  281.049797] usb 2-1: usb wakeup-resume
    [  281.069800] usb 2-1: Waited 0ms for CONNECT
    [  281.069810] usb 2-1: finish resume
    [  281.070026] hub 2-1:1.0: hub_resume
    [  281.070250] usb 2-1-port4: status 0203 change 0000
    [  281.070272] usb usb2-port1: resume, status 0
    [  281.070282] hub 2-1:1.0: state 7 ports 4 chg 0010 evt 0000
    [  281.089813] usb 2-1.4: usb wakeup-resume
    [  281.109792] usb 2-1.4: Waited 0ms for CONNECT
    [  281.109801] usb 2-1.4: finish resume
    [  281.109991] hub 2-1.4:1.0: hub_resume
    [  281.110147] usb 2-1.4-port2: status 0263 change 0000
    [  281.110234] usb 2-1-port4: resume, status 0
    [  281.110239] usb 2-1-port4: status 0203, change 0000, 10.0 Gb/s
    [  281.110266] hub 2-1.4:1.0: state 7 ports 4 chg 0000 evt 0000
    [  281.110426] hub 2-1.4:1.0: hub_suspend
    [  281.110565] usb 2-1.4: usb auto-suspend, wakeup 1
    [  281.130998] hub 2-1:1.0: hub_suspend
    [  281.137788] usb 2-1: usb auto-suspend, wakeup 1
    [  281.142935] hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0000
    [  281.177828] usb 2-1: usb wakeup-resume
    [  281.197839] usb 2-1: Waited 0ms for CONNECT
    [  281.197850] usb 2-1: finish resume
    [  281.197984] hub 2-1:1.0: hub_resume
    [  281.198203] usb 2-1-port4: status 0203 change 0000
    [  281.198228] usb usb2-port1: resume, status 0
    [  281.198237] hub 2-1:1.0: state 7 ports 4 chg 0010 evt 0000
    [  281.217835] usb 2-1.4: usb wakeup-resume
    [  281.237834] usb 2-1.4: Waited 0ms for CONNECT
    [  281.237845] usb 2-1.4: finish resume
    [  281.237990] hub 2-1.4:1.0: hub_resume
    [  281.238067] usb 2-1.4-port2: status 0263 change 0000
    [  281.238148] usb 2-1-port4: resume, status 0
    [  281.238152] usb 2-1-port4: status 0203, change 0000, 10.0 Gb/s
    [  281.238166] hub 2-1.4:1.0: state 7 ports 4 chg 0000 evt 0000
    [  281.238385] hub 2-1.4:1.0: hub_suspend
    [  281.238523] usb 2-1.4: usb auto-suspend, wakeup 1
    [  281.258076] hub 2-1:1.0: hub_suspend
    [  281.265744] usb 2-1: usb auto-suspend, wakeup 1
    [  281.285976] hub 2-0:1.0: hub_suspend
    [  281.285988] usb usb2: bus auto-suspend, wakeup 1
    
    USB 3.2 spec, 9.2.5.4 "Changing Function Suspend State" says that "If
    the link is in a non-U0 state, then the device must transition the link
    to U0 prior to sending the remote wake message", but the hub only
    transits the link to U0 after signaling remote wakeup.
    
    So be more forgiving and use a 20ms delay to let the link transit to U0
    for remote wakeup.
    
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Link: https://lore.kernel.org/r/20211215120108.336597-1-kai.heng.feng@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: uhci: add aspeed ast2600 uhci support [+ + +]
Author: Neal Liu <neal_liu@aspeedtech.com>
Date:   Fri Nov 26 18:00:21 2021 +0800

    usb: uhci: add aspeed ast2600 uhci support
    
    [ Upstream commit 554abfe2eadec97d12c71d4a69da1518478f69eb ]
    
    Enable ast2600 uhci quirks.
    
    Signed-off-by: Neal Liu <neal_liu@aspeedtech.com>
    Link: https://lore.kernel.org/r/20211126100021.2331024-1-neal_liu@aspeedtech.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
w1: Misuse of get_user()/put_user() reported by sparse [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Fri Nov 26 18:06:46 2021 +0100

    w1: Misuse of get_user()/put_user() reported by sparse
    
    [ Upstream commit 33dc3e3e99e626ce51f462d883b05856c6c30b1d ]
    
    sparse warnings: (new ones prefixed by >>)
    >> drivers/w1/slaves/w1_ds28e04.c:342:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected char [noderef] __user *_pu_addr @@     got char *buf @@
       drivers/w1/slaves/w1_ds28e04.c:342:13: sparse:     expected char [noderef] __user *_pu_addr
       drivers/w1/slaves/w1_ds28e04.c:342:13: sparse:     got char *buf
    >> drivers/w1/slaves/w1_ds28e04.c:356:13: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected char const [noderef] __user *_gu_addr @@     got char const *buf @@
       drivers/w1/slaves/w1_ds28e04.c:356:13: sparse:     expected char const [noderef] __user *_gu_addr
       drivers/w1/slaves/w1_ds28e04.c:356:13: sparse:     got char const *buf
    
    The buffer buf is a failsafe buffer in kernel space, it's not user
    memory hence doesn't deserve the use of get_user() or put_user().
    
    Access 'buf' content directly.
    
    Link: https://lore.kernel.org/lkml/202111190526.K5vb7NWC-lkp@intel.com/T/
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Link: https://lore.kernel.org/r/d14ed8d71ad4372e6839ae427f91441d3ba0e94d.1637946316.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND [+ + +]
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Thu Oct 28 00:25:29 2021 +0100

    wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND
    
    [ Upstream commit 588b45c88ae130fe373a8c50edaf54735c3f4fe3 ]
    
    Firmware can trigger a missed beacon indication, this is not the same as a
    lost signal.
    
    Flag to Linux the missed beacon and let the WiFi stack decide for itself if
    the link is up or down by sending its own probe to determine this.
    
    We should only be signalling the link is lost when the firmware indicates
    
    Fixes: 8e84c2582169 ("wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware")
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211027232529.657764-1-bryan.odonoghue@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wcn36xx: Release DMA channel descriptor allocations [+ + +]
Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Date:   Fri Nov 5 12:21:51 2021 +0000

    wcn36xx: Release DMA channel descriptor allocations
    
    [ Upstream commit 3652096e5263ad67604b0323f71d133485f410e5 ]
    
    When unloading the driver we are not releasing the DMA descriptors which we
    previously allocated.
    
    Fixes: 8e84c2582169 ("wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware")
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211105122152.1580542-3-bryan.odonoghue@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/gpu: Reserve stolen memory for first integrated Intel GPU [+ + +]
Author: Lucas De Marchi <lucas.demarchi@intel.com>
Date:   Thu Jan 13 16:28:39 2022 -0800

    x86/gpu: Reserve stolen memory for first integrated Intel GPU
    
    commit 9c494ca4d3a535f9ca11ad6af1813983c1c6cbdd upstream.
    
    "Stolen memory" is memory set aside for use by an Intel integrated GPU.
    The intel_graphics_quirks() early quirk reserves this memory when it is
    called for a GPU that appears in the intel_early_ids[] table of integrated
    GPUs.
    
    Previously intel_graphics_quirks() was marked as QFLAG_APPLY_ONCE, so it
    was called only for the first Intel GPU found.  If a discrete GPU happened
    to be enumerated first, intel_graphics_quirks() was called for it but not
    for any integrated GPU found later.  Therefore, stolen memory for such an
    integrated GPU was never reserved.
    
    For example, this problem occurs in this Alderlake-P (integrated) + DG2
    (discrete) topology where the DG2 is found first, but stolen memory is
    associated with the integrated GPU:
    
      - 00:01.0 Bridge
        `- 03:00.0 DG2 discrete GPU
      - 00:02.0 Integrated GPU (with stolen memory)
    
    Remove the QFLAG_APPLY_ONCE flag and call intel_graphics_quirks() for every
    Intel GPU.  Reserve stolen memory for the first GPU that appears in
    intel_early_ids[].
    
    [bhelgaas: commit log, add code comment, squash in
    https://lore.kernel.org/r/20220118190558.2ququ4vdfjuahicm@ldmartin-desk2]
    Link: https://lore.kernel.org/r/20220114002843.2083382-1-lucas.demarchi@intel.com
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/mce/inject: Avoid out-of-bounds write when setting flags [+ + +]
Author: Zhang Zixun <zhang133010@icloud.com>
Date:   Mon Dec 27 22:02:49 2021 +0100

    x86/mce/inject: Avoid out-of-bounds write when setting flags
    
    [ Upstream commit de768416b203ac84e02a757b782a32efb388476f ]
    
    A contrived zero-length write, for example, by using write(2):
    
      ...
      ret = write(fd, str, 0);
      ...
    
    to the "flags" file causes:
    
      BUG: KASAN: stack-out-of-bounds in flags_write
      Write of size 1 at addr ffff888019be7ddf by task writefile/3787
    
      CPU: 4 PID: 3787 Comm: writefile Not tainted 5.16.0-rc7+ #12
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
    
    due to accessing buf one char before its start.
    
    Prevent such out-of-bounds access.
    
      [ bp: Productize into a proper patch. Link below is the next best
        thing because the original mail didn't get archived on lore. ]
    
    Fixes: 0451d14d0561 ("EDAC, mce_amd_inj: Modify flags attribute to use string arguments")
    Signed-off-by: Zhang Zixun <zhang133010@icloud.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/linux-edac/YcnePfF1OOqoQwrX@zn.tnic/
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mce: Mark mce_end() noinstr [+ + +]
Author: Borislav Petkov <bp@suse.de>
Date:   Mon Nov 1 16:43:33 2021 +0100

    x86/mce: Mark mce_end() noinstr
    
    [ Upstream commit b4813539d37fa31fed62cdfab7bd2dd8929c5b2e ]
    
    It is called by the #MC handler which is noinstr.
    
    Fixes
    
      vmlinux.o: warning: objtool: do_machine_check()+0xbd6: call to memset() leaves .noinstr.text section
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20211208111343.8130-9-bp@alien8.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

x86/mce: Mark mce_panic() noinstr [+ + +]
Author: Borislav Petkov <bp@suse.de>
Date:   Mon Nov 1 13:39:35 2021 +0100

    x86/mce: Mark mce_panic() noinstr
    
    [ Upstream commit 3c7ce80a818fa7950be123cac80cd078e5ac1013 ]
    
    And allow instrumentation inside it because it does calls to other
    facilities which will not be tagged noinstr.
    
    Fixes
    
      vmlinux.o: warning: objtool: do_machine_check()+0xc73: call to mce_panic() leaves .noinstr.text section
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20211208111343.8130-8-bp@alien8.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

x86/mce: Mark mce_read_aux() noinstr [+ + +]
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Nov 2 11:14:48 2021 +0100

    x86/mce: Mark mce_read_aux() noinstr
    
    [ Upstream commit db6c996d6ce45dfb44891f0824a65ecec216f47a ]
    
    Fixes
    
      vmlinux.o: warning: objtool: do_machine_check()+0x681: call to mce_read_aux() leaves .noinstr.text section
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20211208111343.8130-10-bp@alien8.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mm: Flush global TLB when switching to trampoline page-table [+ + +]
Author: Joerg Roedel <jroedel@suse.de>
Date:   Thu Dec 2 16:32:25 2021 +0100

    x86/mm: Flush global TLB when switching to trampoline page-table
    
    [ Upstream commit 71d5049b053876afbde6c3273250b76935494ab2 ]
    
    Move the switching code into a function so that it can be re-used and
    add a global TLB flush. This makes sure that usage of memory which is
    not mapped in the trampoline page-table is reliably caught.
    
    Also move the clearing of CR4.PCIDE before the CR3 switch because the
    cr4_clear_bits() function will access data not mapped into the
    trampoline page-table.
    
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20211202153226.22946-4-joro@8bytes.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm: Don't accidentally set RTO_ONLINK in decode_session4() [+ + +]
Author: Guillaume Nault <gnault@redhat.com>
Date:   Mon Jan 10 14:43:06 2022 +0100

    xfrm: Don't accidentally set RTO_ONLINK in decode_session4()
    
    commit 23e7b1bfed61e301853b5e35472820d919498278 upstream.
    
    Similar to commit 94e2238969e8 ("xfrm4: strip ECN bits from tos field"),
    clear the ECN bits from iph->tos when setting ->flowi4_tos.
    This ensures that the last bit of ->flowi4_tos is cleared, so
    ip_route_output_key_hash() isn't going to restrict the scope of the
    route lookup.
    
    Use ~INET_ECN_MASK instead of IPTOS_RT_MASK, because we have no reason
    to clear the high order bits.
    
    Found by code inspection, compile tested only.
    
    Fixes: 4da3089f2b58 ("[IPSEC]: Use TOS when doing tunnel lookups")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfrm: fix a small bug in xfrm_sa_len() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Dec 8 12:20:19 2021 -0800

    xfrm: fix a small bug in xfrm_sa_len()
    
    [ Upstream commit 7770a39d7c63faec6c4f33666d49a8cb664d0482 ]
    
    copy_user_offload() will actually push a struct struct xfrm_user_offload,
    which is different than (struct xfrm_state *)->xso
    (struct xfrm_state_offload)
    
    Fixes: d77e38e612a01 ("xfrm: Add an IPsec hardware offloading API")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: fix policy lookup for ipv6 gre packets [+ + +]
Author: Ghalem Boudour <ghalem.boudour@6wind.com>
Date:   Fri Nov 19 18:20:16 2021 +0100

    xfrm: fix policy lookup for ipv6 gre packets
    
    commit bcf141b2eb551b3477b24997ebc09c65f117a803 upstream.
    
    On egress side, xfrm lookup is called from __gre6_xmit() with the
    fl6_gre_key field not initialized leading to policies selectors check
    failure. Consequently, gre packets are sent without encryption.
    
    On ingress side, INET6_PROTO_NOPOLICY was set, thus packets were not
    checked against xfrm policies. Like for egress side, fl6_gre_key should be
    correctly set, this is now done in decode_session6().
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ghalem Boudour <ghalem.boudour@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfrm: interface with if_id 0 should return error [+ + +]
Author: Antony Antony <antony.antony@secunet.com>
Date:   Sun Dec 12 11:34:30 2021 +0100

    xfrm: interface with if_id 0 should return error
    
    [ Upstream commit 8dce43919566f06e865f7e8949f5c10d8c2493f5 ]
    
    xfrm interface if_id = 0 would cause xfrm policy lookup errors since
    Commit 9f8550e4bd9d.
    
    Now explicitly fail to create an xfrm interface when if_id = 0
    
    With this commit:
     ip link add ipsec0  type xfrm dev lo  if_id 0
     Error: if_id must be non zero.
    
    v1->v2 change:
     - add Fixes: tag
    
    Fixes: 9f8550e4bd9d ("xfrm: fix disable_xfrm sysctl when used on xfrm interfaces")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Reviewed-by: Eyal Birger <eyal.birger@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: state and policy should fail if XFRMA_IF_ID 0 [+ + +]
Author: Antony Antony <antony.antony@secunet.com>
Date:   Sun Dec 12 11:35:00 2021 +0100

    xfrm: state and policy should fail if XFRMA_IF_ID 0
    
    [ Upstream commit 68ac0f3810e76a853b5f7b90601a05c3048b8b54 ]
    
    xfrm ineterface does not allow xfrm if_id = 0
    fail to create or update xfrm state and policy.
    
    With this commit:
     ip xfrm policy add src 192.0.2.1 dst 192.0.2.2 dir out if_id 0
     RTNETLINK answers: Invalid argument
    
     ip xfrm state add src 192.0.2.1 dst 192.0.2.2 proto esp spi 1 \
                reqid 1 mode tunnel aead 'rfc4106(gcm(aes))' \
                0x1111111111111111111111111111111111111111 96 if_id 0
     RTNETLINK answers: Invalid argument
    
    v1->v2 change:
     - add Fixes: tag
    
    Fixes: 9f8550e4bd9d ("xfrm: fix disable_xfrm sysctl when used on xfrm interfaces")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>