commit bf489db05ebf7106dd77f79e6edabc45fc318416
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Sep 6 10:19:54 2019 +0200

    Linux 4.9.191

commit 9ae4611431af5efa334e1256de88f32b5dff6538
Author: Andrew Morton <akpm@linux-foundation.org>
Date:   Fri Aug 30 16:04:35 2019 -0700

    mm/zsmalloc.c: fix build when CONFIG_COMPACTION=n
    
    [ Upstream commit 441e254cd40dc03beec3c650ce6ce6074bc6517f ]
    
    Fixes: 701d678599d0c1 ("mm/zsmalloc.c: fix race condition in zs_destroy_pool")
    Link: http://lkml.kernel.org/r/201908251039.5oSbEEUT%25lkp@intel.com
    Reported-by: kbuild test robot <lkp@intel.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Henry Burns <henrywolfeburns@gmail.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Jonathan Adams <jwadams@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 69f692bb7e684592aaba779299bc576626d414b4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 4 12:27:18 2019 +0200

    x86/ptrace: fix up botched merge of spectrev1 fix
    
    I incorrectly merged commit 31a2fbb390fe ("x86/ptrace: Fix possible
    spectre-v1 in ptrace_get_debugreg()") when backporting it, as was
    graciously pointed out at
    https://grsecurity.net/teardown_of_a_failed_linux_lts_spectre_fix.php
    
    Resolve the upstream difference with the stable kernel merge to properly
    protect things.
    
    Reported-by: Brad Spengler <spender@grsecurity.net>
    Cc: Dianzhang Chen <dianzhangchen0@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: <bp@alien8.de>
    Cc: <hpa@zytor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 625ee1ab12d3746d32c9a9c6cfdd2b8995981719
Author: Andrew Cooks <andrew.cooks@opengear.com>
Date:   Fri Aug 2 14:52:46 2019 +0200

    i2c: piix4: Fix port selection for AMD Family 16h Model 30h
    
    [ Upstream commit c7c06a1532f3fe106687ac82a13492c6a619ff1c ]
    
    Family 16h Model 30h SMBus controller needs the same port selection fix
    as described and fixed in commit 0fe16195f891 ("i2c: piix4: Fix SMBus port
    selection for AMD Family 17h chips")
    
    commit 6befa3fde65f ("i2c: piix4: Support alternative port selection
    register") also fixed the port selection for Hudson2, but unfortunately
    this is not the exact same device and the AMD naming and PCI Device IDs
    aren't particularly helpful here.
    
    The SMBus port selection register is common to the following Families
    and models, as documented in AMD's publicly available BIOS and Kernel
    Developer Guides:
    
     50742 - Family 15h Model 60h-6Fh (PCI_DEVICE_ID_AMD_KERNCZ_SMBUS)
     55072 - Family 15h Model 70h-7Fh (PCI_DEVICE_ID_AMD_KERNCZ_SMBUS)
     52740 - Family 16h Model 30h-3Fh (PCI_DEVICE_ID_AMD_HUDSON2_SMBUS)
    
    The Hudson2 PCI Device ID (PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) is shared
    between Bolton FCH and Family 16h Model 30h, but the location of the
    SmBus0Sel port selection bits are different:
    
     51192 - Bolton Register Reference Guide
    
    We distinguish between Bolton and Family 16h Model 30h using the PCI
    Revision ID:
    
      Bolton is device 0x780b, revision 0x15
      Family 16h Model 30h is device 0x780b, revision 0x1F
      Family 15h Model 60h and 70h are both device 0x790b, revision 0x4A.
    
    The following additional public AMD BKDG documents were checked and do
    not share the same port selection register:
    
     42301 - Family 15h Model 00h-0Fh doesn't mention any
     42300 - Family 15h Model 10h-1Fh doesn't mention any
     49125 - Family 15h Model 30h-3Fh doesn't mention any
    
     48751 - Family 16h Model 00h-0Fh uses the previously supported
             index register SB800_PIIX4_PORT_IDX_ALT at 0x2e
    
    Signed-off-by: Andrew Cooks <andrew.cooks@opengear.com>
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Cc: stable@vger.kernel.org [v4.6+]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3a71b1e91614538eeb199c0a47ba4d0e7d8b8bf
Author: Marc Zyngier <maz@kernel.org>
Date:   Wed Aug 28 11:10:16 2019 +0100

    KVM: arm/arm64: vgic-v2: Handle SGI bits in GICD_I{S,C}PENDR0 as WI
    
    [ Upstream commit 82e40f558de566fdee214bec68096bbd5e64a6a4 ]
    
    A guest is not allowed to inject a SGI (or clear its pending state)
    by writing to GICD_ISPENDR0 (resp. GICD_ICPENDR0), as these bits are
    defined as WI (as per ARM IHI 0048B 4.3.7 and 4.3.8).
    
    Make sure we correctly emulate the architecture.
    
    Fixes: 96b298000db4 ("KVM: arm/arm64: vgic-new: Add PENDING registers handlers")
    Cc: stable@vger.kernel.org # 4.7+
    Reported-by: Andre Przywara <andre.przywara@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f35eb8a3aa3b492489116965558c3f2f7d641f31
Author: Heyi Guo <guoheyi@huawei.com>
Date:   Tue Aug 27 12:26:50 2019 +0100

    KVM: arm/arm64: vgic: Fix potential deadlock when ap_list is long
    
    [ Upstream commit d4a8061a7c5f7c27a2dc002ee4cb89b3e6637e44 ]
    
    If the ap_list is longer than 256 entries, merge_final() in list_sort()
    will call the comparison callback with the same element twice, causing
    a deadlock in vgic_irq_cmp().
    
    Fix it by returning early when irqa == irqb.
    
    Cc: stable@vger.kernel.org # 4.7+
    Fixes: 8e4447457965 ("KVM: arm/arm64: vgic-new: Add IRQ sorting")
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Heyi Guo <guoheyi@huawei.com>
    [maz: massaged commit log and patch, added Fixes and Cc-stable]
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c251d5c53246042dacf485340cb244af92f1f78c
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Aug 1 09:30:33 2019 +0200

    mac80211: fix possible sta leak
    
    commit 5fd2f91ad483baffdbe798f8a08f1b41442d1e24 upstream.
    
    If TDLS station addition is rejected, the sta memory is leaked.
    Avoid this by moving the check before the allocation.
    
    Cc: stable@vger.kernel.org
    Fixes: 7ed5285396c2 ("mac80211: don't initiate TDLS connection if station is not associated to AP")
    Link: https://lore.kernel.org/r/20190801073033.7892-1-johannes@sipsolutions.net
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac8c76776ece285c98ac6ce4b317132ab37c8da5
Author: Hodaszi, Robert <Robert.Hodaszi@digi.com>
Date:   Fri Jun 14 13:16:01 2019 +0000

    Revert "cfg80211: fix processing world regdomain when non modular"
    
    commit 0d31d4dbf38412f5b8b11b4511d07b840eebe8cb upstream.
    
    This reverts commit 96cce12ff6e0 ("cfg80211: fix processing world
    regdomain when non modular").
    
    Re-triggering a reg_process_hint with the last request on all events,
    can make the regulatory domain fail in case of multiple WiFi modules. On
    slower boards (espacially with mdev), enumeration of the WiFi modules
    can end up in an intersected regulatory domain, and user cannot set it
    with 'iw reg set' anymore.
    
    This is happening, because:
    - 1st module enumerates, queues up a regulatory request
    - request gets processed by __reg_process_hint_driver():
      - checks if previous was set by CORE -> yes
        - checks if regulator domain changed -> yes, from '00' to e.g. 'US'
          -> sends request to the 'crda'
    - 2nd module enumerates, queues up a regulator request (which triggers
      the reg_todo() work)
    - reg_todo() -> reg_process_pending_hints() sees, that the last request
      is not processed yet, so it tries to process it again.
      __reg_process_hint driver() will run again, and:
      - checks if the last request's initiator was the core -> no, it was
        the driver (1st WiFi module)
      - checks, if the previous initiator was the driver -> yes
        - checks if the regulator domain changed -> yes, it was '00' (set by
          core, and crda call did not return yet), and should be changed to 'US'
    
    ------> __reg_process_hint_driver calls an intersect
    
    Besides, the reg_process_hint call with the last request is meaningless
    since the crda call has a timeout work. If that timeout expires, the
    first module's request will lost.
    
    Cc: stable@vger.kernel.org
    Fixes: 96cce12ff6e0 ("cfg80211: fix processing world regdomain when non modular")
    Signed-off-by: Robert Hodaszi <robert.hodaszi@digi.com>
    Link: https://lore.kernel.org/r/20190614131600.GA13897@a1-hr
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 925bf2d80f8374b5080b764461da6b885a0317d7
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Aug 20 13:26:38 2019 -0700

    VMCI: Release resource if the work is already queued
    
    commit ba03a9bbd17b149c373c0ea44017f35fc2cd0f28 upstream.
    
    Francois reported that VMware balloon gets stuck after a balloon reset,
    when the VMCI doorbell is removed. A similar error can occur when the
    balloon driver is removed with the following splat:
    
    [ 1088.622000] INFO: task modprobe:3565 blocked for more than 120 seconds.
    [ 1088.622035]       Tainted: G        W         5.2.0 #4
    [ 1088.622087] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 1088.622205] modprobe        D    0  3565   1450 0x00000000
    [ 1088.622210] Call Trace:
    [ 1088.622246]  __schedule+0x2a8/0x690
    [ 1088.622248]  schedule+0x2d/0x90
    [ 1088.622250]  schedule_timeout+0x1d3/0x2f0
    [ 1088.622252]  wait_for_completion+0xba/0x140
    [ 1088.622320]  ? wake_up_q+0x80/0x80
    [ 1088.622370]  vmci_resource_remove+0xb9/0xc0 [vmw_vmci]
    [ 1088.622373]  vmci_doorbell_destroy+0x9e/0xd0 [vmw_vmci]
    [ 1088.622379]  vmballoon_vmci_cleanup+0x6e/0xf0 [vmw_balloon]
    [ 1088.622381]  vmballoon_exit+0x18/0xcc8 [vmw_balloon]
    [ 1088.622394]  __x64_sys_delete_module+0x146/0x280
    [ 1088.622408]  do_syscall_64+0x5a/0x130
    [ 1088.622410]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 1088.622415] RIP: 0033:0x7f54f62791b7
    [ 1088.622421] Code: Bad RIP value.
    [ 1088.622421] RSP: 002b:00007fff2a949008 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
    [ 1088.622426] RAX: ffffffffffffffda RBX: 000055dff8b55d00 RCX: 00007f54f62791b7
    [ 1088.622426] RDX: 0000000000000000 RSI: 0000000000000800 RDI: 000055dff8b55d68
    [ 1088.622427] RBP: 000055dff8b55d00 R08: 00007fff2a947fb1 R09: 0000000000000000
    [ 1088.622427] R10: 00007f54f62f5cc0 R11: 0000000000000206 R12: 000055dff8b55d68
    [ 1088.622428] R13: 0000000000000001 R14: 000055dff8b55d68 R15: 00007fff2a94a3f0
    
    The cause for the bug is that when the "delayed" doorbell is invoked, it
    takes a reference on the doorbell entry and schedules work that is
    supposed to run the appropriate code and drop the doorbell entry
    reference. The code ignores the fact that if the work is already queued,
    it will not be scheduled to run one more time. As a result one of the
    references would not be dropped. When the code waits for the reference
    to get to zero, during balloon reset or module removal, it gets stuck.
    
    Fix it. Drop the reference if schedule_work() indicates that the work is
    already queued.
    
    Note that this bug got more apparent (or apparent at all) due to
    commit ce664331b248 ("vmw_balloon: VMCI_DOORBELL_SET does not check status").
    
    Fixes: 83e2ec765be03 ("VMCI: doorbell implementation.")
    Reported-by: Francois Rigault <rigault.francois@gmail.com>
    Cc: Jorgen Hansen <jhansen@vmware.com>
    Cc: Adit Ranadive <aditr@vmware.com>
    Cc: Alexios Zavras <alexios.zavras@intel.com>
    Cc: Vishnu DASA <vdasa@vmware.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
    Link: https://lore.kernel.org/r/20190820202638.49003-1-namit@vmware.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfc3195f6600c3fdca4416cea8fe8fb8894015b5
Author: Ding Xiang <dingxiang@cmss.chinamobile.com>
Date:   Wed Aug 21 10:49:52 2019 +0300

    stm class: Fix a double free of stm_source_device
    
    commit 961b6ffe0e2c403b09a8efe4a2e986b3c415391a upstream.
    
    In the error path of stm_source_register_device(), the kfree is
    unnecessary, as the put_device() before it ends up calling
    stm_source_device_release() to free stm_source_device, leading to
    a double free at the outer kfree() call. Remove it.
    
    Signed-off-by: Ding Xiang <dingxiang@cmss.chinamobile.com>
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: 7bd1d4093c2fa ("stm class: Introduce an abstraction for System Trace Module devices")
    Link: https://lore.kernel.org/linux-arm-kernel/1563354988-23826-1-git-send-email-dingxiang@cmss.chinamobile.com/
    Cc: stable@vger.kernel.org # v4.4+
    Link: https://lore.kernel.org/r/20190821074955.3925-2-alexander.shishkin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7ed5c02e4101faef5e9d542aa3da4c4d63acaae
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Tue Aug 27 10:10:43 2019 +0200

    mmc: core: Fix init of SD cards reporting an invalid VDD range
    
    commit 72741084d903e65e121c27bd29494d941729d4a1 upstream.
    
    The OCR register defines the supported range of VDD voltages for SD cards.
    However, it has turned out that some SD cards reports an invalid voltage
    range, for example having bit7 set.
    
    When a host supports MMC_CAP2_FULL_PWR_CYCLE and some of the voltages from
    the invalid VDD range, this triggers the core to run a power cycle of the
    card to try to initialize it at the lowest common supported voltage.
    Obviously this fails, since the card can't support it.
    
    Let's fix this problem, by clearing invalid bits from the read OCR register
    for SD cards, before proceeding with the VDD voltage negotiation.
    
    Cc: stable@vger.kernel.org
    Reported-by: Philip Langdale <philipl@overt.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Philip Langdale <philipl@overt.org>
    Tested-by: Philip Langdale <philipl@overt.org>
    Tested-by: Manuel Presnitz <mail@mpy.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0d3242a1211c2f12a6da93c97e6b2c4861aba88
Author: Eugen Hristev <eugen.hristev@microchip.com>
Date:   Thu Aug 8 08:35:40 2019 +0000

    mmc: sdhci-of-at91: add quirk for broken HS200
    
    commit 7871aa60ae0086fe4626abdf5ed13eeddf306c61 upstream.
    
    HS200 is not implemented in the driver, but the controller claims it
    through caps. Remove it via a quirk, to make sure the mmc core do not try
    to enable HS200, as it causes the eMMC initialization to fail.
    
    Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: bb5f8ea4d514 ("mmc: sdhci-of-at91: introduce driver for the Atmel SDMMC")
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0e1bae3113b6e2c69fb9d6487a0b29ab11cbd51
Author: Sebastian Mayr <me@sam.st>
Date:   Sun Jul 28 17:26:17 2019 +0200

    uprobes/x86: Fix detection of 32-bit user mode
    
    [ Upstream commit 9212ec7d8357ea630031e89d0d399c761421c83b ]
    
    32-bit processes running on a 64-bit kernel are not always detected
    correctly, causing the process to crash when uretprobes are installed.
    
    The reason for the crash is that in_ia32_syscall() is used to determine the
    process's mode, which only works correctly when called from a syscall.
    
    In the case of uretprobes, however, the function is called from a exception
    and always returns 'false' on a 64-bit kernel. In consequence this leads to
    corruption of the process's return address.
    
    Fix this by using user_64bit_mode() instead of in_ia32_syscall(), which
    is correct in any situation.
    
    [ tglx: Add a comment and the following historical info ]
    
    This should have been detected by the rename which happened in commit
    
      abfb9498ee13 ("x86/entry: Rename is_{ia32,x32}_task() to in_{ia32,x32}_syscall()")
    
    which states in the changelog:
    
        The is_ia32_task()/is_x32_task() function names are a big misnomer: they
        suggests that the compat-ness of a system call is a task property, which
        is not true, the compatness of a system call purely depends on how it
        was invoked through the system call layer.
        .....
    
    and then it went and blindly renamed every call site.
    
    Sadly enough this was already mentioned here:
    
       8faaed1b9f50 ("uprobes/x86: Introduce sizeof_long(), cleanup adjust_ret_addr() and
    arch_uretprobe_hijack_return_addr()")
    
    where the changelog says:
    
        TODO: is_ia32_task() is not what we actually want, TS_COMPAT does
        not necessarily mean 32bit. Fortunately syscall-like insns can't be
        probed so it actually works, but it would be better to rename and
        use is_ia32_frame().
    
    and goes all the way back to:
    
        0326f5a94dde ("uprobes/core: Handle breakpoint and singlestep exceptions")
    
    Oh well. 7+ years until someone actually tried a uretprobe on a 32bit
    process on a 64bit kernel....
    
    Fixes: 0326f5a94dde ("uprobes/core: Handle breakpoint and singlestep exceptions")
    Signed-off-by: Sebastian Mayr <me@sam.st>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190728152617.7308-1-me@sam.st
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3bf1c9c0c5543149e82f9c1816c31f1ccfbc5dd2
Author: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Date:   Fri Oct 27 13:25:30 2017 -0700

    ptrace,x86: Make user_64bit_mode() available to 32-bit builds
    
    [ Upstream commit e27c310af5c05cf876d9cad006928076c27f54d4 ]
    
    In its current form, user_64bit_mode() can only be used when CONFIG_X86_64
    is selected. This implies that code built with CONFIG_X86_64=n cannot use
    it. If a piece of code needs to be built for both CONFIG_X86_64=y and
    CONFIG_X86_64=n and wants to use this function, it needs to wrap it in
    an #ifdef/#endif; potentially, in multiple places.
    
    This can be easily avoided with a single #ifdef/#endif pair within
    user_64bit_mode() itself.
    
    Suggested-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: ricardo.neri@intel.com
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: "Ravi V. Shankar" <ravi.v.shankar@intel.com>
    Cc: Chris Metcalf <cmetcalf@mellanox.com>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Chen Yucong <slaoub@gmail.com>
    Cc: Adam Buchbinder <adam.buchbinder@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Lorenzo Stoakes <lstoakes@gmail.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Thomas Garnier <thgarnie@google.com>
    Link: https://lkml.kernel.org/r/1509135945-13762-4-git-send-email-ricardo.neri-calderon@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5326bec9940a02a14fe5a81a54068859fd1d6572
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Aug 28 01:34:50 2019 +0800

    USB: storage: ums-realtek: Whitelist auto-delink support
    
    commit 1902a01e2bcc3abd7c9a18dc05e78c7ab4a53c54 upstream.
    
    Auto-delink requires writing special registers to ums-realtek devices.
    Unconditionally enable auto-delink may break newer devices.
    
    So only enable auto-delink by default for the original three IDs,
    0x0138, 0x0158 and 0x0159.
    
    Realtek is working on a patch to properly support auto-delink for other
    IDs.
    
    BugLink: https://bugs.launchpad.net/bugs/1838886
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190827173450.13572-2-kai.heng.feng@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1424ff0ae16844e2e0aa78d3166915c030cd2e0f
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Aug 28 01:34:49 2019 +0800

    USB: storage: ums-realtek: Update module parameter description for auto_delink_en
    
    commit f6445b6b2f2bb1745080af4a0926049e8bca2617 upstream.
    
    The option named "auto_delink_en" is a bit misleading, as setting it to
    false doesn't really disable auto-delink but let auto-delink be firmware
    controlled.
    
    Update the description to reflect the real usage of this parameter.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190827173450.13572-1-kai.heng.feng@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abd4c15a40471e7d41c7448b13ad4f0bc4dacd1a
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Aug 27 14:51:12 2019 +0200

    usb: host: xhci: rcar: Fix typo in compatible string matching
    
    commit 636bd02a7ba9025ff851d0cfb92768c8fa865859 upstream.
    
    It's spelled "renesas", not "renensas".
    
    Due to this typo, RZ/G1M and RZ/G1N were not covered by the check.
    
    Fixes: 2dc240a3308b ("usb: host: xhci: rcar: retire use of xhci_plat_type_is()")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/20190827125112.12192-1-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcbc427e6fbd3a50f6df02db13862dbd24e5f7c6
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Tue Aug 27 12:51:50 2019 +0900

    usb: host: ohci: fix a race condition between shutdown and irq
    
    commit a349b95d7ca0cea71be4a7dac29830703de7eb62 upstream.
    
    This patch fixes an issue that the following error is
    possible to happen when ohci hardware causes an interruption
    and the system is shutting down at the same time.
    
    [   34.851754] usb 2-1: USB disconnect, device number 2
    [   35.166658] irq 156: nobody cared (try booting with the "irqpoll" option)
    [   35.173445] CPU: 0 PID: 22 Comm: kworker/0:1 Not tainted 5.3.0-rc5 #85
    [   35.179964] Hardware name: Renesas Salvator-X 2nd version board based on r8a77965 (DT)
    [   35.187886] Workqueue: usb_hub_wq hub_event
    [   35.192063] Call trace:
    [   35.194509]  dump_backtrace+0x0/0x150
    [   35.198165]  show_stack+0x14/0x20
    [   35.201475]  dump_stack+0xa0/0xc4
    [   35.204785]  __report_bad_irq+0x34/0xe8
    [   35.208614]  note_interrupt+0x2cc/0x318
    [   35.212446]  handle_irq_event_percpu+0x5c/0x88
    [   35.216883]  handle_irq_event+0x48/0x78
    [   35.220712]  handle_fasteoi_irq+0xb4/0x188
    [   35.224802]  generic_handle_irq+0x24/0x38
    [   35.228804]  __handle_domain_irq+0x5c/0xb0
    [   35.232893]  gic_handle_irq+0x58/0xa8
    [   35.236548]  el1_irq+0xb8/0x180
    [   35.239681]  __do_softirq+0x94/0x23c
    [   35.243253]  irq_exit+0xd0/0xd8
    [   35.246387]  __handle_domain_irq+0x60/0xb0
    [   35.250475]  gic_handle_irq+0x58/0xa8
    [   35.254130]  el1_irq+0xb8/0x180
    [   35.257268]  kernfs_find_ns+0x5c/0x120
    [   35.261010]  kernfs_find_and_get_ns+0x3c/0x60
    [   35.265361]  sysfs_unmerge_group+0x20/0x68
    [   35.269454]  dpm_sysfs_remove+0x2c/0x68
    [   35.273284]  device_del+0x80/0x370
    [   35.276683]  hid_destroy_device+0x28/0x60
    [   35.280686]  usbhid_disconnect+0x4c/0x80
    [   35.284602]  usb_unbind_interface+0x6c/0x268
    [   35.288867]  device_release_driver_internal+0xe4/0x1b0
    [   35.293998]  device_release_driver+0x14/0x20
    [   35.298261]  bus_remove_device+0x110/0x128
    [   35.302350]  device_del+0x148/0x370
    [   35.305832]  usb_disable_device+0x8c/0x1d0
    [   35.309921]  usb_disconnect+0xc8/0x2d0
    [   35.313663]  hub_event+0x6e0/0x1128
    [   35.317146]  process_one_work+0x1e0/0x320
    [   35.321148]  worker_thread+0x40/0x450
    [   35.324805]  kthread+0x124/0x128
    [   35.328027]  ret_from_fork+0x10/0x18
    [   35.331594] handlers:
    [   35.333862] [<0000000079300c1d>] usb_hcd_irq
    [   35.338126] [<0000000079300c1d>] usb_hcd_irq
    [   35.342389] Disabling IRQ #156
    
    ohci_shutdown() disables all the interrupt and rh_state is set to
    OHCI_RH_HALTED. In other hand, ohci_irq() is possible to enable
    OHCI_INTR_SF and OHCI_INTR_MIE on ohci_irq(). Note that OHCI_INTR_SF
    is possible to be set by start_ed_unlink() which is called:
     ohci_irq()
      -> process_done_list()
       -> takeback_td()
        -> start_ed_unlink()
    
    So, ohci_irq() has the following condition, the issue happens by
    &ohci->regs->intrenable = OHCI_INTR_MIE | OHCI_INTR_SF and
    ohci->rh_state = OHCI_RH_HALTED:
    
            /* interrupt for some other device? */
            if (ints == 0 || unlikely(ohci->rh_state == OHCI_RH_HALTED))
                    return IRQ_NOTMINE;
    
    To fix the issue, ohci_shutdown() holds the spin lock while disabling
    the interruption and changing the rh_state flag to prevent reenable
    the OHCI_INTR_MIE unexpectedly. Note that io_watchdog_func() also
    calls the ohci_shutdown() and it already held the spin lock, so that
    the patch makes a new function as _ohci_shutdown().
    
    This patch is inspired by a Renesas R-Car Gen3 BSP patch
    from Tho Vu.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/1566877910-6020-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 169710b075a914071860d8c235e45d81b390c429
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Aug 20 02:07:58 2019 +0000

    usb: chipidea: udc: don't do hardware access if gadget has stopped
    
    commit cbe85c88ce80fb92956a0793518d415864dcead8 upstream.
    
    After _gadget_stop_activity is executed, we can consider the hardware
    operation for gadget has finished, and the udc can be stopped and enter
    low power mode. So, any later hardware operations (from usb_ep_ops APIs
    or usb_gadget_ops APIs) should be considered invalid, any deinitializatons
    has been covered at _gadget_stop_activity.
    
    I meet this problem when I plug out usb cable from PC using mass_storage
    gadget, my callstack like: vbus interrupt->.vbus_session->
    composite_disconnect ->pm_runtime_put_sync(&_gadget->dev),
    the composite_disconnect will call fsg_disable, but fsg_disable calls
    usb_ep_disable using async way, there are register accesses for
    usb_ep_disable. So sometimes, I get system hang due to visit register
    without clock, sometimes not.
    
    The Linux Kernel USB maintainer Alan Stern suggests this kinds of solution.
    See: http://marc.info/?l=linux-usb&m=138541769810983&w=2.
    
    Cc: <stable@vger.kernel.org> #v4.9+
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Link: https://lore.kernel.org/r/20190820020503.27080-2-peter.chen@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7189b43f9280cdfa015f8f26b2c5cab89ffd9e4b
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Aug 27 12:34:36 2019 +0200

    USB: cdc-wdm: fix race between write and disconnect due to flag abuse
    
    commit 1426bd2c9f7e3126e2678e7469dca9fd9fc6dd3e upstream.
    
    In case of a disconnect an ongoing flush() has to be made fail.
    Nevertheless we cannot be sure that any pending URB has already
    finished, so although they will never succeed, they still must
    not be touched.
    The clean solution for this is to check for WDM_IN_USE
    and WDM_DISCONNECTED in flush(). There is no point in ever
    clearing WDM_IN_USE, as no further writes make sense.
    
    The issue is as old as the driver.
    
    Fixes: afba937e540c9 ("USB: CDC WDM driver")
    Reported-by: syzbot+d232cca6ec42c2edb3fc@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190827103436.21143-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eec87271805e8fbec2fa7cec61499ce3760442d2
Author: Henk van der Laan <opensource@henkvdlaan.com>
Date:   Fri Aug 16 22:08:47 2019 +0200

    usb-storage: Add new JMS567 revision to unusual_devs
    
    commit 08d676d1685c2a29e4d0e1b0242324e564d4589e upstream.
    
    Revision 0x0117 suffers from an identical issue to earlier revisions,
    therefore it should be added to the quirks list.
    
    Signed-off-by: Henk van der Laan <opensource@henkvdlaan.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190816200847.21366-1-opensource@henkvdlaan.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e7e2730da7c84db40ced70b9dc72038d63098c9
Author: Henry Burns <henryburns@google.com>
Date:   Sat Aug 24 17:55:06 2019 -0700

    mm/zsmalloc.c: fix race condition in zs_destroy_pool
    
    [ Upstream commit 701d678599d0c1623aaf4139c03eea260a75b027 ]
    
    In zs_destroy_pool() we call flush_work(&pool->free_work).  However, we
    have no guarantee that migration isn't happening in the background at
    that time.
    
    Since migration can't directly free pages, it relies on free_work being
    scheduled to free the pages.  But there's nothing preventing an
    in-progress migrate from queuing the work *after*
    zs_unregister_migration() has called flush_work().  Which would mean
    pages still pointing at the inode when we free it.
    
    Since we know at destroy time all objects should be free, no new
    migrations can come in (since zs_page_isolate() fails for fully-free
    zspages).  This means it is sufficient to track a "# isolated zspages"
    count by class, and have the destroy logic ensure all such pages have
    drained before proceeding.  Keeping that state under the class spinlock
    keeps the logic straightforward.
    
    In this case a memory leak could lead to an eventual crash if compaction
    hits the leaked page.  This crash would only occur if people are
    changing their zswap backend at runtime (which eventually starts
    destruction).
    
    Link: http://lkml.kernel.org/r/20190809181751.219326-2-henryburns@google.com
    Fixes: 48b4800a1c6a ("zsmalloc: page migration support")
    Signed-off-by: Henry Burns <henryburns@google.com>
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Henry Burns <henrywolfeburns@gmail.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Jonathan Adams <jwadams@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aaa0776d0e56e009ff1f1bf25b34c08f10e87ec7
Author: Bandan Das <bsd@redhat.com>
Date:   Mon Aug 26 06:15:13 2019 -0400

    x86/apic: Include the LDR when clearing out APIC registers
    
    commit 558682b5291937a70748d36fd9ba757fb25b99ae upstream.
    
    Although APIC initialization will typically clear out the LDR before
    setting it, the APIC cleanup code should reset the LDR.
    
    This was discovered with a 32-bit KVM guest jumping into a kdump
    kernel. The stale bits in the LDR triggered a bug in the KVM APIC
    implementation which caused the destination mapping for VCPUs to be
    corrupted.
    
    Note that this isn't intended to paper over the KVM APIC bug. The kernel
    has to clear the LDR when resetting the APIC registers except when X2APIC
    is enabled.
    
    This lacks a Fixes tag because missing to clear LDR goes way back into pre
    git history.
    
    [ tglx: Made x2apic_enabled a function call as required ]
    
    Signed-off-by: Bandan Das <bsd@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190826101513.5080-3-bsd@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20e0e489bbc98dd481fa5652b95e372c861806f6
Author: Bandan Das <bsd@redhat.com>
Date:   Mon Aug 26 06:15:12 2019 -0400

    x86/apic: Do not initialize LDR and DFR for bigsmp
    
    commit bae3a8d3308ee69a7dbdf145911b18dfda8ade0d upstream.
    
    Legacy apic init uses bigsmp for smp systems with 8 and more CPUs. The
    bigsmp APIC implementation uses physical destination mode, but it
    nevertheless initializes LDR and DFR. The LDR even ends up incorrectly with
    multiple bit being set.
    
    This does not cause a functional problem because LDR and DFR are ignored
    when physical destination mode is active, but it triggered a problem on a
    32-bit KVM guest which jumps into a kdump kernel.
    
    The multiple bits set unearthed a bug in the KVM APIC implementation. The
    code which creates the logical destination map for VCPUs ignores the
    disabled state of the APIC and ends up overwriting an existing valid entry
    and as a result, APIC calibration hangs in the guest during kdump
    initialization.
    
    Remove the bogus LDR/DFR initialization.
    
    This is not intended to work around the KVM APIC bug. The LDR/DFR
    ininitalization is wrong on its own.
    
    The issue goes back into the pre git history. The fixes tag is the commit
    in the bitkeeper import which introduced bigsmp support in 2003.
    
      git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    
    Fixes: db7b9e9f26b8 ("[PATCH] Clustered APIC setup for >8 CPU systems")
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Bandan Das <bsd@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190826101513.5080-2-bsd@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ec1280666886831748f427008ab3134963308cd
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Fri Aug 23 13:55:44 2019 -0700

    KVM: x86: Don't update RIP or do single-step on faulting emulation
    
    commit 75ee23b30dc712d80d2421a9a547e7ab6e379b44 upstream.
    
    Don't advance RIP or inject a single-step #DB if emulation signals a
    fault.  This logic applies to all state updates that are conditional on
    clean retirement of the emulation instruction, e.g. updating RFLAGS was
    previously handled by commit 38827dbd3fb85 ("KVM: x86: Do not update
    EFLAGS on faulting emulation").
    
    Not advancing RIP is likely a nop, i.e. ctxt->eip isn't updated with
    ctxt->_eip until emulation "retires" anyways.  Skipping #DB injection
    fixes a bug reported by Andy Lutomirski where a #UD on SYSCALL due to
    invalid state with EFLAGS.TF=1 would loop indefinitely due to emulation
    overwriting the #UD with #DB and thus restarting the bad SYSCALL over
    and over.
    
    Cc: Nadav Amit <nadav.amit@gmail.com>
    Cc: stable@vger.kernel.org
    Reported-by: Andy Lutomirski <luto@kernel.org>
    Fixes: 663f4c61b803 ("KVM: x86: handle singlestep during emulation")
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 104c5131890f7e4a7b69eea9646425a606867685
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Aug 25 09:21:44 2019 +0200

    ALSA: seq: Fix potential concurrent access to the deleted pool
    
    commit 75545304eba6a3d282f923b96a466dc25a81e359 upstream.
    
    The input pool of a client might be deleted via the resize ioctl, the
    the access to it should be covered by the proper locks.  Currently the
    only missing place is the call in snd_seq_ioctl_get_client_pool(), and
    this patch papers over it.
    
    Reported-by: syzbot+4a75454b9ca2777f35c7@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f595a1260357480136375b19ca7cb8f494b57ad9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 21 20:00:02 2019 +0200

    ALSA: line6: Fix memory leak at line6_init_pcm() error path
    
    commit 1bc8d18c75fef3b478dbdfef722aae09e2a9fde7 upstream.
    
    I forgot to release the allocated object at the early error path in
    line6_init_pcm().  For addressing it, slightly shuffle the code so
    that the PCM destructor (pcm->private_free) is assigned properly
    before all error paths.
    
    Fixes: 3450121997ce ("ALSA: line6: Fix write on zero-sized buffer")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fda2092976b38e238b338bf717744faab89c6883
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Aug 16 21:26:22 2019 -0700

    tcp: make sure EPOLLOUT wont be missed
    
    [ Upstream commit ef8d8ccdc216f797e66cb4a1372f5c4c285ce1e4 ]
    
    As Jason Baron explained in commit 790ba4566c1a ("tcp: set SOCK_NOSPACE
    under memory pressure"), it is crucial we properly set SOCK_NOSPACE
    when needed.
    
    However, Jason patch had a bug, because the 'nonblocking' status
    as far as sk_stream_wait_memory() is concerned is governed
    by MSG_DONTWAIT flag passed at sendmsg() time :
    
        long timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT);
    
    So it is very possible that tcp sendmsg() calls sk_stream_wait_memory(),
    and that sk_stream_wait_memory() returns -EAGAIN with SOCK_NOSPACE
    cleared, if sk->sk_sndtimeo has been set to a small (but not zero)
    value.
    
    This patch removes the 'noblock' variable since we must always
    set SOCK_NOSPACE if -EAGAIN is returned.
    
    It also renames the do_nonblock label since we might reach this
    code path even if we were in blocking mode.
    
    Fixes: 790ba4566c1a ("tcp: set SOCK_NOSPACE under memory pressure")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jason Baron <jbaron@akamai.com>
    Reported-by: Vladimir Rutsky  <rutsky@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Jason Baron <jbaron@akamai.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53856af73d8577a4017b9762d7406f47df192bed
Author: Hui Peng <benquike@gmail.com>
Date:   Tue Aug 13 22:34:04 2019 -0400

    ALSA: usb-audio: Fix an OOB bug in parse_audio_mixer_unit
    
    commit daac07156b330b18eb5071aec4b3ddca1c377f2c upstream.
    
    The `uac_mixer_unit_descriptor` shown as below is read from the
    device side. In `parse_audio_mixer_unit`, `baSourceID` field is
    accessed from index 0 to `bNrInPins` - 1, the current implementation
    assumes that descriptor is always valid (the length  of descriptor
    is no shorter than 5 + `bNrInPins`). If a descriptor read from
    the device side is invalid, it may trigger out-of-bound memory
    access.
    
    ```
    struct uac_mixer_unit_descriptor {
            __u8 bLength;
            __u8 bDescriptorType;
            __u8 bDescriptorSubtype;
            __u8 bUnitID;
            __u8 bNrInPins;
            __u8 baSourceID[];
    }
    ```
    
    This patch fixes the bug by add a sanity check on the length of
    the descriptor.
    
    Reported-by: Hui Peng <benquike@gmail.com>
    Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Peng <benquike@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bac3a35488148f066d355ebfe44a872aa9a7546
Author: Hui Peng <benquike@gmail.com>
Date:   Thu Aug 15 00:31:34 2019 -0400

    ALSA: usb-audio: Fix a stack buffer overflow bug in check_input_term
    
    commit 19bce474c45be69a284ecee660aa12d8f1e88f18 upstream.
    
    `check_input_term` recursively calls itself with input from
    device side (e.g., uac_input_terminal_descriptor.bCSourceID)
    as argument (id). In `check_input_term`, if `check_input_term`
    is called with the same `id` argument as the caller, it triggers
    endless recursive call, resulting kernel space stack overflow.
    
    This patch fixes the bug by adding a bitmap to `struct mixer_build`
    to keep track of the checked ids and stop the execution if some id
    has been checked (similar to how parse_audio_unit handles unitid
    argument).
    
    Reported-by: Hui Peng <benquike@gmail.com>
    Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
    Signed-off-by: Hui Peng <benquike@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 669a50559acf0f6c47a3f61d627c81758358e29f
Author: Tim Froidcoeur <tim.froidcoeur@tessares.net>
Date:   Sat Aug 24 08:03:51 2019 +0200

    tcp: fix tcp_rtx_queue_tail in case of empty retransmit queue
    
    Commit 8c3088f895a0 ("tcp: be more careful in tcp_fragment()")
    triggers following stack trace:
    
    [25244.848046] kernel BUG at ./include/linux/skbuff.h:1406!
    [25244.859335] RIP: 0010:skb_queue_prev+0x9/0xc
    [25244.888167] Call Trace:
    [25244.889182]  <IRQ>
    [25244.890001]  tcp_fragment+0x9c/0x2cf
    [25244.891295]  tcp_write_xmit+0x68f/0x988
    [25244.892732]  __tcp_push_pending_frames+0x3b/0xa0
    [25244.894347]  tcp_data_snd_check+0x2a/0xc8
    [25244.895775]  tcp_rcv_established+0x2a8/0x30d
    [25244.897282]  tcp_v4_do_rcv+0xb2/0x158
    [25244.898666]  tcp_v4_rcv+0x692/0x956
    [25244.899959]  ip_local_deliver_finish+0xeb/0x169
    [25244.901547]  __netif_receive_skb_core+0x51c/0x582
    [25244.903193]  ? inet_gro_receive+0x239/0x247
    [25244.904756]  netif_receive_skb_internal+0xab/0xc6
    [25244.906395]  napi_gro_receive+0x8a/0xc0
    [25244.907760]  receive_buf+0x9a1/0x9cd
    [25244.909160]  ? load_balance+0x17a/0x7b7
    [25244.910536]  ? vring_unmap_one+0x18/0x61
    [25244.911932]  ? detach_buf+0x60/0xfa
    [25244.913234]  virtnet_poll+0x128/0x1e1
    [25244.914607]  net_rx_action+0x12a/0x2b1
    [25244.915953]  __do_softirq+0x11c/0x26b
    [25244.917269]  ? handle_irq_event+0x44/0x56
    [25244.918695]  irq_exit+0x61/0xa0
    [25244.919947]  do_IRQ+0x9d/0xbb
    [25244.921065]  common_interrupt+0x85/0x85
    [25244.922479]  </IRQ>
    
    tcp_rtx_queue_tail() (called by tcp_fragment()) can call
    tcp_write_queue_prev() on the first packet in the queue, which will trigger
    the BUG in tcp_write_queue_prev(), because there is no previous packet.
    
    This happens when the retransmit queue is empty, for example in case of a
    zero window.
    
    Commit 8c3088f895a0 ("tcp: be more careful in tcp_fragment()") was not a
    simple cherry-pick of the original one from master (b617158dc096)
    because there is a specific TCP rtx queue only since v4.15. For more
    details, please see the commit message of b617158dc096 ("tcp: be more
    careful in tcp_fragment()").
    
    The BUG() is hit due to the specific code added to versions older than
    v4.15. The comment in skb_queue_prev() (include/linux/skbuff.h:1406),
    just before the BUG_ON() somehow suggests to add a check before using
    it, what Tim did.
    
    In master, this code path causing the issue will not be taken because
    the implementation of tcp_rtx_queue_tail() is different:
    
        tcp_fragment() → tcp_rtx_queue_tail() → tcp_write_queue_prev() →
    skb_queue_prev() → BUG_ON()
    
    Fixes: 8c3088f895a0 ("tcp: be more careful in tcp_fragment()")
    Signed-off-by: Tim Froidcoeur <tim.froidcoeur@tessares.net>
    Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Reviewed-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85f7feb11cfc3a21dd43176c2711c4393bf2a7c1
Author: Pedro Sousa <sousa@synopsys.com>
Date:   Thu Apr 18 21:13:34 2019 +0200

    scsi: ufs: Fix RX_TERMINATION_FORCE_ENABLE define value
    
    [ Upstream commit ebcb8f8508c5edf428f52525cec74d28edea7bcb ]
    
    Fix RX_TERMINATION_FORCE_ENABLE define value from 0x0089 to 0x00A9
    according to MIPI Alliance MPHY specification.
    
    Fixes: e785060ea3a1 ("ufs: definitions for phy interface")
    Signed-off-by: Pedro Sousa <sousa@synopsys.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7f41ef84e7a3d80d146ec1e86efc0faf676e117f
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Wed May 15 19:14:18 2019 +0200

    watchdog: bcm2835_wdt: Fix module autoload
    
    [ Upstream commit 215e06f0d18d5d653d6ea269e4dfc684854d48bf ]
    
    The commit 5e6acc3e678e ("bcm2835-pm: Move bcm2835-watchdog's DT probe
    to an MFD.") broke module autoloading on Raspberry Pi. So add a
    module alias this fix this.
    
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47a2cf61fe090bdf3ac659b64ed58f7fadd39f04
Author: Adrian Vladu <avladu@cloudbasesolutions.com>
Date:   Mon May 6 16:50:58 2019 +0000

    tools: hv: fix KVP and VSS daemons exit code
    
    [ Upstream commit b0995156071b0ff29a5902964a9dc8cfad6f81c0 ]
    
    HyperV KVP and VSS daemons should exit with 0 when the '--help'
    or '-h' flags are used.
    
    Signed-off-by: Adrian Vladu <avladu@cloudbasesolutions.com>
    
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25b0bb7eeef867551bbaf933b0f6f546356ce4d9
Author: Hans Ulli Kroll <ulli.kroll@googlemail.com>
Date:   Sat Aug 10 17:04:58 2019 +0200

    usb: host: fotg2: restart hcd after port reset
    
    [ Upstream commit 777758888ffe59ef754cc39ab2f275dc277732f4 ]
    
    On the Gemini SoC the FOTG2 stalls after port reset
    so restart the HCD after each port reset.
    
    Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20190810150458.817-1-linus.walleij@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1fe671b62a33ada57a7c586fd9e0184e4d6fc443
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Thu Aug 8 21:54:17 2019 +0200

    i2c: emev2: avoid race when unregistering slave client
    
    [ Upstream commit d7437fc0d8291181debe032671a289b6bd93f46f ]
    
    After we disabled interrupts, there might still be an active one
    running. Sync before clearing the pointer to the slave device.
    
    Fixes: c31d0a00021d ("i2c: emev2: add slave support")
    Reported-by: Krzysztof Adamski <krzysztof.adamski@nokia.com>
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Krzysztof Adamski <krzysztof.adamski@nokia.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5679e5a00f5ac37eb0c5e6cbb455de0aabc0ee6
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Sun Aug 11 12:23:22 2019 -0500

    xen/blkback: fix memory leaks
    
    [ Upstream commit ae78ca3cf3d9e9f914bfcd0bc5c389ff18b9c2e0 ]
    
    In read_per_ring_refs(), after 'req' and related memory regions are
    allocated, xen_blkif_map() is invoked to map the shared frame, irq, and
    etc. However, if this mapping process fails, no cleanup is performed,
    leading to memory leaks. To fix this issue, invoke the cleanup before
    returning the error.
    
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d023765893154158b590ca94f5f5e11df857c9a7
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Fri Jul 26 14:59:03 2019 +1000

    usb: gadget: composite: Clear "suspended" on reset/disconnect
    
    [ Upstream commit 602fda17c7356bb7ae98467d93549057481d11dd ]
    
    In some cases, one can get out of suspend with a reset or
    a disconnect followed by a reconnect. Previously we would
    leave a stale suspended flag set.
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10f13d9804080db737f0b5678ac202fcbbf8e1be
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Mon Jul 29 17:46:00 2019 +0100

    iommu/dma: Handle SG length overflow better
    
    [ Upstream commit ab2cbeb0ed301a9f0460078e91b09f39958212ef ]
    
    Since scatterlist dimensions are all unsigned ints, in the relatively
    rare cases where a device's max_segment_size is set to UINT_MAX, then
    the "cur_len + s_length <= max_len" check in __finalise_sg() will always
    return true. As a result, the corner case of such a device mapping an
    excessively large scatterlist which is mergeable to or beyond a total
    length of 4GB can lead to overflow and a bogus truncated dma_length in
    the resulting segment.
    
    As we already assume that any single segment must be no longer than
    max_len to begin with, this can easily be addressed by reshuffling the
    comparison.
    
    Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
    Reported-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Tested-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7900374c9a93f515f2ff9826bee02dd533c334e5
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jul 12 11:13:30 2019 +0200

    dmaengine: ste_dma40: fix unneeded variable warning
    
    [ Upstream commit 5d6fb560729a5d5554e23db8d00eb57cd0021083 ]
    
    clang-9 points out that there are two variables that depending on the
    configuration may only be used in an ARRAY_SIZE() expression but not
    referenced:
    
    drivers/dma/ste_dma40.c:145:12: error: variable 'd40_backup_regs' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
    static u32 d40_backup_regs[] = {
               ^
    drivers/dma/ste_dma40.c:214:12: error: variable 'd40_backup_regs_chan' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
    static u32 d40_backup_regs_chan[] = {
    
    Mark these __maybe_unused to shut up the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20190712091357.744515-1-arnd@arndb.de
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9272c2573462046edc551a22cf9d56636c03235b
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Aug 19 15:52:35 2019 +0000

    x86/CPU/AMD: Clear RDRAND CPUID bit on AMD family 15h/16h
    
    [ Upstream commit c49a0a80137c7ca7d6ced4c812c9e07a949f6f24 ]
    
    There have been reports of RDRAND issues after resuming from suspend on
    some AMD family 15h and family 16h systems. This issue stems from a BIOS
    not performing the proper steps during resume to ensure RDRAND continues
    to function properly.
    
    RDRAND support is indicated by CPUID Fn00000001_ECX[30]. This bit can be
    reset by clearing MSR C001_1004[62]. Any software that checks for RDRAND
    support using CPUID, including the kernel, will believe that RDRAND is
    not supported.
    
    Update the CPU initialization to clear the RDRAND CPUID bit for any family
    15h and 16h processor that supports RDRAND. If it is known that the family
    15h or family 16h system does not have an RDRAND resume issue or that the
    system will not be placed in suspend, the "rdrand=force" kernel parameter
    can be used to stop the clearing of the RDRAND CPUID bit.
    
    Additionally, update the suspend and resume path to save and restore the
    MSR C001_1004 value to ensure that the RDRAND CPUID setting remains in
    place after resuming from suspend.
    
    Note, that clearing the RDRAND CPUID bit does not prevent a processor
    that normally supports the RDRAND instruction from executing it. So any
    code that determined the support based on family and model won't #UD.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Chen Yu <yu.c.chen@intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>
    Cc: "linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: <stable@vger.kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "x86@kernel.org" <x86@kernel.org>
    Link: https://lkml.kernel.org/r/7543af91666f491547bd86cebb1e17c66824ab9f.1566229943.git.thomas.lendacky@amd.com
    [sl: adjust context in docs]
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 041de0e9f05965e629601c492b9ca5e5562cdcfc
Author: Sasha Levin <sashal@kernel.org>
Date:   Tue Aug 27 22:58:51 2019 -0400

    Revert "perf test 6: Fix missing kvm module load for s390"
    
    This reverts commit 9a501cdb05348fa8f85db8df5a82f4b8cd11594e.
    
    Which was upstream commit 53fe307dfd309e425b171f6272d64296a54f4dff.
    
    Ben Hutchings reports that this commit depends on new code added in
    v4.18, and so is irrelevant on older kernels, and breaks the build.
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4862942c590646fe46e33ce4a6d35da4d8ee188e
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Aug 22 20:55:54 2019 -0700

    xfs: fix missing ILOCK unlock when xfs_setattr_nonsize fails due to EDQUOT
    
    commit 1fb254aa983bf190cfd685d40c64a480a9bafaee upstream.
    
    Benjamin Moody reported to Debian that XFS partially wedges when a chgrp
    fails on account of being out of disk quota.  I ran his reproducer
    script:
    
    # adduser dummy
    # adduser dummy plugdev
    
    # dd if=/dev/zero bs=1M count=100 of=test.img
    # mkfs.xfs test.img
    # mount -t xfs -o gquota test.img /mnt
    # mkdir -p /mnt/dummy
    # chown -c dummy /mnt/dummy
    # xfs_quota -xc 'limit -g bsoft=100k bhard=100k plugdev' /mnt
    
    (and then as user dummy)
    
    $ dd if=/dev/urandom bs=1M count=50 of=/mnt/dummy/foo
    $ chgrp plugdev /mnt/dummy/foo
    
    and saw:
    
    ================================================
    WARNING: lock held when returning to user space!
    5.3.0-rc5 #rc5 Tainted: G        W
    ------------------------------------------------
    chgrp/47006 is leaving the kernel with locks still held!
    1 lock held by chgrp/47006:
     #0: 000000006664ea2d (&xfs_nondir_ilock_class){++++}, at: xfs_ilock+0xd2/0x290 [xfs]
    
    ...which is clearly caused by xfs_setattr_nonsize failing to unlock the
    ILOCK after the xfs_qm_vop_chown_reserve call fails.  Add the missing
    unlock.
    
    Reported-by: benjamin.moody@gmail.com
    Fixes: 253f4911f297 ("xfs: better xfs_trans_alloc interface")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2929516c3f391d6396dd8b11146fbb94d174db6a
Author: Henry Burns <henryburns@google.com>
Date:   Sat Aug 24 17:55:03 2019 -0700

    mm/zsmalloc.c: migration can leave pages in ZS_EMPTY indefinitely
    
    commit 1a87aa03597efa9641e92875b883c94c7f872ccb upstream.
    
    In zs_page_migrate() we call putback_zspage() after we have finished
    migrating all pages in this zspage.  However, the return value is
    ignored.  If a zs_free() races in between zs_page_isolate() and
    zs_page_migrate(), freeing the last object in the zspage,
    putback_zspage() will leave the page in ZS_EMPTY for potentially an
    unbounded amount of time.
    
    To fix this, we need to do the same thing as zs_page_putback() does:
    schedule free_work to occur.
    
    To avoid duplicated code, move the sequence to a new
    putback_zspage_deferred() function which both zs_page_migrate() and
    zs_page_putback() call.
    
    Link: http://lkml.kernel.org/r/20190809181751.219326-1-henryburns@google.com
    Fixes: 48b4800a1c6a ("zsmalloc: page migration support")
    Signed-off-by: Henry Burns <henryburns@google.com>
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Henry Burns <henrywolfeburns@gmail.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Jonathan Adams <jwadams@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba37a9401e76bbb47bcad1c3421e834874e1c1b4
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Sat Aug 24 17:54:59 2019 -0700

    mm, page_owner: handle THP splits correctly
    
    commit f7da677bc6e72033f0981b9d58b5c5d409fa641e upstream.
    
    THP splitting path is missing the split_page_owner() call that
    split_page() has.
    
    As a result, split THP pages are wrongly reported in the page_owner file
    as order-9 pages.  Furthermore when the former head page is freed, the
    remaining former tail pages are not listed in the page_owner file at
    all.  This patch fixes that by adding the split_page_owner() call into
    __split_huge_page().
    
    Link: http://lkml.kernel.org/r/20190820131828.22684-2-vbabka@suse.cz
    Fixes: a9627bc5e34e ("mm/page_owner: introduce split_page_owner and replace manual handling")
    Reported-by: Kirill A. Shutemov <kirill@shutemov.name>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8421928b368d62b89cc74b56005259eaeba54e13
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Thu Aug 1 23:53:53 2019 +0000

    genirq: Properly pair kobject_del() with kobject_add()
    
    commit d0ff14fdc987303aeeb7de6f1bd72c3749ae2a9b upstream.
    
    If alloc_descs() fails before irq_sysfs_init() has run, free_desc() in the
    cleanup path will call kobject_del() even though the kobject has not been
    added with kobject_add().
    
    Fix this by making the call to kobject_del() conditional on whether
    irq_sysfs_init() has run.
    
    This problem surfaced because commit aa30f47cf666 ("kobject: Add support
    for default attribute groups to kobj_type") makes kobject_del() stricter
    about pairing with kobject_add(). If the pairing is incorrrect, a WARNING
    and backtrace occur in sysfs_remove_group() because there is no parent.
    
    [ tglx: Add a comment to the code and make it work with CONFIG_SYSFS=n ]
    
    Fixes: ecb3f394c5db ("genirq: Expose interrupt information through sysfs")
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1564703564-4116-1-git-send-email-mikelley@microsoft.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 190db74e145f6e3ed700d85ce73866cce064cd4c
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Aug 23 09:54:09 2019 -0400

    dm table: fix invalid memory accesses with too high sector number
    
    commit 1cfd5d3399e87167b7f9157ef99daa0e959f395d upstream.
    
    If the sector number is too high, dm_table_find_target() should return a
    pointer to a zeroed dm_target structure (the caller should test it with
    dm_target_is_valid).
    
    However, for some table sizes, the code in dm_table_find_target() that
    performs btree lookup will access out of bound memory structures.
    
    Fix this bug by testing the sector number at the beginning of
    dm_table_find_target(). Also, add an "inline" keyword to the function
    dm_table_get_size() because this is a hot path.
    
    Fixes: 512875bd9661 ("dm: table detect io beyond device")
    Cc: stable@vger.kernel.org
    Reported-by: Zhang Tao <kontais@zoho.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4f7e6d57b9970881a7afbeb70f2dc24ea0e6630
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Mon Aug 19 11:31:21 2019 +0800

    dm space map metadata: fix missing store of apply_bops() return value
    
    commit ae148243d3f0816b37477106c05a2ec7d5f32614 upstream.
    
    In commit 6096d91af0b6 ("dm space map metadata: fix occasional leak
    of a metadata block on resize"), we refactor the commit logic to a new
    function 'apply_bops'.  But when that logic was replaced in out() the
    return value was not stored.  This may lead out() returning a wrong
    value to the caller.
    
    Fixes: 6096d91af0b6 ("dm space map metadata: fix occasional leak of a metadata block on resize")
    Cc: stable@vger.kernel.org
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efe36a42564abec5584d961145900461fd99400c
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Sat Aug 17 13:32:40 2019 +0800

    dm btree: fix order of block initialization in btree_split_beneath
    
    commit e4f9d6013820d1eba1432d51dd1c5795759aa77f upstream.
    
    When btree_split_beneath() splits a node to two new children, it will
    allocate two blocks: left and right.  If right block's allocation
    failed, the left block will be unlocked and marked dirty.  If this
    happened, the left block'ss content is zero, because it wasn't
    initialized with the btree struct before the attempot to allocate the
    right block.  Upon return, when flushing the left block to disk, the
    validator will fail when check this block.  Then a BUG_ON is raised.
    
    Fix this by completely initializing the left block before allocating and
    initializing the right block.
    
    Fixes: 4dcb8b57df359 ("dm btree: fix leak of bufio-backed block in btree_split_beneath error path")
    Cc: stable@vger.kernel.org
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e183249c717174cbd4aae5009cef291907f4e2a3
Author: John Hubbard <jhubbard@nvidia.com>
Date:   Wed Aug 21 12:25:13 2019 -0700

    x86/boot: Fix boot regression caused by bootparam sanitizing
    
    commit 7846f58fba964af7cb8cf77d4d13c33254725211 upstream.
    
    commit a90118c445cc ("x86/boot: Save fields explicitly, zero out everything
    else") had two errors:
    
        * It preserved boot_params.acpi_rsdp_addr, and
        * It failed to preserve boot_params.hdr
    
    Therefore, zero out acpi_rsdp_addr, and preserve hdr.
    
    Fixes: a90118c445cc ("x86/boot: Save fields explicitly, zero out everything else")
    Reported-by: Neil MacLeod <neil@nmacleod.com>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: John Hubbard <jhubbard@nvidia.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Neil MacLeod <neil@nmacleod.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190821192513.20126-1-jhubbard@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e478cb2ccdd42788e617461524739e450e7aedc
Author: John Hubbard <jhubbard@nvidia.com>
Date:   Tue Jul 30 22:46:27 2019 -0700

    x86/boot: Save fields explicitly, zero out everything else
    
    commit a90118c445cc7f07781de26a9684d4ec58bfcfd1 upstream.
    
    Recent gcc compilers (gcc 9.1) generate warnings about an out of bounds
    memset, if the memset goes accross several fields of a struct. This
    generated a couple of warnings on x86_64 builds in sanitize_boot_params().
    
    Fix this by explicitly saving the fields in struct boot_params
    that are intended to be preserved, and zeroing all the rest.
    
    [ tglx: Tagged for stable as it breaks the warning free build there as well ]
    
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Suggested-by: H. Peter Anvin <hpa@zytor.com>
    Signed-off-by: John Hubbard <jhubbard@nvidia.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190731054627.5627-2-jhubbard@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c81846bbb6f85b7da0eeed3cd6b59a651052e4ae
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Aug 9 14:54:07 2019 +0200

    x86/apic: Handle missing global clockevent gracefully
    
    commit f897e60a12f0b9146357780d317879bce2a877dc upstream.
    
    Some newer machines do not advertise legacy timers. The kernel can handle
    that situation if the TSC and the CPU frequency are enumerated by CPUID or
    MSRs and the CPU supports TSC deadline timer. If the CPU does not support
    TSC deadline timer the local APIC timer frequency has to be known as well.
    
    Some Ryzens machines do not advertize legacy timers, but there is no
    reliable way to determine the bus frequency which feeds the local APIC
    timer when the machine allows overclocking of that frequency.
    
    As there is no legacy timer the local APIC timer calibration crashes due to
    a NULL pointer dereference when accessing the not installed global clock
    event device.
    
    Switch the calibration loop to a non interrupt based one, which polls
    either TSC (if frequency is known) or jiffies. The latter requires a global
    clockevent. As the machines which do not have a global clockevent installed
    have a known TSC frequency this is a non issue. For older machines where
    TSC frequency is not known, there is no known case where the legacy timers
    do not exist as that would have been reported long ago.
    
    Reported-by: Daniel Drake <drake@endlessm.com>
    Reported-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Daniel Drake <drake@endlessm.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1908091443030.21433@nanos.tec.linutronix.de
    Link: http://bugzilla.opensuse.org/show_bug.cgi?id=1142926#c12
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44b79b408cb6702d87c80588deb3675ae16f6bfd
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 22 14:11:22 2019 -0700

    x86/retpoline: Don't clobber RFLAGS during CALL_NOSPEC on i386
    
    commit b63f20a778c88b6a04458ed6ffc69da953d3a109 upstream.
    
    Use 'lea' instead of 'add' when adjusting %rsp in CALL_NOSPEC so as to
    avoid clobbering flags.
    
    KVM's emulator makes indirect calls into a jump table of sorts, where
    the destination of the CALL_NOSPEC is a small blob of code that performs
    fast emulation by executing the target instruction with fixed operands.
    
      adcb_al_dl:
         0x000339f8 <+0>:   adc    %dl,%al
         0x000339fa <+2>:   ret
    
    A major motiviation for doing fast emulation is to leverage the CPU to
    handle consumption and manipulation of arithmetic flags, i.e. RFLAGS is
    both an input and output to the target of CALL_NOSPEC.  Clobbering flags
    results in all sorts of incorrect emulation, e.g. Jcc instructions often
    take the wrong path.  Sans the nops...
    
      asm("push %[flags]; popf; " CALL_NOSPEC " ; pushf; pop %[flags]\n"
         0x0003595a <+58>:  mov    0xc0(%ebx),%eax
         0x00035960 <+64>:  mov    0x60(%ebx),%edx
         0x00035963 <+67>:  mov    0x90(%ebx),%ecx
         0x00035969 <+73>:  push   %edi
         0x0003596a <+74>:  popf
         0x0003596b <+75>:  call   *%esi
         0x000359a0 <+128>: pushf
         0x000359a1 <+129>: pop    %edi
         0x000359a2 <+130>: mov    %eax,0xc0(%ebx)
         0x000359b1 <+145>: mov    %edx,0x60(%ebx)
    
      ctxt->eflags = (ctxt->eflags & ~EFLAGS_MASK) | (flags & EFLAGS_MASK);
         0x000359a8 <+136>: mov    -0x10(%ebp),%eax
         0x000359ab <+139>: and    $0x8d5,%edi
         0x000359b4 <+148>: and    $0xfffff72a,%eax
         0x000359b9 <+153>: or     %eax,%edi
         0x000359bd <+157>: mov    %edi,0x4(%ebx)
    
    For the most part this has gone unnoticed as emulation of guest code
    that can trigger fast emulation is effectively limited to MMIO when
    running on modern hardware, and MMIO is rarely, if ever, accessed by
    instructions that affect or consume flags.
    
    Breakage is almost instantaneous when running with unrestricted guest
    disabled, in which case KVM must emulate all instructions when the guest
    has invalid state, e.g. when the guest is in Big Real Mode during early
    BIOS.
    
    Fixes: 776b043848fd2 ("x86/retpoline: Add initial retpoline support")
    Fixes: 1a29b5b7f347a ("KVM: x86: Make indirect calls in emulator speculation safe")
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190822211122.27579-1-sean.j.christopherson@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88bc983a61914105301c0cde3cb23255c56c5db0
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Sat Aug 24 17:54:56 2019 -0700

    userfaultfd_release: always remove uffd flags and clear vm_userfaultfd_ctx
    
    commit 46d0b24c5ee10a15dfb25e20642f5a5ed59c5003 upstream.
    
    userfaultfd_release() should clear vm_flags/vm_userfaultfd_ctx even if
    mm->core_state != NULL.
    
    Otherwise a page fault can see userfaultfd_missing() == T and use an
    already freed userfaultfd_ctx.
    
    Link: http://lkml.kernel.org/r/20190820160237.GB4983@redhat.com
    Fixes: 04f5866e41fb ("coredump: fix race condition between mmget_not_zero()/get_task_mm() and core dumping")
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 640d77c1d0a02834299f13b45b3ae0550df85c1f
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Tue Aug 6 13:41:51 2019 +0200

    gpiolib: never report open-drain/source lines as 'input' to user-space
    
    commit 2c60e6b5c9241b24b8b523fefd3e44fb85622cda upstream.
    
    If the driver doesn't support open-drain/source config options, we
    emulate this behavior when setting the direction by calling
    gpiod_direction_input() if the default value is 0 (open-source) or
    1 (open-drain), thus not actively driving the line in those cases.
    
    This however clears the FLAG_IS_OUT bit for the GPIO line descriptor
    and makes the LINEINFO ioctl() incorrectly report this line's mode as
    'input' to user-space.
    
    This commit modifies the ioctl() to always set the GPIOLINE_FLAG_IS_OUT
    bit in the lineinfo structure's flags field. Since it's impossible to
    use the input mode and open-drain/source options at the same time, we
    can be sure the reported information will be correct.
    
    Fixes: 521a2ad6f862 ("gpio: add userspace ABI for GPIO line information")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Link: https://lore.kernel.org/r/20190806114151.17652-1-brgl@bgdev.pl
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b90594573b3748ec57b2767ed3a786038323eb51
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Aug 8 05:40:04 2019 -0400

    Revert "dm bufio: fix deadlock with loop device"
    
    commit cf3591ef832915892f2499b7e54b51d4c578b28c upstream.
    
    Revert the commit bd293d071ffe65e645b4d8104f9d8fe15ea13862. The proper
    fix has been made available with commit d0a255e795ab ("loop: set
    PF_MEMALLOC_NOIO for the worker thread").
    
    Note that the fix offered by commit bd293d071ffe doesn't really prevent
    the deadlock from occuring - if we look at the stacktrace reported by
    Junxiao Bi, we see that it hangs in bit_wait_io and not on the mutex -
    i.e. it has already successfully taken the mutex. Changing the mutex
    from mutex_lock to mutex_trylock won't help with deadlocks that happen
    afterwards.
    
    PID: 474    TASK: ffff8813e11f4600  CPU: 10  COMMAND: "kswapd0"
       #0 [ffff8813dedfb938] __schedule at ffffffff8173f405
       #1 [ffff8813dedfb990] schedule at ffffffff8173fa27
       #2 [ffff8813dedfb9b0] schedule_timeout at ffffffff81742fec
       #3 [ffff8813dedfba60] io_schedule_timeout at ffffffff8173f186
       #4 [ffff8813dedfbaa0] bit_wait_io at ffffffff8174034f
       #5 [ffff8813dedfbac0] __wait_on_bit at ffffffff8173fec8
       #6 [ffff8813dedfbb10] out_of_line_wait_on_bit at ffffffff8173ff81
       #7 [ffff8813dedfbb90] __make_buffer_clean at ffffffffa038736f [dm_bufio]
       #8 [ffff8813dedfbbb0] __try_evict_buffer at ffffffffa0387bb8 [dm_bufio]
       #9 [ffff8813dedfbbd0] dm_bufio_shrink_scan at ffffffffa0387cc3 [dm_bufio]
      #10 [ffff8813dedfbc40] shrink_slab at ffffffff811a87ce
      #11 [ffff8813dedfbd30] shrink_zone at ffffffff811ad778
      #12 [ffff8813dedfbdc0] kswapd at ffffffff811ae92f
      #13 [ffff8813dedfbec0] kthread at ffffffff810a8428
      #14 [ffff8813dedfbf50] ret_from_fork at ffffffff81745242
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: bd293d071ffe ("dm bufio: fix deadlock with loop device")
    Depends-on: d0a255e795ab ("loop: set PF_MEMALLOC_NOIO for the worker thread")
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50a583b3c219ba85662356207580157a3384cc6d
Author: Jason Gerecke <jason.gerecke@wacom.com>
Date:   Wed Aug 7 14:11:55 2019 -0700

    HID: wacom: Correct distance scale for 2nd-gen Intuos devices
    
    commit b72fb1dcd2ea9d29417711cb302cef3006fa8d5a upstream.
    
    Distance values reported by 2nd-gen Intuos tablets are on an inverted
    scale (0 == far, 63 == near). We need to change them over to a normal
    scale before reporting to userspace or else userspace drivers and
    applications can get confused.
    
    Ref: https://github.com/linuxwacom/input-wacom/issues/98
    Fixes: eda01dab53 ("HID: wacom: Add four new Intuos devices")
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Cc: <stable@vger.kernel.org> # v4.4+
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af00cc24f21bee2589e3cd4f90485b281b211bfe
Author: Aaron Armstrong Skomra <skomra@gmail.com>
Date:   Fri Aug 16 12:00:54 2019 -0700

    HID: wacom: correct misreported EKR ring values
    
    commit fcf887e7caaa813eea821d11bf2b7619a37df37a upstream.
    
    The EKR ring claims a range of 0 to 71 but actually reports
    values 1 to 72. The ring is used in relative mode so this
    change should not affect users.
    
    Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
    Fixes: 72b236d60218f ("HID: wacom: Add support for Express Key Remote.")
    Cc: <stable@vger.kernel.org> # v4.3+
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10fe806ceee0b058508b6a97b5793f5d60621a85
Author: Naresh Kamboju <naresh.kamboju () linaro ! org>
Date:   Wed Aug 7 13:58:14 2019 +0000

    selftests: kvm: Adding config fragments
    
    [ Upstream commit c096397c78f766db972f923433031f2dec01cae0 ]
    
    selftests kvm test cases need pre-required kernel configs for the test
    to get pass.
    
    Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eee03869e4f367692ece2b6aedbe170c4e609abe
Author: Jin Yao <yao.jin@linux.intel.com>
Date:   Mon Jul 29 15:27:55 2019 +0800

    perf pmu-events: Fix missing "cpu_clk_unhalted.core" event
    
    [ Upstream commit 8e6e5bea2e34c61291d00cb3f47560341aa84bc3 ]
    
    The events defined in pmu-events JSON are parsed and added into perf
    tool. For fixed counters, we handle the encodings between JSON and perf
    by using a static array fixed[].
    
    But the fixed[] has missed an important event "cpu_clk_unhalted.core".
    
    For example, on the Tremont platform,
    
      [root@localhost ~]# perf stat -e cpu_clk_unhalted.core -a
      event syntax error: 'cpu_clk_unhalted.core'
                           \___ parser error
    
    With this patch, the event cpu_clk_unhalted.core can be parsed.
    
      [root@localhost perf]# ./perf stat -e cpu_clk_unhalted.core -a -vvv
      ------------------------------------------------------------
      perf_event_attr:
        type                             4
        size                             112
        config                           0x3c
        sample_type                      IDENTIFIER
        read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
        disabled                         1
        inherit                          1
        exclude_guest                    1
      ------------------------------------------------------------
    ...
    
    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190729072755.2166-1-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72cbaa5ba88a91f9fea0132293b81ade3e527ca2
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Jun 24 09:39:59 2019 -0700

    drm/vmwgfx: fix memory leak when too many retries have occurred
    
    [ Upstream commit 6b7c3b86f0b63134b2ab56508921a0853ffa687a ]
    
    Currently when too many retries have occurred there is a memory
    leak on the allocation for reply on the error return path. Fix
    this by kfree'ing reply before returning.
    
    Addresses-Coverity: ("Resource leak")
    Fixes: a9cd9c044aa9 ("drm/vmwgfx: Add a check to handle host message failure")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2f888bc18ed4684d9c8738b5aaa7716df52653b
Author: Valdis Klētnieks <valdis.kletnieks@vt.edu>
Date:   Wed Aug 7 23:27:17 2019 -0400

    x86/lib/cpu: Address missing prototypes warning
    
    [ Upstream commit 04f5bda84b0712d6f172556a7e8dca9ded5e73b9 ]
    
    When building with W=1, warnings about missing prototypes are emitted:
    
      CC      arch/x86/lib/cpu.o
    arch/x86/lib/cpu.c:5:14: warning: no previous prototype for 'x86_family' [-Wmissing-prototypes]
        5 | unsigned int x86_family(unsigned int sig)
          |              ^~~~~~~~~~
    arch/x86/lib/cpu.c:18:14: warning: no previous prototype for 'x86_model' [-Wmissing-prototypes]
       18 | unsigned int x86_model(unsigned int sig)
          |              ^~~~~~~~~
    arch/x86/lib/cpu.c:33:14: warning: no previous prototype for 'x86_stepping' [-Wmissing-prototypes]
       33 | unsigned int x86_stepping(unsigned int sig)
          |              ^~~~~~~~~~~~
    
    Add the proper include file so the prototypes are there.
    
    Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/42513.1565234837@turing-police
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 071434c30d6882ab447a417b2cc4692c26525df9
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Aug 7 12:23:57 2019 -0600

    libata: add SG safety checks in SFF pio transfers
    
    [ Upstream commit 752ead44491e8c91e14d7079625c5916b30921c5 ]
    
    Abort processing of a command if we run out of mapped data in the
    SG list. This should never happen, but a previous bug caused it to
    be possible. Play it safe and attempt to abort nicely if we don't
    have more SG segments left.
    
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34e7dd9e9f3ff8edadfd19eba7833de62287de93
Author: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
Date:   Sat Aug 3 20:31:41 2019 +0800

    net: hisilicon: Fix dma_map_single failed on arm64
    
    [ Upstream commit 96a50c0d907ac8f5c3d6b051031a19eb8a2b53e3 ]
    
    On the arm64 platform, executing "ifconfig eth0 up" will fail,
    returning "ifconfig: SIOCSIFFLAGS: Input/output error."
    
    ndev->dev is not initialized, dma_map_single->get_dma_ops->
    dummy_dma_ops->__dummy_map_page will return DMA_ERROR_CODE
    directly, so when we use dma_map_single, the first parameter
    is to use the device of platform_device.
    
    Signed-off-by: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90a540d14bec0139c75e7eef9a660b2092fddee5
Author: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
Date:   Sat Aug 3 20:31:40 2019 +0800

    net: hisilicon: fix hip04-xmit never return TX_BUSY
    
    [ Upstream commit f2243b82785942be519016067ee6c55a063bbfe2 ]
    
    TX_DESC_NUM is 256, in tx_count, the maximum value of
    mod(TX_DESC_NUM - 1) is 254, the variable "count" in
    the hip04_mac_start_xmit function is never equal to
    (TX_DESC_NUM - 1), so hip04_mac_start_xmit never
    return NETDEV_TX_BUSY.
    
    tx_count is modified to mod(TX_DESC_NUM) so that
    the maximum value of tx_count can reach
    (TX_DESC_NUM - 1), then hip04_mac_start_xmit can reurn
    NETDEV_TX_BUSY.
    
    Signed-off-by: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8695cfa1dd9c4959b56a53fcb1cae2451148d445
Author: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
Date:   Sat Aug 3 20:31:39 2019 +0800

    net: hisilicon: make hip04_tx_reclaim non-reentrant
    
    [ Upstream commit 1a2c070ae805910a853b4a14818481ed2e17c727 ]
    
    If hip04_tx_reclaim is interrupted while it is running
    and then __napi_schedule continues to execute
    hip04_rx_poll->hip04_tx_reclaim, reentrancy occurs
    and oops is generated. So you need to mask the interrupt
    during the hip04_tx_reclaim run.
    
    The kernel oops exception stack is as follows:
    
    Unable to handle kernel NULL pointer dereference
    at virtual address 00000050
    pgd = c0003000
    [00000050] *pgd=80000000a04003, *pmd=00000000
    Internal error: Oops: 206 [#1] SMP ARM
    Modules linked in: hip04_eth mtdblock mtd_blkdevs mtd
    ohci_platform ehci_platform ohci_hcd ehci_hcd
    vfat fat sd_mod usb_storage scsi_mod usbcore usb_common
    CPU: 0 PID: 0 Comm: swapper/0 Tainted: G           O    4.4.185 #1
    Hardware name: Hisilicon A15
    task: c0a250e0 task.stack: c0a00000
    PC is at hip04_tx_reclaim+0xe0/0x17c [hip04_eth]
    LR is at hip04_tx_reclaim+0x30/0x17c [hip04_eth]
    pc : [<bf30c3a4>]    lr : [<bf30c2f4>]    psr: 600e0313
    sp : c0a01d88  ip : 00000000  fp : c0601f9c
    r10: 00000000  r9 : c3482380  r8 : 00000001
    r7 : 00000000  r6 : 000000e1  r5 : c3482000  r4 : 0000000c
    r3 : f2209800  r2 : 00000000  r1 : 00000000  r0 : 00000000
    Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    Control: 32c5387d  Table: 03d28c80  DAC: 55555555
    Process swapper/0 (pid: 0, stack limit = 0xc0a00190)
    Stack: (0xc0a01d88 to 0xc0a02000)
    [<bf30c3a4>] (hip04_tx_reclaim [hip04_eth]) from [<bf30d2e0>]
                                                    (hip04_rx_poll+0x88/0x368 [hip04_eth])
    [<bf30d2e0>] (hip04_rx_poll [hip04_eth]) from [<c04c2d9c>] (net_rx_action+0x114/0x34c)
    [<c04c2d9c>] (net_rx_action) from [<c021eed8>] (__do_softirq+0x218/0x318)
    [<c021eed8>] (__do_softirq) from [<c021f284>] (irq_exit+0x88/0xac)
    [<c021f284>] (irq_exit) from [<c0240090>] (msa_irq_exit+0x11c/0x1d4)
    [<c0240090>] (msa_irq_exit) from [<c02677e0>] (__handle_domain_irq+0x110/0x148)
    [<c02677e0>] (__handle_domain_irq) from [<c0201588>] (gic_handle_irq+0xd4/0x118)
    [<c0201588>] (gic_handle_irq) from [<c0551700>] (__irq_svc+0x40/0x58)
    Exception stack(0xc0a01f30 to 0xc0a01f78)
    1f20:                                     c0ae8b40 00000000 00000000 00000000
    1f40: 00000002 ffffe000 c0601f9c 00000000 ffffffff c0a2257c c0a22440 c0831a38
    1f60: c0a01ec4 c0a01f80 c0203714 c0203718 600e0213 ffffffff
    [<c0551700>] (__irq_svc) from [<c0203718>] (arch_cpu_idle+0x20/0x3c)
    [<c0203718>] (arch_cpu_idle) from [<c025bfd8>] (cpu_startup_entry+0x244/0x29c)
    [<c025bfd8>] (cpu_startup_entry) from [<c054b0d8>] (rest_init+0xc8/0x10c)
    [<c054b0d8>] (rest_init) from [<c0800c58>] (start_kernel+0x468/0x514)
    Code: a40599e5 016086e2 018088e2 7660efe6 (503090e5)
    ---[ end trace 1db21d6d09c49d74 ]---
    Kernel panic - not syncing: Fatal exception in interrupt
    CPU3: stopping
    CPU: 3 PID: 0 Comm: swapper/3 Tainted: G      D    O    4.4.185 #1
    
    Signed-off-by: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36425c894dc3ca8c7067e9a9eb3d352f895395db
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Aug 6 10:55:12 2019 +0200

    net: cxgb3_main: Fix a resource leak in a error path in 'init_one()'
    
    [ Upstream commit debea2cd3193ac868289e8893c3a719c265b0612 ]
    
    A call to 'kfree_skb()' is missing in the error handling path of
    'init_one()'.
    This is already present in 'remove_one()' but is missing here.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6779b7638f04e5384ca95b7e4ee8edb30801ddc3
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Tue Jun 11 14:13:20 2019 +0200

    HID: input: fix a4tech horizontal wheel custom usage
    
    [ Upstream commit 1c703b53e5bfb5c2205c30f0fb157ce271fd42fb ]
    
    Some a4tech mice use the 'GenericDesktop.00b8' usage to inform whether
    the previous wheel report was horizontal or vertical. Before
    c01908a14bf73 ("HID: input: add mapping for "Toggle Display" key") this
    usage was being mapped to 'Relative.Misc'. After the patch it's simply
    ignored (usage->type == 0 & usage->code == 0). Which ultimately makes
    hid-a4tech ignore the WHEEL/HWHEEL selection event, as it has no
    usage->type.
    
    We shouldn't rely on a mapping for that usage as it's nonstandard and
    doesn't really map to an input event. So we bypass the mapping and make
    sure the custom event handling properly handles both reports.
    
    Fixes: c01908a14bf73 ("HID: input: add mapping for "Toggle Display" key")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 46888ce5dcac182248ed2e445ef0320c0634964b
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat Aug 3 10:11:27 2019 -0400

    NFSv4: Fix a potential sleep while atomic in nfs4_do_reclaim()
    
    [ Upstream commit c77e22834ae9a11891cb613bd9a551be1b94f2bc ]
    
    John Hubbard reports seeing the following stack trace:
    
    nfs4_do_reclaim
       rcu_read_lock /* we are now in_atomic() and must not sleep */
           nfs4_purge_state_owners
               nfs4_free_state_owner
                   nfs4_destroy_seqid_counter
                       rpc_destroy_wait_queue
                           cancel_delayed_work_sync
                               __cancel_work_timer
                                   __flush_work
                                       start_flush_work
                                           might_sleep:
                                            (kernel/workqueue.c:2975: BUG)
    
    The solution is to separate out the freeing of the state owners
    from nfs4_purge_state_owners(), and perform that outside the atomic
    context.
    
    Reported-by: John Hubbard <jhubbard@nvidia.com>
    Fixes: 0aaaf5c424c7f ("NFS: Cache state owners after files are closed")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 49a4fda42e1ec2a14acb36c5456039dc51b67efa
Author: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
Date:   Wed Jul 31 15:25:59 2019 +0800

    can: peak_usb: force the string buffer NULL-terminated
    
    [ Upstream commit e787f19373b8a5fa24087800ed78314fd17b984a ]
    
    strncpy() does not ensure NULL-termination when the input string size
    equals to the destination buffer size IFNAMSIZ. The output string is
    passed to dev_info() which relies on the NULL-termination.
    
    Use strlcpy() instead.
    
    This issue is identified by a Coccinelle script.
    
    Signed-off-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d4e0946979c7bdbb0bb6dcb8493cea09435fd19
Author: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
Date:   Wed Jul 31 15:31:14 2019 +0800

    can: sja1000: force the string buffer NULL-terminated
    
    [ Upstream commit cd28aa2e056cd1ea79fc5f24eed0ce868c6cab5c ]
    
    strncpy() does not ensure NULL-termination when the input string size
    equals to the destination buffer size IFNAMSIZ. The output string
    'name' is passed to dev_info which relies on NULL-termination.
    
    Use strlcpy() instead.
    
    This issue is identified by a Coccinelle script.
    
    Signed-off-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47544863647fffad373a9b89505b448753ae6248
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Aug 1 16:26:42 2019 +0200

    perf bench numa: Fix cpu0 binding
    
    [ Upstream commit 6bbfe4e602691b90ac866712bd4c43c51e546a60 ]
    
    Michael reported an issue with perf bench numa failing with binding to
    cpu0 with '-0' option.
    
      # perf bench numa mem -p 3 -t 1 -P 512 -s 100 -zZcm0 --thp 1 -M 1 -ddd
      # Running 'numa/mem' benchmark:
    
       # Running main, "perf bench numa numa-mem -p 3 -t 1 -P 512 -s 100 -zZcm0 --thp 1 -M 1 -ddd"
      binding to node 0, mask: 0000000000000001 => -1
      perf: bench/numa.c:356: bind_to_memnode: Assertion `!(ret)' failed.
      Aborted (core dumped)
    
    This happens when the cpu0 is not part of node0, which is the benchmark
    assumption and we can see that's not the case for some powerpc servers.
    
    Using correct node for cpu0 binding.
    
    Reported-by: Michael Petlan <mpetlan@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/20190801142642.28004-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f67cdc613c5ca67269c027ca68b842e31c5f25bc
Author: Juliana Rodrigueiro <juliana.rodrigueiro@intra2net.com>
Date:   Wed Jul 31 15:17:23 2019 +0200

    isdn: hfcsusb: Fix mISDN driver crash caused by transfer buffer on the stack
    
    [ Upstream commit d8a1de3d5bb881507602bc02e004904828f88711 ]
    
    Since linux 4.9 it is not possible to use buffers on the stack for DMA transfers.
    
    During usb probe the driver crashes with "transfer buffer is on stack" message.
    
    This fix k-allocates a buffer to be used on "read_reg_atomic", which is a macro
    that calls "usb_control_msg" under the hood.
    
    Kernel 4.19 backtrace:
    
    usb_hcd_submit_urb+0x3e5/0x900
    ? sched_clock+0x9/0x10
    ? log_store+0x203/0x270
    ? get_random_u32+0x6f/0x90
    ? cache_alloc_refill+0x784/0x8a0
    usb_submit_urb+0x3b4/0x550
    usb_start_wait_urb+0x4e/0xd0
    usb_control_msg+0xb8/0x120
    hfcsusb_probe+0x6bc/0xb40 [hfcsusb]
    usb_probe_interface+0xc2/0x260
    really_probe+0x176/0x280
    driver_probe_device+0x49/0x130
    __driver_attach+0xa9/0xb0
    ? driver_probe_device+0x130/0x130
    bus_for_each_dev+0x5a/0x90
    driver_attach+0x14/0x20
    ? driver_probe_device+0x130/0x130
    bus_add_driver+0x157/0x1e0
    driver_register+0x51/0xe0
    usb_register_driver+0x5d/0x120
    ? 0xf81ed000
    hfcsusb_drv_init+0x17/0x1000 [hfcsusb]
    do_one_initcall+0x44/0x190
    ? free_unref_page_commit+0x6a/0xd0
    do_init_module+0x46/0x1c0
    load_module+0x1dc1/0x2400
    sys_init_module+0xed/0x120
    do_fast_syscall_32+0x7a/0x200
    entry_SYSENTER_32+0x6b/0xbe
    
    Signed-off-by: Juliana Rodrigueiro <juliana.rodrigueiro@intra2net.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2270c887deeaf4181d87a348abb3d9c05c48d3f2
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Fri Jul 26 16:27:36 2019 +0800

    isdn: mISDN: hfcsusb: Fix possible null-pointer dereferences in start_isoc_chain()
    
    [ Upstream commit a0d57a552b836206ad7705a1060e6e1ce5a38203 ]
    
    In start_isoc_chain(), usb_alloc_urb() on line 1392 may fail
    and return NULL. At this time, fifo->iso[i].urb is assigned to NULL.
    
    Then, fifo->iso[i].urb is used at some places, such as:
    LINE 1405:    fill_isoc_urb(fifo->iso[i].urb, ...)
                      urb->number_of_packets = num_packets;
                      urb->transfer_flags = URB_ISO_ASAP;
                      urb->actual_length = 0;
                      urb->interval = interval;
    LINE 1416:    fifo->iso[i].urb->...
    LINE 1419:    fifo->iso[i].urb->...
    
    Thus, possible null-pointer dereferences may occur.
    
    To fix these bugs, "continue" is added to avoid using fifo->iso[i].urb
    when it is NULL.
    
    These bugs are found by a static analysis tool STCheck written by us.
    
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bbed0360e4ac4eabc882999f4836df6cb0d0c13c
Author: Bob Ham <bob.ham@puri.sm>
Date:   Wed Jul 24 07:52:27 2019 -0700

    net: usb: qmi_wwan: Add the BroadMobi BM818 card
    
    [ Upstream commit 9a07406b00cdc6ec689dc142540739575c717f3c ]
    
    The BroadMobi BM818 M.2 card uses the QMI protocol
    
    Signed-off-by: Bob Ham <bob.ham@puri.sm>
    Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5102d6494f7440aee9820ae12086378ac316fb9b
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Jul 26 09:42:43 2019 +0300

    ASoC: ti: davinci-mcasp: Correct slot_width posed constraint
    
    [ Upstream commit 1e112c35e3c96db7c8ca6ddaa96574f00c06e7db ]
    
    The slot_width is a property for the bus while the constraint for
    SNDRV_PCM_HW_PARAM_SAMPLE_BITS is for the in memory format.
    
    Applying slot_width constraint to sample_bits works most of the time, but
    it will blacklist valid formats in some cases.
    
    With slot_width 24 we can support S24_3LE and S24_LE formats as they both
    look the same on the bus, but a a 24 constraint on sample_bits would not
    allow S24_LE as it is stored in 32bits in memory.
    
    Implement a simple hw_rule function to allow all formats which require less
    or equal number of bits on the bus as slot_width (if configured).
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/20190726064244.3762-2-peter.ujfalusi@ti.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65d02dfa34bf1be620c42dd0faf011a2bf91e20f
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Tue Jul 23 17:11:51 2019 -0500

    st_nci_hci_connectivity_event_received: null check the allocation
    
    [ Upstream commit 3008e06fdf0973770370f97d5f1fba3701d8281d ]
    
    devm_kzalloc may fail and return NULL. So the null check is needed.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 69f0dd8bc10f14dbfb76bc54e7dac9daab548a98
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Tue Jul 23 17:04:30 2019 -0500

    st21nfca_connectivity_event_received: null check the allocation
    
    [ Upstream commit 9891d06836e67324c9e9c4675ed90fc8b8110034 ]
    
    devm_kzalloc may fail and return null. So the null check is needed.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 400fc13eb06830885fa0d8427cc335840e5510b0
Author: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Date:   Mon Jun 24 08:34:13 2019 +0000

    can: dev: call netif_carrier_off() in register_candev()
    
    [ Upstream commit c63845609c4700488e5eacd6ab4d06d5d420e5ef ]
    
    CONFIG_CAN_LEDS is deprecated. When trying to use the generic netdev
    trigger as suggested, there's a small inconsistency with the link
    property: The LED is on initially, stays on when the device is brought
    up, and then turns off (as expected) when the device is brought down.
    
    Make sure the LED always reflects the state of the CAN device.
    
    Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31ab0498dd1bb0e0d7669fe945a5ef932a203762
Author: Thomas Falcon <tlfalcon@linux.ibm.com>
Date:   Tue Jul 16 17:25:10 2019 -0500

    bonding: Force slave speed check after link state recovery for 802.3ad
    
    [ Upstream commit 12185dfe44360f814ac4ead9d22ad2af7511b2e9 ]
    
    The following scenario was encountered during testing of logical
    partition mobility on pseries partitions with bonded ibmvnic
    adapters in LACP mode.
    
    1. Driver receives a signal that the device has been
       swapped, and it needs to reset to initialize the new
       device.
    
    2. Driver reports loss of carrier and begins initialization.
    
    3. Bonding driver receives NETDEV_CHANGE notifier and checks
       the slave's current speed and duplex settings. Because these
       are unknown at the time, the bond sets its link state to
       BOND_LINK_FAIL and handles the speed update, clearing
       AD_PORT_LACP_ENABLE.
    
    4. Driver finishes recovery and reports that the carrier is on.
    
    5. Bond receives a new notification and checks the speed again.
       The speeds are valid but miimon has not altered the link
       state yet.  AD_PORT_LACP_ENABLE remains off.
    
    Because the slave's link state is still BOND_LINK_FAIL,
    no further port checks are made when it recovers. Though
    the slave devices are operational and have valid speed
    and duplex settings, the bond will not send LACPDU's. The
    simplest fix I can see is to force another speed check
    in bond_miimon_commit. This way the bond will update
    AD_PORT_LACP_ENABLE if needed when transitioning from
    BOND_LINK_FAIL to BOND_LINK_UP.
    
    CC: Jarod Wilson <jarod@redhat.com>
    CC: Jay Vosburgh <j.vosburgh@gmail.com>
    CC: Veaceslav Falico <vfalico@gmail.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 156a434fc9e2fa820b2f4f776bdc2d211ccdd610
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Jul 18 09:43:33 2019 +0100

    ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks
    
    [ Upstream commit 8dd26dff00c0636b1d8621acaeef3f6f3a39dd77 ]
    
    DPCM uses snd_soc_dapm_dai_get_connected_widgets to build a
    list of the widgets connected to a specific front end DAI so it
    can search through this list for available back end DAIs. The
    custom_stop_condition was added to is_connected_ep to facilitate this
    list not containing more widgets than is necessary. Doing so both
    speeds up the DPCM handling as less widgets need to be searched and
    avoids issues with CODEC to CODEC links as these would be confused
    with back end DAIs if they appeared in the list of available widgets.
    
    custom_stop_condition was implemented by aborting the graph walk
    when the condition is triggered, however there is an issue with this
    approach. Whilst walking the graph is_connected_ep should update the
    endpoints cache on each widget, if the walk is aborted the number
    of attached end points is unknown for that sub-graph. When the stop
    condition triggered, the original patch ignored the triggering widget
    and returned zero connected end points; a later patch updated this
    to set the triggering widget's cache to 1 and return that. Both of
    these approaches result in inaccurate values being stored in various
    end point caches as the values propagate back through the graph,
    which can result in later issues with widgets powering/not powering
    unexpectedly.
    
    As the original goal was to reduce the size of the widget list passed
    to the DPCM code, the simplest solution is to limit the functionality
    of the custom_stop_condition to the widget list. This means the rest
    of the graph will still be processed resulting in correct end point
    caches, but only widgets up to the stop condition will be added to the
    returned widget list.
    
    Fixes: 6742064aef7f ("ASoC: dapm: support user-defined stop condition in dai_get_connected_widgets")
    Fixes: 5fdd022c2026 ("ASoC: dpcm: play nice with CODEC<->CODEC links")
    Fixes: 09464974eaa8 ("ASoC: dapm: Fix to return correct path list in is_connected_ep.")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20190718084333.15598-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c2ccc347e521ce7232d97c237c1fde8fd7556795
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Sat Jul 20 07:22:45 2019 -0500

    netfilter: ebtables: fix a memory leak bug in compat
    
    [ Upstream commit 15a78ba1844a8e052c1226f930133de4cef4e7ad ]
    
    In compat_do_replace(), a temporary buffer is allocated through vmalloc()
    to hold entries copied from the user space. The buffer address is firstly
    saved to 'newinfo->entries', and later on assigned to 'entries_tmp'. Then
    the entries in this temporary buffer is copied to the internal kernel
    structure through compat_copy_entries(). If this copy process fails,
    compat_do_replace() should be terminated. However, the allocated temporary
    buffer is not freed on this path, leading to a memory leak.
    
    To fix the bug, free the buffer before returning from compat_do_replace().
    
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f2a9a26761a7352335d53cbe00b9b36429492b2
Author: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Date:   Mon May 13 13:47:25 2019 +0200

    MIPS: kernel: only use i8253 clocksource with periodic clockevent
    
    [ Upstream commit a07e3324538a989b7cdbf2c679be6a7f9df2544f ]
    
    i8253 clocksource needs a free running timer. This could only
    be used, if i8253 clockevent is set up as periodic.
    
    Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
    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: linux-kernel@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18e5fad4787ec6c2a6632a8993a6fed63e4399e3
Author: Ilya Trukhanov <lahvuun@gmail.com>
Date:   Tue Jul 2 13:37:16 2019 +0300

    HID: Add 044f:b320 ThrustMaster, Inc. 2 in 1 DT
    
    [ Upstream commit 65f11c72780fa9d598df88def045ccb6a885cf80 ]
    
    Enable force feedback for the Thrustmaster Dual Trigger 2 in 1 Rumble Force
    gamepad. Compared to other Thrustmaster devices, left and right rumble
    motors here are swapped.
    
    Signed-off-by: Ilya Trukhanov <lahvuun@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
