commit 8a12358ba0e2e591cb2840ef42514d23f41d220c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 9 16:16:45 2019 +0100

    Linux 4.9.149

commit 0b7a78688a4c51c2de363960de1afaa9d0f081e0
Author: Lukas Wunner <lukas@wunner.de>
Date:   Thu Nov 29 15:14:49 2018 +0100

    spi: bcm2835: Unbreak the build of esoteric configs
    
    commit 29bdedfd9cf40e59456110ca417a8cb672ac9b92 upstream.
    
    Commit e82b0b382845 ("spi: bcm2835: Fix race on DMA termination") broke
    the build with COMPILE_TEST=y on arches whose cmpxchg() requires 32-bit
    operands (xtensa, older arm ISAs).
    
    Fix by changing the dma_pending flag's type from bool to unsigned int.
    
    Fixes: e82b0b382845 ("spi: bcm2835: Fix race on DMA termination")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dd6d0d40f13da1c680fe4a8ea29e184d458cae7
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Fri Oct 19 21:22:47 2018 +0300

    tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
    
    commit 2ba5780ce30549cf57929b01d8cba6fe656e31c5 upstream.
    
    tpm_i2c_nuvoton calculated commands duration using TPM 1.x
    values via tpm_calc_ordinal_duration() also for TPM 2.x chips.
    Call tpm2_calc_ordinal_duration() for retrieving ordinal
    duration for TPM 2.X chips.
    
    Cc: stable@vger.kernel.org
    Cc: Nayna Jain <nayna@linux.vnet.ibm.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Reviewed-by: Nayna Jain <nayna@linux.ibm.com>
    Tested-by: Nayna Jain <nayna@linux.ibm.com> (For TPM 2.0)
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e2ecb4f2ae647fabb454f06188d922958f94ecd
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Wed Nov 7 02:39:13 2018 +0000

    rtc: m41t80: Correct alarm month range with RTC reads
    
    commit 3cc9ffbb1f51eb4320575a48e4805a8f52e0e26b upstream.
    
    Add the missing adjustment of the month range on alarm reads from the
    RTC, correcting an issue coming from commit 9c6dfed92c3e ("rtc: m41t80:
    add alarm functionality").  The range is 1-12 for hardware and 0-11 for
    `struct rtc_time', and is already correctly handled on alarm writes to
    the RTC.
    
    It was correct up until commit 48e9766726eb ("drivers/rtc/rtc-m41t80.c:
    remove disabled alarm functionality") too, which removed the previous
    implementation of alarm support.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Fixes: 9c6dfed92c3e ("rtc: m41t80: add alarm functionality")
    References: 48e9766726eb ("drivers/rtc/rtc-m41t80.c: remove disabled alarm functionality")
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1348e03c15be1ddb3f895fc4e32d40812493dc6
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu Dec 13 16:06:14 2018 +0000

    arm64: KVM: Avoid setting the upper 32 bits of VTCR_EL2 to 1
    
    commit df655b75c43fba0f2621680ab261083297fd6d16 upstream.
    
    Although bit 31 of VTCR_EL2 is RES1, we inadvertently end up setting all
    of the upper 32 bits to 1 as well because we define VTCR_EL2_RES1 as
    signed, which is sign-extended when assigning to kvm->arch.vtcr.
    
    Lucky for us, the architecture currently treats these upper bits as RES0
    so, whilst we've been naughty, we haven't set fire to anything yet.
    
    Cc: <stable@vger.kernel.org>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Christoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 737dcb98a359e16bc03a2eef83fc5ec88b75e01c
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Thu Jan 25 16:37:07 2018 +0100

    x86/kvm/vmx: do not use vm-exit instruction length for fast MMIO when running nested
    
    commit d391f1207067268261add0485f0f34503539c5b0 upstream.
    
    I was investigating an issue with seabios >= 1.10 which stopped working
    for nested KVM on Hyper-V. The problem appears to be in
    handle_ept_violation() function: when we do fast mmio we need to skip
    the instruction so we do kvm_skip_emulated_instruction(). This, however,
    depends on VM_EXIT_INSTRUCTION_LEN field being set correctly in VMCS.
    However, this is not the case.
    
    Intel's manual doesn't mandate VM_EXIT_INSTRUCTION_LEN to be set when
    EPT MISCONFIG occurs. While on real hardware it was observed to be set,
    some hypervisors follow the spec and don't set it; we end up advancing
    IP with some random value.
    
    I checked with Microsoft and they confirmed they don't fill
    VM_EXIT_INSTRUCTION_LEN on EPT MISCONFIG.
    
    Fix the issue by doing instruction skip through emulator when running
    nested.
    
    Fixes: 68c3b4d1676d870f0453c31d5a52e7e65c7448ae
    Suggested-by: Radim Krčmář <rkrcmar@redhat.com>
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    [mhaboustak: backport to 4.9.y]
    Signed-off-by: Mike Haboustak <haboustak@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40738b6a0428a5660f937f3f3f090b1eb9035c63
Author: Georgy A Bystrenin <gkot@altlinux.org>
Date:   Fri Dec 21 00:11:42 2018 -0600

    CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem
    
    commit 9a596f5b39593414c0ec80f71b94a226286f084e upstream.
    
    While resolving a bug with locks on samba shares found a strange behavior.
    When a file locked by one node and we trying to lock it from another node
    it fail with errno 5 (EIO) but in that case errno must be set to
    (EACCES | EAGAIN).
    This isn't happening when we try to lock file second time on same node.
    In this case it returns EACCES as expected.
    Also this issue not reproduces when we use SMB1 protocol (vers=1.0 in
    mount options).
    
    Further investigation showed that the mapping from status_to_posix_error
    is different for SMB1 and SMB2+ implementations.
    For SMB1 mapping is [NT_STATUS_LOCK_NOT_GRANTED to ERRlock]
    (See fs/cifs/netmisc.c line 66)
    but for SMB2+ mapping is [STATUS_LOCK_NOT_GRANTED to -EIO]
    (see fs/cifs/smb2maperror.c line 383)
    
    Quick changes in SMB2+ mapping from EIO to EACCES has fixed issue.
    
    BUG: https://bugzilla.kernel.org/show_bug.cgi?id=201971
    
    Signed-off-by: Georgy A Bystrenin <gkot@altlinux.org>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 855feca99019f653328d56a59c01acccb1c1d220
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Wed Jan 2 20:43:01 2019 +0200

    MIPS: OCTEON: mark RGMII interface disabled on OCTEON III
    
    commit edefae94b7b9f10d5efe32dece5a36e9d9ecc29e upstream.
    
    Commit 885872b722b7 ("MIPS: Octeon: Add Octeon III CN7xxx
    interface detection") added RGMII interface detection for OCTEON III,
    but it results in the following logs:
    
    [    7.165984] ERROR: Unsupported Octeon model in __cvmx_helper_rgmii_probe
    [    7.173017] ERROR: Unsupported Octeon model in __cvmx_helper_rgmii_probe
    
    The current RGMII routines are valid only for older OCTEONS that
    use GMX/ASX hardware blocks. On later chips AGL should be used,
    but support for that is missing in the mainline. Until that is added,
    mark the interface as disabled.
    
    Fixes: 885872b722b7 ("MIPS: Octeon: Add Octeon III CN7xxx interface detection")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93cf55e2835d2a8fab80b6dfeb9553896bae038d
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 15 15:53:56 2018 +0800

    MIPS: Align kernel load address to 64KB
    
    commit bec0de4cfad21bd284dbddee016ed1767a5d2823 upstream.
    
    KEXEC needs the new kernel's load address to be aligned on a page
    boundary (see sanity_check_segment_list()), but on MIPS the default
    vmlinuz load address is only explicitly aligned to 16 bytes.
    
    Since the largest PAGE_SIZE supported by MIPS kernels is 64KB, increase
    the alignment calculated by calc_vmlinuz_load_addr to 64KB.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/21131/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <james.hogan@mips.com>
    Cc: Steven J . Hill <Steven.Hill@cavium.com>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: <stable@vger.kernel.org> # 2.6.36+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaca94b0a6133b3487faa1f563532365e344afcc
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 15 15:53:54 2018 +0800

    MIPS: Ensure pmd_present() returns false after pmd_mknotpresent()
    
    commit 92aa0718c9fa5160ad2f0e7b5bffb52f1ea1e51a upstream.
    
    This patch is borrowed from ARM64 to ensure pmd_present() returns false
    after pmd_mknotpresent(). This is needed for THP.
    
    References: 5bb1cc0ff9a6 ("arm64: Ensure pmd_present() returns false after pmd_mknotpresent()")
    Reviewed-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/21135/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <james.hogan@mips.com>
    Cc: Steven J . Hill <Steven.Hill@cavium.com>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: <stable@vger.kernel.org> # 3.8+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b21535727613dfd00368fc37c4d14bd47e8b5543
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Nov 8 11:12:47 2018 -0500

    media: v4l2-tpg: array index could become negative
    
    commit e5f71a27fa12c1a1b02ad478a568e76260f1815e upstream.
    
    text[s] is a signed char, so using that as index into the font8x16 array
    can result in negative indices. Cast it to u8 to be safe.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reported-by: syzbot+ccf0a61ed12f2a7313ee@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>      # for v4.7 and up
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8d550daa0428a4240fba5eca1dfb49879000adc
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Fri Nov 9 08:37:44 2018 -0500

    media: vivid: free bitmap_cap when updating std/timings/etc.
    
    commit 560ccb75c2caa6b1039dec1a53cd2ef526f5bf03 upstream.
    
    When vivid_update_format_cap() is called it should free any overlay
    bitmap since the compose size will change.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reported-by: syzbot+0cc8e3cc63ca373722c6@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>      # for v3.18 and up
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 468b4fb53fe84f68c628b94035e87b1f8e0bffd3
Author: Nava kishore Manne <nava.manne@xilinx.com>
Date:   Tue Dec 18 13:18:42 2018 +0100

    serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly
    
    commit 260683137ab5276113fc322fdbbc578024185fee upstream.
    
    This patch Correct the RX interrupt mask value to handle the
    RX interrupts properly.
    
    Fixes: c8dbdc842d30 ("serial: xuartps: Rewrite the interrupt handling logic")
    Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 362e8cbc7c72ec76a793b8e6ac5adc687e292539
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Dec 22 11:22:26 2018 +0100

    f2fs: fix validation of the block count in sanity_check_raw_super
    
    commit 88960068f25fcc3759455d85460234dcc9d43fef upstream.
    
    Treat "block_count" from struct f2fs_super_block as 64-bit little endian
    value in sanity_check_raw_super() because struct f2fs_super_block
    declares "block_count" as "__le64".
    
    This fixes a bug where the superblock validation fails on big endian
    devices with the following error:
      F2FS-fs (sda1): Wrong segment_count / block_count (61439 > 0)
      F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock
      F2FS-fs (sda1): Wrong segment_count / block_count (61439 > 0)
      F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock
    As result of this the partition cannot be mounted.
    
    With this patch applied the superblock validation works fine and the
    partition can be mounted again:
      F2FS-fs (sda1): Mounted with checkpoint version = 7c84
    
    My little endian x86-64 hardware was able to mount the partition without
    this fix.
    To confirm that mounting f2fs filesystems works on big endian machines
    again I tested this on a 32-bit MIPS big endian (lantiq) device.
    
    Fixes: 0cfe75c5b01199 ("f2fs: enhance sanity_check_raw_super() to avoid potential overflows")
    Cc: stable@vger.kernel.org
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 252098084eaccaa6f23959755c273c6b94c633ac
Author: Macpaul Lin <macpaul.lin@mediatek.com>
Date:   Wed Dec 19 12:11:03 2018 +0800

    cdc-acm: fix abnormal DATA RX issue for Mediatek Preloader.
    
    commit eafb27fa5283599ce6c5492ea18cf636a28222bb upstream.
    
    Mediatek Preloader is a proprietary embedded boot loader for loading
    Little Kernel and Linux into device DRAM.
    
    This boot loader also handle firmware update. Mediatek Preloader will be
    enumerated as a virtual COM port when the device is connected to Windows
    or Linux OS via CDC-ACM class driver. When the USB enumeration has been
    done, Mediatek Preloader will send out handshake command "READY" to PC
    actively instead of waiting command from the download tool.
    
    Since Linux 4.12, the commit "tty: reset termios state on device
    registration" (93857edd9829e144acb6c7e72d593f6e01aead66) causes Mediatek
    Preloader receiving some abnoraml command like "READYXX" as it sent.
    This will be recognized as an incorrect response. The behavior change
    also causes the download handshake fail. This change only affects
    subsequent connects if the reconnected device happens to get the same minor
    number.
    
    By disabling the ECHO termios flag could avoid this problem. However, it
    cannot be done by user space configuration when download tool open
    /dev/ttyACM0. This is because the device running Mediatek Preloader will
    send handshake command "READY" immediately once the CDC-ACM driver is
    ready.
    
    This patch wants to fix above problem by introducing "DISABLE_ECHO"
    property in driver_info. When Mediatek Preloader is connected, the
    CDC-ACM driver could disable ECHO flag in termios to avoid the problem.
    
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 751fcd0f1d6c5e2847e595ffd72fadd41c60720c
Author: Johan Jonker <jbx9999@hotmail.com>
Date:   Sat Nov 3 23:54:13 2018 +0100

    clk: rockchip: fix typo in rk3188 spdif_frac parent
    
    commit 8b19faf6fae2867e2c177212c541e8ae36aa4d32 upstream.
    
    Fix typo in common_clk_branches.
    Make spdif_pre parent of spdif_frac.
    
    Fixes: 667464208989 ("clk: rockchip: include downstream muxes into fractional dividers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
    Acked-by: Elaine Zhang <zhangqing@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31115f50aa7a09e827c96678e0bab370a8cbda21
Author: Lukas Wunner <lukas@wunner.de>
Date:   Thu Nov 8 08:06:10 2018 +0100

    spi: bcm2835: Avoid finishing transfer prematurely in IRQ mode
    
    commit 56c1723426d3cfd4723bfbfce531d7b38bae6266 upstream.
    
    The IRQ handler bcm2835_spi_interrupt() first reads as much as possible
    from the RX FIFO, then writes as much as possible to the TX FIFO.
    Afterwards it decides whether the transfer is finished by checking if
    the TX FIFO is empty.
    
    If very few bytes were written to the TX FIFO, they may already have
    been transmitted by the time the FIFO's emptiness is checked.  As a
    result, the transfer will be declared finished and the chip will be
    reset without reading the corresponding received bytes from the RX FIFO.
    
    The odds of this happening increase with a high clock frequency (such
    that the TX FIFO drains quickly) and either passing "threadirqs" on the
    command line or enabling CONFIG_PREEMPT_RT_BASE (such that the IRQ
    handler may be preempted between filling the TX FIFO and checking its
    emptiness).
    
    Fix by instead checking whether rx_len has reached zero, which means
    that the transfer has been received in full.  This is also more
    efficient as it avoids one bus read access per interrupt.  Note that
    bcm2835_spi_transfer_one_poll() likewise uses rx_len to determine
    whether the transfer has finished.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Fixes: e34ff011c70e ("spi: bcm2835: move to the transfer_one driver model")
    Cc: stable@vger.kernel.org # v4.1+
    Cc: Mathias Duckeck <m.duckeck@kunbus.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0049c05f7c1c7b4f678e0eae650bb8eaa9a5161
Author: Lukas Wunner <lukas@wunner.de>
Date:   Thu Nov 8 08:06:10 2018 +0100

    spi: bcm2835: Fix book-keeping of DMA termination
    
    commit dbc944115eed48af110646992893dc43321368d8 upstream.
    
    If submission of a DMA TX transfer succeeds but submission of the
    corresponding RX transfer does not, the BCM2835 SPI driver terminates
    the TX transfer but neglects to reset the dma_pending flag to false.
    
    Thus, if the next transfer uses interrupt mode (because it is shorter
    than BCM2835_SPI_DMA_MIN_LENGTH) and runs into a timeout,
    dmaengine_terminate_all() will be called both for TX (once more) and
    for RX (which was never started in the first place).  Fix it.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Fixes: 3ecd37edaa2a ("spi: bcm2835: enable dma modes for transfers meeting certain conditions")
    Cc: stable@vger.kernel.org # v4.2+
    Cc: Mathias Duckeck <m.duckeck@kunbus.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 708f742ea556b306c74ebdd9b8786c784873052f
Author: Lukas Wunner <lukas@wunner.de>
Date:   Thu Nov 8 08:06:10 2018 +0100

    spi: bcm2835: Fix race on DMA termination
    
    commit e82b0b3828451c1cd331d9f304c6078fcd43b62e upstream.
    
    If a DMA transfer finishes orderly right when spi_transfer_one_message()
    determines that it has timed out, the callbacks bcm2835_spi_dma_done()
    and bcm2835_spi_handle_err() race to call dmaengine_terminate_all(),
    potentially leading to double termination.
    
    Prevent by atomically changing the dma_pending flag before calling
    dmaengine_terminate_all().
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Fixes: 3ecd37edaa2a ("spi: bcm2835: enable dma modes for transfers meeting certain conditions")
    Cc: stable@vger.kernel.org # v4.2+
    Cc: Mathias Duckeck <m.duckeck@kunbus.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40a19e58f205bc7570b5f673f00a628279e79cfa
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Dec 19 14:07:58 2018 -0500

    ext4: force inode writes when nfsd calls commit_metadata()
    
    commit fde872682e175743e0c3ef939c89e3c6008a1529 upstream.
    
    Some time back, nfsd switched from calling vfs_fsync() to using a new
    commit_metadata() hook in export_operations().  If the file system did
    not provide a commit_metadata() hook, it fell back to using
    sync_inode_metadata().  Unfortunately doesn't work on all file
    systems.  In particular, it doesn't work on ext4 due to how the inode
    gets journalled --- the VFS writeback code will not always call
    ext4_write_inode().
    
    So we need to provide our own ext4_nfs_commit_metdata() method which
    calls ext4_write_inode() directly.
    
    Google-Bug-Id: 121195940
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2eb64177787db8b5699dd05b9ba5c1bc2f7ece95
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Dec 19 12:28:13 2018 -0500

    ext4: include terminating u32 in size of xattr entries when expanding inodes
    
    commit a805622a757b6d7f65def4141d29317d8e37b8a1 upstream.
    
    In ext4_expand_extra_isize_ea(), we calculate the total size of the
    xattr header, plus the xattr entries so we know how much of the
    beginning part of the xattrs to move when expanding the inode extra
    size.  We need to include the terminating u32 at the end of the xattr
    entries, or else if there is uninitialized, non-zero bytes after the
    xattr entries and before the xattr values, the list of xattr entries
    won't be properly terminated.
    
    Reported-by: Steve Graham <stgraham2000@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c72f56c5ae2a6760c48498ed3e1ca6b256d2062d
Author: ruippan (潘睿) <ruippan@tencent.com>
Date:   Tue Dec 4 01:04:12 2018 -0500

    ext4: fix EXT4_IOC_GROUP_ADD ioctl
    
    commit e647e29196b7f802f8242c39ecb7cc937f5ef217 upstream.
    
    Commit e2b911c53584 ("ext4: clean up feature test macros with
    predicate functions") broke the EXT4_IOC_GROUP_ADD ioctl.  This was
    not noticed since only very old versions of resize2fs (before
    e2fsprogs 1.42) use this ioctl.  However, using a new kernel with an
    enterprise Linux userspace will cause attempts to use online resize to
    fail with "No reserved GDT blocks".
    
    Fixes: e2b911c53584 ("ext4: clean up feature test macros with predicate...")
    Cc: stable@kernel.org # v4.4
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: ruippan (潘睿) <ruippan@tencent.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaec103eb0c3a1f0d2e9fe704cc7800aaedf4b0b
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Tue Dec 4 00:06:53 2018 -0500

    ext4: missing unlock/put_page() in ext4_try_to_write_inline_data()
    
    commit 132d00becb31e88469334e1e62751c81345280e0 upstream.
    
    In case of error, ext4_try_to_write_inline_data() should unlock
    and release the page it holds.
    
    Fixes: f19d5870cbf7 ("ext4: add normal write support for inline data")
    Cc: stable@kernel.org # 3.8
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 836bf269c56ff1d707b40a64dc8eef6754c2c24e
Author: Pan Bian <bianpan2016@163.com>
Date:   Mon Dec 3 23:28:02 2018 -0500

    ext4: fix possible use after free in ext4_quota_enable
    
    commit 61157b24e60fb3cd1f85f2c76a7b1d628f970144 upstream.
    
    The function frees qf_inode via iput but then pass qf_inode to
    lockdep_set_quota_inode on the failure path. This may result in a
    use-after-free bug. The patch frees df_inode only when it is never used.
    
    Fixes: daf647d2dd5 ("ext4: add lockdep annotations for i_data_sem")
    Cc: stable@kernel.org # 4.6
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdb2f4c79a86a5d289cce8a4c71dcd4b2c5845bd
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Nov 11 18:45:24 2018 +0000

    perf pmu: Suppress potential format-truncation warning
    
    commit 11a64a05dc649815670b1be9fe63d205cb076401 upstream.
    
    Depending on which functions are inlined in util/pmu.c, the snprintf()
    calls in perf_pmu__parse_{scale,unit,per_pkg,snapshot}() might trigger a
    warning:
    
      util/pmu.c: In function 'pmu_aliases':
      util/pmu.c:178:31: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size between 0 and 4095 [-Werror=format-truncation=]
        snprintf(path, PATH_MAX, "%s/%s.unit", dir, name);
                                   ^~
    
    I found this when trying to build perf from Linux 3.16 with gcc 8.
    However I can reproduce the problem in mainline if I force
    __perf_pmu__new_alias() to be inlined.
    
    Suppress this by using scnprintf() as has been done elsewhere in perf.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20181111184524.fux4taownc6ndbx6@decadent.org.uk
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e50db95d6eb62ea2456dc1f03cf6df5ca78bd7e5
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Thu Oct 11 11:12:34 2018 +0200

    platform-msi: Free descriptors in platform_msi_domain_free()
    
    commit 81b1e6e6a8590a19257e37a1633bec098d499c57 upstream.
    
    Since the addition of platform MSI support, there were two helpers
    supposed to allocate/free IRQs for a device:
    
        platform_msi_domain_alloc_irqs()
        platform_msi_domain_free_irqs()
    
    In these helpers, IRQ descriptors are allocated in the "alloc" routine
    while they are freed in the "free" one.
    
    Later, two other helpers have been added to handle IRQ domains on top
    of MSI domains:
    
        platform_msi_domain_alloc()
        platform_msi_domain_free()
    
    Seen from the outside, the logic is pretty close with the former
    helpers and people used it with the same logic as before: a
    platform_msi_domain_alloc() call should be balanced with a
    platform_msi_domain_free() call. While this is probably what was
    intended to do, the platform_msi_domain_free() does not remove/free
    the IRQ descriptor(s) created/inserted in
    platform_msi_domain_alloc().
    
    One effect of such situation is that removing a module that requested
    an IRQ will let one orphaned IRQ descriptor (with an allocated MSI
    entry) in the device descriptors list. Next time the module will be
    inserted back, one will observe that the allocation will happen twice
    in the MSI domain, one time for the remaining descriptor, one time for
    the new one. It also has the side effect to quickly overshoot the
    maximum number of allocated MSI and then prevent any module requesting
    an interrupt in the same domain to be inserted anymore.
    
    This situation has been met with loops of insertion/removal of the
    mvpp2.ko module (requesting 15 MSIs each time).
    
    Fixes: 552c494a7666 ("platform-msi: Allow creation of a MSI-based stacked irq domain")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b4a3e9d8d0ec074ff63ac1158a1ebcc46e36769
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Dec 20 14:21:08 2018 -0800

    KVM: x86: Use jmp to invoke kvm_spurious_fault() from .fixup
    
    commit e81434995081fd7efb755fd75576b35dbb0850b1 upstream.
    
    ____kvm_handle_fault_on_reboot() provides a generic exception fixup
    handler that is used to cleanly handle faults on VMX/SVM instructions
    during reboot (or at least try to).  If there isn't a reboot in
    progress, ____kvm_handle_fault_on_reboot() treats any exception as
    fatal to KVM and invokes kvm_spurious_fault(), which in turn generates
    a BUG() to get a stack trace and die.
    
    When it was originally added by commit 4ecac3fd6dc2 ("KVM: Handle
    virtualization instruction #UD faults during reboot"), the "call" to
    kvm_spurious_fault() was handcoded as PUSH+JMP, where the PUSH'd value
    is the RIP of the faulting instructing.
    
    The PUSH+JMP trickery is necessary because the exception fixup handler
    code lies outside of its associated function, e.g. right after the
    function.  An actual CALL from the .fixup code would show a slightly
    bogus stack trace, e.g. an extra "random" function would be inserted
    into the trace, as the return RIP on the stack would point to no known
    function (and the unwinder will likely try to guess who owns the RIP).
    
    Unfortunately, the JMP was replaced with a CALL when the macro was
    reworked to not spin indefinitely during reboot (commit b7c4145ba2eb
    "KVM: Don't spin on virt instruction faults during reboot").  This
    causes the aforementioned behavior where a bogus function is inserted
    into the stack trace, e.g. my builds like to blame free_kvm_area().
    
    Revert the CALL back to a JMP.  The changelog for commit b7c4145ba2eb
    ("KVM: Don't spin on virt instruction faults during reboot") contains
    nothing that indicates the switch to CALL was deliberate.  This is
    backed up by the fact that the PUSH <insn RIP> was left intact.
    
    Note that an alternative to the PUSH+JMP magic would be to JMP back
    to the "real" code and CALL from there, but that would require adding
    a JMP in the non-faulting path to avoid calling kvm_spurious_fault()
    and would add no value, i.e. the stack trace would be the same.
    
    Using CALL:
    
    ------------[ cut here ]------------
    kernel BUG at /home/sean/go/src/kernel.org/linux/arch/x86/kvm/x86.c:356!
    invalid opcode: 0000 [#1] SMP
    CPU: 4 PID: 1057 Comm: qemu-system-x86 Not tainted 4.20.0-rc6+ #75
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    RIP: 0010:kvm_spurious_fault+0x5/0x10 [kvm]
    Code: <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 55 49 89 fd 41
    RSP: 0018:ffffc900004bbcc8 EFLAGS: 00010046
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffffffffffff
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffff888273fd8000 R08: 00000000000003e8 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000784 R12: ffffc90000371fb0
    R13: 0000000000000000 R14: 000000026d763cf4 R15: ffff888273fd8000
    FS:  00007f3d69691700(0000) GS:ffff888277800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000055f89bc56fe0 CR3: 0000000271a5a001 CR4: 0000000000362ee0
    Call Trace:
     free_kvm_area+0x1044/0x43ea [kvm_intel]
     ? vmx_vcpu_run+0x156/0x630 [kvm_intel]
     ? kvm_arch_vcpu_ioctl_run+0x447/0x1a40 [kvm]
     ? kvm_vcpu_ioctl+0x368/0x5c0 [kvm]
     ? kvm_vcpu_ioctl+0x368/0x5c0 [kvm]
     ? __set_task_blocked+0x38/0x90
     ? __set_current_blocked+0x50/0x60
     ? __fpu__restore_sig+0x97/0x490
     ? do_vfs_ioctl+0xa1/0x620
     ? __x64_sys_futex+0x89/0x180
     ? ksys_ioctl+0x66/0x70
     ? __x64_sys_ioctl+0x16/0x20
     ? do_syscall_64+0x4f/0x100
     ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    Modules linked in: vhost_net vhost tap kvm_intel kvm irqbypass bridge stp llc
    ---[ end trace 9775b14b123b1713 ]---
    
    Using JMP:
    
    ------------[ cut here ]------------
    kernel BUG at /home/sean/go/src/kernel.org/linux/arch/x86/kvm/x86.c:356!
    invalid opcode: 0000 [#1] SMP
    CPU: 6 PID: 1067 Comm: qemu-system-x86 Not tainted 4.20.0-rc6+ #75
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    RIP: 0010:kvm_spurious_fault+0x5/0x10 [kvm]
    Code: <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 55 49 89 fd 41
    RSP: 0018:ffffc90000497cd0 EFLAGS: 00010046
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffffffffffff
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffff88827058bd40 R08: 00000000000003e8 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000784 R12: ffffc90000369fb0
    R13: 0000000000000000 R14: 00000003c8fc6642 R15: ffff88827058bd40
    FS:  00007f3d7219e700(0000) GS:ffff888277900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f3d64001000 CR3: 0000000271c6b004 CR4: 0000000000362ee0
    Call Trace:
     vmx_vcpu_run+0x156/0x630 [kvm_intel]
     ? kvm_arch_vcpu_ioctl_run+0x447/0x1a40 [kvm]
     ? kvm_vcpu_ioctl+0x368/0x5c0 [kvm]
     ? kvm_vcpu_ioctl+0x368/0x5c0 [kvm]
     ? __set_task_blocked+0x38/0x90
     ? __set_current_blocked+0x50/0x60
     ? __fpu__restore_sig+0x97/0x490
     ? do_vfs_ioctl+0xa1/0x620
     ? __x64_sys_futex+0x89/0x180
     ? ksys_ioctl+0x66/0x70
     ? __x64_sys_ioctl+0x16/0x20
     ? do_syscall_64+0x4f/0x100
     ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    Modules linked in: vhost_net vhost tap kvm_intel kvm irqbypass bridge stp llc
    ---[ end trace f9daedb85ab3ddba ]---
    
    Fixes: b7c4145ba2eb ("KVM: Don't spin on virt instruction faults during reboot")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 597929da47a9ebfd15bb50514a2b014a66318a42
Author: Patrick Dreyer <Patrick@Dreyer.name>
Date:   Sun Dec 23 10:06:35 2018 -0800

    Input: elan_i2c - add ACPI ID for touchpad in ASUS Aspire F5-573G
    
    commit 7db54c89f0b30a101584e09d3729144e6170059d upstream.
    
    This adds ELAN0501 to the ACPI table to support Elan touchpad found in ASUS
    Aspire F5-573G.
    
    Signed-off-by: Patrick Dreyer <Patrick.Dreyer@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d050458dd70ae068bf20b34aa87f981eefe2348b
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri May 25 15:00:20 2018 +0200

    qmi_wwan: apply SET_DTR quirk to the SIMCOM shared device ID
    
    commit 102cd909635612c0be784a519651954a7924c786 upstream.
    
    SIMCOM are reusing a single device ID for many (all of their?)
    different modems, based on different chipsets and firmwares. Newer
    Qualcomm chipset generations require setting DTR to wake the QMI
    function.  The SIM7600E modem is using such a chipset, making it
    fail to work with this driver despite the device ID match.
    
    Fix by unconditionally enabling the SET_DTR quirk for all SIMCOM
    modems using this specific device ID.  This is similar to what
    we already have done for another case of device IDs recycled over
    multiple chipset generations: 14cf4a771b30 ("drivers: net: usb:
    qmi_wwan: add QMI_QUIRK_SET_DTR for Telit PID 0x1201")
    
    Initial testing on an older SIM7100 modem shows no immediate side
    effects.
    
    Reported-by: Sebastian Sjoholm <sebastian.sjoholm@gmail.com>
    Cc: Reinhard Speyerer <rspmn@arcor.de>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e18378e8cc1ea12e3f7ec61bbe809d556bd8227
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Dec 19 16:30:07 2018 +0000

    staging: wilc1000: fix missing read_write setting when reading data
    
    commit c58eef061dda7d843dcc0ad6fea7e597d4c377c0 upstream.
    
    Currently the cmd.read_write setting is not initialized so it contains
    garbage from the stack.  Fix this by setting it to 0 to indicate a
    read is required.
    
    Detected by CoverityScan, CID#1357925 ("Uninitialized scalar variable")
    
    Fixes: c5c77ba18ea6 ("staging: wilc1000: Add SDIO/SPI 802.11 driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Ajay Singh <ajay.kathat@microchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b22ef6610191bfa204a92d24f1b0f9c407bbc71
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Tue Dec 18 20:04:25 2018 +0800

    usb: r8a66597: Fix a possible concurrency use-after-free bug in r8a66597_endpoint_disable()
    
    commit c85400f886e3d41e69966470879f635a2b50084c upstream.
    
    The function r8a66597_endpoint_disable() and r8a66597_urb_enqueue() may
    be concurrently executed.
    The two functions both access a possible shared variable "hep->hcpriv".
    
    This shared variable is freed by r8a66597_endpoint_disable() via the
    call path:
    r8a66597_endpoint_disable
      kfree(hep->hcpriv) (line 1995 in Linux-4.19)
    
    This variable is read by r8a66597_urb_enqueue() via the call path:
    r8a66597_urb_enqueue
      spin_lock_irqsave(&r8a66597->lock)
      init_pipe_info
        enable_r8a66597_pipe
          pipe = hep->hcpriv (line 802 in Linux-4.19)
    
    The read operation is protected by a spinlock, but the free operation
    is not protected by this spinlock, thus a concurrency use-after-free bug
    may occur.
    
    To fix this bug, the spin-lock and spin-unlock function calls in
    r8a66597_endpoint_disable() are moved to protect the free operation.
    
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6703c3e8d5d1e0fac25b85ae6b521976f6325e86
Author: Jörgen Storvist <jorgen.storvist@gmail.com>
Date:   Fri Dec 21 14:40:44 2018 +0100

    USB: serial: option: add Fibocom NL678 series
    
    commit 4b2c01ad902ec02fa962b233decd2f14be3714ba upstream.
    
    Added USB serial option driver support for Fibocom NL678 series cellular
    module: VID 2cb7 and PIDs 0x0104 and 0x0105.
    Reserved network and ADB interfaces.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0104 Rev=03.10
    S:  Manufacturer=Fibocom
    S:  Product=Fibocom NL678-E Modem
    S:  SerialNumber=12345678
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0105 Rev=03.10
    S:  Manufacturer=Fibocom
    S:  Product=Fibocom NL678-E Modem
    S:  SerialNumber=12345678
    C:  #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 4 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
    I:  If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    
    Signed-off-by: Jörgen Storvist <jorgen.storvist@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3e8dfa394ad2c1f907b193e186a1bfb63b33c4b
Author: Scott Chen <scott@labau.com.tw>
Date:   Thu Dec 13 06:01:47 2018 -0500

    USB: serial: pl2303: add ids for Hewlett-Packard HP POS pole displays
    
    commit 8d503f206c336677954160ac62f0c7d9c219cd89 upstream.
    
    Add device ids to pl2303 for the HP POS pole displays:
    LM920:   03f0:026b
    TD620:   03f0:0956
    LD960TA: 03f0:4439
    LD220TA: 03f0:4349
    LM940:   03f0:5039
    
    Signed-off-by: Scott Chen <scott@labau.com.tw>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29a4c8dd0fb241e587422dfbd3bad7ee0befb92d
Author: Sameer Pujar <spujar@nvidia.com>
Date:   Wed Dec 26 16:04:49 2018 +0530

    ALSA: hda/tegra: clear pending irq handlers
    
    commit 63d2a9ec310d8bcc955574220d4631aa55c1a80c upstream.
    
    Even after disabling interrupts on the module, it could be possible
    that irq handlers are still running. System hang is seen during
    suspend path. It was found that, there were pending writes on the
    HDA bus and clock was disabled by that time.
    
    Above mentioned issue is fixed by clearing any pending irq handlers
    before disabling clocks and returning from hda suspend.
    
    Suggested-by: Mohan Kumar <mkumard@nvidia.com>
    Suggested-by: Dara Ramesh <dramesh@nvidia.com>
    Signed-off-by: Sameer Pujar <spujar@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 119199f04b336e5c9bd33f0180dbce0759bd2ff3
Author: Mantas MikulÄ—nas <grawity@gmail.com>
Date:   Sun Dec 16 15:44:47 2018 +0200

    ALSA: hda: add mute LED support for HP EliteBook 840 G4
    
    commit 40906ebe3af6a48457151b3c6726b480f6a6cb13 upstream.
    
    Tested with 4.19.9.
    
    v2: Changed from CXT_FIXUP_MUTE_LED_GPIO to CXT_FIXUP_HP_DOCK because
        that's what the existing fixups for EliteBooks use.
    
    Signed-off-by: Mantas MikulÄ—nas <grawity@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 542a4304f043703cf894e0c7f5d21f438c62fc5c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Dec 10 21:38:16 2018 +0100

    mtd: atmel-quadspi: disallow building on ebsa110
    
    commit 2a9d92fb3a1282a4659f1bb6d5684018846537b7 upstream.
    
    I ran into a link-time error with the atmel-quadspi driver on the
    EBSA110 platform:
    
    drivers/mtd/built-in.o: In function `atmel_qspi_run_command':
    :(.text+0x1ee3c): undefined reference to `_memcpy_toio'
    :(.text+0x1ee48): undefined reference to `_memcpy_fromio'
    
    The problem is that _memcpy_toio/_memcpy_fromio are not available on
    that platform, and we have to prevent building the driver there.
    
    In case we want to backport this to older kernels: between linux-4.8
    and linux-4.20, the Kconfig entry was in drivers/mtd/spi-nor/Kconfig
    but had the same problem.
    
    Link: https://lore.kernel.org/patchwork/patch/812860/
    Fixes: 161aaab8a067 ("mtd: atmel-quadspi: add driver for Atmel QSPI controller")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e71e6cee4a3b6e350ef5daffa030d2b5226bc28
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Dec 12 11:20:49 2018 -0600

    ALSA: emux: Fix potential Spectre v1 vulnerabilities
    
    commit 4aea96f4237cea0c51a8bc87c0db31f0f932f1f0 upstream.
    
    info.mode and info.port are indirectly controlled by user-space,
    hence leading to a potential exploitation of the Spectre variant 1
    vulnerability.
    
    These issues were detected with the help of Smatch:
    
    sound/synth/emux/emux_hwdep.c:72 snd_emux_hwdep_misc_mode() warn: potential spectre issue 'emu->portptrs[i]->ctrls' [w] (local cap)
    sound/synth/emux/emux_hwdep.c:75 snd_emux_hwdep_misc_mode() warn: potential spectre issue 'emu->portptrs' [w] (local cap)
    sound/synth/emux/emux_hwdep.c:75 snd_emux_hwdep_misc_mode() warn: potential spectre issue 'emu->portptrs[info.port]->ctrls' [w] (local cap)
    
    Fix this by sanitizing both info.mode and info.port before using them
    to index emu->portptrs[i]->ctrls, emu->portptrs[info.port]->ctrls and
    emu->portptrs.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7455acac681d61200d06fe24578d9e2a85e6e483
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Dec 12 15:36:28 2018 -0600

    ALSA: pcm: Fix potential Spectre v1 vulnerability
    
    commit 94ffb030b6d31ec840bb811be455dd2e26a4f43e upstream.
    
    stream is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    sound/core/pcm.c:140 snd_pcm_control_ioctl() warn: potential spectre issue 'pcm->streams' [r] (local cap)
    
    Fix this by sanitizing stream before using it to index pcm->streams
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9b881e0536244565fa5cad20d773d7e96890e43
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Dec 18 11:52:16 2018 -0600

    ALSA: emu10k1: Fix potential Spectre v1 vulnerabilities
    
    commit 5ae4f61f012a097df93de2285070ec8e34716d29 upstream.
    
    ipcm->substream is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    sound/pci/emu10k1/emufx.c:1031 snd_emu10k1_ipcm_poke() warn: potential spectre issue 'emu->fx8010.pcm' [r] (local cap)
    sound/pci/emu10k1/emufx.c:1075 snd_emu10k1_ipcm_peek() warn: potential spectre issue 'emu->fx8010.pcm' [r] (local cap)
    
    Fix this by sanitizing ipcm->substream before using it to index emu->fx8010.pcm
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2f87232dbf1cf22c27648ab1e08667d44eca2ba
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Dec 18 11:18:34 2018 -0600

    ALSA: rme9652: Fix potential Spectre v1 vulnerability
    
    commit 0b84304ef5da92add8dc75a1b07879c5374cdb05 upstream.
    
    info->channel is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    sound/pci/rme9652/hdsp.c:4100 snd_hdsp_channel_info() warn: potential spectre issue 'hdsp->channel_map' [r] (local cap)
    
    Fix this by sanitizing info->channel before using it to index hdsp->channel_map
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    Also, notice that I refactored the code a bit in order to get rid of the
    following checkpatch warning:
    
    ERROR: do not use assignment in if condition
    FILE: sound/pci/rme9652/hdsp.c:4103:
            if ((mapped_channel = hdsp->channel_map[info->channel]) < 0)
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce8ec03171c65dc5c48955e19182865ce2ed4fc7
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sun Dec 30 12:43:42 2018 -0800

    ptr_ring: wrap back ->producer in __ptr_ring_swap_queue()
    
    [ Upstream commit aff6db454599d62191aabc208930e891748e4322 ]
    
    __ptr_ring_swap_queue() tries to move pointers from the old
    ring to the new one, but it forgets to check if ->producer
    is beyond the new size at the end of the operation. This leads
    to an out-of-bound access in __ptr_ring_produce() as reported
    by syzbot.
    
    Reported-by: syzbot+8993c0fa96d57c399735@syzkaller.appspotmail.com
    Fixes: 5d49de532002 ("ptr_ring: resize support")
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7abb7f747bd02e1ab2e81ea0c6537bc694d3da2c
Author: Deepa Dinamani <deepa.kernel@gmail.com>
Date:   Thu Dec 27 18:55:09 2018 -0800

    sock: Make sock->sk_stamp thread-safe
    
    [ Upstream commit 3a0ed3e9619738067214871e9cb826fa23b2ddb9 ]
    
    Al Viro mentioned (Message-ID
    <20170626041334.GZ10672@ZenIV.linux.org.uk>)
    that there is probably a race condition
    lurking in accesses of sk_stamp on 32-bit machines.
    
    sock->sk_stamp is of type ktime_t which is always an s64.
    On a 32 bit architecture, we might run into situations of
    unsafe access as the access to the field becomes non atomic.
    
    Use seqlocks for synchronization.
    This allows us to avoid using spinlocks for readers as
    readers do not need mutual exclusion.
    
    Another approach to solve this is to require sk_lock for all
    modifications of the timestamps. The current approach allows
    for timestamps to have their own lock: sk_stamp_lock.
    This allows for the patch to not compete with already
    existing critical sections, and side effects are limited
    to the paths in the patch.
    
    The addition of the new field maintains the data locality
    optimizations from
    commit 9115e8cd2a0c ("net: reorganize struct sock for better data
    locality")
    
    Note that all the instances of the sk_stamp accesses
    are either through the ioctl or the syscall recvmsg.
    
    Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf7640671ad2bc0de67cd5b5e734a829d0cbf313
Author: Yuval Avnery <yuvalav@mellanox.com>
Date:   Thu Dec 13 02:26:46 2018 +0200

    net/mlx5: Typo fix in del_sw_hw_rule
    
    [ Upstream commit f0337889147c956721696553ffcc97212b0948fe ]
    
    Expression terminated with "," instead of ";", resulted in
    set_fte getting bad value for modify_enable_mask field.
    
    Fixes: bd5251dbf156 ("net/mlx5_core: Introduce flow steering destination of type counter")
    Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82b8fa5e32aaab83bc8e7142b966b6a15757b2a9
Author: Alaa Hleihel <alaa@mellanox.com>
Date:   Sun Nov 25 11:46:09 2018 +0200

    net/mlx5e: Remove the false indication of software timestamping support
    
    [ Upstream commit 4765420439e758bfa4808392d18b0a4cb6f06065 ]
    
    mlx5 driver falsely advertises support of software timestamping.
    Fix it by removing the false indication.
    
    Fixes: ef9814deafd0 ("net/mlx5e: Add HW timestamping (TS) support")
    Signed-off-by: Alaa Hleihel <alaa@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52f563ef53f417c97e8ef7c5a29a2330afaea78a
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Wed Dec 19 23:23:00 2018 +0100

    gro_cell: add napi_disable in gro_cells_destroy
    
    [ Upstream commit 8e1da73acded4751a93d4166458a7e640f37d26c ]
    
    Add napi_disable routine in gro_cells_destroy since starting from
    commit c42858eaf492 ("gro_cells: remove spinlock protecting receive
    queues") gro_cell_poll and gro_cells_destroy can run concurrently on
    napi_skbs list producing a kernel Oops if the tunnel interface is
    removed while gro_cell_poll is running. The following Oops has been
    triggered removing a vxlan device while the interface is receiving
    traffic
    
    [ 5628.948853] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    [ 5628.949981] PGD 0 P4D 0
    [ 5628.950308] Oops: 0002 [#1] SMP PTI
    [ 5628.950748] CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 4.20.0-rc6+ #41
    [ 5628.952940] RIP: 0010:gro_cell_poll+0x49/0x80
    [ 5628.955615] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
    [ 5628.956250] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
    [ 5628.957102] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
    [ 5628.957940] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
    [ 5628.958803] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
    [ 5628.959661] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
    [ 5628.960682] FS:  0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
    [ 5628.961616] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 5628.962359] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
    [ 5628.963188] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 5628.964034] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 5628.964871] Call Trace:
    [ 5628.965179]  net_rx_action+0xf0/0x380
    [ 5628.965637]  __do_softirq+0xc7/0x431
    [ 5628.966510]  run_ksoftirqd+0x24/0x30
    [ 5628.966957]  smpboot_thread_fn+0xc5/0x160
    [ 5628.967436]  kthread+0x113/0x130
    [ 5628.968283]  ret_from_fork+0x3a/0x50
    [ 5628.968721] Modules linked in:
    [ 5628.969099] CR2: 0000000000000008
    [ 5628.969510] ---[ end trace 9d9dedc7181661fe ]---
    [ 5628.970073] RIP: 0010:gro_cell_poll+0x49/0x80
    [ 5628.972965] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
    [ 5628.973611] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
    [ 5628.974504] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
    [ 5628.975462] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
    [ 5628.976413] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
    [ 5628.977375] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
    [ 5628.978296] FS:  0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
    [ 5628.979327] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 5628.980044] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
    [ 5628.980929] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 5628.981736] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 5628.982409] Kernel panic - not syncing: Fatal exception in interrupt
    [ 5628.983307] Kernel Offset: disabled
    
    Fixes: c42858eaf492 ("gro_cells: remove spinlock protecting receive queues")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60216788e4e38030bc18eaba8fd4547011cdc5df
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Dec 10 15:23:30 2018 -0800

    tipc: compare remote and local protocols in tipc_udp_enable()
    
    [ Upstream commit fb83ed496b9a654f60cd1d58a0e1e79ec5694808 ]
    
    When TIPC_NLA_UDP_REMOTE is an IPv6 mcast address but
    TIPC_NLA_UDP_LOCAL is an IPv4 address, a NULL-ptr deref is triggered
    as the UDP tunnel sock is initialized to IPv4 or IPv6 sock merely
    based on the protocol in local address.
    
    We should just error out when the remote address and local address
    have different protocols.
    
    Reported-by: syzbot+eb4da3a20fad2e52555d@syzkaller.appspotmail.com
    Cc: Ying Xue <ying.xue@windriver.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd36f18decc0c08f0a20494dbfcbe8f04d44f5a
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Dec 10 11:49:55 2018 -0800

    tipc: use lock_sock() in tipc_sk_reinit()
    
    [ Upstream commit 15ef70e286176165d28b0b8a969b422561a68dfc ]
    
    lock_sock() must be used in process context to be race-free with
    other lock_sock() callers, for example, tipc_release(). Otherwise
    using the spinlock directly can't serialize a parallel tipc_release().
    
    As it is blocking, we have to hold the sock refcnt before
    rhashtable_walk_stop() and release it after rhashtable_walk_start().
    
    Fixes: 07f6c4bc048a ("tipc: convert tipc reference table to use generic rhashtable")
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Ying Xue <ying.xue@windriver.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba0b3c189365d3f55b6b633d40ceaa815eb0323d
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Dec 18 16:06:19 2018 +0100

    xen/netfront: tolerate frags with no data
    
    [ Upstream commit d81c5054a5d1d4999c7cdead7636b6cd4af83d36 ]
    
    At least old Xen net backends seem to send frags with no real data
    sometimes. In case such a fragment happens to occur with the frag limit
    already reached the frontend will BUG currently even if this situation
    is easily recoverable.
    
    Modify the BUG_ON() condition accordingly.
    
    Tested-by: Dietmar Hahn <dietmar.hahn@ts.fujitsu.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2ea9f12c45ec97c154fce5a880a05f0c71482e4
