commit 1b2be6d75ad971d27decf2a97f5544c35aeb9f2b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Sep 21 07:14:23 2019 +0200

    Linux 4.9.194

commit 5d048c3b1ae44274daed94d7cbf9be0ea32b1f45
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Sep 12 10:22:30 2019 -0700

    net_sched: let qdisc_put() accept NULL pointer
    
    [ Upstream commit 6efb971ba8edfbd80b666f29de12882852f095ae ]
    
    When tcf_block_get() fails in sfb_init(), q->qdisc is still a NULL
    pointer which leads to a crash in sfb_destroy(). Similar for
    sch_dsmark.
    
    Instead of fixing each separately, Linus suggested to just accept
    NULL pointer in qdisc_put(), which would make callers easier.
    
    (For sch_dsmark, the bug probably exists long before commit
    6529eaba33f0.)
    
    Fixes: 6529eaba33f0 ("net: sched: introduce tcf block infractructure")
    Reported-by: syzbot+d5870a903591faaca4ae@syzkaller.appspotmail.com
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c9b259802937e8eae4300180e5558f10ecbdd3c
Author: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Date:   Thu Sep 19 13:58:47 2019 -0700

    ARC: export "abort" for modules
    
    This is a custom patch (no mainline equivalent) for stable backport only
    to address 0-Day kernel test infra ARC 4.x.y builds errors.
    
    The reason for this custom patch as that it is a single patch, touches
    only ARC, vs. atleast two 7c2c11b208be09c1, dc8635b78cd8669 which touch
    atleast 3 other arches (one long removed) and could potentially have a
    fallout.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    CC: stable@vger.kernel.org      # 4.4, 4.9
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 994c6dcb4307759d440b8031e140d343b8611481
Author: Sean Young <sean@mess.org>
Date:   Wed Jul 3 10:52:39 2019 -0400

    media: technisat-usb2: break out of loop at end of buffer
    
    commit 0c4df39e504bf925ab666132ac3c98d6cbbe380b upstream.
    
    Ensure we do not access the buffer beyond the end if no 0xff byte
    is encountered.
    
    Reported-by: syzbot+eaaaf38a95427be88f4b@syzkaller.appspotmail.com
    Signed-off-by: Sean Young <sean@mess.org>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e07fb66a09fe81ef3e0f4cb2dcbff46175618462
Author: Jann Horn <jannh@google.com>
Date:   Tue Mar 26 23:03:48 2019 +0100

    floppy: fix usercopy direction
    
    commit 52f6f9d74f31078964ca1574f7bb612da7877ac8 upstream.
    
    As sparse points out, these two copy_from_user() should actually be
    copy_to_user().
    
    Fixes: 229b53c9bf4e ("take floppy compat ioctls to sodding floppy.c")
    Cc: stable@vger.kernel.org
    Acked-by: Alexander Popov <alex.popov@linux.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fb92f18555a7b8e085267d513612dc0ff9a5360
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Sep 6 10:39:54 2019 +0200

    iommu/amd: Fix race in increase_address_space()
    
    [ Upstream commit 754265bcab78a9014f0f99cd35e0d610fcd7dfa7 ]
    
    After the conversion to lock-less dma-api call the
    increase_address_space() function can be called without any
    locking. Multiple CPUs could potentially race for increasing
    the address space, leading to invalid domain->mode settings
    and invalid page-tables. This has been happening in the wild
    under high IO load and memory pressure.
    
    Fix the race by locking this operation. The function is
    called infrequently so that this does not introduce
    a performance regression in the dma-api path again.
    
    Reported-by: Qian Cai <cai@lca.pw>
    Fixes: 256e4621c21a ('iommu/amd: Make use of the generic IOVA allocator')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b94178b239d797c204b045c6a0b77c43cbe82f8f
