commit 6b6446efedb27c2766745a04f9b5d4449f51391d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Nov 5 11:07:06 2020 +0100

    Linux 4.14.204
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20201103203156.372184213@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62602fa480cfaf193048a0c40711148c90253d78
Author: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date:   Fri Oct 16 16:56:30 2020 +0200

    staging: octeon: Drop on uncorrectable alignment or FCS error
    
    commit 49d28ebdf1e30d806410eefc7de0a7a1ca5d747c upstream.
    
    Currently in case of alignment or FCS error if the packet cannot be
    corrected it's still not dropped. Report the error properly and drop the
    packet while making the code around a little bit more readable.
    
    Fixes: 80ff0fd3ab64 ("Staging: Add octeon-ethernet driver files.")
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201016145630.41852-1-alexander.sverdlin@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deea3de20a6a85d557433529dd0160887865112c
Author: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date:   Fri Oct 16 12:18:57 2020 +0200

    staging: octeon: repair "fixed-link" support
    
    commit 179f5dc36b0a1aa31538d7d8823deb65c39847b3 upstream.
    
    The PHYs must be registered once in device probe function, not in device
    open callback because it's only possible to register them once.
    
    Fixes: a25e278020bf ("staging: octeon: support fixed-link phys")
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201016101858.11374-1-alexander.sverdlin@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 895e93c392c26b2b03df20474a7d3433e5789764
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Wed Oct 21 13:21:42 2020 +0100

    staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice
    
    commit 647a6002cb41d358d9ac5de101a8a6dc74748a59 upstream.
    
    The "cb_pcidas" driver supports asynchronous commands on the analog
    output (AO) subdevice for those boards that have an AO FIFO.  The code
    (in `cb_pcidas_ao_check_chanlist()` and `cb_pcidas_ao_cmd()`) to
    validate and set up the command supports output to a single channel or
    to two channels simultaneously (the boards have two AO channels).
    However, the code in `cb_pcidas_auto_attach()` that initializes the
    subdevices neglects to initialize the AO subdevice's `len_chanlist`
    member, leaving it set to 0, but the Comedi core will "correct" it to 1
    if the driver neglected to set it.  This limits commands to use a single
    channel (either channel 0 or 1), but the limit should be two channels.
    Set the AO subdevice's `len_chanlist` member to be the same value as the
    `n_chan` member, which will be 2.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Link: https://lore.kernel.org/r/20201021122142.81628-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35e09c3fa4212cffdb51db795d4b40de324973ed
Author: Marc Zyngier <maz@kernel.org>
Date:   Thu Oct 29 17:24:09 2020 +0000

    KVM: arm64: Fix AArch32 handling of DBGD{CCINT,SCRext} and DBGVCR
    
    commit 4a1c2c7f63c52ccb11770b5ae25920a6b79d3548 upstream.
    
    The DBGD{CCINT,SCRext} and DBGVCR register entries in the cp14 array
    are missing their target register, resulting in all accesses being
    targetted at the guard sysreg (indexed by __INVALID_SYSREG__).
    
    Point the emulation code at the actual register entries.
    
    Fixes: bdfb4b389c8d ("arm64: KVM: add trap handlers for AArch32 debug registers")
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20201029172409.2768336-1-maz@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc1ff223b5f39b7c5f87bb15418f87d639125279
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Oct 22 21:41:00 2020 +0300

    device property: Don't clear secondary pointer for shared primary firmware node
    
    commit 99aed9227073fb34ce2880cbc7063e04185a65e1 upstream.
    
    It appears that firmware nodes can be shared between devices. In such case
    when a (child) device is about to be deleted, its firmware node may be shared
    and ACPI_COMPANION_SET(..., NULL) call for it breaks the secondary link
    of the shared primary firmware node.
    
    In order to prevent that, check, if the device has a parent and parent's
    firmware node is shared with its child, and avoid crashing the link.
    
    Fixes: c15e1bdda436 ("device property: Fix the secondary firmware node handling in set_primary_fwnode()")
    Reported-by: Ferry Toth <fntoth@gmail.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Tested-by: Ferry Toth <fntoth@gmail.com>
    Cc: 5.9+ <stable@vger.kernel.org> # 5.9+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2fcb5720e21c105388b1ca9f136cd8efd72b2e4
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Oct 22 21:40:59 2020 +0300

    device property: Keep secondary firmware node secondary by type
    
    commit d5dcce0c414fcbfe4c2037b66ac69ea5f9b3f75c upstream.
    
    Behind primary and secondary we understand the type of the nodes
    which might define their ordering. However, if primary node gone,
    we can't maintain the ordering by definition of the linked list.
    Thus, by ordering secondary node becomes first in the list.
    But in this case the meaning of it is still secondary (or auxiliary).
    The type of the node is maintained by the secondary pointer in it:
    
            secondary pointer               Meaning
            NULL or valid                   primary node
            ERR_PTR(-ENODEV)                secondary node
    
    So, if by some reason we do the following sequence of calls
    
            set_primary_fwnode(dev, NULL);
            set_primary_fwnode(dev, primary);
    
    we should preserve secondary node.
    
    This concept is supported by the description of set_primary_fwnode()
    along with implementation of set_secondary_fwnode(). Hence, fix
    the commit c15e1bdda436 to follow this as well.
    
    Fixes: c15e1bdda436 ("device property: Fix the secondary firmware node handling in set_primary_fwnode()")
    Cc: Ferry Toth <fntoth@gmail.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Tested-by: Ferry Toth <fntoth@gmail.com>
    Cc: 5.9+ <stable@vger.kernel.org> # 5.9+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24700c0a207e0dc1c17cf821a6f228c9fddcc015
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Tue Aug 4 21:26:49 2020 +0200

    ARM: s3c24xx: fix missing system reset
    
    commit f6d7cde84f6c5551586c8b9b68d70f8e6dc9a000 upstream.
    
    Commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart code")
    removed usage of the watchdog reset platform code in favor of the
    Samsung SoC watchdog driver.  However the latter was not selected thus
    S3C24xx platforms lost reset abilities.
    
    Cc: <stable@vger.kernel.org>
    Fixes: f6361c6b3880 ("ARM: S3C24XX: remove separate restart code")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d19db24d7efb1990f5250fa9b83787b3e79227f
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Thu Sep 10 17:41:49 2020 +0200

    ARM: samsung: fix PM debug build with DEBUG_LL but !MMU
    
    commit 7be0d19c751b02db778ca95e3274d5ea7f31891c upstream.
    
    Selecting CONFIG_SAMSUNG_PM_DEBUG (depending on CONFIG_DEBUG_LL) but
    without CONFIG_MMU leads to build errors:
    
      arch/arm/plat-samsung/pm-debug.c: In function ‘s3c_pm_uart_base’:
      arch/arm/plat-samsung/pm-debug.c:57:2: error:
        implicit declaration of function ‘debug_ll_addr’ [-Werror=implicit-function-declaration]
    
    Fixes: 99b2fc2b8b40 ("ARM: SAMSUNG: Use debug_ll_addr() to get UART base address")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200910154150.3318-1-krzk@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d63dd17b4fd0235350613078e6f93664b54e15b9
Author: Frank Wunderlich <frank-w@public-files.de>
Date:   Mon Sep 7 09:05:17 2020 +0200

    arm: dts: mt7623: add missing pause for switchport
    
    commit 36f0a5fc5284838c544218666c63ee8cfa46a9c3 upstream.
    
    port6 of mt7530 switch (= cpu port 0) on bananapi-r2 misses pause option
    which causes rx drops on running iperf.
    
    Fixes: f4ff257cd160 ("arm: dts: mt7623: add support for Bananapi R2 (BPI-R2) board")
    Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200907070517.51715-1-linux@fw-web.de
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d26626433878c26d4e3575e4096e855c1ee4b51d
Author: Helge Deller <deller@gmx.de>
Date:   Mon Oct 19 16:57:50 2020 +0200

    hil/parisc: Disable HIL driver when it gets stuck
    
    commit 879bc2d27904354b98ca295b6168718e045c4aa2 upstream.
    
    When starting a HP machine with HIL driver but without an HIL keyboard
    or HIL mouse attached, it may happen that data written to the HIL loop
    gets stuck (e.g. because the transaction queue is full).  Usually one
    will then have to reboot the machine because all you see is and endless
    output of:
     Transaction add failed: transaction already queued?
    
    In the higher layers hp_sdc_enqueue_transaction() is called to queued up
    a HIL packet. This function returns an error code, and this patch adds
    the necessary checks for this return code and disables the HIL driver if
    further packets can't be sent.
    
    Tested on a HP 730 and a HP 715/64 machine.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 693d923af550737aa8db51faf34ac7fe8bc28ba0
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Oct 26 09:12:10 2020 +0000

    cachefiles: Handle readpage error correctly
    
    commit 9480b4e75b7108ee68ecf5bc6b4bd68e8031c521 upstream.
    
    If ->readpage returns an error, it has already unlocked the page.
    
    Fixes: 5e929b33c393 ("CacheFiles: Handle truncate unlocking the page we're reading")
    Cc: stable@vger.kernel.org
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69c65357db9ef172e89f337287c5093a4fd6e9cb
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Fri Oct 9 15:08:31 2020 +0800

    arm64: berlin: Select DW_APB_TIMER_OF
    
    commit b0fc70ce1f028e14a37c186d9f7a55e51439b83a upstream.
    
    Berlin SoCs always contain some DW APB timers which can be used as an
    always-on broadcast timer.
    
    Link: https://lore.kernel.org/r/20201009150536.214181fb@xhacker.debian
    Cc: <stable@vger.kernel.org> # v3.14+
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0182d680ead968cea5673ed5dcac0e4505a75f29
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Oct 26 13:15:23 2020 -0700

    tty: make FONTX ioctl use the tty pointer they were actually passed
    
    commit 90bfdeef83f1d6c696039b6a917190dcbbad3220 upstream.
    
    Some of the font tty ioctl's always used the current foreground VC for
    their operations.  Don't do that then.
    
    This fixes a data race on fg_console.
    
    Side note: both Michael Ellerman and Jiri Slaby point out that all these
    ioctls are deprecated, and should probably have been removed long ago,
    and everything seems to be using the KDFONTOP ioctl instead.
    
    In fact, Michael points out that it looks like busybox's loadfont
    program seems to have switched over to using KDFONTOP exactly _because_
    of this bug (ahem.. 12 years ago ;-).
    
    Reported-by: Minh Yuan <yuanmingbuaa@gmail.com>
    Acked-by: Michael Ellerman <mpe@ellerman.id.au>
    Acked-by: Jiri Slaby <jirislaby@kernel.org>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f8788b5e9edd11e0d66d4f8557d7a0aae4bfe73
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Mon Sep 14 17:45:48 2020 +0200

    rtc: rx8010: don't modify the global rtc ops
    
    commit d3b14296da69adb7825022f3224ac6137eb30abf upstream.
    
    The way the driver is implemented is buggy for the (admittedly unlikely)
    use case where there are two RTCs with one having an interrupt configured
    and the second not. This is caused by the fact that we use a global
    rtc_class_ops struct which we modify depending on whether the irq number
    is present or not.
    
    Fix it by using two const ops structs with and without alarm operations.
    While at it: not being able to request a configured interrupt is an error
    so don't ignore it and bail out of probe().
    
    Fixes: ed13d89b08e3 ("rtc: Add Epson RX8010SJ RTC driver")
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200914154601.32245-2-brgl@bgdev.pl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 352dd1b0364eeb424cf12e9f42852c9a67881a08
Author: Dave Airlie <airlied@redhat.com>
Date:   Tue Oct 20 08:22:53 2020 +1000

    drm/ttm: fix eviction valuable range check.
    
    commit fea456d82c19d201c21313864105876deabe148b upstream.
    
    This was adding size to start, but pfn and start are in pages,
    so it should be using num_pages.
    
    Not sure this fixes anything in the real world, just noticed it
    during refactoring.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20201019222257.1684769-2-airlied@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed153317028169264c7359d21c128ecf37e3d7d8
