commit b136f0e9e9d79b8449d99ea701ade1e17a971826
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 5 19:42:42 2018 +0100

    Linux 4.9.143

commit 740f140b5dc4f7553a268d153fc816948cbc8cbd
Author: Chris Fries <cfries@google.com>
Date:   Mon Dec 3 11:56:19 2018 -0800

    kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
    
    (commit ae6b289a37890909fea0e4a1666e19377fa0ed2c upstream)
    
    Set the clang KBUILD_CFLAGS up before including arch/ Makefiles,
    so that ld-options (etc.) can work correctly.
    
    This fixes errors with clang such as ld-options trying to CC
    against your host architecture, but LD trying to link against
    your target architecture.
    
    Signed-off-by: Chris Fries <cfries@google.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [ND: adjusted context due to upstream having removed code above where I
    placed this block in this backport]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d075d215b5b8875fba153670e19560a2ffcdd45
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Mon Feb 6 11:22:46 2017 +0000

    efi/libstub: Make file I/O chunking x86-specific
    
    (commit b3879a4d3a31ef14265a52e8d941cf4b0f6627ae upstream)
    
    The ARM decompressor is finicky when it comes to uninitialized variables
    with local linkage, the reason being that it may relocate .text and .bss
    independently when executing from ROM. This is only possible if all
    references into .bss from .text are absolute, and this happens to be the
    case for references emitted under -fpic to symbols with external linkage,
    and so all .bss references must involve symbols with external linkage.
    
    When building the ARM stub using clang, the initialized local variable
    __chunk_size is optimized into a zero-initialized flag that indicates
    whether chunking is in effect or not. This flag is therefore emitted into
    .bss, which triggers the ARM decompressor's diagnostics, resulting in a
    failed build.
    
    Under UEFI, we never execute the decompressor from ROM, so the diagnostic
    makes little sense here. But we can easily work around the issue by making
    __chunk_size global instead.
    
    However, given that the file I/O chunking that is controlled by the
    __chunk_size variable is intended to work around known bugs on various
    x86 implementations of UEFI, we can simply make the chunking an x86
    specific feature. This is an improvement by itself, and also removes the
    need to parse the efi= options in the stub entirely.
    
    Tested-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1486380166-31868-8-git-send-email-ard.biesheuvel@linaro.org
    [ Small readability edits. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f35b5bd0c0ddda68b999084c5bb699e23c59efc
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Feb 1 18:01:17 2017 +0100

    workqueue: avoid clang warning
    
    (commit a45463cbf3f9dcdae683033c256f50bded513d6a upstream)
    
    Building with clang shows lots of warning like:
    
    drivers/amba/bus.c:447:8: warning: implicit conversion from 'long long' to 'int' changes value from 4294967248 to -48
          [-Wconstant-conversion]
    static DECLARE_DELAYED_WORK(deferred_retry_work, amba_deferred_retry_func);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    include/linux/workqueue.h:187:26: note: expanded from macro 'DECLARE_DELAYED_WORK'
            struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, 0)
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    include/linux/workqueue.h:177:10: note: expanded from macro '__DELAYED_WORK_INITIALIZER'
            .work = __WORK_INITIALIZER((n).work, (f)),                      \
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    include/linux/workqueue.h:170:10: note: expanded from macro '__WORK_INITIALIZER'
            .data = WORK_DATA_STATIC_INIT(),                                \
                    ^~~~~~~~~~~~~~~~~~~~~~~
    include/linux/workqueue.h:111:39: note: expanded from macro 'WORK_DATA_STATIC_INIT'
            ATOMIC_LONG_INIT(WORK_STRUCT_NO_POOL | WORK_STRUCT_STATIC)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
    include/asm-generic/atomic-long.h:32:41: note: expanded from macro 'ATOMIC_LONG_INIT'
     #define ATOMIC_LONG_INIT(i)     ATOMIC_INIT(i)
                                    ~~~~~~~~~~~~^~
    arch/arm/include/asm/atomic.h:21:27: note: expanded from macro 'ATOMIC_INIT'
     #define ATOMIC_INIT(i)  { (i) }
                            ~  ^
    
    This makes the type cast explicit, which shuts up the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e5b5cb7bf1ea17640929c940ce39c8b5c59b264
