commit 8bac50406cca10a219aa899243d49c57ddaf7c5b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 23 08:20:37 2020 +0100

    Linux 4.14.167

commit 9513f5a492b9e766eaac9aec0e573d070ba62af0
Author: Stephan Gerhold <stephan@gerhold.net>
Date:   Wed Nov 6 18:31:25 2019 +0100

    regulator: ab8500: Remove SYSCLKREQ from enum ab8505_regulator_id
    
    commit 458ea3ad033fc86e291712ce50cbe60c3428cf30 upstream.
    
    Those regulators are not actually supported by the AB8500 regulator
    driver. There is no ab8500_regulator_info for them and no entry in
    ab8505_regulator_match.
    
    As such, they cannot be registered successfully, and looking them
    up in ab8505_regulator_match causes an out-of-bounds array read.
    
    Fixes: 547f384f33db ("regulator: ab8500: add support for ab8505")
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20191106173125.14496-2-stephan@gerhold.net
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 376bbcf2718ee48cc020771b0d3057ad6a27eb93
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Oct 25 17:46:25 2019 +0900

    perf probe: Fix wrong address verification
    
    commit 07d369857808b7e8e471bbbbb0074a6718f89b31 upstream.
    
    Since there are some DIE which has only ranges instead of the
    combination of entrypc/highpc, address verification must use
    dwarf_haspc() instead of dwarf_entrypc/dwarf_highpc.
    
    Also, the ranges only DIE will have a partial code in different section
    (e.g. unlikely code will be in text.unlikely as "FUNC.cold" symbol). In
    that case, we can not use dwarf_entrypc() or die_entrypc(), because the
    offset from original DIE can be a minus value.
    
    Instead, this simply gets the symbol and offset from symtab.
    
    Without this patch;
    
      # perf probe -D clear_tasks_mm_cpumask:1
      Failed to get entry address of clear_tasks_mm_cpumask
        Error: Failed to add events.
    
    And with this patch:
    
      # perf probe -D clear_tasks_mm_cpumask:1
      p:probe/clear_tasks_mm_cpumask clear_tasks_mm_cpumask+0
      p:probe/clear_tasks_mm_cpumask_1 clear_tasks_mm_cpumask+5
      p:probe/clear_tasks_mm_cpumask_2 clear_tasks_mm_cpumask+8
      p:probe/clear_tasks_mm_cpumask_3 clear_tasks_mm_cpumask+16
      p:probe/clear_tasks_mm_cpumask_4 clear_tasks_mm_cpumask+82
    
    Committer testing:
    
    I managed to reproduce the above:
    
      [root@quaco ~]# perf probe -D clear_tasks_mm_cpumask:1
      p:probe/clear_tasks_mm_cpumask _text+919968
      p:probe/clear_tasks_mm_cpumask_1 _text+919973
      p:probe/clear_tasks_mm_cpumask_2 _text+919976
      [root@quaco ~]#
    
    But then when trying to actually put the probe in place, it fails if I
    use :0 as the offset:
    
      [root@quaco ~]# perf probe -L clear_tasks_mm_cpumask | head -5
      <clear_tasks_mm_cpumask@/usr/src/debug/kernel-5.2.fc30/linux-5.2.18-200.fc30.x86_64/kernel/cpu.c:0>
            0  void clear_tasks_mm_cpumask(int cpu)
            1  {
            2       struct task_struct *p;
    
      [root@quaco ~]# perf probe clear_tasks_mm_cpumask:0
      Probe point 'clear_tasks_mm_cpumask' not found.
        Error: Failed to add events.
      [root@quaco
    
    The next patch is needed to fix this case.
    
    Fixes: 576b523721b7 ("perf probe: Fix probing symbols with optimization suffix")
    Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lore.kernel.org/lkml/157199318513.8075.10463906803299647907.stgit@devnote2
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1958113a576a0d9d88f267f64fb2167dfb649d0e
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri Nov 1 14:14:47 2019 -0700

    scsi: core: scsi_trace: Use get_unaligned_be*()
    
    commit b1335f5b0486f61fb66b123b40f8e7a98e49605d upstream.
    
    This patch fixes an unintended sign extension on left shifts. From Colin
    King: "Shifting a u8 left will cause the value to be promoted to an
    integer. If the top bit of the u8 is set then the following conversion to
    an u64 will sign extend the value causing the upper 32 bits to be set in
    the result."
    
    Fix this by using get_unaligned_be*() instead.
    
    Fixes: bf8162354233 ("[SCSI] add scsi trace core functions and put trace points")
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Douglas Gilbert <dgilbert@interlog.com>
    Link: https://lore.kernel.org/r/20191101211447.187151-1-bvanassche@acm.org
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12b61fb73c7c02ba89b722d95a25619473684ff8
Author: Martin Wilck <mwilck@suse.com>
Date:   Fri Nov 22 22:19:22 2019 +0000

    scsi: qla2xxx: fix rports not being mark as lost in sync fabric scan
    
    commit d341e9a8f2cffe4000c610225c629f62c7489c74 upstream.
    
    In qla2x00_find_all_fabric_devs(), fcport->flags & FCF_LOGIN_NEEDED is a
    necessary condition for logging into new rports, but not for dropping lost
    ones.
    
    Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery")
    Link: https://lore.kernel.org/r/20191122221912.20100-2-martin.wilck@suse.com
    Tested-by: David Bond <dbond@suse.com>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Acked-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba0ef168a2635cb1c80b30c185ddf06366223e11
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 21 13:40:47 2019 +0800

    scsi: qla2xxx: Fix qla2x00_request_irqs() for MSI
    
    commit 45dc8f2d9c94ed74a5e31e63e9136a19a7e16081 upstream.
    
    Commit 4fa183455988 ("scsi: qla2xxx: Utilize pci_alloc_irq_vectors/
    pci_free_irq_vectors calls.") use pci_alloc_irq_vectors() to replace
    pci_enable_msi() but it didn't handle the return value correctly. This bug
    make qla2x00 always fail to setup MSI if MSI-X fail, so fix it.
    
    BTW, improve the log message of return value in qla2x00_request_irqs() to
    avoid confusion.
    
    Fixes: 4fa183455988 ("scsi: qla2xxx: Utilize pci_alloc_irq_vectors/pci_free_irq_vectors calls.")
    Cc: Michael Hernandez <michael.hernandez@cavium.com>
    Link: https://lore.kernel.org/r/1574314847-14280-1-git-send-email-chenhc@lemote.com
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Acked-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cb816cf0e2409d669be267a998fce3cf0e5690b
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Nov 7 13:55:25 2019 -0800

    scsi: target: core: Fix a pr_debug() argument
    
    commit c941e0d172605731de9b4628bd4146d35cf2e7d6 upstream.
    
    Print the string for which conversion failed instead of printing the
    function name twice.
    
    Fixes: 2650d71e244f ("target: move transport ID handling to the core")
    Cc: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20191107215525.64415-1-bvanassche@acm.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bf34ef5202275b5515a5756b59e10094b4965fe
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 6 20:32:21 2019 +0800

    scsi: bnx2i: fix potential use after free
    
    commit 29d28f2b8d3736ac61c28ef7e20fda63795b74d9 upstream.
    
    The member hba->pcidev may be used after its reference is dropped. Move the
    put function to where it is never used to avoid potential use after free
    issues.
    
    Fixes: a77171806515 ("[SCSI] bnx2i: Removed the reference to the netdev->base_addr")
    Link: https://lore.kernel.org/r/1573043541-19126-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f88c50ceca6d4cc777b3f6e0d49c4cdcfc7b67f6
Author: Pan Bian <bianpan2016@163.com>
Date:   Tue Nov 5 17:25:27 2019 +0800

    scsi: qla4xxx: fix double free bug
    
    commit 3fe3d2428b62822b7b030577cd612790bdd8c941 upstream.
    
    The variable init_fw_cb is released twice, resulting in a double free
    bug. The call to the function dma_free_coherent() before goto is removed to
    get rid of potential double free.
    
    Fixes: 2a49a78ed3c8 ("[SCSI] qla4xxx: added IPv6 support.")
    Link: https://lore.kernel.org/r/1572945927-27796-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf94a6aa2aace00d656389d44375a124892a77ed
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Oct 22 13:23:24 2019 +0300

    scsi: esas2r: unlock on error in esas2r_nvram_read_direct()
    
    commit 906ca6353ac09696c1bf0892513c8edffff5e0a6 upstream.
    
    This error path is missing an unlock.
    
    Fixes: 26780d9e12ed ("[SCSI] esas2r: ATTO Technology ExpressSAS 6G SAS/SATA RAID Adapter Driver")
    Link: https://lore.kernel.org/r/20191022102324.GA27540@mwanda
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6c6d170f947638e45166efc3e13e97a70067460
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed Jan 15 13:00:59 2020 -0500

    reiserfs: fix handling of -EOPNOTSUPP in reiserfs_for_each_xattr
    
    commit 394440d469413fa9b74f88a11f144d76017221f2 upstream.
    
    Commit 60e4cf67a58 (reiserfs: fix extended attributes on the root
    directory) introduced a regression open_xa_root started returning
    -EOPNOTSUPP but it was not handled properly in reiserfs_for_each_xattr.
    
    When the reiserfs module is built without CONFIG_REISERFS_FS_XATTR,
    deleting an inode would result in a warning and chowning an inode
    would also result in a warning and then fail to complete.
    
    With CONFIG_REISERFS_FS_XATTR enabled, the xattr root would always be
    present for read-write operations.
    
    This commit handles -EOPNOSUPP in the same way -ENODATA is handled.
    
    Fixes: 60e4cf67a582 ("reiserfs: fix extended attributes on the root directory")
    CC: stable@vger.kernel.org      # Commit 60e4cf67a58 was picked up by stable
    Link: https://lore.kernel.org/r/20200115180059.6935-1-jeffm@suse.com
    Reported-by: Michael Brunnbauer <brunni@netestate.de>
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f2b5f109b247d5afe50d28c93efba9ec8f61be5
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Thu Nov 28 15:33:57 2019 +0000

    Revert "arm64: dts: juno: add dma-ranges property"
    
    commit 54fb3fe0f211d4729a2551cf9497bd612189af9d upstream.
    
    This reverts commit 193d00a2b35ee3353813b4006a18131122087205.
    
    Commit 951d48855d86 ("of: Make of_dma_get_range() work on bus nodes")
    reworked the logic such that of_dma_get_range() works correctly
    starting from a bus node containing "dma-ranges".
    
    Since on Juno we don't have a SoC level bus node and "dma-ranges" is
    present only in the root node, we get the following error:
    
    OF: translation of DMA address(0) to CPU address failed node(/sram@2e000000)
    OF: translation of DMA address(0) to CPU address failed node(/uart@7ff80000)
    ...
    OF: translation of DMA address(0) to CPU address failed node(/mhu@2b1f0000)
    OF: translation of DMA address(0) to CPU address failed node(/iommu@2b600000)
    OF: translation of DMA address(0) to CPU address failed node(/iommu@2b600000)
    OF: translation of DMA address(0) to CPU address failed node(/iommu@2b600000)
    
    So let's fix it by dropping the "dma-ranges" property for now. This
    should be fine since it doesn't represent any kind of device-visible
    restriction; it was only there for completeness, and we've since given
    in to the assumption that missing "dma-ranges" implies a 1:1 mapping
    anyway.
    
    We can add it later with a proper SoC bus node and moving all the
    devices that belong there along with the "dma-ranges" if required.
    
    Fixes: 193d00a2b35e ("arm64: dts: juno: add dma-ranges property")
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: Liviu Dudau <liviu.dudau@arm.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f32935bcfd73851138595e25351f2139ded24fc7
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Dec 4 20:56:19 2019 -0800

    tick/sched: Annotate lockless access to last_jiffies_update
    
    commit de95a991bb72e009f47e0c4bbc90fc5f594588d5 upstream.
    
    syzbot (KCSAN) reported a data-race in tick_do_update_jiffies64():
    
    BUG: KCSAN: data-race in tick_do_update_jiffies64 / tick_do_update_jiffies64
    
    write to 0xffffffff8603d008 of 8 bytes by interrupt on cpu 1:
     tick_do_update_jiffies64+0x100/0x250 kernel/time/tick-sched.c:73
     tick_sched_do_timer+0xd4/0xe0 kernel/time/tick-sched.c:138
     tick_sched_timer+0x43/0xe0 kernel/time/tick-sched.c:1292
     __run_hrtimer kernel/time/hrtimer.c:1514 [inline]
     __hrtimer_run_queues+0x274/0x5f0 kernel/time/hrtimer.c:1576
     hrtimer_interrupt+0x22a/0x480 kernel/time/hrtimer.c:1638
     local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1110 [inline]
     smp_apic_timer_interrupt+0xdc/0x280 arch/x86/kernel/apic/apic.c:1135
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
     arch_local_irq_restore arch/x86/include/asm/paravirt.h:756 [inline]
     kcsan_setup_watchpoint+0x1d4/0x460 kernel/kcsan/core.c:436
     check_access kernel/kcsan/core.c:466 [inline]
     __tsan_read1 kernel/kcsan/core.c:593 [inline]
     __tsan_read1+0xc2/0x100 kernel/kcsan/core.c:593
     kallsyms_expand_symbol.constprop.0+0x70/0x160 kernel/kallsyms.c:79
     kallsyms_lookup_name+0x7f/0x120 kernel/kallsyms.c:170
     insert_report_filterlist kernel/kcsan/debugfs.c:155 [inline]
     debugfs_write+0x14b/0x2d0 kernel/kcsan/debugfs.c:256
     full_proxy_write+0xbd/0x100 fs/debugfs/file.c:225
     __vfs_write+0x67/0xc0 fs/read_write.c:494
     vfs_write fs/read_write.c:558 [inline]
     vfs_write+0x18a/0x390 fs/read_write.c:542
     ksys_write+0xd5/0x1b0 fs/read_write.c:611
     __do_sys_write fs/read_write.c:623 [inline]
     __se_sys_write fs/read_write.c:620 [inline]
     __x64_sys_write+0x4c/0x60 fs/read_write.c:620
     do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    read to 0xffffffff8603d008 of 8 bytes by task 0 on cpu 0:
     tick_do_update_jiffies64+0x2b/0x250 kernel/time/tick-sched.c:62
     tick_nohz_update_jiffies kernel/time/tick-sched.c:505 [inline]
     tick_nohz_irq_enter kernel/time/tick-sched.c:1257 [inline]
     tick_irq_enter+0x139/0x1c0 kernel/time/tick-sched.c:1274
     irq_enter+0x4f/0x60 kernel/softirq.c:354
     entering_irq arch/x86/include/asm/apic.h:517 [inline]
     entering_ack_irq arch/x86/include/asm/apic.h:523 [inline]
     smp_apic_timer_interrupt+0x55/0x280 arch/x86/kernel/apic/apic.c:1133
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
     native_safe_halt+0xe/0x10 arch/x86/include/asm/irqflags.h:60
     arch_cpu_idle+0xa/0x10 arch/x86/kernel/process.c:571
     default_idle_call+0x1e/0x40 kernel/sched/idle.c:94
     cpuidle_idle_call kernel/sched/idle.c:154 [inline]
     do_idle+0x1af/0x280 kernel/sched/idle.c:263
     cpu_startup_entry+0x1b/0x20 kernel/sched/idle.c:355
     rest_init+0xec/0xf6 init/main.c:452
     arch_call_rest_init+0x17/0x37
     start_kernel+0x838/0x85e init/main.c:786
     x86_64_start_reservations+0x29/0x2b arch/x86/kernel/head64.c:490
     x86_64_start_kernel+0x72/0x76 arch/x86/kernel/head64.c:471
     secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:241
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc7+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Use READ_ONCE() and WRITE_ONCE() to annotate this expected race.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20191205045619.204946-1-edumazet@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 162b3b1a0b10e5cefc4c8b83f766b54ab2e43b39
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jan 13 12:53:59 2020 +0100

    cfg80211: check for set_wiphy_params
    
    commit 24953de0a5e31dcca7e82c8a3c79abc2dfe8fb6e upstream.
    
    Check if set_wiphy_params is assigned and return an error if not,
    some drivers (e.g. virt_wifi where syzbot reported it) don't have
    it.
    
    Reported-by: syzbot+e8a797964a4180eb57d5@syzkaller.appspotmail.com
    Reported-by: syzbot+34b582cf32c1db008f8e@syzkaller.appspotmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20200113125358.ac07f276efff.Ibd85ee1b12e47b9efb00a2adc5cd3fac50da791a@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bde97eaa4b3686910a066b024595e1ffac202b1a
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Mon Sep 9 19:01:22 2019 +0400

    arm64: dts: meson-gxl-s905x-khadas-vim: fix gpio-keys-polled node
    
    commit d5f6fa904ecbadbb8e9fa6302b0fc165bec0559a upstream.
    
    Fix DTC warnings:
    
    arch/arm/dts/meson-gxl-s905x-khadas-vim.dtb: Warning (avoid_unnecessary_addr_size):
       /gpio-keys-polled: unnecessary #address-cells/#size-cells
          without "ranges" or child "reg" property
    
    Fixes: e15d2774b8c0 ("ARM64: dts: meson-gxl: add support for the Khadas VIM board")
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5a62384b51cc1f37d7eae781283696557f56d10
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Oct 1 14:45:01 2019 +0300

    cw1200: Fix a signedness bug in cw1200_load_firmware()
    
    commit 4a50d454502f1401171ff061a5424583f91266db upstream.
    
    The "priv->hw_type" is an enum and in this context GCC will treat it
    as an unsigned int so the error handling will never trigger.
    
    Fixes: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6adce8341393aa6bd7d51d23eb2c93aef91ea7cd
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 13:14:44 2019 -0700

    xen/blkfront: Adjust indentation in xlvbd_alloc_gendisk
    
    commit 589b72894f53124a39d1bb3c0cecaf9dcabac417 upstream.
    
    Clang warns:
    
    ../drivers/block/xen-blkfront.c:1117:4: warning: misleading indentation;
    statement is not part of the previous 'if' [-Wmisleading-indentation]
                    nr_parts = PARTS_PER_DISK;
                    ^
    ../drivers/block/xen-blkfront.c:1115:3: note: previous statement is here
                    if (err)
                    ^
    
    This is because there is a space at the beginning of this line; remove
    it so that the indentation is consistent according to the Linux kernel
    coding style and clang no longer warns.
    
    While we are here, the previous line has some trailing whitespace; clean
    that up as well.
    
    Fixes: c80a420995e7 ("xen-blkfront: handle Xen major numbers other than XENVBD")
    Link: https://github.com/ClangBuiltLinux/linux/issues/791
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43dfcc773511174d8b1650fd594d9e667e43a47d
Author: Pengcheng Yang <yangpc@wangsu.com>
Date:   Tue Jan 14 17:23:40 2020 +0800

    tcp: fix marked lost packets not being retransmitted
    
    [ Upstream commit e176b1ba476cf36f723cfcc7a9e57f3cb47dec70 ]
    
    When the packet pointed to by retransmit_skb_hint is unlinked by ACK,
    retransmit_skb_hint will be set to NULL in tcp_clean_rtx_queue().
    If packet loss is detected at this time, retransmit_skb_hint will be set
    to point to the current packet loss in tcp_verify_retransmit_hint(),
    then the packets that were previously marked lost but not retransmitted
    due to the restriction of cwnd will be skipped and cannot be
    retransmitted.
    
    To fix this, when retransmit_skb_hint is NULL, retransmit_skb_hint can
    be reset only after all marked lost packets are retransmitted
    (retrans_out >= lost_out), otherwise we need to traverse from
    tcp_rtx_queue_head in tcp_xmit_retransmit_queue().
    
    Packetdrill to demonstrate:
    
    // Disable RACK and set max_reordering to keep things simple
        0 `sysctl -q net.ipv4.tcp_recovery=0`
       +0 `sysctl -q net.ipv4.tcp_max_reordering=3`
    
    // Establish a connection
       +0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
       +0 bind(3, ..., ...) = 0
       +0 listen(3, 1) = 0
    
      +.1 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
       +0 > S. 0:0(0) ack 1 <...>
     +.01 < . 1:1(0) ack 1 win 257
       +0 accept(3, ..., ...) = 4
    
    // Send 8 data segments
       +0 write(4, ..., 8000) = 8000
       +0 > P. 1:8001(8000) ack 1
    
    // Enter recovery and 1:3001 is marked lost
     +.01 < . 1:1(0) ack 1 win 257 <sack 3001:4001,nop,nop>
       +0 < . 1:1(0) ack 1 win 257 <sack 5001:6001 3001:4001,nop,nop>
       +0 < . 1:1(0) ack 1 win 257 <sack 5001:7001 3001:4001,nop,nop>
    
    // Retransmit 1:1001, now retransmit_skb_hint points to 1001:2001
       +0 > . 1:1001(1000) ack 1
    
    // 1001:2001 was ACKed causing retransmit_skb_hint to be set to NULL
     +.01 < . 1:1(0) ack 2001 win 257 <sack 5001:8001 3001:4001,nop,nop>
    // Now retransmit_skb_hint points to 4001:5001 which is now marked lost
    
    // BUG: 2001:3001 was not retransmitted
       +0 > . 2001:3001(1000) ack 1
    
    Signed-off-by: Pengcheng Yang <yangpc@wangsu.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Tested-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b7b68bd78b45e4e77b48cab2d40d769a5f67754
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 14 09:27:29 2020 +0100

    r8152: add missing endpoint sanity check
    
    [ Upstream commit 86f3f4cd53707ceeec079b83205c8d3c756eca93 ]
    
    Add missing endpoint sanity check to probe in order to prevent a
    NULL-pointer dereference (or slab out-of-bounds access) when retrieving
    the interrupt-endpoint bInterval on ndo_open() in case a device lacks
    the expected endpoints.
    
    Fixes: 40a82917b1d3 ("net/usb/r8152: enable interrupt transfer")
    Cc: hayeswang <hayeswang@realtek.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a05776cb7264cd3515980d034f50b7ef110239a8
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Mon Jan 13 14:00:09 2020 +0100

    ptp: free ptp device pin descriptors properly
    
    [ Upstream commit 75718584cb3c64e6269109d4d54f888ac5a5fd15 ]
    
    There is a bug in ptp_clock_unregister(), where ptp_cleanup_pin_groups()
    first frees ptp->pin_{,dev_}attr, but then posix_clock_unregister() needs
    them to destroy a related sysfs device.
    
    These functions can not be just swapped, as posix_clock_unregister() frees
    ptp which is needed in the ptp_cleanup_pin_groups(). Fix this by calling
    ptp_cleanup_pin_groups() in ptp_clock_release(), right before ptp is freed.
    
    This makes this patch fix an UAF bug in a patch which fixes an UAF bug.
    
    Reported-by: Antti Laakso <antti.laakso@intel.com>
    Fixes: a33121e5487b ("ptp: fix the race between the release of ptp_clock and cdev")
    Link: https://lore.kernel.org/netdev/3d2bd09735dbdaf003585ca376b7c1e5b69a19bd.camel@intel.com/
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d14f54ff5ed255f0fae840501b1eb0be6993aced
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jan 14 14:54:48 2020 +0000

    net/wan/fsl_ucc_hdlc: fix out of bounds write on array utdm_info
    
    [ Upstream commit ddf420390526ede3b9ff559ac89f58cb59d9db2f ]
    
    Array utdm_info is declared as an array of MAX_HDLC_NUM (4) elements
    however up to UCC_MAX_NUM (8) elements are potentially being written
    to it.  Currently we have an array out-of-bounds write error on the
    last 4 elements. Fix this by making utdm_info UCC_MAX_NUM elements in
    size.
    
    Addresses-Coverity: ("Out-of-bounds write")
    Fixes: c19b6d246a35 ("drivers/net: support hdlc function for QE-UCC")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ebdc211ed5c22389a5baa3e181dd99884154b30
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jan 13 09:27:11 2020 -0800

    net: usb: lan78xx: limit size of local TSO packets
    
    [ Upstream commit f8d7408a4d7f60f8b2df0f81decdc882dd9c20dc ]
    
    lan78xx_tx_bh() makes sure to not exceed MAX_SINGLE_PACKET_SIZE
    bytes in the aggregated packets it builds, but does
    nothing to prevent large GSO packets being submitted.
    
    Pierre-Francois reported various hangs when/if TSO is enabled.
    
    For localy generated packets, we can use netif_set_gso_max_size()
    to limit the size of TSO packets.
    
    Note that forwarded packets could still hit the issue,
    so a complete fix might require implementing .ndo_features_check
    for this driver, forcing a software segmentation if the size
    of the TSO packet exceeds MAX_SINGLE_PACKET_SIZE.
    
    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: RENARD Pierre-Francois <pfrenard@gmail.com>
    Tested-by: RENARD Pierre-Francois <pfrenard@gmail.com>
    Cc: Stefan Wahren <stefan.wahren@i2se.com>
    Cc: Woojung Huh <woojung.huh@microchip.com>
    Cc: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56cffa965c195cf64f8c1f40ac8f3f897d59f08c
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Thu Jan 16 15:41:17 2020 +0800

    net: hns: fix soft lockup when there is not enough memory
    
    [ Upstream commit 49edd6a2c456150870ddcef5b7ed11b21d849e13 ]
    
    When there is not enough memory and napi_alloc_skb() return NULL,
    the HNS driver will print error message, and than try again, if
    the memory is not enough for a while, huge error message and the
    retry operation will cause soft lockup.
    
    When napi_alloc_skb() return NULL because of no memory, we can
    get a warn_alloc() call trace, so this patch deletes the error
    message. We already use polling mode to handle irq, but the
    retry operation will render the polling weight inactive, this
    patch just return budget when the rx is not completed to avoid
    dead loop.
    
    Fixes: 36eedfde1a36 ("net: hns: Optimize hns_nic_common_poll for better performance")
    Fixes: b5996f11ea54 ("net: add Hisilicon Network Subsystem basic ethernet support")
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9a80cf49026b21729eac485fbe3dad2728c75e0
Author: Alexander Lobakin <alobakin@dlink.ru>
Date:   Wed Jan 15 11:56:52 2020 +0300

    net: dsa: tag_qca: fix doubled Tx statistics
    
    [ Upstream commit bd5874da57edd001b35cf28ae737779498c16a56 ]
    
    DSA subsystem takes care of netdev statistics since commit 4ed70ce9f01c
    ("net: dsa: Refactor transmit path to eliminate duplication"), so
    any accounting inside tagger callbacks is redundant and can lead to
    messing up the stats.
    This bug is present in Qualcomm tagger since day 0.
    
    Fixes: cafdc45c949b ("net-next: dsa: add Qualcomm tag RX/TX handler")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Alexander Lobakin <alobakin@dlink.ru>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1eb61dd2b1c4d3a3b23dd824ba71c877caba18c
Author: Mohammed Gamal <mgamal@redhat.com>
Date:   Tue Jan 14 15:09:50 2020 +0200

    hv_netvsc: Fix memory leak when removing rndis device
    
    [ Upstream commit 536dc5df2808efbefc5acee334d3c4f701790ec0 ]
    
    kmemleak detects the following memory leak when hot removing
    a network device:
    
    unreferenced object 0xffff888083f63600 (size 256):
      comm "kworker/0:1", pid 12, jiffies 4294831717 (age 1113.676s)
      hex dump (first 32 bytes):
        00 40 c7 33 80 88 ff ff 00 00 00 00 10 00 00 00  .@.3............
        00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
      backtrace:
        [<00000000d4a8f5be>] rndis_filter_device_add+0x117/0x11c0 [hv_netvsc]
        [<000000009c02d75b>] netvsc_probe+0x5e7/0xbf0 [hv_netvsc]
        [<00000000ddafce23>] vmbus_probe+0x74/0x170 [hv_vmbus]
        [<00000000046e64f1>] really_probe+0x22f/0xb50
        [<000000005cc35eb7>] driver_probe_device+0x25e/0x370
        [<0000000043c642b2>] bus_for_each_drv+0x11f/0x1b0
        [<000000005e3d09f0>] __device_attach+0x1c6/0x2f0
        [<00000000a72c362f>] bus_probe_device+0x1a6/0x260
        [<0000000008478399>] device_add+0x10a3/0x18e0
        [<00000000cf07b48c>] vmbus_device_register+0xe7/0x1e0 [hv_vmbus]
        [<00000000d46cf032>] vmbus_add_channel_work+0x8ab/0x1770 [hv_vmbus]
        [<000000002c94bb64>] process_one_work+0x919/0x17d0
        [<0000000096de6781>] worker_thread+0x87/0xb40
        [<00000000fbe7397e>] kthread+0x333/0x3f0
        [<000000004f844269>] ret_from_fork+0x3a/0x50
    
    rndis_filter_device_add() allocates an instance of struct rndis_device
    which never gets deallocated as rndis_filter_device_remove() sets
    net_device->extension which points to the rndis_device struct to NULL,
    leaving the rndis_device dangling.
    
    Since net_device->extension is eventually freed in free_netvsc_device(),
    we refrain from setting it to NULL inside rndis_filter_device_remove()
    
    Signed-off-by: Mohammed Gamal <mgamal@redhat.com>
    Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93c81624bb12329445e76a88dbb45ac0ef55d152
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 14 13:00:35 2020 -0800

    macvlan: use skb_reset_mac_header() in macvlan_queue_xmit()
    
    [ Upstream commit 1712b2fff8c682d145c7889d2290696647d82dab ]
    
    I missed the fact that macvlan_broadcast() can be used both
    in RX and TX.
    
    skb_eth_hdr() makes only sense in TX paths, so we can not
    use it blindly in macvlan_broadcast()
    
    Fixes: 96cc4b69581d ("macvlan: do not assume mac_header is set in macvlan_broadcast()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Jurgen Van Ham <juvanham@gmail.com>
    Tested-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83bd51eb8f992b64711c2402dd9f78cbea35b946
Author: Sven Eckelmann <sven@narfation.org>
Date:   Thu Nov 28 12:25:45 2019 +0100

    batman-adv: Fix DAT candidate selection on little endian systems
    
    commit 4cc4a1708903f404d2ca0dfde30e71e052c6cbc9 upstream.
    
    The distributed arp table is using a DHT to store and retrieve MAC address
    information for an IP address. This is done using unicast messages to
    selected peers. The potential peers are looked up using the IP address and
    the VID.
    
    While the IP address is always stored in big endian byte order, this is not
    the case of the VID. It can (depending on the host system) either be big
    endian or little endian. The host must therefore always convert it to big
    endian to ensure that all devices calculate the same peers for the same
    lookup data.
    
    Fixes: be1db4f6615b ("batman-adv: make the Distributed ARP Table vlan aware")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dc70c6ea87a0df09116b8b5739944f8525d48c7
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 13 18:23:58 2020 +0100

    NFC: pn533: fix bulk-message timeout
    
    commit a112adafcb47760feff959ee1ecd10b74d2c5467 upstream.
    
    The driver was doing a synchronous uninterruptible bulk-transfer without
    using a timeout. This could lead to the driver hanging on probe due to a
    malfunctioning (or malicious) device until the device is physically
    disconnected. While sleeping in probe the driver prevents other devices
    connected to the same hub from being added to (or removed from) the bus.
    
    An arbitrary limit of five seconds should be more than enough.
    
    Fixes: dbafc28955fa ("NFC: pn533: don't send USB data off of the stack")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4130fabf9ed246d35108182bb1e444d4ceeccff7
Author: Florian Westphal <fw@strlen.de>
Date:   Sat Jan 11 23:19:53 2020 +0100

    netfilter: arp_tables: init netns pointer in xt_tgdtor_param struct
    
    commit 212e7f56605ef9688d0846db60c6c6ec06544095 upstream.
    
    An earlier commit (1b789577f655060d98d20e,
    "netfilter: arp_tables: init netns pointer in xt_tgchk_param struct")
    fixed missing net initialization for arptables, but turns out it was
    incomplete.  We can get a very similar struct net NULL deref during
    error unwinding:
    
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    RIP: 0010:xt_rateest_put+0xa1/0x440 net/netfilter/xt_RATEEST.c:77
     xt_rateest_tg_destroy+0x72/0xa0 net/netfilter/xt_RATEEST.c:175
     cleanup_entry net/ipv4/netfilter/arp_tables.c:509 [inline]
     translate_table+0x11f4/0x1d80 net/ipv4/netfilter/arp_tables.c:587
     do_replace net/ipv4/netfilter/arp_tables.c:981 [inline]
     do_arpt_set_ctl+0x317/0x650 net/ipv4/netfilter/arp_tables.c:1461
    
    Also init the netns pointer in xt_tgdtor_param struct.
    
    Fixes: add67461240c1d ("netfilter: add struct net * to target parameters")
    Reported-by: syzbot+91bdd8eece0f6629ec8b@syzkaller.appspotmail.com
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 071b66b3808260ab35b725fc9f7e5466637a2b9e
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Jan 10 11:53:08 2020 -0800

    netfilter: fix a use-after-free in mtype_destroy()
    
    commit c120959387efa51479056fd01dc90adfba7a590c upstream.
    
    map->members is freed by ip_set_free() right before using it in
    mtype_ext_cleanup() again. So we just have to move it down.
    
    Reported-by: syzbot+4c3cc6dbe7259dbf9054@syzkaller.appspotmail.com
    Fixes: 40cd63bf33b2 ("netfilter: ipset: Support extensions which need a per data destroy function")
    Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99e739733fd2794ad9b27d99294061e756046ae2
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Jan 13 19:21:07 2020 +0100

    cfg80211: fix page refcount issue in A-MSDU decap
    
    commit 81c044fc3bdc5b7be967cd3682528ea94b58c06a upstream.
    
    The fragments attached to a skb can be part of a compound page. In that case,
    page_ref_inc will increment the refcount for the wrong page. Fix this by
    using get_page instead, which calls page_ref_inc on the compound head and
    also checks for overflow.
    
    Fixes: 2b67f944f88c ("cfg80211: reuse existing page fragments in A-MSDU rx")
    Cc: stable@vger.kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Link: https://lore.kernel.org/r/20200113182107.20461-1-nbd@nbd.name
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9510f18a019aa30d50d499fdae1176183132368c
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Wed Nov 20 09:15:17 2019 -0600

    arm64: dts: agilex/stratix10: fix pmu interrupt numbers
    
    [ Upstream commit 210de0e996aee8e360ccc9e173fe7f0a7ed2f695 ]
    
    Fix up the correct interrupt numbers for the PMU unit on Agilex
    and Stratix10.
    
    Fixes: 78cd6a9d8e15 ("arm64: dts: Add base stratix 10 dtsi")
    Cc: linux-stable <stable@vger.kernel.org>
    Reported-by: Meng Li <Meng.Li@windriver.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae6f36741273f59e0a0c9f1388461ee5d101b2b9
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Mon Jan 13 16:29:10 2020 -0800

    mm/huge_memory.c: thp: fix conflict of above-47bit hint address and PMD alignment
    
    [ Upstream commit 97d3d0f9a1cf132c63c0b8b8bd497b8a56283dd9 ]
    
    Patch series "Fix two above-47bit hint address vs.  THP bugs".
    
    The two get_unmapped_area() implementations have to be fixed to provide
    THP-friendly mappings if above-47bit hint address is specified.
    
    This patch (of 2):
    
    Filesystems use thp_get_unmapped_area() to provide THP-friendly
    mappings.  For DAX in particular.
    
    Normally, the kernel doesn't create userspace mappings above 47-bit,
    even if the machine allows this (such as with 5-level paging on x86-64).
    Not all user space is ready to handle wide addresses.  It's known that
    at least some JIT compilers use higher bits in pointers to encode their
    information.
    
    Userspace can ask for allocation from full address space by specifying
    hint address (with or without MAP_FIXED) above 47-bits.  If the
    application doesn't need a particular address, but wants to allocate
    from whole address space it can specify -1 as a hint address.
    
    Unfortunately, this trick breaks thp_get_unmapped_area(): the function
    would not try to allocate PMD-aligned area if *any* hint address
    specified.
    
    Modify the routine to handle it correctly:
    
     - Try to allocate the space at the specified hint address with length
       padding required for PMD alignment.
     - If failed, retry without length padding (but with the same hint
       address);
     - If the returned address matches the hint address return it.
     - Otherwise, align the address as required for THP and return.
    
    The user specified hint address is passed down to get_unmapped_area() so
    above-47bit hint address will be taken into account without breaking
    alignment requirements.
    
    Link: http://lkml.kernel.org/r/20191220142548.7118-2-kirill.shutemov@linux.intel.com
    Fixes: b569bab78d8d ("x86/mm: Prepare to expose larger address space to userspace")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Thomas Willhalm <thomas.willhalm@intel.com>
    Tested-by: Dan Williams <dan.j.williams@intel.com>
    Cc: "Aneesh Kumar K . V" <aneesh.kumar@linux.vnet.ibm.com>
    Cc: "Bruggeman, Otto G" <otto.g.bruggeman@intel.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 26da70406bd88d5c65d7ec79b01888771756c6a8
Author: Bharath Vedartham <linux.bhar@gmail.com>
Date:   Mon May 13 17:23:17 2019 -0700

    mm/huge_memory.c: make __thp_get_unmapped_area static
    
    [ Upstream commit b3b07077b01ecbbd98efede778c195567de25b71 ]
    
    __thp_get_unmapped_area is only used in mm/huge_memory.c.  Make it static.
    Tested by building and booting the kernel.
    
    Link: http://lkml.kernel.org/r/20190504102353.GA22525@bharath12345-Inspiron-5559
    Signed-off-by: Bharath Vedartham <linux.bhar@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.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 abde18153f831447c61fbef12dd331aa9998cf1f
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:23 2020 +0100

    USB: serial: io_edgeport: handle unbound ports on URB completion
    
    [ Upstream commit e37d1aeda737a20b1846a91a3da3f8b0f00cf690 ]
    
    Check for NULL port data in the shared interrupt and bulk completion
    callbacks to avoid dereferencing a NULL pointer in case a device sends
    data for a port device which isn't bound to a driver (e.g. due to a
    malicious device having unexpected endpoints or after an allocation
    failure on port probe).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12b803e03d3156aa83f9446c91551da72233bf5e
Author: John Ogness <john.ogness@linutronix.de>
Date:   Sun Jun 24 00:32:06 2018 +0200

    USB: serial: io_edgeport: use irqsave() in USB's complete callback
    
    [ Upstream commit dd1fae527612543e560e84f2eba4f6ef2006ac55 ]
    
    The USB completion callback does not disable interrupts while acquiring
    the lock. We want to remove the local_irq_disable() invocation from
    __usb_hcd_giveback_urb() and therefore it is required for the callback
    handler to disable the interrupts while acquiring the lock.
    The callback may be invoked either in IRQ or BH context depending on the
    USB host controller.
    Use the _irqsave() variant of the locking primitives.
    
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a5bf2de396f1a310285cbcba59a3be0528140e3
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Wed Dec 18 11:17:42 2019 +0100

    net: stmmac: Enable 16KB buffer size
    
    commit b2f3a481c4cd62f78391b836b64c0a6e72b503d2 upstream.
    
    XGMAC supports maximum MTU that can go to 16KB. Lets add this check in
    the calculation of RX buffer size.
    
    Fixes: 7ac6653a085b ("stmmac: Move the STMicroelectronics driver")
    Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e74b77cf84095e012c179952a4fc8b5689f1a75
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Wed Dec 18 11:17:41 2019 +0100

    net: stmmac: 16KB buffer must be 16 byte aligned
    
    commit 8605131747e7e1fd8f6c9f97a00287aae2b2c640 upstream.
    
    The 16KB RX Buffer must also be 16 byte aligned. Fix it.
    
    Fixes: 7ac6653a085b ("stmmac: Move the STMicroelectronics driver")
    Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14dc0e8ee11b7a60e6517aee2e11b8d3162b1ce6
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Mon Jan 13 16:29:23 2020 -0800

    mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio()
    
    commit 6d9e8c651dd979aa666bee15f086745f3ea9c4b3 upstream.
    
    Patch series "use div64_ul() instead of div_u64() if the divisor is
    unsigned long".
    
    We were first inspired by commit b0ab99e7736a ("sched: Fix possible divide
    by zero in avg_atom () calculation"), then refer to the recently analyzed
    mm code, we found this suspicious place.
    
     201                 if (min) {
     202                         min *= this_bw;
     203                         do_div(min, tot_bw);
     204                 }
    
    And we also disassembled and confirmed it:
    
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 201
      0xffffffff811c37da <__wb_calc_thresh+234>:      xor    %r10d,%r10d
      0xffffffff811c37dd <__wb_calc_thresh+237>:      test   %rax,%rax
      0xffffffff811c37e0 <__wb_calc_thresh+240>:      je 0xffffffff811c3800 <__wb_calc_thresh+272>
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 202
      0xffffffff811c37e2 <__wb_calc_thresh+242>:      imul   %r8,%rax
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 203
      0xffffffff811c37e6 <__wb_calc_thresh+246>:      mov    %r9d,%r10d    ---> truncates it to 32 bits here
      0xffffffff811c37e9 <__wb_calc_thresh+249>:      xor    %edx,%edx
      0xffffffff811c37eb <__wb_calc_thresh+251>:      div    %r10
      0xffffffff811c37ee <__wb_calc_thresh+254>:      imul   %rbx,%rax
      0xffffffff811c37f2 <__wb_calc_thresh+258>:      shr    $0x2,%rax
      0xffffffff811c37f6 <__wb_calc_thresh+262>:      mul    %rcx
      0xffffffff811c37f9 <__wb_calc_thresh+265>:      shr    $0x2,%rdx
      0xffffffff811c37fd <__wb_calc_thresh+269>:      mov    %rdx,%r10
    
    This series uses div64_ul() instead of div_u64() if the divisor is
    unsigned long, to avoid truncation to 32-bit on 64-bit platforms.
    
    This patch (of 3):
    
    The variables 'min' and 'max' are unsigned long and do_div truncates
    them to 32 bits, which means it can test non-zero and be truncated to
    zero for division.  Fix this issue by using div64_ul() instead.
    
    Link: http://lkml.kernel.org/r/20200102081442.8273-2-wenyang@linux.alibaba.com
    Fixes: 693108a8a667 ("writeback: make bdi->min/max_ratio handling cgroup writeback aware")
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    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 90515d01c05eea9475e324a6e1605251606fee74
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Wed Jan 8 21:07:32 2020 +0900

    btrfs: fix memory leak in qgroup accounting
    
    commit 26ef8493e1ab771cb01d27defca2fa1315dc3980 upstream.
    
    When running xfstests on the current btrfs I get the following splat from
    kmemleak:
    
    unreferenced object 0xffff88821b2404e0 (size 32):
      comm "kworker/u4:7", pid 26663, jiffies 4295283698 (age 8.776s)
      hex dump (first 32 bytes):
        01 00 00 00 00 00 00 00 10 ff fd 26 82 88 ff ff  ...........&....
        10 ff fd 26 82 88 ff ff 20 ff fd 26 82 88 ff ff  ...&.... ..&....
      backtrace:
        [<00000000f94fd43f>] ulist_alloc+0x25/0x60 [btrfs]
        [<00000000fd023d99>] btrfs_find_all_roots_safe+0x41/0x100 [btrfs]
        [<000000008f17bd32>] btrfs_find_all_roots+0x52/0x70 [btrfs]
        [<00000000b7660afb>] btrfs_qgroup_rescan_worker+0x343/0x680 [btrfs]
        [<0000000058e66778>] btrfs_work_helper+0xac/0x1e0 [btrfs]
        [<00000000f0188930>] process_one_work+0x1cf/0x350
        [<00000000af5f2f8e>] worker_thread+0x28/0x3c0
        [<00000000b55a1add>] kthread+0x109/0x120
        [<00000000f88cbd17>] ret_from_fork+0x35/0x40
    
    This corresponds to:
    
      (gdb) l *(btrfs_find_all_roots_safe+0x41)
      0x8d7e1 is in btrfs_find_all_roots_safe (fs/btrfs/backref.c:1413).
      1408
      1409            tmp = ulist_alloc(GFP_NOFS);
      1410            if (!tmp)
      1411                    return -ENOMEM;
      1412            *roots = ulist_alloc(GFP_NOFS);
      1413            if (!*roots) {
      1414                    ulist_free(tmp);
      1415                    return -ENOMEM;
      1416            }
      1417
    
    Following the lifetime of the allocated 'roots' ulist, it gets freed
    again in btrfs_qgroup_account_extent().
    
    But this does not happen if the function is called with the
    'BTRFS_FS_QUOTA_ENABLED' flag cleared, then btrfs_qgroup_account_extent()
    does a short leave and directly returns.
    
    Instead of directly returning we should jump to the 'out_free' in order to
    free all resources as expected.
    
    CC: stable@vger.kernel.org # 4.14+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    [ add comment ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccf53a8db73c58b1a8135ef5ea9eb99680c77a08
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Mon Jan 13 16:29:13 2020 -0800

    mm/shmem.c: thp, shmem: fix conflict of above-47bit hint address and PMD alignment
    
    commit 991589974d9c9ecb24ee3799ec8c415c730598a2 upstream.
    
    Shmem/tmpfs tries to provide THP-friendly mappings if huge pages are
    enabled.  But it doesn't work well with above-47bit hint address.
    
    Normally, the kernel doesn't create userspace mappings above 47-bit,
    even if the machine allows this (such as with 5-level paging on x86-64).
    Not all user space is ready to handle wide addresses.  It's known that
    at least some JIT compilers use higher bits in pointers to encode their
    information.
    
    Userspace can ask for allocation from full address space by specifying
    hint address (with or without MAP_FIXED) above 47-bits.  If the
    application doesn't need a particular address, but wants to allocate
    from whole address space it can specify -1 as a hint address.
    
    Unfortunately, this trick breaks THP alignment in shmem/tmp:
    shmem_get_unmapped_area() would not try to allocate PMD-aligned area if
    *any* hint address specified.
    
    This can be fixed by requesting the aligned area if the we failed to
    allocated at user-specified hint address.  The request with inflated
    length will also take the user-specified hint address.  This way we will
    not lose an allocation request from the full address space.
    
    [kirill@shutemov.name: fold in a fixup]
      Link: http://lkml.kernel.org/r/20191223231309.t6bh5hkbmokihpfu@box
    Link: http://lkml.kernel.org/r/20191220142548.7118-3-kirill.shutemov@linux.intel.com
    Fixes: b569bab78d8d ("x86/mm: Prepare to expose larger address space to userspace")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: "Willhalm, Thomas" <thomas.willhalm@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: "Bruggeman, Otto G" <otto.g.bruggeman@intel.com>
    Cc: "Aneesh Kumar K . V" <aneesh.kumar@linux.vnet.ibm.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 8ce84610f581ef104a8f274b50bc775599bbb446
Author: Jin Yao <yao.jin@linux.intel.com>
Date:   Fri Dec 20 09:37:19 2019 +0800

    perf report: Fix incorrectly added dimensions as switch perf data file
    
    commit 0feba17bd7ee3b7e03d141f119049dcc23efa94e upstream.
    
    We observed an issue that was some extra columns displayed after switching
    perf data file in browser. The steps to reproduce:
    
    1. perf record -a -e cycles,instructions -- sleep 3
    2. perf report --group
    3. In browser, we use hotkey 's' to switch to another perf.data
    4. Now in browser, the extra columns 'Self' and 'Children' are displayed.
    
    The issue is setup_sorting() executed again after repeat path, so dimensions
    are added again.
    
    This patch checks the last key returned from __cmd_report(). If it's
    K_SWITCH_INPUT_DATA, skips the setup_sorting().
    
    Fixes: ad0de0971b7f ("perf report: Enable the runtime switching of perf data file")
    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Feng Tang <feng.tang@intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20191220013722.20592-1-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14f820498a133d729a5782d4e502baa589cb2194
Author: Yuya Fujita <fujita.yuya@fujitsu.com>
Date:   Thu Dec 19 08:08:32 2019 +0000

    perf hists: Fix variable name's inconsistency in hists__for_each() macro
    
    commit 55347ec340af401437680fd0e88df6739a967f9f upstream.
    
    Variable names are inconsistent in hists__for_each macro().
    
    Due to this inconsistency, the macro replaces its second argument with
    "fmt" regardless of its original name.
    
    So far it works because only "fmt" is passed to the second argument.
    However, this behavior is not expected and should be fixed.
    
    Fixes: f0786af536bb ("perf hists: Introduce hists__for_each_format macro")
    Fixes: aa6f50af822a ("perf hists: Introduce hists__for_each_sort_list macro")
    Signed-off-by: Yuya Fujita <fujita.yuya@fujitsu.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/OSAPR01MB1588E1C47AC22043175DE1B2E8520@OSAPR01MB1588.jpnprd01.prod.outlook.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 991ef5ce9b4e3e87c9008744d58ba42ba70ab638
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Tue Dec 24 14:29:09 2019 +0100

    x86/efistub: Disable paging at mixed mode entry
    
    commit 4911ee401b7ceff8f38e0ac597cbf503d71e690c upstream.
    
    The EFI mixed mode entry code goes through the ordinary startup_32()
    routine before jumping into the kernel's EFI boot code in 64-bit
    mode. The 32-bit startup code must be entered with paging disabled,
    but this is not documented as a requirement for the EFI handover
    protocol, and so we should disable paging explicitly when entering
    the kernel from 32-bit EFI firmware.
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Cc: <stable@vger.kernel.org>
    Cc: Arvind Sankar <nivedita@alum.mit.edu>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20191224132909.102540-4-ardb@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf76318ed06c298d8464923dce81edf6ef349931
Author: Qian Cai <cai@lca.pw>
Date:   Tue Dec 10 22:30:42 2019 -0500

    x86/resctrl: Fix an imbalance in domain_remove_cpu()
    
    commit e278af89f1ba0a9ef20947db6afc2c9afa37e85b upstream.
    
    A system that supports resource monitoring may have multiple resources
    while not all of these resources are capable of monitoring. Monitoring
    related state is initialized only for resources that are capable of
    monitoring and correspondingly this state should subsequently only be
    removed from these resources that are capable of monitoring.
    
    domain_add_cpu() calls domain_setup_mon_state() only when r->mon_capable
    is true where it will initialize d->mbm_over. However,
    domain_remove_cpu() calls cancel_delayed_work(&d->mbm_over) without
    checking r->mon_capable resulting in an attempt to cancel d->mbm_over on
    all resources, even those that never initialized d->mbm_over because
    they are not capable of monitoring. Hence, it triggers a debugobjects
    warning when offlining CPUs because those timer debugobjects are never
    initialized:
    
      ODEBUG: assert_init not available (active state 0) object type:
      timer_list hint: 0x0
      WARNING: CPU: 143 PID: 789 at lib/debugobjects.c:484
      debug_print_object
      Hardware name: HP Synergy 680 Gen9/Synergy 680 Gen9 Compute Module, BIOS I40 05/23/2018
      RIP: 0010:debug_print_object
      Call Trace:
      debug_object_assert_init
      del_timer
      try_to_grab_pending
      cancel_delayed_work
      resctrl_offline_cpu
      cpuhp_invoke_callback
      cpuhp_thread_fun
      smpboot_thread_fn
      kthread
      ret_from_fork
    
    Fixes: e33026831bdb ("x86/intel_rdt/mbm: Handle counter overflow")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Reinette Chatre <reinette.chatre@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: john.stultz@linaro.org
    Cc: sboyd@kernel.org
    Cc: <stable@vger.kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: tj@kernel.org
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vikas Shivappa <vikas.shivappa@linux.intel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20191211033042.2188-1-cai@lca.pw
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd20d0e31c63f8c5ac1dbcb57b96a757c0dd56cd
Author: Keiya Nobuta <nobuta.keiya@fujitsu.com>
Date:   Thu Jan 9 14:14:48 2020 +0900

    usb: core: hub: Improved device recognition on remote wakeup
    
    commit 9c06ac4c83df6d6fbdbf7488fbad822b4002ba19 upstream.
    
    If hub_activate() is called before D+ has stabilized after remote
    wakeup, the following situation might occur:
    
             __      ___________________
            /  \    /
    D+   __/    \__/
    
    Hub  _______________________________
              |  ^   ^           ^
              |  |   |           |
    Host _____v__|___|___________|______
              |  |   |           |
              |  |   |           \-- Interrupt Transfer (*3)
              |  |    \-- ClearPortFeature (*2)
              |   \-- GetPortStatus (*1)
              \-- Host detects remote wakeup
    
    - D+ goes high, Host starts running by remote wakeup
    - D+ is not stable, goes low
    - Host requests GetPortStatus at (*1) and gets the following hub status:
      - Current Connect Status bit is 0
      - Connect Status Change bit is 1
    - D+ stabilizes, goes high
    - Host requests ClearPortFeature and thus Connect Status Change bit is
      cleared at (*2)
    - After waiting 100 ms, Host starts the Interrupt Transfer at (*3)
    - Since the Connect Status Change bit is 0, Hub returns NAK.
    
    In this case, port_event() is not called in hub_event() and Host cannot
    recognize device. To solve this issue, flag change_bits even if only
    Connect Status Change bit is 1 when got in the first GetPortStatus.
    
    This issue occurs rarely because it only if D+ changes during a very
    short time between GetPortStatus and ClearPortFeature. However, it is
    fatal if it occurs in embedded system.
    
    Signed-off-by: Keiya Nobuta <nobuta.keiya@fujitsu.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20200109051448.28150-1-nobuta.keiya@fujitsu.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8812ddea4ea3b8a6ee5e4b9fb2333da7ee4022c
Author: Christian Brauner <christian.brauner@ubuntu.com>
Date:   Wed Jan 15 14:42:34 2020 +0100

    ptrace: reintroduce usage of subjective credentials in ptrace_has_cap()
    
    commit 6b3ad6649a4c75504edeba242d3fd36b3096a57f upstream.
    
    Commit 69f594a38967 ("ptrace: do not audit capability check when outputing /proc/pid/stat")
    introduced the ability to opt out of audit messages for accesses to various
    proc files since they are not violations of policy.  While doing so it
    somehow switched the check from ns_capable() to
    has_ns_capability{_noaudit}(). That means it switched from checking the
    subjective credentials of the task to using the objective credentials. This
    is wrong since. ptrace_has_cap() is currently only used in
    ptrace_may_access() And is used to check whether the calling task (subject)
    has the CAP_SYS_PTRACE capability in the provided user namespace to operate
    on the target task (object). According to the cred.h comments this would
    mean the subjective credentials of the calling task need to be used.
    This switches ptrace_has_cap() to use security_capable(). Because we only
    call ptrace_has_cap() in ptrace_may_access() and in there we already have a
    stable reference to the calling task's creds under rcu_read_lock() there's
    no need to go through another series of dereferences and rcu locking done
    in ns_capable{_noaudit}().
    
    As one example where this might be particularly problematic, Jann pointed
    out that in combination with the upcoming IORING_OP_OPENAT feature, this
    bug might allow unprivileged users to bypass the capability checks while
    asynchronously opening files like /proc/*/mem, because the capability
    checks for this would be performed against kernel credentials.
    
    To illustrate on the former point about this being exploitable: When
    io_uring creates a new context it records the subjective credentials of the
    caller. Later on, when it starts to do work it creates a kernel thread and
    registers a callback. The callback runs with kernel creds for
    ktask->real_cred and ktask->cred. To prevent this from becoming a
    full-blown 0-day io_uring will call override_cred() and override
    ktask->cred with the subjective credentials of the creator of the io_uring
    instance. With ptrace_has_cap() currently looking at ktask->real_cred this
    override will be ineffective and the caller will be able to open arbitray
    proc files as mentioned above.
    Luckily, this is currently not exploitable but will turn into a 0-day once
    IORING_OP_OPENAT{2} land in v5.6. Fix it now!
    
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Eric Paris <eparis@redhat.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Serge Hallyn <serge@hallyn.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Fixes: 69f594a38967 ("ptrace: do not audit capability check when outputing /proc/pid/stat")
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fedf64ea8f461ac51d9772998b277a30cbf8375e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 14 15:34:14 2020 +0300

    scsi: mptfusion: Fix double fetch bug in ioctl
    
    commit 28d76df18f0ad5bcf5fa48510b225f0ed262a99b upstream.
    
    Tom Hatskevich reported that we look up "iocp" then, in the called
    functions we do a second copy_from_user() and look it up again.
    The problem that could cause is:
    
    drivers/message/fusion/mptctl.c
       674          /* All of these commands require an interrupt or
       675           * are unknown/illegal.
       676           */
       677          if ((ret = mptctl_syscall_down(iocp, nonblock)) != 0)
                                                   ^^^^
    We take this lock.
    
       678                  return ret;
       679
       680          if (cmd == MPTFWDOWNLOAD)
       681                  ret = mptctl_fw_download(arg);
                                                     ^^^
    Then the user memory changes and we look up "iocp" again but a different
    one so now we are holding the incorrect lock and have a race condition.
    
       682          else if (cmd == MPTCOMMAND)
       683                  ret = mptctl_mpt_command(arg);
    
    The security impact of this bug is not as bad as it could have been
    because these operations are all privileged and root already has
    enormous destructive power.  But it's still worth fixing.
    
    This patch passes the "iocp" pointer to the functions to avoid the
    second lookup.  That deletes 100 lines of code from the driver so
    it's a nice clean up as well.
    
    Link: https://lore.kernel.org/r/20200114123414.GA7957@kadam
    Reported-by: Tom Hatskevich <tom2001tom.23@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f250729c0385b4371cb6bf33c6ff48e942b3baa0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 7 21:15:49 2020 +0100

    scsi: fnic: fix invalid stack access
    
    commit 42ec15ceaea74b5f7a621fc6686cbf69ca66c4cf upstream.
    
    gcc -O3 warns that some local variables are not properly initialized:
    
    drivers/scsi/fnic/vnic_dev.c: In function 'fnic_dev_hang_notify':
    drivers/scsi/fnic/vnic_dev.c:511:16: error: 'a0' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[0] = *a0;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:691:6: note: 'a0' was declared here
      u64 a0, a1;
          ^~
    drivers/scsi/fnic/vnic_dev.c:512:16: error: 'a1' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[1] = *a1;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:691:10: note: 'a1' was declared here
      u64 a0, a1;
              ^~
    drivers/scsi/fnic/vnic_dev.c: In function 'fnic_dev_mac_addr':
    drivers/scsi/fnic/vnic_dev.c:512:16: error: 'a1' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[1] = *a1;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:698:10: note: 'a1' was declared here
      u64 a0, a1;
              ^~
    
    Apparently the code relies on the local variables occupying adjacent memory
    locations in the same order, but this is of course not guaranteed.
    
    Use an array of two u64 variables where needed to make it work correctly.
    
    I suspect there is also an endianness bug here, but have not digged in deep
    enough to be sure.
    
    Fixes: 5df6d737dd4b ("[SCSI] fnic: Add new Cisco PCI-Express FCoE HBA")
    Fixes: mmtom ("init/Kconfig: enable -O3 for all arches")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200107201602.4096790-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3afe35a859aca32ad888193cf171a86a0a23eac8
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 15:35:26 2020 +0100

    USB: serial: quatech2: handle unbound ports
    
    commit 9715a43eea77e42678a1002623f2d9a78f5b81a1 upstream.
    
    Check for NULL port data in the modem- and line-status handlers to avoid
    dereferencing a NULL pointer in the unlikely case where a port device
    isn't bound to a driver (e.g. after an allocation failure on port
    probe).
    
    Note that the other (stubbed) event handlers qt2_process_xmit_empty()
    and qt2_process_flush() would need similar sanity checks in case they
    are ever implemented.
    
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Cc: stable <stable@vger.kernel.org>     # 3.5
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 534afe14ec5f5aec941f66e3bc4b417e442b8298
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:25 2020 +0100

    USB: serial: keyspan: handle unbound ports
    
    commit 3018dd3fa114b13261e9599ddb5656ef97a1fa17 upstream.
    
    Check for NULL port data in the control URB completion handlers to avoid
    dereferencing a NULL pointer in the unlikely case where a port device
    isn't bound to a driver (e.g. after an allocation failure on port
    probe()).
    
    Fixes: 0ca1268e109a ("USB Serial Keyspan: add support for USA-49WG & USA-28XG")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e804bb78f21cebc10ddfba62d1dc3ac498a109cc
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:24 2020 +0100

    USB: serial: io_edgeport: add missing active-port sanity check
    
    commit 1568c58d11a7c851bd09341aeefd6a1c308ac40d upstream.
    
    The driver receives the active port number from the device, but never
    made sure that the port number was valid. This could lead to a
    NULL-pointer dereference or memory corruption in case a device sends
    data for an invalid port.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c63fa75f0cb67928c251ac575590bda61fdcc0a
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:22 2020 +0100

    USB: serial: ch341: handle unbound port at reset_resume
    
    commit 4d5ef53f75c22d28f490bcc5c771fcc610a9afa4 upstream.
    
    Check for NULL port data in reset_resume() to avoid dereferencing a NULL
    pointer in case the port device isn't bound to a driver (e.g. after a
    failed control request at port probe).
    
    Fixes: 1ded7ea47b88 ("USB: ch341 serial: fix port number changed after resume")
    Cc: stable <stable@vger.kernel.org>     # 2.6.30
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcca7cb09cc58dabb871f4f2fca13399d344ef63
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 16 17:07:05 2020 +0100

    USB: serial: suppress driver bind attributes
    
    commit fdb838efa31e1ed9a13ae6ad0b64e30fdbd00570 upstream.
    
    USB-serial drivers must not be unbound from their ports before the
    corresponding USB driver is unbound from the parent interface so
    suppress the bind and unbind attributes.
    
    Unbinding a serial driver while it's port is open is a sure way to
    trigger a crash as any driver state is released on unbind while port
    hangup is handled on the parent USB interface level. Drivers for
    multiport devices where ports share a resource such as an interrupt
    endpoint also generally cannot handle individual ports going away.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e19bcd176c4e844560749981221103c58e40e407
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Tue Jan 14 14:29:23 2020 +0100

    USB: serial: option: add support for Quectel RM500Q in QDL mode
    
    commit f3eaabbfd093c93d791eb930cc68d9b15246a65e upstream.
    
    Add support for Quectel RM500Q in QDL mode.
    
    T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 24 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0800 Rev= 0.00
    S:  Manufacturer=Qualcomm CDMA Technologies MSM
    S:  Product=QUSB_BULK_SN:xxxxxxxx
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=  2mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=10 Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    It is assumed that the ZLP flag required for other Qualcomm-based
    5G devices also applies to Quectel RM500Q.
    
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f61deb9c4d54dff9e005f18f319a2c356041ab6
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 13 18:22:13 2020 +0100

    USB: serial: opticon: fix control-message timeouts
    
    commit 5e28055f340275a8616eee88ef19186631b4d136 upstream.
    
    The driver was issuing synchronous uninterruptible control requests
    without using a timeout. This could lead to the driver hanging
    on open() or tiocmset() due to a malfunctioning (or malicious) device
    until the device is physically disconnected.
    
    The USB upper limit of five seconds per request should be more than
    enough.
    
    Fixes: 309a057932ab ("USB: opticon: add rts and cts support")
    Cc: stable <stable@vger.kernel.org>     # 2.6.39
    Cc: Martin Jansen <martin.jansen@opticon.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 223f97fc43cda4bce578641ffbec60aa02edfb1e
Author: Kristian Evensen <kristian.evensen@gmail.com>
Date:   Mon Jan 13 15:14:05 2020 +0100

    USB: serial: option: Add support for Quectel RM500Q
    
    commit accf227de4d211b52c830a58b2df00d5739f2389 upstream.
    
    RM500Q is a 5G module from Quectel, supporting both standalone and
    non-standalone modes. Unlike other recent Quectel modems, it is possible
    to identify the diagnostic interface (bInterfaceProtocol is unique).
    Thus, there is no need to check for the number of endpoints or reserve
    interfaces. The interface number is still dynamic though, so matching on
    interface number is not possible and two entries have to be added to the
    table.
    
    Output from usb-devices with all interfaces enabled (order is diag,
    nmea, at_port, modem, rmnet and adb):
    
    Bus 004 Device 007: ID 2c7c:0800 Quectel Wireless Solutions Co., Ltd.
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x2c7c Quectel Wireless Solutions Co., Ltd.
      idProduct          0x0800
      bcdDevice            4.14
      iManufacturer           1 Quectel
      iProduct                2 LTE-A Module
      iSerial                 3 40046d60
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          328
        bNumInterfaces          6
        bConfigurationValue     1
        iConfiguration          4 DIAG_SER_RMNET
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              224mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     48
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol    255 Vendor Specific Protocol
          iInterface              5 CDEV Serial
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x8e  EP 14 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               6
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x0f  EP 15 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     66
          bInterfaceProtocol      1
          iInterface              6 ADB Interface
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x05  EP 5 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x89  EP 9 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
    Binary Object Store Descriptor:
      bLength                 5
      bDescriptorType        15
      wTotalLength           42
      bNumDeviceCaps          3
      USB 2.0 Extension Device Capability:
        bLength                 7
        bDescriptorType        16
        bDevCapabilityType      2
        bmAttributes   0x00000006
          Link Power Management (LPM) Supported
      SuperSpeed USB Device Capability:
        bLength                10
        bDescriptorType        16
        bDevCapabilityType      3
        bmAttributes         0x00
        wSpeedsSupported   0x000f
          Device can operate at Low Speed (1Mbps)
          Device can operate at Full Speed (12Mbps)
          Device can operate at High Speed (480Mbps)
          Device can operate at SuperSpeed (5Gbps)
        bFunctionalitySupport   1
          Lowest fully-functional device speed is Full Speed (12Mbps)
        bU1DevExitLat           1 micro seconds
        bU2DevExitLat         500 micro seconds
      ** UNRECOGNIZED:  14 10 0a 00 01 00 00 00 00 11 00 00 30 40 0a 00 b0 40 0a 00
    Device Status:     0x0000
      (Bus Powered)
    
    Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a31be20233df25e202bfc8ed9a52a93b34385f7d
Author: Jerónimo Borque <jeronimo@borque.com.ar>
Date:   Thu Jan 9 12:23:34 2020 -0300

    USB: serial: simple: Add Motorola Solutions TETRA MTP3xxx and MTP85xx
    
    commit 260e41ac4dd3e5acb90be624c03ba7f019615b75 upstream.
    
    Add device-ids for the Motorola Solutions TETRA radios MTP3xxx series
    and MTP85xx series
    
    $ lsusb -vd 0cad:
    
    Bus 001 Device 009: ID 0cad:9015 Motorola CGISS TETRA PEI interface
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0cad Motorola CGISS
      idProduct          0x9015
      bcdDevice           24.16
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0037
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          3
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              500mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
    
    Bus 001 Device 010: ID 0cad:9013 Motorola CGISS TETRA PEI interface
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0cad Motorola CGISS
      idProduct          0x9013
      bcdDevice           24.16
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0037
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          3
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              500mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
    
    Signed-off-by: Jerónimo Borque <jeronimo@borque.com.ar>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca76e5b3504fc0a72168c4982053604b4d7814ad
Author: Lars Möllendorf <lars.moellendorf@plating.de>
Date:   Fri Dec 13 14:50:55 2019 +0100

    iio: buffer: align the size of scan bytes to size of the largest element
    
    commit 883f616530692d81cb70f8a32d85c0d2afc05f69 upstream.
    
    Previous versions of `iio_compute_scan_bytes` only aligned each element
    to its own length (i.e. its own natural alignment). Because multiple
    consecutive sets of scan elements are buffered this does not work in
    case the computed scan bytes do not align with the natural alignment of
    the first scan element in the set.
    
    This commit fixes this by aligning the scan bytes to the natural
    alignment of the largest scan element in the set.
    
    Fixes: 959d2952d124 ("staging:iio: make iio_sw_buffer_preenable much more general.")
    Signed-off-by: Lars Möllendorf <lars.moellendorf@plating.de>
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f27885c16525c3e4d4c5fa79ba9fcfcf3d1ab96c
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Tue Dec 17 14:21:23 2019 +0530

    ARM: dts: am571x-idk: Fix gpios property to have the correct gpio number
    
    commit 0c4eb2a6b3c6b0facd0a3bccda5db22e7b3b6f96 upstream.
    
    commit d23f3839fe97d8dce03d ("ARM: dts: DRA7: Add pcie1 dt node for
    EP mode") while adding the dt node for EP mode for DRA7 platform,
    added rc node for am571x-idk and populated gpios property with
    "gpio3 23". However the GPIO_PCIE_SWRST line is actually connected
    to "gpio5 18". Fix it here. (The patch adding "gpio3 23" was tested
    with another am57x board in EP mode which doesn't rely on reset from
    host).
    
    Cc: stable <stable@vger.kernel.org> # 4.14+
    Fixes: d23f3839fe97d8dce03d ("ARM: dts: DRA7: Add pcie1 dt node for EP mode")
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c7a7d8e62bd942bf8e5d80486132d3ec0173b69
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jan 15 08:35:25 2020 -0500

    block: fix an integer overflow in logical block size
    
    commit ad6bf88a6c19a39fb3b0045d78ea880325dfcf15 upstream.
    
    Logical block size has type unsigned short. That means that it can be at
    most 32768. However, there are architectures that can run with 64k pages
    (for example arm64) and on these architectures, it may be possible to
    create block devices with 64k block size.
    
    For exmaple (run this on an architecture with 64k pages):
    
    Mount will fail with this error because it tries to read the superblock using 2-sector
    access:
      device-mapper: writecache: I/O is not aligned, sector 2, size 1024, block size 65536
      EXT4-fs (dm-0): unable to read superblock
    
    This patch changes the logical block size from unsigned short to unsigned
    int to avoid the overflow.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8085d56065edc52628efb502e5fc03c7230c8fe2
Author: Jari Ruusu <jari.ruusu@gmail.com>
Date:   Sun Jan 12 15:00:53 2020 +0200

    Fix built-in early-load Intel microcode alignment
    
    commit f5ae2ea6347a308cfe91f53b53682ce635497d0d upstream.
    
    Intel Software Developer's Manual, volume 3, chapter 9.11.6 says:
    
     "Note that the microcode update must be aligned on a 16-byte boundary
      and the size of the microcode update must be 1-KByte granular"
    
    When early-load Intel microcode is loaded from initramfs, userspace tool
    'iucode_tool' has already 16-byte aligned those microcode bits in that
    initramfs image.  Image that was created something like this:
    
     iucode_tool --write-earlyfw=FOO.cpio microcode-files...
    
    However, when early-load Intel microcode is loaded from built-in
    firmware BLOB using CONFIG_EXTRA_FIRMWARE= kernel config option, that
    16-byte alignment is not guaranteed.
    
    Fix this by forcing all built-in firmware BLOBs to 16-byte alignment.
    
    [ If we end up having other firmware with much bigger alignment
      requirements, we might need to introduce some method for the firmware
      to specify it, this is the minimal "just increase the alignment a bit
      to account for this one special case" patch    - Linus ]
    
    Signed-off-by: Jari Ruusu <jari.ruusu@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43bb0a16b25d5030193935b5c292648fa9abc0fc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 15 21:37:33 2020 +0100

    ALSA: seq: Fix racy access for queue timer in proc read
    
    commit 60adcfde92fa40fcb2dbf7cc52f9b096e0cd109a upstream.
    
    snd_seq_info_timer_read() reads the information of the timer assigned
    for each queue, but it's done in a racy way which may lead to UAF as
    spotted by syzkaller.
    
    This patch applies the missing q->timer_mutex lock while accessing the
    timer object as well as a slight code change to adapt the standard
    coding style.
    
    Reported-by: syzbot+2b2ef983f973e5c40943@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200115203733.26530-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00bbc127415f104ed0f195a994fc3892f2d5383e
Author: Stephan Gerhold <stephan@gerhold.net>
Date:   Sat Jan 11 17:40:03 2020 +0100

    ASoC: msm8916-wcd-analog: Fix selected events for MIC BIAS External1
    
    commit e0beec88397b163c7c4ea6fcfb67e8e07a2671dc upstream.
    
    MIC BIAS External1 sets pm8916_wcd_analog_enable_micbias_ext1()
    as event handler, which ends up in pm8916_wcd_analog_enable_micbias_ext().
    
    But pm8916_wcd_analog_enable_micbias_ext() only handles the POST_PMU
    event, which is not specified in the event flags for MIC BIAS External1.
    This means that the code in the event handler is never actually run.
    
    Set SND_SOC_DAPM_POST_PMU as the only event for the handler to fix this.
    
    Fixes: 585e881e5b9e ("ASoC: codecs: Add msm8916-wcd analog codec")
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
    Link: https://lore.kernel.org/r/20200111164006.43074-2-stephan@gerhold.net
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 692dcea72e4aaf1d25833a1f42663bf83efd344c
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Dec 25 08:34:29 2019 -0800

    clk: Don't try to enable critical clocks if prepare failed
    
    commit 12ead77432f2ce32dea797742316d15c5800cb32 upstream.
    
    The following traceback is seen if a critical clock fails to prepare.
    
    bcm2835-clk 3f101000.cprman: plld: couldn't lock PLL
    ------------[ cut here ]------------
    Enabling unprepared plld_per
    WARNING: CPU: 1 PID: 1 at drivers/clk/clk.c:1014 clk_core_enable+0xcc/0x2c0
    ...
    Call trace:
     clk_core_enable+0xcc/0x2c0
     __clk_register+0x5c4/0x788
     devm_clk_hw_register+0x4c/0xb0
     bcm2835_register_pll_divider+0xc0/0x150
     bcm2835_clk_probe+0x134/0x1e8
     platform_drv_probe+0x50/0xa0
     really_probe+0xd4/0x308
     driver_probe_device+0x54/0xe8
     device_driver_attach+0x6c/0x78
     __driver_attach+0x54/0xd8
    ...
    
    Check return values from clk_core_prepare() and clk_core_enable() and
    bail out if any of those functions returns an error.
    
    Cc: Jerome Brunet <jbrunet@baylibre.com>
    Fixes: 99652a469df1 ("clk: migrate the count of orphaned clocks at init")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lkml.kernel.org/r/20191225163429.29694-1-linux@roeck-us.net
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f1f0637838408a0e99ee443a72b74f44fb54401
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Nov 30 19:53:37 2019 +0100

    dt-bindings: reset: meson8b: fix duplicate reset IDs
    
    commit 4881873f4cc1460f63d85fa81363d56be328ccdc upstream.
    
    According to the public S805 datasheet the RESET2 register uses the
    following bits for the PIC_DC, PSC and NAND reset lines:
    - PIC_DC is at bit 3 (meaning: RESET_VD_RMEM + 3)
    - PSC is at bit 4 (meaning: RESET_VD_RMEM + 4)
    - NAND is at bit 5 (meaning: RESET_VD_RMEM + 4)
    
    Update the reset IDs of these three reset lines so they don't conflict
    with PIC_DC and map to the actual hardware reset lines.
    
    Fixes: 79795e20a184eb ("dt-bindings: reset: Add bindings for the Meson SoC Reset Controller")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>