Author: Luo Meng <luomeng12@huawei.com>
Date:   Tue Oct 20 09:36:31 2020 +0800

    ext4: fix invalid inode checksum
    
    commit 1322181170bb01bce3c228b82ae3d5c6b793164f upstream.
    
    During the stability test, there are some errors:
      ext4_lookup:1590: inode #6967: comm fsstress: iget: checksum invalid.
    
    If the inode->i_iblocks too big and doesn't set huge file flag, checksum
    will not be recalculated when update the inode information to it's buffer.
    If other inode marks the buffer dirty, then the inconsistent inode will
    be flushed to disk.
    
    Fix this problem by checking i_blocks in advance.
    
    Cc: stable@kernel.org
    Signed-off-by: Luo Meng <luomeng12@huawei.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Link: https://lore.kernel.org/r/20201020013631.3796673-1-luomeng12@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc6ccd104140bbbf7f146c1bb337da1e2051790e
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Sat Aug 29 10:54:02 2020 +0800

    ext4: fix error handling code in add_new_gdb
    
    commit c9e87161cc621cbdcfc472fa0b2d81c63780c8f5 upstream.
    
    When ext4_journal_get_write_access() fails, we should
    terminate the execution flow and release n_group_desc,
    iloc.bh, dind and gdb_bh.
    
    Cc: stable@kernel.org
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Link: https://lore.kernel.org/r/20200829025403.3139-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f602cb84822818b3c3fce7b655000287b9dcf8c5
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Sep 22 09:24:56 2020 -0700

    ext4: fix leaking sysfs kobject after failed mount
    
    commit cb8d53d2c97369029cc638c9274ac7be0a316c75 upstream.
    
    ext4_unregister_sysfs() only deletes the kobject.  The reference to it
    needs to be put separately, like ext4_put_super() does.
    
    This addresses the syzbot report
    "memory leak in kobject_set_name_vargs (3)"
    (https://syzkaller.appspot.com/bug?extid=9f864abad79fae7c17e1).
    
    Reported-by: syzbot+9f864abad79fae7c17e1@syzkaller.appspotmail.com
    Fixes: 72ba74508b28 ("ext4: release sysfs kobject when failing to enable quotas on mount")
    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Link: https://lore.kernel.org/r/20200922162456.93657-1-ebiggers@kernel.org
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3fe75ab1a0b400d8753993ce74c52f10c48d371
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Thu Oct 8 22:42:56 2020 +0200

    vringh: fix __vringh_iov() when riov and wiov are different
    
    commit 5745bcfbbf89b158416075374254d3c013488f21 upstream.
    
    If riov and wiov are both defined and they point to different
    objects, only riov is initialized. If the wiov is not initialized
    by the caller, the function fails returning -EINVAL and printing
    "Readable desc 0x... after writable" error message.
    
    This issue happens when descriptors have both readable and writable
    buffers (eg. virtio-blk devices has virtio_blk_outhdr in the readable
    buffer and status as last byte of writable buffer) and we call
    __vringh_iov() to get both type of buffers in two different iovecs.
    
    Let's replace the 'else if' clause with 'if' to initialize both
    riov and wiov if they are not NULL.
    
    As checkpatch pointed out, we also avoid crashing the kernel
    when riov and wiov are both NULL, replacing BUG() with WARN_ON()
    and returning -EINVAL.
    
    Fixes: f87d0fbb5798 ("vringh: host-side implementation of virtio rings.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Link: https://lore.kernel.org/r/20201008204256.162292-1-sgarzare@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e1b6c7f83c11129363ab3778881d0bddc32f608
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Mon Oct 19 22:22:42 2020 +0800

    ring-buffer: Return 0 on success from ring_buffer_resize()
    
    commit 0a1754b2a97efa644aa6e84d1db5b17c42251483 upstream.
    
    We don't need to check the new buffer size, and the return value
    had confused resize_buffer_duplicate_size().
    ...
            ret = ring_buffer_resize(trace_buf->buffer,
                    per_cpu_ptr(size_buf->data,cpu_id)->entries, cpu_id);
            if (ret == 0)
                    per_cpu_ptr(trace_buf->data, cpu_id)->entries =
                            per_cpu_ptr(size_buf->data, cpu_id)->entries;
    ...
    
    Link: https://lkml.kernel.org/r/20201019142242.11560-1-hqjagain@gmail.com
    
    Cc: stable@vger.kernel.org
    Fixes: d60da506cbeb3 ("tracing: Add a resize function to make one buffer equivalent to another buffer")
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a72e2cad18406f89c72ff16978de3a06ad960f07
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Sun Oct 4 19:04:22 2020 +0100

    9P: Cast to loff_t before multiplying
    
    commit f5f7ab168b9a60e12a4b8f2bb6fcc91321dc23c1 upstream.
    
    On 32-bit systems, this multiplication will overflow for files larger
    than 4GB.
    
    Link: http://lkml.kernel.org/r/20201004180428.14494-2-willy@infradead.org
    Cc: stable@vger.kernel.org
    Fixes: fb89b45cdfdc ("9P: introduction of a new cache=mmap model.")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbe99f18b1aba9e9a3ff5dad81af1833a936df5f
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Wed Oct 7 20:06:48 2020 +0200

    libceph: clear con->out_msg on Policy::stateful_server faults
    
    commit 28e1581c3b4ea5f98530064a103c6217bedeea73 upstream.
    
    con->out_msg must be cleared on Policy::stateful_server
    (!CEPH_MSG_CONNECT_LOSSY) faults.  Not doing so botches the
    reconnection attempt, because after writing the banner the
    messenger moves on to writing the data section of that message
    (either from where it got interrupted by the connection reset or
    from the beginning) instead of writing struct ceph_msg_connect.
    This results in a bizarre error message because the server
    sends CEPH_MSGR_TAG_BADPROTOVER but we think we wrote struct
    ceph_msg_connect:
    
      libceph: mds0 (1)172.21.15.45:6828 socket error on write
      ceph: mds0 reconnect start
      libceph: mds0 (1)172.21.15.45:6829 socket closed (con state OPEN)
      libceph: mds0 (1)172.21.15.45:6829 protocol version mismatch, my 32 != server's 32
      libceph: mds0 (1)172.21.15.45:6829 protocol version mismatch
    
    AFAICT this bug goes back to the dawn of the kernel client.
    The reason it survived for so long is that only MDS sessions
    are stateful and only two MDS messages have a data section:
    CEPH_MSG_CLIENT_RECONNECT (always, but reconnecting is rare)
    and CEPH_MSG_CLIENT_REQUEST (only when xattrs are involved).
    The connection has to get reset precisely when such message
    is being sent -- in this case it was the former.
    
    Cc: stable@vger.kernel.org
    Link: https://tracker.ceph.com/issues/47723
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 829b4ae20855c52011e1288b5ca6e5c7f19272b0
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Sun Oct 4 19:04:24 2020 +0100

    ceph: promote to unsigned long long before shifting
    
    commit c403c3a2fbe24d4ed33e10cabad048583ebd4edf upstream.
    
    On 32-bit systems, this shift will overflow for files larger than 4GB.
    
    Cc: stable@vger.kernel.org
    Fixes: 61f68816211e ("ceph: check caps in filemap_fault and page_mkwrite")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e61ea3a7e85e14919d4893554b18d0c5263130ad
Author: Madhav Chauhan <madhav.chauhan@amd.com>
Date:   Fri Oct 16 18:03:07 2020 +0530

    drm/amdgpu: don't map BO in reserved region
    
    commit c4aa8dff6091cc9536aeb255e544b0b4ba29faf4 upstream.
    
    2MB area is reserved at top inside VM.
    
    Suggested-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 203537216c251028930d17ef5fbfa64c7d8b91c3
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sat Oct 17 16:13:37 2020 -0700

    ia64: fix build error with !COREDUMP
    
    commit 7404840d87557c4092bf0272bce5e0354c774bf9 upstream.
    
    Fix linkage error when CONFIG_BINFMT_ELF is selected but CONFIG_COREDUMP
    is not:
    
        ia64-linux-ld: arch/ia64/kernel/elfcore.o: in function `elf_core_write_extra_phdrs':
        elfcore.c:(.text+0x172): undefined reference to `dump_emit'
        ia64-linux-ld: arch/ia64/kernel/elfcore.o: in function `elf_core_write_extra_data':
        elfcore.c:(.text+0x2b2): undefined reference to `dump_emit'
    
    Fixes: 1fcccbac89f5 ("elf coredump: replace ELF_CORE_EXTRA_* macros by functions")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200819064146.12529-1-krzk@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06aa51f617dab64dc5f1f94d70c1364c8afe5d9e
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Mon Jun 1 17:12:31 2020 +0800

    ubi: check kthread_should_stop() after the setting of task state
    
    commit d005f8c6588efcfbe88099b6edafc6f58c84a9c1 upstream.
    
    A detach hung is possible when a race occurs between the detach process
    and the ubi background thread. The following sequences outline the race:
    
      ubi thread: if (list_empty(&ubi->works)...
    
      ubi detach: set_bit(KTHREAD_SHOULD_STOP, &kthread->flags)
                  => by kthread_stop()
                  wake_up_process()
                  => ubi thread is still running, so 0 is returned
    
      ubi thread: set_current_state(TASK_INTERRUPTIBLE)
                  schedule()
                  => ubi thread will never be scheduled again
    
      ubi detach: wait_for_completion()
                  => hung task!
    
    To fix that, we need to check kthread_should_stop() after we set the
    task state, so the ubi thread will either see the stop bit and exit or
    the task state is reset to runnable such that it isn't scheduled out
    indefinitely.
    
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Cc: <stable@vger.kernel.org>
    Fixes: 801c135ce73d5df1ca ("UBI: Unsorted Block Images")
    Reported-by: syzbot+853639d0cb16c31c7a14@syzkaller.appspotmail.com
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9b29e6e034a16d48b48f3f5fb26c0910c333dcb
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Mon Sep 28 22:11:35 2020 +0200

    perf python scripting: Fix printable strings in python3 scripts
    
    commit 6fcd5ddc3b1467b3586972ef785d0d926ae4cdf4 upstream.
    
    Hagen reported broken strings in python3 tracepoint scripts:
    
      make PYTHON=python3
      perf record -e sched:sched_switch -a -- sleep 5
      perf script --gen-script py
      perf script -s ./perf-script.py
    
      [..]
      sched__sched_switch      7 563231.759525792        0 swapper   prev_comm=bytearray(b'swapper/7\x00\x00\x00\x00\x00\x00\x00'), prev_pid=0, prev_prio=120, prev_state=, next_comm=bytearray(b'mutex-thread-co\x00'),
    
    The problem is in the is_printable_array function that does not take the
    zero byte into account and claim such string as not printable, so the
    code will create byte array instead of string.
    
    Committer testing:
    
    After this fix:
    
    sched__sched_switch 3 484522.497072626  1158680 kworker/3:0-eve  prev_comm=kworker/3:0, prev_pid=1158680, prev_prio=120, prev_state=I, next_comm=swapper/3, next_pid=0, next_prio=120
    Sample: {addr=0, cpu=3, datasrc=84410401, datasrc_decode=N/A|SNP N/A|TLB N/A|LCK N/A, ip=18446744071841817196, period=1, phys_addr=0, pid=1158680, tid=1158680, time=484522497072626, transaction=0, values=[(0, 0)], weight=0}
    
    sched__sched_switch 4 484522.497085610  1225814 perf             prev_comm=perf, prev_pid=1225814, prev_prio=120, prev_state=, next_comm=migration/4, next_pid=30, next_prio=0
    Sample: {addr=0, cpu=4, datasrc=84410401, datasrc_decode=N/A|SNP N/A|TLB N/A|LCK N/A, ip=18446744071841817196, period=1, phys_addr=0, pid=1225814, tid=1225814, time=484522497085610, transaction=0, values=[(0, 0)], weight=0}
    
    Fixes: 249de6e07458 ("perf script python: Fix string vs byte array resolving")
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: Hagen Paul Pfeifer <hagen@jauu.net>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200928201135.3633850-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 059da7d18e45fead7d5841c28309a76d1b7ee989
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Mon Jun 1 17:10:37 2020 +0800

    ubifs: dent: Fix some potential memory leaks while iterating entries
    
    commit 58f6e78a65f1fcbf732f60a7478ccc99873ff3ba upstream.
    
    Fix some potential memory leaks in error handling branches while
    iterating dent entries. For example, function dbg_check_dir()
    forgets to free pdent if it exists.
    
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Cc: <stable@vger.kernel.org>
    Fixes: 1e51764a3c2ac05a2 ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9d61ebc60ed27c91b10c974b48da2701ae41a0c
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Oct 1 18:58:56 2020 -0400

    NFSD: Add missing NFSv2 .pc_func methods
    
    commit 6b3dccd48de8a4c650b01499a0b09d1e2279649e upstream.
    
    There's no protection in nfsd_dispatch() against a NULL .pc_func
    helpers. A malicious NFS client can trigger a crash by invoking the
    unused/unsupported NFSv2 ROOT or WRITECACHE procedures.
    
    The current NFSD dispatcher does not support returning a void reply
    to a non-NULL procedure, so the reply to both of these is wrong, for
    the moment.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83210b23ee9f4e6a41ef366a8d5d268c15f2b11d
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Fri Oct 16 09:25:45 2020 -0400

    NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag
    
    commit 8c39076c276be0b31982e44654e2c2357473258a upstream.
    
    RFC 7862 introduced a new flag that either client or server is
    allowed to set: EXCHGID4_FLAG_SUPP_FENCE_OPS.
    
    Client needs to update its bitmask to allow for this flag value.
    
    v2: changed minor version argument to unsigned int
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2a486bbaf8bc8af43d252b048f8c3b40f94a618
Author: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Date:   Tue Oct 6 13:02:18 2020 +0530

    powerpc/powernv/elog: Fix race while processing OPAL error log event.
    
    commit aea948bb80b478ddc2448f7359d574387521a52d upstream.
    
    Every error log reported by OPAL is exported to userspace through a
    sysfs interface and notified using kobject_uevent(). The userspace
    daemon (opal_errd) then reads the error log and acknowledges the error
    log is saved safely to disk. Once acknowledged the kernel removes the
    respective sysfs file entry causing respective resources to be
    released including kobject.
    
    However it's possible the userspace daemon may already be scanning
    elog entries when a new sysfs elog entry is created by the kernel.
    User daemon may read this new entry and ack it even before kernel can
    notify userspace about it through kobject_uevent() call. If that
    happens then we have a potential race between
    elog_ack_store->kobject_put() and kobject_uevent which can lead to
    use-after-free of a kernfs object resulting in a kernel crash. eg:
    
      BUG: Unable to handle kernel data access on read at 0x6b6b6b6b6b6b6bfb
      Faulting instruction address: 0xc0000000008ff2a0
      Oops: Kernel access of bad area, sig: 11 [#1]
      LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA PowerNV
      CPU: 27 PID: 805 Comm: irq/29-opal-elo Not tainted 5.9.0-rc2-gcc-8.2.0-00214-g6f56a67bcbb5-dirty #363
      ...
      NIP kobject_uevent_env+0xa0/0x910
      LR  elog_event+0x1f4/0x2d0
      Call Trace:
        0x5deadbeef0000122 (unreliable)
        elog_event+0x1f4/0x2d0
        irq_thread_fn+0x4c/0xc0
        irq_thread+0x1c0/0x2b0
        kthread+0x1c4/0x1d0
        ret_from_kernel_thread+0x5c/0x6c
    
    This patch fixes this race by protecting the sysfs file
    creation/notification by holding a reference count on kobject until we
    safely send kobject_uevent().
    
    The function create_elog_obj() returns the elog object which if used
    by caller function will end up in use-after-free problem again.
    However, the return value of create_elog_obj() function isn't being
    used today and there is no need as well. Hence change it to return
    void to make this fix complete.
    
    Fixes: 774fea1a38c6 ("powerpc/powernv: Read OPAL error log and export it through sysfs")
    Cc: stable@vger.kernel.org # v3.15+
    Reported-by: Oliver O'Halloran <oohall@gmail.com>
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Reviewed-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
    [mpe: Rework the logic to use a single return, reword comments, add oops]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20201006122051.190176-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e0e2cdddab329df9f3f75418f34cdfb13e1402
Author: Joel Stanley <joel@jms.id.au>
Date:   Wed Sep 2 09:30:11 2020 +0930

    powerpc: Warn about use of smt_snooze_delay
    
    commit a02f6d42357acf6e5de6ffc728e6e77faf3ad217 upstream.
    
    It's not done anything for a long time. Save the percpu variable, and
    emit a warning to remind users to not expect it to do anything.
    
    This uses pr_warn_once instead of pr_warn_ratelimit as testing
    'ppc64_cpu --smt=off' on a 24 core / 4 SMT system showed the warning
    to be noisy, as the online/offline loop is slow.
    
    Fixes: 3fa8cad82b94 ("powerpc/pseries/cpuidle: smt-snooze-delay cleanup.")
    Cc: stable@vger.kernel.org # v3.14
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Acked-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200902000012.3440389-1-joel@jms.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 818783bf8da5c20eb75a6bcf749eb97003ea9983
Author: Andrew Donnellan <ajd@linux.ibm.com>
Date:   Thu Aug 20 14:45:12 2020 +1000

    powerpc/rtas: Restrict RTAS requests from userspace
    
    commit bd59380c5ba4147dcbaad3e582b55ccfd120b764 upstream.
    
    A number of userspace utilities depend on making calls to RTAS to retrieve
    information and update various things.
    
    The existing API through which we expose RTAS to userspace exposes more
    RTAS functionality than we actually need, through the sys_rtas syscall,
    which allows root (or anyone with CAP_SYS_ADMIN) to make any RTAS call they
    want with arbitrary arguments.
    
    Many RTAS calls take the address of a buffer as an argument, and it's up to
    the caller to specify the physical address of the buffer as an argument. We
    allocate a buffer (the "RMO buffer") in the Real Memory Area that RTAS can
    access, and then expose the physical address and size of this buffer in
    /proc/powerpc/rtas/rmo_buffer. Userspace is expected to read this address,
    poke at the buffer using /dev/mem, and pass an address in the RMO buffer to
    the RTAS call.
    
    However, there's nothing stopping the caller from specifying whatever
    address they want in the RTAS call, and it's easy to construct a series of
    RTAS calls that can overwrite arbitrary bytes (even without /dev/mem
    access).
    
    Additionally, there are some RTAS calls that do potentially dangerous
    things and for which there are no legitimate userspace use cases.
    
    In the past, this would not have been a particularly big deal as it was
    assumed that root could modify all system state freely, but with Secure
    Boot and lockdown we need to care about this.
    
    We can't fundamentally change the ABI at this point, however we can address
    this by implementing a filter that checks RTAS calls against a list
    of permitted calls and forces the caller to use addresses within the RMO
    buffer.
    
    The list is based off the list of calls that are used by the librtas
    userspace library, and has been tested with a number of existing userspace
    RTAS utilities. For compatibility with any applications we are not aware of
    that require other calls, the filter can be turned off at build time.
    
    Cc: stable@vger.kernel.org
    Reported-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200820044512.7543-1-ajd@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bc43e64c89e8a7dbd855438141186ee559834b8
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Tue Sep 15 08:53:50 2020 +0200

    s390/stp: add locking to sysfs functions
    
    commit b3bd02495cb339124f13135d51940cf48d83e5cb upstream.
    
    The sysfs function might race with stp_work_fn. To prevent that,
    add the required locking. Another issue is that the sysfs functions
    are checking the stp_online flag, but this flag just holds the user
    setting whether STP is enabled. Add a flag to clock_sync_flag whether
    stp_info holds valid data and use that instead.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Reviewed-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a969548a8cc482006fad5ffed6ca4faf7700ddb
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Wed Jul 22 16:50:41 2020 +0100

    iio:gyro:itg3200: Fix timestamp alignment and prevent data leak.
    
    commit 10ab7cfd5522f0041028556dac864a003e158556 upstream.
    
    One of a class of bugs pointed out by Lars in a recent review.
    iio_push_to_buffers_with_timestamp assumes the buffer used is aligned
    to the size of the timestamp (8 bytes).  This is not guaranteed in
    this driver which uses a 16 byte array of smaller elements on the stack.
    This is fixed by using an explicit c structure. As there are no
    holes in the structure, there is no possiblity of data leakage
    in this case.
    
    The explicit alignment of ts is not strictly necessary but potentially
    makes the code slightly less fragile.  It also removes the possibility
    of this being cut and paste into another driver where the alignment
    isn't already true.
    
    Fixes: 36e0371e7764 ("iio:itg3200: Use iio_push_to_buffers_with_timestamp()")
    Reported-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200722155103.979802-6-jic23@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2a0f7d6a8c654eab9791dc9cda721dec336ff2d
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Wed Jul 22 16:51:01 2020 +0100

    iio:adc:ti-adc12138 Fix alignment issue with timestamp
    
    commit 293e809b2e8e608b65a949101aaf7c0bd1224247 upstream.
    
    One of a class of bugs pointed out by Lars in a recent review.
    iio_push_to_buffers_with_timestamp assumes the buffer used is aligned
    to the size of the timestamp (8 bytes).  This is not guaranteed in
    this driver which uses an array of smaller elements on the stack.
    
    We move to a suitable structure in the iio_priv() data with alignment
    explicitly requested.  This data is allocated with kzalloc so no
    data can leak apart from previous readings. Note that previously
    no leak at all could occur, but previous readings should never
    be a problem.
    
    In this case the timestamp location depends on what other channels
    are enabled. As such we can't use a structure without misleading
    by suggesting only one possible timestamp location.
    
    Fixes: 50a6edb1b6e0 ("iio: adc: add ADC12130/ADC12132/ADC12138 ADC driver")
    Reported-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Akinobu Mita <akinobu.mita@gmail.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200722155103.979802-26-jic23@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c120060cedb5c5397d6360f1a817201635442a8
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Wed Jul 22 16:51:00 2020 +0100

    iio:adc:ti-adc0832 Fix alignment issue with timestamp
    
    commit 39e91f3be4cba51c1560bcda3a343ed1f64dc916 upstream.
    
    One of a class of bugs pointed out by Lars in a recent review.
    iio_push_to_buffers_with_timestamp assumes the buffer used is aligned
    to the size of the timestamp (8 bytes).  This is not guaranteed in
    this driver which uses an array of smaller elements on the stack.
    
    We fix this issues by moving to a suitable structure in the iio_priv()
    data with alignment explicitly requested.  This data is allocated
    with kzalloc so no data can leak apart from previous readings.
    Note that previously no data could leak 'including' previous readings
    but I don't think it is an issue to potentially leak them like
    this now does.
    
    In this case the postioning of the timestamp is depends on what
    other channels are enabled. As such we cannot use a structure to
    make the alignment explicit as it would be missleading by suggesting
    only one possible location for the timestamp.
    
    Fixes: 815bbc87462a ("iio: ti-adc0832: add triggered buffer support")
    Reported-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Akinobu Mita <akinobu.mita@gmail.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200722155103.979802-25-jic23@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f1e6f25ba337855c8fc80e965e2d94603b0a5f7
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Wed Jul 22 16:50:44 2020 +0100

    iio:light:si1145: Fix timestamp alignment and prevent data leak.
    
    commit 0456ecf34d466261970e0ff92b2b9c78a4908637 upstream.
    
    One of a class of bugs pointed out by Lars in a recent review.
    iio_push_to_buffers_with_timestamp assumes the buffer used is aligned
    to the size of the timestamp (8 bytes).  This is not guaranteed in
    this driver which uses a 24 byte array of smaller elements on the stack.
    As Lars also noted this anti pattern can involve a leak of data to
    userspace and that indeed can happen here.  We close both issues by
    moving to a suitable array in the iio_priv() data with alignment
    explicitly requested.  This data is allocated with kzalloc so no
    data can leak appart from previous readings.
    
    Depending on the enabled channels, the  location of the timestamp
    can be at various aligned offsets through the buffer.  As such we
    any use of a structure to enforce this alignment would incorrectly
    suggest a single location for the timestamp.  Comments adjusted to
    express this clearly in the code.
    
    Fixes: ac45e57f1590 ("iio: light: Add driver for Silabs si1132, si1141/2/3 and si1145/6/7 ambient light, uv index and proximity sensors")
    Reported-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200722155103.979802-9-jic23@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bd05331beb2609e0f7b34b08e432732bf29f9af
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Sun Oct 4 16:03:07 2020 +0200

    dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status
    
    commit baf6fd97b16ea8f981b8a8b04039596f32fc2972 upstream.
    
    The jz4780_dma_tx_status() function would check if a channel's cookie
    state was set to 'completed', and if not, it would enter the critical
    section. However, in that time frame, the jz4780_dma_chan_irq() function
    was able to set the cookie to 'completed', and clear the jzchan->vchan
    pointer, which was deferenced in the critical section of the first
    function.
    
    Fix this race by checking the channel's cookie state after entering the
    critical function and not before.
    
    Fixes: d894fc6046fe ("dmaengine: jz4780: add driver for the Ingenic JZ4780 DMA controller")
    Cc: stable@vger.kernel.org # v4.0
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Reported-by: Artur Rojek <contact@artur-rojek.eu>
    Tested-by: Artur Rojek <contact@artur-rojek.eu>
    Link: https://lore.kernel.org/r/20201004140307.885556-1-paul@crapouillou.net
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f4c966f2ad5f580fd5b1e2dcb19ba1c06a9254f
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Mon Oct 19 10:55:17 2020 +0200

    vt: keyboard, extend func_buf_lock to readers
    
    commit 82e61c3909db51d91b9d3e2071557b6435018b80 upstream.
    
    Both read-side users of func_table/func_buf need locking. Without that,
    one can easily confuse the code by repeatedly setting altering strings
    like:
    while (1)
            for (a = 0; a < 2; a++) {
                    struct kbsentry kbs = {};
                    strcpy((char *)kbs.kb_string, a ? ".\n" : "88888\n");
                    ioctl(fd, KDSKBSENT, &kbs);
            }
    
    When that program runs, one can get unexpected output by holding F1
    (note the unxpected period on the last line):
    .
    88888
    .8888
    
    So protect all accesses to 'func_table' (and func_buf) by preexisting
    'func_buf_lock'.
    
    It is easy in 'k_fn' handler as 'puts_queue' is expected not to sleep.
    On the other hand, KDGKBSENT needs a local (atomic) copy of the string
    because copy_to_user can sleep. Use already allocated, but unused
    'kbs->kb_string' for that purpose.
    
    Note that the program above needs at least CAP_SYS_TTY_CONFIG.
    
    This depends on the previous patch and on the func_buf_lock lock added
    in commit 46ca3f735f34 (tty/vt: fix write/write race in ioctl(KDSKBSENT)
    handler) in 5.2.
    
    Likely fixes CVE-2020-25656.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Minh Yuan <yuanmingbuaa@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20201019085517.10176-2-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46edbcd1503d346f908e43f4df05e35aa673062b
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Mon Oct 19 10:55:16 2020 +0200

    vt: keyboard, simplify vt_kdgkbsent
    
    commit 6ca03f90527e499dd5e32d6522909e2ad390896b upstream.
    
    Use 'strlen' of the string, add one for NUL terminator and simply do
    'copy_to_user' instead of the explicit 'for' loop. This makes the
    KDGKBSENT case more compact.
    
    The only thing we need to take care about is NULL 'func_table[i]'. Use
    an empty string in that case.
    
    The original check for overflow could never trigger as the func_buf
    strings are always shorter or equal to 'struct kbsentry's.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20201019085517.10176-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e066477433b1a6451abda0307c13a06a23cdaa2
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Oct 19 11:15:23 2020 +0100

    drm/i915: Force VT'd workarounds when running as a guest OS
    
    commit 8195400f7ea95399f721ad21f4d663a62c65036f upstream.
    
    If i915.ko is being used as a passthrough device, it does not know if
    the host is using intel_iommu. Mixing the iommu and gfx causes a few
    issues (such as scanout overfetch) which we need to workaround inside
    the driver, so if we detect we are running under a hypervisor, also
    assume the device access is being virtualised.
    
    Reported-by: Stefan Fritsch <sf@sfritsch.de>
    Suggested-by: Stefan Fritsch <sf@sfritsch.de>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Stefan Fritsch <sf@sfritsch.de>
    Cc: stable@vger.kernel.org
    Tested-by: Stefan Fritsch <sf@sfritsch.de>
    Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201019101523.4145-1-chris@chris-wilson.co.uk
    (cherry picked from commit f566fdcd6cc49a9d5b5d782f56e3e7cb243f01b8)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72b3bcab2003ddf755f275fa2cfbc3de479d3db3
Author: Ran Wang <ran.wang_1@nxp.com>
Date:   Sat Oct 10 14:03:08 2020 +0800

    usb: host: fsl-mph-dr-of: check return of dma_set_mask()
    
    commit 3cd54a618834430a26a648d880dd83d740f2ae30 upstream.
    
    fsl_usb2_device_register() should stop init if dma_set_mask() return
    error.
    
    Fixes: cae058610465 ("drivers/usb/host: fsl: Set DMA_MASK of usb platform device")
    Reviewed-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
    Link: https://lore.kernel.org/r/20201010060308.33693-1-ran.wang_1@nxp.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9801a43b6d4ac0d9f2e878ecf7c0804b4ca26f16
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Mon Oct 19 19:07:02 2020 +0200

    usb: cdc-acm: fix cooldown mechanism
    
    commit 38203b8385bf6283537162bde7d499f830964711 upstream.
    
    Commit a4e7279cd1d1 ("cdc-acm: introduce a cool down") is causing
    regression if there is some USB error, such as -EPROTO.
    
    This has been reported on some samples of the Odroid-N2 using the Combee II
    Zibgee USB dongle.
    
    > struct acm *acm = container_of(work, struct acm, work)
    
    is incorrect in case of a delayed work and causes warnings, usually from
    the workqueue:
    
    > WARNING: CPU: 0 PID: 0 at kernel/workqueue.c:1474 __queue_work+0x480/0x528.
    
    When this happens, USB eventually stops working completely after a while.
    Also the ACM_ERROR_DELAY bit is never set, so the cooldown mechanism
    previously introduced cannot be triggered and acm_submit_read_urb() is
    never called.
    
    This changes makes the cdc-acm driver use a single delayed work, fixing the
    pointer arithmetic in acm_softint() and set the ACM_ERROR_DELAY when the
    cooldown mechanism appear to be needed.
    
    Fixes: a4e7279cd1d1 ("cdc-acm: introduce a cool down")
    Cc: Oliver Neukum <oneukum@suse.com>
    Reported-by: Pascal Vizeli <pascal.vizeli@nabucasa.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20201019170702.150534-1-jbrunet@baylibre.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d92f1821ad6de4ab754ab7bd30cde747fef07a4d
Author: Li Jun <jun.li@nxp.com>
Date:   Tue Jul 28 20:42:40 2020 +0800

    usb: dwc3: core: don't trigger runtime pm when remove driver
    
    commit 266d0493900ac5d6a21cdbe6b1624ed2da94d47a upstream.
    
    No need to trigger runtime pm in driver removal, otherwise if user
    disable auto suspend via sys file, runtime suspend may be entered,
    which will call dwc3_core_exit() again and there will be clock disable
    not balance warning:
    
    [ 2026.820154] xhci-hcd xhci-hcd.0.auto: remove, state 4
    [ 2026.825268] usb usb2: USB disconnect, device number 1
    [ 2026.831017] xhci-hcd xhci-hcd.0.auto: USB bus 2 deregistered
    [ 2026.836806] xhci-hcd xhci-hcd.0.auto: remove, state 4
    [ 2026.842029] usb usb1: USB disconnect, device number 1
    [ 2026.848029] xhci-hcd xhci-hcd.0.auto: USB bus 1 deregistered
    [ 2026.865889] ------------[ cut here ]------------
    [ 2026.870506] usb2_ctrl_root_clk already disabled
    [ 2026.875082] WARNING: CPU: 0 PID: 731 at drivers/clk/clk.c:958
    clk_core_disable+0xa0/0xa8
    [ 2026.883170] Modules linked in: dwc3(-) phy_fsl_imx8mq_usb [last
    unloaded: dwc3]
    [ 2026.890488] CPU: 0 PID: 731 Comm: rmmod Not tainted
    5.8.0-rc7-00280-g9d08cca-dirty #245
    [ 2026.898489] Hardware name: NXP i.MX8MQ EVK (DT)
    [ 2026.903020] pstate: 20000085 (nzCv daIf -PAN -UAO BTYPE=--)
    [ 2026.908594] pc : clk_core_disable+0xa0/0xa8
    [ 2026.912777] lr : clk_core_disable+0xa0/0xa8
    [ 2026.916958] sp : ffff8000121b39a0
    [ 2026.920271] x29: ffff8000121b39a0 x28: ffff0000b11f3700
    [ 2026.925583] x27: 0000000000000000 x26: ffff0000b539c700
    [ 2026.930895] x25: 000001d7e44e1232 x24: ffff0000b76fa800
    [ 2026.936208] x23: ffff0000b76fa6f8 x22: ffff800008d01040
    [ 2026.941520] x21: ffff0000b539ce00 x20: ffff0000b7105000
    [ 2026.946832] x19: ffff0000b7105000 x18: 0000000000000010
    [ 2026.952144] x17: 0000000000000001 x16: 0000000000000000
    [ 2026.957456] x15: ffff0000b11f3b70 x14: ffffffffffffffff
    [ 2026.962768] x13: ffff8000921b36f7 x12: ffff8000121b36ff
    [ 2026.968080] x11: ffff8000119e1000 x10: ffff800011bf26d0
    [ 2026.973392] x9 : 0000000000000000 x8 : ffff800011bf3000
    [ 2026.978704] x7 : ffff800010695d68 x6 : 0000000000000252
    [ 2026.984016] x5 : ffff0000bb9881f0 x4 : 0000000000000000
    [ 2026.989327] x3 : 0000000000000027 x2 : 0000000000000023
    [ 2026.994639] x1 : ac2fa471aa7cab00 x0 : 0000000000000000
    [ 2026.999951] Call trace:
    [ 2027.002401]  clk_core_disable+0xa0/0xa8
    [ 2027.006238]  clk_core_disable_lock+0x20/0x38
    [ 2027.010508]  clk_disable+0x1c/0x28
    [ 2027.013911]  clk_bulk_disable+0x34/0x50
    [ 2027.017758]  dwc3_core_exit+0xec/0x110 [dwc3]
    [ 2027.022122]  dwc3_suspend_common+0x84/0x188 [dwc3]
    [ 2027.026919]  dwc3_runtime_suspend+0x74/0x9c [dwc3]
    [ 2027.031712]  pm_generic_runtime_suspend+0x28/0x40
    [ 2027.036419]  genpd_runtime_suspend+0xa0/0x258
    [ 2027.040777]  __rpm_callback+0x88/0x140
    [ 2027.044526]  rpm_callback+0x20/0x80
    [ 2027.048015]  rpm_suspend+0xd0/0x418
    [ 2027.051503]  __pm_runtime_suspend+0x58/0xa0
    [ 2027.055693]  dwc3_runtime_idle+0x7c/0x90 [dwc3]
    [ 2027.060224]  __rpm_callback+0x88/0x140
    [ 2027.063973]  rpm_idle+0x78/0x150
    [ 2027.067201]  __pm_runtime_idle+0x58/0xa0
    [ 2027.071130]  dwc3_remove+0x64/0xc0 [dwc3]
    [ 2027.075140]  platform_drv_remove+0x28/0x48
    [ 2027.079239]  device_release_driver_internal+0xf4/0x1c0
    [ 2027.084377]  driver_detach+0x4c/0xd8
    [ 2027.087954]  bus_remove_driver+0x54/0xa8
    [ 2027.091877]  driver_unregister+0x2c/0x58
    [ 2027.095799]  platform_driver_unregister+0x10/0x18
    [ 2027.100509]  dwc3_driver_exit+0x14/0x1408 [dwc3]
    [ 2027.105129]  __arm64_sys_delete_module+0x178/0x218
    [ 2027.109922]  el0_svc_common.constprop.0+0x68/0x160
    [ 2027.114714]  do_el0_svc+0x20/0x80
    [ 2027.118031]  el0_sync_handler+0x88/0x190
    [ 2027.121953]  el0_sync+0x140/0x180
    [ 2027.125267] ---[ end trace 027f4f8189958f1f ]---
    [ 2027.129976] ------------[ cut here ]------------
    
    Fixes: fc8bb91bc83e ("usb: dwc3: implement runtime PM")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00275153aa523d4ac28010155927e54c83661134
Author: Li Jun <jun.li@nxp.com>
Date:   Tue Jul 28 20:42:41 2020 +0800

    usb: dwc3: core: add phy cleanup for probe error handling
    
    commit 03c1fd622f72c7624c81b64fdba4a567ae5ee9cb upstream.
    
    Add the phy cleanup if dwc3 mode init fail, which is the missing part of
    de-init for dwc3 core init.
    
    Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 388c2fdce04c07bc83283647867ce7334807d9d7
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Sep 24 01:21:43 2020 -0700

    usb: dwc3: ep0: Fix ZLP for OUT ep0 requests
    
    commit 66706077dc89c66a4777a4c6298273816afb848c upstream.
    
    The current ZLP handling for ep0 requests is only for control IN
    requests. For OUT direction, DWC3 needs to check and setup for MPS
    alignment.
    
    Usually, control OUT requests can indicate its transfer size via the
    wLength field of the control message. So usb_request->zero is usually
    not needed for OUT direction. To handle ZLP OUT for control endpoint,
    make sure the TRB is MPS size.
    
    Cc: stable@vger.kernel.org
    Fixes: c7fcdeb2627c ("usb: dwc3: ep0: simplify EP0 state machine")
    Fixes: d6e5a549cc4d ("usb: dwc3: simplify ZLP handling")
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e8b5abab9da1b3183b88eacb39067381b7abdbf
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Oct 12 11:55:23 2020 +0100

    btrfs: fix use-after-free on readahead extent after failure to create it
    
    commit 83bc1560e02e25c6439341352024ebe8488f4fbd upstream.
    
    If we fail to find suitable zones for a new readahead extent, we end up
    leaving a stale pointer in the global readahead extents radix tree
    (fs_info->reada_tree), which can trigger the following trace later on:
    
      [13367.696354] BUG: kernel NULL pointer dereference, address: 00000000000000b0
      [13367.696802] #PF: supervisor read access in kernel mode
      [13367.697249] #PF: error_code(0x0000) - not-present page
      [13367.697721] PGD 0 P4D 0
      [13367.698171] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC PTI
      [13367.698632] CPU: 6 PID: 851214 Comm: btrfs Tainted: G        W         5.9.0-rc6-btrfs-next-69 #1
      [13367.699100] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      [13367.700069] RIP: 0010:__lock_acquire+0x20a/0x3970
      [13367.700562] Code: ff 1f 0f b7 c0 48 0f (...)
      [13367.701609] RSP: 0018:ffffb14448f57790 EFLAGS: 00010046
      [13367.702140] RAX: 0000000000000000 RBX: 29b935140c15e8cf RCX: 0000000000000000
      [13367.702698] RDX: 0000000000000002 RSI: ffffffffb3d66bd0 RDI: 0000000000000046
      [13367.703240] RBP: ffff8a52ba8ac040 R08: 00000c2866ad9288 R09: 0000000000000001
      [13367.703783] R10: 0000000000000001 R11: 00000000b66d9b53 R12: ffff8a52ba8ac9b0
      [13367.704330] R13: 0000000000000000 R14: ffff8a532b6333e8 R15: 0000000000000000
      [13367.704880] FS:  00007fe1df6b5700(0000) GS:ffff8a5376600000(0000) knlGS:0000000000000000
      [13367.705438] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [13367.705995] CR2: 00000000000000b0 CR3: 000000022cca8004 CR4: 00000000003706e0
      [13367.706565] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [13367.707127] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [13367.707686] Call Trace:
      [13367.708246]  ? ___slab_alloc+0x395/0x740
      [13367.708820]  ? reada_add_block+0xae/0xee0 [btrfs]
      [13367.709383]  lock_acquire+0xb1/0x480
      [13367.709955]  ? reada_add_block+0xe0/0xee0 [btrfs]
      [13367.710537]  ? reada_add_block+0xae/0xee0 [btrfs]
      [13367.711097]  ? rcu_read_lock_sched_held+0x5d/0x90
      [13367.711659]  ? kmem_cache_alloc_trace+0x8d2/0x990
      [13367.712221]  ? lock_acquired+0x33b/0x470
      [13367.712784]  _raw_spin_lock+0x34/0x80
      [13367.713356]  ? reada_add_block+0xe0/0xee0 [btrfs]
      [13367.713966]  reada_add_block+0xe0/0xee0 [btrfs]
      [13367.714529]  ? btrfs_root_node+0x15/0x1f0 [btrfs]
      [13367.715077]  btrfs_reada_add+0x117/0x170 [btrfs]
      [13367.715620]  scrub_stripe+0x21e/0x10d0 [btrfs]
      [13367.716141]  ? kvm_sched_clock_read+0x5/0x10
      [13367.716657]  ? __lock_acquire+0x41e/0x3970
      [13367.717184]  ? scrub_chunk+0x60/0x140 [btrfs]
      [13367.717697]  ? find_held_lock+0x32/0x90
      [13367.718254]  ? scrub_chunk+0x60/0x140 [btrfs]
      [13367.718773]  ? lock_acquired+0x33b/0x470
      [13367.719278]  ? scrub_chunk+0xcd/0x140 [btrfs]
      [13367.719786]  scrub_chunk+0xcd/0x140 [btrfs]
      [13367.720291]  scrub_enumerate_chunks+0x270/0x5c0 [btrfs]
      [13367.720787]  ? finish_wait+0x90/0x90
      [13367.721281]  btrfs_scrub_dev+0x1ee/0x620 [btrfs]
      [13367.721762]  ? rcu_read_lock_any_held+0x8e/0xb0
      [13367.722235]  ? preempt_count_add+0x49/0xa0
      [13367.722710]  ? __sb_start_write+0x19b/0x290
      [13367.723192]  btrfs_ioctl+0x7f5/0x36f0 [btrfs]
      [13367.723660]  ? __fget_files+0x101/0x1d0
      [13367.724118]  ? find_held_lock+0x32/0x90
      [13367.724559]  ? __fget_files+0x101/0x1d0
      [13367.724982]  ? __x64_sys_ioctl+0x83/0xb0
      [13367.725399]  __x64_sys_ioctl+0x83/0xb0
      [13367.725802]  do_syscall_64+0x33/0x80
      [13367.726188]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [13367.726574] RIP: 0033:0x7fe1df7add87
      [13367.726948] Code: 00 00 00 48 8b 05 09 91 (...)
      [13367.727763] RSP: 002b:00007fe1df6b4d48 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      [13367.728179] RAX: ffffffffffffffda RBX: 000055ce1fb596a0 RCX: 00007fe1df7add87
      [13367.728604] RDX: 000055ce1fb596a0 RSI: 00000000c400941b RDI: 0000000000000003
      [13367.729021] RBP: 0000000000000000 R08: 00007fe1df6b5700 R09: 0000000000000000
      [13367.729431] R10: 00007fe1df6b5700 R11: 0000000000000246 R12: 00007ffd922b07de
      [13367.729842] R13: 00007ffd922b07df R14: 00007fe1df6b4e40 R15: 0000000000802000
      [13367.730275] Modules linked in: btrfs blake2b_generic xor (...)
      [13367.732638] CR2: 00000000000000b0
      [13367.733166] ---[ end trace d298b6805556acd9 ]---
    
    What happens is the following:
    
    1) At reada_find_extent() we don't find any existing readahead extent for
       the metadata extent starting at logical address X;
    
    2) So we proceed to create a new one. We then call btrfs_map_block() to get
       information about which stripes contain extent X;
    
    3) After that we iterate over the stripes and create only one zone for the
       readahead extent - only one because reada_find_zone() returned NULL for
       all iterations except for one, either because a memory allocation failed
       or it couldn't find the block group of the extent (it may have just been
       deleted);
    
    4) We then add the new readahead extent to the readahead extents radix
       tree at fs_info->reada_tree;
    
    5) Then we iterate over each zone of the new readahead extent, and find
       that the device used for that zone no longer exists, because it was
       removed or it was the source device of a device replace operation.
       Since this left 'have_zone' set to 0, after finishing the loop we jump
       to the 'error' label, call kfree() on the new readahead extent and
       return without removing it from the radix tree at fs_info->reada_tree;
    
    6) Any future call to reada_find_extent() for the logical address X will
       find the stale pointer in the readahead extents radix tree, increment
       its reference counter, which can trigger the use-after-free right
       away or return it to the caller reada_add_block() that results in the
       use-after-free of the example trace above.
    
    So fix this by making sure we delete the readahead extent from the radix
    tree if we fail to setup zones for it (when 'have_zone = 0').
    
    Fixes: 319450211842ba ("btrfs: reada: bypass adding extent when all zone failed")
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-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>