Author: Jorgen Hansen <jhansen@vmware.com>
Date:   Tue Dec 18 00:34:06 2018 -0800

    VSOCK: Send reset control packet when socket is partially bound
    
    [ Upstream commit a915b982d8f5e4295f64b8dd37ce753874867e88 ]
    
    If a server side socket is bound to an address, but not in the listening
    state yet, incoming connection requests should receive a reset control
    packet in response. However, the function used to send the reset
    silently drops the reset packet if the sending socket isn't bound
    to a remote address (as is the case for a bound socket not yet in
    the listening state). This change fixes this by using the src
    of the incoming packet as destination for the reset packet in
    this case.
    
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Reviewed-by: Adit Ranadive <aditr@vmware.com>
    Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
    Signed-off-by: Jorgen Hansen <jhansen@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd50de33ca4cb4d9fdcee5e9e977b39599c11420
Author: Jason Wang <jasowang@redhat.com>
Date:   Thu Dec 13 10:53:37 2018 +0800

    vhost: make sure used idx is seen before log in vhost_add_used_n()
    
    [ Upstream commit 841df922417eb82c835e93d4b93eb6a68c99d599 ]
    
    We miss a write barrier that guarantees used idx is updated and seen
    before log. This will let userspace sync and copy used ring before
    used idx is update. Fix this by adding a barrier before log_write().
    
    Fixes: 8dd014adfea6f ("vhost-net: mergeable buffers support")
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 336e822a0d48a65cd1d8ab6b5671ec737fb65c56
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Dec 10 12:45:45 2018 -0800

    tipc: fix a double kfree_skb()
    
    [ Upstream commit acb4a33e9856d5fa3384b87d3d8369229be06d31 ]
    
    tipc_udp_xmit() drops the packet on error, there is no
    need to drop it again.
    
    Fixes: ef20cd4dd163 ("tipc: introduce UDP replicast")
    Reported-and-tested-by: syzbot+eae585ba2cc2752d3704@syzkaller.appspotmail.com
    Cc: Ying Xue <ying.xue@windriver.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa0c48d161954a700ba735e52d18af092079f460
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Dec 10 18:00:52 2018 +0800

    sctp: initialize sin6_flowinfo for ipv6 addrs in sctp_inet6addr_event
    
    [ Upstream commit 4a2eb0c37b4759416996fbb4c45b932500cf06d3 ]
    
    syzbot reported a kernel-infoleak, which is caused by an uninitialized
    field(sin6_flowinfo) of addr->a.v6 in sctp_inet6addr_event().
    The call trace is as below:
    
      BUG: KMSAN: kernel-infoleak in _copy_to_user+0x19a/0x230 lib/usercopy.c:33
      CPU: 1 PID: 8164 Comm: syz-executor2 Not tainted 4.20.0-rc3+ #95
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
      Google 01/01/2011
      Call Trace:
        __dump_stack lib/dump_stack.c:77 [inline]
        dump_stack+0x32d/0x480 lib/dump_stack.c:113
        kmsan_report+0x12c/0x290 mm/kmsan/kmsan.c:683
        kmsan_internal_check_memory+0x32a/0xa50 mm/kmsan/kmsan.c:743
        kmsan_copy_to_user+0x78/0xd0 mm/kmsan/kmsan_hooks.c:634
        _copy_to_user+0x19a/0x230 lib/usercopy.c:33
        copy_to_user include/linux/uaccess.h:183 [inline]
        sctp_getsockopt_local_addrs net/sctp/socket.c:5998 [inline]
        sctp_getsockopt+0x15248/0x186f0 net/sctp/socket.c:7477
        sock_common_getsockopt+0x13f/0x180 net/core/sock.c:2937
        __sys_getsockopt+0x489/0x550 net/socket.c:1939
        __do_sys_getsockopt net/socket.c:1950 [inline]
        __se_sys_getsockopt+0xe1/0x100 net/socket.c:1947
        __x64_sys_getsockopt+0x62/0x80 net/socket.c:1947
        do_syscall_64+0xcf/0x110 arch/x86/entry/common.c:291
        entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    sin6_flowinfo is not really used by SCTP, so it will be fixed by simply
    setting it to 0.
    
    The issue exists since very beginning.
    Thanks Alexander for the reproducer provided.
    
    Reported-by: syzbot+ad5d327e6936a2e284be@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84e1bfdecaaf52efa7da3a74a51f10facde6d95d