Author: Hillf Danton <hdanton@sina.com>
Date:   Mon Sep 2 13:37:29 2019 +0100

    keys: Fix missing null pointer check in request_key_auth_describe()
    
    [ Upstream commit d41a3effbb53b1bcea41e328d16a4d046a508381 ]
    
    If a request_key authentication token key gets revoked, there's a window in
    which request_key_auth_describe() can see it with a NULL payload - but it
    makes no check for this and something like the following oops may occur:
    
            BUG: Kernel NULL pointer dereference at 0x00000038
            Faulting instruction address: 0xc0000000004ddf30
            Oops: Kernel access of bad area, sig: 11 [#1]
            ...
            NIP [...] request_key_auth_describe+0x90/0xd0
            LR [...] request_key_auth_describe+0x54/0xd0
            Call Trace:
            [...] request_key_auth_describe+0x54/0xd0 (unreliable)
            [...] proc_keys_show+0x308/0x4c0
            [...] seq_read+0x3d0/0x540
            [...] proc_reg_read+0x90/0x110
            [...] __vfs_read+0x3c/0x70
            [...] vfs_read+0xb4/0x1b0
            [...] ksys_read+0x7c/0x130
            [...] system_call+0x5c/0x70
    
    Fix this by checking for a NULL pointer when describing such a key.
    
    Also make the read routine check for a NULL pointer to be on the safe side.
    
    [DH: Modified to not take already-held rcu lock and modified to also check
     in the read routine]
    
    Fixes: 04c567d9313e ("[PATCH] Keys: Fix race between two instantiators of a key")
    Reported-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06961928f5f37dcf0fac563ffde2916d390bd22c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Aug 29 10:24:45 2019 +0200

    x86/uaccess: Don't leak the AC flags into __get_user() argument evaluation
    
    [ Upstream commit 9b8bd476e78e89c9ea26c3b435ad0201c3d7dbf5 ]
    
    Identical to __put_user(); the __get_user() argument evalution will too
    leak UBSAN crud into the __uaccess_begin() / __uaccess_end() region.
    While uncommon this was observed to happen for:
    
      drivers/xen/gntdev.c: if (__get_user(old_status, batch->status[i]))
    
    where UBSAN added array bound checking.
    
    This complements commit:
    
      6ae865615fc4 ("x86/uaccess: Dont leak the AC flag into __put_user() argument evaluation")
    
    Tested-by Sedat Dilek <sedat.dilek@gmail.com>
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: broonie@kernel.org
    Cc: sfr@canb.auug.org.au
    Cc: akpm@linux-foundation.org
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: mhocko@suse.cz
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lkml.kernel.org/r/20190829082445.GM2369@hirez.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab1dfea6c7c14a12c14569233a8a954956e698d6
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Fri Aug 16 01:56:08 2019 -0500

    dmaengine: ti: omap-dma: Add cleanup in omap_dma_probe()
    
    [ Upstream commit 962411b05a6d3342aa649e39cda1704c1fc042c6 ]
    
    If devm_request_irq() fails to disable all interrupts, no cleanup is
    performed before retuning the error. To fix this issue, invoke
    omap_dma_free() to do the cleanup.
    
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/1565938570-7528-1-git-send-email-wenwen@cs.uga.edu
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a835f51c2382d14cbd4559fccd897358bd6262a
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Fri Aug 16 01:48:55 2019 -0500

    dmaengine: ti: dma-crossbar: Fix a memory leak bug
    
    [ Upstream commit 2c231c0c1dec42192aca0f87f2dc68b8f0cbc7d2 ]
    
    In ti_dra7_xbar_probe(), 'rsv_events' is allocated through kcalloc(). Then
    of_property_read_u32_array() is invoked to search for the property.
    However, if this process fails, 'rsv_events' is not deallocated, leading to
    a memory leak bug. To fix this issue, free 'rsv_events' before returning
    the error.
    
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/1565938136-7249-1-git-send-email-wenwen@cs.uga.edu
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4291fa0fb12b38d9f9824593d67c204ae6b92607
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Aug 31 09:17:51 2019 +0200

    net: seeq: Fix the function used to release some memory in an error handling path
    
    [ Upstream commit e1e54ec7fb55501c33b117c111cb0a045b8eded2 ]
    
    In commit 99cd149efe82 ("sgiseeq: replace use of dma_cache_wback_inv"),
    a call to 'get_zeroed_page()' has been turned into a call to
    'dma_alloc_coherent()'. Only the remove function has been updated to turn
    the corresponding 'free_page()' into 'dma_free_attrs()'.
    The error hndling path of the probe function has not been updated.
    
    Fix it now.
    
    Rename the corresponding label to something more in line.
    
    Fixes: 99cd149efe82 ("sgiseeq: replace use of dma_cache_wback_inv")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 318537ab5df99309dc35d20d61fa7d6559288e81
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Wed Apr 3 16:02:14 2019 +0900

    tools/power turbostat: fix buffer overrun
    
    [ Upstream commit eeb71c950bc6eee460f2070643ce137e067b234c ]
    
    turbostat could be terminated by general protection fault on some latest
    hardwares which (for example) support 9 levels of C-states and show 18
    "tADDED" lines. That bloats the total output and finally causes buffer
    overrun.  So let's extend the buffer to avoid this.
    
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2099353f7a187ba0eb44cf955c741edfa2b5ab94
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Mon Aug 26 14:57:30 2019 -0500

    perf/x86/amd/ibs: Fix sample bias for dispatched micro-ops
    
    [ Upstream commit 0f4cd769c410e2285a4e9873a684d90423f03090 ]
    
    When counting dispatched micro-ops with cnt_ctl=1, in order to prevent
    sample bias, IBS hardware preloads the least significant 7 bits of
    current count (IbsOpCurCnt) with random values, such that, after the
    interrupt is handled and counting resumes, the next sample taken
    will be slightly perturbed.
    
    The current count bitfield is in the IBS execution control h/w register,
    alongside the maximum count field.
    
    Currently, the IBS driver writes that register with the maximum count,
    leaving zeroes to fill the current count field, thereby overwriting
    the random bits the hardware preloaded for itself.
    
    Fix the driver to actually retain and carry those random bits from the
    read of the IBS control register, through to its write, instead of
    overwriting the lower current count bits with zeroes.
    
    Tested with:
    
    perf record -c 100001 -e ibs_op/cnt_ctl=1/pp -a -C 0 taskset -c 0 <workload>
    
    'perf annotate' output before:
    
     15.70  65:   addsd     %xmm0,%xmm1
     17.30        add       $0x1,%rax
     15.88        cmp       %rdx,%rax
                  je        82
     17.32  72:   test      $0x1,%al
                  jne       7c
      7.52        movapd    %xmm1,%xmm0
      5.90        jmp       65
      8.23  7c:   sqrtsd    %xmm1,%xmm0
     12.15        jmp       65
    
    'perf annotate' output after:
    
     16.63  65:   addsd     %xmm0,%xmm1
     16.82        add       $0x1,%rax
     16.81        cmp       %rdx,%rax
                  je        82
     16.69  72:   test      $0x1,%al
                  jne       7c
      8.30        movapd    %xmm1,%xmm0
      8.13        jmp       65
      8.24  7c:   sqrtsd    %xmm1,%xmm0
      8.39        jmp       65
    
    Tested on Family 15h and 17h machines.
    
    Machines prior to family 10h Rev. C don't have the RDWROPCNT capability,
    and have the IbsOpCurCnt bitfield reserved, so this patch shouldn't
    affect their operation.
    
    It is unknown why commit db98c5faf8cb ("perf/x86: Implement 64-bit
    counter support for IBS") ignored the lower 4 bits of the IbsOpCurCnt
    field; the number of preloaded random bits has always been 7, AFAICT.
    
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: "Arnaldo Carvalho de Melo" <acme@kernel.org>
    Cc: <x86@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Borislav Petkov" <bp@alien8.de>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: "Namhyung Kim" <namhyung@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Link: https://lkml.kernel.org/r/20190826195730.30614-1-kim.phillips@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a55e63d9ca7e403587e8395a377ba993230b950f
Author: Josh Hunt <johunt@akamai.com>
Date:   Mon Aug 19 19:13:31 2019 -0400

    perf/x86/intel: Restrict period on Nehalem
    
    [ Upstream commit 44d3bbb6f5e501b873218142fe08cdf62a4ac1f3 ]
    
    We see our Nehalem machines reporting 'perfevents: irq loop stuck!' in
    some cases when using perf:
    
    perfevents: irq loop stuck!
    WARNING: CPU: 0 PID: 3485 at arch/x86/events/intel/core.c:2282 intel_pmu_handle_irq+0x37b/0x530
    ...
    RIP: 0010:intel_pmu_handle_irq+0x37b/0x530
    ...
    Call Trace:
    <NMI>
    ? perf_event_nmi_handler+0x2e/0x50
    ? intel_pmu_save_and_restart+0x50/0x50
    perf_event_nmi_handler+0x2e/0x50
    nmi_handle+0x6e/0x120
    default_do_nmi+0x3e/0x100
    do_nmi+0x102/0x160
    end_repeat_nmi+0x16/0x50
    ...
    ? native_write_msr+0x6/0x20
    ? native_write_msr+0x6/0x20
    </NMI>
    intel_pmu_enable_event+0x1ce/0x1f0
    x86_pmu_start+0x78/0xa0
    x86_pmu_enable+0x252/0x310
    __perf_event_task_sched_in+0x181/0x190
    ? __switch_to_asm+0x41/0x70
    ? __switch_to_asm+0x35/0x70
    ? __switch_to_asm+0x41/0x70
    ? __switch_to_asm+0x35/0x70
    finish_task_switch+0x158/0x260
    __schedule+0x2f6/0x840
    ? hrtimer_start_range_ns+0x153/0x210
    schedule+0x32/0x80
    schedule_hrtimeout_range_clock+0x8a/0x100
    ? hrtimer_init+0x120/0x120
    ep_poll+0x2f7/0x3a0
    ? wake_up_q+0x60/0x60
    do_epoll_wait+0xa9/0xc0
    __x64_sys_epoll_wait+0x1a/0x20
    do_syscall_64+0x4e/0x110
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7fdeb1e96c03
    ...
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: acme@kernel.org
    Cc: Josh Hunt <johunt@akamai.com>
    Cc: bpuranda@akamai.com
    Cc: mingo@redhat.com
    Cc: jolsa@redhat.com
    Cc: tglx@linutronix.de
    Cc: namhyung@kernel.org
    Cc: alexander.shishkin@linux.intel.com
    Link: https://lkml.kernel.org/r/1566256411-18820-1-git-send-email-johunt@akamai.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a84da79fc7380cdca73c8a5e273dcfaa9cc24423
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 28 08:31:19 2019 +0200

    sky2: Disable MSI on yet another ASUS boards (P6Xxxx)
    
    [ Upstream commit 189308d5823a089b56e2299cd96589507dac7319 ]
    
    A similar workaround for the suspend/resume problem is needed for yet
    another ASUS machines, P6X models.  Like the previous fix, the BIOS
    doesn't provide the standard DMI_SYS_* entry, so again DMI_BOARD_*
    entries are used instead.
    
    Reported-and-tested-by: SteveM <swm@swm1.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 746643b814535c81c37badffca3b5350585ed442
Author: zhaoyang <huangzhaoyang@gmail.com>
Date:   Mon Aug 26 04:07:37 2019 +0100

    ARM: 8901/1: add a criteria for pfn_valid of arm
    
    [ Upstream commit 5b3efa4f1479c91cb8361acef55f9c6662feba57 ]
    
    pfn_valid can be wrong when parsing a invalid pfn whose phys address
    exceeds BITS_PER_LONG as the MSB will be trimed when shifted.
    
    The issue originally arise from bellowing call stack, which corresponding to
    an access of the /proc/kpageflags from userspace with a invalid pfn parameter
    and leads to kernel panic.
    
    [46886.723249] c7 [<c031ff98>] (stable_page_flags) from [<c03203f8>]
    [46886.723264] c7 [<c0320368>] (kpageflags_read) from [<c0312030>]
    [46886.723280] c7 [<c0311fb0>] (proc_reg_read) from [<c02a6e6c>]
    [46886.723290] c7 [<c02a6e24>] (__vfs_read) from [<c02a7018>]
    [46886.723301] c7 [<c02a6f74>] (vfs_read) from [<c02a778c>]
    [46886.723315] c7 [<c02a770c>] (SyS_pread64) from [<c0108620>]
    (ret_fast_syscall+0x0/0x28)
    
    Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3571c9bb0158cb12092e77123f19fa825d3d8005
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Aug 27 13:59:17 2019 +0300

    cifs: Use kzfree() to zero out the password
    
    [ Upstream commit 478228e57f81f6cb60798d54fc02a74ea7dd267e ]
    
    It's safer to zero out the password so that it can never be disclosed.
    
    Fixes: 0c219f5799c7 ("cifs: set domainName when a domain-key is used in multiuser")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16764d7486d02b1699ae16e91d7a577602398b17
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Thu Aug 22 08:09:50 2019 +1000

    cifs: set domainName when a domain-key is used in multiuser
    
    [ Upstream commit f2aee329a68f5a907bcff11a109dfe17c0b41aeb ]
    
    RHBZ: 1710429
    
    When we use a domain-key to authenticate using multiuser we must also set
    the domainnmame for the new volume as it will be used and passed to the server
    in the NTLMSSP Domain-name.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15c6f86c34aaf8996dbcea4662da6d6736f77577
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Tue Aug 27 07:03:28 2019 -0400

    NFSv2: Fix write regression
    
    [ Upstream commit d33d4beb522987d1c305c12500796f9be3687dee ]
    
    Ensure we update the write result count on success, since the
    RPC call itself does not do so.
    
    Reported-by: Jan Stancek <jstancek@redhat.com>
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Tested-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc94dcfbc58199158f71547d06dfb003fa3c1e7a
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Aug 26 20:41:16 2019 -0400

    NFSv2: Fix eof handling
    
    [ Upstream commit 71affe9be45a5c60b9772e1b2701710712637274 ]
    
    If we received a reply from the server with a zero length read and
    no error, then that implies we are at eof.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 970b0ee7ceeb92ad6c2970197d584f7ed2bd8ec9
Author: Thomas Jarosch <thomas.jarosch@intra2net.com>
Date:   Wed Aug 21 16:14:28 2019 +0200

    netfilter: nf_conntrack_ftp: Fix debug output
    
    [ Upstream commit 3a069024d371125227de3ac8fa74223fcf473520 ]
    
    The find_pattern() debug output was printing the 'skip' character.
    This can be a NULL-byte and messes up further pr_debug() output.
    
    Output without the fix:
    kernel: nf_conntrack_ftp: Pattern matches!
    kernel: nf_conntrack_ftp: Skipped up to `<7>nf_conntrack_ftp: find_pattern `PORT': dlen = 8
    kernel: nf_conntrack_ftp: find_pattern `EPRT': dlen = 8
    
    Output with the fix:
    kernel: nf_conntrack_ftp: Pattern matches!
    kernel: nf_conntrack_ftp: Skipped up to 0x0 delimiter!
    kernel: nf_conntrack_ftp: Match succeeded!
    kernel: nf_conntrack_ftp: conntrack_ftp: match `172,17,0,100,200,207' (20 bytes at 4150681645)
    kernel: nf_conntrack_ftp: find_pattern `PORT': dlen = 8
    
    Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f073243156bd6549f43d26d1313f7bebcba2d6c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Aug 21 15:16:31 2019 +0200

    x86/apic: Fix arch_dynirq_lower_bound() bug for DT enabled machines
    
    [ Upstream commit 3e5bedc2c258341702ddffbd7688c5e6eb01eafa ]
    
    Rahul Tanwar reported the following bug on DT systems:
    
    > 'ioapic_dynirq_base' contains the virtual IRQ base number. Presently, it is
    > updated to the end of hardware IRQ numbers but this is done only when IOAPIC
    > configuration type is IOAPIC_DOMAIN_LEGACY or IOAPIC_DOMAIN_STRICT. There is
    > a third type IOAPIC_DOMAIN_DYNAMIC which applies when IOAPIC configuration
    > comes from devicetree.
    >
    > See dtb_add_ioapic() in arch/x86/kernel/devicetree.c
    >
    > In case of IOAPIC_DOMAIN_DYNAMIC (DT/OF based system), 'ioapic_dynirq_base'
    > remains to zero initialized value. This means that for OF based systems,
    > virtual IRQ base will get set to zero.
    
    Such systems will very likely not even boot.
    
    For DT enabled machines ioapic_dynirq_base is irrelevant and not
    updated, so simply map the IRQ base 1:1 instead.
    
    Reported-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
    Tested-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
    Tested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: alan@linux.intel.com
    Cc: bp@alien8.de
    Cc: cheol.yong.kim@intel.com
    Cc: qi-ming.wu@intel.com
    Cc: rahul.tanwar@intel.com
    Cc: rppt@linux.ibm.com
    Cc: tony.luck@intel.com
    Link: http://lkml.kernel.org/r/20190821081330.1187-1-rahul.tanwar@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 422abacdb9e19f5ddd0d768527cf6611c813f913
Author: Prashant Malani <pmalani@chromium.org>
Date:   Sat Aug 24 01:36:19 2019 -0700

    r8152: Set memory to all 0xFFs on failed reg reads
    
    [ Upstream commit f53a7ad189594a112167efaf17ea8d0242b5ac00 ]
    
    get_registers() blindly copies the memory written to by the
    usb_control_msg() call even if the underlying urb failed.
    
    This could lead to junk register values being read by the driver, since
    some indirect callers of get_registers() ignore the return values. One
    example is:
      ocp_read_dword() ignores the return value of generic_ocp_read(), which
      calls get_registers().
    
    So, emulate PCI "Master Abort" behavior by setting the buffer to all
    0xFFs when usb_control_msg() fails.
    
    This patch is copied from the r8152 driver (v2.12.0) published by
    Realtek (www.realtek.com).
    
    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    Acked-by: Hayes Wang <hayeswang@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1653da6670412a3fb3a11b413442f7fcbf78b61
Author: Sven Eckelmann <sven@narfation.org>
Date:   Thu Aug 22 08:55:36 2019 +0200

    batman-adv: Only read OGM2 tvlv_len after buffer len check
    
    [ Upstream commit 0ff0f15a32c093381ad1abc06abe85afb561ab28 ]
    
    Multiple batadv_ogm2_packet can be stored in an skbuff. The functions
    batadv_v_ogm_send_to_if() uses batadv_v_ogm_aggr_packet() to check if there
    is another additional batadv_ogm2_packet in the skb or not before they
    continue processing the packet.
    
    The length for such an OGM2 is BATADV_OGM2_HLEN +
    batadv_ogm2_packet->tvlv_len. The check must first check that at least
    BATADV_OGM2_HLEN bytes are available before it accesses tvlv_len (which is
    part of the header. Otherwise it might try read outside of the currently
    available skbuff to get the content of tvlv_len.
    
    Fixes: 9323158ef9f4 ("batman-adv: OGMv2 - implement originators logic")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71c369621a164840012200b22da9e84a254bb223
Author: Doug Berger <opendmb@gmail.com>
Date:   Mon Jul 1 18:50:11 2019 +0100

    ARM: 8874/1: mm: only adjust sections of valid mm structures
    
    [ Upstream commit c51bc12d06b3a5494fbfcbd788a8e307932a06e9 ]
    
    A timing hazard exists when an early fork/exec thread begins
    exiting and sets its mm pointer to NULL while a separate core
    tries to update the section information.
    
    This commit ensures that the mm pointer is not NULL before
    setting its section parameters. The arguments provided by
    commit 11ce4b33aedc ("ARM: 8672/1: mm: remove tasklist locking
    from update_sections_early()") are equally valid for not
    requiring grabbing the task_lock around this check.
    
    Fixes: 08925c2f124f ("ARM: 8464/1: Update all mm structures with section adjustments")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Acked-by: Laura Abbott <labbott@redhat.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Rob Herring <robh@kernel.org>
    Cc: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
    Cc: Peng Fan <peng.fan@nxp.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbfb3eaf5aa6943216b24c60e9329aa13cc836e7
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Tue Aug 20 23:46:36 2019 -0500

    qed: Add cleanup in qed_slowpath_start()
    
    [ Upstream commit de0e4fd2f07ce3bbdb69dfb8d9426b7227451b69 ]
    
    If qed_mcp_send_drv_version() fails, no cleanup is executed, leading to
    memory leaks. To fix this issue, introduce the label 'err4' to perform the
    cleanup work before returning the error.
    
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Acked-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd783b45be094c15f63cafd93adbaa8b9ae03ffb
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Aug 19 07:04:25 2019 +0200

    Kconfig: Fix the reference to the IDT77105 Phy driver in the description of ATM_NICSTAR_USE_IDT77105
    
    [ Upstream commit cd9d4ff9b78fcd0fc4708900ba3e52e71e1a7690 ]
    
    This should be IDT77105, not IDT77015.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a4086ea0b36714d003e7975e1ddf2f5454c081c
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Aug 14 14:19:09 2019 -0400

    NFS: Fix initialisation of I/O result struct in nfs_pgio_rpcsetup
    
    [ Upstream commit 17d8c5d145000070c581f2a8aa01edc7998582ab ]
    
    Initialise the result count to 0 rather than initialising it to the
    argument count. The reason is that we want to ensure we record the
    I/O stats correctly in the case where an error is returned (for
    instance in the layoutstats).
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88acd562ce7c45a0839302e3fe5923ba56ea5ca7
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Aug 9 15:03:11 2019 -0400

    NFSv4: Fix return values for nfs4_file_open()
    
    [ Upstream commit 90cf500e338ab3f3c0f126ba37e36fb6a9058441 ]
    
    Currently, we are translating RPC level errors such as timeouts,
    as well as interrupts etc into EOPENSTALE, which forces a single
    replay of the open attempt. What we actually want to do is
    force the replay only in the cases where the returned error
    indicates that the file may have changed on the server.
    
    So the fix is to spell out the exact set of errors where we want
    to return EOPENSTALE.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f24169631c0894ce6625ad9d0be48e8feffb2d7
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Mon Aug 12 18:18:07 2019 +0200

    s390/bpf: use 32-bit index for tail calls
    
    [ Upstream commit 91b4db5313a2c793aabc2143efb8ed0cf0fdd097 ]
    
    "p runtime/jit: pass > 32bit index to tail_call" fails when
    bpf_jit_enable=1, because the tail call is not executed.
    
    This in turn is because the generated code assumes index is 64-bit,
    while it must be 32-bit, and as a result prog array bounds check fails,
    while it should pass. Even if bounds check would have passed, the code
    that follows uses 64-bit index to compute prog array offset.
    
    Fix by using clrj instead of clgrj for comparing index with array size,
    and also by using llgfr for truncating index to 32 bits before using it
    to compute prog array offset.
    
    Fixes: 6651ee070b31 ("s390/bpf: implement bpf_tail_call() helper")
    Reported-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
    Acked-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ce8e59aed7ccc444637927366632109cb18add4
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue Jul 23 04:37:45 2019 -0700

    ARM: OMAP2+: Fix omap4 errata warning on other SoCs
    
    [ Upstream commit 45da5e09dd32fa98c32eaafe2513db6bd75e2f4f ]
    
    We have errata i688 workaround produce warnings on SoCs other than
    omap4 and omap5:
    
    omap4_sram_init:Unable to allocate sram needed to handle errata I688
    omap4_sram_init:Unable to get sram pool needed to handle errata I688
    
    This is happening because there is no ti,omap4-mpu node, or no SRAM
    to configure for the other SoCs, so let's remove the warning based
    on the SoC revision checks.
    
    As nobody has complained it seems that the other SoC variants do not
    need this workaround.
    
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0d28a97e257b3325b3ced64bc8142047cf748d1
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Mon Aug 12 17:03:32 2019 +0200

    s390/bpf: fix lcgr instruction encoding
    
    [ Upstream commit bb2d267c448f4bc3a3389d97c56391cb779178ae ]
    
    "masking, test in bounds 3" fails on s390, because
    BPF_ALU64_IMM(BPF_NEG, BPF_REG_2, 0) ignores the top 32 bits of
    BPF_REG_2. The reason is that JIT emits lcgfr instead of lcgr.
    The associated comment indicates that the code was intended to
    emit lcgr in the first place, it's just that the wrong opcode
    was used.
    
    Fix by using the correct opcode.
    
    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Acked-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8e4b1c9663a9e02c56704ddeb6c807094816f55
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Jul 22 03:44:52 2019 -0700

    ARM: OMAP2+: Fix missing SYSC_HAS_RESET_STATUS for dra7 epwmss
    
    [ Upstream commit afd58b162e48076e3fe66d08a69eefbd6fe71643 ]
    
    TRM says PWMSS_SYSCONFIG bit for SOFTRESET changes to zero when
    reset is completed. Let's configure it as otherwise we get warnings
    on boot when we check the data against dts provided data. Eventually
    the legacy platform data will be just dropped, but let's fix the
    warning first.
    
    Reviewed-by: Suman Anna <s-anna@ti.com>
    Tested-by: Keerthy <j-keerthy@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21dfacaf201ed13af70a8bd3e66bcf18cdb63b35
Author: Wen Huang <huangwenabc@gmail.com>
Date:   Wed Aug 28 10:07:51 2019 +0800

    mwifiex: Fix three heap overflow at parsing element in cfg80211_ap_settings
    
    commit 7caac62ed598a196d6ddf8d9c121e12e082cac3a upstream.
    
    mwifiex_update_vs_ie(),mwifiex_set_uap_rates() and
    mwifiex_set_wmm_params() call memcpy() without checking
    the destination size.Since the source is given from
    user-space, this may trigger a heap buffer overflow.
    
    Fix them by putting the length check before performing memcpy().
    
    This fix addresses CVE-2019-14814,CVE-2019-14815,CVE-2019-14816.
    
    Signed-off-by: Wen Huang <huangwenabc@gmail.com>
    Acked-by: Ganapathi Bhat <gbhat@marvell.comg>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b30e8bdea5f833d22364038ea5a782dae0061eb
Author: Razvan Stefanescu <razvan.stefanescu@microchip.com>
Date:   Tue Aug 13 10:40:25 2019 +0300

    tty/serial: atmel: reschedule TX after RX was started
    
    commit d2ace81bf902a9f11d52e59e5d232d2255a0e353 upstream.
    
    When half-duplex RS485 communication is used, after RX is started, TX
    tasklet still needs to be  scheduled tasklet. This avoids console freezing
    when more data is to be transmitted, if the serial communication is not
    closed.
    
    Fixes: 69646d7a3689 ("tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped")
    Signed-off-by: Razvan Stefanescu <razvan.stefanescu@microchip.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190813074025.16218-1-razvan.stefanescu@microchip.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 465120d63a2f3d849df99edcafe7f10d32e09a32
Author: Chunyan Zhang <chunyan.zhang@unisoc.com>
Date:   Thu Sep 5 15:41:51 2019 +0800

    serial: sprd: correct the wrong sequence of arguments
    
    commit 9c801e313195addaf11c16e155f50789d6ebfd19 upstream.
    
    The sequence of arguments which was passed to handle_lsr_errors() didn't
    match the parameters defined in that function, &lsr was passed to flag
    and &flag was passed to lsr, this patch fixed that.
    
    Fixes: b7396a38fb28 ("tty/serial: Add Spreadtrum sc9836-uart driver support")
    Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
    Signed-off-by: Chunyan Zhang <zhang.lyra@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190905074151.5268-1-zhang.lyra@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52cb3fd60ec0a1c9b61cd28bae4e8c1d377e7b60
Author: Matt Delco <delco@chromium.org>
Date:   Mon Sep 16 14:16:54 2019 -0700

    KVM: coalesced_mmio: add bounds checking
    
    commit b60fe990c6b07ef6d4df67bc0530c7c90a62623a upstream.
    
    The first/last indexes are typically shared with a user app.
    The app can change the 'last' index that the kernel uses
    to store the next result.  This change sanity checks the index
    before using it for writing to a potentially arbitrary address.
    
    This fixes CVE-2019-14821.
    
    Cc: stable@vger.kernel.org
    Fixes: 5f94c1741bdc ("KVM: Add coalesced MMIO support (common part)")
    Signed-off-by: Matt Delco <delco@chromium.org>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reported-by: syzbot+983c866c3dd6efa3662a@syzkaller.appspotmail.com
    [Use READ_ONCE. - Paolo]
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08ea4ff33d782f7f2924644d122b6fcb9d43abff
Author: Dongli Zhang <dongli.zhang@oracle.com>
Date:   Mon Sep 16 11:46:59 2019 +0800

    xen-netfront: do not assume sk_buff_head list is empty in error handling
    
    [ Upstream commit 00b368502d18f790ab715e055869fd4bb7484a9b ]
    
    When skb_shinfo(skb) is not able to cache extra fragment (that is,
    skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS), xennet_fill_frags() assumes
    the sk_buff_head list is already empty. As a result, cons is increased only
    by 1 and returns to error handling path in xennet_poll().
    
    However, if the sk_buff_head list is not empty, queue->rx.rsp_cons may be
    set incorrectly. That is, queue->rx.rsp_cons would point to the rx ring
    buffer entries whose queue->rx_skbs[i] and queue->grant_rx_ref[i] are
    already cleared to NULL. This leads to NULL pointer access in the next
    iteration to process rx ring buffer entries.
    
    Below is how xennet_poll() does error handling. All remaining entries in
    tmpq are accounted to queue->rx.rsp_cons without assuming how many
    outstanding skbs are remained in the list.
    
     985 static int xennet_poll(struct napi_struct *napi, int budget)
    ... ...
    1032           if (unlikely(xennet_set_skb_gso(skb, gso))) {
    1033                   __skb_queue_head(&tmpq, skb);
    1034                   queue->rx.rsp_cons += skb_queue_len(&tmpq);
    1035                   goto err;
    1036           }
    
    It is better to always have the error handling in the same way.
    
    Fixes: ad4f15dc2c70 ("xen/netfront: don't bug in case of too many frags")
    Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8bfa2fd7cc7114ab552a662662dfede0914903e
Author: Corey Minyard <cminyard@mvista.com>
Date:   Thu Sep 19 07:16:46 2019 -0500

    x86/boot: Add missing bootparam that breaks boot on some platforms
    
    Change
    
      a90118c445cc x86/boot: Save fields explicitly, zero out everything else
    
    modified the way boot parameters were saved on x86.  When this was
    backported, e820_table didn't exists, and that change was dropped.
    Unfortunately, e820_table did exist, it was just named e820_map
    in this kernel version.
    
    This was breaking booting on a Supermicro Super Server/A2SDi-2C-HLN4F
    with a Denverton CPU.  Adding e820_map to the saved boot params table
    fixes the issue.
    
    Cc: <stable@vger.kernel.org> # 4.9.x, 4.4.x
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a49808a8f18f3b7e56a512245522dc020b0d4bd2
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Mon Jul 1 20:04:42 2019 +0530

    powerpc/mm/radix: Use the right page size for vmemmap mapping
    
    commit 89a3496e0664577043666791ec07fb731d57c950 upstream.
    
    We use mmu_vmemmap_psize to find the page size for mapping the vmmemap area.
    With radix translation, we are suboptimally setting this value to PAGE_SIZE.
    
    We do check for 2M page size support and update mmu_vmemap_psize to use
    hugepage size but we suboptimally reset the value to PAGE_SIZE in
    radix__early_init_mmu(). This resulted in always mapping vmemmap area with
    64K page size.
    
    Fixes: 2bfd65e45e87 ("powerpc/mm/radix: Add radix callbacks for early init routines")
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27d3d8cdf804d2e8e625f4ead09212877eae4208
Author: Sean Young <sean@mess.org>
Date:   Tue Aug 13 13:45:09 2019 -0300

    media: tm6000: double free if usb disconnect while streaming
    
    commit 699bf94114151aae4dceb2d9dbf1a6312839dcae upstream.
    
    The usb_bulk_urb will kfree'd on disconnect, so ensure the pointer is set
    to NULL after each free.
    
    stop stream
    urb killing
    urb buffer free
    tm6000: got start feed request tm6000_start_feed
    tm6000: got start stream request tm6000_start_stream
    tm6000: pipe reset
    tm6000: got start feed request tm6000_start_feed
    tm6000: got start feed request tm6000_start_feed
    tm6000: got start feed request tm6000_start_feed
    tm6000: got start feed request tm6000_start_feed
    tm6000: IR URB failure: status: -71, length 0
    xhci_hcd 0000:00:14.0: ERROR unknown event type 37
    xhci_hcd 0000:00:14.0: ERROR unknown event type 37
    tm6000:  error tm6000_urb_received
    usb 1-2: USB disconnect, device number 5
    tm6000: disconnecting tm6000 #0
    ==================================================================
    BUG: KASAN: use-after-free in dvb_fini+0x75/0x140 [tm6000_dvb]
    Read of size 8 at addr ffff888241044060 by task kworker/2:0/22
    
    CPU: 2 PID: 22 Comm: kworker/2:0 Tainted: G        W         5.3.0-rc4+ #1
    Hardware name: LENOVO 20KHCTO1WW/20KHCTO1WW, BIOS N23ET65W (1.40 ) 07/02/2019
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     dump_stack+0x9a/0xf0
     print_address_description.cold+0xae/0x34f
     __kasan_report.cold+0x75/0x93
     ? tm6000_fillbuf+0x390/0x3c0 [tm6000_alsa]
     ? dvb_fini+0x75/0x140 [tm6000_dvb]
     kasan_report+0xe/0x12
     dvb_fini+0x75/0x140 [tm6000_dvb]
     tm6000_close_extension+0x51/0x80 [tm6000]
     tm6000_usb_disconnect.cold+0xd4/0x105 [tm6000]
     usb_unbind_interface+0xe4/0x390
     device_release_driver_internal+0x121/0x250
     bus_remove_device+0x197/0x260
     device_del+0x268/0x550
     ? __device_links_no_driver+0xd0/0xd0
     ? usb_remove_ep_devs+0x30/0x3b
     usb_disable_device+0x122/0x400
     usb_disconnect+0x153/0x430
     hub_event+0x800/0x1e40
     ? trace_hardirqs_on_thunk+0x1a/0x20
     ? hub_port_debounce+0x1f0/0x1f0
     ? retint_kernel+0x10/0x10
     ? lock_is_held_type+0xf1/0x130
     ? hub_port_debounce+0x1f0/0x1f0
     ? process_one_work+0x4ae/0xa00
     process_one_work+0x4ba/0xa00
     ? pwq_dec_nr_in_flight+0x160/0x160
     ? do_raw_spin_lock+0x10a/0x1d0
     worker_thread+0x7a/0x5c0
     ? process_one_work+0xa00/0xa00
     kthread+0x1d5/0x200
     ? kthread_create_worker_on_cpu+0xd0/0xd0
     ret_from_fork+0x3a/0x50
    
    Allocated by task 2682:
     save_stack+0x1b/0x80
     __kasan_kmalloc.constprop.0+0xc2/0xd0
     usb_alloc_urb+0x28/0x60
     tm6000_start_feed+0x10a/0x300 [tm6000_dvb]
     dmx_ts_feed_start_filtering+0x86/0x120 [dvb_core]
     dvb_dmxdev_start_feed+0x121/0x180 [dvb_core]
     dvb_dmxdev_filter_start+0xcb/0x540 [dvb_core]
     dvb_demux_do_ioctl+0x7ed/0x890 [dvb_core]
     dvb_usercopy+0x97/0x1f0 [dvb_core]
     dvb_demux_ioctl+0x11/0x20 [dvb_core]
     do_vfs_ioctl+0x5d8/0x9d0
     ksys_ioctl+0x5e/0x90
     __x64_sys_ioctl+0x3d/0x50
     do_syscall_64+0x74/0xe0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 22:
     save_stack+0x1b/0x80
     __kasan_slab_free+0x12c/0x170
     kfree+0xfd/0x3a0
     xhci_giveback_urb_in_irq+0xfe/0x230
     xhci_td_cleanup+0x276/0x340
     xhci_irq+0x1129/0x3720
     __handle_irq_event_percpu+0x6e/0x420
     handle_irq_event_percpu+0x6f/0x100
     handle_irq_event+0x55/0x84
     handle_edge_irq+0x108/0x3b0
     handle_irq+0x2e/0x40
     do_IRQ+0x83/0x1a0
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5c051b6503c0ba543e993cfc295b64f096e0a29
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Sep 4 11:56:27 2019 -0400

    USB: usbcore: Fix slab-out-of-bounds bug during device reset
    
    commit 3dd550a2d36596a1b0ee7955da3b611c031d3873 upstream.
    
    The syzbot fuzzer provoked a slab-out-of-bounds error in the USB core:
    
    BUG: KASAN: slab-out-of-bounds in memcmp+0xa6/0xb0 lib/string.c:904
    Read of size 1 at addr ffff8881d175bed6 by task kworker/0:3/2746
    
    CPU: 0 PID: 2746 Comm: kworker/0:3 Not tainted 5.3.0-rc5+ #28
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0xca/0x13e lib/dump_stack.c:113
      print_address_description+0x6a/0x32c mm/kasan/report.c:351
      __kasan_report.cold+0x1a/0x33 mm/kasan/report.c:482
      kasan_report+0xe/0x12 mm/kasan/common.c:612
      memcmp+0xa6/0xb0 lib/string.c:904
      memcmp include/linux/string.h:400 [inline]
      descriptors_changed drivers/usb/core/hub.c:5579 [inline]
      usb_reset_and_verify_device+0x564/0x1300 drivers/usb/core/hub.c:5729
      usb_reset_device+0x4c1/0x920 drivers/usb/core/hub.c:5898
      rt2x00usb_probe+0x53/0x7af
    drivers/net/wireless/ralink/rt2x00/rt2x00usb.c:806
    
    The error occurs when the descriptors_changed() routine (called during
    a device reset) attempts to compare the old and new BOS and capability
    descriptors.  The length it uses for the comparison is the
    wTotalLength value stored in BOS descriptor, but this value is not
    necessarily the same as the length actually allocated for the
    descriptors.  If it is larger the routine will call memcmp() with a
    length that is too big, thus reading beyond the end of the allocated
    region and leading to this fault.
    
    The kernel reads the BOS descriptor twice: first to get the total
    length of all the capability descriptors, and second to read it along
    with all those other descriptors.  A malicious (or very faulty) device
    may send different values for the BOS descriptor fields each time.
    The memory area will be allocated using the wTotalLength value read
    the first time, but stored within it will be the value read the second
    time.
    
    To prevent this possibility from causing any errors, this patch
    modifies the BOS descriptor after it has been read the second time:
    It sets the wTotalLength field to the actual length of the descriptors
    that were read in and validated.  Then the memcpy() call, or any other
    code using these descriptors, will be able to rely on wTotalLength
    being valid.
    
    Reported-and-tested-by: syzbot+35f4d916c623118d576e@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.1909041154260.1722-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d076efab417bbab5c5ac683b4b14b0451da6c2ec
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 28 10:56:48 2019 +0200

    x86/build: Add -Wnoaddress-of-packed-member to REALMODE_CFLAGS, to silence GCC9 build warning
    
    commit 42e0e95474fc6076b5cd68cab8fa0340a1797a72 upstream.
    
    One of the very few warnings I have in the current build comes from
    arch/x86/boot/edd.c, where I get the following with a gcc9 build:
    
       arch/x86/boot/edd.c: In function ‘query_edd’:
       arch/x86/boot/edd.c:148:11: warning: taking address of packed member of ‘struct boot_params’ may result in an unaligned pointer value [-Waddress-of-packed-member]
         148 |  mbrptr = boot_params.edd_mbr_sig_buffer;
             |           ^~~~~~~~~~~
    
    This warning triggers because we throw away all the CFLAGS and then make
    a new set for REALMODE_CFLAGS, so the -Wno-address-of-packed-member we
    added in the following commit is not present:
    
      6f303d60534c ("gcc-9: silence 'address-of-packed-member' warning")
    
    The simplest solution for now is to adjust the warning for this version
    of CFLAGS as well, but it would definitely make sense to examine whether
    REALMODE_CFLAGS could be derived from CFLAGS, so that it picks up changes
    in the compiler flags environment automatically.
    
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Acked-by: Borislav Petkov <bp@alien8.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3248ed5e1f509c4a818d4bcf409851b2b88b147
Author: Jean Delvare <jdelvare@suse.de>
Date:   Sun Jul 28 18:42:55 2019 +0200

    nvmem: Use the same permissions for eeprom as for nvmem
    
    commit e70d8b287301eb6d7c7761c6171c56af62110ea3 upstream.
    
    The compatibility "eeprom" attribute is currently root-only no
    matter what the configuration says. The "nvmem" attribute does
    respect the setting of the root_only configuration bit, so do the
    same for "eeprom".
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: b6c217ab9be6 ("nvmem: Add backwards compatibility support for older EEPROM drivers.")
    Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20190728184255.563332e6@endymion
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22571a43d06412a7681de4d7ee383b70a73d8e43
Author: Nishka Dasgupta <nishkadg.linux@gmail.com>
Date:   Sat Jul 6 19:00:21 2019 +0530

    drm/mediatek: mtk_drm_drv.c: Add of_node_put() before goto
    
    commit 165d42c012be69900f0e2f8545626cb9e7d4a832 upstream.
    
    Each iteration of for_each_child_of_node puts the previous
    node, but in the case of a goto from the middle of the loop, there is
    no put, thus causing a memory leak. Hence add an of_node_put before the
    goto in two places.
    Issue found with Coccinelle.
    
    Fixes: 119f5173628a (drm/mediatek: Add DRM Driver for Mediatek SoC MT8173)
    
    Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
    Signed-off-by: CK Hu <ck.hu@mediatek.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45665652447bad5af4ac3632d1ba6235da296ccb
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:15 2019 +0000

    crypto: talitos - HMAC SNOOP NO AFEU mode requires SW icv checking.
    
    commit 4bbfb839259a9c96a0be872e16f7471b7136aee5 upstream.
    
    In that mode, hardware ICV verification is not supported.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 7405c8d7ff97 ("crypto: talitos - templates for AEAD using HMAC_SNOOP_NO_AFEU")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3e16cd9418570f6ebfb254a9544eb3291727935
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:14 2019 +0000

    crypto: talitos - Do not modify req->cryptlen on decryption.
    
    commit 7ede4c36cf7c6516986ee9d75b197c8bf73ea96f upstream.
    
    For decrypt, req->cryptlen includes the size of the authentication
    part while all functions of the driver expect cryptlen to be
    the size of the encrypted data.
    
    As it is not expected to change req->cryptlen, this patch
    implements local calculation of cryptlen.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1de42fdfc6aca5b248483fab639a02328c96d53
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:13 2019 +0000

    crypto: talitos - fix ECB algs ivsize
    
    commit d84cc9c9524ec5973a337533e6d8ccd3e5f05f2b upstream.
    
    ECB's ivsize must be 0.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 5e75ae1b3cef ("crypto: talitos - add new crypto modes")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 487c1991f3140378a5b05da2939f9d331f8b7793
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:12 2019 +0000

    crypto: talitos - check data blocksize in ablkcipher.
    
    commit ee483d32ee1a1a7f7d7e918fbc350c790a5af64a upstream.
    
    When data size is not a multiple of the alg's block size,
    the SEC generates an error interrupt and dumps the registers.
    And for NULL size, the SEC does just nothing and the interrupt
    is awaited forever.
    
    This patch ensures the data size is correct before submitting
    the request to the SEC engine.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f065ad3122ed65f164ca8077492371a65c2b069c
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:11 2019 +0000

    crypto: talitos - fix CTR alg blocksize
    
    commit b9a05b6041cb9810a291315569b2af0d63c3680a upstream.
    
    CTR has a blocksize of 1.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 5e75ae1b3cef ("crypto: talitos - add new crypto modes")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e2a5c1d0f4520896ac170b6c30fb85678c53d0b
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:10 2019 +0000

    crypto: talitos - check AES key size
    
    commit 1ba34e71e9e56ac29a52e0d42b6290f3dc5bfd90 upstream.
    
    Although the HW accepts any size and silently truncates
    it to the correct length, the extra tests expects EINVAL
    to be returned when the key size is not valid.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 052278b3a73cbea0a6427da97dc5623e43c9c2c0
Author: Muchun Song <smuchun@gmail.com>
Date:   Sat Jul 27 11:21:22 2019 +0800

    driver core: Fix use-after-free and double free on glue directory
    
    commit ac43432cb1f5c2950408534987e57c2071e24d8f upstream.
    
    There is a race condition between removing glue directory and adding a new
    device under the glue dir. It can be reproduced in following test:
    
    CPU1:                                         CPU2:
    
    device_add()
      get_device_parent()
        class_dir_create_and_add()
          kobject_add_internal()
            create_dir()    // create glue_dir
    
                                                  device_add()
                                                    get_device_parent()
                                                      kobject_get() // get glue_dir
    
    device_del()
      cleanup_glue_dir()
        kobject_del(glue_dir)
    
                                                    kobject_add()
                                                      kobject_add_internal()
                                                        create_dir() // in glue_dir
                                                          sysfs_create_dir_ns()
                                                            kernfs_create_dir_ns(sd)
    
          sysfs_remove_dir() // glue_dir->sd=NULL
          sysfs_put()        // free glue_dir->sd
    
                                                              // sd is freed
                                                              kernfs_new_node(sd)
                                                                kernfs_get(glue_dir)
                                                                kernfs_add_one()
                                                                kernfs_put()
    
    Before CPU1 remove last child device under glue dir, if CPU2 add a new
    device under glue dir, the glue_dir kobject reference count will be
    increase to 2 via kobject_get() in get_device_parent(). And CPU2 has
    been called kernfs_create_dir_ns(), but not call kernfs_new_node().
    Meanwhile, CPU1 call sysfs_remove_dir() and sysfs_put(). This result in
    glue_dir->sd is freed and it's reference count will be 0. Then CPU2 call
    kernfs_get(glue_dir) will trigger a warning in kernfs_get() and increase
    it's reference count to 1. Because glue_dir->sd is freed by CPU1, the next
    call kernfs_add_one() by CPU2 will fail(This is also use-after-free)
    and call kernfs_put() to decrease reference count. Because the reference
    count is decremented to 0, it will also call kmem_cache_free() to free
    the glue_dir->sd again. This will result in double free.
    
    In order to avoid this happening, we also should make sure that kernfs_node
    for glue_dir is released in CPU1 only when refcount for glue_dir kobj is
    1 to fix this race.
    
    The following calltrace is captured in kernel 4.14 with the following patch
    applied:
    
    commit 726e41097920 ("drivers: core: Remove glue dirs from sysfs earlier")
    
    --------------------------------------------------------------------------
    [    3.633703] WARNING: CPU: 4 PID: 513 at .../fs/kernfs/dir.c:494
                    Here is WARN_ON(!atomic_read(&kn->count) in kernfs_get().
    ....
    [    3.633986] Call trace:
    [    3.633991]  kernfs_create_dir_ns+0xa8/0xb0
    [    3.633994]  sysfs_create_dir_ns+0x54/0xe8
    [    3.634001]  kobject_add_internal+0x22c/0x3f0
    [    3.634005]  kobject_add+0xe4/0x118
    [    3.634011]  device_add+0x200/0x870
    [    3.634017]  _request_firmware+0x958/0xc38
    [    3.634020]  request_firmware_into_buf+0x4c/0x70
    ....
    [    3.634064] kernel BUG at .../mm/slub.c:294!
                    Here is BUG_ON(object == fp) in set_freepointer().
    ....
    [    3.634346] Call trace:
    [    3.634351]  kmem_cache_free+0x504/0x6b8
    [    3.634355]  kernfs_put+0x14c/0x1d8
    [    3.634359]  kernfs_create_dir_ns+0x88/0xb0
    [    3.634362]  sysfs_create_dir_ns+0x54/0xe8
    [    3.634366]  kobject_add_internal+0x22c/0x3f0
    [    3.634370]  kobject_add+0xe4/0x118
    [    3.634374]  device_add+0x200/0x870
    [    3.634378]  _request_firmware+0x958/0xc38
    [    3.634381]  request_firmware_into_buf+0x4c/0x70
    --------------------------------------------------------------------------
    
    Fixes: 726e41097920 ("drivers: core: Remove glue dirs from sysfs earlier")
    Signed-off-by: Muchun Song <smuchun@gmail.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Prateek Sood <prsood@codeaurora.org>
    Link: https://lore.kernel.org/r/20190727032122.24639-1-smuchun@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a29928adcc75b18cfa24f1280c2d42c61f3087b8
Author: Xiaolei Li <xiaolei.li@mediatek.com>
Date:   Tue May 7 18:25:41 2019 +0800

    mtd: rawnand: mtk: Fix wrongly assigned OOB buffer pointer issue
    
    commit 336d4b138be2dad372b67a2388e42805c48aaa38 upstream.
    
    One main goal of the function mtk_nfc_update_ecc_stats is to check
    whether sectors are all empty. If they are empty, set these sectors's
    data buffer and OOB buffer as 0xff.
    
    But now, the sector OOB buffer pointer is wrongly assigned. We always
    do memset from sector 0.
    
    To fix this issue, pass start sector number to make OOB buffer pointer
    be properly assigned.
    
    Fixes: 1d6b1e464950 ("mtd: mediatek: driver for MTK Smart Device")
    Signed-off-by: Xiaolei Li <xiaolei.li@mediatek.com>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8f45c1ef20a6d78f1bdc55dfa0c80a5a9217074
Author: Douglas Anderson <dianders@chromium.org>
Date:   Fri May 3 14:22:08 2019 -0700

    clk: rockchip: Don't yell about bad mmc phases when getting
    
    commit 6943b839721ad4a31ad2bacf6e71b21f2dfe3134 upstream.
    
    At boot time, my rk3288-veyron devices yell with 8 lines that look
    like this:
      [    0.000000] rockchip_mmc_get_phase: invalid clk rate
    
    This is because the clock framework at clk_register() time tries to
    get the phase but we don't have a parent yet.
    
    While the errors appear to be harmless they are still ugly and, in
    general, we don't want yells like this in the log unless they are
    important.
    
    There's no real reason to be yelling here.  We can still return
    -EINVAL to indicate that the phase makes no sense without a parent.
    If someone really tries to do tuning and the clock is reported as 0
    then we'll see the yells in rockchip_mmc_set_phase().
    
    Fixes: 4bf59902b500 ("clk: rockchip: Prevent calculating mmc phase if clock rate is zero")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bb1b6495f2a77c5fe0568779022a8cfaa0c6966
Author: Paul Burton <paul.burton@mips.com>
Date:   Mon Jan 28 22:21:17 2019 +0000

    MIPS: VDSO: Use same -m%-float cflag as the kernel proper
    
    commit 0648e50e548d881d025b9419a1a168753c8e2bf7 upstream.
    
    The MIPS VDSO build currently doesn't provide the -msoft-float flag to
    the compiler as the kernel proper does. This results in an attempt to
    use the compiler's default floating point configuration, which can be
    problematic in cases where this is incompatible with the target CPU's
    -march= flag. For example decstation_defconfig fails to build using
    toolchains in which gcc was configured --with-fp-32=xx with the
    following error:
    
        LDS     arch/mips/vdso/vdso.lds
      cc1: error: '-march=r3000' requires '-mfp32'
      make[2]: *** [scripts/Makefile.build:379: arch/mips/vdso/vdso.lds] Error 1
    
    The kernel proper avoids this error because we build with the
    -msoft-float compiler flag, rather than using the compiler's default.
    Pass this flag through to the VDSO build so that it too becomes agnostic
    to the toolchain's floating point configuration.
    
    Note that this is filtered out from KBUILD_CFLAGS rather than simply
    always using -msoft-float such that if we switch the kernel to use
    -mno-float in the future the VDSO will automatically inherit the change.
    
    The VDSO doesn't actually include any floating point code, and its
    .MIPS.abiflags section is already manually generated to specify that
    it's compatible with any floating point ABI. As such this change should
    have no effect on the resulting VDSO, apart from fixing the build
    failure for affected toolchains.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reported-by: Kevin Hilman <khilman@baylibre.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    References: https://lore.kernel.org/linux-mips/1477843551-21813-1-git-send-email-linux@roeck-us.net/
    References: https://kernelci.org/build/id/5c4e4ae059b5142a249ad004/logs/
    Fixes: ebb5e78cc634 ("MIPS: Initial implementation of a VDSO")
    Cc: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@vger.kernel.org
    Cc: stable@vger.kernel.org # v4.4+
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23f0b446cf7ce9c926afd300473d087ad6720132
Author: Paul Burton <paul.burton@mips.com>
Date:   Tue Dec 12 09:57:47 2017 +0000

    MIPS: VDSO: Prevent use of smp_processor_id()
    
    commit 351fdddd366245c0fb4636f32edfb4198c8d6b8c upstream.
    
    VDSO code should not be using smp_processor_id(), since it is executed
    in user mode.
    Introduce a VDSO-specific path which will cause a compile-time
    or link-time error (depending upon support for __compiletime_error) if
    the VDSO ever incorrectly attempts to use smp_processor_id().
    
    [Matt Redfearn <matt.redfearn@imgtec.com>: Move before change to
    smp_processor_id in series]
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/17932/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfa37278978aa3a7d02724eca501e89892ea7dc7
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Sat Sep 14 00:26:27 2019 +0200

    KVM: nVMX: handle page fault in vmread
    
    commit f7eea636c3d505fe6f1d1066234f1aaf7171b681 upstream.
    
    The implementation of vmread to memory is still incomplete, as it
    lacks the ability to do vmread to I/O memory just like vmptrst.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09458c2b2792e233a766d5a8a4bf7e392c34a50e
Author: Fuqian Huang <huangfq.daxian@gmail.com>
Date:   Thu Sep 12 12:18:17 2019 +0800

    KVM: x86: work around leak of uninitialized stack contents
    
    commit 541ab2aeb28251bf7135c7961f3a6080eebcc705 upstream.
    
    Emulation of VMPTRST can incorrectly inject a page fault
    when passed an operand that points to an MMIO address.
    The page fault will use uninitialized kernel stack memory
    as the CR2 and error code.
    
    The right behavior would be to abort the VM with a KVM_EXIT_INTERNAL_ERROR
    exit to userspace; however, it is not an easy fix, so for now just ensure
    that the error code and CR2 are zero.
    
    Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com>
    Cc: stable@vger.kernel.org
    [add comment]
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9761a7fed014915072e0085ec37434125fb78c6b
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu Sep 12 13:54:38 2019 +0200

    KVM: s390: Do not leak kernel stack data in the KVM_S390_INTERRUPT ioctl
    
    commit 53936b5bf35e140ae27e4bbf0447a61063f400da upstream.
    
    When the userspace program runs the KVM_S390_INTERRUPT ioctl to inject
    an interrupt, we convert them from the legacy struct kvm_s390_interrupt
    to the new struct kvm_s390_irq via the s390int_to_s390irq() function.
    However, this function does not take care of all types of interrupts
    that we can inject into the guest later (see do_inject_vcpu()). Since we
    do not clear out the s390irq values before calling s390int_to_s390irq(),
    there is a chance that we copy random data from the kernel stack which
    could be leaked to the userspace later.
    
    Specifically, the problem exists with the KVM_S390_INT_PFAULT_INIT
    interrupt: s390int_to_s390irq() does not handle it, and the function
    __inject_pfault_init() later copies irq->u.ext which contains the
    random kernel stack data. This data can then be leaked either to
    the guest memory in __deliver_pfault_init(), or the userspace might
    retrieve it directly with the KVM_S390_GET_IRQ_STATE ioctl.
    
    Fix it by handling that interrupt type in s390int_to_s390irq(), too,
    and by making sure that the s390irq struct is properly pre-initialized.
    And while we're at it, make sure that s390int_to_s390irq() now
    directly returns -EINVAL for unknown interrupt types, so that we
    immediately get a proper error code in case we add more interrupt
    types to do_inject_vcpu() without updating s390int_to_s390irq()
    sometime in the future.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Link: https://lore.kernel.org/kvm/20190912115438.25761-1-thuth@redhat.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49a210f8966fd7b265532d4ed80b05b2c1b96e39
Author: Yunfeng Ye <yeyunfeng@huawei.com>
Date:   Wed Sep 4 20:46:25 2019 +0800

    genirq: Prevent NULL pointer dereference in resend_irqs()
    
    commit eddf3e9c7c7e4d0707c68d1bb22cc6ec8aef7d4a upstream.
    
    The following crash was observed:
    
      Unable to handle kernel NULL pointer dereference at 0000000000000158
      Internal error: Oops: 96000004 [#1] SMP
      pc : resend_irqs+0x68/0xb0
      lr : resend_irqs+0x64/0xb0
      ...
      Call trace:
       resend_irqs+0x68/0xb0
       tasklet_action_common.isra.6+0x84/0x138
       tasklet_action+0x2c/0x38
       __do_softirq+0x120/0x324
       run_ksoftirqd+0x44/0x60
       smpboot_thread_fn+0x1ac/0x1e8
       kthread+0x134/0x138
       ret_from_fork+0x10/0x18
    
    The reason for this is that the interrupt resend mechanism happens in soft
    interrupt context, which is a asynchronous mechanism versus other
    operations on interrupts. free_irq() does not take resend handling into
    account. Thus, the irq descriptor might be already freed before the resend
    tasklet is executed. resend_irqs() does not check the return value of the
    interrupt descriptor lookup and derefences the return value
    unconditionally.
    
      1):
      __setup_irq
        irq_startup
          check_irq_resend  // activate softirq to handle resend irq
      2):
      irq_domain_free_irqs
        irq_free_descs
          free_desc
            call_rcu(&desc->rcu, delayed_free_desc)
      3):
      __do_softirq
        tasklet_action
          resend_irqs
            desc = irq_to_desc(irq)
            desc->handle_irq(desc)  // desc is NULL --> Ooops
    
    Fix this by adding a NULL pointer check in resend_irqs() before derefencing
    the irq descriptor.
    
    Fixes: a4633adcdbc1 ("[PATCH] genirq: add genirq sw IRQ-retrigger")
    Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1630ae13-5c8e-901e-de09-e740b6a426a7@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bc698d90be7d6de9d53cdc387a5064ea47407c4
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Sep 10 15:26:49 2019 +0100

    Btrfs: fix assertion failure during fsync and use of stale transaction
    
    commit 410f954cb1d1c79ae485dd83a175f21954fd87cd upstream.
    
    Sometimes when fsync'ing a file we need to log that other inodes exist and
    when we need to do that we acquire a reference on the inodes and then drop
    that reference using iput() after logging them.
    
    That generally is not a problem except if we end up doing the final iput()
    (dropping the last reference) on the inode and that inode has a link count
    of 0, which can happen in a very short time window if the logging path
    gets a reference on the inode while it's being unlinked.
    
    In that case we end up getting the eviction callback, btrfs_evict_inode(),
    invoked through the iput() call chain which needs to drop all of the
    inode's items from its subvolume btree, and in order to do that, it needs
    to join a transaction at the helper function evict_refill_and_join().
    However because the task previously started a transaction at the fsync
    handler, btrfs_sync_file(), it has current->journal_info already pointing
    to a transaction handle and therefore evict_refill_and_join() will get
    that transaction handle from btrfs_join_transaction(). From this point on,
    two different problems can happen:
    
    1) evict_refill_and_join() will often change the transaction handle's
       block reserve (->block_rsv) and set its ->bytes_reserved field to a
       value greater than 0. If evict_refill_and_join() never commits the
       transaction, the eviction handler ends up decreasing the reference
       count (->use_count) of the transaction handle through the call to
       btrfs_end_transaction(), and after that point we have a transaction
       handle with a NULL ->block_rsv (which is the value prior to the
       transaction join from evict_refill_and_join()) and a ->bytes_reserved
       value greater than 0. If after the eviction/iput completes the inode
       logging path hits an error or it decides that it must fallback to a
       transaction commit, the btrfs fsync handle, btrfs_sync_file(), gets a
       non-zero value from btrfs_log_dentry_safe(), and because of that
       non-zero value it tries to commit the transaction using a handle with
       a NULL ->block_rsv and a non-zero ->bytes_reserved value. This makes
       the transaction commit hit an assertion failure at
       btrfs_trans_release_metadata() because ->bytes_reserved is not zero but
       the ->block_rsv is NULL. The produced stack trace for that is like the
       following:
    
       [192922.917158] assertion failed: !trans->bytes_reserved, file: fs/btrfs/transaction.c, line: 816
       [192922.917553] ------------[ cut here ]------------
       [192922.917922] kernel BUG at fs/btrfs/ctree.h:3532!
       [192922.918310] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
       [192922.918666] CPU: 2 PID: 883 Comm: fsstress Tainted: G        W         5.1.4-btrfs-next-47 #1
       [192922.919035] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
       [192922.919801] RIP: 0010:assfail.constprop.25+0x18/0x1a [btrfs]
       (...)
       [192922.920925] RSP: 0018:ffffaebdc8a27da8 EFLAGS: 00010286
       [192922.921315] RAX: 0000000000000051 RBX: ffff95c9c16a41c0 RCX: 0000000000000000
       [192922.921692] RDX: 0000000000000000 RSI: ffff95cab6b16838 RDI: ffff95cab6b16838
       [192922.922066] RBP: ffff95c9c16a41c0 R08: 0000000000000000 R09: 0000000000000000
       [192922.922442] R10: ffffaebdc8a27e70 R11: 0000000000000000 R12: ffff95ca731a0980
       [192922.922820] R13: 0000000000000000 R14: ffff95ca84c73338 R15: ffff95ca731a0ea8
       [192922.923200] FS:  00007f337eda4e80(0000) GS:ffff95cab6b00000(0000) knlGS:0000000000000000
       [192922.923579] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       [192922.923948] CR2: 00007f337edad000 CR3: 00000001e00f6002 CR4: 00000000003606e0
       [192922.924329] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       [192922.924711] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       [192922.925105] Call Trace:
       [192922.925505]  btrfs_trans_release_metadata+0x10c/0x170 [btrfs]
       [192922.925911]  btrfs_commit_transaction+0x3e/0xaf0 [btrfs]
       [192922.926324]  btrfs_sync_file+0x44c/0x490 [btrfs]
       [192922.926731]  do_fsync+0x38/0x60
       [192922.927138]  __x64_sys_fdatasync+0x13/0x20
       [192922.927543]  do_syscall_64+0x60/0x1c0
       [192922.927939]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
       (...)
       [192922.934077] ---[ end trace f00808b12068168f ]---
    
    2) If evict_refill_and_join() decides to commit the transaction, it will
       be able to do it, since the nested transaction join only increments the
       transaction handle's ->use_count reference counter and it does not
       prevent the transaction from getting committed. This means that after
       eviction completes, the fsync logging path will be using a transaction
       handle that refers to an already committed transaction. What happens
       when using such a stale transaction can be unpredictable, we are at
       least having a use-after-free on the transaction handle itself, since
       the transaction commit will call kmem_cache_free() against the handle
       regardless of its ->use_count value, or we can end up silently losing
       all the updates to the log tree after that iput() in the logging path,
       or using a transaction handle that in the meanwhile was allocated to
       another task for a new transaction, etc, pretty much unpredictable
       what can happen.
    
    In order to fix both of them, instead of using iput() during logging, use
    btrfs_add_delayed_iput(), so that the logging path of fsync never drops
    the last reference on an inode, that step is offloaded to a safe context
    (usually the cleaner kthread).
    
    The assertion failure issue was sporadically triggered by the test case
    generic/475 from fstests, which loads the dm error target while fsstress
    is running, which lead to fsync failing while logging inodes with -EIO
    errors and then trying later to commit the transaction, triggering the
    assertion failure.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c166e7dc7db7c6a58a8d23393aaed0e78475efb5
Author: Kent Gibson <warthog618@gmail.com>
Date:   Mon Sep 9 03:24:06 2019 +0000

    gpio: fix line flag validation in lineevent_create
    
    commit 5ca2f54b597c816df54ff1b28eb99cf7262b955d upstream.
    
    lineevent_create should not allow any of GPIOHANDLE_REQUEST_OUTPUT,
    GPIOHANDLE_REQUEST_OPEN_DRAIN or GPIOHANDLE_REQUEST_OPEN_SOURCE to be set.
    
    Fixes: d7c51b47ac11 ("gpio: userspace ABI for reading/writing GPIO lines")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71bbfc9042e9226cf10f129a2b28a89ba3c00c80
Author: Kent Gibson <warthog618@gmail.com>
Date:   Mon Sep 9 03:22:18 2019 +0000

    gpio: fix line flag validation in linehandle_create
    
    commit e95fbc130a162ba9ad956311b95aa0da269eea48 upstream.
    
    linehandle_create should not allow both GPIOHANDLE_REQUEST_INPUT
    and GPIOHANDLE_REQUEST_OUTPUT to be set.
    
    Fixes: d7c51b47ac11 ("gpio: userspace ABI for reading/writing GPIO lines")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Kent Gibson <warthog618@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea889f0492e4d5a1e1db373d9520856c50c7215b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Sep 16 16:59:01 2019 +0200

    Revert "MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur"
    
    This reverts commit 8ac4ad063e1a32e321a7a0e6ea9fd305a6ecd033 which is
    commit e4849aff1e169b86c561738daf8ff020e9de1011 upstream
    
    Guenter writes:
            Upstream commit e4849aff1e16 ("MIPS: SiByte: Enable swiotlb for SWARM,
            LittleSur and BigSur") results in build failures in v4.4.y and v4.14.y.
    
            make bigsur_defconfig:
    
            warning: (SIBYTE_SWARM && SIBYTE_SENTOSA && SIBYTE_BIGSUR && SWIOTLB_XEN && AMD_IOMMU) selects SWIOTLB which has unmet direct dependencies (CAVIUM_OCTEON_SOC || MACH_LOONGSON64 && CPU_LOONGSON3 || NLM_XLP_BOARD || NLM_XLR_BOARD)
            warning: (SIBYTE_SWARM && SIBYTE_SENTOSA && SIBYTE_BIGSUR && SWIOTLB_XEN && AMD_IOMMU) selects SWIOTLB which has unmet direct dependencies (CAVIUM_OCTEON_SOC || MACH_LOONGSON64 && CPU_LOONGSON3 || NLM_XLP_BOARD || NLM_XLR_BOARD)
    
            and the actual build:
    
            lib/swiotlb.o: In function `swiotlb_tbl_map_single':
            (.text+0x1c0): undefined reference to `iommu_is_span_boundary'
            Makefile:1021: recipe for target 'vmlinux' failed
    
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Cc: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8d8b692eb029d797ddccdda13e278ba3d949aa3
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Sep 10 18:56:57 2019 +0800

    tun: fix use-after-free when register netdev failed
    
    [ Upstream commit 77f22f92dff8e7b45c7786a430626d38071d4670 ]
    
    I got a UAF repport in tun driver when doing fuzzy test:
    
    [  466.269490] ==================================================================
    [  466.271792] BUG: KASAN: use-after-free in tun_chr_read_iter+0x2ca/0x2d0
    [  466.271806] Read of size 8 at addr ffff888372139250 by task tun-test/2699
    [  466.271810]
    [  466.271824] CPU: 1 PID: 2699 Comm: tun-test Not tainted 5.3.0-rc1-00001-g5a9433db2614-dirty #427
    [  466.271833] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    [  466.271838] Call Trace:
    [  466.271858]  dump_stack+0xca/0x13e
    [  466.271871]  ? tun_chr_read_iter+0x2ca/0x2d0
    [  466.271890]  print_address_description+0x79/0x440
    [  466.271906]  ? vprintk_func+0x5e/0xf0
    [  466.271920]  ? tun_chr_read_iter+0x2ca/0x2d0
    [  466.271935]  __kasan_report+0x15c/0x1df
    [  466.271958]  ? tun_chr_read_iter+0x2ca/0x2d0
    [  466.271976]  kasan_report+0xe/0x20
    [  466.271987]  tun_chr_read_iter+0x2ca/0x2d0
    [  466.272013]  do_iter_readv_writev+0x4b7/0x740
    [  466.272032]  ? default_llseek+0x2d0/0x2d0
    [  466.272072]  do_iter_read+0x1c5/0x5e0
    [  466.272110]  vfs_readv+0x108/0x180
    [  466.299007]  ? compat_rw_copy_check_uvector+0x440/0x440
    [  466.299020]  ? fsnotify+0x888/0xd50
    [  466.299040]  ? __fsnotify_parent+0xd0/0x350
    [  466.299064]  ? fsnotify_first_mark+0x1e0/0x1e0
    [  466.304548]  ? vfs_write+0x264/0x510
    [  466.304569]  ? ksys_write+0x101/0x210
    [  466.304591]  ? do_preadv+0x116/0x1a0
    [  466.304609]  do_preadv+0x116/0x1a0
    [  466.309829]  do_syscall_64+0xc8/0x600
    [  466.309849]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [  466.309861] RIP: 0033:0x4560f9
    [  466.309875] Code: 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
    [  466.309889] RSP: 002b:00007ffffa5166e8 EFLAGS: 00000206 ORIG_RAX: 0000000000000127
    [  466.322992] RAX: ffffffffffffffda RBX: 0000000000400460 RCX: 00000000004560f9
    [  466.322999] RDX: 0000000000000003 RSI: 00000000200008c0 RDI: 0000000000000003
    [  466.323007] RBP: 00007ffffa516700 R08: 0000000000000004 R09: 0000000000000000
    [  466.323014] R10: 0000000000000000 R11: 0000000000000206 R12: 000000000040cb10
    [  466.323021] R13: 0000000000000000 R14: 00000000006d7018 R15: 0000000000000000
    [  466.323057]
    [  466.323064] Allocated by task 2605:
    [  466.335165]  save_stack+0x19/0x80
    [  466.336240]  __kasan_kmalloc.constprop.8+0xa0/0xd0
    [  466.337755]  kmem_cache_alloc+0xe8/0x320
    [  466.339050]  getname_flags+0xca/0x560
    [  466.340229]  user_path_at_empty+0x2c/0x50
    [  466.341508]  vfs_statx+0xe6/0x190
    [  466.342619]  __do_sys_newstat+0x81/0x100
    [  466.343908]  do_syscall_64+0xc8/0x600
    [  466.345303]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [  466.347034]
    [  466.347517] Freed by task 2605:
    [  466.348471]  save_stack+0x19/0x80
    [  466.349476]  __kasan_slab_free+0x12e/0x180
    [  466.350726]  kmem_cache_free+0xc8/0x430
    [  466.351874]  putname+0xe2/0x120
    [  466.352921]  filename_lookup+0x257/0x3e0
    [  466.354319]  vfs_statx+0xe6/0x190
    [  466.355498]  __do_sys_newstat+0x81/0x100
    [  466.356889]  do_syscall_64+0xc8/0x600
    [  466.358037]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [  466.359567]
    [  466.360050] The buggy address belongs to the object at ffff888372139100
    [  466.360050]  which belongs to the cache names_cache of size 4096
    [  466.363735] The buggy address is located 336 bytes inside of
    [  466.363735]  4096-byte region [ffff888372139100, ffff88837213a100)
    [  466.367179] The buggy address belongs to the page:
    [  466.368604] page:ffffea000dc84e00 refcount:1 mapcount:0 mapping:ffff8883df1b4f00 index:0x0 compound_mapcount: 0
    [  466.371582] flags: 0x2fffff80010200(slab|head)
    [  466.372910] raw: 002fffff80010200 dead000000000100 dead000000000122 ffff8883df1b4f00
    [  466.375209] raw: 0000000000000000 0000000000070007 00000001ffffffff 0000000000000000
    [  466.377778] page dumped because: kasan: bad access detected
    [  466.379730]
    [  466.380288] Memory state around the buggy address:
    [  466.381844]  ffff888372139100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  466.384009]  ffff888372139180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  466.386131] >ffff888372139200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  466.388257]                                                  ^
    [  466.390234]  ffff888372139280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  466.392512]  ffff888372139300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  466.394667] ==================================================================
    
    tun_chr_read_iter() accessed the memory which freed by free_netdev()
    called by tun_set_iff():
    
            CPUA                                           CPUB
      tun_set_iff()
        alloc_netdev_mqs()
        tun_attach()
                                                      tun_chr_read_iter()
                                                        tun_get()
                                                        tun_do_read()
                                                          tun_ring_recv()
        register_netdevice() <-- inject error
        goto err_detach
        tun_detach_all() <-- set RCV_SHUTDOWN
        free_netdev() <-- called from
                         err_free_dev path
          netdev_freemem() <-- free the memory
                            without check refcount
          (In this path, the refcount cannot prevent
           freeing the memory of dev, and the memory
           will be used by dev_put() called by
           tun_chr_read_iter() on CPUB.)
                                                         (Break from tun_ring_recv(),
                                                         because RCV_SHUTDOWN is set)
                                                       tun_put()
                                                         dev_put() <-- use the memory
                                                                       freed by netdev_freemem()
    
    Put the publishing of tfile->tun after register_netdevice(),
    so tun_get() won't get the tun pointer that freed by
    err_detach path if register_netdevice() failed.
    
    Fixes: eb0fb363f920 ("tuntap: attach queue 0 before registering netdevice")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06a80feb3f20cbaaf087dca14580a346b3fd11a1
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Sep 3 17:53:12 2019 +0800

    tipc: add NULL pointer check before calling kfree_rcu
    
    [ Upstream commit 42dec1dbe38239cf91cc1f4df7830c66276ced37 ]
    
    Unlike kfree(p), kfree_rcu(p, rcu) won't do NULL pointer check. When
    tipc_nametbl_remove_publ returns NULL, the panic below happens:
    
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
       RIP: 0010:__call_rcu+0x1d/0x290
       Call Trace:
        <IRQ>
        tipc_publ_notify+0xa9/0x170 [tipc]
        tipc_node_write_unlock+0x8d/0x100 [tipc]
        tipc_node_link_down+0xae/0x1d0 [tipc]
        tipc_node_check_dest+0x3ea/0x8f0 [tipc]
        ? tipc_disc_rcv+0x2c7/0x430 [tipc]
        tipc_disc_rcv+0x2c7/0x430 [tipc]
        ? tipc_rcv+0x6bb/0xf20 [tipc]
        tipc_rcv+0x6bb/0xf20 [tipc]
        ? ip_route_input_slow+0x9cf/0xb10
        tipc_udp_recv+0x195/0x1e0 [tipc]
        ? tipc_udp_is_known_peer+0x80/0x80 [tipc]
        udp_queue_rcv_skb+0x180/0x460
        udp_unicast_rcv_skb.isra.56+0x75/0x90
        __udp4_lib_rcv+0x4ce/0xb90
        ip_local_deliver_finish+0x11c/0x210
        ip_local_deliver+0x6b/0xe0
        ? ip_rcv_finish+0xa9/0x410
        ip_rcv+0x273/0x362
    
    Fixes: 97ede29e80ee ("tipc: convert name table read-write lock to RCU")
    Reported-by: Li Shuang <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aab2d9c76c5307b7a067c91d0399e68ce9ef015
Author: Neal Cardwell <ncardwell@google.com>
Date:   Mon Sep 9 16:56:02 2019 -0400

    tcp: fix tcp_ecn_withdraw_cwr() to clear TCP_ECN_QUEUE_CWR
    
    [ Upstream commit af38d07ed391b21f7405fa1f936ca9686787d6d2 ]
    
    Fix tcp_ecn_withdraw_cwr() to clear the correct bit:
    TCP_ECN_QUEUE_CWR.
    
    Rationale: basically, TCP_ECN_DEMAND_CWR is a bit that is purely about
    the behavior of data receivers, and deciding whether to reflect
    incoming IP ECN CE marks as outgoing TCP th->ece marks. The
    TCP_ECN_QUEUE_CWR bit is purely about the behavior of data senders,
    and deciding whether to send CWR. The tcp_ecn_withdraw_cwr() function
    is only called from tcp_undo_cwnd_reduction() by data senders during
    an undo, so it should zero the sender-side state,
    TCP_ECN_QUEUE_CWR. It does not make sense to stop the reflection of
    incoming CE bits on incoming data packets just because outgoing
    packets were spuriously retransmitted.
    
    The bug has been reproduced with packetdrill to manifest in a scenario
    with RFC3168 ECN, with an incoming data packet with CE bit set and
    carrying a TCP timestamp value that causes cwnd undo. Before this fix,
    the IP CE bit was ignored and not reflected in the TCP ECE header bit,
    and sender sent a TCP CWR ('W') bit on the next outgoing data packet,
    even though the cwnd reduction had been undone.  After this fix, the
    sender properly reflects the CE bit and does not set the W bit.
    
    Note: the bug actually predates 2005 git history; this Fixes footer is
    chosen to be the oldest SHA1 I have tested (from Sep 2007) for which
    the patch applies cleanly (since before this commit the code was in a
    .h file).
    
    Fixes: bdf1ee5d3bd3 ("[TCP]: Move code from tcp_ecn.h to tcp*.c and tcp.h & remove it")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 062e2f08c6d3512753ac09c9bc96b0e3f68aa67c
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Sep 2 23:24:21 2019 +0800

    sctp: use transport pf_retrans in sctp_do_8_2_transport_strike
    
    [ Upstream commit 10eb56c582c557c629271f1ee31e15e7a9b2558b ]
    
    Transport should use its own pf_retrans to do the error_count
    check, instead of asoc's. Otherwise, it's meaningless to make
    pf_retrans per transport.
    
    Fixes: 5aa93bcf66f4 ("sctp: Implement quick failover draft from tsvwg")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18e0093d1028b7f44eeb5a09058908a1310ea575
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Sep 11 18:02:39 2019 +0200

    sctp: Fix the link time qualifier of 'sctp_ctrlsock_exit()'
    
    [ Upstream commit b456d72412ca8797234449c25815e82f4e1426c0 ]
    
    The '.exit' functions from 'pernet_operations' structure should be marked
    as __net_exit, not __net_init.
    
    Fixes: 8e2d61e0aed2 ("sctp: fix race on protocol/netns initialization")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbb4979f32638afb9f41714df42faf385033d480
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sun Sep 8 13:40:51 2019 -0700

    sch_hhf: ensure quantum and hhf_non_hh_weight are non-zero
    
    [ Upstream commit d4d6ec6dac07f263f06d847d6f732d6855522845 ]
    
    In case of TCA_HHF_NON_HH_WEIGHT or TCA_HHF_QUANTUM is zero,
    it would make no progress inside the loop in hhf_dequeue() thus
    kernel would get stuck.
    
    Fix this by checking this corner case in hhf_change().
    
    Fixes: 10239edf86f1 ("net-qdisc-hhf: Heavy-Hitter Filter (HHF) qdisc")
    Reported-by: syzbot+bc6297c11f19ee807dc2@syzkaller.appspotmail.com
    Reported-by: syzbot+041483004a7f45f1f20a@syzkaller.appspotmail.com
    Reported-by: syzbot+55be5f513bed37fc4367@syzkaller.appspotmail.com
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: Terry Lam <vtlam@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 162a5a8c3aff15c449e6b38355cdf80ab4f77a5a
Author: Shmulik Ladkani <shmulik@metanetworks.com>
Date:   Fri Sep 6 12:23:50 2019 +0300

    net: gso: Fix skb_segment splat when splitting gso_size mangled skb having linear-headed frag_list
    
    [ Upstream commit 3dcbdb134f329842a38f0e6797191b885ab00a00 ]
    
    Historically, support for frag_list packets entering skb_segment() was
    limited to frag_list members terminating on exact same gso_size
    boundaries. This is verified with a BUG_ON since commit 89319d3801d1
    ("net: Add frag_list support to skb_segment"), quote:
    
        As such we require all frag_list members terminate on exact MSS
        boundaries.  This is checked using BUG_ON.
        As there should only be one producer in the kernel of such packets,
        namely GRO, this requirement should not be difficult to maintain.
    
    However, since commit 6578171a7ff0 ("bpf: add bpf_skb_change_proto helper"),
    the "exact MSS boundaries" assumption no longer holds:
    An eBPF program using bpf_skb_change_proto() DOES modify 'gso_size', but
    leaves the frag_list members as originally merged by GRO with the
    original 'gso_size'. Example of such programs are bpf-based NAT46 or
    NAT64.
    
    This lead to a kernel BUG_ON for flows involving:
     - GRO generating a frag_list skb
     - bpf program performing bpf_skb_change_proto() or bpf_skb_adjust_room()
     - skb_segment() of the skb
    
    See example BUG_ON reports in [0].
    
    In commit 13acc94eff12 ("net: permit skb_segment on head_frag frag_list skb"),
    skb_segment() was modified to support the "gso_size mangling" case of
    a frag_list GRO'ed skb, but *only* for frag_list members having
    head_frag==true (having a page-fragment head).
    
    Alas, GRO packets having frag_list members with a linear kmalloced head
    (head_frag==false) still hit the BUG_ON.
    
    This commit adds support to skb_segment() for a 'head_skb' packet having
    a frag_list whose members are *non* head_frag, with gso_size mangled, by
    disabling SG and thus falling-back to copying the data from the given
    'head_skb' into the generated segmented skbs - as suggested by Willem de
    Bruijn [1].
    
    Since this approach involves the penalty of skb_copy_and_csum_bits()
    when building the segments, care was taken in order to enable this
    solution only when required:
     - untrusted gso_size, by testing SKB_GSO_DODGY is set
       (SKB_GSO_DODGY is set by any gso_size mangling functions in
        net/core/filter.c)
     - the frag_list is non empty, its item is a non head_frag, *and* the
       headlen of the given 'head_skb' does not match the gso_size.
    
    [0]
    https://lore.kernel.org/netdev/20190826170724.25ff616f@pixies/
    https://lore.kernel.org/netdev/9265b93f-253d-6b8c-f2b8-4b54eff1835c@fb.com/
    
    [1]
    https://lore.kernel.org/netdev/CA+FuTSfVsgNDi7c=GUU8nMg2hWxF2SjCNLXetHeVPdnxAW5K-w@mail.gmail.com/
    
    Fixes: 6578171a7ff0 ("bpf: add bpf_skb_change_proto helper")
    Suggested-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 905bf350353153b0c3ef60bdc4604c0c8a83d6c3
Author: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Date:   Tue Sep 10 14:02:57 2019 -0600

    net: Fix null de-reference of device refcount
    
    [ Upstream commit 10cc514f451a0f239aa34f91bc9dc954a9397840 ]
    
    In event of failure during register_netdevice, free_netdev is
    invoked immediately. free_netdev assumes that all the netdevice
    refcounts have been dropped prior to it being called and as a
    result frees and clears out the refcount pointer.
    
    However, this is not necessarily true as some of the operations
    in the NETDEV_UNREGISTER notifier handlers queue RCU callbacks for
    invocation after a grace period. The IPv4 callback in_dev_rcu_put
    tries to access the refcount after free_netdev is called which
    leads to a null de-reference-
    
    44837.761523:   <6> Unable to handle kernel paging request at
                        virtual address 0000004a88287000
    44837.761651:   <2> pc : in_dev_finish_destroy+0x4c/0xc8
    44837.761654:   <2> lr : in_dev_finish_destroy+0x2c/0xc8
    44837.762393:   <2> Call trace:
    44837.762398:   <2>  in_dev_finish_destroy+0x4c/0xc8
    44837.762404:   <2>  in_dev_rcu_put+0x24/0x30
    44837.762412:   <2>  rcu_nocb_kthread+0x43c/0x468
    44837.762418:   <2>  kthread+0x118/0x128
    44837.762424:   <2>  ret_from_fork+0x10/0x1c
    
    Fix this by waiting for the completion of the call_rcu() in
    case of register_netdevice errors.
    
    Fixes: 93ee31f14f6f ("[NET]: Fix free_netdev on register_netdev failure.")
    Cc: Sean Tranchetti <stranche@codeaurora.org>
    Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a7e12395a5e5cfa9967de2714a43d223eec2f51
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Sep 5 19:36:37 2019 -0700

    isdn/capi: check message length in capi_write()
    
    [ Upstream commit fe163e534e5eecdfd7b5920b0dfd24c458ee85d6 ]
    
    syzbot reported:
    
        BUG: KMSAN: uninit-value in capi_write+0x791/0xa90 drivers/isdn/capi/capi.c:700
        CPU: 0 PID: 10025 Comm: syz-executor379 Not tainted 4.20.0-rc7+ #2
        Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
        Call Trace:
          __dump_stack lib/dump_stack.c:77 [inline]
          dump_stack+0x173/0x1d0 lib/dump_stack.c:113
          kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
          __msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:313
          capi_write+0x791/0xa90 drivers/isdn/capi/capi.c:700
          do_loop_readv_writev fs/read_write.c:703 [inline]
          do_iter_write+0x83e/0xd80 fs/read_write.c:961
          vfs_writev fs/read_write.c:1004 [inline]
          do_writev+0x397/0x840 fs/read_write.c:1039
          __do_sys_writev fs/read_write.c:1112 [inline]
          __se_sys_writev+0x9b/0xb0 fs/read_write.c:1109
          __x64_sys_writev+0x4a/0x70 fs/read_write.c:1109
          do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
          entry_SYSCALL_64_after_hwframe+0x63/0xe7
        [...]
    
    The problem is that capi_write() is reading past the end of the message.
    Fix it by checking the message's length in the needed places.
    
    Reported-and-tested-by: syzbot+0849c524d9c634f5ae66@syzkaller.appspotmail.com
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2807ced8536d55d296b1d862e5141c7484c191b
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Sep 10 13:29:59 2019 +0200

    ipv6: Fix the link time qualifier of 'ping_v6_proc_exit_net()'
    
    [ Upstream commit d23dbc479a8e813db4161a695d67da0e36557846 ]
    
    The '.exit' functions from 'pernet_operations' structure should be marked
    as __net_exit, not __net_init.
    
    Fixes: d862e5461423 ("net: ipv6: Implement /proc/net/icmp6.")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba373fe45610c7f753d9325c651616a81f57ccc6
Author: Bjørn Mork <bjorn@mork.no>
Date:   Thu Sep 12 10:42:00 2019 +0200

    cdc_ether: fix rndis support for Mediatek based smartphones
    
    [ Upstream commit 4d7ffcf3bf1be98d876c570cab8fc31d9fa92725 ]
    
    A Mediatek based smartphone owner reports problems with USB
    tethering in Linux.  The verbose USB listing shows a rndis_host
    interface pair (e0/01/03 + 10/00/00), but the driver fails to
    bind with
    
    [  355.960428] usb 1-4: bad CDC descriptors
    
    The problem is a failsafe test intended to filter out ACM serial
    functions using the same 02/02/ff class/subclass/protocol as RNDIS.
    The serial functions are recognized by their non-zero bmCapabilities.
    
    No RNDIS function with non-zero bmCapabilities were known at the time
    this failsafe was added. But it turns out that some Wireless class
    RNDIS functions are using the bmCapabilities field. These functions
    are uniquely identified as RNDIS by their class/subclass/protocol, so
    the failing test can safely be disabled.  The same applies to the two
    types of Misc class RNDIS functions.
    
    Applying the failsafe to Communication class functions only retains
    the original functionality, and fixes the problem for the Mediatek based
    smartphone.
    
    Tow examples of CDC functional descriptors with non-zero bmCapabilities
    from Wireless class RNDIS functions are:
    
    0e8d:000a  Mediatek Crosscall Spider X5 3G Phone
    
          CDC Header:
            bcdCDC               1.10
          CDC ACM:
            bmCapabilities       0x0f
              connection notifications
              sends break
              line coding and serial state
              get/set/clear comm features
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
          CDC Call Management:
            bmCapabilities       0x03
              call management
              use DataInterface
            bDataInterface          1
    
    and
    
    19d2:1023  ZTE K4201-z
    
          CDC Header:
            bcdCDC               1.10
          CDC ACM:
            bmCapabilities       0x02
              line coding and serial state
          CDC Call Management:
            bmCapabilities       0x03
              call management
              use DataInterface
            bDataInterface          1
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
    
    The Mediatek example is believed to apply to most smartphones with
    Mediatek firmware.  The ZTE example is most likely also part of a larger
    family of devices/firmwares.
    
    Suggested-by: Lars Melin <larsm17@gmail.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c6a3c78fe627dfefd81582674c502e21f80b234
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Sep 6 11:47:02 2019 +0200

    bridge/mdb: remove wrong use of NLM_F_MULTI
    
    [ Upstream commit 94a72b3f024fc7e9ab640897a1e38583a470659d ]
    
    NLM_F_MULTI must be used only when a NLMSG_DONE message is sent at the end.
    In fact, NLMSG_DONE is sent only at the end of a dump.
    
    Libraries like libnl will wait forever for NLMSG_DONE.
    
    Fixes: 949f1e39a617 ("bridge: mdb: notify on router port add and del")
    CC: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>