commit bd54c7d9af67323461ba886d34db78a247f2a2aa
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Tue Sep 29 08:53:54 2020 -0400

    btrfs: cleanup cow block on error
    
    commit 572c83acdcdafeb04e70aa46be1fa539310be20c upstream.
    
    In fstest btrfs/064 a transaction abort in __btrfs_cow_block could lead
    to a system lockup. It gets stuck trying to write back inodes, and the
    write back thread was trying to lock an extent buffer:
    
      $ cat /proc/2143497/stack
      [<0>] __btrfs_tree_lock+0x108/0x250
      [<0>] lock_extent_buffer_for_io+0x35e/0x3a0
      [<0>] btree_write_cache_pages+0x15a/0x3b0
      [<0>] do_writepages+0x28/0xb0
      [<0>] __writeback_single_inode+0x54/0x5c0
      [<0>] writeback_sb_inodes+0x1e8/0x510
      [<0>] wb_writeback+0xcc/0x440
      [<0>] wb_workfn+0xd7/0x650
      [<0>] process_one_work+0x236/0x560
      [<0>] worker_thread+0x55/0x3c0
      [<0>] kthread+0x13a/0x150
      [<0>] ret_from_fork+0x1f/0x30
    
    This is because we got an error while COWing a block, specifically here
    
            if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state)) {
                    ret = btrfs_reloc_cow_block(trans, root, buf, cow);
                    if (ret) {
                            btrfs_abort_transaction(trans, ret);
                            return ret;
                    }
            }
    
      [16402.241552] BTRFS: Transaction aborted (error -2)
      [16402.242362] WARNING: CPU: 1 PID: 2563188 at fs/btrfs/ctree.c:1074 __btrfs_cow_block+0x376/0x540
      [16402.249469] CPU: 1 PID: 2563188 Comm: fsstress Not tainted 5.9.0-rc6+ #8
      [16402.249936] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      [16402.250525] RIP: 0010:__btrfs_cow_block+0x376/0x540
      [16402.252417] RSP: 0018:ffff9cca40e578b0 EFLAGS: 00010282
      [16402.252787] RAX: 0000000000000025 RBX: 0000000000000002 RCX: ffff9132bbd19388
      [16402.253278] RDX: 00000000ffffffd8 RSI: 0000000000000027 RDI: ffff9132bbd19380
      [16402.254063] RBP: ffff9132b41a49c0 R08: 0000000000000000 R09: 0000000000000000
      [16402.254887] R10: 0000000000000000 R11: ffff91324758b080 R12: ffff91326ef17ce0
      [16402.255694] R13: ffff91325fc0f000 R14: ffff91326ef176b0 R15: ffff9132815e2000
      [16402.256321] FS:  00007f542c6d7b80(0000) GS:ffff9132bbd00000(0000) knlGS:0000000000000000
      [16402.256973] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [16402.257374] CR2: 00007f127b83f250 CR3: 0000000133480002 CR4: 0000000000370ee0
      [16402.257867] Call Trace:
      [16402.258072]  btrfs_cow_block+0x109/0x230
      [16402.258356]  btrfs_search_slot+0x530/0x9d0
      [16402.258655]  btrfs_lookup_file_extent+0x37/0x40
      [16402.259155]  __btrfs_drop_extents+0x13c/0xd60
      [16402.259628]  ? btrfs_block_rsv_migrate+0x4f/0xb0
      [16402.259949]  btrfs_replace_file_extents+0x190/0x820
      [16402.260873]  btrfs_clone+0x9ae/0xc00
      [16402.261139]  btrfs_extent_same_range+0x66/0x90
      [16402.261771]  btrfs_remap_file_range+0x353/0x3b1
      [16402.262333]  vfs_dedupe_file_range_one.part.0+0xd5/0x140
      [16402.262821]  vfs_dedupe_file_range+0x189/0x220
      [16402.263150]  do_vfs_ioctl+0x552/0x700
      [16402.263662]  __x64_sys_ioctl+0x62/0xb0
      [16402.264023]  do_syscall_64+0x33/0x40
      [16402.264364]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [16402.264862] RIP: 0033:0x7f542c7d15cb
      [16402.266901] RSP: 002b:00007ffd35944ea8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      [16402.267627] RAX: ffffffffffffffda RBX: 00000000009d1968 RCX: 00007f542c7d15cb
      [16402.268298] RDX: 00000000009d2490 RSI: 00000000c0189436 RDI: 0000000000000003
      [16402.268958] RBP: 00000000009d2520 R08: 0000000000000036 R09: 00000000009d2e64
      [16402.269726] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000002
      [16402.270659] R13: 000000000001f000 R14: 00000000009d1970 R15: 00000000009d2e80
      [16402.271498] irq event stamp: 0
      [16402.271846] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
      [16402.272497] hardirqs last disabled at (0): [<ffffffff910dbf59>] copy_process+0x6b9/0x1ba0
      [16402.273343] softirqs last  enabled at (0): [<ffffffff910dbf59>] copy_process+0x6b9/0x1ba0
      [16402.273905] softirqs last disabled at (0): [<0000000000000000>] 0x0
      [16402.274338] ---[ end trace 737874a5a41a8236 ]---
      [16402.274669] BTRFS: error (device dm-9) in __btrfs_cow_block:1074: errno=-2 No such entry
      [16402.276179] BTRFS info (device dm-9): forced readonly
      [16402.277046] BTRFS: error (device dm-9) in btrfs_replace_file_extents:2723: errno=-2 No such entry
      [16402.278744] BTRFS: error (device dm-9) in __btrfs_cow_block:1074: errno=-2 No such entry
      [16402.279968] BTRFS: error (device dm-9) in __btrfs_cow_block:1074: errno=-2 No such entry
      [16402.280582] BTRFS info (device dm-9): balance: ended with status: -30
    
    The problem here is that as soon as we allocate the new block it is
    locked and marked dirty in the btree inode.  This means that we could
    attempt to writeback this block and need to lock the extent buffer.
    However we're not unlocking it here and thus we deadlock.
    
    Fix this by unlocking the cow block if we have any errors inside of
    __btrfs_cow_block, and also free it so we do not leak it.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69b8f1a8e00026f207e195a327b89cd9547bf9cc