Author: Willem de Bruijn <willemb@google.com>
Date:   Sat Dec 22 16:53:45 2018 -0500

    packet: validate address length if non-zero
    
    [ Upstream commit 6b8d95f1795c42161dc0984b6863e95d6acf24ed ]
    
    Validate packet socket address length if a length is given. Zero
    length is equivalent to not setting an address.
    
    Fixes: 99137b7888f4 ("packet: validate address length")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ddf35c6983b1878b5289829791d87437a8e0d32
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Dec 21 12:06:59 2018 -0500

    packet: validate address length
    
    [ Upstream commit 99137b7888f4058087895d035d81c6b2d31015c5 ]
    
    Packet sockets with SOCK_DGRAM may pass an address for use in
    dev_hard_header. Ensure that it is of sufficient length.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ca2635b418cdc1d47091a85f6f4bda46b8da264
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sat Dec 29 13:56:37 2018 -0800

    net/wan: fix a double free in x25_asy_open_tty()
    
    [ Upstream commit d5c7c745f254c6cb98b3b3f15fe789b8bd770c72 ]
    
    When x25_asy_open() fails, it already cleans up by itself,
    so its caller doesn't need to free the memory again.
    
    It seems we still have to call x25_asy_free() to clear the SLF_INUSE
    bit, so just set these pointers to NULL after kfree().
    
    Reported-and-tested-by: syzbot+5e5e969e525129229052@syzkaller.appspotmail.com
    Fixes: 3b780bed3138 ("x25_asy: Free x25_asy on x25_asy_open() failure.")
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9f3a0f2b5dd9b567d43f2a3ffe67aa0b667dff
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sat Dec 29 13:56:38 2018 -0800

    netrom: fix locking in nr_find_socket()
    
    [ Upstream commit 7314f5480f3e37e570104dc5e0f28823ef849e72 ]
    
    nr_find_socket(), nr_find_peer() and nr_find_listener() lock the
    sock after finding it in the global list. However, the call path
    requires BH disabled for the sock lock consistently.
    
    Actually the locking is unnecessary at this point, we can just hold
    the sock refcnt to make sure it is not gone after we unlock the global
    list, and lock it later only when needed.
    
    Reported-and-tested-by: syzbot+f621cda8b7e598908efa@syzkaller.appspotmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99519a6d546c61dc3c7fb75c8d936f3b665f9e43
Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Date:   Tue Dec 18 16:57:04 2018 +0900

    net: phy: Fix the issue that netif always links up after resuming
    
    [ Upstream commit 8742beb50f2db903d3b6d69ddd81d67ce9914453 ]
    
    Even though the link is down before entering hibernation,
    there is an issue that the network interface always links up after resuming
    from hibernation.
    
    If the link is still down before enabling the network interface,
    and after resuming from hibernation, the phydev->state is forcibly set
    to PHY_UP in mdio_bus_phy_restore(), and the link becomes up.
    
    In suspend sequence, only if the PHY is attached, mdio_bus_phy_suspend()
    calls phy_stop_machine(), and mdio_bus_phy_resume() calls
    phy_start_machine().
    In resume sequence, it's enough to do the same as mdio_bus_phy_resume()
    because the state has been preserved.
    
    This patch fixes the issue by calling phy_start_machine() in
    mdio_bus_phy_restore() in the same way as mdio_bus_phy_resume().
    
    Fixes: bc87922ff59d ("phy: Move PHY PM operations into phy_device")
    Suggested-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 122aeb4a1990e9d15641cf54db4f812aeaa52ed0
