commit 42adce4180734a883f2d9b6cec24446d49c5c8eb
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Nov 24 08:17:01 2019 +0100

    Linux 5.3.13

commit 7c4aa8a13a7f783a07be11ed94c8b34dc4030522
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sun Jul 21 22:19:56 2019 +0200

    fbdev: Ditch fb_edid_add_monspecs
    
    commit 3b8720e63f4a1fc6f422a49ecbaa3b59c86d5aaf upstream.
    
    It's dead code ever since
    
    commit 34280340b1dc74c521e636f45cd728f9abf56ee2
    Author: Geert Uytterhoeven <geert+renesas@glider.be>
    Date:   Fri Dec 4 17:01:43 2015 +0100
    
        fbdev: Remove unused SH-Mobile HDMI driver
    
    Also with this gone we can remove the cea_modes db. This entire thing
    is massively incomplete anyway, compared to the CEA parsing that
    drm_edid.c does.
    
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Tavis Ormandy <taviso@gmail.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190721201956.941-1-daniel.vetter@ffwll.ch
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a291d917030f4e41fc39637f7e8e21234bd22716
Author: Pavel Tatashin <pasha.tatashin@soleen.com>
Date:   Tue Nov 19 17:10:06 2019 -0500

    arm64: uaccess: Ensure PAN is re-enabled after unhandled uaccess fault
    
    commit 94bb804e1e6f0a9a77acf20d7c70ea141c6c821e upstream.
    
    A number of our uaccess routines ('__arch_clear_user()' and
    '__arch_copy_{in,from,to}_user()') fail to re-enable PAN if they
    encounter an unhandled fault whilst accessing userspace.
    
    For CPUs implementing both hardware PAN and UAO, this bug has no effect
    when both extensions are in use by the kernel.
    
    For CPUs implementing hardware PAN but not UAO, this means that a kernel
    using hardware PAN may execute portions of code with PAN inadvertently
    disabled, opening us up to potential security vulnerabilities that rely
    on userspace access from within the kernel which would usually be
    prevented by this mechanism. In other words, parts of the kernel run the
    same way as they would on a CPU without PAN implemented/emulated at all.
    
    For CPUs not implementing hardware PAN and instead relying on software
    emulation via 'CONFIG_ARM64_SW_TTBR0_PAN=y', the impact is unfortunately
    much worse. Calling 'schedule()' with software PAN disabled means that
    the next task will execute in the kernel using the page-table and ASID
    of the previous process even after 'switch_mm()', since the actual
    hardware switch is deferred until return to userspace. At this point, or
    if there is a intermediate call to 'uaccess_enable()', the page-table
    and ASID of the new process are installed. Sadly, due to the changes
    introduced by KPTI, this is not an atomic operation and there is a very
    small window (two instructions) where the CPU is configured with the
    page-table of the old task and the ASID of the new task; a speculative
    access in this state is disastrous because it would corrupt the TLB
    entries for the new task with mappings from the previous address space.
    
    As Pavel explains:
    
      | I was able to reproduce memory corruption problem on Broadcom's SoC
      | ARMv8-A like this:
      |
      | Enable software perf-events with PERF_SAMPLE_CALLCHAIN so userland's
      | stack is accessed and copied.
      |
      | The test program performed the following on every CPU and forking
      | many processes:
      |
      |     unsigned long *map = mmap(NULL, PAGE_SIZE, PROT_READ|PROT_WRITE,
      |                               MAP_SHARED | MAP_ANONYMOUS, -1, 0);
      |     map[0] = getpid();
      |     sched_yield();
      |     if (map[0] != getpid()) {
      |             fprintf(stderr, "Corruption detected!");
      |     }
      |     munmap(map, PAGE_SIZE);
      |
      | From time to time I was getting map[0] to contain pid for a
      | different process.
    
    Ensure that PAN is re-enabled when returning after an unhandled user
    fault from our uaccess routines.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Tested-by: Mark Rutland <mark.rutland@arm.com>
    Cc: <stable@vger.kernel.org>
    Fixes: 338d4f49d6f7 ("arm64: kernel: Add support for Privileged Access Never")
    Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
    [will: rewrote commit message]
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 240bff9e72e9057fc2bda40d1a651fd2ac5b67bb
Author: David Hildenbrand <david@redhat.com>
Date:   Tue Nov 5 21:17:10 2019 -0800

    mm/memory_hotplug: fix updating the node span
    
    commit 656d571193262a11c2daa4012e53e4d645bbce56 upstream.
    
    We recently started updating the node span based on the zone span to
    avoid touching uninitialized memmaps.
    
    Currently, we will always detect the node span to start at 0, meaning a
    node can easily span too many pages.  pgdat_is_empty() will still work
    correctly if all zones span no pages.  We should skip over all zones
    without spanned pages and properly handle the first detected zone that
    spans pages.
    
    Unfortunately, in contrast to the zone span (/proc/zoneinfo), the node
    span cannot easily be inspected and tested.  The node span gives no real
    guarantees when an architecture supports memory hotplug, meaning it can
    easily contain holes or span pages of different nodes.
    
    The node span is not really used after init on architectures that
    support memory hotplug.
    
    E.g., we use it in mm/memory_hotplug.c:try_offline_node() and in
    mm/kmemleak.c:kmemleak_scan().  These users seem to be fine.
    
    Link: http://lkml.kernel.org/r/20191027222714.5313-1-david@redhat.com
    Fixes: 00d6c019b5bc ("mm/memory_hotplug: don't access uninitialized memmaps in shrink_pgdat_span()")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0162ac918041539860baaaf6464d12007836cd85
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Oct 18 20:19:33 2019 -0700

    mm/memory_hotplug: don't access uninitialized memmaps in shrink_pgdat_span()
    
    commit 00d6c019b5bc175cee3770e0e659f2b5f4804ea5 upstream.
    
    We might use the nid of memmaps that were never initialized.  For
    example, if the memmap was poisoned, we will crash the kernel in
    pfn_to_nid() right now.  Let's use the calculated boundaries of the
    separate zones instead.  This now also avoids having to iterate over a
    whole bunch of subsections again, after shrinking one zone.
    
    Before commit d0dc12e86b31 ("mm/memory_hotplug: optimize memory
    hotplug"), the memmap was initialized to 0 and the node was set to the
    right value.  After that commit, the node might be garbage.
    
    We'll have to fix shrink_zone_span() next.
    
    Link: http://lkml.kernel.org/r/20191006085646.5768-4-david@redhat.com
    Fixes: f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded memory to zones until online")      [d0dc12e86b319]
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Wei Yang <richardw.yang@linux.intel.com>
    Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Damian Tometzki <damian.tometzki@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Halil Pasic <pasic@linux.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: Jun Yao <yaojun8558363@gmail.com>
    Cc: Logan Gunthorpe <logang@deltatee.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Pankaj Gupta <pagupta@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Pavel Tatashin <pavel.tatashin@microsoft.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Steve Capper <steve.capper@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wei Yang <richard.weiyang@gmail.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Yu Zhao <yuzhao@google.com>
    Cc: <stable@vger.kernel.org>    [4.13+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50c97a0b3f189ca9d37781fab4089f96c1169570
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Thu Nov 14 10:33:11 2019 +0100

    block, bfq: deschedule empty bfq_queues not referred by any process
    
    commit 478de3380c1c7dbb0f65f545ee0185848413f3fe upstream.
    
    Since commit 3726112ec731 ("block, bfq: re-schedule empty queues if
    they deserve I/O plugging"), to prevent the service guarantees of a
    bfq_queue from being violated, the bfq_queue may be left busy, i.e.,
    scheduled for service, even if empty (see comments in
    __bfq_bfqq_expire() for details). But, if no process will send
    requests to the bfq_queue any longer, then there is no point in
    keeping the bfq_queue scheduled for service.
    
    In addition, keeping the bfq_queue scheduled for service, but with no
    process reference any longer, may cause the bfq_queue to be freed when
    descheduled from service. But this is assumed to never happen, and
    causes a UAF if it happens. This, in turn, caused crashes [1, 2].
    
    This commit fixes this issue by descheduling an empty bfq_queue when
    it remains with not process reference.
    
    [1] https://bugzilla.redhat.com/show_bug.cgi?id=1767539
    [2] https://bugzilla.kernel.org/show_bug.cgi?id=205447
    
    Fixes: 3726112ec731 ("block, bfq: re-schedule empty queues if they deserve I/O plugging")
    Reported-by: Chris Evich <cevich@redhat.com>
    Reported-by: Patrick Dung <patdung100@gmail.com>
    Reported-by: Thorsten Schubert <tschubert@bafh.org>
    Tested-by: Thorsten Schubert <tschubert@bafh.org>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6e0ab4169163865190912628c81759252a18135
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Nov 13 21:28:31 2019 +0300

    net: cdc_ncm: Signedness bug in cdc_ncm_set_dgram_size()
    
    commit a56dcc6b455830776899ce3686735f1172e12243 upstream.
    
    This code is supposed to test for negative error codes and partial
    reads, but because sizeof() is size_t (unsigned) type then negative
    error codes are type promoted to high positive values and the condition
    doesn't work as expected.
    
    Fixes: 332f989a3b00 ("CDC-NCM: handle incomplete transfer of MTU")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>