Author: Denis Efremov <efremov@linux.com>
Date:   Mon Sep 21 20:03:35 2020 +0300

    btrfs: use kvzalloc() to allocate clone_roots in btrfs_ioctl_send()
    
    commit 8eb2fd00153a3a96a19c62ac9c6d48c2efebe5e8 upstream.
    
    btrfs_ioctl_send() used open-coded kvzalloc implementation earlier.
    The code was accidentally replaced with kzalloc() call [1]. Restore
    the original code by using kvzalloc() to allocate sctx->clone_roots.
    
    [1] https://patchwork.kernel.org/patch/9757891/#20529627
    
    Fixes: 818e010bf9d0 ("btrfs: replace opencoded kvzalloc with the helper")
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Denis Efremov <efremov@linux.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3350eb1fe8eb06d72baa326a0327ddcda94ae9a2
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Sep 21 14:13:30 2020 +0100

    btrfs: send, recompute reference path after orphanization of a directory
    
    commit 9c2b4e0347067396ceb3ae929d6888c81d610259 upstream.
    
    During an incremental send, when an inode has multiple new references we
    might end up emitting rename operations for orphanizations that have a
    source path that is no longer valid due to a previous orphanization of
    some directory inode. This causes the receiver to fail since it tries
    to rename a path that does not exists.
    
    Example reproducer:
    
      $ cat reproducer.sh
      #!/bin/bash
    
      mkfs.btrfs -f /dev/sdi >/dev/null
      mount /dev/sdi /mnt/sdi
    
      touch /mnt/sdi/f1
      touch /mnt/sdi/f2
      mkdir /mnt/sdi/d1
      mkdir /mnt/sdi/d1/d2
    
      # Filesystem looks like:
      #
      # .                           (ino 256)
      # |----- f1                   (ino 257)
      # |----- f2                   (ino 258)
      # |----- d1/                  (ino 259)
      #        |----- d2/           (ino 260)
    
      btrfs subvolume snapshot -r /mnt/sdi /mnt/sdi/snap1
      btrfs send -f /tmp/snap1.send /mnt/sdi/snap1
    
      # Now do a series of changes such that:
      #
      # *) inode 258 has one new hardlink and the previous name changed
      #
      # *) both names conflict with the old names of two other inodes:
      #
      #    1) the new name "d1" conflicts with the old name of inode 259,
      #       under directory inode 256 (root)
      #
      #    2) the new name "d2" conflicts with the old name of inode 260
      #       under directory inode 259
      #
      # *) inodes 259 and 260 now have the old names of inode 258
      #
      # *) inode 257 is now located under inode 260 - an inode with a number
      #    smaller than the inode (258) for which we created a second hard
      #    link and swapped its names with inodes 259 and 260
      #
      ln /mnt/sdi/f2 /mnt/sdi/d1/f2_link
      mv /mnt/sdi/f1 /mnt/sdi/d1/d2/f1
    
      # Swap d1 and f2.
      mv /mnt/sdi/d1 /mnt/sdi/tmp
      mv /mnt/sdi/f2 /mnt/sdi/d1
      mv /mnt/sdi/tmp /mnt/sdi/f2
    
      # Swap d2 and f2_link
      mv /mnt/sdi/f2/d2 /mnt/sdi/tmp
      mv /mnt/sdi/f2/f2_link /mnt/sdi/f2/d2
      mv /mnt/sdi/tmp /mnt/sdi/f2/f2_link
    
      # Filesystem now looks like:
      #
      # .                                (ino 256)
      # |----- d1                        (ino 258)
      # |----- f2/                       (ino 259)
      #        |----- f2_link/           (ino 260)
      #        |       |----- f1         (ino 257)
      #        |
      #        |----- d2                 (ino 258)
    
      btrfs subvolume snapshot -r /mnt/sdi /mnt/sdi/snap2
      btrfs send -f /tmp/snap2.send -p /mnt/sdi/snap1 /mnt/sdi/snap2
    
      mkfs.btrfs -f /dev/sdj >/dev/null
      mount /dev/sdj /mnt/sdj
    
      btrfs receive -f /tmp/snap1.send /mnt/sdj
      btrfs receive -f /tmp/snap2.send /mnt/sdj
    
      umount /mnt/sdi
      umount /mnt/sdj
    
    When executed the receive of the incremental stream fails:
    
      $ ./reproducer.sh
      Create a readonly snapshot of '/mnt/sdi' in '/mnt/sdi/snap1'
      At subvol /mnt/sdi/snap1
      Create a readonly snapshot of '/mnt/sdi' in '/mnt/sdi/snap2'
      At subvol /mnt/sdi/snap2
      At subvol snap1
      At snapshot snap2
      ERROR: rename d1/d2 -> o260-6-0 failed: No such file or directory
    
    This happens because:
    
    1) When processing inode 257 we end up computing the name for inode 259
       because it is an ancestor in the send snapshot, and at that point it
       still has its old name, "d1", from the parent snapshot because inode
       259 was not yet processed. We then cache that name, which is valid
       until we start processing inode 259 (or set the progress to 260 after
       processing its references);
    
    2) Later we start processing inode 258 and collecting all its new
       references into the list sctx->new_refs. The first reference in the
       list happens to be the reference for name "d1" while the reference for
       name "d2" is next (the last element of the list).
       We compute the full path "d1/d2" for this second reference and store
       it in the reference (its ->full_path member). The path used for the
       new parent directory was "d1" and not "f2" because inode 259, the
       new parent, was not yet processed;
    
    3) When we start processing the new references at process_recorded_refs()
       we start with the first reference in the list, for the new name "d1".
       Because there is a conflicting inode that was not yet processed, which
       is directory inode 259, we orphanize it, renaming it from "d1" to
       "o259-6-0";
    
    4) Then we start processing the new reference for name "d2", and we
       realize it conflicts with the reference of inode 260 in the parent
       snapshot. So we issue an orphanization operation for inode 260 by
       emitting a rename operation with a destination path of "o260-6-0"
       and a source path of "d1/d2" - this source path is the value we
       stored in the reference earlier at step 2), corresponding to the
       ->full_path member of the reference, however that path is no longer
       valid due to the orphanization of the directory inode 259 in step 3).
       This makes the receiver fail since the path does not exists, it should
       have been "o259-6-0/d2".
    
    Fix this by recomputing the full path of a reference before emitting an
    orphanization if we previously orphanized any directory, since that
    directory could be a parent in the new path. This is a rare scenario so
    keeping it simple and not checking if that previously orphanized directory
    is in fact an ancestor of the inode we are trying to orphanize.
    
    A test case for fstests follows soon.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42e60fc15a76396f44c6422091c96bc2129cb73e
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Sep 14 15:27:50 2020 +0100

    btrfs: reschedule if necessary when logging directory items
    
    commit bb56f02f26fe23798edb1b2175707419b28c752a upstream.
    
    Logging directories with many entries can take a significant amount of
    time, and in some cases monopolize a cpu/core for a long time if the
    logging task doesn't happen to block often enough.
    
    Johannes and Lu Fengqi reported test case generic/041 triggering a soft
    lockup when the kernel has CONFIG_SOFTLOCKUP_DETECTOR=y. For this test
    case we log an inode with 3002 hard links, and because the test removed
    one hard link before fsyncing the file, the inode logging causes the
    parent directory do be logged as well, which has 6004 directory items to
    log (3002 BTRFS_DIR_ITEM_KEY items plus 3002 BTRFS_DIR_INDEX_KEY items),
    so it can take a significant amount of time and trigger the soft lockup.
    
    So just make tree-log.c:log_dir_items() reschedule when necessary,
    releasing the current search path before doing so and then resume from
    where it was before the reschedule.
    
    The stack trace produced when the soft lockup happens is the following:
    
    [10480.277653] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [xfs_io:28172]
    [10480.279418] Modules linked in: dm_thin_pool dm_persistent_data (...)
    [10480.284915] irq event stamp: 29646366
    [10480.285987] hardirqs last  enabled at (29646365): [<ffffffff85249b66>] __slab_alloc.constprop.0+0x56/0x60
    [10480.288482] hardirqs last disabled at (29646366): [<ffffffff8579b00d>] irqentry_enter+0x1d/0x50
    [10480.290856] softirqs last  enabled at (4612): [<ffffffff85a00323>] __do_softirq+0x323/0x56c
    [10480.293615] softirqs last disabled at (4483): [<ffffffff85800dbf>] asm_call_on_stack+0xf/0x20
    [10480.296428] CPU: 2 PID: 28172 Comm: xfs_io Not tainted 5.9.0-rc4-default+ #1248
    [10480.298948] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba527-rebuilt.opensuse.org 04/01/2014
    [10480.302455] RIP: 0010:__slab_alloc.constprop.0+0x19/0x60
    [10480.304151] Code: 86 e8 31 75 21 00 66 66 2e 0f 1f 84 00 00 00 (...)
    [10480.309558] RSP: 0018:ffffadbe09397a58 EFLAGS: 00000282
    [10480.311179] RAX: ffff8a495ab92840 RBX: 0000000000000282 RCX: 0000000000000006
    [10480.313242] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff85249b66
    [10480.315260] RBP: ffff8a497d04b740 R08: 0000000000000001 R09: 0000000000000001
    [10480.317229] R10: ffff8a497d044800 R11: ffff8a495ab93c40 R12: 0000000000000000
    [10480.319169] R13: 0000000000000000 R14: 0000000000000c40 R15: ffffffffc01daf70
    [10480.321104] FS:  00007fa1dc5c0e40(0000) GS:ffff8a497da00000(0000) knlGS:0000000000000000
    [10480.323559] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [10480.325235] CR2: 00007fa1dc5befb8 CR3: 0000000004f8a006 CR4: 0000000000170ea0
    [10480.327259] Call Trace:
    [10480.328286]  ? overwrite_item+0x1f0/0x5a0 [btrfs]
    [10480.329784]  __kmalloc+0x831/0xa20
    [10480.331009]  ? btrfs_get_32+0xb0/0x1d0 [btrfs]
    [10480.332464]  overwrite_item+0x1f0/0x5a0 [btrfs]
    [10480.333948]  log_dir_items+0x2ee/0x570 [btrfs]
    [10480.335413]  log_directory_changes+0x82/0xd0 [btrfs]
    [10480.336926]  btrfs_log_inode+0xc9b/0xda0 [btrfs]
    [10480.338374]  ? init_once+0x20/0x20 [btrfs]
    [10480.339711]  btrfs_log_inode_parent+0x8d3/0xd10 [btrfs]
    [10480.341257]  ? dget_parent+0x97/0x2e0
    [10480.342480]  btrfs_log_dentry_safe+0x3a/0x50 [btrfs]
    [10480.343977]  btrfs_sync_file+0x24b/0x5e0 [btrfs]
    [10480.345381]  do_fsync+0x38/0x70
    [10480.346483]  __x64_sys_fsync+0x10/0x20
    [10480.347703]  do_syscall_64+0x2d/0x70
    [10480.348891]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [10480.350444] RIP: 0033:0x7fa1dc80970b
    [10480.351642] Code: 0f 05 48 3d 00 f0 ff ff 77 45 c3 0f 1f 40 00 48 (...)
    [10480.356952] RSP: 002b:00007fffb3d081d0 EFLAGS: 00000293 ORIG_RAX: 000000000000004a
    [10480.359458] RAX: ffffffffffffffda RBX: 0000562d93d45e40 RCX: 00007fa1dc80970b
    [10480.361426] RDX: 0000562d93d44ab0 RSI: 0000562d93d45e60 RDI: 0000000000000003
    [10480.363367] RBP: 0000000000000001 R08: 0000000000000000 R09: 00007fa1dc7b2a40
    [10480.365317] R10: 0000562d93d0e366 R11: 0000000000000293 R12: 0000000000000001
    [10480.367299] R13: 0000562d93d45290 R14: 0000562d93d45e40 R15: 0000562d93d45e60
    
    Link: https://lore.kernel.org/linux-btrfs/20180713090216.GC575@fnst.localdomain/
    Reported-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    CC: stable@vger.kernel.org # 4.4+
    Tested-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.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>

commit 9d4ac27ce70b46e62e33f4c56621602a093bcd37
Author: Helge Deller <deller@gmx.de>
Date:   Thu Oct 22 11:00:05 2020 +0200

    scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove()
    
    commit 2f4843b172c2c0360ee7792ad98025fae7baefde upstream.
    
    The mptscsih_remove() function triggers a kernel oops if the Scsi_Host
    pointer (ioc->sh) is NULL, as can be seen in this syslog:
    
     ioc0: LSI53C1030 B2: Capabilities={Initiator,Target}
     Begin: Waiting for root file system ...
     scsi host2: error handler thread failed to spawn, error = -4
     mptspi: ioc0: WARNING - Unable to register controller with SCSI subsystem
     Backtrace:
      [<000000001045b7cc>] mptspi_probe+0x248/0x3d0 [mptspi]
      [<0000000040946470>] pci_device_probe+0x1ac/0x2d8
      [<0000000040add668>] really_probe+0x1bc/0x988
      [<0000000040ade704>] driver_probe_device+0x160/0x218
      [<0000000040adee24>] device_driver_attach+0x160/0x188
      [<0000000040adef90>] __driver_attach+0x144/0x320
      [<0000000040ad7c78>] bus_for_each_dev+0xd4/0x158
      [<0000000040adc138>] driver_attach+0x4c/0x80
      [<0000000040adb3ec>] bus_add_driver+0x3e0/0x498
      [<0000000040ae0130>] driver_register+0xf4/0x298
      [<00000000409450c4>] __pci_register_driver+0x78/0xa8
      [<000000000007d248>] mptspi_init+0x18c/0x1c4 [mptspi]
    
    This patch adds the necessary NULL-pointer checks.  Successfully tested on
    a HP C8000 parisc workstation with buggy SCSI drives.
    
    Link: https://lore.kernel.org/r/20201022090005.GA9000@ls3530.fritz.box
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caeca56c8296ff115f4080d42c1a4ec32929e624
Author: Martin Fuzzey <martin.fuzzey@flowbird.group>
Date:   Wed Sep 30 10:36:46 2020 +0200

    w1: mxc_w1: Fix timeout resolution problem leading to bus error
    
    commit c9723750a699c3bd465493ac2be8992b72ccb105 upstream.
    
    On my platform (i.MX53) bus access sometimes fails with
            w1_search: max_slave_count 64 reached, will continue next search.
    
    The reason is the use of jiffies to implement a 200us timeout in
    mxc_w1_ds2_touch_bit().
    On some platforms the jiffies timer resolution is insufficient for this.
    
    Fix by replacing jiffies by ktime_get().
    
    For consistency apply the same change to the other use of jiffies in
    mxc_w1_ds2_reset_bus().
    
    Fixes: f80b2581a706 ("w1: mxc_w1: Optimize mxc_w1_ds2_touch_bit()")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
    Link: https://lore.kernel.org/r/1601455030-6607-1-git-send-email-martin.fuzzey@flowbird.group
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e1f2d012c506cb3c8f6291d51df0757bb2c507a
Author: Wei Huang <wei.huang2@amd.com>
Date:   Sun Oct 18 22:57:41 2020 -0500

    acpi-cpufreq: Honor _PSD table setting on new AMD CPUs
    
    commit 5368512abe08a28525d9b24abbfc2a72493e8dba upstream.
    
    acpi-cpufreq has a old quirk that overrides the _PSD table supplied by
    BIOS on AMD CPUs. However the _PSD table of new AMD CPUs (Family 19h+)
    now accurately reports the P-state dependency of CPU cores. Hence this
    quirk needs to be fixed in order to support new CPUs' frequency control.
    
    Fixes: acd316248205 ("acpi-cpufreq: Add quirk to disable _PSD usage on all AMD CPUs")
    Signed-off-by: Wei Huang <wei.huang2@amd.com>
    [ rjw: Subject edit ]
    Cc: 3.10+ <stable@vger.kernel.org> # 3.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 451c6a4d626ac876cd9d990479a6cf080643bd2e
Author: Jamie Iles <jamie@nuviainc.com>
Date:   Mon Oct 12 14:04:46 2020 +0100

    ACPI: debug: don't allow debugging when ACPI is disabled
    
    commit 0fada277147ffc6d694aa32162f51198d4f10d94 upstream.
    
    If ACPI is disabled then loading the acpi_dbg module will result in the
    following splat when lock debugging is enabled.
    
      DEBUG_LOCKS_WARN_ON(lock->magic != lock)
      WARNING: CPU: 0 PID: 1 at kernel/locking/mutex.c:938 __mutex_lock+0xa10/0x1290
      Kernel panic - not syncing: panic_on_warn set ...
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc8+ #103
      Hardware name: linux,dummy-virt (DT)
      Call trace:
       dump_backtrace+0x0/0x4d8
       show_stack+0x34/0x48
       dump_stack+0x174/0x1f8
       panic+0x360/0x7a0
       __warn+0x244/0x2ec
       report_bug+0x240/0x398
       bug_handler+0x50/0xc0
       call_break_hook+0x160/0x1d8
       brk_handler+0x30/0xc0
       do_debug_exception+0x184/0x340
       el1_dbg+0x48/0xb0
       el1_sync_handler+0x170/0x1c8
       el1_sync+0x80/0x100
       __mutex_lock+0xa10/0x1290
       mutex_lock_nested+0x6c/0xc0
       acpi_register_debugger+0x40/0x88
       acpi_aml_init+0xc4/0x114
       do_one_initcall+0x24c/0xb10
       kernel_init_freeable+0x690/0x728
       kernel_init+0x20/0x1e8
       ret_from_fork+0x10/0x18
    
    This is because acpi_debugger.lock has not been initialized as
    acpi_debugger_init() is not called when ACPI is disabled.  Fail module
    loading to avoid this and any subsequent problems that might arise by
    trying to debug AML when ACPI is disabled.
    
    Fixes: 8cfb0cdf07e2 ("ACPI / debugger: Add IO interface to access debugger functionalities")
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Jamie Iles <jamie@nuviainc.com>
    Cc: 4.10+ <stable@vger.kernel.org> # 4.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16d8a0bddab4a2304ccaed994f0eae17bd3a9bf1
Author: Alex Hung <alex.hung@canonical.com>
Date:   Sun Sep 13 16:34:03 2020 -0600

    ACPI: video: use ACPI backlight for HP 635 Notebook
    
    commit b226faab4e7890bbbccdf794e8b94276414f9058 upstream.
    
    The default backlight interface is AMD's radeon_bl0 which does not
    work on this system, so use the ACPI backlight interface on it
    instead.
    
    BugLink: https://bugs.launchpad.net/bugs/1894667
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Alex Hung <alex.hung@canonical.com>
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 423ea50fa008a59f1f074a23f9d845d887fade56
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Sep 27 22:50:42 2020 +0100

    ACPI / extlog: Check for RDMSR failure
    
    commit 7cecb47f55e00282f972a1e0b09136c8cd938221 upstream.
    
    extlog_init() uses rdmsrl() to read an MSR, which on older CPUs
    provokes a error message at boot:
    
        unchecked MSR access error: RDMSR from 0x179 at rIP: 0xcd047307 (native_read_msr+0x7/0x40)
    
    Use rdmsrl_safe() instead, and return -ENODEV if it fails.
    
    Reported-by: jim@photojim.ca
    References: https://bugs.debian.org/971058
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 924bdf1ab5412b8ad43f90e94558d9d7c319ce53
Author: Ashish Sangwan <ashishsangwan2@gmail.com>
Date:   Mon Oct 5 02:22:43 2020 -0700

    NFS: fix nfs_path in case of a rename retry
    
    commit 247db73560bc3e5aef6db50c443c3c0db115bc93 upstream.
    
    We are generating incorrect path in case of rename retry because
    we are restarting from wrong dentry. We should restart from the
    dentry which was received in the call to nfs_path.
    
    CC: stable@vger.kernel.org
    Signed-off-by: Ashish Sangwan <ashishsangwan2@gmail.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ed80e77c908cbaa686529a49f8ae0060c5caee7