Author: Michal Kubecek <mkubecek@suse.cz>
Date:   Thu Dec 13 17:23:32 2018 +0100

    net: ipv4: do not handle duplicate fragments as overlapping
    
    [ Upstream commit ade446403bfb79d3528d56071a84b15351a139ad ]
    
    Since commit 7969e5c40dfd ("ip: discard IPv4 datagrams with overlapping
    segments.") IPv4 reassembly code drops the whole queue whenever an
    overlapping fragment is received. However, the test is written in a way
    which detects duplicate fragments as overlapping so that in environments
    with many duplicate packets, fragmented packets may be undeliverable.
    
    Add an extra test and for (potentially) duplicate fragment, only drop the
    new fragment rather than the whole queue. Only starting offset and length
    are checked, not the contents of the fragments as that would be too
    expensive. For similar reason, linear list ("run") of a rbtree node is not
    iterated, we only check if the new fragment is a subset of the interval
    covered by existing consecutive fragments.
    
    v2: instead of an exact check iterating through linear list of an rbtree
    node, only check if the new fragment is subset of the "run" (suggested
    by Eric Dumazet)
    
    Fixes: 7969e5c40dfd ("ip: discard IPv4 datagrams with overlapping segments.")
    Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 401b5f3d4869d62b310c886c74ed6f75990c4eca
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 2 09:20:27 2019 -0800

    isdn: fix kernel-infoleak in capi_unlocked_ioctl
    
    [ Upstream commit d63967e475ae10f286dbd35e189cb241e0b1f284 ]
    
    Since capi_ioctl() copies 64 bytes after calling
    capi20_get_manufacturer() we need to ensure to not leak
    information to user.
    
    BUG: KMSAN: kernel-infoleak in _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
    CPU: 0 PID: 11245 Comm: syz-executor633 Not tainted 4.20.0-rc7+ #2
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x173/0x1d0 lib/dump_stack.c:113
     kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
     kmsan_internal_check_memory+0x9d4/0xb00 mm/kmsan/kmsan.c:704
     kmsan_copy_to_user+0xab/0xc0 mm/kmsan/kmsan_hooks.c:601
     _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
     capi_ioctl include/linux/uaccess.h:177 [inline]
     capi_unlocked_ioctl+0x1a0b/0x1bf0 drivers/isdn/capi/capi.c:939
     do_vfs_ioctl+0xebd/0x2bf0 fs/ioctl.c:46
     ksys_ioctl fs/ioctl.c:713 [inline]
     __do_sys_ioctl fs/ioctl.c:720 [inline]
     __se_sys_ioctl+0x1da/0x270 fs/ioctl.c:718
     __x64_sys_ioctl+0x4a/0x70 fs/ioctl.c:718
     do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x440019
    Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 fb 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007ffdd4659fb8 EFLAGS: 00000213 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 0000000000440019
    RDX: 0000000020000080 RSI: 00000000c0044306 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 0000000000000000 R09: 00000000004002c8
    R10: 0000000000000000 R11: 0000000000000213 R12: 00000000004018a0
    R13: 0000000000401930 R14: 0000000000000000 R15: 0000000000000000
    
    Local variable description: ----data.i@capi_unlocked_ioctl
    Variable was created at:
     capi_ioctl drivers/isdn/capi/capi.c:747 [inline]
     capi_unlocked_ioctl+0x82/0x1bf0 drivers/isdn/capi/capi.c:939
     do_vfs_ioctl+0xebd/0x2bf0 fs/ioctl.c:46
    
    Bytes 12-63 of 64 are uninitialized
    Memory access of size 64 starts at ffff88807ac5fce8
    Data copied to user address 0000000020000080
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Karsten Keil <isdn@linux-pingi.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 818b3f7fa0023ec4b0278f160f38652286b46dfe
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Dec 21 07:47:51 2018 -0800

    ipv6: tunnels: fix two use-after-free
    
    [ Upstream commit cbb49697d5512ce9e61b45ce75d3ee43d7ea5524 ]
    
    xfrm6_policy_check() might have re-allocated skb->head, we need
    to reload ipv6 header pointer.
    
    sysbot reported :
    
    BUG: KASAN: use-after-free in __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
    Read of size 4 at addr ffff888191b8cb70 by task syz-executor2/1304
    
    CPU: 0 PID: 1304 Comm: syz-executor2 Not tainted 4.20.0-rc7+ #356
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x244/0x39d lib/dump_stack.c:113
     print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412
     __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:432
     __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
     ipv6_addr_type include/net/ipv6.h:403 [inline]
     ip6_tnl_get_cap+0x27/0x190 net/ipv6/ip6_tunnel.c:727
     ip6_tnl_rcv_ctl+0xdb/0x2a0 net/ipv6/ip6_tunnel.c:757
     vti6_rcv+0x336/0x8f3 net/ipv6/ip6_vti.c:321
     xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
     ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
     ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
    IPVS: ftp: loaded support on port[0] = 21
     ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
     dst_input include/net/dst.h:450 [inline]
     ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
     __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
     __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
     process_backlog+0x24e/0x7a0 net/core/dev.c:5923
     napi_poll net/core/dev.c:6346 [inline]
     net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
     __do_softirq+0x308/0xb7e kernel/softirq.c:292
     do_softirq_own_stack+0x2a/0x40 arch/x86/entry/entry_64.S:1027
     </IRQ>
     do_softirq.part.14+0x126/0x160 kernel/softirq.c:337
     do_softirq+0x19/0x20 kernel/softirq.c:340
     netif_rx_ni+0x521/0x860 net/core/dev.c:4569
     dev_loopback_xmit+0x287/0x8c0 net/core/dev.c:3576
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ip6_finish_output2+0x193a/0x2930 net/ipv6/ip6_output.c:84
     ip6_fragment+0x2b06/0x3850 net/ipv6/ip6_output.c:727
     ip6_finish_output+0x6b7/0xc50 net/ipv6/ip6_output.c:152
     NF_HOOK_COND include/linux/netfilter.h:278 [inline]
     ip6_output+0x232/0x9d0 net/ipv6/ip6_output.c:171
     dst_output include/net/dst.h:444 [inline]
     ip6_local_out+0xc5/0x1b0 net/ipv6/output_core.c:176
     ip6_send_skb+0xbc/0x340 net/ipv6/ip6_output.c:1727
     ip6_push_pending_frames+0xc5/0xf0 net/ipv6/ip6_output.c:1747
     rawv6_push_pending_frames net/ipv6/raw.c:615 [inline]
     rawv6_sendmsg+0x3a3e/0x4b40 net/ipv6/raw.c:945
    kobject: 'queues' (0000000089e6eea2): kobject_add_internal: parent: 'tunl0', set: '<NULL>'
    kobject: 'queues' (0000000089e6eea2): kobject_uevent_env
     inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
    kobject: 'queues' (0000000089e6eea2): kobject_uevent_env: filter function caused the event to drop!
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg+0xd5/0x120 net/socket.c:631
     sock_write_iter+0x35e/0x5c0 net/socket.c:900
     call_write_iter include/linux/fs.h:1857 [inline]
     new_sync_write fs/read_write.c:474 [inline]
     __vfs_write+0x6b8/0x9f0 fs/read_write.c:487
    kobject: 'rx-0' (00000000e2d902d9): kobject_add_internal: parent: 'queues', set: 'queues'
    kobject: 'rx-0' (00000000e2d902d9): kobject_uevent_env
     vfs_write+0x1fc/0x560 fs/read_write.c:549
     ksys_write+0x101/0x260 fs/read_write.c:598
    kobject: 'rx-0' (00000000e2d902d9): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/rx-0'
     __do_sys_write fs/read_write.c:610 [inline]
     __se_sys_write fs/read_write.c:607 [inline]
     __x64_sys_write+0x73/0xb0 fs/read_write.c:607
     do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
    kobject: 'tx-0' (00000000443b70ac): kobject_add_internal: parent: 'queues', set: 'queues'
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x457669
    Code: fd b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 cb b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f9bd200bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000457669
    RDX: 000000000000058f RSI: 00000000200033c0 RDI: 0000000000000003
    kobject: 'tx-0' (00000000443b70ac): kobject_uevent_env
    RBP: 000000000072bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f9bd200c6d4
    R13: 00000000004c2dcc R14: 00000000004da398 R15: 00000000ffffffff
    
    Allocated by task 1304:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553
     __do_kmalloc_node mm/slab.c:3684 [inline]
     __kmalloc_node_track_caller+0x50/0x70 mm/slab.c:3698
     __kmalloc_reserve.isra.41+0x41/0xe0 net/core/skbuff.c:140
     __alloc_skb+0x155/0x760 net/core/skbuff.c:208
    kobject: 'tx-0' (00000000443b70ac): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/tx-0'
     alloc_skb include/linux/skbuff.h:1011 [inline]
     __ip6_append_data.isra.49+0x2f1a/0x3f50 net/ipv6/ip6_output.c:1450
     ip6_append_data+0x1bc/0x2d0 net/ipv6/ip6_output.c:1619
     rawv6_sendmsg+0x15ab/0x4b40 net/ipv6/raw.c:938
     inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg+0xd5/0x120 net/socket.c:631
     ___sys_sendmsg+0x7fd/0x930 net/socket.c:2116
     __sys_sendmsg+0x11d/0x280 net/socket.c:2154
     __do_sys_sendmsg net/socket.c:2163 [inline]
     __se_sys_sendmsg net/socket.c:2161 [inline]
     __x64_sys_sendmsg+0x78/0xb0 net/socket.c:2161
     do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    kobject: 'gre0' (00000000cb1b2d7b): kobject_add_internal: parent: 'net', set: 'devices'
    
    Freed by task 1304:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521
     kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
     __cache_free mm/slab.c:3498 [inline]
     kfree+0xcf/0x230 mm/slab.c:3817
     skb_free_head+0x93/0xb0 net/core/skbuff.c:553
     pskb_expand_head+0x3b2/0x10d0 net/core/skbuff.c:1498
     __pskb_pull_tail+0x156/0x18a0 net/core/skbuff.c:1896
     pskb_may_pull include/linux/skbuff.h:2188 [inline]
     _decode_session6+0xd11/0x14d0 net/ipv6/xfrm6_policy.c:150
     __xfrm_decode_session+0x71/0x140 net/xfrm/xfrm_policy.c:3272
    kobject: 'gre0' (00000000cb1b2d7b): kobject_uevent_env
     __xfrm_policy_check+0x380/0x2c40 net/xfrm/xfrm_policy.c:3322
     __xfrm_policy_check2 include/net/xfrm.h:1170 [inline]
     xfrm_policy_check include/net/xfrm.h:1175 [inline]
     xfrm6_policy_check include/net/xfrm.h:1185 [inline]
     vti6_rcv+0x4bd/0x8f3 net/ipv6/ip6_vti.c:316
     xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
     ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
     ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
     ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
     dst_input include/net/dst.h:450 [inline]
     ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
     NF_HOOK include/linux/netfilter.h:289 [inline]
     ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
     __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
     __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
     process_backlog+0x24e/0x7a0 net/core/dev.c:5923
    kobject: 'gre0' (00000000cb1b2d7b): fill_kobj_path: path = '/devices/virtual/net/gre0'
     napi_poll net/core/dev.c:6346 [inline]
     net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
     __do_softirq+0x308/0xb7e kernel/softirq.c:292
    
    The buggy address belongs to the object at ffff888191b8cac0
     which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 176 bytes inside of
     512-byte region [ffff888191b8cac0, ffff888191b8ccc0)
    The buggy address belongs to the page:
    page:ffffea000646e300 count:1 mapcount:0 mapping:ffff8881da800940 index:0x0
    flags: 0x2fffc0000000200(slab)
    raw: 02fffc0000000200 ffffea0006eaaa48 ffffea00065356c8 ffff8881da800940
    raw: 0000000000000000 ffff888191b8c0c0 0000000100000006 0000000000000000
    page dumped because: kasan: bad access detected
    kobject: 'queues' (000000005fd6226e): kobject_add_internal: parent: 'gre0', set: '<NULL>'
    
    Memory state around the buggy address:
     ffff888191b8ca00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888191b8ca80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
    >ffff888191b8cb00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                 ^
     ffff888191b8cb80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888191b8cc00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: 0d3c703a9d17 ("ipv6: Cleanup IPv6 tunnel receive path")
    Fixes: ed1efb2aefbb ("ipv6: Add support for IPsec virtual tunnel interfaces")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41743ce604da75c820ebf7139315accfb2f72a02
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Tue Dec 18 21:17:44 2018 -0800

    ipv6: explicitly initialize udp6_addr in udp_sock_create6()
    
    [ Upstream commit fb24274546310872eeeaf3d1d53799d8414aa0f2 ]
    
    syzbot reported the use of uninitialized udp6_addr::sin6_scope_id.
    We can just set ::sin6_scope_id to zero, as tunnels are unlikely
    to use an IPv6 address that needs a scope id and there is no
    interface to bind in this context.
    
    For net-next, it looks different as we have cfg->bind_ifindex there
    so we can probably call ipv6_iface_scope_id().
    
    Same for ::sin6_flowinfo, tunnels don't use it.
    
    Fixes: 8024e02879dd ("udp: Add udp_sock_create for UDP tunnels to open listener socket")
    Reported-by: syzbot+c56449ed3652e6720f30@syzkaller.appspotmail.com
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a6cd598c82744db1cfd8524af977b4d4701a569
Author: Willem de Bruijn <willemb@google.com>
Date:   Sun Dec 23 12:52:18 2018 -0500

    ieee802154: lowpan_header_create check must check daddr
    
    [ Upstream commit 40c3ff6d5e0809505a067dd423c110c5658c478c ]
    
    Packet sockets may call dev_header_parse with NULL daddr. Make
    lowpan_header_ops.create fail.
    
    Fixes: 87a93e4eceb4 ("ieee802154: change needed headroom/tailroom")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Acked-by: Alexander Aring <aring@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3ebeeb7efe0672e42b1b209fb22dbea69b7a8b9
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Mon Dec 31 15:43:01 2018 -0600

    ibmveth: fix DMA unmap error in ibmveth_xmit_start error path
    
    [ Upstream commit 756af9c642329d54f048bac2a62f829b391f6944 ]
    
    Commit 33a48ab105a7 ("ibmveth: Fix DMA unmap error") fixed an issue in the
    normal code path of ibmveth_xmit_start() that was originally introduced by
    Commit 6e8ab30ec677 ("ibmveth: Add scatter-gather support"). This original
    fix missed the error path where dma_unmap_page is wrongly called on the
    header portion in descs[0] which was mapped with dma_map_single. As a
    result a failure to DMA map any of the frags results in a dmesg warning
    when CONFIG_DMA_API_DEBUG is enabled.
    
    ------------[ cut here ]------------
    DMA-API: ibmveth 30000002: device driver frees DMA memory with wrong function
      [device address=0x000000000a430000] [size=172 bytes] [mapped as page] [unmapped as single]
    WARNING: CPU: 1 PID: 8426 at kernel/dma/debug.c:1085 check_unmap+0x4fc/0xe10
    ...
    <snip>
    ...
    DMA-API: Mapped at:
    ibmveth_start_xmit+0x30c/0xb60
    dev_hard_start_xmit+0x100/0x450
    sch_direct_xmit+0x224/0x490
    __qdisc_run+0x20c/0x980
    __dev_queue_xmit+0x1bc/0xf20
    
    This fixes the API misuse by unampping descs[0] with dma_unmap_single.
    
    Fixes: 6e8ab30ec677 ("ibmveth: Add scatter-gather support")
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c39b8fd4997bf99503b8e48d8cb0eedb1d9a54f0
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sat Dec 29 13:56:36 2018 -0800

    ax25: fix a use-after-free in ax25_fillin_cb()
    
    [ Upstream commit c433570458e49bccea5c551df628d058b3526289 ]
    
    There are multiple issues here:
    
    1. After freeing dev->ax25_ptr, we need to set it to NULL otherwise
       we may use a dangling pointer.
    
    2. There is a race between ax25_setsockopt() and device notifier as
       reported by syzbot. Close it by holding RTNL lock.
    
    3. We need to test if dev->ax25_ptr is NULL before using it.
    
    Reported-and-tested-by: syzbot+ae6bb869cbed29b29040@syzkaller.appspotmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35775cc415d2e1f8dfd1a04ca3484b3919537de2
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Mon Dec 10 12:41:24 2018 -0600

    ipv4: Fix potential Spectre v1 vulnerability
    
    [ Upstream commit 5648451e30a0d13d11796574919a359025d52cce ]
    
    vr.vifi is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    net/ipv4/ipmr.c:1616 ipmr_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
    net/ipv4/ipmr.c:1690 ipmr_compat_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
    
    Fix this by sanitizing vr.vifi before using it to index mrt->vif_table'
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d9a7965b157f61040047e7006b987ac4a58278b
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Dec 11 14:10:08 2018 -0600

    ip6mr: Fix potential Spectre v1 vulnerability
    
    [ Upstream commit 69d2c86766da2ded2b70281f1bf242cb0d58a778 ]
    
    vr.mifi is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    net/ipv6/ip6mr.c:1845 ip6mr_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
    net/ipv6/ip6mr.c:1919 ip6mr_compat_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
    
    Fix this by sanitizing vr.mifi before using it to index mrt->vif_table'
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit afb85b1bbe4fa5cf0441a4efe72f9bf7c7aa8258
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Aug 1 06:59:29 2015 -0700

    NFC: nxp-nci: Include unaligned.h instead of access_ok.h
    
    commit 2eee74b7e2a496dea49847c36fd09320505f45b7 upstream.
    
    Directly including access_ok.h can result in the following compile errors
    if an architecture such as ia64 does not support direct unaligned accesses.
    
    include/linux/unaligned/access_ok.h:7:19: error:
            redefinition of 'get_unaligned_le16'
    include/linux/unaligned/le_struct.h:6:19: note:
            previous definition of 'get_unaligned_le16' was here
    include/linux/unaligned/access_ok.h:12:19: error:
            redefinition of 'get_unaligned_le32'
    include/linux/unaligned/le_struct.h:11:19: note:
            previous definition of 'get_unaligned_le32' was here
    
    Include asm/unaligned.h instead and let the architecture decide which
    access functions to use.
    
    Cc: Clément Perrochaud <clement.perrochaud@effinnov.com>
    Cc: Samuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>