Author: Stefan Agner <stefan@agner.ch>
Date:   Sun Mar 25 20:09:56 2018 +0200

    ARM: trusted_foundations: do not use naked function
    
    (commit 4ea7bdc6b5b33427bbd3f41c333e21c1825462a3 upstream)
    
    As documented in GCC naked functions should only use basic ASM
    syntax. The extended ASM or mixture of basic ASM and "C" code is
    not guaranteed. Currently this works because it was hard coded
    to follow and check GCC behavior for arguments and register
    placement.
    
    Furthermore with clang using parameters in Extended asm in a
    naked function is not supported:
      arch/arm/firmware/trusted_foundations.c:47:10: error: parameter
              references not allowed in naked functions
                    : "r" (type), "r" (arg1), "r" (arg2)
                           ^
    
    Use a regular function to be more portable. This aligns also with
    the other SMC call implementations e.g. in qcom_scm-32.c and
    bcm_kona_smc.c.
    
    Cc: Dmitry Osipenko <digetx@gmail.com>
    Cc: Stephen Warren <swarren@nvidia.com>
    Cc: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b874a8751f9154ea88ad88bc6b044846ef3c8bab
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue May 8 16:27:26 2018 +0200

    bus: arm-cci: remove unnecessary unreachable()
    
    (commit 10d8713429d345867fc8998d6193b233c0cab28c upstream)
    
    Mixing asm and C code is not recommended in a naked function by
    gcc and leads to an error when using clang:
      drivers/bus/arm-cci.c:2107:2: error: non-ASM statement in naked
      function is not supported
            unreachable();
            ^
    
    While the function is marked __naked it actually properly return
    in asm. There is no need for the unreachable() call.
    
    GCC 7.2 generates identical object files before and after, other
    than (for obvious reasons) the line numbers generated by
    WANT_WARN_ON_SLOWPATH for all the WARN()s appearing later in the
    file.
    
    Suggested-by: Russell King <linux@arm.linux.org.uk>
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10479075c094a7f77abdfdf7a9d41477538a148c
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue May 8 22:50:38 2018 +0100

    ARM: 8767/1: add support for building ARM kernel with clang
    
    (commit c1c386681bd73c4fc28eb5cc91cf8b7be9b409ba upstream)
    
    Use cc-options call for compiler options which are not available
    in clang. With this patch an ARMv7 multi platform kernel can be
    successfully build using clang (tested with version 5.0.1).
    
    Based-on-patches-by: Behan Webster <behanw@converseincode.com>
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61cc8587f8e1d6dc4bd69532ebf717a87f374274
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue May 8 22:49:49 2018 +0100

    ARM: 8766/1: drop no-thumb-interwork in EABI mode
    
    (commit 22905a24306c8c312c2d66da9f90d09af0414f81 upstream)
    
    According to GCC documentation -m(no-)thumb-interwork is
    meaningless in AAPCS configurations. Also clang does not
    support the flag:
      clang-5.0: error: unknown argument: '-mno-thumb-interwork'
    
    Just drop -mno-thumb-interwork in AEABI configuration.
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb660794cd6179fa1b2d6890afb99c93d99ee2c8
Author: Alistair Strachan <astrachan@google.com>
Date:   Mon Dec 3 11:40:57 2018 -0800

    efi/libstub: arm: support building with clang
    
    (commit 41f1c48420709470c51ee0e54b6fb28b956bb4e0 upstream)
    
    When building with CONFIG_EFI and CONFIG_EFI_STUB on ARM, the libstub
    Makefile would use -mno-single-pic-base without checking it was
    supported by the compiler. As the ARM (32-bit) clang backend does not
    support this flag, the build would fail.
    
    This changes the Makefile to check the compiler's support for
    -mno-single-pic-base before using it, similar to c1c386681bd7 ("ARM:
    8767/1: add support for building ARM kernel with clang").
    
    Signed-off-by: Alistair Strachan <astrachan@google.com>
    Reviewed-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    [ND: adjusted due to missing commit ce279d374ff3 ("efi/libstub:
     Only disable stackleak plugin for arm64")]
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4c29e1b347aeea2a8bfd03b6927806d83d8a485
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Nov 14 01:57:03 2018 +0000

    misc: mic/scif: fix copy-paste error in scif_create_remote_lookup
    
    commit 6484a677294aa5d08c0210f2f387ebb9be646115 upstream.
    
    gcc '-Wunused-but-set-variable' warning:
    
    drivers/misc/mic/scif/scif_rma.c: In function 'scif_create_remote_lookup':
    drivers/misc/mic/scif/scif_rma.c:373:25: warning:
     variable 'vmalloc_num_pages' set but not used [-Wunused-but-set-variable]
    
    'vmalloc_num_pages' should be used to determine if the address is
    within the vmalloc range.
    
    Fixes: ba612aa8b487 ("misc: mic: SCIF memory registration and unregistration")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 140ee9b7aec9f11635ff2de2410158af33ce2525
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Nov 26 02:29:56 2018 +0000

    Drivers: hv: vmbus: check the creation_status in vmbus_establish_gpadl()
    
    commit eceb05965489784f24bbf4d61ba60e475a983016 upstream.
    
    This is a longstanding issue: if the vmbus upper-layer drivers try to
    consume too many GPADLs, the host may return with an error
    0xC0000044 (STATUS_QUOTA_EXCEEDED), but currently we forget to check
    the creation_status, and hence we can pass an invalid GPADL handle
    into the OPEN_CHANNEL message, and get an error code 0xc0000225 in
    open_info->response.open_result.status, and finally we hang in
    vmbus_open() -> "goto error_free_info" -> vmbus_teardown_gpadl().
    
    With this patch, we can exit gracefully on STATUS_QUOTA_EXCEEDED.
    
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c470638b6a61e30b753715d2e546456dccd9437
Author: Yu Zhao <yuzhao@google.com>
Date:   Fri Nov 30 14:09:03 2018 -0800

    mm: use swp_offset as key in shmem_replace_page()
    
    commit c1cb20d43728aa9b5393bd8d489bc85c142949b2 upstream.
    
    We changed the key of swap cache tree from swp_entry_t.val to
    swp_offset.  We need to do so in shmem_replace_page() as well.
    
    Hugh said:
     "shmem_replace_page() has been wrong since the day I wrote it: good
      enough to work on swap "type" 0, which is all most people ever use
      (especially those few who need shmem_replace_page() at all), but
      broken once there are any non-0 swp_type bits set in the higher order
      bits"
    
    Link: http://lkml.kernel.org/r/20181121215442.138545-1-yuzhao@google.com
    Fixes: f6ab1f7f6b2d ("mm, swap: use offset of swap entry as key of swap cache")
    Signed-off-by: Yu Zhao <yuzhao@google.com>
    Reviewed-by: Matthew Wilcox <willy@infradead.org>
    Acked-by: Hugh Dickins <hughd@google.com>
    Cc: <stable@vger.kernel.org>    [4.9+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06c2233ac246507e98022809ea4752dbfead9337
Author: Martin Kelly <martin@martingkelly.com>
Date:   Sun Oct 28 20:18:53 2018 -0700

    iio:st_magn: Fix enable device after trigger
    
    commit fe5192ac81ad0d4dfe1395d11f393f0513c15f7f upstream.
    
    Currently, we enable the device before we enable the device trigger. At
    high frequencies, this can cause interrupts that don't yet have a poll
    function associated with them and are thus treated as spurious. At high
    frequencies with level interrupts, this can even cause an interrupt storm
    of repeated spurious interrupts (~100,000 on my Beagleboard with the
    LSM9DS1 magnetometer). If these repeat too much, the interrupt will get
    disabled and the device will stop functioning.
    
    To prevent these problems, enable the device prior to enabling the device
    trigger, and disable the divec prior to disabling the trigger. This means
    there's no window of time during which the device creates interrupts but we
    have no trigger to answer them.
    
    Fixes: 90efe055629 ("iio: st_sensors: harden interrupt handling")
    Signed-off-by: Martin Kelly <martin@martingkelly.com>
    Tested-by: Denis Ciocca <denis.ciocca@st.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a978cfe599fbe87128a951db062ebe0a5339741
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Mon Nov 19 08:34:04 2018 +0200

    Revert "usb: dwc3: gadget: skip Set/Clear Halt when invalid"
    
    commit 38317f5c0f2faae5110854f36edad810f841d62f upstream.
    
    This reverts commit ffb80fc672c3a7b6afd0cefcb1524fb99917b2f3.
    
    Turns out that commit is wrong. Host controllers are allowed to use
    Clear Feature HALT as means to sync data toggle between host and
    periperal.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f887c6686769b24b23005f41177ed5324a88419
Author: Michael Niewöhner <linux@mniewoehner.de>
Date:   Sun Nov 25 17:57:33 2018 +0100

    usb: core: quirks: add RESET_RESUME quirk for Cherry G230 Stream series
    
    commit effd14f66cc1ef6701a19c5a56e39c35f4d395a5 upstream.
    
    Cherry G230 Stream 2.0 (G85-231) and 3.0 (G85-232) need this quirk to
    function correctly. This fixes a but where double pressing numlock locks
    up the device completely with need to replug the keyboard.
    
    Signed-off-by: Michael Niewöhner <linux@mniewoehner.de>
    Tested-by: Michael Niewöhner <linux@mniewoehner.de>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72c6bc47e0b54db16f2b1a04656bb590d7d7117e
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Nov 23 08:42:19 2018 +0000

    USB: usb-storage: Add new IDs to ums-realtek
    
    commit a84a1bcc992f0545a51d2e120b8ca2ef20e2ea97 upstream.
    
    There are two new Realtek card readers require ums-realtek to work
    correctly.
    
    Add the new IDs to support them.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36d8dbf23fc7458fdb6ca683ffa1e565fd7fec23
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Tue Nov 20 10:11:21 2018 +0200

    btrfs: release metadata before running delayed refs
    
    We want to release the unused reservation we have since it refills the
    delayed refs reserve, which will make everything go smoother when
    running the delayed refs if we're short on our reservation.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Liu Bo <bo.liu@linux.alibaba.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07d8abace810e8e0af93638b06bcf1e3f6a1845a
Author: Richard Genoud <richard.genoud@gmail.com>
Date:   Tue Nov 27 17:06:35 2018 +0100

    dmaengine: at_hdmac: fix module unloading
    
    commit 77e75fda94d2ebb86aa9d35fb1860f6395bf95de upstream.
    
    of_dma_controller_free() was not called on module onloading.
    This lead to a soft lockup:
    watchdog: BUG: soft lockup - CPU#0 stuck for 23s!
    Modules linked in: at_hdmac [last unloaded: at_hdmac]
    when of_dma_request_slave_channel() tried to call ofdma->of_dma_xlate().
    
    Cc: stable@vger.kernel.org
    Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding")
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0daa7fc2c50d4a0ca0f12ee3328d8866a37d01ef
Author: Richard Genoud <richard.genoud@gmail.com>
Date:   Tue Nov 27 17:06:34 2018 +0100

    dmaengine: at_hdmac: fix memory leak in at_dma_xlate()
    
    commit 98f5f932254b88ce828bc8e4d1642d14e5854caa upstream.
    
    The leak was found when opening/closing a serial port a great number of
    time, increasing kmalloc-32 in slabinfo.
    
    Each time the port was opened, dma_request_slave_channel() was called.
    Then, in at_dma_xlate(), atslave was allocated with devm_kzalloc() and
    never freed. (Well, it was free at module unload, but that's not what we
    want).
    So, here, kzalloc is more suited for the job since it has to be freed in
    atc_free_chan_resources().
    
    Cc: stable@vger.kernel.org
    Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding")
    Reported-by: Mario Forner <m.forner@be4energy.com>
    Suggested-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e443d70a1b3aabb4c73425ea0c650c790513e58
Author: Pan Bian <bianpan2016@163.com>
Date:   Sun Nov 25 08:58:02 2018 +0800

    ext2: fix potential use after free
    
    commit ecebf55d27a11538ea84aee0be643dd953f830d5 upstream.
    
    The function ext2_xattr_set calls brelse(bh) to drop the reference count
    of bh. After that, bh may be freed. However, following brelse(bh),
    it reads bh->b_data via macro HDR(bh). This may result in a
    use-after-free bug. This patch moves brelse(bh) after reading field.
    
    CC: stable@vger.kernel.org
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c4a8f6f627c2ade859ef71c179052890658c844
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 23 18:18:30 2018 +0100

    ALSA: sparc: Fix invalid snd_free_pages() at error path
    
    commit 9a20332ab373b1f8f947e0a9c923652b32dab031 upstream.
    
    Some spurious calls of snd_free_pages() have been overlooked and
    remain in the error paths of sparc cs4231 driver code.  Since
    runtime->dma_area is managed by the PCM core helper, we shouldn't
    release manually.
    
    Drop the superfluous calls.
    
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3ff60d897dd82b4a6bcbd0c8d3ac708a841af84
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 22 14:36:17 2018 +0100

    ALSA: control: Fix race between adding and removing a user element
    
    commit e1a7bfe3807974e66f971f2589d4e0197ec0fced upstream.
    
    The procedure for adding a user control element has some window opened
    for race against the concurrent removal of a user element.  This was
    caught by syzkaller, hitting a KASAN use-after-free error.
    
    This patch addresses the bug by wrapping the whole procedure to add a
    user control element with the card->controls_rwsem, instead of only
    around the increment of card->user_ctl_count.
    
    This required a slight code refactoring, too.  The function
    snd_ctl_add() is split to two parts: a core function to add the
    control element and a part calling it.  The former is called from the
    function for adding a user control element inside the controls_rwsem.
    
    One change to be noted is that snd_ctl_notify() for adding a control
    element gets called inside the controls_rwsem as well while it was
    called outside the rwsem.  But this should be OK, as snd_ctl_notify()
    takes another (finer) rwlock instead of rwsem, and the call of
    snd_ctl_notify() inside rwsem is already done in another code path.
    
    Reported-by: syzbot+dc09047bce3820621ba2@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d3201bbffe0c45a6de1a52732733403cc8ceca2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 23 15:44:00 2018 +0100

    ALSA: ac97: Fix incorrect bit shift at AC97-SPSA control write
    
    commit 7194eda1ba0872d917faf3b322540b4f57f11ba5 upstream.
    
    The function snd_ac97_put_spsa() gets the bit shift value from the
    associated private_value, but it extracts too much; the current code
    extracts 8 bit values in bits 8-15, but this is a combination of two
    nibbles (bits 8-11 and bits 12-15) for left and right shifts.
    Due to the incorrect bits extraction, the actual shift may go beyond
    the 32bit value, as spotted recently by UBSAN check:
     UBSAN: Undefined behaviour in sound/pci/ac97/ac97_codec.c:836:7
     shift exponent 68 is too large for 32-bit type 'int'
    
    This patch fixes the shift value extraction by masking the properly
    with 0x0f instead of 0xff.
    
    Reported-and-tested-by: Meelis Roos <mroos@linux.ee>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12b2efff8874a5ff359b8bb087b7f2cd383fc76c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 23 18:16:33 2018 +0100

    ALSA: wss: Fix invalid snd_free_pages() at error path
    
    commit 7b69154171b407844c273ab4c10b5f0ddcd6aa29 upstream.
    
    Some spurious calls of snd_free_pages() have been overlooked and
    remain in the error paths of wss driver code.  Since runtime->dma_area
    is managed by the PCM core helper, we shouldn't release manually.
    
    Drop the superfluous calls.
    
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55eb06b7728f28b0197fa8977094fcaa38d38ca4
Author: Maximilian Heyne <mheyne@amazon.de>
Date:   Fri Nov 30 08:35:14 2018 -0700

    fs: fix lost error code in dio_complete
    
    commit 41e817bca3acd3980efe5dd7d28af0e6f4ab9247 upstream.
    
    commit e259221763a40403d5bb232209998e8c45804ab8 ("fs: simplify the
    generic_write_sync prototype") reworked callers of generic_write_sync(),
    and ended up dropping the error return for the directio path. Prior to
    that commit, in dio_complete(), an error would be bubbled up the stack,
    but after that commit, errors passed on to dio_complete were eaten up.
    
    This was reported on the list earlier, and a fix was proposed in
    https://lore.kernel.org/lkml/20160921141539.GA17898@infradead.org/, but
    never followed up with.  We recently hit this bug in our testing where
    fencing io errors, which were previously erroring out with EIO, were
    being returned as success operations after this commit.
    
    The fix proposed on the list earlier was a little short -- it would have
    still called generic_write_sync() in case `ret` already contained an
    error. This fix ensures generic_write_sync() is only called when there's
    no pending error in the write. Additionally, transferred is replaced
    with ret to bring this code in line with other callers.
    
    Fixes: e259221763a4 ("fs: simplify the generic_write_sync prototype")
    Reported-by: Ravi Nankani <rnankani@amazon.com>
    Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    CC: Torsten Mehlan <tomeh@amazon.de>
    CC: Uwe Dannowski <uwed@amazon.de>
    CC: Amit Shah <aams@amazon.de>
    CC: David Woodhouse <dwmw@amazon.co.uk>
    CC: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54f738293d30143da54c592d751a446d375f1c30
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Wed Nov 21 11:16:11 2018 +0100

    perf/x86/intel: Add generic branch tracing check to intel_pmu_has_bts()
    
    commit 67266c1080ad56c31af72b9c18355fde8ccc124a upstream.
    
    Currently we check the branch tracing only by checking for the
    PERF_COUNT_HW_BRANCH_INSTRUCTIONS event of PERF_TYPE_HARDWARE
    type. But we can define the same event with the PERF_TYPE_RAW
    type.
    
    Changing the intel_pmu_has_bts() code to check on event's final
    hw config value, so both HW types are covered.
    
    Adding unlikely to intel_pmu_has_bts() condition calls, because
    it was used in the original code in intel_bts_constraints.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: <stable@vger.kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20181121101612.16272-2-jolsa@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08c133e86be21e0598e2203184915c15636d1103
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Wed Nov 21 11:16:10 2018 +0100

    perf/x86/intel: Move branch tracing setup to the Intel-specific source file
    
    commit ed6101bbf6266ee83e620b19faa7c6ad56bb41ab upstream.
    
    Moving branch tracing setup to Intel core object into separate
    intel_pmu_bts_config function, because it's Intel specific.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: <stable@vger.kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20181121101612.16272-1-jolsa@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e1210e2850d94fa7c4b298b31fd40a913b6d17a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Nov 14 11:35:24 2018 +0000

    Btrfs: ensure path name is null terminated at btrfs_control_ioctl
    
    commit f505754fd6599230371cb01b9332754ddc104be1 upstream.
    
    We were using the path name received from user space without checking that
    it is null terminated. While btrfs-progs is well behaved and does proper
    validation and null termination, someone could call the ioctl and pass
    a non-null terminated patch, leading to buffer overrun problems in the
    kernel.  The ioctl is protected by CAP_SYS_ADMIN.
    
    So just set the last byte of the path to a null character, similar to what
    we do in other ioctls (add/remove/resize device, snapshot creation, etc).
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Anand Jain <anand.jain@oracle.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 f403887502a876ec7efaf636886e5fb8183928fe
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Mon Nov 26 15:18:26 2018 -0800

    xtensa: fix coprocessor context offset definitions
    
    commit 03bc996af0cc71c7f30c384d8ce7260172423b34 upstream.
    
    Coprocessor context offsets are used by the assembly code that moves
    coprocessor context between the individual fields of the
    thread_info::xtregs_cp structure and coprocessor registers.
    This fixes coprocessor context clobbering on flushing and reloading
    during normal user code execution and user process debugging in the
    presence of more than one coprocessor in the core configuration.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c26e3c6c2dc45d4d580b33bb754e71d6deaa4e5a
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Mon Nov 26 13:29:41 2018 -0800

    xtensa: enable coprocessors that are being flushed
    
    commit 2958b66694e018c552be0b60521fec27e8d12988 upstream.
    
    coprocessor_flush_all may be called from a context of a thread that is
    different from the thread being flushed. In that case contents of the
    cpenable special register may not match ti->cpenable of the target
    thread, resulting in unhandled coprocessor exception in the kernel
    context.
    Set cpenable special register to the ti->cpenable of the target register
    for the duration of the flush and restore it afterwards.
    This fixes the following crash caused by coprocessor register inspection
    in native gdb:
    
      (gdb) p/x $w0
      Illegal instruction in kernel: sig: 9 [#1] PREEMPT
      Call Trace:
        ___might_sleep+0x184/0x1a4
        __might_sleep+0x41/0xac
        exit_signals+0x14/0x218
        do_exit+0xc9/0x8b8
        die+0x99/0xa0
        do_illegal_instruction+0x18/0x6c
        common_exception+0x77/0x77
        coprocessor_flush+0x16/0x3c
        arch_ptrace+0x46c/0x674
        sys_ptrace+0x2ce/0x3b4
        system_call+0x54/0x80
        common_exception+0x77/0x77
      note: gdb[100] exited with preempt_count 1
      Killed
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a468e8e5a6124523e2e94c33866c609cc914876
Author: Wanpeng Li <wanpengli@tencent.com>
Date:   Tue Nov 20 16:34:18 2018 +0800

    KVM: X86: Fix scan ioapic use-before-initialization
    
    commit e97f852fd4561e77721bb9a4e0ea9d98305b1e93 upstream.
    
    Reported by syzkaller:
    
     BUG: unable to handle kernel NULL pointer dereference at 00000000000001c8
     PGD 80000003ec4da067 P4D 80000003ec4da067 PUD 3f7bfa067 PMD 0
     Oops: 0000 [#1] PREEMPT SMP PTI
     CPU: 7 PID: 5059 Comm: debug Tainted: G           OE     4.19.0-rc5 #16
     RIP: 0010:__lock_acquire+0x1a6/0x1990
     Call Trace:
      lock_acquire+0xdb/0x210
      _raw_spin_lock+0x38/0x70
      kvm_ioapic_scan_entry+0x3e/0x110 [kvm]
      vcpu_enter_guest+0x167e/0x1910 [kvm]
      kvm_arch_vcpu_ioctl_run+0x35c/0x610 [kvm]
      kvm_vcpu_ioctl+0x3e9/0x6d0 [kvm]
      do_vfs_ioctl+0xa5/0x690
      ksys_ioctl+0x6d/0x80
      __x64_sys_ioctl+0x1a/0x20
      do_syscall_64+0x83/0x6e0
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The reason is that the testcase writes hyperv synic HV_X64_MSR_SINT6 msr
    and triggers scan ioapic logic to load synic vectors into EOI exit bitmap.
    However, irqchip is not initialized by this simple testcase, ioapic/apic
    objects should not be accessed.
    This can be triggered by the following program:
    
        #define _GNU_SOURCE
    
        #include <endian.h>
        #include <stdint.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <sys/syscall.h>
        #include <sys/types.h>
        #include <unistd.h>
    
        uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff};
    
        int main(void)
        {
            syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
            long res = 0;
            memcpy((void*)0x20000040, "/dev/kvm", 9);
            res = syscall(__NR_openat, 0xffffffffffffff9c, 0x20000040, 0, 0);
            if (res != -1)
                    r[0] = res;
            res = syscall(__NR_ioctl, r[0], 0xae01, 0);
            if (res != -1)
                    r[1] = res;
            res = syscall(__NR_ioctl, r[1], 0xae41, 0);
            if (res != -1)
                    r[2] = res;
            memcpy(
                            (void*)0x20000080,
                            "\x01\x00\x00\x00\x00\x5b\x61\xbb\x96\x00\x00\x40\x00\x00\x00\x00\x01\x00"
                            "\x08\x00\x00\x00\x00\x00\x0b\x77\xd1\x78\x4d\xd8\x3a\xed\xb1\x5c\x2e\x43"
                            "\xaa\x43\x39\xd6\xff\xf5\xf0\xa8\x98\xf2\x3e\x37\x29\x89\xde\x88\xc6\x33"
                            "\xfc\x2a\xdb\xb7\xe1\x4c\xac\x28\x61\x7b\x9c\xa9\xbc\x0d\xa0\x63\xfe\xfe"
                            "\xe8\x75\xde\xdd\x19\x38\xdc\x34\xf5\xec\x05\xfd\xeb\x5d\xed\x2e\xaf\x22"
                            "\xfa\xab\xb7\xe4\x42\x67\xd0\xaf\x06\x1c\x6a\x35\x67\x10\x55\xcb",
                            106);
            syscall(__NR_ioctl, r[2], 0x4008ae89, 0x20000080);
            syscall(__NR_ioctl, r[2], 0xae80, 0);
            return 0;
        }
    
    This patch fixes it by bailing out scan ioapic if ioapic is not initialized in
    kernel.
    
    Reported-by: Wei Wu <ww9210@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Wei Wu <ww9210@gmail.com>
    Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43dd9f48871e6765972182a048ab4e0ecc24c712
Author: Jim Mattson <jmattson@google.com>
Date:   Tue May 22 09:54:20 2018 -0700

    kvm: svm: Ensure an IBPB on all affected CPUs when freeing a vmcb
    
    commit fd65d3142f734bc4376053c8d75670041903134d upstream.
    
    Previously, we only called indirect_branch_prediction_barrier on the
    logical CPU that freed a vmcb. This function should be called on all
    logical CPUs that last loaded the vmcb in question.
    
    Fixes: 15d45071523d ("KVM/x86: Add IBPB support")
    Reported-by: Neel Natu <neelnatu@google.com>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa716434a05907a6302e008a24d8dcdd6e7d47bf
Author: Junaid Shahid <junaids@google.com>
Date:   Wed Oct 31 14:53:57 2018 -0700

    kvm: mmu: Fix race in emulated page table writes
    
    commit 0e0fee5c539b61fdd098332e0e2cc375d9073706 upstream.
    
    When a guest page table is updated via an emulated write,
    kvm_mmu_pte_write() is called to update the shadow PTE using the just
    written guest PTE value. But if two emulated guest PTE writes happened
    concurrently, it is possible that the guest PTE and the shadow PTE end
    up being out of sync. Emulated writes do not mark the shadow page as
    unsync-ed, so this inconsistency will not be resolved even by a guest TLB
    flush (unless the page was marked as unsync-ed at some other point).
    
    This is fixed by re-reading the current value of the guest PTE after the
    MMU lock has been acquired instead of just using the value that was
    written prior to calling kvm_mmu_pte_write().
    
    Signed-off-by: Junaid Shahid <junaids@google.com>
    Reviewed-by: Wanpeng Li <wanpengli@tencent.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff67a7d34bc5015b50856ae458d3e7c89d2acda0
Author: Bernd Eckstein <3erndeckstein@gmail.com>
Date:   Fri Nov 23 13:51:26 2018 +0100

    usbnet: ipheth: fix potential recvmsg bug and recvmsg bug 2
    
    [ Upstream commit 45611c61dd503454b2edae00aabe1e429ec49ebe ]
    
    The bug is not easily reproducable, as it may occur very infrequently
    (we had machines with 20minutes heavy downloading before it occurred)
    However, on a virual machine (VMWare on Windows 10 host) it occurred
    pretty frequently (1-2 seconds after a speedtest was started)
    
    dev->tx_skb mab be freed via dev_kfree_skb_irq on a callback
    before it is set.
    
    This causes the following problems:
    - double free of the skb or potential memory leak
    - in dmesg: 'recvmsg bug' and 'recvmsg bug 2' and eventually
      general protection fault
    
    Example dmesg output:
    [  134.841986] ------------[ cut here ]------------
    [  134.841987] recvmsg bug: copied 9C24A555 seq 9C24B557 rcvnxt 9C25A6B3 fl 0
    [  134.841993] WARNING: CPU: 7 PID: 2629 at /build/linux-hwe-On9fm7/linux-hwe-4.15.0/net/ipv4/tcp.c:1865 tcp_recvmsg+0x44d/0xab0
    [  134.841994] Modules linked in: ipheth(OE) kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd glue_helper cryptd vmw_balloon intel_rapl_perf joydev input_leds serio_raw vmw_vsock_vmci_transport vsock shpchp i2c_piix4 mac_hid binfmt_misc vmw_vmci parport_pc ppdev lp parport autofs4 vmw_pvscsi vmxnet3 hid_generic usbhid hid vmwgfx ttm drm_kms_helper syscopyarea sysfillrect mptspi mptscsih sysimgblt ahci psmouse fb_sys_fops pata_acpi mptbase libahci e1000 drm scsi_transport_spi
    [  134.842046] CPU: 7 PID: 2629 Comm: python Tainted: G        W  OE    4.15.0-34-generic #37~16.04.1-Ubuntu
    [  134.842046] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/19/2017
    [  134.842048] RIP: 0010:tcp_recvmsg+0x44d/0xab0
    [  134.842048] RSP: 0018:ffffa6630422bcc8 EFLAGS: 00010286
    [  134.842049] RAX: 0000000000000000 RBX: ffff997616f4f200 RCX: 0000000000000006
    [  134.842049] RDX: 0000000000000007 RSI: 0000000000000082 RDI: ffff9976257d6490
    [  134.842050] RBP: ffffa6630422bd98 R08: 0000000000000001 R09: 000000000004bba4
    [  134.842050] R10: 0000000001e00c6f R11: 000000000004bba4 R12: ffff99760dee3000
    [  134.842051] R13: 0000000000000000 R14: ffff99760dee3514 R15: 0000000000000000
    [  134.842051] FS:  00007fe332347700(0000) GS:ffff9976257c0000(0000) knlGS:0000000000000000
    [  134.842052] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  134.842053] CR2: 0000000001e41000 CR3: 000000020e9b4006 CR4: 00000000003606e0
    [  134.842055] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  134.842055] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  134.842057] Call Trace:
    [  134.842060]  ? aa_sk_perm+0x53/0x1a0
    [  134.842064]  inet_recvmsg+0x51/0xc0
    [  134.842066]  sock_recvmsg+0x43/0x50
    [  134.842070]  SYSC_recvfrom+0xe4/0x160
    [  134.842072]  ? __schedule+0x3de/0x8b0
    [  134.842075]  ? ktime_get_ts64+0x4c/0xf0
    [  134.842079]  SyS_recvfrom+0xe/0x10
    [  134.842082]  do_syscall_64+0x73/0x130
    [  134.842086]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    [  134.842086] RIP: 0033:0x7fe331f5a81d
    [  134.842088] RSP: 002b:00007ffe8da98398 EFLAGS: 00000246 ORIG_RAX: 000000000000002d
    [  134.842090] RAX: ffffffffffffffda RBX: ffffffffffffffff RCX: 00007fe331f5a81d
    [  134.842094] RDX: 00000000000003fb RSI: 0000000001e00874 RDI: 0000000000000003
    [  134.842095] RBP: 00007fe32f642c70 R08: 0000000000000000 R09: 0000000000000000
    [  134.842097] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe332347698
    [  134.842099] R13: 0000000001b7e0a0 R14: 0000000001e00874 R15: 0000000000000000
    [  134.842103] Code: 24 fd ff ff e9 cc fe ff ff 48 89 d8 41 8b 8c 24 10 05 00 00 44 8b 45 80 48 c7 c7 08 bd 59 8b 48 89 85 68 ff ff ff e8 b3 c4 7d ff <0f> 0b 48 8b 85 68 ff ff ff e9 e9 fe ff ff 41 8b 8c 24 10 05 00
    [  134.842126] ---[ end trace b7138fc08c83147f ]---
    [  134.842144] general protection fault: 0000 [#1] SMP PTI
    [  134.842145] Modules linked in: ipheth(OE) kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd glue_helper cryptd vmw_balloon intel_rapl_perf joydev input_leds serio_raw vmw_vsock_vmci_transport vsock shpchp i2c_piix4 mac_hid binfmt_misc vmw_vmci parport_pc ppdev lp parport autofs4 vmw_pvscsi vmxnet3 hid_generic usbhid hid vmwgfx ttm drm_kms_helper syscopyarea sysfillrect mptspi mptscsih sysimgblt ahci psmouse fb_sys_fops pata_acpi mptbase libahci e1000 drm scsi_transport_spi
    [  134.842161] CPU: 7 PID: 2629 Comm: python Tainted: G        W  OE    4.15.0-34-generic #37~16.04.1-Ubuntu
    [  134.842162] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/19/2017
    [  134.842164] RIP: 0010:tcp_close+0x2c6/0x440
    [  134.842165] RSP: 0018:ffffa6630422bde8 EFLAGS: 00010202
    [  134.842167] RAX: 0000000000000000 RBX: ffff99760dee3000 RCX: 0000000180400034
    [  134.842168] RDX: 5c4afd407207a6c4 RSI: ffffe868495bd300 RDI: ffff997616f4f200
    [  134.842169] RBP: ffffa6630422be08 R08: 0000000016f4d401 R09: 0000000180400034
    [  134.842169] R10: ffffa6630422bd98 R11: 0000000000000000 R12: 000000000000600c
    [  134.842170] R13: 0000000000000000 R14: ffff99760dee30c8 R15: ffff9975bd44fe00
    [  134.842171] FS:  00007fe332347700(0000) GS:ffff9976257c0000(0000) knlGS:0000000000000000
    [  134.842173] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  134.842174] CR2: 0000000001e41000 CR3: 000000020e9b4006 CR4: 00000000003606e0
    [  134.842177] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  134.842178] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  134.842179] Call Trace:
    [  134.842181]  inet_release+0x42/0x70
    [  134.842183]  __sock_release+0x42/0xb0
    [  134.842184]  sock_close+0x15/0x20
    [  134.842187]  __fput+0xea/0x220
    [  134.842189]  ____fput+0xe/0x10
    [  134.842191]  task_work_run+0x8a/0xb0
    [  134.842193]  exit_to_usermode_loop+0xc4/0xd0
    [  134.842195]  do_syscall_64+0xf4/0x130
    [  134.842197]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    [  134.842197] RIP: 0033:0x7fe331f5a560
    [  134.842198] RSP: 002b:00007ffe8da982e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
    [  134.842200] RAX: 0000000000000000 RBX: 00007fe32f642c70 RCX: 00007fe331f5a560
    [  134.842201] RDX: 00000000008f5320 RSI: 0000000001cd4b50 RDI: 0000000000000003
    [  134.842202] RBP: 00007fe32f6500f8 R08: 000000000000003c R09: 00000000009343c0
    [  134.842203] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe32f6500d0
    [  134.842204] R13: 00000000008f5320 R14: 00000000008f5320 R15: 0000000001cd4770
    [  134.842205] Code: c8 00 00 00 45 31 e4 49 39 fe 75 4d eb 50 83 ab d8 00 00 00 01 48 8b 17 48 8b 47 08 48 c7 07 00 00 00 00 48 c7 47 08 00 00 00 00 <48> 89 42 08 48 89 10 0f b6 57 34 8b 47 2c 2b 47 28 83 e2 01 80
    [  134.842226] RIP: tcp_close+0x2c6/0x440 RSP: ffffa6630422bde8
    [  134.842227] ---[ end trace b7138fc08c831480 ]---
    
    The proposed patch eliminates a potential racing condition.
    Before, usb_submit_urb was called and _after_ that, the skb was attached
    (dev->tx_skb). So, on a callback it was possible, however unlikely that the
    skb was freed before it was set. That way (because dev->tx_skb was not set
    to NULL after it was freed), it could happen that a skb from a earlier
    transmission was freed a second time (and the skb we should have freed did
    not get freed at all)
    
    Now we free the skb directly in ipheth_tx(). It is not passed to the
    callback anymore, eliminating the posibility of a double free of the same
    skb. Depending on the retval of usb_submit_urb() we use dev_kfree_skb_any()
    respectively dev_consume_skb_any() to free the skb.
    
    Signed-off-by: Oliver Zweigle <Oliver.Zweigle@faro.com>
    Signed-off-by: Bernd Eckstein <3ernd.Eckstein@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d3891c724da45955fddc99652387a35926bb5fb
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Wed Nov 28 16:20:50 2018 +0100

    s390/qeth: fix length check in SNMP processing
    
    [ Upstream commit 9a764c1e59684c0358e16ccaafd870629f2cfe67 ]
    
    The response for a SNMP request can consist of multiple parts, which
    the cmd callback stages into a kernel buffer until all parts have been
    received. If the callback detects that the staging buffer provides
    insufficient space, it bails out with error.
    This processing is buggy for the first part of the response - while it
    initially checks for a length of 'data_len', it later copies an
    additional amount of 'offsetof(struct qeth_snmp_cmd, data)' bytes.
    
    Fix the calculation of 'data_len' for the first part of the response.
    This also nicely cleans up the memcpy code.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Reviewed-by: Ursula Braun <ubraun@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13a3d8908e54f99a98af3c41f733aab9e93a0c56
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 28 14:53:19 2018 +0800

    rapidio/rionet: do not free skb before reading its length
    
    [ Upstream commit cfc435198f53a6fa1f656d98466b24967ff457d0 ]
    
    skb is freed via dev_kfree_skb_any, however, skb->len is read then. This
    may result in a use-after-free bug.
    
    Fixes: e6161d64263 ("rapidio/rionet: rework driver initialization and removal")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d39ebd199a639df704f50db315e93aa45d9ca33c
Author: Petr Machata <petrm@mellanox.com>
Date:   Tue Nov 20 11:39:56 2018 +0000

    net: skb_scrub_packet(): Scrub offload_fwd_mark
    
    [ Upstream commit b5dd186d10ba59e6b5ba60e42b3b083df56df6f3 ]
    
    When a packet is trapped and the corresponding SKB marked as
    already-forwarded, it retains this marking even after it is forwarded
    across veth links into another bridge. There, since it ingresses the
    bridge over veth, which doesn't have offload_fwd_mark, it triggers a
    warning in nbp_switchdev_frame_mark().
    
    Then nbp_switchdev_allowed_egress() decides not to allow egress from
    this bridge through another veth, because the SKB is already marked, and
    the mark (of 0) of course matches. Thus the packet is incorrectly
    blocked.
    
    Solve by resetting offload_fwd_mark() in skb_scrub_packet(). That
    function is called from tunnels and also from veth, and thus catches the
    cases where traffic is forwarded between bridges and transformed in a
    way that invalidates the marking.
    
    Fixes: 6bc506b4fb06 ("bridge: switchdev: Add forward mark support for stacked devices")
    Fixes: abf4bb6b63d0 ("skbuff: Add the offload_mr_fwd_mark field")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Suggested-by: Ido Schimmel <idosch@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad0ee4f58533dec7c49269864055f30d4dd2bdd7
Author: Sasha Levin <sashal@kernel.org>
Date:   Sun Dec 2 10:03:24 2018 -0500

    Revert "wlcore: Add missing PM call for wlcore_cmd_wait_for_event_or_timeout()"
    
    This reverts commit afeeecc764436f31d4447575bb9007732333818c which was
    upstream commit 4ec7cece87b3ed21ffcd407c62fb2f151a366bc1.
    
    From Dietmar May's report on the stable mailing list
    (https://www.spinics.net/lists/stable/msg272201.html):
    
    > I've run into some problems which appear due to (a) recent patch(es) on
    > the wlcore wifi driver.
    >
    > 4.4.160 - commit 3fdd34643ffc378b5924941fad40352c04610294
    > 4.9.131 - commit afeeecc764436f31d4447575bb9007732333818c
    >
    > Earlier versions (4.9.130 and 4.4.159 - tested back to 4.4.49) do not
    > exhibit this problem. It is still present in 4.9.141.
    >
    > master as of 4.20.0-rc4 does not exhibit this problem.
    >
    > Basically, during client association when in AP mode (running hostapd),
    > handshake may or may not complete following a noticeable delay. If
    > successful, then the driver fails consistently in warn_slowpath_null
    > during disassociation. If unsuccessful, the wifi client attempts multiple
    > times, sometimes failing repeatedly. I've had clients unable to connect
    > for 3-5 minutes during testing, with the syslog filled with dozens of
    > backtraces. syslog details are below.
    >
    > I'm working on an embedded device with a TI 3352 ARM processor and a
    > murata wl1271 module in sdio mode. We're running a fully patched ubuntu
    > 18.04 ARM build, with a kernel built from kernel.org's stable/linux repo <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.9.y&id=afeeecc764436f31d4447575bb9007732333818c>.
    > Relevant parts of the kernel config are included below.
    >
    > The commit message states:
    >
    > > /I've only seen this few times with the runtime PM patches enabled so
    > > this one is probably not needed before that. This seems to work
    > > currently based on the current PM implementation timer. Let's apply
    > > this separately though in case others are hitting this issue./
    > We're not doing anything explicit with power management. The device is an
    > IoT edge gateway with battery backup, normally running on wall power. The
    > battery is currently used solely to shut down the system cleanly to avoid
    > filesystem corruption.
    >
    > The device tree is configured to keep power in suspend; but the device
    > should never suspend, so in our case, there is no need to call
    > wl1271_ps_elp_wakeup() or wl1271_ps_elp_sleep(), as occurs in the patch.
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6fc74d9f9b412b295f9ad01af7a7e62a662aa5bd
Author: Matthias Schwarzott <zzam@gentoo.org>
Date:   Mon Oct 30 06:07:29 2017 -0400

    media: em28xx: Fix use-after-free when disconnecting
    
    [ Upstream commit 910b0797fa9e8af09c44a3fa36cb310ba7a7218d ]
    
    Fix bug by moving the i2c_unregister_device calls after deregistration
    of dvb frontend.
    
    The new style i2c drivers already destroys the frontend object at
    i2c_unregister_device time.
    When the dvb frontend is unregistered afterwards it leads to this oops:
    
      [ 6058.866459] BUG: unable to handle kernel NULL pointer dereference at 00000000000001f8
      [ 6058.866578] IP: dvb_frontend_stop+0x30/0xd0 [dvb_core]
      [ 6058.866644] PGD 0
      [ 6058.866646] P4D 0
    
      [ 6058.866726] Oops: 0000 [#1] SMP
      [ 6058.866768] Modules linked in: rc_pinnacle_pctv_hd(O) em28xx_rc(O) si2157(O) si2168(O) em28xx_dvb(O) em28xx(O) si2165(O) a8293(O) tda10071(O) tea5767(O) tuner(O) cx23885(O) tda18271(O) videobuf2_dvb(O) videobuf2_dma_sg(O) m88ds3103(O) tveeprom(O) cx2341x(O) v4l2_common(O) dvb_core(O) rc_core(O) videobuf2_memops(O) videobuf2_v4l2(O) videobuf2_core(O) videodev(O) media(O) bluetooth ecdh_generic ums_realtek uas rtl8192cu rtl_usb rtl8192c_common rtlwifi usb_storage snd_hda_codec_realtek snd_hda_codec_hdmi snd_hda_codec_generic i2c_mux snd_hda_intel snd_hda_codec snd_hwdep x86_pkg_temp_thermal snd_hda_core kvm_intel kvm irqbypass [last unloaded: videobuf2_memops]
      [ 6058.867497] CPU: 2 PID: 7349 Comm: kworker/2:0 Tainted: G        W  O    4.13.9-gentoo #1
      [ 6058.867595] Hardware name: MEDION E2050 2391/H81H3-EM2, BIOS H81EM2W08.308 08/25/2014
      [ 6058.867692] Workqueue: usb_hub_wq hub_event
      [ 6058.867746] task: ffff88011a15e040 task.stack: ffffc90003074000
      [ 6058.867825] RIP: 0010:dvb_frontend_stop+0x30/0xd0 [dvb_core]
      [ 6058.867896] RSP: 0018:ffffc90003077b58 EFLAGS: 00010293
      [ 6058.867964] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000010040001f
      [ 6058.868056] RDX: ffff88011a15e040 RSI: ffffea000464e400 RDI: ffff88001cbe3028
      [ 6058.868150] RBP: ffffc90003077b68 R08: ffff880119390380 R09: 000000010040001f
      [ 6058.868241] R10: ffffc90003077b18 R11: 000000000001e200 R12: ffff88001cbe3028
      [ 6058.868330] R13: ffff88001cbe68d0 R14: ffff8800cf734000 R15: ffff8800cf734098
      [ 6058.868419] FS:  0000000000000000(0000) GS:ffff88011fb00000(0000) knlGS:0000000000000000
      [ 6058.868511] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 6058.868578] CR2: 00000000000001f8 CR3: 00000001113c5000 CR4: 00000000001406e0
      [ 6058.868662] Call Trace:
      [ 6058.868705]  dvb_unregister_frontend+0x2a/0x80 [dvb_core]
      [ 6058.868774]  em28xx_dvb_fini+0x132/0x220 [em28xx_dvb]
      [ 6058.868840]  em28xx_close_extension+0x34/0x90 [em28xx]
      [ 6058.868902]  em28xx_usb_disconnect+0x4e/0x70 [em28xx]
      [ 6058.868968]  usb_unbind_interface+0x6d/0x260
      [ 6058.869025]  device_release_driver_internal+0x150/0x210
      [ 6058.869094]  device_release_driver+0xd/0x10
      [ 6058.869150]  bus_remove_device+0xe4/0x160
      [ 6058.869204]  device_del+0x1ce/0x2f0
      [ 6058.869253]  usb_disable_device+0x99/0x270
      [ 6058.869306]  usb_disconnect+0x8d/0x260
      [ 6058.869359]  hub_event+0x93d/0x1520
      [ 6058.869408]  ? dequeue_task_fair+0xae5/0xd20
      [ 6058.869467]  process_one_work+0x1d9/0x3e0
      [ 6058.869522]  worker_thread+0x43/0x3e0
      [ 6058.869576]  kthread+0x104/0x140
      [ 6058.869602]  ? trace_event_raw_event_workqueue_work+0x80/0x80
      [ 6058.869640]  ? kthread_create_on_node+0x40/0x40
      [ 6058.869673]  ret_from_fork+0x22/0x30
      [ 6058.869698] Code: 54 49 89 fc 53 48 8b 9f 18 03 00 00 0f 1f 44 00 00 41 83 bc 24 04 05 00 00 02 74 0c 41 c7 84 24 04 05 00 00 01 00 00 00 0f ae f0 <48> 8b bb f8 01 00 00 48 85 ff 74 5c e8 df 40 f0 e0 48 8b 93 f8
      [ 6058.869850] RIP: dvb_frontend_stop+0x30/0xd0 [dvb_core] RSP: ffffc90003077b58
      [ 6058.869894] CR2: 00000000000001f8
      [ 6058.875880] ---[ end trace 717eecf7193b3fc6 ]---
    
    Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc62803e271decb287929d44789fe9170eec5ba7
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:47 2018 -0800

    mm/khugepaged: collapse_shmem() do not crash on Compound
    
    commit 06a5e1268a5fb9c2b346a3da6b97e85f2eba0f07 upstream.
    
    collapse_shmem()'s VM_BUG_ON_PAGE(PageTransCompound) was unsafe: before
    it holds page lock of the first page, racing truncation then extension
    might conceivably have inserted a hugepage there already.  Fail with the
    SCAN_PAGE_COMPOUND result, instead of crashing (CONFIG_DEBUG_VM=y) or
    otherwise mishandling the unexpected hugepage - though later we might
    code up a more constructive way of handling it, with SCAN_SUCCESS.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261529310.2275@eggly.anvils
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8dcbb5f21567c3a85a7e4ec781d0e49ea174397d
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:43 2018 -0800

    mm/khugepaged: collapse_shmem() without freezing new_page
    
    commit 87c460a0bded56195b5eb497d44709777ef7b415 upstream.
    
    khugepaged's collapse_shmem() does almost all of its work, to assemble
    the huge new_page from 512 scattered old pages, with the new_page's
    refcount frozen to 0 (and refcounts of all old pages so far also frozen
    to 0).  Including shmem_getpage() to read in any which were out on swap,
    memory reclaim if necessary to allocate their intermediate pages, and
    copying over all the data from old to new.
    
    Imagine the frozen refcount as a spinlock held, but without any lock
    debugging to highlight the abuse: it's not good, and under serious load
    heads into lockups - speculative getters of the page are not expecting
    to spin while khugepaged is rescheduled.
    
    One can get a little further under load by hacking around elsewhere; but
    fortunately, freezing the new_page turns out to have been entirely
    unnecessary, with no hacks needed elsewhere.
    
    The huge new_page lock is already held throughout, and guards all its
    subpages as they are brought one by one into the page cache tree; and
    anything reading the data in that page, without the lock, before it has
    been marked PageUptodate, would already be in the wrong.  So simply
    eliminate the freezing of the new_page.
    
    Each of the old pages remains frozen with refcount 0 after it has been
    replaced by a new_page subpage in the page cache tree, until they are
    all unfrozen on success or failure: just as before.  They could be
    unfrozen sooner, but cause no problem once no longer visible to
    find_get_entry(), filemap_map_pages() and other speculative lookups.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261527570.2275@eggly.anvils
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2ca73b7ab3d5e0edc69e9a0a9e464407cabaec1
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:39 2018 -0800

    mm/khugepaged: minor reorderings in collapse_shmem()
    
    commit 042a30824871fa3149b0127009074b75cc25863c upstream.
    
    Several cleanups in collapse_shmem(): most of which probably do not
    really matter, beyond doing things in a more familiar and reassuring
    order.  Simplify the failure gotos in the main loop, and on success
    update stats while interrupts still disabled from the last iteration.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261526400.2275@eggly.anvils
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c0ecc2ba54201881c54a51ead083bba85176a76
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:35 2018 -0800

    mm/khugepaged: collapse_shmem() remember to clear holes
    
    commit 2af8ff291848cc4b1cce24b6c943394eb2c761e8 upstream.
    
    Huge tmpfs testing reminds us that there is no __GFP_ZERO in the gfp
    flags khugepaged uses to allocate a huge page - in all common cases it
    would just be a waste of effort - so collapse_shmem() must remember to
    clear out any holes that it instantiates.
    
    The obvious place to do so, where they are put into the page cache tree,
    is not a good choice: because interrupts are disabled there.  Leave it
    until further down, once success is assured, where the other pages are
    copied (before setting PageUptodate).
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261525080.2275@eggly.anvils
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0dba3e54920bc876aaf88060358d96093b5e7c83
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:29 2018 -0800

    mm/khugepaged: fix crashes due to misaccounted holes
    
    commit aaa52e340073b7f4593b3c4ddafcafa70cf838b5 upstream.
    
    Huge tmpfs testing on a shortish file mapped into a pmd-rounded extent
    hit shmem_evict_inode()'s WARN_ON(inode->i_blocks) followed by
    clear_inode()'s BUG_ON(inode->i_data.nrpages) when the file was later
    closed and unlinked.
    
    khugepaged's collapse_shmem() was forgetting to update mapping->nrpages
    on the rollback path, after it had added but then needs to undo some
    holes.
    
    There is indeed an irritating asymmetry between shmem_charge(), whose
    callers want it to increment nrpages after successfully accounting
    blocks, and shmem_uncharge(), when __delete_from_page_cache() already
    decremented nrpages itself: oh well, just add a comment on that to them
    both.
    
    And shmem_recalc_inode() is supposed to be called when the accounting is
    expected to be in balance (so it can deduce from imbalance that reclaim
    discarded some pages): so change shmem_charge() to update nrpages
    earlier (though it's rare for the difference to matter at all).
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261523450.2275@eggly.anvils
    Fixes: 800d8c63b2e98 ("shmem: add huge pages support")
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9815b0fcec677a484514b28124d31df64c71a901
Author: Mike Rapoport <rppt@linux.vnet.ibm.com>
Date:   Wed Sep 6 16:22:59 2017 -0700

    shmem: introduce shmem_inode_acct_block
    
    commit 0f0796945614b7523987f7eea32407421af4b1ee upstream.
    
    The shmem_acct_block and the update of used_blocks are following one
    another in all the places they are used.  Combine these two into a
    helper function.
    
    Link: http://lkml.kernel.org/r/1497939652-16528-3-git-send-email-rppt@linux.vnet.ibm.com
    Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Pavel Emelyanov <xemul@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cae7ed256d772766dd2fe3ad9a08ec77f24b9503
Author: Mike Rapoport <rppt@linux.vnet.ibm.com>
Date:   Wed Sep 6 16:22:56 2017 -0700

    shmem: shmem_charge: verify max_block is not exceeded before inode update
    
    commit b1cc94ab2f2ba31fcb2c59df0b9cf03f6d720553 upstream.
    
    Patch series "userfaultfd: enable zeropage support for shmem".
    
    These patches enable support for UFFDIO_ZEROPAGE for shared memory.
    
    The first two patches are not strictly related to userfaultfd, they are
    just minor refactoring to reduce amount of code duplication.
    
    This patch (of 7):
    
    Currently we update inode and shmem_inode_info before verifying that
    used_blocks will not exceed max_blocks.  In case it will, we undo the
    update.  Let's switch the order and move the verification of the blocks
    count before the inode and shmem_inode_info update.
    
    Link: http://lkml.kernel.org/r/1497939652-16528-2-git-send-email-rppt@linux.vnet.ibm.com
    Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
    Cc: Pavel Emelyanov <xemul@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10e458e6eb59e533e499269258b6069392bec627
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:25 2018 -0800

    mm/khugepaged: collapse_shmem() stop if punched or truncated
    
    commit 701270fa193aadf00bdcf607738f64997275d4c7 upstream.
    
    Huge tmpfs testing showed that although collapse_shmem() recognizes a
    concurrently truncated or hole-punched page correctly, its handling of
    holes was liable to refill an emptied extent.  Add check to stop that.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261522040.2275@eggly.anvils
    Fixes: f3f0e1d2150b2 ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reviewed-by: Matthew Wilcox <willy@infradead.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b59b24fed59d322718a3f0fcaacf492335e9c9ca
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:21 2018 -0800

    mm/huge_memory: fix lockdep complaint on 32-bit i_size_read()
    
    commit 006d3ff27e884f80bd7d306b041afc415f63598f upstream.
    
    Huge tmpfs testing, on 32-bit kernel with lockdep enabled, showed that
    __split_huge_page() was using i_size_read() while holding the irq-safe
    lru_lock and page tree lock, but the 32-bit i_size_read() uses an
    irq-unsafe seqlock which should not be nested inside them.
    
    Instead, read the i_size earlier in split_huge_page_to_list(), and pass
    the end offset down to __split_huge_page(): all while holding head page
    lock, which is enough to prevent truncation of that extent before the
    page tree lock has been taken.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261520070.2275@eggly.anvils
    Fixes: baa355fd33142 ("thp: file pages support for split_huge_page()")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ffdad597ccfc6ccb8b6f1b6c2c77c3e79e90fb36
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:16 2018 -0800

    mm/huge_memory: splitting set mapping+index before unfreeze
    
    commit 173d9d9fd3ddae84c110fea8aedf1f26af6be9ec upstream.
    
    Huge tmpfs stress testing has occasionally hit shmem_undo_range()'s
    VM_BUG_ON_PAGE(page_to_pgoff(page) != index, page).
    
    Move the setting of mapping and index up before the page_ref_unfreeze()
    in __split_huge_page_tail() to fix this: so that a page cache lookup
    cannot get a reference while the tail's mapping and index are unstable.
    
    In fact, might as well move them up before the smp_wmb(): I don't see an
    actual need for that, but if I'm missing something, this way round is
    safer than the other, and no less efficient.
    
    You might argue that VM_BUG_ON_PAGE(page_to_pgoff(page) != index, page) is
    misplaced, and should be left until after the trylock_page(); but left as
    is has not crashed since, and gives more stringent assurance.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261516380.2275@eggly.anvils
    Fixes: e9b61f19858a5 ("thp: reintroduce split_huge_page()")
    Requires: 605ca5ede764 ("mm/huge_memory.c: reorder operations in __split_huge_page_tail()")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb732e62bf37d34160ff69d46e2ab89e2e98a70a
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Apr 5 16:23:28 2018 -0700

    mm/huge_memory.c: reorder operations in __split_huge_page_tail()
    
    commit 605ca5ede7643a01f4c4a15913f9714ac297f8a6 upstream.
    
    THP split makes non-atomic change of tail page flags.  This is almost ok
    because tail pages are locked and isolated but this breaks recent
    changes in page locking: non-atomic operation could clear bit
    PG_waiters.
    
    As a result concurrent sequence get_page_unless_zero() -> lock_page()
    might block forever.  Especially if this page was truncated later.
    
    Fix is trivial: clone flags before unfreezing page reference counter.
    
    This race exists since commit 62906027091f ("mm: add PageWaiters
    indicating tasks are waiting for a page bit") while unsave unfreeze
    itself was added in commit 8df651c7059e ("thp: cleanup
    split_huge_page()").
    
    clear_compound_head() also must be called before unfreezing page
    reference because after successful get_page_unless_zero() might follow
    put_page() which needs correct compound_head().
    
    And replace page_ref_inc()/page_ref_add() with page_ref_unfreeze() which
    is made especially for that and has semantic of smp_store_release().
    
    Link: http://lkml.kernel.org/r/151844393341.210639.13162088407980624477.stgit@buzz
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b48c29b1ddffa7f743a9da9404553deaf5882e14
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Nov 30 14:10:13 2018 -0800

    mm/huge_memory: rename freeze_page() to unmap_page()
    
    commit 906f9cdfc2a0800f13683f9e4ebdfd08c12ee81b upstream.
    
    The term "freeze" is used in several ways in the kernel, and in mm it
    has the particular meaning of forcing page refcount temporarily to 0.
    freeze_page() is just too confusing a name for a function that unmaps a
    page: rename it unmap_page(), and rename unfreeze_page() remap_page().
    
    Went to change the mention of freeze_page() added later in mm/rmap.c,
    but found it to be incorrect: ordinary page reclaim reaches there too;
    but the substance of the comment still seems correct, so edit it down.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1811261514080.2275@eggly.anvils
    Fixes: e9b61f19858a5 ("thp: reintroduce split_huge_page()")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.8+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>