Author: Jan Kara <jack@suse.cz>
Date:   Fri Sep 4 10:58:51 2020 +0200

    fs: Don't invalidate page buffers in block_write_full_page()
    
    commit 6dbf7bb555981fb5faf7b691e8f6169fc2b2e63b upstream.
    
    If block_write_full_page() is called for a page that is beyond current
    inode size, it will truncate page buffers for the page and return 0.
    This logic has been added in 2.5.62 in commit 81eb69062588 ("fix ext3
    BUG due to race with truncate") in history.git tree to fix a problem
    with ext3 in data=ordered mode. This particular problem doesn't exist
    anymore because ext3 is long gone and ext4 handles ordered data
    differently. Also normally buffers are invalidated by truncate code and
    there's no need to specially handle this in ->writepage() code.
    
    This invalidation of page buffers in block_write_full_page() is causing
    issues to filesystems (e.g. ext4 or ocfs2) when block device is shrunk
    under filesystem's hands and metadata buffers get discarded while being
    tracked by the journalling layer. Although it is obviously "not
    supported" it can cause kernel crashes like:
    
    [ 7986.689400] BUG: unable to handle kernel NULL pointer dereference at
    +0000000000000008
    [ 7986.697197] PGD 0 P4D 0
    [ 7986.699724] Oops: 0002 [#1] SMP PTI
    [ 7986.703200] CPU: 4 PID: 203778 Comm: jbd2/dm-3-8 Kdump: loaded Tainted: G
    +O     --------- -  - 4.18.0-147.5.0.5.h126.eulerosv2r9.x86_64 #1
    [ 7986.716438] Hardware name: Huawei RH2288H V3/BC11HGSA0, BIOS 1.57 08/11/2015
    [ 7986.723462] RIP: 0010:jbd2_journal_grab_journal_head+0x1b/0x40 [jbd2]
    ...
    [ 7986.810150] Call Trace:
    [ 7986.812595]  __jbd2_journal_insert_checkpoint+0x23/0x70 [jbd2]
    [ 7986.818408]  jbd2_journal_commit_transaction+0x155f/0x1b60 [jbd2]
    [ 7986.836467]  kjournald2+0xbd/0x270 [jbd2]
    
    which is not great. The crash happens because bh->b_private is suddently
    NULL although BH_JBD flag is still set (this is because
    block_invalidatepage() cleared BH_Mapped flag and subsequent bh lookup
    found buffer without BH_Mapped set, called init_page_buffers() which has
    rewritten bh->b_private). So just remove the invalidation in
    block_write_full_page().
    
    Note that the buffer cache invalidation when block device changes size
    is already careful to avoid similar problems by using
    invalidate_mapping_pages() which skips busy buffers so it was only this
    odd block_write_full_page() behavior that could tear down bdev buffers
    under filesystem's hands.
    
    Reported-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    CC: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 286ac996f19b7cd468cd738b0036c256177ea32e
Author: Marek Behún <marek.behun@nic.cz>
Date:   Fri Sep 18 00:32:58 2020 +0200

    leds: bcm6328, bcm6358: use devres LED registering function
    
    commit ff5c89d44453e7ad99502b04bf798a3fc32c758b upstream.
    
    These two drivers do not provide remove method and use devres for
    allocation of other resources, yet they use led_classdev_register
    instead of the devres variant, devm_led_classdev_register.
    
    Fix this.
    
    Signed-off-by: Marek Behún <marek.behun@nic.cz>
    Cc: Álvaro Fernández Rojas <noltari@gmail.com>
    Cc: Kevin Cernekee <cernekee@gmail.com>
    Cc: Jaedon Shin <jaedon.shin@gmail.com>
    Signed-off-by: Pavel Machek <pavel@ucw.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45194d6923cb9357136819d96dc16a4521b5785f
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Tue Sep 8 16:47:38 2020 -0500

    perf/x86/amd/ibs: Fix raw sample data accumulation
    
    commit 36e1be8ada994d509538b3b1d0af8b63c351e729 upstream.
    
    Neither IbsBrTarget nor OPDATA4 are populated in IBS Fetch mode.
    Don't accumulate them into raw sample user data in that case.
    
    Also, in Fetch mode, add saving the IBS Fetch Control Extended MSR.
    
    Technically, there is an ABI change here with respect to the IBS raw
    sample data format, but I don't see any perf driver version information
    being included in perf.data file headers, but, existing users can detect
    whether the size of the sample record has reduced by 8 bytes to
    determine whether the IBS driver has this fix.
    
    Fixes: 904cb3677f3a ("perf/x86/amd/ibs: Update IBS MSRs and feature definitions")
    Reported-by: Stephane Eranian <stephane.eranian@google.com>
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200908214740.18097-6-kim.phillips@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d59681a891fe89748a5ad232bf84d939332932d7
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Tue Sep 8 16:47:37 2020 -0500

    perf/x86/amd/ibs: Don't include randomized bits in get_ibs_op_count()
    
    commit 680d69635005ba0e58fe3f4c52fc162b8fc743b0 upstream.
    
    get_ibs_op_count() adds hardware's current count (IbsOpCurCnt) bits
    to its count regardless of hardware's valid status.
    
    According to the PPR for AMD Family 17h Model 31h B0 55803 Rev 0.54,
    if the counter rolls over, valid status is set, and the lower 7 bits
    of IbsOpCurCnt are randomized by hardware.
    
    Don't include those bits in the driver's event count.
    
    Fixes: 8b1e13638d46 ("perf/x86-ibs: Fix usage of IBS op current count")
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10a02c90bf63fd39e36a67a930875a2d9f80719f
Author: Song Liu <songliubraving@fb.com>
Date:   Mon Oct 5 09:35:21 2020 -0700

    md/raid5: fix oops during stripe resizing
    
    commit b44c018cdf748b96b676ba09fdbc5b34fc443ada upstream.
    
    KoWei reported crash during raid5 reshape:
    
    [ 1032.252932] Oops: 0002 [#1] SMP PTI
    [...]
    [ 1032.252943] RIP: 0010:memcpy_erms+0x6/0x10
    [...]
    [ 1032.252947] RSP: 0018:ffffba1ac0c03b78 EFLAGS: 00010286
    [ 1032.252949] RAX: 0000784ac0000000 RBX: ffff91bec3d09740 RCX: 0000000000001000
    [ 1032.252951] RDX: 0000000000001000 RSI: ffff91be6781c000 RDI: 0000784ac0000000
    [ 1032.252953] RBP: ffffba1ac0c03bd8 R08: 0000000000001000 R09: ffffba1ac0c03bf8
    [ 1032.252954] R10: 0000000000000000 R11: 0000000000000000 R12: ffffba1ac0c03bf8
    [ 1032.252955] R13: 0000000000001000 R14: 0000000000000000 R15: 0000000000000000
    [ 1032.252958] FS:  0000000000000000(0000) GS:ffff91becf500000(0000) knlGS:0000000000000000
    [ 1032.252959] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1032.252961] CR2: 0000784ac0000000 CR3: 000000031780a002 CR4: 00000000001606e0
    [ 1032.252962] Call Trace:
    [ 1032.252969]  ? async_memcpy+0x179/0x1000 [async_memcpy]
    [ 1032.252977]  ? raid5_release_stripe+0x8e/0x110 [raid456]
    [ 1032.252982]  handle_stripe_expansion+0x15a/0x1f0 [raid456]
    [ 1032.252988]  handle_stripe+0x592/0x1270 [raid456]
    [ 1032.252993]  handle_active_stripes.isra.0+0x3cb/0x5a0 [raid456]
    [ 1032.252999]  raid5d+0x35c/0x550 [raid456]
    [ 1032.253002]  ? schedule+0x42/0xb0
    [ 1032.253006]  ? schedule_timeout+0x10e/0x160
    [ 1032.253011]  md_thread+0x97/0x160
    [ 1032.253015]  ? wait_woken+0x80/0x80
    [ 1032.253019]  kthread+0x104/0x140
    [ 1032.253022]  ? md_start_sync+0x60/0x60
    [ 1032.253024]  ? kthread_park+0x90/0x90
    [ 1032.253027]  ret_from_fork+0x35/0x40
    
    This is because cache_size_mutex was unlocked too early in resize_stripes,
    which races with grow_one_stripe() that grow_one_stripe() allocates a
    stripe with wrong pool_size.
    
    Fix this issue by unlocking cache_size_mutex after updating pool_size.
    
    Cc: <stable@vger.kernel.org> # v4.4+
    Reported-by: KoWei Sung <winders@amazon.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1750073adfee2cc0c27440114f8f62a599d1aad
Author: Chao Leng <lengchao@huawei.com>
Date:   Mon Oct 12 16:10:40 2020 +0800

    nvme-rdma: fix crash when connect rejected
    
    [ Upstream commit 43efdb8e870ee0f58633fd579aa5b5185bf5d39e ]
    
    A crash can happened when a connect is rejected.   The host establishes
    the connection after received ConnectReply, and then continues to send
    the fabrics Connect command.  If the controller does not receive the
    ReadyToUse capsule, host may receive a ConnectReject reply.
    
    Call nvme_rdma_destroy_queue_ib after the host received the
    RDMA_CM_EVENT_REJECTED event.  Then when the fabrics Connect command
    times out, nvme_rdma_timeout calls nvme_rdma_complete_rq to fail the
    request.  A crash happenes due to use after free in
    nvme_rdma_complete_rq.
    
    nvme_rdma_destroy_queue_ib is redundant when handling the
    RDMA_CM_EVENT_REJECTED event as nvme_rdma_destroy_queue_ib is already
    called in connection failure handler.
    
    Signed-off-by: Chao Leng <lengchao@huawei.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04472a1eccc726ce8adc9d05978ac6874e1550d5
Author: Douglas Gilbert <dgilbert@interlog.com>
Date:   Thu Oct 15 14:57:35 2020 -0400

    sgl_alloc_order: fix memory leak
    
    [ Upstream commit b2a182a40278bc5849730e66bca01a762188ed86 ]
    
    sgl_alloc_order() can fail when 'length' is large on a memory
    constrained system. When order > 0 it will potentially be
    making several multi-page allocations with the later ones more
    likely to fail than the earlier one. So it is important that
    sgl_alloc_order() frees up any pages it has obtained before
    returning NULL. In the case when order > 0 it calls the wrong
    free page function and leaks. In testing the leak was
    sufficient to bring down my 8 GiB laptop with OOM.
    
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a4e383fc3aa6540f804c4fd1184a96ae5de6ef8
Author: Xiubo Li <xiubli@redhat.com>
Date:   Tue Oct 13 22:45:14 2020 -0400

    nbd: make the config put is called before the notifying the waiter
    
    [ Upstream commit 87aac3a80af5cbad93e63250e8a1e19095ba0d30 ]
    
    There has one race case for ceph's rbd-nbd tool. When do mapping
    it may fail with EBUSY from ioctl(nbd, NBD_DO_IT), but actually
    the nbd device has already unmaped.
    
    It dues to if just after the wake_up(), the recv_work() is scheduled
    out and defers calling the nbd_config_put(), though the map process
    has exited the "nbd->recv_task" is not cleared.
    
    Signed-off-by: Xiubo Li <xiubli@redhat.com>
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 090a280e8e824c39bee5b4f439cfce10cb362c9c
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Mon Sep 7 18:11:24 2020 +0200

    ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node
    
    [ Upstream commit 6c17a2974abf68a58517f75741b15c4aba42b4b8 ]
    
    The 'audio-subsystem' node is an artificial creation, not representing
    real hardware.  The hardware is described by its nodes - AUDSS clock
    controller and I2S0.
    
    Remove the 'audio-subsystem' node along with its undocumented compatible
    to fix dtbs_check warnings like:
    
      audio-subsystem: $nodename:0: 'audio-subsystem' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
    
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Tested-by: Jonathan Bakker <xc-racer2@live.ca>
    Link: https://lore.kernel.org/r/20200907161141.31034-9-krzk@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 391bedad1dc8f1c9453b1664d01b4d13f22308ac
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Mon Sep 7 18:11:23 2020 +0200

    ARM: dts: s5pv210: move PMU node out of clock controller
    
    [ Upstream commit bb98fff84ad1ea321823759edaba573a16fa02bd ]
    
    The Power Management Unit (PMU) is a separate device which has little
    common with clock controller.  Moving it to one level up (from clock
    controller child to SoC) allows to remove fake simple-bus compatible and
    dtbs_check warnings like:
    
      clock-controller@e0100000: $nodename:0:
        'clock-controller@e0100000' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
    
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Tested-by: Jonathan Bakker <xc-racer2@live.ca>
    Link: https://lore.kernel.org/r/20200907161141.31034-8-krzk@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38820cb366b0bdd232ad51755c8faba83db795b7
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Mon Sep 7 18:11:21 2020 +0200

    ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema warnings
    
    [ Upstream commit ea4e792f3c8931fffec4d700cf6197d84e9f35a6 ]
    
    There is no need to keep DMA controller nodes under AMBA bus node.
    Remove the "amba" node to fix dtschema warnings like:
    
      amba: $nodename:0: 'amba' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
    
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Tested-by: Jonathan Bakker <xc-racer2@live.ca>
    Link: https://lore.kernel.org/r/20200907161141.31034-6-krzk@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4637a4bde9ffbcfaca6cf2dd7d0e87e7f7cb39fc
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Aug 26 14:37:59 2020 +0300

    memory: emif: Remove bogus debugfs error handling
    
    [ Upstream commit fd22781648080cc400772b3c68aa6b059d2d5420 ]
    
    Callers are generally not supposed to check the return values from
    debugfs functions.  Debugfs functions never return NULL so this error
    handling will never trigger.  (Historically debugfs functions used to
    return a mix of NULL and error pointers but it was eventually deemed too
    complicated for something which wasn't intended to be used in normal
    situations).
    
    Delete all the error handling.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
    Link: https://lore.kernel.org/r/20200826113759.GF393664@mwanda
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e7ddef4b29664d72acc33c4e0de3214671c7d75
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Fri Jul 17 21:33:21 2020 +0900

    arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes
    
    [ Upstream commit 992d7a8b88c83c05664b649fc54501ce58e19132 ]
    
    Add full-pwr-cycle-in-suspend property to do a graceful shutdown of
    the eMMC device in system suspend.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/1594989201-24228-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 78734edd11ccd3e4f88db9021a4d9856396aeabc
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Wed Oct 14 22:01:09 2020 +0530

    gfs2: add validation checks for size of superblock
    
    [ Upstream commit 0ddc5154b24c96f20e94d653b0a814438de6032b ]
    
    In gfs2_check_sb(), no validation checks are performed with regards to
    the size of the superblock.
    syzkaller detected a slab-out-of-bounds bug that was primarily caused
    because the block size for a superblock was set to zero.
    A valid size for a superblock is a power of 2 between 512 and PAGE_SIZE.
    Performing validation checks and ensuring that the size of the superblock
    is valid fixes this bug.
    
    Reported-by: syzbot+af90d47a37376844e731@syzkaller.appspotmail.com
    Tested-by: syzbot+af90d47a37376844e731@syzkaller.appspotmail.com
    Suggested-by: Andrew Price <anprice@redhat.com>
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    [Minor code reordering.]
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a991f90aeee1e062c7b6c6d06ce95b8f0e4cb27c
Author: Jan Kara <jack@suse.cz>
Date:   Thu Oct 15 13:03:30 2020 +0200

    ext4: Detect already used quota file early
    
    [ Upstream commit e0770e91424f694b461141cbc99adf6b23006b60 ]
    
    When we try to use file already used as a quota file again (for the same
    or different quota type), strange things can happen. At the very least
    lockdep annotations may be wrong but also inode flags may be wrongly set
    / reset. When the file is used for two quota types at once we can even
    corrupt the file and likely crash the kernel. Catch all these cases by
    checking whether passed file is already used as quota file and bail
    early in that case.
    
    This fixes occasional generic/219 failure due to lockdep complaint.
    
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Reported-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20201015110330.28716-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3ddd6c130660247cfd56f34a71488b9b1824cbe
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Fri Aug 7 16:59:02 2020 +0530

    drivers: watchdog: rdc321x_wdt: Fix race condition bugs
    
    [ Upstream commit 4b2e7f99cdd314263c9d172bc17193b8b6bba463 ]
    
    In rdc321x_wdt_probe(), rdc321x_wdt_device.queue is initialized
    after misc_register(), hence if ioctl is called before its
    initialization which can call rdc321x_wdt_start() function,
    it will see an uninitialized value of rdc321x_wdt_device.queue,
    hence initialize it before misc_register().
    Also, rdc321x_wdt_device.default_ticks is accessed in reset()
    function called from write callback, thus initialize it before
    misc_register().
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20200807112902.28764-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d39cd0d82f608f49d67915874cd8a8d424736e0e
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Mon Oct 12 09:54:04 2020 +0530

    net: 9p: initialize sun_server.sun_path to have addr's value only when addr is valid
    
    [ Upstream commit 7ca1db21ef8e0e6725b4d25deed1ca196f7efb28 ]
    
    In p9_fd_create_unix, checking is performed to see if the addr (passed
    as an argument) is NULL or not.
    However, no check is performed to see if addr is a valid address, i.e.,
    it doesn't entirely consist of only 0's.
    The initialization of sun_server.sun_path to be equal to this faulty
    addr value leads to an uninitialized variable, as detected by KMSAN.
    Checking for this (faulty addr) and returning a negative error number
    appropriately, resolves this issue.
    
    Link: http://lkml.kernel.org/r/20201012042404.2508-1-anant.thazhemadam@gmail.com
    Reported-by: syzbot+75d51fe5bf4ebe988518@syzkaller.appspotmail.com
    Tested-by: syzbot+75d51fe5bf4ebe988518@syzkaller.appspotmail.com
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e27afbc6fbd01dc103f16a9c34299ff10b136492
Author: Tero Kristo <t-kristo@ti.com>
Date:   Mon Sep 7 11:25:59 2020 +0300

    clk: ti: clockdomain: fix static checker warning
    
    [ Upstream commit b7a7943fe291b983b104bcbd2f16e8e896f56590 ]
    
    Fix a memory leak induced by not calling clk_put after doing of_clk_get.
    
    Reported-by: Dan Murphy <dmurphy@ti.com>
    Signed-off-by: Tero Kristo <t-kristo@ti.com>
    Link: https://lore.kernel.org/r/20200907082600.454-3-t-kristo@ti.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b722545d22f04d643b5bf6674426b293aa3182bb
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Mon Oct 12 05:10:51 2020 -0400

    bnxt_en: Log unknown link speed appropriately.
    
    [ Upstream commit 8eddb3e7ce124dd6375d3664f1aae13873318b0f ]
    
    If the VF virtual link is set to always enabled, the speed may be
    unknown when the physical link is down.  The driver currently logs
    the link speed as 4294967295 Mbps which is SPEED_UNKNOWN.  Modify
    the link up log message as "speed unknown" which makes more sense.
    
    Reviewed-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Link: https://lore.kernel.org/r/1602493854-29283-7-git-send-email-michael.chan@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2be015d14a78d6067cc61670616e55aaf652fe2
Author: Zhao Heming <heming.zhao@suse.com>
Date:   Tue Oct 6 00:00:24 2020 +0800

    md/bitmap: md_bitmap_get_counter returns wrong blocks
    
    [ Upstream commit d837f7277f56e70d82b3a4a037d744854e62f387 ]
    
    md_bitmap_get_counter() has code:
    
    ```
        if (bitmap->bp[page].hijacked ||
            bitmap->bp[page].map == NULL)
            csize = ((sector_t)1) << (bitmap->chunkshift +
                          PAGE_COUNTER_SHIFT - 1);
    ```
    
    The minus 1 is wrong, this branch should report 2048 bits of space.
    With "-1" action, this only report 1024 bit of space.
    
    This bug code returns wrong blocks, but it doesn't inflence bitmap logic:
    1. Most callers focus this function return value (the counter of offset),
       not the parameter blocks.
    2. The bug is only triggered when hijacked is true or map is NULL.
       the hijacked true condition is very rare.
       the "map == null" only true when array is creating or resizing.
    3. Even the caller gets wrong blocks, current code makes caller just to
       call md_bitmap_get_counter() one more time.
    
    Signed-off-by: Zhao Heming <heming.zhao@suse.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f76023b42afe82713ede82f45895a040e5a1f4df
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Fri Sep 4 14:09:58 2020 +0800

    power: supply: test_power: add missing newlines when printing parameters by sysfs
    
    [ Upstream commit c07fa6c1631333f02750cf59f22b615d768b4d8f ]
    
    When I cat some module parameters by sysfs, it displays as follows.
    It's better to add a newline for easy reading.
    
    root@syzkaller:~# cd /sys/module/test_power/parameters/
    root@syzkaller:/sys/module/test_power/parameters# cat ac_online
    onroot@syzkaller:/sys/module/test_power/parameters# cat battery_present
    trueroot@syzkaller:/sys/module/test_power/parameters# cat battery_health
    goodroot@syzkaller:/sys/module/test_power/parameters# cat battery_status
    dischargingroot@syzkaller:/sys/module/test_power/parameters# cat battery_technology
    LIONroot@syzkaller:/sys/module/test_power/parameters# cat usb_online
    onroot@syzkaller:/sys/module/test_power/parameters#
    
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d3d7f000b8af9d05340a777ca540cc68287628c
Author: Diana Craciun <diana.craciun@oss.nxp.com>
Date:   Tue Sep 29 11:54:38 2020 +0300

    bus/fsl_mc: Do not rely on caller to provide non NULL mc_io
    
    [ Upstream commit 5026cf605143e764e1785bbf9158559d17f8d260 ]
    
    Before destroying the mc_io, check first that it was
    allocated.
    
    Reviewed-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Acked-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Signed-off-by: Diana Craciun <diana.craciun@oss.nxp.com>
    Link: https://lore.kernel.org/r/20200929085441.17448-11-diana.craciun@oss.nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8921eb7192d40175da7f641690142ecc53ec5be
Author: Xie He <xie.he.0141@gmail.com>
Date:   Mon Sep 28 05:56:43 2020 -0700

    drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values
    
    [ Upstream commit 8306266c1d51aac9aa7aa907fe99032a58c6382c ]
    
    The fr_hard_header function is used to prepend the header to skbs before
    transmission. It is used in 3 situations:
    1) When a control packet is generated internally in this driver;
    2) When a user sends an skb on an Ethernet-emulating PVC device;
    3) When a user sends an skb on a normal PVC device.
    
    These 3 situations need to be handled differently by fr_hard_header.
    Different headers should be prepended to the skb in different situations.
    
    Currently fr_hard_header distinguishes these 3 situations using
    skb->protocol. For situation 1 and 2, a special skb->protocol value
    will be assigned before calling fr_hard_header, so that it can recognize
    these 2 situations. All skb->protocol values other than these special ones
    are treated by fr_hard_header as situation 3.
    
    However, it is possible that in situation 3, the user sends an skb with
    one of the special skb->protocol values. In this case, fr_hard_header
    would incorrectly treat it as situation 1 or 2.
    
    This patch tries to solve this issue by using skb->dev instead of
    skb->protocol to distinguish between these 3 situations. For situation
    1, skb->dev would be NULL; for situation 2, skb->dev->type would be
    ARPHRD_ETHER; and for situation 3, skb->dev->type would be ARPHRD_DLCI.
    
    This way fr_hard_header would be able to distinguish these 3 situations
    correctly regardless what skb->protocol value the user tries to use in
    situation 3.
    
    Cc: Krzysztof Halasa <khc@pm.waw.pl>
    Signed-off-by: Xie He <xie.he.0141@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1cf03fe8f00627f357f9512775a569bc23a613a
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Tue Aug 18 22:24:25 2020 +0800

    ACPI: Add out of bounds and numa_off protections to pxm_to_node()
    
    [ Upstream commit 8a3decac087aa897df5af04358c2089e52e70ac4 ]
    
    The function should check the validity of the pxm value before using
    it to index the pxm_to_node_map[] array.
    
    Whilst hardening this code may be good in general, the main intent
    here is to enable following patches that use this function to replace
    acpi_map_pxm_to_node() for non SRAT usecases which should return
    NO_NUMA_NODE for PXM entries not matching with those in SRAT.
    
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Barry Song <song.bao.hua@hisilicon.com>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ec7481d6cdbf64bef2078e02c1aac9039735fba
Author: Zhengyuan Liu <liuzhengyuan@tj.kylinos.cn>
Date:   Mon Sep 21 10:39:36 2020 +0800

    arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE
    
    [ Upstream commit a194c5f2d2b3a05428805146afcabe5140b5d378 ]
    
    The @node passed to cpumask_of_node() can be NUMA_NO_NODE, in that
    case it will trigger the following WARN_ON(node >= nr_node_ids) due to
    mismatched data types of @node and @nr_node_ids. Actually we should
    return cpu_all_mask just like most other architectures do if passed
    NUMA_NO_NODE.
    
    Also add a similar check to the inline cpumask_of_node() in numa.h.
    
    Signed-off-by: Zhengyuan Liu <liuzhengyuan@tj.kylinos.cn>
    Reviewed-by: Gavin Shan <gshan@redhat.com>
    Link: https://lore.kernel.org/r/20200921023936.21846-1-liuzhengyuan@tj.kylinos.cn
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 290dafecde1d34c79fc79a8a6a7666ee2a66e0b6
Author: Lang Dai <lang.dai@intel.com>
Date:   Mon Sep 14 11:26:41 2020 +0800

    uio: free uio id after uio file node is freed
    
    [ Upstream commit 8fd0e2a6df262539eaa28b0a2364cca10d1dc662 ]
    
    uio_register_device() do two things.
    1) get an uio id from a global pool, e.g. the id is <A>
    2) create file nodes like /sys/class/uio/uio<A>
    
    uio_unregister_device() do two things.
    1) free the uio id <A> and return it to the global pool
    2) free the file node /sys/class/uio/uio<A>
    
    There is a situation is that one worker is calling uio_unregister_device(),
    and another worker is calling uio_register_device().
    If the two workers are X and Y, they go as below sequence,
    1) X free the uio id <AAA>
    2) Y get an uio id <AAA>
    3) Y create file node /sys/class/uio/uio<AAA>
    4) X free the file note /sys/class/uio/uio<AAA>
    Then it will failed at the 3rd step and cause the phenomenon we saw as it
    is creating a duplicated file node.
    
    Failure reports as follows:
    sysfs: cannot create duplicate filename '/class/uio/uio10'
    Call Trace:
       sysfs_do_create_link_sd.isra.2+0x9e/0xb0
       sysfs_create_link+0x25/0x40
       device_add+0x2c4/0x640
       __uio_register_device+0x1c5/0x576 [uio]
       adf_uio_init_bundle_dev+0x231/0x280 [intel_qat]
       adf_uio_register+0x1c0/0x340 [intel_qat]
       adf_dev_start+0x202/0x370 [intel_qat]
       adf_dev_start_async+0x40/0xa0 [intel_qat]
       process_one_work+0x14d/0x410
       worker_thread+0x4b/0x460
       kthread+0x105/0x140
     ? process_one_work+0x410/0x410
     ? kthread_bind+0x40/0x40
     ret_from_fork+0x1f/0x40
     Code: 85 c0 48 89 c3 74 12 b9 00 10 00 00 48 89 c2 31 f6 4c 89 ef
     e8 ec c4 ff ff 4c 89 e2 48 89 de 48 c7 c7 e8 b4 ee b4 e8 6a d4 d7
     ff <0f> 0b 48 89 df e8 20 fa f3 ff 5b 41 5c 41 5d 5d c3 66 0f 1f 84
    ---[ end trace a7531c1ed5269e84 ]---
     c6xxvf b002:00:00.0: Failed to register UIO devices
     c6xxvf b002:00:00.0: Failed to register UIO devices
    
    Signed-off-by: Lang Dai <lang.dai@intel.com>
    
    Link: https://lore.kernel.org/r/1600054002-17722-1-git-send-email-lang.dai@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0bd0dd68a9fd296997e634624c7bd0d77794c4ad
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Sep 17 13:26:00 2020 +0200

    USB: adutux: fix debugging
    
    [ Upstream commit c56150c1bc8da5524831b1dac2eec3c67b89f587 ]
    
    Handling for removal of the controller was missing at one place.
    Add it.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20200917112600.26508-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fef7f7223972031ce631a147beb2854f4c1af870
Author: Alain Volmat <avolmat@me.com>
Date:   Mon Aug 31 08:10:11 2020 +0200

    cpufreq: sti-cpufreq: add stih418 support
    
    [ Upstream commit 01a163c52039e9426c7d3d3ab16ca261ad622597 ]
    
    The STiH418 can be controlled the same way as STiH407 &
    STiH410 regarding cpufreq.
    
    Signed-off-by: Alain Volmat <avolmat@me.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fbe68118529491b4a84009ef1915b0c1a2d441fd
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue Jun 30 15:14:38 2020 -0700

    kgdb: Make "kgdbcon" work properly with "kgdb_earlycon"
    
    [ Upstream commit b18b099e04f450cdc77bec72acefcde7042bd1f3 ]
    
    On my system the kernel processes the "kgdb_earlycon" parameter before
    the "kgdbcon" parameter.  When we setup "kgdb_earlycon" we'll end up
    in kgdb_register_callbacks() and "kgdb_use_con" won't have been set
    yet so we'll never get around to starting "kgdbcon".  Let's remedy
    this by detecting that the IO module was already registered when
    setting "kgdb_use_con" and registering the console then.
    
    As part of this, to avoid pre-declaring things, move the handling of
    the "kgdbcon" further down in the file.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20200630151422.1.I4aa062751ff5e281f5116655c976dff545c09a46@changeid
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8cbb029307b02588d099076be91416aff345e53
Author: John Ogness <john.ogness@linutronix.de>
Date:   Wed Aug 12 09:37:22 2020 +0206

    printk: reduce LOG_BUF_SHIFT range for H8300
    
    [ Upstream commit 550c10d28d21bd82a8bb48debbb27e6ed53262f6 ]
    
    The .bss section for the h8300 is relatively small. A value of
    CONFIG_LOG_BUF_SHIFT that is larger than 19 will create a static
    printk ringbuffer that is too large. Limit the range appropriately
    for the H8300.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20200812073122.25412-1-john.ogness@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ef54f898a7dfa43f9c065aeac212e1102f4abc9
Author: Antonio Borneo <antonio.borneo@st.com>
Date:   Wed Jul 1 21:42:34 2020 +0200

    drm/bridge/synopsys: dsi: add support for non-continuous HS clock
    
    [ Upstream commit c6d94e37bdbb6dfe7e581e937a915ab58399b8a5 ]
    
    Current code enables the HS clock when video mode is started or to
    send out a HS command, and disables the HS clock to send out a LP
    command. This is not what DSI spec specify.
    
    Enable HS clock either in command and in video mode.
    Set automatic HS clock management for panels and devices that
    support non-continuous HS clock.
    
    Signed-off-by: Antonio Borneo <antonio.borneo@st.com>
    Tested-by: Philippe Cornu <philippe.cornu@st.com>
    Reviewed-by: Philippe Cornu <philippe.cornu@st.com>
    Acked-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200701194234.18123-1-yannick.fertre@st.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed44f00ad39db369d3184204989f30741672b38a
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Sat Aug 22 11:45:28 2020 +0530

    mmc: via-sdmmc: Fix data race bug
    
    [ Upstream commit 87d7ad089b318b4f319bf57f1daa64eb6d1d10ad ]
    
    via_save_pcictrlreg() should be called with host->lock held
    as it writes to pm_pcictrl_reg, otherwise there can be a race
    condition between via_sd_suspend() and via_sdc_card_detect().
    The same pattern is used in the function via_reset_pcictrl()
    as well, where via_save_pcictrlreg() is called with host->lock
    held.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Link: https://lore.kernel.org/r/20200822061528.7035-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf124810276985b7aa51ff094b0592b130e2fe06
Author: Tom Rix <trix@redhat.com>
Date:   Mon Aug 10 21:25:18 2020 +0200

    media: tw5864: check status of tw5864_frameinterval_get
    
    [ Upstream commit 780d815dcc9b34d93ae69385a8465c38d423ff0f ]
    
    clang static analysis reports this problem
    
    tw5864-video.c:773:32: warning: The left expression of the compound
      assignment is an uninitialized value.
      The computed value will also be garbage
            fintv->stepwise.max.numerator *= std_max_fps;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    
    stepwise.max is set with frameinterval, which comes from
    
            ret = tw5864_frameinterval_get(input, &frameinterval);
            fintv->stepwise.step = frameinterval;
            fintv->stepwise.min = frameinterval;
            fintv->stepwise.max = frameinterval;
            fintv->stepwise.max.numerator *= std_max_fps;
    
    When tw5864_frameinterval_get() fails, frameinterval is not
    set. So check the status and fix another similar problem.
    
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1fb472e34ec63d159a58650c1534c7d435d2189
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Mon Aug 17 11:38:27 2020 -0700

    usb: typec: tcpm: During PR_SWAP, source caps should be sent only after tSwapSourceStart
    
    [ Upstream commit 6bbe2a90a0bb4af8dd99c3565e907fe9b5e7fd88 ]
    
    The patch addresses the compliance test failures while running
    TD.PD.CP.E3, TD.PD.CP.E4, TD.PD.CP.E5 of the "Deterministic PD
    Compliance MOI" test plan published in https://www.usb.org/usbc.
    For a product to be Type-C compliant, it's expected that these tests
    are run on usb.org certified Type-C compliance tester as mentioned in
    https://www.usb.org/usbc.
    
    The purpose of the tests TD.PD.CP.E3, TD.PD.CP.E4, TD.PD.CP.E5 is to
    verify the PR_SWAP response of the device. While doing so, the test
    asserts that Source Capabilities message is NOT received from the test
    device within tSwapSourceStart min (20 ms) from the time the last bit
    of GoodCRC corresponding to the RS_RDY message sent by the UUT was
    sent. If it does then the test fails.
    
    This is in line with the requirements from the USB Power Delivery
    Specification Revision 3.0, Version 1.2:
    "6.6.8.1 SwapSourceStartTimer
    The SwapSourceStartTimer Shall be used by the new Source, after a
    Power Role Swap or Fast Role Swap, to ensure that it does not send
    Source_Capabilities Message before the new Sink is ready to receive
    the
    Source_Capabilities Message. The new Source Shall Not send the
    Source_Capabilities Message earlier than tSwapSourceStart after the
    last bit of the EOP of GoodCRC Message sent in response to the PS_RDY
    Message sent by the new Source indicating that its power supply is
    ready."
    
    The patch makes sure that TCPM does not send the Source_Capabilities
    Message within tSwapSourceStart(20ms) by transitioning into
    SRC_STARTUP only after  tSwapSourceStart(20ms).
    
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20200817183828.1895015-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2db76a1bd95208c5a36c0cf5874a9c2e1ab035e6
Author: Xia Jiang <xia.jiang@mediatek.com>
Date:   Fri Aug 14 09:11:35 2020 +0200

    media: platform: Improve queue set up flow for bug fixing
    
    [ Upstream commit 5095a6413a0cf896ab468009b6142cb0fe617e66 ]
    
    Add checking created buffer size follow in mtk_jpeg_queue_setup().
    
    Reviewed-by: Tomasz Figa <tfiga@chromium.org>
    Signed-off-by: Xia Jiang <xia.jiang@mediatek.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 372865efb5525aab59b7409b11e9d22d4fc0e988
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Aug 20 12:47:16 2020 +0200

    media: videodev2.h: RGB BT2020 and HSV are always full range
    
    [ Upstream commit b305dfe2e93434b12d438434461b709641f62af4 ]
    
    The default RGB quantization range for BT.2020 is full range (just as for
    all the other RGB pixel encodings), not limited range.
    
    Update the V4L2_MAP_QUANTIZATION_DEFAULT macro and documentation
    accordingly.
    
    Also mention that HSV is always full range and cannot be limited range.
    
    When RGB BT2020 was introduced in V4L2 it was not clear whether it should
    be limited or full range, but full range is the right (and consistent)
    choice.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90b4a2c1fd22f4d72f47cea1b6cf1eede8613245
Author: Nadezda Lutovinova <lutovinova@ispras.ru>
Date:   Wed Aug 19 17:37:56 2020 +0300

    drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working correctly
    
    [ Upstream commit f688a345f0d7a6df4dd2aeca8e4f3c05e123a0ee ]
    
    If ge_b850v3_lvds_init() does not allocate memory for ge_b850v3_lvds_ptr,
    then a null pointer dereference is accessed.
    
    The patch adds checking of the return value of ge_b850v3_lvds_init().
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Nadezda Lutovinova <lutovinova@ispras.ru>
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200819143756.30626-1-lutovinova@ispras.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0beb6d0fef9bbdd22a63cff6e34dce0ebf78a3c
Author: Sathishkumar Muruganandam <murugana@codeaurora.org>
Date:   Fri Aug 14 13:46:11 2020 +0530

    ath10k: fix VHT NSS calculation when STBC is enabled
    
    [ Upstream commit 99f41b8e43b8b4b31262adb8ac3e69088fff1289 ]
    
    When STBC is enabled, NSTS_SU value need to be accounted for VHT NSS
    calculation for SU case.
    
    Without this fix, 1SS + STBC enabled case was reported wrongly as 2SS
    in radiotap header on monitor mode capture.
    
    Tested-on: QCA9984 10.4-3.10-00047
    
    Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/1597392971-3897-1-git-send-email-murugana@codeaurora.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ecb876acb8dee911334740907c9ef2642054ec7f
Author: Wen Gong <wgong@codeaurora.org>
Date:   Fri Aug 14 18:17:08 2020 +0300

    ath10k: start recovery process when payload length exceeds max htc length for sdio
    
    [ Upstream commit 2fd3c8f34d08af0a6236085f9961866ad92ef9ec ]
    
    When simulate random transfer fail for sdio write and read, it happened
    "payload length exceeds max htc length" and recovery later sometimes.
    
    Test steps:
    1. Add config and update kernel:
    CONFIG_FAIL_MMC_REQUEST=y
    CONFIG_FAULT_INJECTION=y
    CONFIG_FAULT_INJECTION_DEBUG_FS=y
    
    2. Run simulate fail:
    cd /sys/kernel/debug/mmc1/fail_mmc_request
    echo 10 > probability
    echo 10 > times # repeat until hitting issues
    
    3. It happened payload length exceeds max htc length.
    [  199.935506] ath10k_sdio mmc1:0001:1: payload length 57005 exceeds max htc length: 4088
    ....
    [  264.990191] ath10k_sdio mmc1:0001:1: payload length 57005 exceeds max htc length: 4088
    
    4. after some time, such as 60 seconds, it start recovery which triggered
    by wmi command timeout for periodic scan.
    [  269.229232] ieee80211 phy0: Hardware restart was requested
    [  269.734693] ath10k_sdio mmc1:0001:1: device successfully recovered
    
    The simulate fail of sdio is not a real sdio transter fail, it only
    set an error status in mmc_should_fail_request after the transfer end,
    actually the transfer is success, then sdio_io_rw_ext_helper will
    return error status and stop transfer the left data. For example,
    the really RX len is 286 bytes, then it will split to 2 blocks in
    sdio_io_rw_ext_helper, one is 256 bytes, left is 30 bytes, if the
    first 256 bytes get an error status by mmc_should_fail_request,then
    the left 30 bytes will not read in this RX operation. Then when the
    next RX arrive, the left 30 bytes will be considered as the header
    of the read, the top 4 bytes of the 30 bytes will be considered as
    lookaheads, but actually the 4 bytes is not the lookaheads, so the len
    from this lookaheads is not correct, it exceeds max htc length 4088
    sometimes. When happened exceeds, the buffer chain is not matched between
    firmware and ath10k, then it need to start recovery ASAP. Recently then
    recovery will be started by wmi command timeout, but it will be long time
    later, for example, it is 60+ seconds later from the periodic scan, if
    it does not have periodic scan, it will be longer.
    
    Start recovery when it happened "payload length exceeds max htc length"
    will be reasonable.
    
    This patch only effect sdio chips.
    
    Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00029.
    
    Signed-off-by: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200108031957.22308-3-wgong@codeaurora.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6212a0c774e35e2bd9a64e945add75c716006f21
Author: Tom Rix <trix@redhat.com>
Date:   Mon Jul 20 12:18:45 2020 -0700

    video: fbdev: pvr2fb: initialize variables
    
    [ Upstream commit 8e1ba47c60bcd325fdd097cd76054639155e5d2e ]
    
    clang static analysis reports this repesentative error
    
    pvr2fb.c:1049:2: warning: 1st function call argument
      is an uninitialized value [core.CallAndMessage]
            if (*cable_arg)
            ^~~~~~~~~~~~~~~
    
    Problem is that cable_arg depends on the input loop to
    set the cable_arg[0].  If it does not, then some random
    value from the stack is used.
    
    A similar problem exists for output_arg.
    
    So initialize cable_arg and output_arg.
    
    Signed-off-by: Tom Rix <trix@redhat.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200720191845.20115-1-trix@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 643e6501803ec65b14fa6bb6dda2b52b4991aab3
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Oct 7 13:55:16 2020 -0700

    xfs: fix realtime bitmap/summary file truncation when growing rt volume
    
    [ Upstream commit f4c32e87de7d66074d5612567c5eac7325024428 ]
    
    The realtime bitmap and summary files are regular files that are hidden
    away from the directory tree.  Since they're regular files, inode
    inactivation will try to purge what it thinks are speculative
    preallocations beyond the incore size of the file.  Unfortunately,
    xfs_growfs_rt forgets to update the incore size when it resizes the
    inodes, with the result that inactivating the rt inodes at unmount time
    will cause their contents to be truncated.
    
    Fix this by updating the incore size when we change the ondisk size as
    part of updating the superblock.  Note that we don't do this when we're
    allocating blocks to the rt inodes because we actually want those blocks
    to get purged if the growfs fails.
    
    This fixes corruption complaints from the online rtsummary checker when
    running xfs/233.  Since that test requires rmap, one can also trigger
    this by growing an rt volume, cycling the mount, and creating rt files.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3011217e2975d674d6f5f565697fee2586cbe682
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Aug 6 23:24:35 2020 +0100

    ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses
    
    [ Upstream commit 22c9e58299e5f18274788ce54c03d4fb761e3c5d ]
    
    This is commit fdfeff0f9e3d ("arm64: hw_breakpoint: Handle inexact
    watchpoint addresses") but ported to arm32, which has the same
    problem.
    
    This problem was found by Android CTS tests, notably the
    "watchpoint_imprecise" test [1].  I tested locally against a copycat
    (simplified) version of the test though.
    
    [1] https://android.googlesource.com/platform/bionic/+/master/tests/sys_ptrace_test.cpp
    
    Link: https://lkml.kernel.org/r/20191019111216.1.I82eae759ca6dc28a245b043f485ca490e3015321@changeid
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Acked-by: Will Deacon <will@kernel.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9368f119e8c350cc2576327060fa535872421b4a
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Jun 4 13:23:17 2020 +0200

    um: change sigio_spinlock to a mutex
    
    [ Upstream commit f2d05059e15af3f70502074f4e3a504530af504a ]
    
    Lockdep complains at boot:
    
    =============================
    [ BUG: Invalid wait context ]
    5.7.0-05093-g46d91ecd597b #98 Not tainted
    -----------------------------
    swapper/1 is trying to lock:
    0000000060931b98 (&desc[i].request_mutex){+.+.}-{3:3}, at: __setup_irq+0x11d/0x623
    other info that might help us debug this:
    context-{4:4}
    1 lock held by swapper/1:
     #0: 000000006074fed8 (sigio_spinlock){+.+.}-{2:2}, at: sigio_lock+0x1a/0x1c
    stack backtrace:
    CPU: 0 PID: 1 Comm: swapper Not tainted 5.7.0-05093-g46d91ecd597b #98
    Stack:
     7fa4fab0 6028dfd1 0000002a 6008bea5
     7fa50700 7fa50040 7fa4fac0 6028e016
     7fa4fb50 6007f6da 60959c18 00000000
    Call Trace:
     [<60023a0e>] show_stack+0x13b/0x155
     [<6028e016>] dump_stack+0x2a/0x2c
     [<6007f6da>] __lock_acquire+0x515/0x15f2
     [<6007eb50>] lock_acquire+0x245/0x273
     [<6050d9f1>] __mutex_lock+0xbd/0x325
     [<6050dc76>] mutex_lock_nested+0x1d/0x1f
     [<6008e27e>] __setup_irq+0x11d/0x623
     [<6008e8ed>] request_threaded_irq+0x169/0x1a6
     [<60021eb0>] um_request_irq+0x1ee/0x24b
     [<600234ee>] write_sigio_irq+0x3b/0x76
     [<600383ca>] sigio_broken+0x146/0x2e4
     [<60020bd8>] do_one_initcall+0xde/0x281
    
    Because we hold sigio_spinlock and then get into requesting
    an interrupt with a mutex.
    
    Change the spinlock to a mutex to avoid that.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e16514f62912168d81143ecb5cf97b5bf57415a
Author: Chao Yu <chao@kernel.org>
Date:   Tue Sep 29 09:23:12 2020 +0800

    f2fs: fix to check segment boundary during SIT page readahead
    
    [ Upstream commit 6a257471fa42c8c9c04a875cd3a2a22db148e0f0 ]
    
    As syzbot reported:
    
    kernel BUG at fs/f2fs/segment.h:657!
    invalid opcode: 0000 [#1] PREEMPT SMP KASAN
    CPU: 1 PID: 16220 Comm: syz-executor.0 Not tainted 5.9.0-rc5-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:f2fs_ra_meta_pages+0xa51/0xdc0 fs/f2fs/segment.h:657
    Call Trace:
     build_sit_entries fs/f2fs/segment.c:4195 [inline]
     f2fs_build_segment_manager+0x4b8a/0xa3c0 fs/f2fs/segment.c:4779
     f2fs_fill_super+0x377d/0x6b80 fs/f2fs/super.c:3633
     mount_bdev+0x32e/0x3f0 fs/super.c:1417
     legacy_get_tree+0x105/0x220 fs/fs_context.c:592
     vfs_get_tree+0x89/0x2f0 fs/super.c:1547
     do_new_mount fs/namespace.c:2875 [inline]
     path_mount+0x1387/0x2070 fs/namespace.c:3192
     do_mount fs/namespace.c:3205 [inline]
     __do_sys_mount fs/namespace.c:3413 [inline]
     __se_sys_mount fs/namespace.c:3390 [inline]
     __x64_sys_mount+0x27f/0x300 fs/namespace.c:3390
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    @blkno in f2fs_ra_meta_pages could exceed max segment count, causing panic
    in following sanity check in current_sit_addr(), add check condition to
    avoid this issue.
    
    Reported-by: syzbot+3698081bcf0bb2d12174@syzkaller.appspotmail.com
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b457e563846b4b2e8772ed5d5fa4d6c3a2b22b8
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Sep 21 20:45:44 2020 +0800

    f2fs: add trace exit in exception path
    
    [ Upstream commit 9b66482282888d02832b7d90239e1cdb18e4b431 ]
    
    Missing the trace exit in f2fs_sync_dirty_inodes
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3477845d5d857176fe5a786a65b4442b88cd01dc
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Mon Sep 14 14:52:18 2020 +1000

    sparc64: remove mm_cpumask clearing to fix kthread_use_mm race
    
    [ Upstream commit bafb056ce27940c9994ea905336aa8f27b4f7275 ]
    
    The de facto (and apparently uncommented) standard for using an mm had,
    thanks to this code in sparc if nothing else, been that you must have a
    reference on mm_users *and that reference must have been obtained with
    mmget()*, i.e., from a thread with a reference to mm_users that had used
    the mm.
    
    The introduction of mmget_not_zero() in commit d2005e3f41d4
    ("userfaultfd: don't pin the user memory in userfaultfd_file_create()")
    allowed mm_count holders to aoperate on user mappings asynchronously
    from the actual threads using the mm, but they were not to load those
    mappings into their TLB (i.e., walking vmas and page tables is okay,
    kthread_use_mm() is not).
    
    io_uring 2b188cc1bb857 ("Add io_uring IO interface") added code which
    does a kthread_use_mm() from a mmget_not_zero() refcount.
    
    The problem with this is code which previously assumed mm == current->mm
    and mm->mm_users == 1 implies the mm will remain single-threaded at
    least until this thread creates another mm_users reference, has now
    broken.
    
    arch/sparc/kernel/smp_64.c:
    
        if (atomic_read(&mm->mm_users) == 1) {
            cpumask_copy(mm_cpumask(mm), cpumask_of(cpu));
            goto local_flush_and_out;
        }
    
    vs fs/io_uring.c
    
        if (unlikely(!(ctx->flags & IORING_SETUP_SQPOLL) ||
                     !mmget_not_zero(ctx->sqo_mm)))
            return -EFAULT;
        kthread_use_mm(ctx->sqo_mm);
    
    mmget_not_zero() could come in right after the mm_users == 1 test, then
    kthread_use_mm() which sets its CPU in the mm_cpumask. That update could
    be lost if cpumask_copy() occurs afterward.
    
    I propose we fix this by allowing mmget_not_zero() to be a first-class
    reference, and not have this obscure undocumented and unchecked
    restriction.
    
    The basic fix for sparc64 is to remove its mm_cpumask clearing code. The
    optimisation could be effectively restored by sending IPIs to mm_cpumask
    members and having them remove themselves from mm_cpumask. This is more
    tricky so I leave it as an exercise for someone with a sparc64 SMP.
    powerpc has a (currently similarly broken) example.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Acked-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200914045219.3736466-4-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2bca8712a1984de775baf4c37064da989ef63a5
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Mon Sep 14 14:52:17 2020 +1000

    powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
    
    [ Upstream commit 66acd46080bd9e5ad2be4b0eb1d498d5145d058e ]
    
    powerpc uses IPIs in some situations to switch a kernel thread away
    from a lazy tlb mm, which is subject to the TLB flushing race
    described in the changelog introducing ARCH_WANT_IRQS_OFF_ACTIVATE_MM.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200914045219.3736466-3-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f3897fbe51fce27298c22999bfc3c9e72b37908
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Tue Aug 4 10:54:05 2020 +1000

    powerpc/powernv/smp: Fix spurious DBG() warning
    
    [ Upstream commit f6bac19cf65c5be21d14a0c9684c8f560f2096dd ]
    
    When building with W=1 we get the following warning:
    
     arch/powerpc/platforms/powernv/smp.c: In function ‘pnv_smp_cpu_kill_self’:
     arch/powerpc/platforms/powernv/smp.c:276:16: error: suggest braces around
            empty body in an ‘if’ statement [-Werror=empty-body]
       276 |      cpu, srr1);
           |                ^
     cc1: all warnings being treated as errors
    
    The full context is this block:
    
     if (srr1 && !generic_check_cpu_restart(cpu))
            DBG("CPU%d Unexpected exit while offline srr1=%lx!\n",
                            cpu, srr1);
    
    When building with DEBUG undefined DBG() expands to nothing and GCC emits
    the warning due to the lack of braces around an empty statement.
    
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200804005410.146094-2-oohall@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 112f61990a8b218374cf539923ee13a8df661bff
Author: Mateusz Nosek <mateusznosek0@gmail.com>
Date:   Sun Sep 27 02:08:58 2020 +0200

    futex: Fix incorrect should_fail_futex() handling
    
    [ Upstream commit 921c7ebd1337d1a46783d7e15a850e12aed2eaa0 ]
    
    If should_futex_fail() returns true in futex_wake_pi(), then the 'ret'
    variable is set to -EFAULT and then immediately overwritten. So the failure
    injection is non-functional.
    
    Fix it by actually leaving the function and returning -EFAULT.
    
    The Fixes tag is kinda blury because the initial commit which introduced
    failure injection was already sloppy, but the below mentioned commit broke
    it completely.
    
    [ tglx: Massaged changelog ]
    
    Fixes: 6b4f4bc9cb22 ("locking/futex: Allow low-level atomic operations to return -EAGAIN")
    Signed-off-by: Mateusz Nosek <mateusznosek0@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20200927000858.24219-1-mateusznosek0@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2092d73305b83373018d7ccf86cd2e744377e0b6
Author: Amit Cohen <amcohen@nvidia.com>
Date:   Sat Oct 24 16:37:33 2020 +0300

    mlxsw: core: Fix use-after-free in mlxsw_emad_trans_finish()
    
    [ Upstream commit 0daf2bf5a2dcf33d446b76360908f109816e2e21 ]
    
    Each EMAD transaction stores the skb used to issue the EMAD request
    ('trans->tx_skb') so that the request could be retried in case of a
    timeout. The skb can be freed when a corresponding response is received
    or as part of the retry logic (e.g., failed retransmit, exceeded maximum
    number of retries).
    
    The two tasks (i.e., response processing and retransmits) are
    synchronized by the atomic 'trans->active' field which ensures that
    responses to inactive transactions are ignored.
    
    In case of a failed retransmit the transaction is finished and all of
    its resources are freed. However, the current code does not mark it as
    inactive. Syzkaller was able to hit a race condition in which a
    concurrent response is processed while the transaction's resources are
    being freed, resulting in a use-after-free [1].
    
    Fix the issue by making sure to mark the transaction as inactive after a
    failed retransmit and free its resources only if a concurrent task did
    not already do that.
    
    [1]
    BUG: KASAN: use-after-free in consume_skb+0x30/0x370
    net/core/skbuff.c:833
    Read of size 4 at addr ffff88804f570494 by task syz-executor.0/1004
    
    CPU: 0 PID: 1004 Comm: syz-executor.0 Not tainted 5.8.0-rc7+ #68
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xf6/0x16e lib/dump_stack.c:118
     print_address_description.constprop.0+0x1c/0x250
    mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     check_memory_region_inline mm/kasan/generic.c:186 [inline]
     check_memory_region+0x14e/0x1b0 mm/kasan/generic.c:192
     instrument_atomic_read include/linux/instrumented.h:56 [inline]
     atomic_read include/asm-generic/atomic-instrumented.h:27 [inline]
     refcount_read include/linux/refcount.h:147 [inline]
     skb_unref include/linux/skbuff.h:1044 [inline]
     consume_skb+0x30/0x370 net/core/skbuff.c:833
     mlxsw_emad_trans_finish+0x64/0x1c0 drivers/net/ethernet/mellanox/mlxsw/core.c:592
     mlxsw_emad_process_response drivers/net/ethernet/mellanox/mlxsw/core.c:651 [inline]
     mlxsw_emad_rx_listener_func+0x5c9/0xac0 drivers/net/ethernet/mellanox/mlxsw/core.c:672
     mlxsw_core_skb_receive+0x4df/0x770 drivers/net/ethernet/mellanox/mlxsw/core.c:2063
     mlxsw_pci_cqe_rdq_handle drivers/net/ethernet/mellanox/mlxsw/pci.c:595 [inline]
     mlxsw_pci_cq_tasklet+0x12a6/0x2520 drivers/net/ethernet/mellanox/mlxsw/pci.c:651
     tasklet_action_common.isra.0+0x13f/0x3e0 kernel/softirq.c:550
     __do_softirq+0x223/0x964 kernel/softirq.c:292
     asm_call_on_stack+0x12/0x20 arch/x86/entry/entry_64.S:711
    
    Allocated by task 1006:
     save_stack+0x1b/0x40 mm/kasan/common.c:48
     set_track mm/kasan/common.c:56 [inline]
     __kasan_kmalloc mm/kasan/common.c:494 [inline]
     __kasan_kmalloc.constprop.0+0xc2/0xd0 mm/kasan/common.c:467
     slab_post_alloc_hook mm/slab.h:586 [inline]
     slab_alloc_node mm/slub.c:2824 [inline]
     slab_alloc mm/slub.c:2832 [inline]
     kmem_cache_alloc+0xcd/0x2e0 mm/slub.c:2837
     __build_skb+0x21/0x60 net/core/skbuff.c:311
     __netdev_alloc_skb+0x1e2/0x360 net/core/skbuff.c:464
     netdev_alloc_skb include/linux/skbuff.h:2810 [inline]
     mlxsw_emad_alloc drivers/net/ethernet/mellanox/mlxsw/core.c:756 [inline]
     mlxsw_emad_reg_access drivers/net/ethernet/mellanox/mlxsw/core.c:787 [inline]
     mlxsw_core_reg_access_emad+0x1ab/0x1420 drivers/net/ethernet/mellanox/mlxsw/core.c:1817
     mlxsw_reg_trans_query+0x39/0x50 drivers/net/ethernet/mellanox/mlxsw/core.c:1831
     mlxsw_sp_sb_pm_occ_clear drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c:260 [inline]
     mlxsw_sp_sb_occ_max_clear+0xbff/0x10a0 drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c:1365
     mlxsw_devlink_sb_occ_max_clear+0x76/0xb0 drivers/net/ethernet/mellanox/mlxsw/core.c:1037
     devlink_nl_cmd_sb_occ_max_clear_doit+0x1ec/0x280 net/core/devlink.c:1765
     genl_family_rcv_msg_doit net/netlink/genetlink.c:669 [inline]
     genl_family_rcv_msg net/netlink/genetlink.c:714 [inline]
     genl_rcv_msg+0x617/0x980 net/netlink/genetlink.c:731
     netlink_rcv_skb+0x152/0x440 net/netlink/af_netlink.c:2470
     genl_rcv+0x24/0x40 net/netlink/genetlink.c:742
     netlink_unicast_kernel net/netlink/af_netlink.c:1304 [inline]
     netlink_unicast+0x53a/0x750 net/netlink/af_netlink.c:1330
     netlink_sendmsg+0x850/0xd90 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0x150/0x190 net/socket.c:671
     ____sys_sendmsg+0x6d8/0x840 net/socket.c:2359
     ___sys_sendmsg+0xff/0x170 net/socket.c:2413
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2446
     do_syscall_64+0x56/0xa0 arch/x86/entry/common.c:384
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 73:
     save_stack+0x1b/0x40 mm/kasan/common.c:48
     set_track mm/kasan/common.c:56 [inline]
     kasan_set_free_info mm/kasan/common.c:316 [inline]
     __kasan_slab_free+0x12c/0x170 mm/kasan/common.c:455
     slab_free_hook mm/slub.c:1474 [inline]
     slab_free_freelist_hook mm/slub.c:1507 [inline]
     slab_free mm/slub.c:3072 [inline]
     kmem_cache_free+0xbe/0x380 mm/slub.c:3088
     kfree_skbmem net/core/skbuff.c:622 [inline]
     kfree_skbmem+0xef/0x1b0 net/core/skbuff.c:616
     __kfree_skb net/core/skbuff.c:679 [inline]
     consume_skb net/core/skbuff.c:837 [inline]
     consume_skb+0xe1/0x370 net/core/skbuff.c:831
     mlxsw_emad_trans_finish+0x64/0x1c0 drivers/net/ethernet/mellanox/mlxsw/core.c:592
     mlxsw_emad_transmit_retry.isra.0+0x9d/0xc0 drivers/net/ethernet/mellanox/mlxsw/core.c:613
     mlxsw_emad_trans_timeout_work+0x43/0x50 drivers/net/ethernet/mellanox/mlxsw/core.c:625
     process_one_work+0xa3e/0x17a0 kernel/workqueue.c:2269
     worker_thread+0x9e/0x1050 kernel/workqueue.c:2415
     kthread+0x355/0x470 kernel/kthread.c:291
     ret_from_fork+0x22/0x30 arch/x86/entry/entry_64.S:293
    
    The buggy address belongs to the object at ffff88804f5703c0
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 212 bytes inside of
     224-byte region [ffff88804f5703c0, ffff88804f5704a0)
    The buggy address belongs to the page:
    page:ffffea00013d5c00 refcount:1 mapcount:0 mapping:0000000000000000
    index:0x0
    flags: 0x100000000000200(slab)
    raw: 0100000000000200 dead000000000100 dead000000000122 ffff88806c625400
    raw: 0000000000000000 00000000000c000c 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff88804f570380: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
     ffff88804f570400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff88804f570480: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
                             ^
     ffff88804f570500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff88804f570580: 00 00 00 00 00 00 00 00 00 00 00 00 fc fc fc fc
    
    Fixes: caf7297e7ab5f ("mlxsw: core: Introduce support for asynchronous EMAD register access")
    Signed-off-by: Amit Cohen <amcohen@nvidia.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c37d26ecd4802bdd056c70273f55173617804f9e
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Wed Oct 14 07:30:51 2020 +0200

    x86/unwind/orc: Fix inactive tasks with stack pointer in %sp on GCC 10 compiled kernels
    
    [ Upstream commit f2ac57a4c49d40409c21c82d23b5706df9b438af ]
    
    GCC 10 optimizes the scheduler code differently than its predecessors.
    
    When CONFIG_DEBUG_SECTION_MISMATCH=y, the Makefile forces GCC not
    to inline some functions (-fno-inline-functions-called-once). Before GCC
    10, "no-inlined" __schedule() starts with the usual prologue:
    
      push %bp
      mov %sp, %bp
    
    So the ORC unwinder simply picks stack pointer from %bp and
    unwinds from __schedule() just perfectly:
    
      $ cat /proc/1/stack
      [<0>] ep_poll+0x3e9/0x450
      [<0>] do_epoll_wait+0xaa/0xc0
      [<0>] __x64_sys_epoll_wait+0x1a/0x20
      [<0>] do_syscall_64+0x33/0x40
      [<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    But now, with GCC 10, there is no %bp prologue in __schedule():
    
      $ cat /proc/1/stack
      <nothing>
    
    The ORC entry of the point in __schedule() is:
    
      sp:sp+88 bp:last_sp-48 type:call end:0
    
    In this case, nobody subtracts sizeof "struct inactive_task_frame" in
    __unwind_start(). The struct is put on the stack by __switch_to_asm() and
    only then __switch_to_asm() stores %sp to task->thread.sp. But we start
    unwinding from a point in __schedule() (stored in frame->ret_addr by
    'call') and not in __switch_to_asm().
    
    So for these example values in __unwind_start():
    
      sp=ffff94b50001fdc8 bp=ffff8e1f41d29340 ip=__schedule+0x1f0
    
    The stack is:
    
      ffff94b50001fdc8: ffff8e1f41578000 # struct inactive_task_frame
      ffff94b50001fdd0: 0000000000000000
      ffff94b50001fdd8: ffff8e1f41d29340
      ffff94b50001fde0: ffff8e1f41611d40 # ...
      ffff94b50001fde8: ffffffff93c41920 # bx
      ffff94b50001fdf0: ffff8e1f41d29340 # bp
      ffff94b50001fdf8: ffffffff9376cad0 # ret_addr (and end of the struct)
    
    0xffffffff9376cad0 is __schedule+0x1f0 (after the call to
    __switch_to_asm).  Now follow those 88 bytes from the ORC entry (sp+88).
    The entry is correct, __schedule() really pushes 48 bytes (8*7) + 32 bytes
    via subq to store some local values (like 4U below). So to unwind, look
    at the offset 88-sizeof(long) = 0x50 from here:
    
      ffff94b50001fe00: ffff8e1f41578618
      ffff94b50001fe08: 00000cc000000255
      ffff94b50001fe10: 0000000500000004
      ffff94b50001fe18: 7793fab6956b2d00 # NOTE (see below)
      ffff94b50001fe20: ffff8e1f41578000
      ffff94b50001fe28: ffff8e1f41578000
      ffff94b50001fe30: ffff8e1f41578000
      ffff94b50001fe38: ffff8e1f41578000
      ffff94b50001fe40: ffff94b50001fed8
      ffff94b50001fe48: ffff8e1f41577ff0
      ffff94b50001fe50: ffffffff9376cf12
    
    Here                ^^^^^^^^^^^^^^^^ is the correct ret addr from
    __schedule(). It translates to schedule+0x42 (insn after a call to
    __schedule()).
    
    BUT, unwind_next_frame() tries to take the address starting from
    0xffff94b50001fdc8. That is exactly from thread.sp+88-sizeof(long) =
    0xffff94b50001fdc8+88-8 = 0xffff94b50001fe18, which is garbage marked as
    NOTE above. So this quits the unwinding as 7793fab6956b2d00 is obviously
    not a kernel address.
    
    There was a fix to skip 'struct inactive_task_frame' in
    unwind_get_return_address_ptr in the following commit:
    
      187b96db5ca7 ("x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks")
    
    But we need to skip the struct already in the unwinder proper. So
    subtract the size (increase the stack pointer) of the structure in
    __unwind_start() directly. This allows for removal of the code added by
    commit 187b96db5ca7 completely, as the address is now at
    '(unsigned long *)state->sp - 1', the same as in the generic case.
    
    [ mingo: Cleaned up the changelog a bit, for better readability. ]
    
    Fixes: ee9f8fce9964 ("x86/unwind: Add the ORC unwinder")
    Bug: https://bugzilla.suse.com/show_bug.cgi?id=1176907
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20201014053051.24199-1-jslaby@suse.cz
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d6d4ed1758f311d0f0283ad48b11dbd0445b6f0
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Jan 22 16:20:21 2019 -0800

    fscrypt: return -EXDEV for incompatible rename or link into encrypted dir
    
    commit f5e55e777cc93eae1416f0fa4908e8846b6d7825 upstream.
    
    Currently, trying to rename or link a regular file, directory, or
    symlink into an encrypted directory fails with EPERM when the source
    file is unencrypted or is encrypted with a different encryption policy,
    and is on the same mountpoint.  It is correct for the operation to fail,
    but the choice of EPERM breaks tools like 'mv' that know to copy rather
    than rename if they see EXDEV, but don't know what to do with EPERM.
    
    Our original motivation for EPERM was to encourage users to securely
    handle their data.  Encrypting files by "moving" them into an encrypted
    directory can be insecure because the unencrypted data may remain in
    free space on disk, where it can later be recovered by an attacker.
    It's much better to encrypt the data from the start, or at least try to
    securely delete the source data e.g. using the 'shred' program.
    
    However, the current behavior hasn't been effective at achieving its
    goal because users tend to be confused, hack around it, and complain;
    see e.g. https://github.com/google/fscrypt/issues/76.  And in some cases
    it's actually inconsistent or unnecessary.  For example, 'mv'-ing files
    between differently encrypted directories doesn't work even in cases
    where it can be secure, such as when in userspace the same passphrase
    protects both directories.  Yet, you *can* already 'mv' unencrypted
    files into an encrypted directory if the source files are on a different
    mountpoint, even though doing so is often insecure.
    
    There are probably better ways to teach users to securely handle their
    files.  For example, the 'fscrypt' userspace tool could provide a
    command that migrates unencrypted files into an encrypted directory,
    acting like 'shred' on the source files and providing appropriate
    warnings depending on the type of the source filesystem and disk.
    
    Receiving errors on unimportant files might also force some users to
    disable encryption, thus making the behavior counterproductive.  It's
    desirable to make encryption as unobtrusive as possible.
    
    Therefore, change the error code from EPERM to EXDEV so that tools
    looking for EXDEV will fall back to a copy.
    
    This, of course, doesn't prevent users from still doing the right things
    to securely manage their files.  Note that this also matches the
    behavior when a file is renamed between two project quota hierarchies;
    so there's precedent for using EXDEV for things other than mountpoints.
    
    xfstests generic/398 will require an update with this change.
    
    [Rewritten from an earlier patch series by Michael Halcrow.]
    
    Cc: Michael Halcrow <mhalcrow@google.com>
    Cc: Joe Richey <joerichey@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35e6ec5177e7d00b9749f778d86465caaa68ea6d
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Sep 17 15:09:20 2020 +0200

    ata: sata_rcar: Fix DMA boundary mask
    
    commit df9c590986fdb6db9d5636d6cd93bc919c01b451 upstream.
    
    Before commit 9495b7e92f716ab2 ("driver core: platform: Initialize
    dma_parms for platform devices"), the R-Car SATA device didn't have DMA
    parameters.  Hence the DMA boundary mask supplied by its driver was
    silently ignored, as __scsi_init_queue() doesn't check the return value
    of dma_set_seg_boundary(), and the default value of 0xffffffff was used.
    
    Now the device has gained DMA parameters, the driver-supplied value is
    used, and the following warning is printed on Salvator-XS:
    
        DMA-API: sata_rcar ee300000.sata: mapping sg segment across boundary [start=0x00000000ffffe000] [end=0x00000000ffffefff] [boundary=0x000000001ffffffe]
        WARNING: CPU: 5 PID: 38 at kernel/dma/debug.c:1233 debug_dma_map_sg+0x298/0x300
    
    (the range of start/end values depend on whether IOMMU support is
     enabled or not)
    
    The issue here is that SATA_RCAR_DMA_BOUNDARY doesn't have bit 0 set, so
    any typical end value, which is odd, will trigger the check.
    
    Fix this by increasing the DMA boundary value by 1.
    
    This also fixes the following WRITE DMA EXT timeout issue:
    
        # dd if=/dev/urandom of=/mnt/de1/file1-1024M bs=1M count=1024
        ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
        ata1.00: failed command: WRITE DMA EXT
        ata1.00: cmd 35/00:00:00:e6:0c/00:0a:00:00:00/e0 tag 0 dma 1310720 out
        res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
        ata1.00: status: { DRDY }
    
    as seen by Shimoda-san since commit 429120f3df2dba2b ("block: fix
    splitting segments on boundary masks").
    
    Fixes: 8bfbeed58665dbbf ("sata_rcar: correct 'sata_rcar_sht'")
    Fixes: 9495b7e92f716ab2 ("driver core: platform: Initialize dma_parms for platform devices")
    Fixes: 429120f3df2dba2b ("block: fix splitting segments on boundary masks")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5858529b666e6cd84ce8e67eaa6e17b8fc1454b
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Mon Apr 27 14:50:37 2020 -0500

    mtd: lpddr: Fix bad logic in print_drs_error
    
    commit 1c9c02bb22684f6949d2e7ddc0a3ff364fd5a6fc upstream.
    
    Update logic for broken test. Use a more common logging style.
    
    It appears the logic in this function is broken for the
    consecutive tests of
    
            if (prog_status & 0x3)
                    ...
            else if (prog_status & 0x2)
                    ...
            else (prog_status & 0x1)
                    ...
    
    Likely the first test should be
    
            if ((prog_status & 0x3) == 0x3)
    
    Found by inspection of include files using printk.
    
    Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
    Cc: stable@vger.kernel.org
    Reported-by: Joe Perches <joe@perches.com>
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/3fb0e29f5b601db8be2938a01d974b00c8788501.1588016644.git.gustavo@embeddedor.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9eb72a00abdad7780677416a4146001cf70acfbb
Author: Jia-Ju Bai <baijiaju@tsinghua.edu.cn>
Date:   Sun Aug 2 21:29:49 2020 +0800

    p54: avoid accessing the data mapped to streaming DMA
    
    commit 478762855b5ae9f68fa6ead1edf7abada70fcd5f upstream.
    
    In p54p_tx(), skb->data is mapped to streaming DMA on line 337:
      mapping = pci_map_single(..., skb->data, ...);
    
    Then skb->data is accessed on line 349:
      desc->device_addr = ((struct p54_hdr *)skb->data)->req_id;
    
    This access may cause data inconsistency between CPU cache and hardware.
    
    To fix this problem, ((struct p54_hdr *)skb->data)->req_id is stored in
    a local variable before DMA mapping, and then the driver accesses this
    local variable instead of skb->data.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jia-Ju Bai <baijiaju@tsinghua.edu.cn>
    Acked-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200802132949.26788-1-baijiaju@tsinghua.edu.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1d98a59f1f5d4051ca1ae301709b2efec785ecb
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Sep 18 10:36:50 2020 +0200

    fuse: fix page dereference after free
    
    commit d78092e4937de9ce55edcb4ee4c5e3c707be0190 upstream.
    
    After unlock_request() pages from the ap->pages[] array may be put (e.g. by
    aborting the connection) and the pages can be freed.
    
    Prevent use after free by grabbing a reference to the page before calling
    unlock_request().
    
    The original patch was created by Pradeep P V K.
    
    Reported-by: Pradeep P V K <ppvk@codeaurora.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d23fef2d05fba40d2fbb31a7e068a5eb543ec228
Author: Juergen Gross <jgross@suse.com>
Date:   Fri Sep 25 16:07:51 2020 +0200

    x86/xen: disable Firmware First mode for correctable memory errors
    
    commit d759af38572f97321112a0852353613d18126038 upstream.
    
    When running as Xen dom0 the kernel isn't responsible for selecting the
    error handling mode, this should be handled by the hypervisor.
    
    So disable setting FF mode when running as Xen pv guest. Not doing so
    might result in boot splats like:
    
    [    7.509696] HEST: Enabling Firmware First mode for corrected errors.
    [    7.510382] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 2.
    [    7.510383] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 3.
    [    7.510384] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 4.
    [    7.510384] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 5.
    [    7.510385] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 6.
    [    7.510386] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 7.
    [    7.510386] mce: [Firmware Bug]: Ignoring request to disable invalid MCA bank 8.
    
    Reason is that the HEST ACPI table contains the real number of MCA
    banks, while the hypervisor is emulating only 2 banks for guests.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20200925140751.31381-1-jgross@suse.com
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e9ec107f92c6c70cc47da40690c0c6edd8faf94
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Tue Sep 8 16:47:36 2020 -0500

    arch/x86/amd/ibs: Fix re-arming IBS Fetch
    
    commit 221bfce5ebbdf72ff08b3bf2510ae81058ee568b upstream.
    
    Stephane Eranian found a bug in that IBS' current Fetch counter was not
    being reset when the driver would write the new value to clear it along
    with the enable bit set, and found that adding an MSR write that would
    first disable IBS Fetch would make IBS Fetch reset its current count.
    
    Indeed, the PPR for AMD Family 17h Model 31h B0 55803 Rev 0.54 - Sep 12,
    2019 states "The periodic fetch counter is set to IbsFetchCnt [...] when
    IbsFetchEn is changed from 0 to 1."
    
    Explicitly set IbsFetchEn to 0 and then to 1 when re-enabling IBS Fetch,
    so the driver properly resets the internal counter to 0 and IBS
    Fetch starts counting again.
    
    A family 15h machine tested does not have this problem, and the extra
    wrmsr is also not needed on Family 19h, so only do the extra wrmsr on
    families 16h through 18h.
    
    Reported-by: Stephane Eranian <stephane.eranian@google.com>
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    [peterz: optimized]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9cef8ed2bedbea1a6e533c9e555c2f5c8f884c0
Author: Tung Nguyen <tung.q.nguyen@dektech.com.au>
Date:   Tue Oct 27 10:24:03 2020 +0700

    tipc: fix memory leak caused by tipc_buf_append()
    
    [ Upstream commit ceb1eb2fb609c88363e06618b8d4bbf7815a4e03 ]
    
    Commit ed42989eab57 ("tipc: fix the skb_unshare() in tipc_buf_append()")
    replaced skb_unshare() with skb_copy() to not reduce the data reference
    counter of the original skb intentionally. This is not the correct
    way to handle the cloned skb because it causes memory leak in 2
    following cases:
     1/ Sending multicast messages via broadcast link
      The original skb list is cloned to the local skb list for local
      destination. After that, the data reference counter of each skb
      in the original list has the value of 2. This causes each skb not
      to be freed after receiving ACK:
      tipc_link_advance_transmq()
      {
       ...
       /* release skb */
       __skb_unlink(skb, &l->transmq);
       kfree_skb(skb); <-- memory exists after being freed
      }
    
     2/ Sending multicast messages via replicast link
      Similar to the above case, each skb cannot be freed after purging
      the skb list:
      tipc_mcast_xmit()
      {
       ...
       __skb_queue_purge(pkts); <-- memory exists after being freed
      }
    
    This commit fixes this issue by using skb_unshare() instead. Besides,
    to avoid use-after-free error reported by KASAN, the pointer to the
    fragment is set to NULL before calling skb_unshare() to make sure that
    the original skb is not freed after freeing the fragment 2 times in
    case skb_unshare() returns NULL.
    
    Fixes: ed42989eab57 ("tipc: fix the skb_unshare() in tipc_buf_append()")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Reported-by: Thang Hoang Ngo <thang.h.ngo@dektech.com.au>
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Link: https://lore.kernel.org/r/20201027032403.1823-1-tung.q.nguyen@dektech.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c23d4e7b40ded4bd56cd82a67272f574267ef64
Author: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Date:   Mon Oct 26 05:21:30 2020 -0500

    ravb: Fix bit fields checking in ravb_hwtstamp_get()
    
    [ Upstream commit 68b9f0865b1ef545da180c57d54b82c94cb464a4 ]
    
    In the function ravb_hwtstamp_get() in ravb_main.c with the existing
    values for RAVB_RXTSTAMP_TYPE_V2_L2_EVENT (0x2) and RAVB_RXTSTAMP_TYPE_ALL
    (0x6)
    
    if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_V2_L2_EVENT)
            config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
    else if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_ALL)
            config.rx_filter = HWTSTAMP_FILTER_ALL;
    
    if the test on RAVB_RXTSTAMP_TYPE_ALL should be true,
    it will never be reached.
    
    This issue can be verified with 'hwtstamp_config' testing program
    (tools/testing/selftests/net/hwtstamp_config.c). Setting filter type
    to ALL and subsequent retrieving it gives incorrect value:
    
    $ hwtstamp_config eth0 OFF ALL
    flags = 0
    tx_type = OFF
    rx_filter = ALL
    $ hwtstamp_config eth0
    flags = 0
    tx_type = OFF
    rx_filter = PTP_V2_L2_EVENT
    
    Correct this by converting if-else's to switch.
    
    Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
    Reported-by: Julia Lawall <julia.lawall@inria.fr>
    Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Link: https://lore.kernel.org/r/20201026102130.29368-1-andrew_gabbasov@mentor.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7dc6fee4501ff6f670afb02f4f59eb812d3cf85
Author: Masahiro Fujiwara <fujiwara.masahiro@gmail.com>
Date:   Tue Oct 27 20:48:46 2020 +0900

    gtp: fix an use-before-init in gtp_newlink()
    
    [ Upstream commit 51467431200b91682b89d31317e35dcbca1469ce ]
    
    *_pdp_find() from gtp_encap_recv() would trigger a crash when a peer
    sends GTP packets while creating new GTP device.
    
    RIP: 0010:gtp1_pdp_find.isra.0+0x68/0x90 [gtp]
    <SNIP>
    Call Trace:
     <IRQ>
     gtp_encap_recv+0xc2/0x2e0 [gtp]
     ? gtp1_pdp_find.isra.0+0x90/0x90 [gtp]
     udp_queue_rcv_one_skb+0x1fe/0x530
     udp_queue_rcv_skb+0x40/0x1b0
     udp_unicast_rcv_skb.isra.0+0x78/0x90
     __udp4_lib_rcv+0x5af/0xc70
     udp_rcv+0x1a/0x20
     ip_protocol_deliver_rcu+0xc5/0x1b0
     ip_local_deliver_finish+0x48/0x50
     ip_local_deliver+0xe5/0xf0
     ? ip_protocol_deliver_rcu+0x1b0/0x1b0
    
    gtp_encap_enable() should be called after gtp_hastable_new() otherwise
    *_pdp_find() will access the uninitialized hash table.
    
    Fixes: 1e3a3abd8b28 ("gtp: make GTP sockets in gtp_newlink optional")
    Signed-off-by: Masahiro Fujiwara <fujiwara.masahiro@gmail.com>
    Link: https://lore.kernel.org/r/20201027114846.3924-1-fujiwara.masahiro@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 917acdfd746183e1333d0292e6b0096dbad1e8db
Author: Michael Schaller <misch@google.com>
Date:   Fri Sep 25 09:45:02 2020 +0200

    efivarfs: Replace invalid slashes with exclamation marks in dentries.
    
    commit 336af6a4686d885a067ecea8c3c3dd129ba4fc75 upstream.
    
    Without this patch efivarfs_alloc_dentry creates dentries with slashes in
    their name if the respective EFI variable has slashes in its name. This in
    turn causes EIO on getdents64, which prevents a complete directory listing
    of /sys/firmware/efi/efivars/.
    
    This patch replaces the invalid shlashes with exclamation marks like
    kobject_set_name_vargs does for /sys/firmware/efi/vars/ to have consistently
    named dentries under /sys/firmware/efi/vars/ and /sys/firmware/efi/efivars/.
    
    Signed-off-by: Michael Schaller <misch@google.com>
    Link: https://lore.kernel.org/r/20200925074502.150448-1-misch@google.com
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4653522ccd0cb7b1a73356ec56a075b862e5776a
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Fri Oct 16 10:53:39 2020 -0700

    arm64: link with -z norelro regardless of CONFIG_RELOCATABLE
    
    commit 3b92fa7485eba16b05166fddf38ab42f2ff6ab95 upstream.
    
    With CONFIG_EXPERT=y, CONFIG_KASAN=y, CONFIG_RANDOMIZE_BASE=n,
    CONFIG_RELOCATABLE=n, we observe the following failure when trying to
    link the kernel image with LD=ld.lld:
    
    error: section: .exit.data is not contiguous with other relro sections
    
    ld.lld defaults to -z relro while ld.bfd defaults to -z norelro. This
    was previously fixed, but only for CONFIG_RELOCATABLE=y.
    
    Fixes: 3bbd3db86470 ("arm64: relocatable: fix inconsistencies in linker script and options")
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20201016175339.2429280-1-ndesaulniers@google.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78afc1990adce05eef647237577d4063213ae3e2
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Thu Sep 17 08:56:11 2020 +0200

    scripts/setlocalversion: make git describe output more reliable
    
    commit 548b8b5168c90c42e88f70fcf041b4ce0b8e7aa8 upstream.
    
    When building for an embedded target using Yocto, we're sometimes
    observing that the version string that gets built into vmlinux (and
    thus what uname -a reports) differs from the path under /lib/modules/
    where modules get installed in the rootfs, but only in the length of
    the -gabc123def suffix. Hence modprobe always fails.
    
    The problem is that Yocto has the concept of "sstate" (shared state),
    which allows different developers/buildbots/etc. to share build
    artifacts, based on a hash of all the metadata that went into building
    that artifact - and that metadata includes all dependencies (e.g. the
    compiler used etc.). That normally works quite well; usually a clean
    build (without using any sstate cache) done by one developer ends up
    being binary identical to a build done on another host. However, one
    thing that can cause two developers to end up with different builds
    [and thus make one's vmlinux package incompatible with the other's
    kernel-dev package], which is not captured by the metadata hashing, is
    this `git describe`: The output of that can be affected by
    
    (1) git version: before 2.11 git defaulted to a minimum of 7, since
    2.11 (git.git commit e6c587) the default is dynamic based on the
    number of objects in the repo
    (2) hence even if both run the same git version, the output can differ
    based on how many remotes are being tracked (or just lots of local
    development branches or plain old garbage)
    (3) and of course somebody could have a core.abbrev config setting in
    ~/.gitconfig
    
    So in order to avoid `uname -a` output relying on such random details
    of the build environment which are rather hard to ensure are
    consistent between developers and buildbots, make sure the abbreviated
    sha1 always consists of exactly 12 hex characters. That is consistent
    with the current rule for -stable patches, and is almost always enough
    to identify the head commit unambigously - in the few cases where it
    does not, the v5.4.3-00021- prefix would certainly nail it down.
    
    [Adapt to `` vs $() differences between 5.4 and upstream.]
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>