commit 73aa1c86c6ec67931abf0c6b96b6853578b07db5
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Nov 21 09:19:29 2018 +0100

    Linux 4.19.3

commit 8ef305fbc50d93cc7e2f594abcf9546f3afbd435
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 20 10:08:18 2018 +0100

    Revert "ACPICA: AML interpreter: add region addresses in global list during initialization"
    
    This reverts commit 22083c028d0b3ee419232d25ce90367e5b25df8f which is
    commit 4abb951b73ff0a8a979113ef185651aa3c8da19b upstream.
    
    Jean writes:
    
            This commit was tagged with:
    
                Link: https://bugzilla.kernel.org/show_bug.cgi?id=200011
                Tested-by: Jean-Marc Lenoir
                Cc: All applicable <stable@vger.kernel.org>
    
            making it sound like it was fixing an actual bug. This is not the case.
            The commit fixes a side issue discovered while investigating bug
            #200011. It does NOT fix bug #200011 itself (as explicitly reported by
            Jean-Marc at https://bugzilla.kernel.org/show_bug.cgi?id=200011#c65 ).
    
            It does however cause regressions, despite what the commit message says. See:
    
            https://bugzilla.kernel.org/show_bug.cgi?id=201721
    
            and I expect more similar regressions, as ACPI resource conflicts are
            very frequent.
    
            This commit was not stable material to start with. It is intrusive,
            presents a risk of side effects, and does not solve an actual bug that
            is bothering users.
    
    Reported-by: Jean Delvare <jdelvare@suse.de>
    Cc: Jean-Marc Lenoir <archlinux@jihemel.com>
    Cc: Erik Schmauss <erik.schmauss@intel.com>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 491636a88c1182000cf710e01cbee88d5d658b46
Author: Stefano Stabellini <stefanos@xilinx.com>
Date:   Wed Oct 31 16:11:49 2018 -0700

    CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM
    
    commit f9005571701920551bcf54a500973fb61f2e1eda upstream.
    
    xen_create_contiguous_region has now only an implementation if
    CONFIG_XEN_PV is defined. However, on ARM we never set CONFIG_XEN_PV but
    we do have an implementation of xen_create_contiguous_region which is
    required for swiotlb-xen to work correctly (although it just sets
    *dma_handle).
    
    [backport: remove change to xen_remap_pfn]
    
    Cc: <stable@vger.kernel.org> # 4.12
    Fixes: 16624390816c ("xen: create xen_create/destroy_contiguous_region() stubs for PVHVM only builds")
    Signed-off-by: Stefano Stabellini <stefanos@xilinx.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    CC: Jeff.Kubascik@dornerworks.com
    CC: Jarvis.Roach@dornerworks.com
    CC: Nathan.Studer@dornerworks.com
    CC: vkuznets@redhat.com
    CC: boris.ostrovsky@oracle.com
    CC: jgross@suse.com
    CC: julien.grall@arm.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32bd1336061df0b420d295fe2d0b6b4e9f19a307
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Nov 12 15:36:16 2018 +0200

    drm/i915: Fix hpd handling for pins with two encoders
    
    commit 44a7276b30c3c15f2b7790a5729640597fb6a1df upstream.
    
    In my haste to remove irq_port[] I accidentally changed the
    way we deal with hpd pins that are shared by multiple encoders
    (DP and HDMI for pre-DDI platforms). Previously we would only
    handle such pins via ->hpd_pulse(), but now we queue up the
    hotplug work for the HDMI encoder directly. Worse yet, we now
    count each hpd twice and this increment the hpd storm count
    twice as fast. This can lead to spurious storms being detected.
    
    Go back to the old way of doing things, ie. delegate to
    ->hpd_pulse() for any pin which has an encoder with that hook
    implemented. I don't really like the idea of adding irq_port[]
    back so let's loop through the encoders first to check if we
    have an encoder with ->hpd_pulse() for the pin, and then go
    through all the pins and decided on the correct course of action
    based on the earlier findings.
    
    I have occasionally toyed with the idea of unifying the pre-DDI
    HDMI and DP encoders into a single encoder as well. Besides the
    hotplug processing it would have the other benefit of preventing
    userspace from trying to enable both encoders at the same time.
    That is simply illegal as they share the same clock/data pins.
    We have some testcases that will attempt that and thus fail on
    many older machines. But for now let's stick to fixing just the
    hotplug code.
    
    Cc: stable@vger.kernel.org # 4.19+
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Fixes: b6ca3eee18ba ("drm/i915: Nuke dev_priv->irq_port[]")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181108200424.28371-1-ville.syrjala@linux.intel.com
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    (cherry picked from commit 5a3aeca97af1b6b3498d59a7fd4e8bb95814c108)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67d55fb274e523a3fafdc465480a0d6e9e21f82a
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Nov 6 16:30:13 2018 -0500

    drm/i915: Fix NULL deref when re-enabling HPD IRQs on systems with MST
    
    commit 541ff7e96c13cd5d67f6021d233f8e1c3df49278 upstream.
    
    Turns out that if you trigger an HPD storm on a system that has an MST
    topology connected to it, you'll end up causing the kernel to eventually
    hit a NULL deref:
    
    [  332.339041] BUG: unable to handle kernel NULL pointer dereference at 00000000000000ec
    [  332.340906] PGD 0 P4D 0
    [  332.342750] Oops: 0000 [#1] SMP PTI
    [  332.344579] CPU: 2 PID: 25 Comm: kworker/2:0 Kdump: loaded Tainted: G           O      4.18.0-rc3short-hpd-storm+ #2
    [  332.346453] Hardware name: LENOVO 20BWS1KY00/20BWS1KY00, BIOS JBET71WW (1.35 ) 09/14/2018
    [  332.348361] Workqueue: events intel_hpd_irq_storm_reenable_work [i915]
    [  332.350301] RIP: 0010:intel_hpd_irq_storm_reenable_work.cold.3+0x2f/0x86 [i915]
    [  332.352213] Code: 00 00 ba e8 00 00 00 48 c7 c6 c0 aa 5f a0 48 c7 c7 d0 73 62 a0 4c 89 c1 4c 89 04 24 e8 7f f5 af e0 4c 8b 04 24 44 89 f8 29 e8 <41> 39 80 ec 00 00 00 0f 85 43 13 fc ff 41 0f b6 86 b8 04 00 00 41
    [  332.354286] RSP: 0018:ffffc90000147e48 EFLAGS: 00010006
    [  332.356344] RAX: 0000000000000005 RBX: ffff8802c226c9d4 RCX: 0000000000000006
    [  332.358404] RDX: 0000000000000000 RSI: 0000000000000082 RDI: ffff88032dc95570
    [  332.360466] RBP: 0000000000000005 R08: 0000000000000000 R09: ffff88031b3dc840
    [  332.362528] R10: 0000000000000000 R11: 000000031a069602 R12: ffff8802c226ca20
    [  332.364575] R13: ffff8802c2268000 R14: ffff880310661000 R15: 000000000000000a
    [  332.366615] FS:  0000000000000000(0000) GS:ffff88032dc80000(0000) knlGS:0000000000000000
    [  332.368658] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  332.370690] CR2: 00000000000000ec CR3: 000000000200a003 CR4: 00000000003606e0
    [  332.372724] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  332.374773] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  332.376798] Call Trace:
    [  332.378809]  process_one_work+0x1a1/0x350
    [  332.380806]  worker_thread+0x30/0x380
    [  332.382777]  ? wq_update_unbound_numa+0x10/0x10
    [  332.384772]  kthread+0x112/0x130
    [  332.386740]  ? kthread_create_worker_on_cpu+0x70/0x70
    [  332.388706]  ret_from_fork+0x35/0x40
    [  332.390651] Modules linked in: i915(O) vfat fat joydev btusb btrtl btbcm btintel bluetooth ecdh_generic iTCO_wdt wmi_bmof i2c_algo_bit drm_kms_helper intel_rapl syscopyarea sysfillrect x86_pkg_temp_thermal sysimgblt coretemp fb_sys_fops crc32_pclmul drm psmouse pcspkr mei_me mei i2c_i801 lpc_ich mfd_core i2c_core tpm_tis tpm_tis_core thinkpad_acpi wmi tpm rfkill video crc32c_intel serio_raw ehci_pci xhci_pci ehci_hcd xhci_hcd [last unloaded: i915]
    [  332.394963] CR2: 00000000000000ec
    
    This appears to be due to the fact that with an MST topology, not all
    intel_connector structs will have ->encoder set. So, fix this by
    skipping connectors without encoders in
    intel_hpd_irq_storm_reenable_work().
    
    For those wondering, this bug was found on accident while simulating HPD
    storms using a Chamelium connected to a ThinkPad T450s (Broadwell).
    
    Changes since v1:
    - Check intel_connector->mst_port instead of intel_connector->encoder
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: stable@vger.kernel.org
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181106213017.14563-3-lyude@redhat.com
    (cherry picked from commit fee61deecb1d850bf34f682a6a452e5ee51b7572)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72cb9a9da589a5ea8e74c7d54b388dea06247fd7
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Nov 6 16:30:12 2018 -0500

    drm/i915: Fix possible race in intel_dp_add_mst_connector()
    
    commit 7c4512300cfa5a4dcc8c1c52ae61e3fa4bd11a39 upstream.
    
    This hasn't caused any issues yet that I'm aware of, but as Ville
    Syrjälä pointed out - we need to make sure that
    intel_connector->mst_port is set before initializing MST connectors,
    since in theory we could potentially check intel_connector->mst_port in
    i915_hpd_poll_init_work() after registering the connector but before
    having written it's value.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20181106213017.14563-2-lyude@redhat.com
    (cherry picked from commit 66a5ab1034be801630816d1fa6cfc30db1a2f0b0)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a268b8f1bacb320d8b0717d352b3abb3cc14216
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Nov 8 08:17:38 2018 +0000

    drm/i915/execlists: Force write serialisation into context image vs execution
    
    commit 0a823e8fd4fd67726697854578f3584ee3a49b1d upstream.
    
    Ensure that the writes into the context image are completed prior to the
    register mmio to trigger execution. Although previously we were assured
    by the SDM that all writes are flushed before an uncached memory
    transaction (our mmio write to submit the context to HW for execution),
    we have empirical evidence to believe that this is not actually the
    case.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108656
    References: https://bugs.freedesktop.org/show_bug.cgi?id=108315
    References: https://bugs.freedesktop.org/show_bug.cgi?id=106887
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181108081740.25615-1-chris@chris-wilson.co.uk
    Cc: stable@vger.kernel.org
    (cherry picked from commit 987abd5c62f92ee4970b45aa077f47949974e615)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 828271c43b7850748b3cd18e769367a244875acf
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Nov 5 09:43:05 2018 +0000

    drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5
    
    commit fb5bbae9b1333d44023713946fdd28db0cd85751 upstream.
    
    Exercising the gpu reloc path strenuously revealed an issue where the
    updated relocations (from MI_STORE_DWORD_IMM) were not being observed
    upon execution. After some experiments with adding pipecontrols (a lot
    of pipecontrols (32) as gen4/5 do not have a bit to wait on earlier pipe
    controls or even the current on), it was discovered that we merely
    needed to delay the EMIT_INVALIDATE by several flushes. It is important
    to note that it is the EMIT_INVALIDATE as opposed to the EMIT_FLUSH that
    needs the delay as opposed to what one might first expect -- that the
    delay is required for the TLB invalidation to take effect (one presumes
    to purge any CS buffers) as opposed to a delay after flushing to ensure
    the writes have landed before triggering invalidation.
    
    Testcase: igt/gem_tiled_fence_blits
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@vger.kernel.org
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181105094305.5767-1-chris@chris-wilson.co.uk
    (cherry picked from commit 55f99bf2a9c331838c981694bc872cd1ec4070b2)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ce52581567c6284e7b57f601ad88ed0508deb02
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Nov 2 16:12:09 2018 +0000

    drm/i915: Mark pin flags as u64
    
    commit 0014868b9c3c1dda1de6711cf58c3486fb422d07 upstream.
    
    Since the flags are being used to operate on a u64 variable, they too
    need to be marked as such so that the inverses are full width (and not
    zero extended on 32b kernels and bdw+).
    
    Reported-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@vger.kernel.org
    Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181102161232.17742-2-chris@chris-wilson.co.uk
    (cherry picked from commit 83b466b1dc5f0b4d33f0a901e8b00197a8f3582d)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a95174d79b001684a312235892834931243dbd86
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Nov 5 21:46:04 2018 +0200

    drm/i915: Don't oops during modeset shutdown after lpe audio deinit
    
    commit 6a8915d0f8cf323e1beb792a33095cf652db4056 upstream.
    
    We deinit the lpe audio device before we call
    drm_atomic_helper_shutdown(), which means the platform device
    may already be gone when it comes time to shut down the crtc.
    As we don't know when the last reference to the platform
    device gets dropped by the audio driver we can't assume that
    the device and its data are still around when turning off the
    crtc. Mark the platform device as gone as soon as we do the
    audio deinit.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181105194604.6994-1-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit f45a7977d1140c11f334e01a9f77177ed68e3bfa)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4aa9db0b24f8504ee8e4de36bc84eae4f9fad63
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Oct 25 10:18:23 2018 +0100

    drm/i915: Compare user's 64b GTT offset even on 32b
    
    commit 085603287452fc96376ed4888bf29f8c095d2b40 upstream.
    
    Beware mixing unsigned long constants and 64b values, as on 32b the
    constant will be zero extended and discard the high 32b when used as
    a mask!
    
    Reported-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108282
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181025091823.20571-2-chris@chris-wilson.co.uk
    (cherry picked from commit 6fc4e48f9ed46e9adff236a0c350074aafa3b7fa)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a46a7350b1e85fe78580f6a4c809a876867a9df8
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 25 16:05:36 2018 +0300

    drm/i915: Fix ilk+ watermarks when disabling pipes
    
    commit df5e31c204b34e8d9e5ec33f5b28e960c4f25e14 upstream.
    
    We're no longer programming any watermarks when we're disabling
    a pipe. That means ilk_wm_merge() & co. will keep considering
    the any pipe that is getting disabled as still enabled. Thus we
    either get no LP1+ watermakrs (ilk-ivb), or we get suboptimal
    ones (hsw-bdw).
    
    This seems to have been broken by commit b6b178a77210 ("drm/i915:
    Calculate ironlake intermediate watermarks correctly, v2."). Before
    that we apparently had some difference between the intermediate
    and optimal watermarks and so we would program the optiomal ones.
    Now intermediate and optimal are identical for disabled pipes
    and so we don't program either.
    
    Fix this by programming the intermediate watermarks even for
    disabled pipes. We were already doing that for skl+. We'll
    leave out gmch platforms for now since those do the merging
    in a different manner and should work as is. We'll want to
    unify this eventually, but play it safe for now and just put
    in a FIXME.
    
    Cc: stable@vger.kernel.org
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Fixes: b6b178a77210 ("drm/i915: Calculate ironlake intermediate watermarks correctly, v2.")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181025130536.29024-1-ville.syrjala@linux.intel.com
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> #irc
    (cherry picked from commit a748faea3bfd7fd1d1485bc1c426c7d460cc6503)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d6e718e454b65448bbb50c876e5040f5d05db6d
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Oct 29 16:00:31 2018 +0200

    drm/i915: Fix error handling for the NV12 fb dimensions check
    
    commit f42f343887016330b321dd40eebc68c7292e4f1b upstream.
    
    Let's not leak obj->framebuffer_references when we decide that
    the framebuffer domensions are not suitable for NV12.
    
    Cc: stable@vger.kernel.org
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Vidya Srinivas <vidya.srinivas@intel.com>
    Fixes: e44134f2673c ("drm/i915: Add NV12 support to intel_framebuffer_init")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181029140031.11765-1-ville.syrjala@linux.intel.com
    Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
    (cherry picked from commit 3b90946fcb6f13b65888c380461793a9dea9d1f4)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a25e1a1be71a49ee7f34fb14b5a26191e6cf501
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Oct 25 10:18:22 2018 +0100

    drm/i915: Mark up GTT sizes as u64
    
    commit c58281056a8b26d5d9dc15c19859a7880835ef44 upstream.
    
    Since we use a 64b virtual GTT irrespective of the system, we want to
    ensure that the GTT computations remains 64b even on 32b systems,
    including treatment of huge virtual pages.
    
    No code generation changes on 64b:
    
    Reported-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108282
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181025091823.20571-1-chris@chris-wilson.co.uk
    (cherry picked from commit 9125963a9494253fa5a29cc1b4169885d2be7042)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80b8d405c6402983fa34395c1a654ea9d5ff34f2
Author: Clint Taylor <clinton.a.taylor@intel.com>
Date:   Thu Oct 25 11:52:00 2018 -0700

    drm/i915/hdmi: Add HDMI 2.0 audio clock recovery N values
    
    commit 6503493145cba4413ecd3d4d153faeef4a1e9b85 upstream.
    
    HDMI 2.0 594Mhz modes were incorrectly selecting 25.200Mhz Automatic N value
    mode instead of HDMI specification values.
    
    V2: Fix 88.2 Hz N value
    
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1540493521-1746-2-git-send-email-clinton.a.taylor@intel.com
    (cherry picked from commit 5a400aa3c562c4a726b4da286e63c96db905ade1)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51ad687461b4f31a89e048e1e850b07318cdf9d5
Author: Manasi Navare <manasi.d.navare@intel.com>
Date:   Tue Oct 23 12:12:47 2018 -0700

    drm/i915/icl: Fix the macros for DFLEXDPMLE register bits
    
    commit e528c2affcf216b3d02b22004895cb678769629b upstream.
    
    This patch fixes the macros used for defining the DFLEXDPMLE
    register bit fields. This accounts for changes in the spec.
    
    Fixes: a2bc69a1a9d6 ("drm/i915/icl: Add register definition for DFLEXDPMLE")
    Cc: Animesh Manna <animesh.manna@intel.com>
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Jose Roberto de Souza <jose.souza@intel.com>
    Cc: <stable@vger.kernel.org> # v4.19+
    Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181023191248.26418-1-manasi.d.navare@intel.com
    (cherry picked from commit b4335ec0a3ee6229a570755f8fb95dc8a7c694f2)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4b7c61cdcdcadd5b60c78b646ef62a0bf1b5713
Author: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Date:   Thu Sep 27 13:57:31 2018 -0700

    drm/i915/dp: Restrict link retrain workaround to external monitors
    
    commit f9776280c29e77a18cbc7ebb6d48f7885e494990 upstream.
    
    Commit '3cf71bc9904d ("drm/i915: Re-apply "Perform link quality check,
    unconditionally during long pulse"")' applies a work around for sinks
    that don't signal link loss. The work around does not need to have to be
    that broad as the issue was seen with only one particular monitor; limit
    this only for external displays as eDP features like PSR turn off the link
    and the driver ends up retraining the link seeeing that link is not
    synchronized.
    
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Jan-Marek Glogowski <glogow@fbihome.de>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    References: 3cf71bc9904d ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
    Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180927205735.16651-2-dhinakaran.pandiyan@intel.com
    (cherry picked from commit f24f6eb95807bca0dbd8dc5b2f3a4099000f4472)
    Fixes: 399334708b4f ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf30d9c95f57c29ca9e071d57276afeef6683479
Author: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Date:   Thu Sep 27 13:57:30 2018 -0700

    drm/i915/dp: Fix link retraining comment in intel_dp_long_pulse()
    
    commit 49af5d95b9b3c21a84ad115a9db9acbc036d849a upstream.
    
    Comment claims link needs to be retrained because the connected sink raised
    a long pulse to indicate link loss. If the sink did so,
    intel_dp_hotplug() would have handled link retraining. Looking at the
    logs in Bugzilla referenced in commit '3cf71bc9904d ("drm/i915: Re-apply
    Perform link quality check, unconditionally during long pulse"")', the
    issue is that the sink does not trigger an interrupt. What we want is
    ->detect() from user space to check link status and retrain. Ville's
    review for the original patch also indicates the same root cause. So,
    rewrite the comment.
    
    v2: Patch split and rewrote comment.
    
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Jan-Marek Glogowski <glogow@fbihome.de>
    References: 3cf71bc9904d ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
    Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180927205735.16651-1-dhinakaran.pandiyan@intel.com
    (cherry picked from commit 9ebd8202393dde9d3678c9ec162c1aa63ba17eac)
    Fixes: 399334708b4f ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 528e652dbc8c488539f0bc6cb6332d9507b282f0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Oct 12 15:02:28 2018 +0100

    drm/i915: Large page offsets for pread/pwrite
    
    commit ab0d6a141843e0b4b2709dfd37b53468b5452c3a upstream.
    
    Handle integer overflow when computing the sub-page length for shmem
    backed pread/pwrite.
    
    Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181012140228.29783-1-chris@chris-wilson.co.uk
    (cherry picked from commit a5e856a5348f6cd50889d125c40bbeec7328e466)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 811342d7616039bcc06df00da353dead137f454f
Author: Lyude Paul <lyude@redhat.com>
Date:   Mon Oct 8 19:24:33 2018 -0400

    drm/i915: Skip vcpi allocation for MSTB ports that are gone
    
    commit c02ba4ef16eefe663fdefcccaa57fad32d5481bf upstream.
    
    Since we need to be able to allow DPMS on->off prop changes after an MST
    port has disappeared from the system, we need to be able to make sure we
    can compute a config for the resulting atomic commit. Currently this is
    impossible when the port has disappeared, since the VCPI slot searching
    we try to do in intel_dp_mst_compute_config() will fail with -EINVAL.
    
    Since the only commits we want to allow on no-longer-present MST ports
    are ones that shut off display hardware, we already know that no VCPI
    allocations are needed. So, hardcode the VCPI slot count to 0 when
    intel_dp_mst_compute_config() is called on an MST port that's gone.
    
    Changes since V4:
    - Don't use mst_port_gone at all, just check whether or not the drm
      connector is registered - Daniel Vetter
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20181008232437.5571-5-lyude@redhat.com
    (cherry picked from commit f67207d78ceaf98b7531bc22df6f21328559c8d4)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc72d290f56d331effac0a45d3fb0804fc6af4c6
Author: Lyude Paul <lyude@redhat.com>
Date:   Mon Oct 8 19:24:32 2018 -0400

    drm/i915: Don't unset intel_connector->mst_port
    
    commit 80c188695a77eddaa6e8885510ff4ef59fd478c3 upstream.
    
    Currently we set intel_connector->mst_port to NULL to signify that the
    MST port has been removed from the system so that we can prevent further
    action on the port such as connector probes, mode probing, etc.
    However, we're going to need access to intel_connector->mst_port in
    order to fixup ->best_encoder() so that it can always return the correct
    encoder for an MST port to prevent legacy DPMS prop changes from
    failing. This should be safe, so instead keep intel_connector->mst_port
    always set and instead just check the status of
    drm_connector->regustered to signify whether or not the connector has
    disappeared from the system.
    
    Changes since v2:
    - Add a comment to mst_port_gone (Jani Nikula)
    - Change mst_port_gone to a u8 instead of a bool, per the kernel bot.
      Apparently bool is discouraged in structs these days
    Changes since v4:
    - Don't use mst_port_gone at all! Just check if the connector is
      registered or not - Daniel Vetter
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20181008232437.5571-4-lyude@redhat.com
    (cherry picked from commit 6ed5bb1fbad34382c8cfe9a9bf737e9a43053df5)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3715b63f66e092eed5637883d908bdc17d275889
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Oct 3 17:49:51 2018 +0300

    drm/i915: Restore vblank interrupts earlier
    
    commit 7cada4d0b7a0fb813dbc9777fec092e9ed0546e9 upstream.
    
    Plane sanitation needs vblank interrupts (on account of CxSR disable).
    So let's restore vblank interrupts earlier.
    
    v2: Make it actually build
    v3: Add comment to explain why we need this (Daniel)
    
    Cc: stable@vger.kernel.org
    Cc: Dennis <dennis.nezic@utoronto.ca>
    Tested-by: Dennis <dennis.nezic@utoronto.ca>
    Tested-by: Peter Nowee <peter.nowee@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105637
    Fixes: b1e01595a66d ("drm/i915: Redo plane sanitation during readout")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181003144951.4397-1-ville.syrjala@linux.intel.com
    (cherry picked from commit 68bc30deac625b8be8d3950b30dc93d09a3645f5)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1e34bfc066be0738284975d13691dd36c786b4e
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Oct 3 17:50:17 2018 +0300

    drm/i915: Use the correct crtc when sanitizing plane mapping
    
    commit 9b27390139dbe0dc10d1899545248862fe826b61 upstream.
    
    When we decide that a plane is attached to the wrong pipe we try
    to turn off said plane. However we are passing around the crtc we
    think that the plane is supposed to be using rather than the crtc
    it is currently using. That doesn't work all that well because
    we may have to do vblank waits etc. and the other pipe might
    not even be enabled here. So let's pass the plane's current crtc to
    intel_plane_disable_noatomic() so that it can its job correctly.
    
    To do that semi-cleanly we also have to change the plane readout
    to record the plane's visibility into the bitmasks of the crtc
    where the plane is currently enabled rather than to the crtc
    we want to use for the plane.
    
    One caveat here is that our active_planes bitmask will get confused
    if both planes are enabled on the same pipe. Fortunately we can use
    plane_mask to reconstruct active_planes sufficiently since
    plane_mask still has the same meaning (is the plane visible?)
    during readout. We also have to do the same during the initial
    plane readout as the second plane could clear the active_planes
    bit the first plane had already set.
    
    v2: Rely on fixup_active_planes() to populate active_planes fully (Daniel)
        Add Daniel's proposed comment to better document why we do this
        Drop the redundant intel_set_plane_visible() call
    
    Cc: stable@vger.kernel.org # fcba862e8428 drm/i915: Have plane->get_hw_state() return the current pipe
    Cc: stable@vger.kernel.org
    Cc: Dennis <dennis.nezic@utoronto.ca>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Tested-by: Dennis <dennis.nezic@utoronto.ca>
    Tested-by: Peter Nowee <peter.nowee@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105637
    Fixes: b1e01595a66d ("drm/i915: Redo plane sanitation during readout")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181003145017.4527-1-ville.syrjala@linux.intel.com
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit 62358aa4ee86481ce044bef04859820e1bc7c1d9)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49218c83e25b6f0708f246b07d570b2c43a98223
Author: Manasi Navare <manasi.d.navare@intel.com>
Date:   Tue Oct 9 14:28:04 2018 -0700

    drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit panel's native mode
    
    commit 041444458835d7fb2c9f042598bfe16bf375b15d upstream.
    
    This patch fixes the original commit c0cfb10d9e1de49 ("drm/i915/edp:
    Do not do link training fallback or prune modes on EDP") that causes
    a blank screen in case of certain eDP panels (Eg: seen on Dell XPS13 9350)
    where first link training fails and a retraining is required by falling
    back to lower link rate/lane count.
    In case of some panels they advertise higher link rate/lane count
    than whats required for supporting the panel's native mode.
    But we always link train at highest link rate/lane count for eDP
    and if that fails we can still fallback to lower link rate/lane count
    as long as the fallback link BW still fits the native mode to avoid
    pruning the panel's native mode yet retraining at fallback values
    to recover from a blank screen.
    
    v3:
    * Add const for fixed_mode (Ville)
    v2:
    * Send uevent if link failure on eDP unconditionally
    
    Fixes: c0cfb10d9e1d ("drm/i915/edp: Do not do link training fallback or prune modes on EDP")
    Cc: Clinton Taylor <clinton.a.taylor@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: <stable@vger.kernel.org> # v4.17+
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107489
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105338
    Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
    Tested-by: Alexander Wilson <alexander.wilson@ncf.edu>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181009212804.702-1-manasi.d.navare@intel.com
    (cherry picked from commit 1e712535c51ab025ebc776d4405683d81521996d)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c98bfa671c17c69bb1bb82441d6da3ad45ab96a4
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Oct 12 12:16:10 2018 +0200

    drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003)
    
    commit 0e8afefd5da4875ddea9aa4ad17a2540a2bf9736 upstream.
    
    The Acer One 10 uses a clamshell design with a detachable keyboard.
    As such in normal operating mode, with the keyboard attach the device
    is in landscape mode (and the Acer logo at boot also shows in landscape
    mode).
    
    But the device uses a portrait screen rotated 90 degrees (sigh). This
    commit adds a quirk for this device so that we shown the fbcon the
    right way up and that we hint userspace to also show e.g. plymouth and
    gdm the right way up.
    
    Cc: stable@vger.kernel.org
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181012101610.29100-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07c393db262972f02d3804e1c6556e770b051393
Author: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Date:   Fri Nov 9 11:00:12 2018 +0200

    drm/dp_mst: Check if primary mstb is null
    
    commit 23d8003907d094f77cf959228e2248d6db819fa7 upstream.
    
    Unfortunately drm_dp_get_mst_branch_device which is called from both
    drm_dp_mst_handle_down_rep and drm_dp_mst_handle_up_rep seem to rely
    on that mgr->mst_primary is not NULL, which seem to be wrong as it can be
    cleared with simultaneous mode set, if probing fails or in other case.
    mgr->lock mutex doesn't protect against that as it might just get
    assigned to NULL right before, not simultaneously.
    
    There are currently bugs 107738, 108616 bugs which crash in
    drm_dp_get_mst_branch_device, caused by this issue.
    
    v2: Refactored the code, as it was nicely noticed.
        Fixed Bugzilla bug numbers(second was 108616, but not 108816)
        and added links.
    
    [changed title and added stable cc]
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    Cc: stable@vger.kernel.org
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108616
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107738
    Link: https://patchwork.freedesktop.org/patch/msgid/20181109090012.24438-1-stanislav.lisovskiy@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ff21b59ffd294c04fd83994e71417247f0d2ee7
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Thu Oct 4 11:37:00 2018 +0200

    drm/etnaviv: fix bogus fence complete check in timeout handler
    
    commit 6fce3a406108ee6c8a61e2a33e52e9198a626ea0 upstream.
    
    The GPU hardware fences and the job out-fences are on different timelines
    so it's wrong to compare them. Fix this by only looking at the out-fence.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 2c83a726d6fb (drm/etnaviv: bring back progress check in job
                         timeout handler)
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 506acd7ee64ce1c94d60c38c7721e1c0133fdae2
Author: Akshu Agrawal <akshu.agrawal@amd.com>
Date:   Mon Sep 24 15:48:02 2018 +0530

    drm/amd/powerplay: Enable/Disable NBPSTATE on On/OFF of UVD
    
    commit 51ef434a15b450bfbef1e06cc87ee4e98a224486 upstream.
    
    We observe black lines (underflow) on display when playing a
    4K video with UVD. On Disabling Low memory P state this issue is
    not seen.
    Multiple runs of power measurement shows no imapct.
    
    Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
    Signed-off-by: Satyajit Sahu <satyajit.sahu@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f551c11d7f5d2df61cc10d8f916f92b8811d8f63
Author: Lyude Paul <lyude@redhat.com>
Date:   Mon Oct 8 19:24:31 2018 -0400

    drm/nouveau: Fix nv50_mstc->best_encoder()
    
    commit 7b0f61e91b6056c71649efa3204112a4b6cf5fc8 upstream.
    
    As mentioned in the previous commit, we currently prevent new modesets
    on recently-removed MST connectors by returning no encoder from our
    ->best_encoder() callback once the MST port has disappeared. This is
    wrong however, because it prevents legacy modesetting users from being
    able to disable CRTCs on MST connectors after the connector's respective
    topology has disappeared.
    
    So, fix this by instead by just always returning a valid encoder.
    
    Changes since v2:
    - Remove usage of atomic MST helper for now, since that got replaced
      with a much simpler solution
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Cc: stable@vger.kernel.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20181008232437.5571-3-lyude@redhat.com
    (cherry picked from commit e87b0bbc9f0380d403f8f2f6abba0d51c74d944f)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83f04a7f9e452f7b815238da068d44c2f47e912a
Author: Lyude Paul <lyude@redhat.com>
Date:   Thu Sep 6 17:43:21 2018 -0400

    drm/nouveau: Check backlight IDs are >= 0, not > 0
    
    commit dc854914999d5d52ac1b31740cb0ea8d89d0372e upstream.
    
    Remember, ida IDs start at 0, not 1!
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0845493a2b802b83babe4beadf256b6491b7414
Author: Lyude Paul <lyude@redhat.com>
Date:   Fri Sep 21 20:43:44 2018 -0400

    drm/amdgpu: Suppress keypresses from ACPI_VIDEO events
    
    commit 582f58de36834096a91cc1de2540c2f7269f850d upstream.
    
    Currently we return NOTIFY_DONE for any event which we don't think is
    ours. However, many laptops will send more then just an ATIF event and
    will also send an ACPI_VIDEO_NOTIFY_PROBE event as well. Since we don't
    check for this, we return NOTIFY_DONE which causes a keypress for the
    ACPI event to be propogated to userspace. This is the equivalent of
    someone pressing the display key on a laptop every time there's a
    hotplug event.
    
    So, check for ACPI_VIDEO_NOTIFY_PROBE events and suppress keypresses
    from them.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f43692a69867463b9ed5315321fd4af561c15e9
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Aug 28 14:16:23 2018 -0500

    drm/amdgpu: add missing CHIP_HAINAN in amdgpu_ucode_get_load_type
    
    commit d9997b64c52b70bd98c48f443f068253621d1ffc upstream.
    
    This caused a confusing error message, but there is functionally
    no problem since the default method is DIRECT.
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 633322afae62694598610be604bbea5199b257f6
Author: Rex Zhu <Rex.Zhu@amd.com>
Date:   Fri Oct 12 22:26:11 2018 +0800

    drm/amdgpu: Fix typo in amdgpu_vmid_mgr_init
    
    commit 3df27645395e8f79c0dc20a15cf1da61f376000d upstream.
    
    fix a typo in for loop: i->j
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d56cc4f14bf2d253cb0749e983de899601922504
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Sun Aug 5 13:48:07 2018 +0100

    drm/rockchip: Allow driver to be shutdown on reboot/kexec
    
    commit 7f3ef5dedb146e3d5063b6845781ad1bb59b92b5 upstream.
    
    Leaving the DRM driver enabled on reboot or kexec has the annoying
    effect of leaving the display generating transactions whilst the
    IOMMU has been shut down.
    
    In turn, the IOMMU driver (which shares its interrupt line with
    the VOP) starts warning either on shutdown or when entering the
    secondary kernel in the kexec case (nothing is expected on that
    front).
    
    A cheap way of ensuring that things are nicely shut down is to
    register a shutdown callback in the platform driver.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Tested-by: Vicente Bergas <vicencb@gmail.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180805124807.18169-1-marc.zyngier@arm.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccbc11b384e37426e80c85789a285558d36613be
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Nov 16 15:08:43 2018 -0800

    scripts/spdxcheck.py: make python3 compliant
    
    commit 6f4d29df66acd49303a99025046b85cabe7aa17a upstream.
    
    Without this change the following happens when using Python3 (3.6.6):
    
            $ echo "GPL-2.0" | python3 scripts/spdxcheck.py -
            FAIL: 'str' object has no attribute 'decode'
            Traceback (most recent call last):
              File "scripts/spdxcheck.py", line 253, in <module>
                parser.parse_lines(sys.stdin, args.maxlines, '-')
              File "scripts/spdxcheck.py", line 171, in parse_lines
                line = line.decode(locale.getpreferredencoding(False), errors='ignore')
            AttributeError: 'str' object has no attribute 'decode'
    
    So as the line is already a string, there is no need to decode it and
    the line can be dropped.
    
    /usr/bin/python on Arch is Python 3.  So this would indeed be worth
    going into 4.19.
    
    Link: http://lkml.kernel.org/r/20181023070802.22558-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Joe Perches <joe@perches.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ebac3b957a91c921d2f1a7953caafca18aa6260
Author: Roman Gushchin <guro@fb.com>
Date:   Fri Nov 16 15:08:18 2018 -0800

    mm: don't reclaim inodes with many attached pages
    
    commit a76cf1a474d7dbcd9336b5f5afb0162baa142cf0 upstream.
    
    Spock reported that commit 172b06c32b94 ("mm: slowly shrink slabs with a
    relatively small number of objects") leads to a regression on his setup:
    periodically the majority of the pagecache is evicted without an obvious
    reason, while before the change the amount of free memory was balancing
    around the watermark.
    
    The reason behind is that the mentioned above change created some
    minimal background pressure on the inode cache.  The problem is that if
    an inode is considered to be reclaimed, all belonging pagecache page are
    stripped, no matter how many of them are there.  So, if a huge
    multi-gigabyte file is cached in the memory, and the goal is to reclaim
    only few slab objects (unused inodes), we still can eventually evict all
    gigabytes of the pagecache at once.
    
    The workload described by Spock has few large non-mapped files in the
    pagecache, so it's especially noticeable.
    
    To solve the problem let's postpone the reclaim of inodes, which have
    more than 1 attached page.  Let's wait until the pagecache pages will be
    evicted naturally by scanning the corresponding LRU lists, and only then
    reclaim the inode structure.
    
    Link: http://lkml.kernel.org/r/20181023164302.20436-1-guro@fb.com
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Reported-by: Spock <dairinin@gmail.com>
    Tested-by: Spock <dairinin@gmail.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: <stable@vger.kernel.org>    [4.19.x]
    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 d1cbbc39d6f38f91e404b529d721ffd0d8e5fa8e
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Wed Nov 14 09:55:42 2018 -0800

    efi/arm/libstub: Pack FDT after populating it
    
    commit 72a58a63a164b4e9d2d914e65caeb551846883f1 upstream.
    
    Commit:
    
      24d7c494ce46 ("efi/arm-stub: Round up FDT allocation to mapping size")
    
    increased the allocation size for the FDT image created by the stub to a
    fixed value of 2 MB, to simplify the former code that made several
    attempts with increasing values for the size. This is reasonable
    given that the allocation is of type EFI_LOADER_DATA, which is released
    to the kernel unless it is explicitly memblock_reserve()d by the early
    boot code.
    
    However, this allocation size leaked into the 'size' field of the FDT
    header metadata, and so the entire allocation remains occupied by the
    device tree binary, even if most of it is not used to store device tree
    information.
    
    So call fdt_pack() to shrink the FDT data structure to its minimum size
    after populating all the fields, so that the remaining memory is no
    longer wasted.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: <stable@vger.kernel.org> # v4.12+
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Fixes: 24d7c494ce46 ("efi/arm-stub: Round up FDT allocation to mapping size")
    Link: http://lkml.kernel.org/r/20181114175544.12860-4-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 113737cc318036e99ce33d7a26ac0e3d76b829ee
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Fri Nov 16 15:08:11 2018 -0800

    mm/swapfile.c: use kvzalloc for swap_info_struct allocation
    
    commit 873d7bcfd066663e3e50113dc4a0de19289b6354 upstream.
    
    Commit a2468cc9bfdf ("swap: choose swap device according to numa node")
    changed 'avail_lists' field of 'struct swap_info_struct' to an array.
    In popular linux distros it increased size of swap_info_struct up to 40
    Kbytes and now swap_info_struct allocation requires order-4 page.
    Switch to kvzmalloc allows to avoid unexpected allocation failures.
    
    Link: http://lkml.kernel.org/r/fc23172d-3c75-21e2-d551-8b1808cbe593@virtuozzo.com
    Fixes: a2468cc9bfdf ("swap: choose swap device according to numa node")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Aaron Lu <aaron.lu@intel.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b46e532dec0a7753e59d00b3329d89b7ce3104d
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Nov 16 15:08:04 2018 -0800

    hugetlbfs: fix kernel BUG at fs/hugetlbfs/inode.c:444!
    
    commit 5e41540c8a0f0e98c337dda8b391e5dda0cde7cf upstream.
    
    This bug has been experienced several times by the Oracle DB team.  The
    BUG is in remove_inode_hugepages() as follows:
    
            /*
             * If page is mapped, it was faulted in after being
             * unmapped in caller.  Unmap (again) now after taking
             * the fault mutex.  The mutex will prevent faults
             * until we finish removing the page.
             *
             * This race can only happen in the hole punch case.
             * Getting here in a truncate operation is a bug.
             */
            if (unlikely(page_mapped(page))) {
                    BUG_ON(truncate_op);
    
    In this case, the elevated map count is not the result of a race.
    Rather it was incorrectly incremented as the result of a bug in the huge
    pmd sharing code.  Consider the following:
    
     - Process A maps a hugetlbfs file of sufficient size and alignment
       (PUD_SIZE) that a pmd page could be shared.
    
     - Process B maps the same hugetlbfs file with the same size and
       alignment such that a pmd page is shared.
    
     - Process B then calls mprotect() to change protections for the mapping
       with the shared pmd. As a result, the pmd is 'unshared'.
    
     - Process B then calls mprotect() again to chage protections for the
       mapping back to their original value. pmd remains unshared.
    
     - Process B then forks and process C is created. During the fork
       process, we do dup_mm -> dup_mmap -> copy_page_range to copy page
       tables. Copying page tables for hugetlb mappings is done in the
       routine copy_hugetlb_page_range.
    
    In copy_hugetlb_page_range(), the destination pte is obtained by:
    
            dst_pte = huge_pte_alloc(dst, addr, sz);
    
    If pmd sharing is possible, the returned pointer will be to a pte in an
    existing page table.  In the situation above, process C could share with
    either process A or process B.  Since process A is first in the list,
    the returned pte is a pointer to a pte in process A's page table.
    
    However, the check for pmd sharing in copy_hugetlb_page_range is:
    
            /* If the pagetables are shared don't copy or take references */
            if (dst_pte == src_pte)
                    continue;
    
    Since process C is sharing with process A instead of process B, the
    above test fails.  The code in copy_hugetlb_page_range which follows
    assumes dst_pte points to a huge_pte_none pte.  It copies the pte entry
    from src_pte to dst_pte and increments this map count of the associated
    page.  This is how we end up with an elevated map count.
    
    To solve, check the dst_pte entry for huge_pte_none.  If !none, this
    implies PMD sharing so do not copy.
    
    Link: http://lkml.kernel.org/r/20181105212315.14125-1-mike.kravetz@oracle.com
    Fixes: c5c99429fa57 ("fix hugepages leak due to pagetable page sharing")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Prakash Sangappa <prakash.sangappa@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8703946d7413734d6440291f6e8d2c9346da68b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 16 15:08:35 2018 -0800

    lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn
    
    commit 1c23b4108d716cc848b38532063a8aca4f86add8 upstream.
    
    gcc-8 complains about the prototype for this function:
    
      lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
    
    This is actually a GCC's bug. In GCC internals
    __ubsan_handle_builtin_unreachable() declared with both 'noreturn' and
    'const' attributes instead of only 'noreturn':
    
       https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210
    
    Workaround this by removing the noreturn attribute.
    
    [aryabinin: add information about GCC bug in changelog]
    Link: http://lkml.kernel.org/r/20181107144516.4587-1-aryabinin@virtuozzo.com
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Acked-by: Olof Johansson <olof@lixom.net>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0f044f025e9a023e1e2b33c0731291059e2748d
Author: Eric Biggers <ebiggers@google.com>
Date:   Sat Nov 3 14:56:00 2018 -0700

    crypto: user - fix leaking uninitialized memory to userspace
    
    commit f43f39958beb206b53292801e216d9b8a660f087 upstream.
    
    All bytes of the NETLINK_CRYPTO report structures must be initialized,
    since they are copied to userspace.  The change from strncpy() to
    strlcpy() broke this.  As a minimal fix, change it back.
    
    Fixes: 4473710df1f8 ("crypto: user - Prepare for CRYPTO_MAX_ALG_NAME expansion")
    Cc: <stable@vger.kernel.org> # v4.12+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ef7a9a5d27d33c728756ee0024084bd17664f15
Author: Diego Viola <diego.viola@gmail.com>
Date:   Mon Nov 12 17:22:52 2018 -0200

    libata: blacklist SAMSUNG MZ7TD256HAFV-000L9 SSD
    
    commit 410b5c7b48368317af95f0113692561d01d8144e upstream.
    
    med_power_with_dipm still causes freezes after updating the firmware to
    the latest version (DXT04L5Q).
    
    Set model_rev to NULL and blacklist the device.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Diego Viola <diego.viola@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55795dac8ea70b18d11d6359c99809c612a9a6b2
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Thu Nov 8 20:14:29 2018 +0000

    gfs2: Fix metadata read-ahead during truncate (2)
    
    commit e7445ceddfc220c1aede6d42758a5acb8844e9c3 upstream.
    
    The previous attempt to fix for metadata read-ahead during truncate was
    incorrect: for files with a height > 2 (1006989312 bytes with a block
    size of 4096 bytes), read-ahead requests were not being issued for some
    of the indirect blocks discovered while walking the metadata tree,
    leading to significant slow-downs when deleting large files.  Fix that.
    
    In addition, only issue read-ahead requests in the first pass through
    the meta-data tree, while deallocating data blocks.
    
    Fixes: c3ce5aa9b0 ("gfs2: Fix metadata read-ahead during truncate")
    Cc: stable@vger.kernel.org # v4.16+
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8793f67af1c0e61293b1d70dcdbc5f8d24df50a8
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Nov 5 22:57:24 2018 +0000

    gfs2: Put bitmap buffers in put_super
    
    commit 10283ea525d30f2e99828978fd04d8427876a7ad upstream.
    
    gfs2_put_super calls gfs2_clear_rgrpd to destroy the gfs2_rgrpd objects
    attached to the resource group glocks.  That function should release the
    buffers attached to the gfs2_bitmap objects (bi_bh), but the call to
    gfs2_rgrp_brelse for doing that is missing.
    
    When gfs2_releasepage later runs across these buffers which are still
    referenced, it refuses to free them.  This causes the pages the buffers
    are attached to to remain referenced as well.  With enough mount/unmount
    cycles, the system will eventually run out of memory.
    
    Fix this by adding the missing call to gfs2_rgrp_brelse in
    gfs2_clear_rgrpd.
    
    (Also fix a gfs2_rgrp_relse -> gfs2_rgrp_brelse typo in a comment.)
    
    Fixes: 39b0f1e92908 ("GFS2: Don't brelse rgrp buffer_heads every allocation")
    Cc: stable@vger.kernel.org # v4.2+
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c75e3cbfd91b421747d1ff74f706315855706297
Author: Ondrej Mosnacek <omosnace@redhat.com>
Date:   Tue Nov 13 16:16:08 2018 +0100

    selinux: check length properly in SCTP bind hook
    
    commit c138325fb8713472d5a0c3c7258b9131bab40725 upstream.
    
    selinux_sctp_bind_connect() must verify if the address buffer has
    sufficient length before accessing the 'sa_family' field. See
    __sctp_connect() for a similar check.
    
    The length of the whole address ('len') is already checked in the
    callees.
    
    Reported-by: Qian Cai <cai@gmx.us>
    Fixes: d452930fd3b9 ("selinux: Add SCTP support")
    Cc: <stable@vger.kernel.org> # 4.17+
    Cc: Richard Haines <richard_c_haines@btinternet.com>
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Tested-by: Qian Cai <cai@gmx.us>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18cd6106cf9b427ae072964c7c36b05df5704cd3
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Nov 9 15:52:16 2018 +0100

    fuse: fix possibly missed wake-up after abort
    
    commit 2d84a2d19b6150c6dbac1e6ebad9c82e4c123772 upstream.
    
    In current fuse_drop_waiting() implementation it's possible that
    fuse_wait_aborted() will not be woken up in the unlikely case that
    fuse_abort_conn() + fuse_wait_aborted() runs in between checking
    fc->connected and calling atomic_dec(&fc->num_waiting).
    
    Do the atomic_dec_and_test() unconditionally, which also provides the
    necessary barrier against reordering with the fc->connected check.
    
    The explicit smp_mb() in fuse_wait_aborted() is not actually needed, since
    the spin_unlock() in fuse_abort_conn() provides the necessary RELEASE
    barrier after resetting fc->connected.  However, this is not a performance
    sensitive path, and adding the explicit barrier makes it easier to
    document.
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: b8f95e5d13f5 ("fuse: umount should wait for all requests")
    Cc: <stable@vger.kernel.org> #v4.19
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 280da476036d8bbbd4fb7f8c2b94c75316cd43d4
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Nov 9 15:52:16 2018 +0100

    fuse: fix leaked notify reply
    
    commit 7fabaf303458fcabb694999d6fa772cc13d4e217 upstream.
    
    fuse_request_send_notify_reply() may fail if the connection was reset for
    some reason (e.g. fs was unmounted).  Don't leak request reference in this
    case.  Besides leaking memory, this resulted in fc->num_waiting not being
    decremented and hence fuse_wait_aborted() left in a hanging and unkillable
    state.
    
    Fixes: 2d45ba381a74 ("fuse: add retrieve request")
    Fixes: b8f95e5d13f5 ("fuse: umount should wait for all requests")
    Reported-and-tested-by: syzbot+6339eda9cb4ebbc4c37b@syzkaller.appspotmail.com
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Cc: <stable@vger.kernel.org> #v2.6.36
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0f5298635bb1b4a5f7e0c440dd66395193209ca
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Fri Nov 9 14:51:46 2018 +0100

    fuse: fix use-after-free in fuse_direct_IO()
    
    commit ebacb81273599555a7a19f7754a1451206a5fc4f upstream.
    
    In async IO blocking case the additional reference to the io is taken for
    it to survive fuse_aio_complete(). In non blocking case this additional
    reference is not needed, however we still reference io to figure out
    whether to wait for completion or not. This is wrong and will lead to
    use-after-free. Fix it by storing blocking information in separate
    variable.
    
    This was spotted by KASAN when running generic/208 fstest.
    
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Reported-by: Zorro Lang <zlang@redhat.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 744742d692e3 ("fuse: Add reference counting for fuse_io_priv")
    Cc: <stable@vger.kernel.org> # v4.6
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3363e7110a236b09ed07b032e66a33b79dc470a1
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Mon Nov 5 03:48:25 2018 +0000

    rtc: hctosys: Add missing range error reporting
    
    commit 7ce9a992ffde8ce93d5ae5767362a5c7389ae895 upstream.
    
    Fix an issue with the 32-bit range error path in `rtc_hctosys' where no
    error code is set and consequently the successful preceding call result
    from `rtc_read_time' is propagated to `rtc_hctosys_ret'.  This in turn
    makes any subsequent call to `hctosys_show' incorrectly report in sysfs
    that the system time has been set from this RTC while it has not.
    
    Set the error to ERANGE then if we can't express the result due to an
    overflow.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Fixes: b3a5ac42ab18 ("rtc: hctosys: Ensure system time doesn't overflow time_t")
    Cc: stable@vger.kernel.org # 4.17+
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20965de7f47207394ffe03d70a4806f5e1cfcd7f
Author: Scott Mayhew <smayhew@redhat.com>
Date:   Thu Nov 8 11:11:36 2018 -0500

    nfsd: COPY and CLONE operations require the saved filehandle to be set
    
    commit 01310bb7c9c98752cc763b36532fab028e0f8f81 upstream.
    
    Make sure we have a saved filehandle, otherwise we'll oops with a null
    pointer dereference in nfs4_preprocess_stateid_op().
    
    Signed-off-by: Scott Mayhew <smayhew@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c355fb8d33e6f9223b158a3bb4b7c883bedc5531
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Nov 5 11:10:50 2018 -0500

    NFSv4: Don't exit the state manager without clearing NFS4CLNT_MANAGER_RUNNING
    
    commit 21a446cf186570168b7281b154b1993968598aca upstream.
    
    If we exit the NFSv4 state manager due to a umount, then we can end up
    leaving the NFS4CLNT_MANAGER_RUNNING flag set. If another mount causes
    the nfs4_client to be rereferenced before it is destroyed, then we end
    up never being able to recover state.
    
    Fixes: 47c2199b6eb5 ("NFSv4.1: Ensure state manager thread dies on last ...")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Cc: stable@vger.kernel.org # v4.15+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03c91663c0935fd1c7df5539ff6df65db8f57278
Author: Frank Sorenson <sorenson@redhat.com>
Date:   Tue Oct 30 15:10:40 2018 -0500

    sunrpc: correct the computation for page_ptr when truncating
    
    commit 5d7a5bcb67c70cbc904057ef52d3fcfeb24420bb upstream.
    
    When truncating the encode buffer, the page_ptr is getting
    advanced, causing the next page to be skipped while encoding.
    The page is still included in the response, so the response
    contains a page of bogus data.
    
    We need to adjust the page_ptr backwards to ensure we encode
    the next page into the correct place.
    
    We saw this triggered when concurrent directory modifications caused
    nfsd4_encode_direct_fattr() to return nfserr_noent, and the resulting
    call to xdr_truncate_encode() corrupted the READDIR reply.
    
    Signed-off-by: Frank Sorenson <sorenson@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 401182ae096bfb16693bcfb8fcab1bc128a5c6bc
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Thu Sep 27 17:17:57 2018 +0000

    kdb: print real address of pointers instead of hashed addresses
    
    commit 568fb6f42ac6851320adaea25f8f1b94de14e40a upstream.
    
    Since commit ad67b74d2469 ("printk: hash addresses printed with %p"),
    all pointers printed with %p are printed with hashed addresses
    instead of real addresses in order to avoid leaking addresses in
    dmesg and syslog. But this applies to kdb too, with is unfortunate:
    
        Entering kdb (current=0x(ptrval), pid 329) due to Keyboard Entry
        kdb> ps
        15 sleeping system daemon (state M) processes suppressed,
        use 'ps A' to see all.
        Task Addr       Pid   Parent [*] cpu State Thread     Command
        0x(ptrval)      329      328  1    0   R  0x(ptrval) *sh
    
        0x(ptrval)        1        0  0    0   S  0x(ptrval)  init
        0x(ptrval)        3        2  0    0   D  0x(ptrval)  rcu_gp
        0x(ptrval)        4        2  0    0   D  0x(ptrval)  rcu_par_gp
        0x(ptrval)        5        2  0    0   D  0x(ptrval)  kworker/0:0
        0x(ptrval)        6        2  0    0   D  0x(ptrval)  kworker/0:0H
        0x(ptrval)        7        2  0    0   D  0x(ptrval)  kworker/u2:0
        0x(ptrval)        8        2  0    0   D  0x(ptrval)  mm_percpu_wq
        0x(ptrval)       10        2  0    0   D  0x(ptrval)  rcu_preempt
    
    The whole purpose of kdb is to debug, and for debugging real addresses
    need to be known. In addition, data displayed by kdb doesn't go into
    dmesg.
    
    This patch replaces all %p by %px in kdb in order to display real
    addresses.
    
    Fixes: ad67b74d2469 ("printk: hash addresses printed with %p")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47052af2372038e6d05672c37d2831318c96c4be
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Thu Sep 27 17:17:49 2018 +0000

    kdb: use correct pointer when 'btc' calls 'btt'
    
    commit dded2e159208a9edc21dd5c5f583afa28d378d39 upstream.
    
    On a powerpc 8xx, 'btc' fails as follows:
    
    Entering kdb (current=0x(ptrval), pid 282) due to Keyboard Entry
    kdb> btc
    btc: cpu status: Currently on cpu 0
    Available cpus: 0
    kdb_getarea: Bad address 0x0
    
    when booting the kernel with 'debug_boot_weak_hash', it fails as well
    
    Entering kdb (current=0xba99ad80, pid 284) due to Keyboard Entry
    kdb> btc
    btc: cpu status: Currently on cpu 0
    Available cpus: 0
    kdb_getarea: Bad address 0xba99ad80
    
    On other platforms, Oopses have been observed too, see
    https://github.com/linuxppc/linux/issues/139
    
    This is due to btc calling 'btt' with %p pointer as an argument.
    
    This patch replaces %p by %px to get the real pointer value as
    expected by 'btt'
    
    Fixes: ad67b74d2469 ("printk: hash addresses printed with %p")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 110e9082dc64e152b845d910276a60be617bf9ca
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Thu Nov 1 13:22:38 2018 +0100

    ARM: cpuidle: Don't register the driver when back-end init returns -ENXIO
    
    commit 763f191af51f127cf8e69cd361f50bf6180768a5 upstream.
    
    There's no point to register the cpuidle driver for the current CPU, when
    the initialization of the arch specific back-end data fails by returning
    -ENXIO.
    
    Instead, let's re-order the sequence to its original flow, by first trying
    to initialize the back-end part and then act accordingly on the returned
    error code. Additionally, let's print the error message, no matter of what
    error code that was returned.
    
    Fixes: a0d46a3dfdc3 (ARM: cpuidle: Register per cpuidle device)
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: 4.19+ <stable@vger.kernel.org> # v4.19+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d406e7972dd47c54959281782e05f52c8a10c95
Author: Dmitry V. Levin <ldv@altlinux.org>
Date:   Thu Nov 1 14:03:08 2018 +0300

    uapi: fix linux/kfd_ioctl.h userspace compilation errors
    
    commit aba118389a6fb2ad7958de0f37b5869852bd38cf upstream.
    
    Consistently use types provided by <linux/types.h> via <drm/drm.h>
    to fix the following linux/kfd_ioctl.h userspace compilation errors:
    
    /usr/include/linux/kfd_ioctl.h:250:2: error: unknown type name 'uint32_t'
      uint32_t reset_type;
    /usr/include/linux/kfd_ioctl.h:251:2: error: unknown type name 'uint32_t'
      uint32_t reset_cause;
    /usr/include/linux/kfd_ioctl.h:252:2: error: unknown type name 'uint32_t'
      uint32_t memory_lost;
    /usr/include/linux/kfd_ioctl.h:253:2: error: unknown type name 'uint32_t'
      uint32_t gpu_id;
    
    Fixes: 0c119abad7f0d ("drm/amd: Add kfd ioctl defines for hw_exception event")
    Cc: <stable@vger.kernel.org> # v4.19
    Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83eec9ad8130b78fddd76a2b280e4d1a18a79923
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Wed Oct 3 10:18:33 2018 -0400

    mnt: fix __detach_mounts infinite loop
    
    commit 1e9c75fb9c47a75a9aec0cd17db5f6dc36b58e00 upstream.
    
    Since commit ff17fa561a04 ("d_invalidate(): unhash immediately")
    immediately unhashes the dentry, we'll never return the mountpoint in
    lookup_mountpoint(), which can lead to an unbreakable loop in
    d_invalidate().
    
    I have reports of NFS clients getting into this condition after the server
    removes an export of an existing mount created through follow_automount(),
    but I suspect there are various other ways to produce this problem if we
    hunt down users of d_invalidate().  For example, it is possible to get into
    this state by using XFS' d_invalidate() call in xfs_vn_unlink():
    
    truncate -s 100m img{1,2}
    
    mkfs.xfs -q -n version=ci img1
    mkfs.xfs -q -n version=ci img2
    
    mkdir -p /mnt/xfs
    mount img1 /mnt/xfs
    
    mkdir /mnt/xfs/sub1
    mount img2 /mnt/xfs/sub1
    
    cat > /mnt/xfs/sub1/foo &
    umount -l /mnt/xfs/sub1
    mount img2 /mnt/xfs/sub1
    
    mount --make-private /mnt/xfs
    
    mkdir /mnt/xfs/sub2
    mount --move /mnt/xfs/sub1 /mnt/xfs/sub2
    rmdir /mnt/xfs/sub1
    
    Fix this by moving the check for an unlinked dentry out of the
    detach_mounts() path.
    
    Fixes: ff17fa561a04 ("d_invalidate(): unhash immediately")
    Cc: stable@vger.kernel.org
    Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7861ef8995702dbeec86938232b95b367cfed41
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu Oct 25 12:05:11 2018 -0500

    mount: Prevent MNT_DETACH from disconnecting locked mounts
    
    commit 9c8e0a1b683525464a2abe9fb4b54404a50ed2b4 upstream.
    
    Timothy Baldwin <timbaldwin@fastmail.co.uk> wrote:
    > As per mount_namespaces(7) unprivileged users should not be able to look under mount points:
    >
    >   Mounts that come as a single unit from more privileged mount are locked
    >   together and may not be separated in a less privileged mount namespace.
    >
    > However they can:
    >
    > 1. Create a mount namespace.
    > 2. In the mount namespace open a file descriptor to the parent of a mount point.
    > 3. Destroy the mount namespace.
    > 4. Use the file descriptor to look under the mount point.
    >
    > I have reproduced this with Linux 4.16.18 and Linux 4.18-rc8.
    >
    > The setup:
    >
    > $ sudo sysctl kernel.unprivileged_userns_clone=1
    > kernel.unprivileged_userns_clone = 1
    > $ mkdir -p A/B/Secret
    > $ sudo mount -t tmpfs hide A/B
    >
    >
    > "Secret" is indeed hidden as expected:
    >
    > $ ls -lR A
    > A:
    > total 0
    > drwxrwxrwt 2 root root 40 Feb 12 21:08 B
    >
    > A/B:
    > total 0
    >
    >
    > The attack revealing "Secret":
    >
    > $ unshare -Umr sh -c "exec unshare -m ls -lR /proc/self/fd/4/ 4<A"
    > /proc/self/fd/4/:
    > total 0
    > drwxr-xr-x 3 root root 60 Feb 12 21:08 B
    >
    > /proc/self/fd/4/B:
    > total 0
    > drwxr-xr-x 2 root root 40 Feb 12 21:08 Secret
    >
    > /proc/self/fd/4/B/Secret:
    > total 0
    
    I tracked this down to put_mnt_ns running passing UMOUNT_SYNC and
    disconnecting all of the mounts in a mount namespace.  Fix this by
    factoring drop_mounts out of drop_collected_mounts and passing
    0 instead of UMOUNT_SYNC.
    
    There are two possible behavior differences that result from this.
    - No longer setting UMOUNT_SYNC will no longer set MNT_SYNC_UMOUNT on
      the vfsmounts being unmounted.  This effects the lazy rcu walk by
      kicking the walk out of rcu mode and forcing it to be a non-lazy
      walk.
    - No longer disconnecting locked mounts will keep some mounts around
      longer as they stay because the are locked to other mounts.
    
    There are only two users of drop_collected mounts: audit_tree.c and
    put_mnt_ns.
    
    In audit_tree.c the mounts are private and there are no rcu lazy walks
    only calls to iterate_mounts. So the changes should have no effect
    except for a small timing effect as the connected mounts are disconnected.
    
    In put_mnt_ns there may be references from process outside the mount
    namespace to the mounts.  So the mounts remaining connected will
    be the bug fix that is needed.  That rcu walks are allowed to continue
    appears not to be a problem especially as the rcu walk change was about
    an implementation detail not about semantics.
    
    Cc: stable@vger.kernel.org
    Fixes: 5ff9d8a65ce8 ("vfs: Lock in place mounts from more privileged users")
    Reported-by: Timothy Baldwin <timbaldwin@fastmail.co.uk>
    Tested-by: Timothy Baldwin <timbaldwin@fastmail.co.uk>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e4bec183e5e522817165b9b21c97f54ba5b7b5
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu Oct 25 09:04:18 2018 -0500

    mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts
    
    commit df7342b240185d58d3d9665c0bbf0a0f5570ec29 upstream.
    
    Jonathan Calmels from NVIDIA reported that he's able to bypass the
    mount visibility security check in place in the Linux kernel by using
    a combination of the unbindable property along with the private mount
    propagation option to allow a unprivileged user to see a path which
    was purposefully hidden by the root user.
    
    Reproducer:
      # Hide a path to all users using a tmpfs
      root@castiana:~# mount -t tmpfs tmpfs /sys/devices/
      root@castiana:~#
    
      # As an unprivileged user, unshare user namespace and mount namespace
      stgraber@castiana:~$ unshare -U -m -r
    
      # Confirm the path is still not accessible
      root@castiana:~# ls /sys/devices/
    
      # Make /sys recursively unbindable and private
      root@castiana:~# mount --make-runbindable /sys
      root@castiana:~# mount --make-private /sys
    
      # Recursively bind-mount the rest of /sys over to /mnnt
      root@castiana:~# mount --rbind /sys/ /mnt
    
      # Access our hidden /sys/device as an unprivileged user
      root@castiana:~# ls /mnt/devices/
      breakpoint cpu cstate_core cstate_pkg i915 intel_pt isa kprobe
      LNXSYSTM:00 msr pci0000:00 platform pnp0 power software system
      tracepoint uncore_arb uncore_cbox_0 uncore_cbox_1 uprobe virtual
    
    Solve this by teaching copy_tree to fail if a mount turns out to be
    both unbindable and locked.
    
    Cc: stable@vger.kernel.org
    Fixes: 5ff9d8a65ce8 ("vfs: Lock in place mounts from more privileged users")
    Reported-by: Jonathan Calmels <jcalmels@nvidia.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32224b874cd879f4385a5f39cf760b8f09db09c8
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Oct 22 10:21:38 2018 -0500

    mount: Retest MNT_LOCKED in do_umount
    
    commit 25d202ed820ee347edec0bf3bf553544556bf64b upstream.
    
    It was recently pointed out that the one instance of testing MNT_LOCKED
    outside of the namespace_sem is in ksys_umount.
    
    Fix that by adding a test inside of do_umount with namespace_sem and
    the mount_lock held.  As it helps to fail fails the existing test is
    maintained with an additional comment pointing out that it may be racy
    because the locks are not held.
    
    Cc: stable@vger.kernel.org
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Fixes: 5ff9d8a65ce8 ("vfs: Lock in place mounts from more privileged users")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d01f0310cd0b9fae6b9b6ede317d33beb96be4f
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 22:36:23 2018 -0500

    ext4: fix buffer leak in __ext4_read_dirblock() on error path
    
    commit de59fae0043f07de5d25e02ca360f7d57bfa5866 upstream.
    
    Fixes: dc6982ff4db1 ("ext4: refactor code to read directory blocks ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 3.9
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0f2b1fea812073888005c489f99766ab350c09b
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 11:14:35 2018 -0500

    ext4: fix buffer leak in ext4_expand_extra_isize_ea() on error path
    
    commit 53692ec074d00589c2cf1d6d17ca76ad0adce6ec upstream.
    
    Fixes: de05ca852679 ("ext4: move call to ext4_error() into ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.17
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29ee4d62f6dbd906f032b6ca8743a5b8ff2c1e76
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 11:10:21 2018 -0500

    ext4: fix buffer leak in ext4_xattr_move_to_block() on error path
    
    commit 6bdc9977fcdedf47118d2caf7270a19f4b6d8a8f upstream.
    
    Fixes: 3f2571c1f91f ("ext4: factor out xattr moving")
    Fixes: 6dd4ee7cab7e ("ext4: Expand extra_inodes space per ...")
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 2.6.23
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4648dcb21c94f1427cabbb48c1772dc57c5c4649
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 11:07:01 2018 -0500

    ext4: release bs.bh before re-using in ext4_xattr_block_find()
    
    commit 45ae932d246f721e6584430017176cbcadfde610 upstream.
    
    bs.bh was taken in previous ext4_xattr_block_find() call,
    it should be released before re-using
    
    Fixes: 7e01c8e5420b ("ext3/4: fix uninitialized bs in ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 2.6.26
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f0d1c16ae0f60cb5d8de43a12d5b15238ca8563
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 11:01:33 2018 -0500

    ext4: fix buffer leak in ext4_xattr_get_block() on error path
    
    commit ecaaf408478b6fb4d9986f9b6652f3824e374f4c upstream.
    
    Fixes: dec214d00e0d ("ext4: xattr inode deduplication")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.13
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a992da563c39c3d367c5ab99ae9b8b69ada3549
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Wed Nov 7 10:56:28 2018 -0500

    ext4: fix possible leak of s_journal_flag_rwsem in error path
    
    commit af18e35bfd01e6d65a5e3ef84ffe8b252d1628c5 upstream.
    
    Fixes: c8585c6fcaf2 ("ext4: fix races between changing inode journal ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.7
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d339ced07928837cc177c15a45b9789bde30e03
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Nov 7 10:32:53 2018 -0500

    ext4: fix possible leak of sbi->s_group_desc_leak in error path
    
    commit 9e463084cdb22e0b56b2dfbc50461020409a5fd3 upstream.
    
    Fixes: bfe0a5f47ada ("ext4: add more mount time checks of the superblock")
    Reported-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.18
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64a3d5374bb1614e654bc11436425a7c45fcdd3b
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue Nov 6 17:18:17 2018 -0500

    ext4: avoid possible double brelse() in add_new_gdb() on error path
    
    commit 4f32c38b4662312dd3c5f113d8bdd459887fb773 upstream.
    
    Fixes: b40971426a83 ("ext4: add error checking to calls to ...")
    Reported-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 2.6.38
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 110a1994e1cf6663176b5018919ae9bd982f6915
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Tue Nov 6 16:16:01 2018 -0500

    ext4: fix missing cleanup if ext4_alloc_flex_bg_array() fails while resizing
    
    commit f348e2241fb73515d65b5d77dd9c174128a7fbf2 upstream.
    
    Fixes: 117fff10d7f1 ("ext4: grow the s_flex_groups array as needed ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 3.7
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 656b121b39dca14f63e823715ffed24a06ad8bc1
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Tue Nov 6 17:01:36 2018 -0500

    ext4: avoid buffer leak in ext4_orphan_add() after prior errors
    
    commit feaf264ce7f8d54582e2f66eb82dd9dd124c94f3 upstream.
    
    Fixes: d745a8c20c1f ("ext4: reduce contention on s_orphan_lock")
    Fixes: 6e3617e579e0 ("ext4: Handle non empty on-disk orphan link")
    Cc: Dmitry Monakhov <dmonakhov@gmail.com>
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 2.6.34
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d65b7d334f77650eadc566db920301e18e1fbe02
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Tue Nov 6 16:49:50 2018 -0500

    ext4: avoid buffer leak on shutdown in ext4_mark_iloc_dirty()
    
    commit a6758309a005060b8297a538a457c88699cb2520 upstream.
    
    ext4_mark_iloc_dirty() callers expect that it releases iloc->bh
    even if it returns an error.
    
    Fixes: 0db1ff222d40 ("ext4: add shutdown bit and check for it")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.11
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36b1ba6a5ef563ad3ed1cc7c0e37168985a47f1a
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Tue Nov 6 16:20:40 2018 -0500

    ext4: fix possible inode leak in the retry loop of ext4_resize_fs()
    
    commit db6aee62406d9fbb53315fcddd81f1dc271d49fa upstream.
    
    Fixes: 1c6bd7173d66 ("ext4: convert file system to meta_bg if needed ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 3.7
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4903c091ce4807d7f40fd6ab8ae7f7d85469ac28
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Fri Nov 9 11:34:40 2018 -0500

    ext4: missing !bh check in ext4_xattr_inode_write()
    
    commit eb6984fa4ce2837dcb1f66720a600f31b0bb3739 upstream.
    
    According to Ted Ts'o ext4_getblk() called in ext4_xattr_inode_write()
    should not return bh = NULL
    
    The only time that bh could be NULL, then, would be in the case of
    something really going wrong; a programming error elsewhere (perhaps a
    wild pointer dereference) or I/O error causing on-disk file system
    corruption (although that would be highly unlikely given that we had
    *just* allocated the blocks and so the metadata blocks in question
    probably would still be in the cache).
    
    Fixes: e50e5129f384 ("ext4: xattr-in-inode support")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 4.13
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20dd2c4e7ffb1928c0d783673c678c1fadea107c
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Nov 3 16:13:17 2018 -0400

    ext4: avoid potential extra brelse in setup_new_flex_group_blocks()
    
    commit 9e4028935cca3f9ef9b6a90df9da6f1f94853536 upstream.
    
    Currently bh is set to NULL only during first iteration of for cycle,
    then this pointer is not cleared after end of using.
    Therefore rollback after errors can lead to extra brelse(bh) call,
    decrements bh counter and later trigger an unexpected warning in __brelse()
    
    Patch moves brelse() calls in body of cycle to exclude requirement of
    brelse() call in rollback.
    
    Fixes: 33afdcc5402d ("ext4: add a function which sets up group blocks ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 3.3+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2aa79d317c21e86ec8e312963ccb74bfed28438a
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Nov 3 16:50:08 2018 -0400

    ext4: add missing brelse() add_new_gdb_meta_bg()'s error path
    
    commit 61a9c11e5e7a0dab5381afa5d9d4dd5ebf18f7a0 upstream.
    
    Fixes: 01f795f9e0d6 ("ext4: add online resizing support for meta_bg ...")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 3.7
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd18d6e0c11dd36ce1b1d27582ae8314f016e4b0
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Nov 3 16:22:10 2018 -0400

    ext4: add missing brelse() in set_flexbg_block_bitmap()'s error path
    
    commit cea5794122125bf67559906a0762186cf417099c upstream.
    
    Fixes: 33afdcc5402d ("ext4: add a function which sets up group blocks ...")
    Cc: stable@kernel.org # 3.3
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7b6459e5144a789ab6365a63da2fca6dfd38c12
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Nov 3 17:11:19 2018 -0400

    ext4: add missing brelse() update_backups()'s error path
    
    commit ea0abbb648452cdb6e1734b702b6330a7448fcf8 upstream.
    
    Fixes: ac27a0ec112a ("ext4: initial copy of files from ext3")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org # 2.6.19
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebbc6fce6d2cb84e43245ba77b385323ace747b2
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Sun Nov 4 03:48:54 2018 +0000

    clockevents/drivers/i8253: Add support for PIT shutdown quirk
    
    commit 35b69a420bfb56b7b74cb635ea903db05e357bec upstream.
    
    Add support for platforms where pit_shutdown() doesn't work because of a
    quirk in the PIT emulation. On these platforms setting the counter register
    to zero causes the PIT to start running again, negating the shutdown.
    
    Provide a global variable that controls whether the counter register is
    zero'ed, which platform specific code can override.
    
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
    Cc: "devel@linuxdriverproject.org" <devel@linuxdriverproject.org>
    Cc: "daniel.lezcano@linaro.org" <daniel.lezcano@linaro.org>
    Cc: "virtualization@lists.linux-foundation.org" <virtualization@lists.linux-foundation.org>
    Cc: "jgross@suse.com" <jgross@suse.com>
    Cc: "akataria@vmware.com" <akataria@vmware.com>
    Cc: "olaf@aepfle.de" <olaf@aepfle.de>
    Cc: "apw@canonical.com" <apw@canonical.com>
    Cc: vkuznets <vkuznets@redhat.com>
    Cc: "jasowang@redhat.com" <jasowang@redhat.com>
    Cc: "marcelo.cerri@canonical.com" <marcelo.cerri@canonical.com>
    Cc: KY Srinivasan <kys@microsoft.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1541303219-11142-2-git-send-email-mikelley@microsoft.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2589f9a3e53e203fdb5c393d3892d8b358e376c
Author: Shaokun Zhang <zhangshaokun@hisilicon.com>
Date:   Mon Nov 5 18:49:09 2018 +0800

    btrfs: tree-checker: Fix misleading group system information
    
    commit 761333f2f50ccc887aa9957ae829300262c0d15b upstream.
    
    block_group_err shows the group system as a decimal value with a '0x'
    prefix, which is somewhat misleading.
    
    Fix it to print hexadecimal, as was intended.
    
    Fixes: fce466eab7ac6 ("btrfs: tree-checker: Verify block_group_item")
    CC: stable@vger.kernel.org # 4.19+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec6d90a4b7f3453ea8be6195fe17963fef6ddf36
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 5 11:14:17 2018 +0000

    Btrfs: fix data corruption due to cloning of eof block
    
    commit ac765f83f1397646c11092a032d4f62c3d478b81 upstream.
    
    We currently allow cloning a range from a file which includes the last
    block of the file even if the file's size is not aligned to the block
    size. This is fine and useful when the destination file has the same size,
    but when it does not and the range ends somewhere in the middle of the
    destination file, it leads to corruption because the bytes between the EOF
    and the end of the block have undefined data (when there is support for
    discard/trimming they have a value of 0x00).
    
    Example:
    
     $ mkfs.btrfs -f /dev/sdb
     $ mount /dev/sdb /mnt
    
     $ export foo_size=$((256 * 1024 + 100))
     $ xfs_io -f -c "pwrite -S 0x3c 0 $foo_size" /mnt/foo
     $ xfs_io -f -c "pwrite -S 0xb5 0 1M" /mnt/bar
    
     $ xfs_io -c "reflink /mnt/foo 0 512K $foo_size" /mnt/bar
    
     $ od -A d -t x1 /mnt/bar
     0000000 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5
     *
     0524288 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c 3c
     *
     0786528 3c 3c 3c 3c 00 00 00 00 00 00 00 00 00 00 00 00
     0786544 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     *
     0790528 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5 b5
     *
     1048576
    
    The bytes in the range from 786532 (512Kb + 256Kb + 100 bytes) to 790527
    (512Kb + 256Kb + 4Kb - 1) got corrupted, having now a value of 0x00 instead
    of 0xb5.
    
    This is similar to the problem we had for deduplication that got recently
    fixed by commit de02b9f6bb65 ("Btrfs: fix data corruption when
    deduplicating between different files").
    
    Fix this by not allowing such operations to be performed and return the
    errno -EINVAL to user space. This is what XFS is doing as well at the VFS
    level. This change however now makes us return -EINVAL instead of
    -EOPNOTSUPP for cases where the source range maps to an inline extent and
    the destination range's end is smaller then the destination file's size,
    since the detection of inline extents is done during the actual process of
    dropping file extent items (at __btrfs_drop_extents()). Returning the
    -EINVAL error is done early on and solely based on the input parameters
    (offsets and length) and destination file's size. This makes us consistent
    with XFS and anyone else supporting cloning since this case is now checked
    at a higher level in the VFS and is where the -EINVAL will be returned
    from starting with kernel 4.20 (the VFS changed was introduced in 4.20-rc1
    by commit 07d19dc9fbe9 ("vfs: avoid problematic remapping requests into
    partial EOF block"). So this change is more geared towards stable kernels,
    as it's unlikely the new VFS checks get removed intentionally.
    
    A test case for fstests follows soon, as well as an update to filter
    existing tests that expect -EOPNOTSUPP to accept -EINVAL as well.
    
    CC: <stable@vger.kernel.org> # 4.4+
    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 bafd5b78011131cf4047f7724117efa70c5d5b0a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 5 11:14:05 2018 +0000

    Btrfs: fix infinite loop on inode eviction after deduplication of eof block
    
    commit 11023d3f5fdf89bba5e1142127701ca6e6014587 upstream.
    
    If we attempt to deduplicate the last block of a file A into the middle of
    a file B, and file A's size is not a multiple of the block size, we end
    rounding the deduplication length to 0 bytes, to avoid the data corruption
    issue fixed by commit de02b9f6bb65 ("Btrfs: fix data corruption when
    deduplicating between different files"). However a length of zero will
    cause the insertion of an extent state with a start value greater (by 1)
    then the end value, leading to a corrupt extent state that will trigger a
    warning and cause chaos such as an infinite loop during inode eviction.
    Example trace:
    
     [96049.833585] ------------[ cut here ]------------
     [96049.833714] WARNING: CPU: 0 PID: 24448 at fs/btrfs/extent_io.c:436 insert_state+0x101/0x120 [btrfs]
     [96049.833767] CPU: 0 PID: 24448 Comm: xfs_io Not tainted 4.19.0-rc7-btrfs-next-39 #1
     [96049.833768] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
     [96049.833780] RIP: 0010:insert_state+0x101/0x120 [btrfs]
     [96049.833783] RSP: 0018:ffffafd2c3707af0 EFLAGS: 00010282
     [96049.833785] RAX: 0000000000000000 RBX: 000000000004dfff RCX: 0000000000000006
     [96049.833786] RDX: 0000000000000007 RSI: ffff99045c143230 RDI: ffff99047b2168a0
     [96049.833787] RBP: ffff990457851cd0 R08: 0000000000000001 R09: 0000000000000000
     [96049.833787] R10: ffffafd2c3707ab8 R11: 0000000000000000 R12: ffff9903b93b12c8
     [96049.833788] R13: 000000000004e000 R14: ffffafd2c3707b80 R15: ffffafd2c3707b78
     [96049.833790] FS:  00007f5c14e7d700(0000) GS:ffff99047b200000(0000) knlGS:0000000000000000
     [96049.833791] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [96049.833792] CR2: 00007f5c146abff8 CR3: 0000000115f4c004 CR4: 00000000003606f0
     [96049.833795] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [96049.833796] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [96049.833796] Call Trace:
     [96049.833809]  __set_extent_bit+0x46c/0x6a0 [btrfs]
     [96049.833823]  lock_extent_bits+0x6b/0x210 [btrfs]
     [96049.833831]  ? _raw_spin_unlock+0x24/0x30
     [96049.833841]  ? test_range_bit+0xdf/0x130 [btrfs]
     [96049.833853]  lock_extent_range+0x8e/0x150 [btrfs]
     [96049.833864]  btrfs_double_extent_lock+0x78/0xb0 [btrfs]
     [96049.833875]  btrfs_extent_same_range+0x14e/0x550 [btrfs]
     [96049.833885]  ? rcu_read_lock_sched_held+0x3f/0x70
     [96049.833890]  ? __kmalloc_node+0x2b0/0x2f0
     [96049.833899]  ? btrfs_dedupe_file_range+0x19a/0x280 [btrfs]
     [96049.833909]  btrfs_dedupe_file_range+0x270/0x280 [btrfs]
     [96049.833916]  vfs_dedupe_file_range_one+0xd9/0xe0
     [96049.833919]  vfs_dedupe_file_range+0x131/0x1b0
     [96049.833924]  do_vfs_ioctl+0x272/0x6e0
     [96049.833927]  ? __fget+0x113/0x200
     [96049.833931]  ksys_ioctl+0x70/0x80
     [96049.833933]  __x64_sys_ioctl+0x16/0x20
     [96049.833937]  do_syscall_64+0x60/0x1b0
     [96049.833939]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
     [96049.833941] RIP: 0033:0x7f5c1478ddd7
     [96049.833943] RSP: 002b:00007ffe15b196a8 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
     [96049.833945] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5c1478ddd7
     [96049.833946] RDX: 00005625ece322d0 RSI: 00000000c0189436 RDI: 0000000000000004
     [96049.833947] RBP: 0000000000000000 R08: 00007f5c14a46f48 R09: 0000000000000040
     [96049.833948] R10: 0000000000000541 R11: 0000000000000202 R12: 0000000000000000
     [96049.833949] R13: 0000000000000000 R14: 0000000000000004 R15: 00005625ece322d0
     [96049.833954] irq event stamp: 6196
     [96049.833956] hardirqs last  enabled at (6195): [<ffffffff91b00663>] console_unlock+0x503/0x640
     [96049.833958] hardirqs last disabled at (6196): [<ffffffff91a037dd>] trace_hardirqs_off_thunk+0x1a/0x1c
     [96049.833959] softirqs last  enabled at (6114): [<ffffffff92600370>] __do_softirq+0x370/0x421
     [96049.833964] softirqs last disabled at (6095): [<ffffffff91a8dd4d>] irq_exit+0xcd/0xe0
     [96049.833965] ---[ end trace db7b05f01b7fa10c ]---
     [96049.935816] R13: 0000000000000000 R14: 00005562e5259240 R15: 00007ffff092b910
     [96049.935822] irq event stamp: 6584
     [96049.935823] hardirqs last  enabled at (6583): [<ffffffff91b00663>] console_unlock+0x503/0x640
     [96049.935825] hardirqs last disabled at (6584): [<ffffffff91a037dd>] trace_hardirqs_off_thunk+0x1a/0x1c
     [96049.935827] softirqs last  enabled at (6328): [<ffffffff92600370>] __do_softirq+0x370/0x421
     [96049.935828] softirqs last disabled at (6313): [<ffffffff91a8dd4d>] irq_exit+0xcd/0xe0
     [96049.935829] ---[ end trace db7b05f01b7fa123 ]---
     [96049.935840] ------------[ cut here ]------------
     [96049.936065] WARNING: CPU: 1 PID: 24463 at fs/btrfs/extent_io.c:436 insert_state+0x101/0x120 [btrfs]
     [96049.936107] CPU: 1 PID: 24463 Comm: umount Tainted: G        W         4.19.0-rc7-btrfs-next-39 #1
     [96049.936108] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
     [96049.936117] RIP: 0010:insert_state+0x101/0x120 [btrfs]
     [96049.936119] RSP: 0018:ffffafd2c3637bc0 EFLAGS: 00010282
     [96049.936120] RAX: 0000000000000000 RBX: 000000000004dfff RCX: 0000000000000006
     [96049.936121] RDX: 0000000000000007 RSI: ffff990445cf88e0 RDI: ffff99047b2968a0
     [96049.936122] RBP: ffff990457851cd0 R08: 0000000000000001 R09: 0000000000000000
     [96049.936123] R10: ffffafd2c3637b88 R11: 0000000000000000 R12: ffff9904574301e8
     [96049.936124] R13: 000000000004e000 R14: ffffafd2c3637c50 R15: ffffafd2c3637c48
     [96049.936125] FS:  00007fe4b87e72c0(0000) GS:ffff99047b280000(0000) knlGS:0000000000000000
     [96049.936126] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [96049.936128] CR2: 00005562e52618d8 CR3: 00000001151c8005 CR4: 00000000003606e0
     [96049.936129] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [96049.936131] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [96049.936131] Call Trace:
     [96049.936141]  __set_extent_bit+0x46c/0x6a0 [btrfs]
     [96049.936154]  lock_extent_bits+0x6b/0x210 [btrfs]
     [96049.936167]  btrfs_evict_inode+0x1e1/0x5a0 [btrfs]
     [96049.936172]  evict+0xbf/0x1c0
     [96049.936174]  dispose_list+0x51/0x80
     [96049.936176]  evict_inodes+0x193/0x1c0
     [96049.936180]  generic_shutdown_super+0x3f/0x110
     [96049.936182]  kill_anon_super+0xe/0x30
     [96049.936189]  btrfs_kill_super+0x13/0x100 [btrfs]
     [96049.936191]  deactivate_locked_super+0x3a/0x70
     [96049.936193]  cleanup_mnt+0x3b/0x80
     [96049.936195]  task_work_run+0x93/0xc0
     [96049.936198]  exit_to_usermode_loop+0xfa/0x100
     [96049.936201]  do_syscall_64+0x17f/0x1b0
     [96049.936202]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
     [96049.936204] RIP: 0033:0x7fe4b80cfb37
     [96049.936206] RSP: 002b:00007ffff092b688 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
     [96049.936207] RAX: 0000000000000000 RBX: 00005562e5259060 RCX: 00007fe4b80cfb37
     [96049.936208] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 00005562e525faa0
     [96049.936209] RBP: 00005562e525faa0 R08: 00005562e525f770 R09: 0000000000000015
     [96049.936210] R10: 00000000000006b4 R11: 0000000000000246 R12: 00007fe4b85d1e64
     [96049.936211] R13: 0000000000000000 R14: 00005562e5259240 R15: 00007ffff092b910
     [96049.936211] R13: 0000000000000000 R14: 00005562e5259240 R15: 00007ffff092b910
     [96049.936216] irq event stamp: 6616
     [96049.936219] hardirqs last  enabled at (6615): [<ffffffff91b00663>] console_unlock+0x503/0x640
     [96049.936219] hardirqs last disabled at (6616): [<ffffffff91a037dd>] trace_hardirqs_off_thunk+0x1a/0x1c
     [96049.936222] softirqs last  enabled at (6328): [<ffffffff92600370>] __do_softirq+0x370/0x421
     [96049.936222] softirqs last disabled at (6313): [<ffffffff91a8dd4d>] irq_exit+0xcd/0xe0
     [96049.936223] ---[ end trace db7b05f01b7fa124 ]---
    
    The second stack trace, from inode eviction, is repeated forever due to
    the infinite loop during eviction.
    
    This is the same type of problem fixed way back in 2015 by commit
    113e8283869b ("Btrfs: fix inode eviction infinite loop after extent_same
    ioctl") and commit ccccf3d67294 ("Btrfs: fix inode eviction infinite loop
    after cloning into it").
    
    So fix this by returning immediately if the deduplication range length
    gets rounded down to 0 bytes, as there is nothing that needs to be done in
    such case.
    
    Example reproducer:
    
     $ mkfs.btrfs -f /dev/sdb
     $ mount /dev/sdb /mnt
    
     $ xfs_io -f -c "pwrite -S 0xe6 0 100" /mnt/foo
     $ xfs_io -f -c "pwrite -S 0xe6 0 1M" /mnt/bar
    
     # Unmount the filesystem and mount it again so that we start without any
     # extent state records when we ask for the deduplication.
     $ umount /mnt
     $ mount /dev/sdb /mnt
    
     $ xfs_io -c "dedupe /mnt/foo 0 500K 100" /mnt/bar
    
     # This unmount triggers the infinite loop.
     $ umount /mnt
    
    A test case for fstests will follow soon.
    
    Fixes: de02b9f6bb65 ("Btrfs: fix data corruption when deduplicating between different files")
    CC: <stable@vger.kernel.org> # 4.19+
    Reviewed-by: Nikolay Borisov <nborisov@suse.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 db39065cb24064838622076fbc239214c148e4f3
Author: Robbie Ko <robbieko@synology.com>
Date:   Tue Oct 30 18:04:04 2018 +0800

    Btrfs: fix cur_offset in the error case for nocow
    
    commit 506481b20e818db40b6198815904ecd2d6daee64 upstream.
    
    When the cow_file_range fails, the related resources are unlocked
    according to the range [start..end), so the unlock cannot be repeated in
    run_delalloc_nocow.
    
    In some cases (e.g. cur_offset <= end && cow_start != -1), cur_offset is
    not updated correctly, so move the cur_offset update before
    cow_file_range.
    
      kernel BUG at mm/page-writeback.c:2663!
      Internal error: Oops - BUG: 0 [#1] SMP
      CPU: 3 PID: 31525 Comm: kworker/u8:7 Tainted: P O
      Hardware name: Realtek_RTD1296 (DT)
      Workqueue: writeback wb_workfn (flush-btrfs-1)
      task: ffffffc076db3380 ti: ffffffc02e9ac000 task.ti: ffffffc02e9ac000
      PC is at clear_page_dirty_for_io+0x1bc/0x1e8
      LR is at clear_page_dirty_for_io+0x14/0x1e8
      pc : [<ffffffc00033c91c>] lr : [<ffffffc00033c774>] pstate: 40000145
      sp : ffffffc02e9af4f0
      Process kworker/u8:7 (pid: 31525, stack limit = 0xffffffc02e9ac020)
      Call trace:
      [<ffffffc00033c91c>] clear_page_dirty_for_io+0x1bc/0x1e8
      [<ffffffbffc514674>] extent_clear_unlock_delalloc+0x1e4/0x210 [btrfs]
      [<ffffffbffc4fb168>] run_delalloc_nocow+0x3b8/0x948 [btrfs]
      [<ffffffbffc4fb948>] run_delalloc_range+0x250/0x3a8 [btrfs]
      [<ffffffbffc514c0c>] writepage_delalloc.isra.21+0xbc/0x1d8 [btrfs]
      [<ffffffbffc516048>] __extent_writepage+0xe8/0x248 [btrfs]
      [<ffffffbffc51630c>] extent_write_cache_pages.isra.17+0x164/0x378 [btrfs]
      [<ffffffbffc5185a8>] extent_writepages+0x48/0x68 [btrfs]
      [<ffffffbffc4f5828>] btrfs_writepages+0x20/0x30 [btrfs]
      [<ffffffc00033d758>] do_writepages+0x30/0x88
      [<ffffffc0003ba0f4>] __writeback_single_inode+0x34/0x198
      [<ffffffc0003ba6c4>] writeback_sb_inodes+0x184/0x3c0
      [<ffffffc0003ba96c>] __writeback_inodes_wb+0x6c/0xc0
      [<ffffffc0003bac20>] wb_writeback+0x1b8/0x1c0
      [<ffffffc0003bb0f0>] wb_workfn+0x150/0x250
      [<ffffffc0002b0014>] process_one_work+0x1dc/0x388
      [<ffffffc0002b02f0>] worker_thread+0x130/0x500
      [<ffffffc0002b6344>] kthread+0x10c/0x110
      [<ffffffc000284590>] ret_from_fork+0x10/0x40
      Code: d503201f a9025bb5 a90363b7 f90023b9 (d4210000)
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa625a480cefe265e16dbcf35f389f4e1f5862f8
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Oct 29 09:42:06 2018 +0000

    Btrfs: fix missing data checksums after a ranged fsync (msync)
    
    commit 008c6753f7e070c77c70d708a6bf0255b4381763 upstream.
    
    Recently we got a massive simplification for fsync, where for the fast
    path we no longer log new extents while their respective ordered extents
    are still running.
    
    However that simplification introduced a subtle regression for the case
    where we use a ranged fsync (msync). Consider the following example:
    
                   CPU 0                                    CPU 1
    
                                                mmap write to range [2Mb, 4Mb[
      mmap write to range [512Kb, 1Mb[
      msync range [512K, 1Mb[
        --> triggers fast fsync
            (BTRFS_INODE_NEEDS_FULL_SYNC
             not set)
        --> creates extent map A for this
            range and adds it to list of
            modified extents
        --> starts ordered extent A for
            this range
        --> waits for it to complete
    
                                                writeback triggered for range
                                                [2Mb, 4Mb[
                                                  --> create extent map B and
                                                      adds it to the list of
                                                      modified extents
                                                  --> creates ordered extent B
    
        --> start looking for and logging
            modified extents
        --> logs extent maps A and B
        --> finds checksums for extent A
            in the csum tree, but not for
            extent B
      fsync (msync) finishes
    
                                                  --> ordered extent B
                                                      finishes and its
                                                      checksums are added
                                                      to the csum tree
    
                                    <power cut>
    
    After replaying the log, we have the extent covering the range [2Mb, 4Mb[
    but do not have the data checksum items covering that file range.
    
    This happens because at the very beginning of an fsync (btrfs_sync_file())
    we start and wait for IO in the given range [512Kb, 1Mb[ and therefore
    wait for any ordered extents in that range to complete before we start
    logging the extents. However if right before we start logging the extent
    in our range [512Kb, 1Mb[, writeback is started for any other dirty range,
    such as the range [2Mb, 4Mb[ due to memory pressure or a concurrent fsync
    or msync (btrfs_sync_file() starts writeback before acquiring the inode's
    lock), an ordered extent is created for that other range and a new extent
    map is created to represent that range and added to the inode's list of
    modified extents.
    
    That means that we will see that other extent in that list when collecting
    extents for logging (done at btrfs_log_changed_extents()) and log the
    extent before the respective ordered extent finishes - namely before the
    checksum items are added to the checksums tree, which is where
    log_extent_csums() looks for the checksums, therefore making us log an
    extent without logging its checksums. Before that massive simplification
    of fsync, this wasn't a problem because besides looking for checkums in
    the checksums tree, we also looked for them in any ordered extent still
    running.
    
    The consequence of data checksums missing for a file range is that users
    attempting to read the affected file range will get -EIO errors and dmesg
    reports the following:
    
     [10188.358136] BTRFS info (device sdc): no csum found for inode 297 start 57344
     [10188.359278] BTRFS warning (device sdc): csum failed root 5 ino 297 off 57344 csum 0x98f94189 expected csum 0x00000000 mirror 1
    
    So fix this by skipping extents outside of our logging range at
    btrfs_log_changed_extents() and leaving them on the list of modified
    extents so that any subsequent ranged fsync may collect them if needed.
    Also, if we find a hole extent outside of the range still log it, just
    to prevent having gaps between extent items after replaying the log,
    otherwise fsck will complain when we are not using the NO_HOLES feature
    (fstest btrfs/056 triggers such case).
    
    Fixes: e7175a692765 ("btrfs: remove the wait ordered logic in the log_one_extent path")
    CC: stable@vger.kernel.org # 4.19+
    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 ec26ad250a5f4fbaba2711927ab01ba909bca497
Author: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Date:   Wed Oct 24 20:24:03 2018 +0800

    btrfs: fix pinned underflow after transaction aborted
    
    commit fcd5e74288f7d36991b1f0fb96b8c57079645e38 upstream.
    
    When running generic/475, we may get the following warning in dmesg:
    
    [ 6902.102154] WARNING: CPU: 3 PID: 18013 at fs/btrfs/extent-tree.c:9776 btrfs_free_block_groups+0x2af/0x3b0 [btrfs]
    [ 6902.109160] CPU: 3 PID: 18013 Comm: umount Tainted: G        W  O      4.19.0-rc8+ #8
    [ 6902.110971] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    [ 6902.112857] RIP: 0010:btrfs_free_block_groups+0x2af/0x3b0 [btrfs]
    [ 6902.118921] RSP: 0018:ffffc9000459bdb0 EFLAGS: 00010286
    [ 6902.120315] RAX: ffff880175050bb0 RBX: ffff8801124a8000 RCX: 0000000000170007
    [ 6902.121969] RDX: 0000000000000002 RSI: 0000000000170007 RDI: ffffffff8125fb74
    [ 6902.123716] RBP: ffff880175055d10 R08: 0000000000000000 R09: 0000000000000000
    [ 6902.125417] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880175055d88
    [ 6902.127129] R13: ffff880175050bb0 R14: 0000000000000000 R15: dead000000000100
    [ 6902.129060] FS:  00007f4507223780(0000) GS:ffff88017ba00000(0000) knlGS:0000000000000000
    [ 6902.130996] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 6902.132558] CR2: 00005623599cac78 CR3: 000000014b700001 CR4: 00000000003606e0
    [ 6902.134270] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 6902.135981] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 6902.137836] Call Trace:
    [ 6902.138939]  close_ctree+0x171/0x330 [btrfs]
    [ 6902.140181]  ? kthread_stop+0x146/0x1f0
    [ 6902.141277]  generic_shutdown_super+0x6c/0x100
    [ 6902.142517]  kill_anon_super+0x14/0x30
    [ 6902.143554]  btrfs_kill_super+0x13/0x100 [btrfs]
    [ 6902.144790]  deactivate_locked_super+0x2f/0x70
    [ 6902.146014]  cleanup_mnt+0x3b/0x70
    [ 6902.147020]  task_work_run+0x9e/0xd0
    [ 6902.148036]  do_syscall_64+0x470/0x600
    [ 6902.149142]  ? trace_hardirqs_off_thunk+0x1a/0x1c
    [ 6902.150375]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [ 6902.151640] RIP: 0033:0x7f45077a6a7b
    [ 6902.157324] RSP: 002b:00007ffd589f3e68 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
    [ 6902.159187] RAX: 0000000000000000 RBX: 000055e8eec732b0 RCX: 00007f45077a6a7b
    [ 6902.160834] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000055e8eec73490
    [ 6902.162526] RBP: 0000000000000000 R08: 000055e8eec734b0 R09: 00007ffd589f26c0
    [ 6902.164141] R10: 0000000000000000 R11: 0000000000000246 R12: 000055e8eec73490
    [ 6902.165815] R13: 00007f4507ac61a4 R14: 0000000000000000 R15: 00007ffd589f40d8
    [ 6902.167553] irq event stamp: 0
    [ 6902.168998] hardirqs last  enabled at (0): [<0000000000000000>]           (null)
    [ 6902.170731] hardirqs last disabled at (0): [<ffffffff810cd810>] copy_process.part.55+0x3b0/0x1f00
    [ 6902.172773] softirqs last  enabled at (0): [<ffffffff810cd810>] copy_process.part.55+0x3b0/0x1f00
    [ 6902.174671] softirqs last disabled at (0): [<0000000000000000>]           (null)
    [ 6902.176407] ---[ end trace 463138c2986b275c ]---
    [ 6902.177636] BTRFS info (device dm-3): space_info 4 has 273465344 free, is not full
    [ 6902.179453] BTRFS info (device dm-3): space_info total=276824064, used=4685824, pinned=18446744073708158976, reserved=0, may_use=0, readonly=65536
    
    In the above line there's "pinned=18446744073708158976" which is an
    unsigned u64 value of -1392640, an obvious underflow.
    
    When transaction_kthread is running cleanup_transaction(), another
    fsstress is running btrfs_commit_transaction(). The
    btrfs_finish_extent_commit() may get the same range as
    btrfs_destroy_pinned_extent() got, which causes the pinned underflow.
    
    Fixes: d4b450cd4b33 ("Btrfs: fix race between transaction commit and empty block group removal")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb7c993f487c812542c2436046f605c8f8898c99
Author: Mathieu Malaterre <malat@debian.org>
Date:   Wed Jun 6 21:42:32 2018 +0200

    watchdog/core: Add missing prototypes for weak functions
    
    commit 81bd415c91eb966118d773dddf254aebf3022411 upstream.
    
    The split out of the hard lockup detector exposed two new weak functions,
    but no prototypes for them, which triggers the build warning:
    
      kernel/watchdog.c:109:12: warning: no previous prototype for ‘watchdog_nmi_enable’ [-Wmissing-prototypes]
      kernel/watchdog.c:115:13: warning: no previous prototype for ‘watchdog_nmi_disable’ [-Wmissing-prototypes]
    
    Add the prototypes.
    
    Fixes: 73ce0511c436 ("kernel/watchdog.c: move hardlockup detector to separate file")
    Signed-off-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Babu Moger <babu.moger@oracle.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180606194232.17653-1-malat@debian.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 139ca3da7f4d2d4cae3f7429d841808f19a37df7
Author: H. Peter Anvin (Intel) <hpa@zytor.com>
Date:   Mon Oct 22 09:19:05 2018 -0700

    arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
    
    commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
    
    Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
    using arbitrary flags. Because BOTHER is not defined, the general
    Linux code doesn't allow setting arbitrary baud rates, and because
    CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
    drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
    
    Resolve both problems by #defining BOTHER to 037 on Alpha.
    
    However, userspace still needs to know if setting BOTHER is actually
    safe given legacy kernels (does anyone actually care about that on
    Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
    though they use the same structure. Define struct termios2 just for
    compatibility; it is the exact same structure as struct termios. In a
    future patchset, this will be cleaned up so the uapi headers are
    usable from libc.
    
    Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Philippe Ombredanne <pombredanne@nexb.com>
    Cc: Eugene Syromiatnikov <esyr@redhat.com>
    Cc: <linux-alpha@vger.kernel.org>
    Cc: <linux-serial@vger.kernel.org>
    Cc: Johan Hovold <johan@kernel.org>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8851e11fc8237b3e47b2984674ebf61413655593
Author: H. Peter Anvin <hpa@zytor.com>
Date:   Mon Oct 22 09:19:04 2018 -0700

    termios, tty/tty_baudrate.c: fix buffer overrun
    
    commit 991a25194097006ec1e0d2e0814ff920e59e3465 upstream.
    
    On architectures with CBAUDEX == 0 (Alpha and PowerPC), the code in tty_baudrate.c does
    not do any limit checking on the tty_baudrate[] array, and in fact a
    buffer overrun is possible on both architectures. Add a limit check to
    prevent that situation.
    
    This will be followed by a much bigger cleanup/simplification patch.
    
    Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    Requested-by: Cc: Johan Hovold <johan@kernel.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kate Stewart <kstewart@linuxfoundation.org>
    Cc: Philippe Ombredanne <pombredanne@nexb.com>
    Cc: Eugene Syromiatnikov <esyr@redhat.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2deb55aa0291a23575f67eb1e3b3065b66a7e56e
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Sun Nov 4 03:48:57 2018 +0000

    x86/hyper-v: Enable PIT shutdown quirk
    
    commit 1de72c706488b7be664a601cf3843bd01e327e58 upstream.
    
    Hyper-V emulation of the PIT has a quirk such that the normal PIT shutdown
    path doesn't work, because clearing the counter register restarts the
    timer.
    
    Disable the counter clearing on PIT shutdown.
    
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
    Cc: "devel@linuxdriverproject.org" <devel@linuxdriverproject.org>
    Cc: "daniel.lezcano@linaro.org" <daniel.lezcano@linaro.org>
    Cc: "virtualization@lists.linux-foundation.org" <virtualization@lists.linux-foundation.org>
    Cc: "jgross@suse.com" <jgross@suse.com>
    Cc: "akataria@vmware.com" <akataria@vmware.com>
    Cc: "olaf@aepfle.de" <olaf@aepfle.de>
    Cc: "apw@canonical.com" <apw@canonical.com>
    Cc: vkuznets <vkuznets@redhat.com>
    Cc: "jasowang@redhat.com" <jasowang@redhat.com>
    Cc: "marcelo.cerri@canonical.com" <marcelo.cerri@canonical.com>
    Cc: KY Srinivasan <kys@microsoft.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1541303219-11142-3-git-send-email-mikelley@microsoft.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e73cb6a6da2d35d8b37f9ab38a15f520398a330d
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Nov 9 15:22:07 2018 -0500

    x86/cpu/vmware: Do not trace vmware_sched_clock()
    
    commit 15035388439f892017d38b05214d3cda6578af64 upstream.
    
    When running function tracing on a Linux guest running on VMware
    Workstation, the guest would crash. This is due to tracing of the
    sched_clock internal call of the VMware vmware_sched_clock(), which
    causes an infinite recursion within the tracing code (clock calls must
    not be traced).
    
    Make vmware_sched_clock() not traced by ftrace.
    
    Fixes: 80e9a4f21fd7c ("x86/vmware: Add paravirt sched clock")
    Reported-by: GwanYeong Kim <gy741.kim@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    CC: Alok Kataria <akataria@vmware.com>
    CC: GwanYeong Kim <gy741.kim@gmail.com>
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Ingo Molnar <mingo@kernel.org>
    Cc: stable@vger.kernel.org
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: virtualization@lists.linux-foundation.org
    CC: x86-ml <x86@kernel.org>
    Link: http://lkml.kernel.org/r/20181109152207.4d3e7d70@gandalf.local.home
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cbdaf131c90279e5960e77e7bb8a5ea095b102e
Author: John Garry <john.garry@huawei.com>
Date:   Thu Nov 8 18:17:03 2018 +0800

    of, numa: Validate some distance map rules
    
    commit 89c38422e072bb453e3045b8f1b962a344c3edea upstream.
    
    Currently the NUMA distance map parsing does not validate the distance
    table for the distance-matrix rules 1-2 in [1].
    
    However the arch NUMA code may enforce some of these rules, but not all.
    Such is the case for the arm64 port, which does not enforce the rule that
    the distance between separates nodes cannot equal LOCAL_DISTANCE.
    
    The patch adds the following rules validation:
    - distance of node to self equals LOCAL_DISTANCE
    - distance of separate nodes > LOCAL_DISTANCE
    
    This change avoids a yet-unresolved crash reported in [2].
    
    A note on dealing with symmetrical distances between nodes:
    
    Validating symmetrical distances between nodes is difficult. If it were
    mandated in the bindings that every distance must be recorded in the
    table, then it would be easy. However, it isn't.
    
    In addition to this, it is also possible to record [b, a] distance only
    (and not [a, b]). So, when processing the table for [b, a], we cannot
    assert that current distance of [a, b] != [b, a] as invalid, as [a, b]
    distance may not be present in the table and current distance would be
    default at REMOTE_DISTANCE.
    
    As such, we maintain the policy that we overwrite distance [a, b] = [b, a]
    for b > a. This policy is different to kernel ACPI SLIT validation, which
    allows non-symmetrical distances (ACPI spec SLIT rules allow it). However,
    the distance debug message is dropped as it may be misleading (for a distance
    which is later overwritten).
    
    Some final notes on semantics:
    
    - It is implied that it is the responsibility of the arch NUMA code to
      reset the NUMA distance map for an error in distance map parsing.
    
    - It is the responsibility of the FW NUMA topology parsing (whether OF or
      ACPI) to enforce NUMA distance rules, and not arch NUMA code.
    
    [1] Documents/devicetree/bindings/numa.txt
    [2] https://www.spinics.net/lists/arm-kernel/msg683304.html
    
    Cc: stable@vger.kernel.org # 4.7
    Signed-off-by: John Garry <john.garry@huawei.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73c660f3e13c028c2321f55b11671e3b36b78834
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Oct 31 11:10:42 2018 +0200

    perf intel-pt: Insert callchain context into synthesized callchains
    
    commit 242483068b4b9ad02f1653819b6e683577681e0e upstream.
    
    In the absence of a fallback, callchains must encode also the callchain
    context. Do that now there is no fallback.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: stable@vger.kernel.org # 4.19
    Link: http://lkml.kernel.org/r/100ea2ec-ed14-b56d-d810-e0a6d2f4b069@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3de8640d63e116680f68a749637ab2bc106f520
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Oct 31 11:10:43 2018 +0200

    perf intel-pt/bts: Calculate cpumode for synthesized samples
    
    commit 5d4f0edaa3ac4f1844ed7c64cd2bae6f1912bac5 upstream.
    
    In the absence of a fallback, samples must provide a correct cpumode for
    the 'ip'. Do that now there is no fallback.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: stable@vger.kernel.org # 4.19
    Link: http://lkml.kernel.org/r/20181031091043.23465-6-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b91345326b8863c98d3b14e7cfbf6f7b330b313
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Oct 30 12:12:26 2018 -0300

    perf callchain: Honour the ordering of PERF_CONTEXT_{USER,KERNEL,etc}
    
    commit e9024d519d892b38176cafd46f68a7cdddd77412 upstream.
    
    When processing using 'perf report -g caller', which is the default, we
    ended up reverting the callchain entries received from the kernel, but
    simply reverting throws away the information that tells that from a
    point onwards the addresses are for userspace, kernel, guest kernel,
    guest user, hypervisor.
    
    The idea is that if we are walking backwards, for each cluster of
    non-cpumode entries we have to first scan backwards for the next one and
    use that for the cluster.
    
    This seems silly and more expensive than it needs to be but it is enough
    for a initial fix.
    
    The code here is really complicated because it is intimately intertwined
    with the lbr and branch handling, as well as this callchain order,
    further fixes will be needed to properly take into account the cpumode
    in those cases.
    
    Another problem with ORDER_CALLER is that the NULL "0" IP that is at the
    end of most callchains shows up at the top of the histogram because
    every callchain contains it and with ORDER_CALLER it is the first entry.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Souvik Banerjee <souvik1997@gmail.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: stable@vger.kernel.org # 4.19
    Link: https://lkml.kernel.org/n/tip-2wt3ayp6j2y2f2xowixa8y6y@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b0131a022e22fa11eecda9e481e397ffd4fa171
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Oct 23 17:16:16 2018 +0200

    perf stat: Handle different PMU names with common prefix
    
    commit ea1fa48c055f833eb25f0c33188feecb7002ada5 upstream.
    
    On s390 the CPU Measurement Facility for counters now supports
    2 PMUs named cpum_cf (CPU Measurement Facility for counters) and
    cpum_cf_diag (CPU Measurement Facility for diagnostic counters)
    for one and the same CPU.
    
    Running command
    
     [root@s35lp76 perf]# ./perf stat -e tx_c_tend \
             -- ~/mytests/cf-tx-events 1
    
     Measuring transactions
     TX_C_TABORT_NO_SPECIAL: 0 expected:0
     TX_C_TABORT_SPECIAL: 0 expected:0
     TX_C_TEND: 1 expected:1
     TX_NC_TABORT: 11 expected:11
     TX_NC_TEND: 1 expected:1
    
     Performance counter stats for '/root/mytests/cf-tx-events 1':
    
      2      tx_c_tend
    
          0.002120091 seconds time elapsed
    
          0.000121000 seconds user
          0.002127000 seconds sys
    
     [root@s35lp76 perf]#
    
    displays output which is unexpected (and wrong):
    
      2      tx_c_tend
    
    The test program definitely triggers only one transaction, as shown
    in line 'TX_C_TEND: 1 expected:1'.
    
    This is caused by the following call sequence:
    
    pmu_lookup() scans and installs a PMU.
    +--> pmu_aliases() parses all aliases in directory
                    .../<pmu-name>/events/* which are file names.
         +--> pmu_aliases_parse() Read each file in directory and create
                          an new alias entry. This is done with
              +--> perf_pmu__new_alias() and
                   +--> __perf_pmu__new_alias() which also check for
                               identical alias names.
    
    After pmu_aliases() returns, a complete list of event names
    for this pmu has been created. Now function
    
    pmu_add_cpu_aliases()   is called to add the events listed in the json
    |                       files to the alias list of the cpu.
    +--> perf_pmu__find_map()  Returns a pointer to the json events.
    
    Now function pmu_add_cpu_aliases() scans through all events listed
    in the JSON files for this CPU.
    Each json event pmu name is compared with the current PMU being
    built up and if they mismatch, the json event is added to the
    current PMUs alias list.
    To avoid duplicate entries the following comparison is done:
    
            if (!is_arm_pmu_core(name)) {
                 pname = pe->pmu ? pe->pmu : "cpu";
                 if (strncmp(pname, name, strlen(pname)))
                         continue;
         }
    
    The culprit is the strncmp() function.
    
    Using current s390 PMU naming, the first PMU is 'cpum_cf'
    and a long list of events is added, among them 'tx_c_tend'
    
    When the second PMU named 'cpum_cf_diag' is added, only one event
    named 'CF_DIAG' is added by the pmu_aliases()  function.
    
    Now function pmu_add_cpu_aliases() is invoked for PMU 'cpum_cf_diag'.
    Since the CPUID string is the same for both PMUs, json file events
    for PMU named 'cpum_cf' are added to the PMU 'cpm_cf_diag'
    
    This happens because the strncmp() actually compares:
    
         strncmp("cpum_cf", "cpum_cf_diag", 6);
    
    The first parameter is the pmu name taken from the event in
    the json file. The second parameter is the pmu name of the PMU
    currently being built.
    They are different, but the length of the compare only tests the
    common prefix and this returns 0(true) when it should return false.
    
    Now all events for PMU cpum_cf are added to the alias list for pmu
    cpum_cf_diag.
    
    Later on in function parse_events_add_pmu() the event 'tx_c_end' is
    searched in all available PMUs and found twice, adding it two
    times to the evsel_list global variable which is the root
    of all events. This results in a counter value of 2 instead
    of 1.
    
    Output with this patch:
    
     [root@s35lp76 perf]# ./perf stat -e tx_c_tend \
                            -- ~/mytests/cf-tx-events 1
     Measuring transactions
     TX_C_TABORT_NO_SPECIAL: 0 expected:0
     TX_C_TABORT_SPECIAL: 0 expected:0
     TX_C_TEND: 1 expected:1
     TX_NC_TABORT: 11 expected:11
     TX_NC_TEND: 1 expected:1
    
     Performance counter stats for '/root/mytests/cf-tx-events 1':
    
                      1      tx_c_tend
    
          0.001815365 seconds time elapsed
    
          0.000123000 seconds user
          0.001756000 seconds sys
    
     [root@s35lp76 perf]#
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Reviewed-by: Sebastien Boisvert <sboisvert@gydle.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: stable@vger.kernel.org
    Fixes: 292c34c10249 ("perf pmu: Fix core PMU alias list for X86 platform")
    Link: http://lkml.kernel.org/r/20181023151616.78193-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29414ff37072d5f3005b63726ce9a921b25a6e84
Author: Leo Yan <leo.yan@linaro.org>
Date:   Tue Oct 30 15:18:28 2018 +0800

    perf cs-etm: Correct CPU mode for samples
    
    commit d6c9c05fe1eb4b213b183d8a1e79416256dc833a upstream.
    
    Since commit edeb0c90df35 ("perf tools: Stop fallbacking to kallsyms for
    vdso symbols lookup"), the kernel address cannot be properly parsed to
    kernel symbol with command 'perf script -k vmlinux'.  The reason is
    CoreSight samples is always to set CPU mode as PERF_RECORD_MISC_USER,
    thus it fails to find corresponding map/dso in below flows:
    
      process_sample_event()
        `-> machine__resolve()
              `-> thread__find_map(thread, sample->cpumode, sample->ip, al);
    
    In this flow it needs to pass argument 'sample->cpumode' to tell what's
    the CPU mode, before it always passed PERF_RECORD_MISC_USER but without
    any failure until the commit edeb0c90df35 ("perf tools: Stop fallbacking
    to kallsyms for vdso symbols lookup") has been merged.  The reason is
    even with the wrong CPU mode the function thread__find_map() firstly
    fails to find map but it will rollback to find kernel map for vdso
    symbols lookup.  In the latest code it has removed the fallback code,
    thus if CPU mode is PERF_RECORD_MISC_USER then it cannot find map
    anymore with kernel address.
    
    This patch is to correct samples CPU mode setting, it creates a new
    helper function cs_etm__cpu_mode() to tell what's the CPU mode based on
    the address with the info from machine structure; this patch has a bit
    extension to check not only kernel and user mode, but also check for
    host/guest and hypervisor mode.  Finally this patch uses the function in
    instruction and branch samples and also apply in cs_etm__mem_access()
    for a minor polishing.
    
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: stable@kernel.org # v4.19
    Link: http://lkml.kernel.org/r/1540883908-17018-1-git-send-email-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a63fffbd90f64d2e4981a440963a2c5aa0d77d83
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Wed Oct 24 22:37:13 2018 +0300

    hwmon: (core) Fix double-free in __hwmon_device_register()
    
    commit 74e3512731bd5c9673176425a76a7cc5efa8ddb6 upstream.
    
    Fix double-free that happens when thermal zone setup fails, see KASAN log
    below.
    
    ==================================================================
    BUG: KASAN: double-free or invalid-free in __hwmon_device_register+0x5dc/0xa7c
    
    CPU: 0 PID: 132 Comm: kworker/0:2 Tainted: G    B             4.19.0-rc8-next-20181016-00042-gb52cd80401e9-dirty #41
    Hardware name: NVIDIA Tegra SoC (Flattened Device Tree)
    Workqueue: events deferred_probe_work_func
    Backtrace:
    [<c0110540>] (dump_backtrace) from [<c0110944>] (show_stack+0x20/0x24)
    [<c0110924>] (show_stack) from [<c105cb08>] (dump_stack+0x9c/0xb0)
    [<c105ca6c>] (dump_stack) from [<c02fdaec>] (print_address_description+0x68/0x250)
    [<c02fda84>] (print_address_description) from [<c02fd4ac>] (kasan_report_invalid_free+0x68/0x88)
    [<c02fd444>] (kasan_report_invalid_free) from [<c02fc85c>] (__kasan_slab_free+0x1f4/0x200)
    [<c02fc668>] (__kasan_slab_free) from [<c02fd0c0>] (kasan_slab_free+0x14/0x18)
    [<c02fd0ac>] (kasan_slab_free) from [<c02f9c6c>] (kfree+0x90/0x294)
    [<c02f9bdc>] (kfree) from [<c0b41bbc>] (__hwmon_device_register+0x5dc/0xa7c)
    [<c0b415e0>] (__hwmon_device_register) from [<c0b421e8>] (hwmon_device_register_with_info+0xa0/0xa8)
    [<c0b42148>] (hwmon_device_register_with_info) from [<c0b42324>] (devm_hwmon_device_register_with_info+0x74/0xb4)
    [<c0b422b0>] (devm_hwmon_device_register_with_info) from [<c0b4481c>] (lm90_probe+0x414/0x578)
    [<c0b44408>] (lm90_probe) from [<c0aeeff4>] (i2c_device_probe+0x35c/0x384)
    [<c0aeec98>] (i2c_device_probe) from [<c08776cc>] (really_probe+0x290/0x3e4)
    [<c087743c>] (really_probe) from [<c0877a2c>] (driver_probe_device+0x80/0x1c4)
    [<c08779ac>] (driver_probe_device) from [<c0877da8>] (__device_attach_driver+0x104/0x11c)
    [<c0877ca4>] (__device_attach_driver) from [<c0874dd8>] (bus_for_each_drv+0xa4/0xc8)
    [<c0874d34>] (bus_for_each_drv) from [<c08773b0>] (__device_attach+0xf0/0x15c)
    [<c08772c0>] (__device_attach) from [<c0877e24>] (device_initial_probe+0x1c/0x20)
    [<c0877e08>] (device_initial_probe) from [<c08762f4>] (bus_probe_device+0xdc/0xec)
    [<c0876218>] (bus_probe_device) from [<c0876a08>] (deferred_probe_work_func+0xa8/0xd4)
    [<c0876960>] (deferred_probe_work_func) from [<c01527c4>] (process_one_work+0x3dc/0x96c)
    [<c01523e8>] (process_one_work) from [<c01541e0>] (worker_thread+0x4ec/0x8bc)
    [<c0153cf4>] (worker_thread) from [<c015b238>] (kthread+0x230/0x240)
    [<c015b008>] (kthread) from [<c01010bc>] (ret_from_fork+0x14/0x38)
    Exception stack(0xcf743fb0 to 0xcf743ff8)
    3fa0:                                     00000000 00000000 00000000 00000000
    3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    
    Allocated by task 132:
     kasan_kmalloc.part.1+0x58/0xf4
     kasan_kmalloc+0x90/0xa4
     kmem_cache_alloc_trace+0x90/0x2a0
     __hwmon_device_register+0xbc/0xa7c
     hwmon_device_register_with_info+0xa0/0xa8
     devm_hwmon_device_register_with_info+0x74/0xb4
     lm90_probe+0x414/0x578
     i2c_device_probe+0x35c/0x384
     really_probe+0x290/0x3e4
     driver_probe_device+0x80/0x1c4
     __device_attach_driver+0x104/0x11c
     bus_for_each_drv+0xa4/0xc8
     __device_attach+0xf0/0x15c
     device_initial_probe+0x1c/0x20
     bus_probe_device+0xdc/0xec
     deferred_probe_work_func+0xa8/0xd4
     process_one_work+0x3dc/0x96c
     worker_thread+0x4ec/0x8bc
     kthread+0x230/0x240
     ret_from_fork+0x14/0x38
       (null)
    
    Freed by task 132:
     __kasan_slab_free+0x12c/0x200
     kasan_slab_free+0x14/0x18
     kfree+0x90/0x294
     hwmon_dev_release+0x1c/0x20
     device_release+0x4c/0xe8
     kobject_put+0xac/0x11c
     device_unregister+0x2c/0x30
     __hwmon_device_register+0xa58/0xa7c
     hwmon_device_register_with_info+0xa0/0xa8
     devm_hwmon_device_register_with_info+0x74/0xb4
     lm90_probe+0x414/0x578
     i2c_device_probe+0x35c/0x384
     really_probe+0x290/0x3e4
     driver_probe_device+0x80/0x1c4
     __device_attach_driver+0x104/0x11c
     bus_for_each_drv+0xa4/0xc8
     __device_attach+0xf0/0x15c
     device_initial_probe+0x1c/0x20
     bus_probe_device+0xdc/0xec
     deferred_probe_work_func+0xa8/0xd4
     process_one_work+0x3dc/0x96c
     worker_thread+0x4ec/0x8bc
     kthread+0x230/0x240
     ret_from_fork+0x14/0x38
       (null)
    
    Cc: <stable@vger.kernel.org> # v4.15+
    Fixes: 47c332deb8e8 ("hwmon: Deal with errors from the thermal subsystem")
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e58f9d1a5a13ca21022fe0ebe10311bfb8b60e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Oct 11 13:06:16 2018 +0200

    mtd: docg3: don't set conflicting BCH_CONST_PARAMS option
    
    commit be2e1c9dcf76886a83fb1c433a316e26d4ca2550 upstream.
    
    I noticed during the creation of another bugfix that the BCH_CONST_PARAMS
    option that is set by DOCG3 breaks setting variable parameters for any
    other users of the BCH library code.
    
    The only other user we have today is the MTD_NAND software BCH
    implementation (most flash controllers use hardware BCH these days
    and are not affected). I considered removing BCH_CONST_PARAMS entirely
    because of the inherent conflict, but according to the description in
    lib/bch.c there is a significant performance benefit in keeping it.
    
    To avoid the immediate problem of the conflict between MTD_NAND_BCH
    and DOCG3, this only sets the constant parameters if MTD_NAND_BCH
    is disabled, which should fix the problem for all cases that
    are affected. This should also work for all stable kernels.
    
    Note that there is only one machine that actually seems to use the
    DOCG3 driver (arch/arm/mach-pxa/mioa701.c), so most users should have
    the driver disabled, but it almost certainly shows up if we wanted
    to test random kernels on machines that use software BCH in MTD.
    
    Fixes: d13d19ece39f ("mtd: docg3: add ECC correction code")
    Cc: stable@vger.kernel.org
    Cc: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bec0c3da4802291661124656fbd7d458e81c198
Author: Boris Brezillon <boris.brezillon@bootlin.com>
Date:   Sun Oct 28 12:29:55 2018 +0100

    mtd: nand: Fix nanddev_neraseblocks()
    
    commit d098093ba06eb032057d1aca1c2e45889e099d00 upstream.
    
    nanddev_neraseblocks() currently returns the number pages per LUN
    instead of the total number of eraseblocks.
    
    Fixes: 9c3736a3de21 ("mtd: nand: Add core infrastructure to deal with NAND devices")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9dd0f1c345ba9b4d3d409345aa362815785bf5
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Oct 16 09:13:46 2018 +0200

    mtd: spi-nor: cadence-quadspi: Return error code in cqspi_direct_read_execute()
    
    commit 91d7b67000c6e9bd605624079fee5a084238ad92 upstream.
    
    We return 0 unconditionally in 'cqspi_direct_read_execute()'.
    However, 'ret' is set to some error codes in several error handling
    paths.
    
    Return 'ret' instead to propagate the error code.
    
    Fixes: ffa639e069fb ("mtd: spi-nor: cadence-quadspi: Add DMA support for direct mode reads")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 218b6e82d07f8802a887fd074510c65df8c25101
Author: Jarod Wilson <jarod@redhat.com>
Date:   Sun Nov 4 14:59:46 2018 -0500

    bonding/802.3ad: fix link_failure_count tracking
    
    commit ea53abfab960909d622ca37bcfb8e1c5378d21cc upstream.
    
    Commit 4d2c0cda07448ea6980f00102dc3964eb25e241c set slave->link to
    BOND_LINK_DOWN for 802.3ad bonds whenever invalid speed/duplex values
    were read, to fix a problem with slaves getting into weird states, but
    in the process, broke tracking of link failures, as going straight to
    BOND_LINK_DOWN when a link is indeed down (cable pulled, switch rebooted)
    means we broke out of bond_miimon_inspect()'s BOND_LINK_DOWN case because
    !link_state was already true, we never incremented commit, and never got
    a chance to call bond_miimon_commit(), where slave->link_failure_count
    would be incremented. I believe the simple fix here is to mark the slave
    as BOND_LINK_FAIL, and let bond_miimon_inspect() transition the link from
    _FAIL to either _UP or _DOWN, and in the latter case, we now get proper
    incrementing of link_failure_count again.
    
    Fixes: 4d2c0cda0744 ("bonding: speed/duplex update at NETDEV_UP event")
    CC: Mahesh Bandewar <maheshb@google.com>
    CC: David S. Miller <davem@davemloft.net>
    CC: netdev@vger.kernel.org
    CC: stable@vger.kernel.org
    Signed-off-by: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9333523bf98f939fa685cee9ca1e60a6c569f7e8
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Mon Nov 5 14:54:56 2018 +0100

    ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm
    
    commit 6282e916f774e37845c65d1eae9f8c649004f033 upstream.
    
    Due to what appears to be a copy/paste error, the opening ENTRY()
    of cpu_v7_hvc_switch_mm() lacks a matching ENDPROC(), and instead,
    the one for cpu_v7_smc_switch_mm() is duplicated.
    
    Given that it is ENDPROC() that emits the Thumb annotation, the
    cpu_v7_hvc_switch_mm() routine will be called in ARM mode on a
    Thumb2 kernel, resulting in the following splat:
    
      Internal error: Oops - undefined instruction: 0 [#1] SMP THUMB2
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc1-00030-g4d28ad89189d-dirty #488
      Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
      PC is at cpu_v7_hvc_switch_mm+0x12/0x18
      LR is at flush_old_exec+0x31b/0x570
      pc : [<c0316efe>]    lr : [<c04117c7>]    psr: 00000013
      sp : ee899e50  ip : 00000000  fp : 00000001
      r10: eda28f34  r9 : eda31800  r8 : c12470e0
      r7 : eda1fc00  r6 : eda53000  r5 : 00000000  r4 : ee88c000
      r3 : c0316eec  r2 : 00000001  r1 : eda53000  r0 : 6da6c000
      Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    
    Note the 'ISA ARM' in the last line.
    
    Fix this by using the correct name in ENDPROC().
    
    Cc: <stable@vger.kernel.org>
    Fixes: 10115105cb3a ("ARM: spectre-v2: add firmware based hardening")
    Reviewed-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1be1576a1354770451a9dc80358c4fd96c2c0dea
Author: Vasily Khoruzhick <vasilykh@arista.com>
Date:   Thu Oct 25 12:15:43 2018 -0700

    netfilter: conntrack: fix calculation of next bucket number in early_drop
    
    commit f393808dc64149ccd0e5a8427505ba2974a59854 upstream.
    
    If there's no entry to drop in bucket that corresponds to the hash,
    early_drop() should look for it in other buckets. But since it increments
    hash instead of bucket number, it actually looks in the same bucket 8
    times: hsize is 16k by default (14 bits) and hash is 32-bit value, so
    reciprocal_scale(hash, hsize) returns the same value for hash..hash+7 in
    most cases.
    
    Fix it by increasing bucket number instead of hash and rename _hash
    to bucket to avoid future confusion.
    
    Fixes: 3e86638e9a0b ("netfilter: conntrack: consider ct netns in early_drop logic")
    Cc: <stable@vger.kernel.org> # v4.7+
    Signed-off-by: Vasily Khoruzhick <vasilykh@arista.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccd35ba5ebeb4ccc6f696983697d610d99747149
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri Nov 2 15:48:46 2018 -0700

    memory_hotplug: cond_resched in __remove_pages
    
    commit dd33ad7b251f900481701b2a82d25de583867708 upstream.
    
    We have received a bug report that unbinding a large pmem (>1TB) can
    result in a soft lockup:
    
      NMI watchdog: BUG: soft lockup - CPU#9 stuck for 23s! [ndctl:4365]
      [...]
      Supported: Yes
      CPU: 9 PID: 4365 Comm: ndctl Not tainted 4.12.14-94.40-default #1 SLE12-SP4
      Hardware name: Intel Corporation S2600WFD/S2600WFD, BIOS SE5C620.86B.01.00.0833.051120182255 05/11/2018
      task: ffff9cce7d4410c0 task.stack: ffffbe9eb1bc4000
      RIP: 0010:__put_page+0x62/0x80
      Call Trace:
       devm_memremap_pages_release+0x152/0x260
       release_nodes+0x18d/0x1d0
       device_release_driver_internal+0x160/0x210
       unbind_store+0xb3/0xe0
       kernfs_fop_write+0x102/0x180
       __vfs_write+0x26/0x150
       vfs_write+0xad/0x1a0
       SyS_write+0x42/0x90
       do_syscall_64+0x74/0x150
       entry_SYSCALL_64_after_hwframe+0x3d/0xa2
      RIP: 0033:0x7fd13166b3d0
    
    It has been reported on an older (4.12) kernel but the current upstream
    code doesn't cond_resched in the hot remove code at all and the given
    range to remove might be really large.  Fix the issue by calling
    cond_resched once per memory section.
    
    Link: http://lkml.kernel.org/r/20181031125840.23982-1-mhocko@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Johannes Thumshirn <jthumshirn@suse.de>
    Cc: Dan Williams <dan.j.williams@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67a19f87a02beec6a676ed427fbe3c1f5f00d9f4
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Fri Nov 2 15:47:59 2018 -0700

    mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings
    
    commit ac5b2c18911ffe95c08d69273917f90212cf5659 upstream.
    
    THP allocation might be really disruptive when allocated on NUMA system
    with the local node full or hard to reclaim.  Stefan has posted an
    allocation stall report on 4.12 based SLES kernel which suggests the
    same issue:
    
      kvm: page allocation stalls for 194572ms, order:9, mode:0x4740ca(__GFP_HIGHMEM|__GFP_IO|__GFP_FS|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL|__GFP_THISNODE|__GFP_MOVABLE|__GFP_DIRECT_RECLAIM), nodemask=(null)
      kvm cpuset=/ mems_allowed=0-1
      CPU: 10 PID: 84752 Comm: kvm Tainted: G        W 4.12.0+98-ph <a href="/view.php?id=1" title="[geschlossen] Integration Ramdisk" class="resolved">0000001</a> SLE15 (unreleased)
      Hardware name: Supermicro SYS-1029P-WTRT/X11DDW-NT, BIOS 2.0 12/05/2017
      Call Trace:
       dump_stack+0x5c/0x84
       warn_alloc+0xe0/0x180
       __alloc_pages_slowpath+0x820/0xc90
       __alloc_pages_nodemask+0x1cc/0x210
       alloc_pages_vma+0x1e5/0x280
       do_huge_pmd_wp_page+0x83f/0xf00
       __handle_mm_fault+0x93d/0x1060
       handle_mm_fault+0xc6/0x1b0
       __do_page_fault+0x230/0x430
       do_page_fault+0x2a/0x70
       page_fault+0x7b/0x80
       [...]
      Mem-Info:
      active_anon:126315487 inactive_anon:1612476 isolated_anon:5
       active_file:60183 inactive_file:245285 isolated_file:0
       unevictable:15657 dirty:286 writeback:1 unstable:0
       slab_reclaimable:75543 slab_unreclaimable:2509111
       mapped:81814 shmem:31764 pagetables:370616 bounce:0
       free:32294031 free_pcp:6233 free_cma:0
      Node 0 active_anon:254680388kB inactive_anon:1112760kB active_file:240648kB inactive_file:981168kB unevictable:13368kB isolated(anon):0kB isolated(file):0kB mapped:280240kB dirty:1144kB writeback:0kB shmem:95832kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 81225728kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
      Node 1 active_anon:250583072kB inactive_anon:5337144kB active_file:84kB inactive_file:0kB unevictable:49260kB isolated(anon):20kB isolated(file):0kB mapped:47016kB dirty:0kB writeback:4kB shmem:31224kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 31897600kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
    
    The defrag mode is "madvise" and from the above report it is clear that
    the THP has been allocated for MADV_HUGEPAGA vma.
    
    Andrea has identified that the main source of the problem is
    __GFP_THISNODE usage:
    
    : The problem is that direct compaction combined with the NUMA
    : __GFP_THISNODE logic in mempolicy.c is telling reclaim to swap very
    : hard the local node, instead of failing the allocation if there's no
    : THP available in the local node.
    :
    : Such logic was ok until __GFP_THISNODE was added to the THP allocation
    : path even with MPOL_DEFAULT.
    :
    : The idea behind the __GFP_THISNODE addition, is that it is better to
    : provide local memory in PAGE_SIZE units than to use remote NUMA THP
    : backed memory. That largely depends on the remote latency though, on
    : threadrippers for example the overhead is relatively low in my
    : experience.
    :
    : The combination of __GFP_THISNODE and __GFP_DIRECT_RECLAIM results in
    : extremely slow qemu startup with vfio, if the VM is larger than the
    : size of one host NUMA node. This is because it will try very hard to
    : unsuccessfully swapout get_user_pages pinned pages as result of the
    : __GFP_THISNODE being set, instead of falling back to PAGE_SIZE
    : allocations and instead of trying to allocate THP on other nodes (it
    : would be even worse without vfio type1 GUP pins of course, except it'd
    : be swapping heavily instead).
    
    Fix this by removing __GFP_THISNODE for THP requests which are
    requesting the direct reclaim.  This effectivelly reverts 5265047ac301
    on the grounds that the zone/node reclaim was known to be disruptive due
    to premature reclaim when there was memory free.  While it made sense at
    the time for HPC workloads without NUMA awareness on rare machines, it
    was ultimately harmful in the majority of cases.  The existing behaviour
    is similar, if not as widespare as it applies to a corner case but
    crucially, it cannot be tuned around like zone_reclaim_mode can.  The
    default behaviour should always be to cause the least harm for the
    common case.
    
    If there are specialised use cases out there that want zone_reclaim_mode
    in specific cases, then it can be built on top.  Longterm we should
    consider a memory policy which allows for the node reclaim like behavior
    for the specific memory ranges which would allow a
    
    [1] http://lkml.kernel.org/r/20180820032204.9591-1-aarcange@redhat.com
    
    Mel said:
    
    : Both patches look correct to me but I'm responding to this one because
    : it's the fix.  The change makes sense and moves further away from the
    : severe stalling behaviour we used to see with both THP and zone reclaim
    : mode.
    :
    : I put together a basic experiment with usemem configured to reference a
    : buffer multiple times that is 80% the size of main memory on a 2-socket
    : box with symmetric node sizes and defrag set to "always".  The defrag
    : setting is not the default but it would be functionally similar to
    : accessing a buffer with madvise(MADV_HUGEPAGE).  Usemem is configured to
    : reference the buffer multiple times and while it's not an interesting
    : workload, it would be expected to complete reasonably quickly as it fits
    : within memory.  The results were;
    :
    : usemem
    :                                   vanilla           noreclaim-v1
    : Amean     Elapsd-1       42.78 (   0.00%)       26.87 (  37.18%)
    : Amean     Elapsd-3       27.55 (   0.00%)        7.44 (  73.00%)
    : Amean     Elapsd-4        5.72 (   0.00%)        5.69 (   0.45%)
    :
    : This shows the elapsed time in seconds for 1 thread, 3 threads and 4
    : threads referencing buffers 80% the size of memory.  With the patches
    : applied, it's 37.18% faster for the single thread and 73% faster with two
    : threads.  Note that 4 threads showing little difference does not indicate
    : the problem is related to thread counts.  It's simply the case that 4
    : threads gets spread so their workload mostly fits in one node.
    :
    : The overall view from /proc/vmstats is more startling
    :
    :                          4.19.0-rc1  4.19.0-rc1
    :                             vanillanoreclaim-v1r1
    : Minor Faults               35593425      708164
    : Major Faults                 484088          36
    : Swap Ins                    3772837           0
    : Swap Outs                   3932295           0
    :
    : Massive amounts of swap in/out without the patch
    :
    : Direct pages scanned        6013214           0
    : Kswapd pages scanned              0           0
    : Kswapd pages reclaimed            0           0
    : Direct pages reclaimed      4033009           0
    :
    : Lots of reclaim activity without the patch
    :
    : Kswapd efficiency              100%        100%
    : Kswapd velocity               0.000       0.000
    : Direct efficiency               67%        100%
    : Direct velocity           11191.956       0.000
    :
    : Mostly from direct reclaim context as you'd expect without the patch.
    :
    : Page writes by reclaim  3932314.000       0.000
    : Page writes file                 19           0
    : Page writes anon            3932295           0
    : Page reclaim immediate        42336           0
    :
    : Writes from reclaim context is never good but the patch eliminates it.
    :
    : We should never have default behaviour to thrash the system for such a
    : basic workload.  If zone reclaim mode behaviour is ever desired but on a
    : single task instead of a global basis then the sensible option is to build
    : a mempolicy that enforces that behaviour.
    
    This was a severe regression compared to previous kernels that made
    important workloads unusable and it starts when __GFP_THISNODE was
    added to THP allocations under MADV_HUGEPAGE.  It is not a significant
    risk to go to the previous behavior before __GFP_THISNODE was added, it
    worked like that for years.
    
    This was simply an optimization to some lucky workloads that can fit in
    a single node, but it ended up breaking the VM for others that can't
    possibly fit in a single node, so going back is safe.
    
    [mhocko@suse.com: rewrote the changelog based on the one from Andrea]
    Link: http://lkml.kernel.org/r/20180925120326.24392-2-mhocko@kernel.org
    Fixes: 5265047ac301 ("mm, thp: really limit transparent hugepage allocation to local node")
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Stefan Priebe <s.priebe@profihost.ag>
    Debugged-by: Andrea Arcangeli <aarcange@redhat.com>
    Reported-by: Alex Williamson <alex.williamson@redhat.com>
    Reviewed-by: Mel Gorman <mgorman@techsingularity.net>
    Tested-by: Mel Gorman <mgorman@techsingularity.net>
    Cc: Zi Yan <zi.yan@cs.rutgers.edu>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: David Rientjes <rientjes@google.com>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Cc: <stable@vger.kernel.org>    [4.1+]
    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 6bb462a42e8bdb55a805eab043dcf7501f70f9b5
Author: Wengang Wang <wen.gang.wang@oracle.com>
Date:   Fri Nov 16 15:08:25 2018 -0800

    ocfs2: free up write context when direct IO failed
    
    commit 5040f8df56fb90c7919f1c9b0b6e54c843437456 upstream.
    
    The write context should also be freed even when direct IO failed.
    Otherwise a memory leak is introduced and entries remain in
    oi->ip_unwritten_list causing the following BUG later in unlink path:
    
      ERROR: bug expression: !list_empty(&oi->ip_unwritten_list)
      ERROR: Clear inode of 215043, inode has unwritten extents
      ...
      Call Trace:
      ? __set_current_blocked+0x42/0x68
      ocfs2_evict_inode+0x91/0x6a0 [ocfs2]
      ? bit_waitqueue+0x40/0x33
      evict+0xdb/0x1af
      iput+0x1a2/0x1f7
      do_unlinkat+0x194/0x28f
      SyS_unlinkat+0x1b/0x2f
      do_syscall_64+0x79/0x1ae
      entry_SYSCALL_64_after_hwframe+0x151/0x0
    
    This patch also logs, with frequency limit, direct IO failures.
    
    Link: http://lkml.kernel.org/r/20181102170632.25921-1-wen.gang.wang@oracle.com
    Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
    Reviewed-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 148dc9315b5ef7bc9f64882ab5de3ec991a55031
Author: Changwei Ge <ge.changwei@h3c.com>
Date:   Fri Nov 2 15:48:15 2018 -0700

    ocfs2: fix a misuse a of brelse after failing ocfs2_check_dir_entry
    
    commit 29aa30167a0a2e6045a0d6d2e89d8168132333d5 upstream.
    
    Somehow, file system metadata was corrupted, which causes
    ocfs2_check_dir_entry() to fail in function ocfs2_dir_foreach_blk_el().
    
    According to the original design intention, if above happens we should
    skip the problematic block and continue to retrieve dir entry.  But
    there is obviouse misuse of brelse around related code.
    
    After failure of ocfs2_check_dir_entry(), current code just moves to
    next position and uses the problematic buffer head again and again
    during which the problematic buffer head is released for multiple times.
    I suppose, this a serious issue which is long-lived in ocfs2.  This may
    cause other file systems which is also used in a the same host insane.
    
    So we should also consider about bakcporting this patch into linux
    -stable.
    
    Link: http://lkml.kernel.org/r/HK2PR06MB045211675B43EED794E597B6D56E0@HK2PR06MB0452.apcprd06.prod.outlook.com
    Signed-off-by: Changwei Ge <ge.changwei@h3c.com>
    Suggested-by: Changkuo Shi <shi.changkuo@h3c.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 176e8d6df91238c80e9ff71da92368fc3b7612a6
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Oct 31 08:41:34 2018 +0000

    soc: ti: QMSS: Fix usage of irq_set_affinity_hint
    
    commit 832ad0e3da4510fd17f98804abe512ea9a747035 upstream.
    
    The Keystone QMSS driver is pretty damaged, in the sense that it
    does things like this:
    
            irq_set_affinity_hint(irq, to_cpumask(&cpu_map));
    
    where cpu_map is a local variable. As we leave the function, this
    will point to nowhere-land, and things will end-up badly.
    
    Instead, let's use a proper cpumask that gets allocated, giving
    the driver a chance to actually work with things like irqbalance
    as well as have a hypothetical 64bit future.
    
    Cc: stable@vger.kernel.org
    Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce65f0f625baa6f6370035ab7bf66f600a6f00bf
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Oct 19 06:54:54 2018 +0000

    Revert "powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for CONFIG_SWAP"
    
    commit cc4ebf5c0a3440ed0a32d25c55ebdb6ce5f3c0bc upstream.
    
    This reverts commit 4f94b2c7462d9720b2afa7e8e8d4c19446bb31ce.
    
    That commit was buggy, as it used rlwinm instead of rlwimi.
    Instead of fixing that bug, we revert the previous commit in order to
    reduce the dependency between L1 entries and L2 entries
    
    Fixes: 4f94b2c7462d9 ("powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for CONFIG_SWAP")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 410306a0f2baa5d68970cdcf6763d79c16df5f23
Author: Ming Lei <ming.lei@redhat.com>
Date:   Wed Nov 14 16:25:51 2018 +0800

    SCSI: fix queue cleanup race before queue initialization is done
    
    commit 8dc765d438f1e42b3e8227b3b09fad7d73f4ec9a upstream.
    
    c2856ae2f315d ("blk-mq: quiesce queue before freeing queue") has
    already fixed this race, however the implied synchronize_rcu()
    in blk_mq_quiesce_queue() can slow down LUN probe a lot, so caused
    performance regression.
    
    Then 1311326cf4755c7 ("blk-mq: avoid to synchronize rcu inside blk_cleanup_queue()")
    tried to quiesce queue for avoiding unnecessary synchronize_rcu()
    only when queue initialization is done, because it is usual to see
    lots of inexistent LUNs which need to be probed.
    
    However, turns out it isn't safe to quiesce queue only when queue
    initialization is done. Because when one SCSI command is completed,
    the user of sending command can be waken up immediately, then the
    scsi device may be removed, meantime the run queue in scsi_end_request()
    is still in-progress, so kernel panic can be caused.
    
    In Red Hat QE lab, there are several reports about this kind of kernel
    panic triggered during kernel booting.
    
    This patch tries to address the issue by grabing one queue usage
    counter during freeing one request and the following run queue.
    
    Fixes: 1311326cf4755c7 ("blk-mq: avoid to synchronize rcu inside blk_cleanup_queue()")
    Cc: Andrew Jones <drjones@redhat.com>
    Cc: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: linux-scsi@vger.kernel.org
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: James E.J. Bottomley <jejb@linux.vnet.ibm.com>
    Cc: stable <stable@vger.kernel.org>
    Cc: jianchao.wang <jianchao.w.wang@oracle.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd2fb8c67d81af9e27210e3196e8f24b3e016637
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Tue Nov 6 00:51:21 2018 -0800

    scsi: qla2xxx: Initialize port speed to avoid setting lower speed
    
    commit f635e48e866ee1a47d2d42ce012fdcc07bf55853 upstream.
    
    This patch initializes port speed so that firmware does not set lower
    operating speed. Setting lower speed in firmware impacts WRITE perfomance.
    
    Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Tested-by: Laurence Oberman <loberman@redhat.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1e99af92fdf214ec1a83ac5257544df737ad2fe
Author: Greg Edwards <gedwards@ddn.com>
Date:   Wed Aug 22 13:21:53 2018 -0600

    vhost/scsi: truncate T10 PI iov_iter to prot_bytes
    
    commit 4542d623c7134bc1738f8a68ccb6dd546f1c264f upstream.
    
    Commands with protection information included were not truncating the
    protection iov_iter to the number of protection bytes in the command.
    This resulted in vhost_scsi mis-calculating the size of the protection
    SGL in vhost_scsi_calc_sgls(), and including both the protection and
    data SG entries in the protection SGL.
    
    Fixes: 09b13fa8c1a1 ("vhost/scsi: Add ANY_LAYOUT support in vhost_scsi_handle_vq")
    Signed-off-by: Greg Edwards <gedwards@ddn.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Fixes: 09b13fa8c1a1093e9458549ac8bb203a7c65c62a
    Cc: stable@vger.kernel.org
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12555475a0618771ae03159cd290c9a6085294df
Author: John Garry <john.garry@huawei.com>
Date:   Mon Nov 5 20:35:15 2018 +0800

    crypto: hisilicon - Fix reference after free of memories on error path
    
    commit 0b0cf6af3f3151c26c27e8e51def5527091c3e69 upstream.
    
    coccicheck currently warns of the following issues in the driver:
    drivers/crypto/hisilicon/sec/sec_algs.c:864:51-66: ERROR: reference preceded by free on line 812
    drivers/crypto/hisilicon/sec/sec_algs.c:864:40-49: ERROR: reference preceded by free on line 813
    drivers/crypto/hisilicon/sec/sec_algs.c:861:8-24: ERROR: reference preceded by free on line 814
    drivers/crypto/hisilicon/sec/sec_algs.c:860:41-51: ERROR: reference preceded by free on line 815
    drivers/crypto/hisilicon/sec/sec_algs.c:867:7-18: ERROR: reference preceded by free on line 816
    
    It would appear than on certain error paths that we may attempt reference-
    after-free some memories.
    
    This patch fixes those issues. The solution doesn't look perfect, but
    having same memories free'd possibly from separate functions makes it
    tricky.
    
    Fixes: 915e4e8413da ("crypto: hisilicon - SEC security accelerator driver")
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 093d6ab590bd6b2f2f3528b530e0eeedb8da55bd
Author: John Garry <john.garry@huawei.com>
Date:   Mon Nov 5 20:35:14 2018 +0800

    crypto: hisilicon - Fix NULL dereference for same dst and src
    
    commit 68a031d22c57b94870ba13513c9d93b8a8119ab2 upstream.
    
    When the source and destination addresses for the cipher are the same, we
    will get a NULL dereference from accessing the split destination
    scatterlist memories, as shown:
    
    [   56.565719] tcrypt:
    [   56.565719] testing speed of async ecb(aes) (hisi_sec_aes_ecb) encryption
    [   56.574683] tcrypt: test 0 (128 bit key, 16 byte blocks):
    [   56.587585] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
    [   56.596361] Mem abort info:
    [   56.599151]   ESR = 0x96000006
    [   56.602196]   Exception class = DABT (current EL), IL = 32 bits
    [   56.608105]   SET = 0, FnV = 0
    [   56.611149]   EA = 0, S1PTW = 0
    [   56.614280] Data abort info:
    [   56.617151]   ISV = 0, ISS = 0x00000006
    [   56.620976]   CM = 0, WnR = 0
    [   56.623930] user pgtable: 4k pages, 48-bit VAs, pgdp = (____ptrval____)
    [   56.630533] [0000000000000000] pgd=0000041fc7e4d003, pud=0000041fcd9bf003, pmd=0000000000000000
    [   56.639224] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [   56.644782] Modules linked in: tcrypt(+)
    [   56.648695] CPU: 21 PID: 2326 Comm: insmod Tainted: G        W         4.19.0-rc6-00001-g3fabfb8-dirty #716
    [   56.658420] Hardware name: Huawei Taishan 2280 /D05, BIOS Hisilicon D05 IT17 Nemo 2.0 RC0 10/05/2018
    [   56.667537] pstate: 20000005 (nzCv daif -PAN -UAO)
    [   56.672322] pc : sec_alg_skcipher_crypto+0x318/0x748
    [   56.677274] lr : sec_alg_skcipher_crypto+0x178/0x748
    [   56.682224] sp : ffff0000118e3840
    [   56.685525] x29: ffff0000118e3840 x28: ffff841fbb3f8118
    [   56.690825] x27: 0000000000000000 x26: 0000000000000000
    [   56.696125] x25: ffff841fbb3f8080 x24: ffff841fbadc0018
    [   56.701425] x23: ffff000009119000 x22: ffff841fbb24e280
    [   56.706724] x21: ffff841ff212e780 x20: ffff841ff212e700
    [   56.712023] x19: 0000000000000001 x18: ffffffffffffffff
    [   56.717322] x17: 0000000000000000 x16: 0000000000000000
    [   56.722621] x15: ffff0000091196c8 x14: 72635f7265687069
    [   56.727920] x13: 636b735f676c615f x12: ffff000009119940
    [   56.733219] x11: 0000000000000000 x10: 00000000006080c0
    [   56.738519] x9 : 0000000000000000 x8 : ffff841fbb24e480
    [   56.743818] x7 : ffff841fbb24e500 x6 : ffff841ff00cdcc0
    [   56.749117] x5 : 0000000000000010 x4 : 0000000000000000
    [   56.754416] x3 : ffff841fbb24e380 x2 : ffff841fbb24e480
    [   56.759715] x1 : 0000000000000000 x0 : ffff000008f682c8
    [   56.765016] Process insmod (pid: 2326, stack limit = 0x(____ptrval____))
    [   56.771702] Call trace:
    [   56.774136]  sec_alg_skcipher_crypto+0x318/0x748
    [   56.778740]  sec_alg_skcipher_encrypt+0x10/0x18
    [   56.783259]  test_skcipher_speed+0x2a0/0x700 [tcrypt]
    [   56.788298]  do_test+0x18f8/0x48c8 [tcrypt]
    [   56.792469]  tcrypt_mod_init+0x60/0x1000 [tcrypt]
    [   56.797161]  do_one_initcall+0x5c/0x178
    [   56.800985]  do_init_module+0x58/0x1b4
    [   56.804721]  load_module+0x1da4/0x2150
    [   56.808456]  __se_sys_init_module+0x14c/0x1e8
    [   56.812799]  __arm64_sys_init_module+0x18/0x20
    [   56.817231]  el0_svc_common+0x60/0xe8
    [   56.820880]  el0_svc_handler+0x2c/0x80
    [   56.824615]  el0_svc+0x8/0xc
    [   56.827483] Code: a94c87a3 910b2000 f87b7842 f9004ba2 (b87b7821)
    [   56.833564] ---[ end trace 0f63290590e93d94 ]---
    Segmentation fault
    
    Fix this by only accessing these memories when we have different src and
    dst.
    
    Fixes: 915e4e8413da ("crypto: hisilicon - SEC security accelerator driver")
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 459cfe0a6ee8c349a1c0f5c937fa9d33362461e8
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jul 25 19:47:19 2018 -0500

    reset: hisilicon: fix potential NULL pointer dereference
    
    commit e9a2310fb689151166df7fd9971093362d34bd79 upstream.
    
    There is a potential execution path in which function
    platform_get_resource() returns NULL. If this happens,
    we will end up having a NULL pointer dereference.
    
    Fix this by replacing devm_ioremap with devm_ioremap_resource,
    which has the NULL check and the memory region request.
    
    This code was detected with the help of Coccinelle.
    
    Cc: stable@vger.kernel.org
    Fixes: 97b7129cd2af ("reset: hisilicon: change the definition of hisi_reset_init")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0a737bf93f241b61ff33def72bd887787758a5a
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Nov 1 00:30:22 2018 -0700

    acpi, nfit: Fix ARS overflow continuation
    
    commit 3fa58dcab50a0aa16817f16a8d38aee869eb3fb9 upstream.
    
    When the platform BIOS is unable to report all the media error records
    it requires the OS to restart the scrub at a prescribed location. The
    driver detects the overflow condition, but then fails to report it to
    the ARS state machine after reaping the records. Propagate -ENOSPC
    correctly to continue the ARS operation.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
    Reported-by: Jacek Zloch <jacek.zloch@intel.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c54762464516cb7e6b0adee0ae192a508554b5f
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Thu Oct 25 18:37:29 2018 -0600

    acpi/nfit, x86/mce: Validate a MCE's address before using it
    
    commit e8a308e5f47e545e0d41d0686c00f5f5217c5f61 upstream.
    
    The NFIT machine check handler uses the physical address from the mce
    structure, and compares it against information in the ACPI NFIT table
    to determine whether that location lies on an NVDIMM. The mce->addr
    field however may not always be valid, and this is indicated by the
    MCI_STATUS_ADDRV bit in the status field.
    
    Export mce_usable_address() which already performs validation for the
    address, and use it in the NFIT handler.
    
    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Robert Elliott <elliott@hpe.com>
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    CC: Arnd Bergmann <arnd@arndb.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    CC: Dave Jiang <dave.jiang@intel.com>
    CC: elliott@hpe.com
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Ingo Molnar <mingo@redhat.com>
    CC: Len Brown <lenb@kernel.org>
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac <linux-edac@vger.kernel.org>
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    CC: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    CC: Ross Zwisler <zwisler@kernel.org>
    CC: stable <stable@vger.kernel.org>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Tony Luck <tony.luck@intel.com>
    CC: x86-ml <x86@kernel.org>
    CC: Yazen Ghannam <yazen.ghannam@amd.com>
    Link: http://lkml.kernel.org/r/20181026003729.8420-2-vishal.l.verma@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9013ac4d54d776d5afd62dc13ae830f605095dfd
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Thu Oct 25 18:37:28 2018 -0600

    acpi/nfit, x86/mce: Handle only uncorrectable machine checks
    
    commit 5d96c9342c23ee1d084802dcf064caa67ecaa45b upstream.
    
    The MCE handler for nfit devices is called for memory errors on a
    Non-Volatile DIMM and adds the error location to a 'badblocks' list.
    This list is used by the various NVDIMM drivers to avoid consuming known
    poison locations during IO.
    
    The MCE handler gets called for both corrected and uncorrectable errors.
    Until now, both kinds of errors have been added to the badblocks list.
    However, corrected memory errors indicate that the problem has already
    been fixed by hardware, and the resulting interrupt is merely a
    notification to Linux.
    
    As far as future accesses to that location are concerned, it is
    perfectly fine to use, and thus doesn't need to be included in the above
    badblocks list.
    
    Add a check in the nfit MCE handler to filter out corrected mce events,
    and only process uncorrectable errors.
    
    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Omar Avelar <omar.avelar@intel.com>
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    CC: Arnd Bergmann <arnd@arndb.de>
    CC: Dan Williams <dan.j.williams@intel.com>
    CC: Dave Jiang <dave.jiang@intel.com>
    CC: elliott@hpe.com
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Ingo Molnar <mingo@redhat.com>
    CC: Len Brown <lenb@kernel.org>
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac <linux-edac@vger.kernel.org>
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    CC: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    CC: Ross Zwisler <zwisler@kernel.org>
    CC: stable <stable@vger.kernel.org>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Tony Luck <tony.luck@intel.com>
    CC: x86-ml <x86@kernel.org>
    CC: Yazen Ghannam <yazen.ghannam@amd.com>
    Link: http://lkml.kernel.org/r/20181026003729.8420-1-vishal.l.verma@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3690f530e172966ade2681f20aa1b32bfa6209bb
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Oct 8 12:57:35 2018 +0200

    mach64: fix image corruption due to reading accelerator registers
    
    commit c09bcc91bb94ed91f1391bffcbe294963d605732 upstream.
    
    Reading the registers without waiting for engine idle returns
    unpredictable values. These unpredictable values result in display
    corruption - if atyfb_imageblit reads the content of DP_PIX_WIDTH with the
    bit DP_HOST_TRIPLE_EN set (from previous invocation), the driver would
    never ever clear the bit, resulting in display corruption.
    
    We don't want to wait for idle because it would degrade performance, so
    this patch modifies the driver so that it never reads accelerator
    registers.
    
    HOST_CNTL doesn't have to be read, we can just write it with
    HOST_BYTE_ALIGN because no other part of the driver cares if
    HOST_BYTE_ALIGN is set.
    
    DP_PIX_WIDTH is written in the functions atyfb_copyarea and atyfb_fillrect
    with the default value and in atyfb_imageblit with the value set according
    to the source image data.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Ville Syrjälä <syrjala@sci.fi>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 215c55984c76a65db293470be39dcfb30e9fda00
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Oct 8 12:57:34 2018 +0200

    mach64: fix display corruption on big endian machines
    
    commit 3c6c6a7878d00a3ac997a779c5b9861ff25dfcc8 upstream.
    
    The code for manual bit triple is not endian-clean. It builds the variable
    "hostdword" using byte accesses, therefore we must read the variable with
    "le32_to_cpu".
    
    The patch also enables (hardware or software) bit triple only if the image
    is monochrome (image->depth). If we want to blit full-color image, we
    shouldn't use the triple code.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Ville Syrjälä <syrjala@sci.fi>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2561c45b52d7367025500854c08cde4d8abe3fbe
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Mon Aug 13 20:14:00 2018 +0300

    thermal: core: Fix use-after-free in thermal_cooling_device_destroy_sysfs
    
    commit 3c587768271e9c20276522025729e4ebca51583b upstream.
    
    This patch fixes use-after-free that was detected by KASAN. The bug is
    triggered on a CPUFreq driver module unload by freeing 'cdev' on device
    unregister and then using the freed structure during of the cdev's sysfs
    data destruction. The solution is to unregister the sysfs at first, then
    destroy sysfs data and finally release the cooling device.
    
    Cc: <stable@vger.kernel.org> # v4.17+
    Fixes: 8ea229511e06 ("thermal: Add cooling device's statistics in sysfs")
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Acked-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2496105bca6a05fe357d5c5d7fa6dce25db301d
Author: Yan, Zheng <zyan@redhat.com>
Date:   Thu Sep 27 21:16:05 2018 +0800

    Revert "ceph: fix dentry leak in splice_dentry()"
    
    commit efe328230dc01aa0b1269aad0b5fae73eea4677a upstream.
    
    This reverts commit 8b8f53af1ed9df88a4c0fbfdf3db58f62060edf3.
    
    splice_dentry() is used by three places. For two places, req->r_dentry
    is passed to splice_dentry(). In the case of error, req->r_dentry does
    not get updated. So splice_dentry() should not drop reference.
    
    Cc: stable@vger.kernel.org # 4.18+
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 542705afd8abefe743f15941b706a0a89ad66493
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Wed Sep 26 18:03:16 2018 +0200

    libceph: bump CEPH_MSG_MAX_DATA_LEN
    
    commit 94e6992bb560be8bffb47f287194adf070b57695 upstream.
    
    If the read is large enough, we end up spinning in the messenger:
    
      libceph: osd0 192.168.122.1:6801 io error
      libceph: osd0 192.168.122.1:6801 io error
      libceph: osd0 192.168.122.1:6801 io error
    
    This is a receive side limit, so only reads were affected.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72872e36003779ffd584138f56bc4fa91513e27a
Author: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date:   Tue Oct 16 15:41:44 2018 +0200

    clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call
    
    commit 665636b2940d0897c4130253467f5e8c42eea392 upstream.
    
    Fixes the signedness bug returning '(-22)' on the return type by removing the
    sanity checker in rockchip_ddrclk_get_parent(). The function should return
    and unsigned value only and it's safe to remove the sanity checker as the
    core functions that call get_parent like clk_core_get_parent_by_index already
    ensures the validity of the clk index returned (index >= core->num_parents).
    
    Fixes: a4f182bf81f18 ("clk: rockchip: add new clock-type for the ddrclk")
    Cc: stable@vger.kernel.org
    Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Reviewed-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3eeeed10702c11d4332c5c3366770b5566ff02b
Author: Ziyuan Xu <xzy.xu@rock-chips.com>
Date:   Thu Oct 11 15:26:43 2018 +0800

    clk: rockchip: fix wrong mmc sample phase shift for rk3328
    
    commit 82f4b67f018c88a7cc9337f0067ed3d6ec352648 upstream.
    
    mmc sample shift is 0 for RK3328 referring to the TRM.
    So fix them.
    
    Fixes: fe3511ad8a1c ("clk: rockchip: add clock controller for rk3328")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a2502d376ac047bd4f70a51658993b22513ddfc
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Thu Aug 9 01:19:52 2018 +0800

    clk: sunxi-ng: h6: fix bus clocks' divider position
    
    commit 2852bfbf4f168fec27049ad9ed20941fc9e84b95 upstream.
    
    The bus clocks (AHB/APB) on Allwinner H6 have their second divider start
    at bit 8, according to the user manual and the BSP code. However,
    currently the divider offset is incorrectly set to 16, thus the divider
    is not correctly read and the clock frequency is not correctly calculated.
    
    Fix this bit offset on all affected bus clocks in ccu-sun50i-h6.
    
    Cc: stable@vger.kernel.org # v4.17.y
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11ace0214bb0be5a307d9791d3029668b4c16e7b
Author: Ronald Wahl <rwahl@gmx.de>
Date:   Wed Oct 10 15:54:54 2018 +0200

    clk: at91: Fix division by zero in PLL recalc_rate()
    
    commit 0f5cb0e6225cae2f029944cb8c74617aab6ddd49 upstream.
    
    Commit a982e45dc150 ("clk: at91: PLL recalc_rate() now using cached MUL
    and DIV values") removed a check that prevents a division by zero. This
    now causes a stacktrace when booting the kernel on a at91 platform if
    the PLL DIV register contains zero. This commit reintroduces this check.
    
    Fixes: a982e45dc150 ("clk: at91: PLL recalc_rate() now using cached...")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ronald Wahl <rwahl@gmx.de>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d8c2945fcbfc27b689f0d0a748738f8516232e2
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Wed Aug 29 21:20:10 2018 +0200

    clk: s2mps11: Fix matching when built as module and DT node contains compatible
    
    commit 8985167ecf57f97061599a155bb9652c84ea4913 upstream.
    
    When driver is built as module and DT node contains clocks compatible
    (e.g. "samsung,s2mps11-clk"), the module will not be autoloaded because
    module aliases won't match.
    
    The modalias from uevent: of:NclocksT<NULL>Csamsung,s2mps11-clk
    The modalias from driver: platform:s2mps11-clk
    
    The devices are instantiated by parent's MFD.  However both Device Tree
    bindings and parent define the compatible for clocks devices.  In case
    of module matching this DT compatible will be used.
    
    The issue will not happen if this is a built-in (no need for module
    matching) or when clocks DT node does not contain compatible (not
    correct from bindings perspective but working for driver).
    
    Note when backporting to stable kernels: adjust the list of device ID
    entries.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 53c31b3437a6 ("mfd: sec-core: Add of_compatible strings for clock MFD cells")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a0344c5f4c815d42856f0322cf7362b862d2302
Author: Richard Weinberger <richard@nod.at>
Date:   Fri Jun 15 16:42:54 2018 +0200

    um: Drop own definition of PTRACE_SYSEMU/_SINGLESTEP
    
    commit 0676b957c24bfb6e495449ba7b7e72c5b5d79233 upstream.
    
    32bit UML used to define PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP
    own its own because many years ago not all libcs had these request codes
    in their UAPI.
    These days PTRACE_SYSEMU/_SINGLESTEP is well known and part of glibc
    and our own define becomes problematic.
    
    With change c48831d0eebf ("linux/x86: sync sys/ptrace.h with Linux 4.14
    [BZ #22433]") glibc turned PTRACE_SYSEMU/_SINGLESTEP into a enum and
    UML failed to build.
    
    Let's drop our define and rely on the fact that every libc has
    PTRACE_SYSEMU/_SINGLESTEP.
    
    Cc: <stable@vger.kernel.org>
    Cc: Ritesh Raj Sarraf <rrs@researchut.com>
    Reported-and-tested-by: Ritesh Raj Sarraf <rrs@researchut.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ad5f23377b0c85f1db11f9436c6eabb08e02251
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Nov 13 23:46:42 2018 -0800

    xtensa: fix boot parameters address translation
    
    commit 40dc948f234b73497c3278875eb08a01d5854d3f upstream.
    
    The bootloader may pass physical address of the boot parameters structure
    to the MMUv3 kernel in the register a2. Code in the _SetupMMU block in
    the arch/xtensa/kernel/head.S is supposed to map that physical address to
    the virtual address in the configured virtual memory layout.
    
    This code haven't been updated when additional 256+256 and 512+512
    memory layouts were introduced and it may produce wrong addresses when
    used with these layouts.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 591dd5df1758e19f19fc58d5600f8a02013051a5
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Sun Nov 4 01:46:00 2018 -0700

    xtensa: make sure bFLT stack is 16 byte aligned
    
    commit 0773495b1f5f1c5e23551843f87b5ff37e7af8f7 upstream.
    
    Xtensa ABI requires stack alignment to be at least 16. In noMMU
    configuration ARCH_SLAB_MINALIGN is used to align stack. Make it at
    least 16.
    
    This fixes the following runtime error in noMMU configuration, caused by
    interaction between insufficiently aligned stack and alloca function,
    that results in corruption of on-stack variable in the libc function
    glob:
    
     Caught unhandled exception in 'sh' (pid = 47, pc = 0x02d05d65)
      - should not happen
      EXCCAUSE is 15
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47af963b58e5efc9330c426924f55a1475c4e366
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Mon Oct 29 18:30:13 2018 -0700

    xtensa: add NOTES section to the linker script
    
    commit 4119ba211bc4f1bf638f41e50b7a0f329f58aa16 upstream.
    
    This section collects all source .note.* sections together in the
    vmlinux image. Without it .note.Linux section may be placed at address
    0, while the rest of the kernel is at its normal address, resulting in a
    huge vmlinux.bin image that may not be linked into the xtensa Image.elf.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d55ba0ffec1272940a616a562af9e37fcc05281
Author: Huacai Chen <chenhc@lemote.com>
Date:   Wed Sep 5 17:33:09 2018 +0800

    MIPS: Loongson-3: Fix BRIDGE irq delivery problem
    
    [ Upstream commit 360fe725f8849aaddc53475fef5d4a0c439b05ae ]
    
    After commit e509bd7da149dc349160 ("genirq: Allow migration of chained
    interrupts by installing default action") Loongson-3 fails at here:
    
    setup_irq(LOONGSON_HT1_IRQ, &cascade_irqaction);
    
    This is because both chained_action and cascade_irqaction don't have
    IRQF_SHARED flag. This will cause Loongson-3 resume fails because HPET
    timer interrupt can't be delivered during S3. So we set the irqchip of
    the chained irq to loongson_irq_chip which doesn't disable the chained
    irq in CP0.Status.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20434/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: Huacai Chen <chenhuacai@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a825f0b441a08dd2d303dccb79b3f7544f18128
Author: Huacai Chen <chenhc@lemote.com>
Date:   Wed Sep 5 17:33:08 2018 +0800

    MIPS: Loongson-3: Fix CPU UART irq delivery problem
    
    [ Upstream commit d06f8a2f1befb5a3d0aa660ab1c05e9b744456ea ]
    
    Masking/unmasking the CPU UART irq in CP0_Status (and redirecting it to
    other CPUs) may cause interrupts be lost, especially in multi-package
    machines (Package-0's UART irq cannot be delivered to others). So make
    mask_loongson_irq() and unmask_loongson_irq() be no-ops.
    
    The original problem (UART IRQ may deliver to any core) is also because
    of masking/unmasking the CPU UART irq in CP0_Status. So it is safe to
    remove all of the stuff.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20433/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: Huacai Chen <chenhuacai@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e07f4e243791e00a4086ad86e573705cf7b2c65
Author: Minchan Kim <minchan@kernel.org>
Date:   Wed Nov 14 14:52:23 2018 +0900

    zram: close udev startup race condition as default groups
    
    commit fef912bf860e upstream.
    commit 98af4d4df889 upstream.
    
    I got a report from Howard Chen that he saw zram and sysfs race(ie,
    zram block device file is created but sysfs for it isn't yet)
    when he tried to create new zram devices via hotadd knob.
    
    v4.20 kernel fixes it by [1, 2] but it's too large size to merge
    into -stable so this patch fixes the problem by registering defualt
    group by Greg KH's approach[3].
    
    This patch should be applied to every stable tree [3.16+] currently
    existing from kernel.org because the problem was introduced at 2.6.37
    by [4].
    
    [1] fef912bf860e, block: genhd: add 'groups' argument to device_add_disk
    [2] 98af4d4df889, zram: register default groups with device_add_disk()
    [3] http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/
    [4] 33863c21e69e9, Staging: zram: Replace ioctls with sysfs interface
    
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Tested-by: Howard Chen <howardsoc@google.com>
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52cad794b4ea2fdea94a6551ad4690dbad2a92e2
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Thu Nov 8 10:31:23 2018 +0100

    clk: meson: axg: mark fdiv2 and fdiv3 as critical
    
    [ Upstream commit d6ee1e7e9004d3d246cdfa14196989e0a9466c16 ]
    
    Similar to gxbb and gxl platforms, axg SCPI Cortex-M co-processor
    uses the fdiv2 and fdiv3 to, among other things, provide the cpu
    clock.
    
    Until clock hand-off mechanism makes its way to CCF and the generic
    SCPI claims platform specific clocks, these clocks must be marked as
    critical to make sure they are never disabled when needed by the
    co-processor.
    
    Fixes: 05f814402d61 ("clk: meson: add fdiv clock gates")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Acked-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a98af72325dcec4d1756cf3c2556db4933e3fafc
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Tue Nov 6 00:08:20 2018 +0100

    clk: meson-gxbb: set fclk_div3 as CLK_IS_CRITICAL
    
    [ Upstream commit e2576c8bdfd462c34b8a46c0084e7c30b0851bf4 ]
    
    On the Khadas VIM2 (GXM) and LePotato (GXL) board there are problems
    with reboot; e.g. a ~60 second delay between issuing reboot and the
    board power cycling (and in some OS configurations reboot will fail
    and require manual power cycling).
    
    Similar to 'commit c987ac6f1f088663b6dad39281071aeb31d450a8 ("clk:
    meson-gxbb: set fclk_div2 as CLK_IS_CRITICAL")' the SCPI Cortex-M4
    Co-Processor seems to depend on FCLK_DIV3 being operational.
    
    Until commit 05f814402d6174369b3b29832cbb5eb5ed287059 ("clk:
    meson: add fdiv clock gates"), this clock was modeled and left on by
    the bootloader.
    
    We don't have precise documentation about the SCPI Co-Processor and
    its clock requirement so we are learning things the hard way.
    
    Marking this clock as critical solves the problem but it should not
    be viewed as final solution. Ideally, the SCPI driver should claim
    these clocks. We also depends on some clock hand-off mechanism
    making its way to CCF, to make sure the clock stays on between its
    registration and the SCPI driver probe.
    
    Fixes: 05f814402d61 ("clk: meson: add fdiv clock gates")
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 347d88036255b0afd3e616cfad674637e9e1c510
Author: Aaro Koskinen <aaro.koskinen@nokia.com>
Date:   Mon Nov 12 14:50:22 2018 -0600

    arm64: dts: stratix10: fix multicast filtering
    
    commit fd5ba6ee3187617287fb9cb187e3d6b3631210a3 upstream
    
    On Stratix 10, the EMAC has 256 hash buckets for multicast filtering. This
    needs to be specified in DTS, otherwise the stmmac driver defaults to 64
    buckets and initializes the filter incorrectly. As a result, e.g. valid
    IPv6 multicast traffic ends up being dropped.
    
    Fixes: 78cd6a9d8e15 ("arm64: dts: Add base stratix 10 dtsi")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f49fe42dd74bbabf89617b8b204c6e6abdb4723
Author: Thor Thayer <thor.thayer@linux.intel.com>
Date:   Mon Nov 12 14:50:21 2018 -0600

    arm64: dts: stratix10: Support Ethernet Jumbo frame
    
    commit a27460c9768ee19949c5b91f3d959ccd88c2a64a upstream
    
    Properly specify the RX and TX FIFO size which is important
    for Jumbo frames.
    Update the max-frame-size to support Jumbo frames.
    
    Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08261cada1d5d348f99fa062479f252628a96e7d
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Aug 27 10:21:47 2018 +0200

    drm/msm: fix OF child-node lookup
    
    commit f9a7082327e26f54067a49cac2316d31e0cc8ba7 upstream.
    
    Use the new of_get_compatible_child() helper to lookup the legacy
    pwrlevels child node instead of using of_find_compatible_node(), which
    searches the entire tree from a given start node and thus can return an
    unrelated (i.e.  non-child) node.
    
    This also addresses a potential use-after-free (e.g. after probe
    deferral) as the tree-wide helper drops a reference to its first
    argument (i.e. the probed device's node).
    
    While at it, also fix the related child-node reference leak.
    
    Fixes: e2af8b6b0ca1 ("drm/msm: gpu: Use OPP tables if we can")
    Cc: stable <stable@vger.kernel.org>     # 4.12
    Cc: Jordan Crouse <jcrouse@codeaurora.org>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: David Airlie <airlied@linux.ie>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1ef6c983a0026e670700c1c192c6b6edebfcba9
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Sep 28 16:43:22 2018 +0200

    fuse: set FR_SENT while locked
    
    commit 4c316f2f3ff315cb48efb7435621e5bfb81df96d upstream.
    
    Otherwise fuse_dev_do_write() could come in and finish off the request, and
    the set_bit(FR_SENT, ...) could trigger the WARN_ON(test_bit(FR_SENT, ...))
    in request_end().
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Reported-by: syzbot+ef054c4d3f64cd7f7cec@syzkaller.appspotmai
    Fixes: 46c34a348b0a ("fuse: no fc->lock for pqueue parts")
    Cc: <stable@vger.kernel.org> # v4.2
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ed087a7d75f5cc96edafebb0eeb5a3dce515374
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Sep 28 16:43:22 2018 +0200

    fuse: fix blocked_waitq wakeup
    
    commit 908a572b80f6e9577b45e81b3dfe2e22111286b8 upstream.
    
    Using waitqueue_active() is racy.  Make sure we issue a wake_up()
    unconditionally after storing into fc->blocked.  After that it's okay to
    optimize with waitqueue_active() since the first wake up provides the
    necessary barrier for all waiters, not the just the woken one.
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 3c18ef8117f0 ("fuse: optimize wake_up")
    Cc: <stable@vger.kernel.org> # v3.10
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 569fda5c0183f36ea86185ca505fdf91dfcf4def
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Tue Sep 25 12:52:42 2018 +0300

    fuse: Fix use-after-free in fuse_dev_do_write()
    
    commit d2d2d4fb1f54eff0f3faa9762d84f6446a4bc5d0 upstream.
    
    After we found req in request_find() and released the lock,
    everything may happen with the req in parallel:
    
    cpu0                              cpu1
    fuse_dev_do_write()               fuse_dev_do_write()
      req = request_find(fpq, ...)    ...
      spin_unlock(&fpq->lock)         ...
      ...                             req = request_find(fpq, oh.unique)
      ...                             spin_unlock(&fpq->lock)
      queue_interrupt(&fc->iq, req);   ...
      ...                              ...
      ...                              ...
      request_end(fc, req);
        fuse_put_request(fc, req);
      ...                              queue_interrupt(&fc->iq, req);
    
    
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 46c34a348b0a ("fuse: no fc->lock for pqueue parts")
    Cc: <stable@vger.kernel.org> # v4.2
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8e17b1be3e804ae552677c8159825718d29f68a
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Tue Sep 25 12:28:55 2018 +0300

    fuse: Fix use-after-free in fuse_dev_do_read()
    
    commit bc78abbd55dd28e2287ec6d6502b842321a17c87 upstream.
    
    We may pick freed req in this way:
    
    [cpu0]                                  [cpu1]
    fuse_dev_do_read()                      fuse_dev_do_write()
       list_move_tail(&req->list, ...);     ...
       spin_unlock(&fpq->lock);             ...
       ...                                  request_end(fc, req);
       ...                                    fuse_put_request(fc, req);
       if (test_bit(FR_INTERRUPTED, ...))
             queue_interrupt(fiq, req);
    
    Fix that by keeping req alive until we finish all manipulations.
    
    Reported-by: syzbot+4e975615ca01f2277bdd@syzkaller.appspotmail.com
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 46c34a348b0a ("fuse: no fc->lock for pqueue parts")
    Cc: <stable@vger.kernel.org> # v4.2
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbd6cfd2ee3621fd607169a130933820548851a0
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Thu Oct 11 17:38:14 2018 +0300

    vfs: fix FIGETBSZ ioctl on an overlayfs file
    
    commit 8f97d1e99149a7f1aa19e47a51b09764382a482e upstream.
    
    Some anon_bdev filesystems (e.g. overlayfs, ceph) don't have s_blocksize
    set. Returning zero from FIGETBSZ ioctl results in a Floating point
    exception from the e2fsprogs utility filefrag, which divides the size of
    the file with the value returned by FIGETBSZ.
    
    Fix the interface by returning -EINVAL for these filesystems.
    
    Fixes: d1d04ef8572b ("ovl: stack file ops")
    Cc: <stable@vger.kernel.org> # v4.19
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d49d9460b0e671b8eafb7294fba5637490ed479c
Author: Himanshu Madhani <himanshu.madhani@cavium.com>
Date:   Wed Sep 26 22:05:15 2018 -0700

    scsi: qla2xxx: Fix driver hang when FC-NVMe LUNs are configured
    
    commit 39553065f77c297239308470ee313841f4e07db4 upstream.
    
    This patch fixes multiple call for qla_nvme_unregister_remote_port() as part
    of qlt_schedule_session_for_deletion(), Do not call it again during
    qla_nvme_delete()
    
    Fixes: e473b3074104 ("scsi: qla2xxx: Add FC-NVMe abort processing")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33bf45f344f86b4ecaadcf4f17920dae62d14f70
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Wed Sep 26 22:05:13 2018 -0700

    scsi: qla2xxx: Fix duplicate switch database entries
    
    commit 732ee9a912cf2d9a50c5f9c4213cdc2f885d6aa6 upstream.
    
    The response data buffer used in switch scan is reused 4 times.  (For example,
    for commands GPN_FT, GNN_FT for FCP and FC-NVME) Before driver reuses this
    buffer, clear it to prevent duplicate entries in our database.
    
    Fixes: a4239945b8ad1 ("scsi: qla2xxx: Add switch command to simplify fabric discovery"
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f00c0acfcd8d161471a3e0ab6b1c5faed2134956
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Wed Sep 26 22:05:12 2018 -0700

    scsi: qla2xxx: Fix NVMe Target discovery
    
    commit db186382af21e926e90df19499475f2552192b77 upstream.
    
    This patch fixes issue when remoteport registers itself as both FCP and
    FC-NVMe with the switch, driver will pick FC-NVMe personality as default when
    scanning for targets.
    
    Driver was using comaprative operator instead of bitwise operator to check for
    fc4_type for both FCP and FC-NVME.
    
    Fixes: 2b5b96473efc ("scsi: qla2xxx: Fix FC-NVMe LUN discovery")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b0474865dcfc6ffda04ddb7a15480268b6059f7
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Wed Sep 26 22:05:11 2018 -0700

    scsi: qla2xxx: Fix NVMe session hang on unload
    
    commit f7d61c995df74d6bb57bbff6a2b7b1874c4a2baa upstream.
    
    Send aborts only when chip is active.
    
    Fixes: 623ee824e579 ("scsi: qla2xxx: Fix FC-NVMe IO abort during driver reset")
    Cc: <stable@vger.kernel.org> # 4.14
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0858d74e88451080adf5f4f81c57b99274805dda
Author: Giridhar Malavali <giridhar.malavali@cavium.com>
Date:   Wed Sep 26 22:05:17 2018 -0700

    scsi: qla2xxx: Fix for double free of SRB structure
    
    commit bcc71cc3cde1468958a3ea859276d8d1a1a68265 upstream.
    
    This patch fixes issue during switch command query where driver was freeing
    SRB resources multiple times
    
    Following stack trace will be seen
    [  853.436234] BUG: unable to handle kernel NULL pointer dereference at
    0000000000000001
    [  853.436348] IP: [<ffffffff811df514>] kmem_cache_alloc+0x74/0x1e0
    [  853.436476] PGD 0
    [  853.436601] Oops: 0000 [#1] SMP
    
    [  853.454700]  [<ffffffff81099f6a>] ? mod_timer+0x14a/0x220
    [  853.455543]  [<ffffffff81185465>] mempool_alloc_slab+0x15/0x20
    [  853.456395]  [<ffffffff811855a9>] mempool_alloc+0x69/0x170
    [  853.457257]  [<ffffffff81098af2>] ? internal_add_timer+0x32/0x70
    [  853.458136]  [<ffffffffc0092d2b>] qla2xxx_queuecommand+0x29b/0x3f0 [qla2xxx]
    [  853.459024]  [<ffffffff8146535a>] scsi_dispatch_cmd+0xaa/0x230
    [  853.459923]  [<ffffffff8146e11f>] scsi_request_fn+0x4df/0x680
    [  853.460829]  [<ffffffff81029557>] ? __switch_to+0xd7/0x510
    [  853.461747]  [<ffffffff812f7113>] __blk_run_queue+0x33/0x40
    [  853.462670]  [<ffffffff812f7735>] blk_delay_work+0x25/0x40
    [  853.463603]  [<ffffffff810a882a>] process_one_work+0x17a/0x440
    [  853.464546]  [<ffffffff810a94f6>] worker_thread+0x126/0x3c0
    [  853.465501]  [<ffffffff810a93d0>] ? manage_workers.isra.24+0x2a0/0x2a0
    [  853.466447]  [<ffffffff810b099f>] kthread+0xcf/0xe0
    [  853.467379]  [<ffffffff810b08d0>] ? insert_kthread_work+0x40/0x40
    [  853.470172] Code: db e2 7e 49 8b 50 08 4d 8b 20 49 8b 40 10 4d 85 e4 0f 84 20
    01 00 00 48 85 c0 0f 84 17 01 00 00 49 63 46 20 48 8d 4a 01 4d 8b 06 <49> 8b 1c
    04 4c 89 e0 65 49 0f c7 08 0f 94 c0 84 c0 74 ba 49 63
    [  853.472072] RIP  [<ffffffff811df514>] kmem_cache_alloc+0x74/0x1e0
    [  853.472971]  RSP <ffff88103726fc50>
    
    Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Giridhar Malavali <giridhar.malavali@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 966faef442d61c995a4571205b1a091b6ea7dedb
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Wed Sep 26 22:05:14 2018 -0700

    scsi: qla2xxx: Fix re-using LoopID when handle is in use
    
    commit 5c6400536481d9ef44ef94e7bf2c7b8e81534db7 upstream.
    
    This patch fixes issue where driver clears NPort ID map instead of marking
    handle in use. Once driver clears NPort ID from the database, it can reuse
    the same NPort ID resulting in a PLOGI failure.
    
    [mkp: fixed Himanshu's SoB]
    
    Fixes: a084fd68e1d2 ("scsi: qla2xxx: Fix re-login for Nport Handle in use")
    Cc: <stable@vger.kernel.org>
    Signed-of-by: Quinn Tran <quinn.tran@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Himanshu Madhani <hmadhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5630d7c76dd3c61d41f110b5789df7aaeffce341
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Tue Sep 11 10:18:22 2018 -0700

    scsi: qla2xxx: Reject bsg request if chip is down.
    
    commit 56d942de59ebfa2e970a6cd33299d1984710b6c0 upstream.
    
    Reject bsg request if chip is down.  This prevent erroneous timeout.
    
    Fixes: d051a5aa1c23 ("[SCSI] qla2xxx: Add an "is reset active" helper.")
    Cc: stable@vger.kernel.org # 4.10
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68ae7d06bf1188be7a5ec272e136f2168b767a29
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Tue Sep 11 10:18:21 2018 -0700

    scsi: qla2xxx: shutdown chip if reset fail
    
    commit 1e4ac5d6fe0a4af17e4b6251b884485832bf75a3 upstream.
    
    If chip unable to fully initialize, use full shutdown sequence to clear out
    any stale FW state.
    
    Fixes: e315cd28b9ef ("[SCSI] qla2xxx: Code changes for qla data structure refactoring")
    Cc: stable@vger.kernel.org  #4.10
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c97c9cfb4d80f8cea22feab370d80d7b403e878b
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Tue Sep 11 10:18:19 2018 -0700

    scsi: qla2xxx: Fix early srb free on abort
    
    commit 8235f4b5aeba868739f6e12a51ad92689e3f78ef upstream.
    
    Task abort can take 2 paths: 1) serial/synchronous abort where the calling
    thread will put to sleep, wait for completion and free cmd resource.  2) async
    abort where the cmd free will be free by the completion thread.  For path 2,
    driver is freeing the SRB too early.
    
    Fixes: f6145e86d21f ("scsi: qla2xxx: Fix race between switch cmd completion and timeout")
    Cc: stable@vger.kernel.org # 4.19
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 731fe8aaa87cb4977e9a4c34a6015961b17a18d3
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Tue Sep 11 10:18:24 2018 -0700

    scsi: qla2xxx: Remove stale debug trace message from tcm_qla2xxx
    
    commit 7c388f91ec1a59b0ed815b07b90536e2d57e1e1f upstream.
    
    Remove stale debug trace.
    
    Fixes: 1eb42f965ced ("qla2xxx: Make trace flags more readable")
    Cc: stable@vger.kernel.org #4.10
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c60951c9854e24d7b44c38912a29438fefe9f3b
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Fri Aug 31 11:24:26 2018 -0700

    scsi: qla2xxx: Fix process response queue for ISP26XX and above
    
    commit b86ac8fd4b2f6ec2f9ca9194c56eac12d620096f upstream.
    
    This patch improves performance for 16G and above adapter by removing
    additional call to process_response_queue().
    
    [mkp: typo]
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f8f199b5ee728b4be7f1bd2787bbd952d6777c9
Author: Himanshu Madhani <himanshu.madhani@cavium.com>
Date:   Fri Aug 31 11:24:27 2018 -0700

    scsi: qla2xxx: Fix incorrect port speed being set for FC adapters
    
    commit 4c1458df9635c7e3ced155f594d2e7dfd7254e21 upstream.
    
    Fixes: 6246b8a1d26c7c ("[SCSI] qla2xxx: Enhancements to support ISP83xx.")
    Fixes: 1bb395485160d2 ("qla2xxx: Correct iiDMA-update calling conventions.")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d168af20257be486ae20fd1d4d5facb7da49e559
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Tue Oct 30 15:13:35 2018 +0900

    serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout
    
    commit 641a41dbba217ee5bd26abe6be77f8cead9cd00e upstream.
    
    This patch fixes an issue that the sci_remove() could not remove
    dev_attr_rx_fifo_timeout because uart_remove_one_port() set
    the port->port.type to PORT_UNKNOWN.
    
    Reported-by: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@renesas.com>
    Fixes: 5d23188a473d ("serial: sh-sci: make RX FIFO parameters tunable via sysfs")
    Cc: <stable@vger.kernel.org> # v4.11+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be67725944deb50e20959fe00908334515162480
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Thu Nov 1 21:31:39 2018 +0100

    ovl: automatically enable redirect_dir on metacopy=on
    
    commit d47748e5ae5af6572e520cc9767bbe70c22ea498 upstream.
    
    Current behavior is to automatically disable metacopy if redirect_dir is
    not enabled and proceed with the mount.
    
    If "metacopy=on" mount option was given, then this behavior can confuse the
    user: no mount failure, yet metacopy is disabled.
    
    This patch makes metacopy=on imply redirect_dir=on.
    
    The converse is also true: turning off full redirect with redirect_dir=
    {off|follow|nofollow} will disable metacopy.
    
    If both metacopy=on and redirect_dir={off|follow|nofollow} is specified,
    then mount will fail, since there's no way to correctly resolve the
    conflict.
    
    Reported-by: Daniel Walsh <dwalsh@redhat.com>
    Fixes: d5791044d2e5 ("ovl: Provide a mount option metacopy=on/off...")
    Cc: <stable@vger.kernel.org> # v4.19
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dee4ce11c576cc3b72b42581b231190639e9765c
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Oct 31 12:15:23 2018 +0100

    ovl: check whiteout in ovl_create_over_whiteout()
    
    commit 5e1275808630ea3b2c97c776f40e475017535f72 upstream.
    
    Kaixuxia repors that it's possible to crash overlayfs by removing the
    whiteout on the upper layer before creating a directory over it.  This is a
    reproducer:
    
     mkdir lower upper work merge
     touch lower/file
     mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merge
     rm merge/file
     ls -al merge/file
     rm upper/file
     ls -al merge/
     mkdir merge/file
    
    Before commencing with a vfs_rename(..., RENAME_EXCHANGE) verify that the
    lookup of "upper" is positive and is a whiteout, and return ESTALE
    otherwise.
    
    Reported by: kaixuxia <xiakaixu1987@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: e9be9d5e76e3 ("overlay filesystem")
    Cc: <stable@vger.kernel.org> # v3.18
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72f6852d9baaffdb315e8389e2c2b184c214e495
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Thu Oct 18 09:45:49 2018 +0300

    ovl: fix recursive oi->lock in ovl_link()
    
    commit 6cd078702f2f33cb6b19a682de3e9184112f1a46 upstream.
    
    linking a non-copied-up file into a non-copied-up parent results in a
    nested call to mutex_lock_interruptible(&oi->lock). Fix this by copying up
    target parent before ovl_nlink_start(), same as done in ovl_rename().
    
    ~/unionmount-testsuite$ ./run --ov -s
    ~/unionmount-testsuite$ ln /mnt/a/foo100 /mnt/a/dir100/
    
     WARNING: possible recursive locking detected
     --------------------------------------------
     ln/1545 is trying to acquire lock:
     00000000bcce7c4c (&ovl_i_lock_key[depth]){+.+.}, at:
         ovl_copy_up_start+0x28/0x7d
     but task is already holding lock:
     0000000026d73d5b (&ovl_i_lock_key[depth]){+.+.}, at:
         ovl_nlink_start+0x3c/0xc1
    
    [SzM: this seems to be a false positive, but doing the copy-up first is
    harmless and removes the lockdep splat]
    
    Reported-by: syzbot+3ef5c0d1a5cb0b21e6be@syzkaller.appspotmail.com
    Fixes: 5f8415d6b87e ("ovl: persistent overlay inode nlink for...")
    Cc: <stable@vger.kernel.org> # v4.13
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37403ba3c4135da033714bfba42fdc0c23ecbdeb
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Wed Oct 10 19:10:06 2018 +0300

    ovl: fix error handling in ovl_verify_set_fh()
    
    commit babf4770be0adc69e6d2de150f4040f175e24beb upstream.
    
    We hit a BUG on kfree of an ERR_PTR()...
    
    Reported-by: syzbot+ff03fe05c717b82502d0@syzkaller.appspotmail.com
    Fixes: 8b88a2e64036 ("ovl: verify upper root dir matches lower root dir")
    Cc: <stable@vger.kernel.org> # v4.13
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8099dbf492b565a4f75ae7b8c08b76ca18c4c3f
Author: Young_X <YangX92@hotmail.com>
Date:   Wed Oct 3 12:54:29 2018 +0000

    cdrom: fix improper type cast, which can leat to information leak.
    
    commit e4f3aa2e1e67bb48dfbaaf1cad59013d5a5bc276 upstream.
    
    There is another cast from unsigned long to int which causes
    a bounds check to fail with specially crafted input. The value is
    then used as an index in the slot array in cdrom_slot_status().
    
    This issue is similar to CVE-2018-16658 and CVE-2018-10940.
    
    Signed-off-by: Young_X <YangX92@hotmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9de7e61354fff630c9eb5ea87ed727f50dad63a
Author: Hugues Fruchet <hugues.fruchet@st.com>
Date:   Tue Sep 11 09:48:21 2018 -0400

    media: ov5640: fix restore of last mode set
    
    [ Upstream commit 985cdcb08a0488558d1005139596b64d73bee267 ]
    
    Mode setting depends on last mode set, in particular
    because of exposure calculation when downscale mode
    change between subsampling and scaling.
    At stream on the last mode was wrongly set to current mode,
    so no change was detected and exposure calculation
    was not made, fix this.
    
    Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
    Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
    Tested-by: Jacopo Mondi <jacopo@jmondi.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fc72c1b886525ee5b6cb244fd2ee5d86fee070b
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Aug 10 18:50:32 2018 +0800

    drm/amdgpu: fix integer overflow test in amdgpu_bo_list_create()
    
    [ Upstream commit ff30e9e8509cb877dc7cbc776b36c70f5bdd290f ]
    
    We accidentally left out the size of the amdgpu_bo_list struct.  It
    could lead to memory corruption on 32 bit systems.  You'd have to
    pick the absolute maximum and set "num_entries == 59652323" then size
    would wrap to 16 bytes.
    
    Fixes: 920990cb080a ("drm/amdgpu: allocate the bo_list array after the list")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Bas Nieuwenhuizen <basni@chromium.org>
    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36c99a16366115cb339148ff8f6d45383d85e080
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Tue Aug 28 07:32:35 2018 +0900

    9p: clear dangling pointers in p9stat_free
    
    [ Upstream commit 62e3941776fea8678bb8120607039410b1b61a65 ]
    
    p9stat_free is more of a cleanup function than a 'free' function as it
    only frees the content of the struct; there are chances of use-after-free
    if it is improperly used (e.g. p9stat_free called twice as it used to be
    possible to)
    
    Clearing dangling pointers makes the function idempotent and safer to use.
    
    Link: http://lkml.kernel.org/r/1535410108-20650-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Reported-by: syzbot+d4252148d198410b864f@syzkaller.appspotmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e0a5da540fbc4cbcc3edef4b5c99387bb513092
Author: Hugues Fruchet <hugues.fruchet@st.com>
Date:   Thu Aug 16 05:46:53 2018 -0400

    media: ov5640: fix mode change regression
    
    [ Upstream commit fb98e29ff1ea5a8118265d11f0e03bc8608a49cb ]
    
    fixes: 6949d864776e ("media: ov5640: do not change mode if format or frame interval is unchanged").
    
    Symptom was fuzzy image because of JPEG default format
    not being changed according to new format selected, fix this.
    Init sequence initialises format to YUV422 UYVY but
    sensor->fmt initial value was set to JPEG, fix this.
    
    Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2db3680153c3b2e03322571f38f44c996da60d5d
Author: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Date:   Wed Aug 22 13:38:03 2018 +0200

    ARM: dts: imx6ull: keep IMX6UL_ prefix for signals on both i.MX6UL and i.MX6ULL
    
    [ Upstream commit 31edaa6e7fd8143085a6a60c564447c07e76ed9f ]
    
    Signals available on both i.MX6UL and i.MX6ULL should have the same name
    because it is the case of all others common signals, it avoids to make
    mistakes (use the wrong ones) and it makes writing device tree files
    less complicated. For example:
    
    imx6ul-imx6ull-board.dtsi:
     ...
     pinctrl_uart5: uart5grp {
            fsl,pins = <
                    MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX   0x1b0b1
                    MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX   0x1b0b1
             >;
     };
    
    imx6ul-board.dts:
     #include <imx6ul.dtsi>
     #include <imx6ul-imx6ull-board.dtsi>
     ...
    
    imx6ull-board.dts:
     #include <imx6ull.dtsi>
     #include <imx6ul-imx6ull-board.dtsi>
     ...
    
    Without this patch, the imx6ull-board.dtb will use
    MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX instead of
    MX6ULL_PAD_UART5_RX_DATA__UART5_DCE_RX and the uart5 will be
    misconfigured.
    
    Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
    Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8035d1a13d50a144cb26ee39ca6e225514beb197
Author: Jan Kara <jack@suse.cz>
Date:   Thu Sep 6 15:56:10 2018 +0200

    udf: Prevent write-unsupported filesystem to be remounted read-write
    
    [ Upstream commit a9ad01bc759df79b0012f43ee52164391e31cd96 ]
    
    There are certain filesystem features which we support for reading but
    not for writing. We properly refuse to mount such filesystems read-write
    however for some features (such as read-only partitions), we don't check
    for these features when remounting the filesystem from read-only to
    read-write. Thus such filesystems could be remounted read-write leading
    to strange behavior (most likely crashes).
    
    Fix the problem by marking in superblock whether the filesystem has some
    features that are supported in read-only mode and check this flag during
    remount.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 949fd0eaf955a3319080d3bfd699044bacef0abb
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Sat Sep 8 01:18:43 2018 +0900

    9p locks: fix glock.client_id leak in do_lock
    
    [ Upstream commit b4dc44b3cac9e8327e0655f530ed0c46f2e6214c ]
    
    the 9p client code overwrites our glock.client_id pointing to a static
    buffer by an allocated string holding the network provided value which
    we do not care about; free and reset the value as appropriate.
    
    This is almost identical to the leak in v9fs_file_getlock() fixed by
    Al Viro in commit ce85dd58ad5a6 ("9p: we are leaking glock.client_id
    in v9fs_file_getlock()"), which was returned as an error by a coverity
    false positive -- while we are here attempt to make the code slightly
    more robust to future change of the net/9p/client code and hopefully
    more clear to coverity that there is no problem.
    
    Link: http://lkml.kernel.org/r/1536339057-21974-5-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e55677b9efb85513e5ffbb2adc1ad9cb314099a9
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Sep 5 10:46:05 2018 +0100

    staging: most: video: fix registration of an empty comp core_component
    
    [ Upstream commit 1f447e51c0b9e8beeec0917ea5f51930f55e17c9 ]
    
    Currently we have structrues comp (which is empty) and comp_info being
    used to register and deregister the component.  This mismatch in naming
    occurred from a previous commit that renamed aim_info to comp. Fix this
    to use consistent component naming in line with most/net, most/sound etc.
    
    This fixes the message two issues, one with a null empty name when
    loading the module:
    
    [ 1485.269515] most_core: registered new core component (null)
    
    and an Oops when removing the module:
    
    [ 1485.277971] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    [ 1485.278648] PGD 0 P4D 0
    [ 1485.279253] Oops: 0002 [#2] SMP PTI
    [ 1485.279847] CPU: 1 PID: 32629 Comm: modprobe Tainted: P      D WC OE     4.18.0-8-generic #9
    [ 1485.280442] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
    [ 1485.281040] RIP: 0010:most_deregister_component+0x3c/0x70 [most_core]
    .. etc
    
    Fixes: 1b10a0316e2d ("staging: most: video: remove aim designators")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b6ff8ebd35d57aece2151307b2000d3558939fb
Author: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Date:   Mon Sep 10 18:43:58 2018 -0400

    drm/amdgpu: Fix SDMA TO after GPU reset v3
    
    [ Upstream commit d8de8260a45aae8f74af77eae9a162bdc0ed48d2 ]
    
    After GPU reset amdgpu_vm_clear_bo triggers VM flush
    but job->vm_pd_addr is not set causing SDMA TO.
    
    v2:
    Per advise by Christian König avoid flushing VM for jobs where
    job->vm_pd_addr wasn't explicitly set.
    
    v3:
    Shortcut vm_flush_needed early.
    
    Fixes cbd5285 drm/amdgpu: move setting the GART addr into TTM.
    Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6a4baf458abc82e72c5bc480e476aa347fb1ecd
Author: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Date:   Fri Aug 31 19:12:57 2018 +0100

    drm: rcar-du: Update Gen3 output limitations
    
    [ Upstream commit 2a3181d9cfd6d5aa48f8527708d0c32072072cef ]
    
    The R-Car Gen3 DU utilises the VSP1 hardware for memory access. The
    limits on the RPF and WPF in this pipeline are 8190x8190.
    
    Update the supported maximum sizes accordingly.
    
    Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73ad8868960a3bd4271268589cedacc4f178b0e3
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Thu Sep 13 11:44:09 2018 +0300

    staging:iio:ad7606: fix voltage scales
    
    [ Upstream commit 4ee033301c898dd0835d035d0e0eb768a3d35da1 ]
    
    Fixes commit 17be2a2905a6ec9aa27cd59521495e2f490d2af0 ("staging: iio:
    ad7606: replace range/range_available with corresponding scale").
    
    The AD7606 devices don't have a 2.5V voltage range, they have 5V & 10V
    voltage range, which is selectable via the `gpio_range` descriptor.
    
    The scales also seem to have been miscomputed, because when they were
    applied to the raw values, the results differ from the expected values.
    After checking the ADC transfer function in the datasheet, these were
    re-computed.
    
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38672b57416d25d3d0ee8574691f1b61adeec078
Author: Breno Leitao <leitao@debian.org>
Date:   Tue Jul 31 17:55:57 2018 -0300

    powerpc/selftests: Wait all threads to join
    
    [ Upstream commit 693b31b2fc1636f0aa7af53136d3b49f6ad9ff39 ]
    
    Test tm-tmspr might exit before all threads stop executing, because it just
    waits for the very last thread to join before proceeding/exiting.
    
    This patch makes sure that all threads that were created will join before
    proceeding/exiting.
    
    This patch also guarantees that the amount of threads being created is equal
    to thread_num.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 733b1b42230424680fab9d6d73ee6ef782d8e8bd
Author: Marco Felsch <m.felsch@pengutronix.de>
Date:   Thu Jun 28 12:20:33 2018 -0400

    media: tvp5150: fix width alignment during set_selection()
    
    [ Upstream commit bd24db04101f45a9c1d874fe21b0c7eab7bcadec ]
    
    The driver ignored the width alignment which exists due to the UYVY
    colorspace format. Fix the width alignment and make use of the the
    provided v4l2 helper function to set the width, height and all
    alignments in one.
    
    Fixes: 963ddc63e20d ("[media] media: tvp5150: Add cropping support")
    
    Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c50363ded3c10b5b319016def6dcecd0032bfd25
Author: Phil Elwell <phil@raspberrypi.org>
Date:   Wed Sep 12 15:31:55 2018 +0100

    sc16is7xx: Fix for multi-channel stall
    
    [ Upstream commit 8344498721059754e09d30fe255a12dab8fb03ef ]
    
    The SC16IS752 is a dual-channel device. The two channels are largely
    independent, but the IRQ signals are wired together as an open-drain,
    active low signal which will be driven low while either of the
    channels requires attention, which can be for significant periods of
    time until operations complete and the interrupt can be acknowledged.
    In that respect it is should be treated as a true level-sensitive IRQ.
    
    The kernel, however, needs to be able to exit interrupt context in
    order to use I2C or SPI to access the device registers (which may
    involve sleeping).  Therefore the interrupt needs to be masked out or
    paused in some way.
    
    The usual way to manage sleeping from within an interrupt handler
    is to use a threaded interrupt handler - a regular interrupt routine
    does the minimum amount of work needed to triage the interrupt before
    waking the interrupt service thread. If the threaded IRQ is marked as
    IRQF_ONESHOT the kernel will automatically mask out the interrupt
    until the thread runs to completion. The sc16is7xx driver used to
    use a threaded IRQ, but a patch switched to using a kthread_worker
    in order to set realtime priorities on the handler thread and for
    other optimisations. The end result is non-threaded IRQ that
    schedules some work then returns IRQ_HANDLED, making the kernel
    think that all IRQ processing has completed.
    
    The work-around to prevent a constant stream of interrupts is to
    mark the interrupt as edge-sensitive rather than level-sensitive,
    but interpreting an active-low source as a falling-edge source
    requires care to prevent a total cessation of interrupts. Whereas
    an edge-triggering source will generate a new edge for every interrupt
    condition a level-triggering source will keep the signal at the
    interrupting level until it no longer requires attention; in other
    words, the host won't see another edge until all interrupt conditions
    are cleared. It is therefore vital that the interrupt handler does not
    exit with an outstanding interrupt condition, otherwise the kernel
    will not receive another interrupt unless some other operation causes
    the interrupt state on the device to be cleared.
    
    The existing sc16is7xx driver has a very simple interrupt "thread"
    (kthread_work job) that processes interrupts on each channel in turn
    until there are no more. If both channels are active and the first
    channel starts interrupting while the handler for the second channel
    is running then it will not be detected and an IRQ stall ensues. This
    could be handled easily if there was a shared IRQ status register, or
    a convenient way to determine if the IRQ had been deasserted for any
    length of time, but both appear to be lacking.
    
    Avoid this problem (or at least make it much less likely to happen)
    by reducing the granularity of per-channel interrupt processing
    to one condition per iteration, only exiting the overall loop when
    both channels are no longer interrupting.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff8bf85228082c3e8d2dbb0f2f302a75c9a3f3b2
Author: John Garry <john.garry@huawei.com>
Date:   Thu Aug 30 17:08:50 2018 +0800

    serial: 8250_of: Fix for lack of interrupt support
    
    [ Upstream commit a27d938251ef40c43db81af16fc26b2cec181d4d ]
    
    In commit c58caaab3bf8 ("serial: 8250: of: Defer probe on missing IRQ"), a
    check was added for the UART driver being probed prior to the parent IRQ
    controller.
    
    Unfortunately this breaks certain boards which have no interrupt support,
    like Huawei D03.
    
    Indeed, the 8250 DT bindings state that interrupts should be supported -
    not must.
    
    To fix, switch from irq_of_parse_and_map() to of_irq_get(), which
    does relay whether the IRQ host controller domain is not ready, i.e.
    defer probe, instead of assuming it.
    
    Fixes: c58caaab3bf8 ("serial: 8250: of: Defer probe on missing IRQ")
    Signed-off-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Tested-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19527c628c90386371a9b72417fa4de6c6f62f43
Author: Gao Xiang <gaoxiang25@huawei.com>
Date:   Tue Sep 18 22:25:33 2018 +0800

    staging: erofs: fix a missing endian conversion
    
    [ Upstream commit 37ec35a6cc2b99eb7fd6b85b7d7b75dff46bc353 ]
    
    This patch fixes a missing endian conversion in
    vle_get_logical_extent_head.
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92db94fa518f8892cc967f13a41715c96e4fa9e5
Author: Huacai Chen <chenhc@lemote.com>
Date:   Sat Sep 15 14:01:12 2018 +0800

    MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS
    
    [ Upstream commit 2794f688b2c336e0da85e9f91fed33febbd9f54a ]
    
    Call pcie_bus_configure_settings() on MIPS, like for other platforms.
    The function pcie_bus_configure_settings() makes sure the MPS (Max
    Payload Size) across the bus is uniform and provides the ability to
    tune the MRSS (Max Read Request Size) and MPS (Max Payload Size) to
    higher performance values. Some devices will not operate properly if
    these aren't set correctly because the firmware doesn't always do it.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20649/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang <zhangfx@lemote.com>
    Cc: Zhangjin Wu <wuzhangjin@gmail.com>
    Cc: Huacai Chen <chenhuacai@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75837895b38bb4407fa5e901f0af4ed1a2b08d10
Author: Rashmica Gupta <rashmica.g@gmail.com>
Date:   Fri Aug 17 14:25:01 2018 +1000

    powerpc/memtrace: Remove memory in chunks
    
    [ Upstream commit 3f7daf3d7582dc6628ac40a9045dd1bbd80c5f35 ]
    
    When hot-removing memory release_mem_region_adjustable() splits iomem
    resources if they are not the exact size of the memory being
    hot-deleted. Adding this memory back to the kernel adds a new resource.
    
    Eg a node has memory 0x0 - 0xfffffffff. Hot-removing 1GB from
    0xf40000000 results in the single resource 0x0-0xfffffffff being split
    into two resources: 0x0-0xf3fffffff and 0xf80000000-0xfffffffff.
    
    When we hot-add the memory back we now have three resources:
    0x0-0xf3fffffff, 0xf40000000-0xf7fffffff, and 0xf80000000-0xfffffffff.
    
    This is an issue if we try to remove some memory that overlaps
    resources. Eg when trying to remove 2GB at address 0xf40000000,
    release_mem_region_adjustable() fails as it expects the chunk of memory
    to be within the boundaries of a single resource. We then get the
    warning: "Unable to release resource" and attempting to use memtrace
    again gives us this error: "bash: echo: write error: Resource
    temporarily unavailable"
    
    This patch makes memtrace remove memory in chunks that are always the
    same size from an address that is always equal to end_of_memory -
    n*size, for some n. So hotremoving and hotadding memory of different
    sizes will now not attempt to remove memory that spans multiple
    resources.
    
    Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce62cb996071e48e6b0d91add3401569e7470b6b
Author: Joel Stanley <joel@jms.id.au>
Date:   Fri Sep 14 13:36:47 2018 +0930

    powerpc/boot: Ensure _zimage_start is a weak symbol
    
    [ Upstream commit ee9d21b3b3583712029a0db65a4b7c081d08d3b3 ]
    
    When building with clang crt0's _zimage_start is not marked weak, which
    breaks the build when linking the kernel image:
    
     $ objdump -t arch/powerpc/boot/crt0.o |grep _zimage_start$
     0000000000000058 g       .text  0000000000000000 _zimage_start
    
     ld: arch/powerpc/boot/wrapper.a(crt0.o): in function '_zimage_start':
     (.text+0x58): multiple definition of '_zimage_start';
     arch/powerpc/boot/pseries-head.o:(.text+0x0): first defined here
    
    Clang requires the .weak directive to appear after the symbol is
    declared. The binutils manual says:
    
     This directive sets the weak attribute on the comma separated list of
     symbol names. If the symbols do not already exist, they will be
     created.
    
    So it appears this is different with clang. The only reference I could
    see for this was an OpenBSD mailing list post[1].
    
    Changing it to be after the declaration fixes building with Clang, and
    still works with GCC.
    
     $ objdump -t arch/powerpc/boot/crt0.o |grep _zimage_start$
     0000000000000058  w      .text 0000000000000000 _zimage_start
    
    Reported to clang as https://bugs.llvm.org/show_bug.cgi?id=38921
    
    [1] https://groups.google.com/forum/#!topic/fa.openbsd.tech/PAgKKen2YCY
    
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 754b404db8c8f529f015cddeb398c85ef2a238b7
Author: Dengcheng Zhu <dzhu@wavecomp.com>
Date:   Tue Sep 11 14:49:20 2018 -0700

    MIPS: kexec: Mark CPU offline before disabling local IRQ
    
    [ Upstream commit dc57aaf95a516f70e2d527d8287a0332c481a226 ]
    
    After changing CPU online status, it will not be sent any IPIs such as in
    __flush_cache_all() on software coherency systems. Do this before disabling
    local IRQ.
    
    Signed-off-by: Dengcheng Zhu <dzhu@wavecomp.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20571/
    Cc: pburton@wavecomp.com
    Cc: ralf@linux-mips.org
    Cc: linux-mips@linux-mips.org
    Cc: rachel.mozes@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e066306bacafc91b7cb68bc19cd38aab4df59cf6
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Wed Aug 1 10:18:04 2018 -0400

    media: coda: don't overwrite h.264 profile_idc on decoder instance
    
    [ Upstream commit 1f32061e843205f6fe8404d5100d5adcec334e75 ]
    
    On a decoder instance, after the profile has been parsed from the stream
    __v4l2_ctrl_s_ctrl() is called to notify userspace about changes in the
    read-only profile control. This ends up calling back into the CODA driver
    where a missing check on the s_ctrl caused the profile information that has
    just been parsed from the stream to be overwritten with the default
    baseline profile.
    
    Later on the driver fails to enable frame reordering, based on the wrong
    profile information.
    
    Fixes: 347de126d1da (media: coda: add read-only h.264 decoder
                         profile/level controls)
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3ad2c5249a5907a6eb6157aef422ebf0307b37e
Author: Nicholas Mc Guire <hofrat@osadl.org>
Date:   Sun Sep 9 12:02:32 2018 -0400

    media: pci: cx23885: handle adding to list failure
    
    [ Upstream commit c5d59528e24ad22500347b199d52b9368e686a42 ]
    
    altera_hw_filt_init() which calls append_internal() assumes
    that the node was successfully linked in while in fact it can
    silently fail. So the call-site needs to set return to -ENOMEM
    on append_internal() returning NULL and exit through the err path.
    
    Fixes: 349bcf02e361 ("[media] Altera FPGA based CI driver module")
    
    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85c2f31ac392bc55f0701c591c02180726acf1a8
Author: John Garry <john.garry@huawei.com>
Date:   Sat Sep 22 01:25:25 2018 +0800

    drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer
    
    [ Upstream commit 331d880b35a76b5de0eec8cbcecbf615d758a5f9 ]
    
    In hibmc_drm_fb_create(), when the call to hibmc_framebuffer_init() fails
    with error, do not store the error code in the HiBMC device frame-buffer
    pointer, as this will be later checked for non-zero value in
    hibmc_fbdev_destroy() when our intention is to check for a valid function
    pointer.
    
    This fixes the following crash:
    [    9.699791] Unable to handle kernel NULL pointer dereference at virtual address 000000000000001a
    [    9.708672] Mem abort info:
    [    9.711489]   ESR = 0x96000004
    [    9.714570]   Exception class = DABT (current EL), IL = 32 bits
    [    9.720551]   SET = 0, FnV = 0
    [    9.723631]   EA = 0, S1PTW = 0
    [    9.726799] Data abort info:
    [    9.729702]   ISV = 0, ISS = 0x00000004
    [    9.733573]   CM = 0, WnR = 0
    [    9.736566] [000000000000001a] user address but active_mm is swapper
    [    9.742987] Internal error: Oops: 96000004 [#1] PREEMPT SMP
    [    9.748614] Modules linked in:
    [    9.751694] CPU: 16 PID: 293 Comm: kworker/16:1 Tainted: G        W         4.19.0-rc4-next-20180920-00001-g9b0012c #322
    [    9.762681] Hardware name: Huawei Taishan 2280 /D05, BIOS Hisilicon D05 IT21 Nemo 2.0 RC0 04/18/2018
    [    9.771915] Workqueue: events work_for_cpu_fn
    [    9.776312] pstate: 60000005 (nZCv daif -PAN -UAO)
    [    9.781150] pc : drm_mode_object_put+0x0/0x20
    [    9.785547] lr : hibmc_fbdev_fini+0x40/0x58
    [    9.789767] sp : ffff00000af1bcf0
    [    9.793108] x29: ffff00000af1bcf0 x28: 0000000000000000
    [    9.798473] x27: 0000000000000000 x26: ffff000008f66630
    [    9.803838] x25: 0000000000000000 x24: ffff0000095abb98
    [    9.809203] x23: ffff8017db92fe00 x22: ffff8017d2b13000
    [    9.814568] x21: ffffffffffffffea x20: ffff8017d2f80018
    [    9.819933] x19: ffff8017d28a0018 x18: ffffffffffffffff
    [    9.825297] x17: 0000000000000000 x16: 0000000000000000
    [    9.830662] x15: ffff0000092296c8 x14: ffff00008939970f
    [    9.836026] x13: ffff00000939971d x12: ffff000009229940
    [    9.841391] x11: ffff0000085f8fc0 x10: ffff00000af1b9a0
    [    9.846756] x9 : 000000000000000d x8 : 6620657a696c6169
    [    9.852121] x7 : ffff8017d3340580 x6 : ffff8017d4168000
    [    9.857486] x5 : 0000000000000000 x4 : ffff8017db92fb20
    [    9.862850] x3 : 0000000000002690 x2 : ffff8017d3340480
    [    9.868214] x1 : 0000000000000028 x0 : 0000000000000002
    [    9.873580] Process kworker/16:1 (pid: 293, stack limit = 0x(____ptrval____))
    [    9.880788] Call trace:
    [    9.883252]  drm_mode_object_put+0x0/0x20
    [    9.887297]  hibmc_unload+0x1c/0x80
    [    9.890815]  hibmc_pci_probe+0x170/0x3c8
    [    9.894773]  local_pci_probe+0x3c/0xb0
    [    9.898555]  work_for_cpu_fn+0x18/0x28
    [    9.902337]  process_one_work+0x1e0/0x318
    [    9.906382]  worker_thread+0x228/0x450
    [    9.910164]  kthread+0x128/0x130
    [    9.913418]  ret_from_fork+0x10/0x18
    [    9.917024] Code: a94153f3 a8c27bfd d65f03c0 d503201f (f9400c01)
    [    9.923180] ---[ end trace 2695ffa0af5be375 ]---
    
    Fixes: d1667b86795a ("drm/hisilicon/hibmc: Add support for frame buffer")
    Signed-off-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Xinliang Liu <z.liuxinliang@hisilicon.com>
    Signed-off-by: Xinliang Liu <z.liuxinliang@hisilicon.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1d0566c93f9f07a5c93fdb80510876735aab5c3
Author: SivapiriyanKumarasamy <sivapiriyan.kumarasamy@amd.com>
Date:   Wed Sep 12 14:15:42 2018 -0400

    drm/amd/display: fix gamma not being applied
    
    [ Upstream commit 30049754ab7c4b6148dd3cd64af7d54850604582 ]
    
    [WHY]
    Previously night light forced a full update by
    applying a  transfer function update regardless of if it was changed.
    This logic was removed,
    
    Now gamma surface updates are only applied when there is also a plane
    info update, this does not work in cases such as using the night light
    slider.
    
    [HOW]
    When moving the night light slider we will perform a full update if
    the gamma has changed and there is a surface, even when the surface
    has not changed. Also get stream updates in setgamma prior to
    update planes and stream.
    
    Signed-off-by: SivapiriyanKumarasamy <sivapiriyan.kumarasamy@amd.com>
    Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce46da15e8c7812b15bc8f037ca2b43f6e97854f
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Wed Sep 12 08:55:42 2018 -0400

    drm/amd/display: Raise dispclk value for dce120 by 15%
    
    [ Upstream commit 481f576c6c21bf0446eaa23623ef0262e9a5387c ]
    
    [Why]
    
    The DISPCLK value was previously requested to be 15% higher for all
    ASICs that went through the dce110 bandwidth code path. As part of a
    refactoring of dce_clocks and the dce110 set bandwidth codepath this
    was removed for power saving considerations.
    
    That change caused display corruption under certain hardware
    configurations with Vega10.
    
    [How]
    
    The 15% DISPCLK increase is brought back but only on dce110 for now.
    This is should be a temporary workaround until the root cause is sorted
    out for why this occurs on Vega (or other ASICs, if reported).
    
    Tested-by: Nick Sarnie <sarnex@gentoo.org>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7423c2883cf64840d9e276f99be5ecfe458b4cf6
Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date:   Wed Sep 26 12:11:27 2018 +0300

    drm/omap: fix memory barrier bug in DMM driver
    
    [ Upstream commit 538f66ba204944470a653a4cccc5f8befdf97c22 ]
    
    A DMM timeout "timed out waiting for done" has been observed on DRA7
    devices. The timeout happens rarely, and only when the system is under
    heavy load.
    
    Debugging showed that the timeout can be made to happen much more
    frequently by optimizing the DMM driver, so that there's almost no code
    between writing the last DMM descriptors to RAM, and writing to DMM
    register which starts the DMM transaction.
    
    The current theory is that a wmb() does not properly ensure that the
    data written to RAM is observable by all the components in the system.
    
    This DMM timeout has caused interesting (and rare) bugs as the error
    handling was not functioning properly (the error handling has been fixed
    in previous commits):
    
     * If a DMM timeout happened when a GEM buffer was being pinned for
       display on the screen, a timeout error would be shown, but the driver
       would continue programming DSS HW with broken buffer, leading to
       SYNCLOST floods and possible crashes.
    
     * If a DMM timeout happened when other user (say, video decoder) was
       pinning a GEM buffer, a timeout would be shown but if the user
       handled the error properly, no other issues followed.
    
     * If a DMM timeout happened when a GEM buffer was being released, the
       driver does not even notice the error, leading to crashes or hang
       later.
    
    This patch adds wmb() and readl() calls after the last bit is written to
    RAM, which should ensure that the execution proceeds only after the data
    is actually in RAM, and thus observable by DMM.
    
    The read-back should not be needed. Further study is required to understand
    if DMM is somehow special case and read-back is ok, or if DRA7's memory
    barriers do not work correctly.
    
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b248698c58ba4521152eafc393068d379e43823
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Aug 13 13:19:52 2018 +0000

    powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak
    
    [ Upstream commit 803d690e68f0c5230183f1a42c7d50a41d16e380 ]
    
    When a process allocates a hugepage, the following leak is
    reported by kmemleak. This is a false positive which is
    due to the pointer to the table being stored in the PGD
    as physical memory address and not virtual memory pointer.
    
    unreferenced object 0xc30f8200 (size 512):
      comm "mmap", pid 374, jiffies 4872494 (age 627.630s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<e32b68da>] huge_pte_alloc+0xdc/0x1f8
        [<9e0df1e1>] hugetlb_fault+0x560/0x8f8
        [<7938ec6c>] follow_hugetlb_page+0x14c/0x44c
        [<afbdb405>] __get_user_pages+0x1c4/0x3dc
        [<b8fd7cd9>] __mm_populate+0xac/0x140
        [<3215421e>] vm_mmap_pgoff+0xb4/0xb8
        [<c148db69>] ksys_mmap_pgoff+0xcc/0x1fc
        [<4fcd760f>] ret_from_syscall+0x0/0x38
    
    See commit a984506c542e2 ("powerpc/mm: Don't report PUDs as
    memory leaks when using kmemleak") for detailed explanation.
    
    To fix that, this patch tells kmemleak to ignore the allocated
    hugepage table.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb4dd7a9eb62b494cd9d5196b307bac74ce30296
Author: Sean Paul <seanpaul@chromium.org>
Date:   Wed Aug 29 13:49:47 2018 -0400

    drm/msm: dpu: Allow planes to extend past active display
    
    [ Upstream commit 96fc56a775c1e44c0e3c0119f2cd3d77431c4569 ]
    
    The atomic_check is a bit too aggressive with respect to planes which
    leave the active area. This caused a bunch of log spew when the cursor
    got to the edge of the screen and stopped it from going all the way.
    
    This patch removes the conservative bounds checks from atomic and clips
    the dst rect such that we properly display planes which go off the
    screen.
    
    Changes in v2:
    - Apply the clip to src as well (taking into account scaling)
    Changes in v3:
    - Use drm_atomic_helper_check_plane_state() to clip src/dst
    
    Cc: Sravanthi Kollukuduru <skolluku@codeaurora.org>
    Cc: Jeykumar Sankaran <jsanka@codeaurora.org>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 721b54a6d6a66deedde122648f090d9a06d13c74
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Thu Aug 16 16:36:16 2018 -0700

    drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type'
    
    [ Upstream commit 2c043eeffea4813b8f569e84b46035a08de5eb47 ]
    
    We got a bug report that this function oopses when trying to do a kasprintf().
    
    PC is at string+0x2c/0x60
    LR is at vsnprintf+0x28c/0x4ec
    pc : [<ffffff80088d35d8>] lr : [<ffffff80088d5fc4>] pstate: a0c00049
    sp : ffffff80095fb540
    x29: ffffff80095fb540 x28: ffffff8008ad42bc
    x27: 00000000ffffffd8 x26: 0000000000000000
    x25: ffffff8008c216c8 x24: 0000000000000000
    x23: 0000000000000000 x22: ffffff80095fb720
    x21: 0000000000000000 x20: ffffff80095fb720
    x19: ffffff80095fb6f0 x18: 000000000000000a
    x17: 00000000b42ba473 x16: ffffff800805bbe8
    x15: 00000000000a157d x14: 000000000000000c
    x13: 0000000000000000 x12: 0000ffff0000000f
    x11: 0000000000000003 x10: 0000000000000001
    x9 : 0000000000000040 x8 : 000000000000001c
    x7 : ffffffffffffffff x6 : 0000000000000000
    x5 : 0000000000000228 x4 : 0000000000000000
    x3 : ffff0a00ffffff04 x2 : 0000000000007961
    x1 : 0000000000000000 x0 : 0000000000000000
    Process kworker/3:1 (pid: 61, stack limit = 0xffffff80095f8000)
    Call trace:
    Exception stack(0xffffff80095fb400 to 0xffffff80095fb540)
    b400: 0000000000000000 0000000000000000 0000000000007961 ffff0a00ffffff04
    b420: 0000000000000000 0000000000000228 0000000000000000 ffffffffffffffff
    b440: 000000000000001c 0000000000000040 0000000000000001 0000000000000003
    b460: 0000ffff0000000f 0000000000000000 000000000000000c 00000000000a157d
    b480: ffffff800805bbe8 00000000b42ba473 000000000000000a ffffff80095fb6f0
    b4a0: ffffff80095fb720 0000000000000000 ffffff80095fb720 0000000000000000
    b4c0: 0000000000000000 ffffff8008c216c8 0000000000000000 00000000ffffffd8
    b4e0: ffffff8008ad42bc ffffff80095fb540 ffffff80088d5fc4 ffffff80095fb540
    b500: ffffff80088d35d8 00000000a0c00049 ffffff80095fb550 ffffff80080d06a4
    b520: ffffffffffffffff ffffff80088d5e0c ffffff80095fb540 ffffff80088d35d8
    [<ffffff80088d35d8>] string+0x2c/0x60
    [<ffffff80088d5fc4>] vsnprintf+0x28c/0x4ec
    [<ffffff80083973b8>] kvasprintf+0x68/0x100
    [<ffffff800839755c>] kasprintf+0x60/0x80
    [<ffffff800849cc24>] drm_encoder_init+0x134/0x164
    [<ffffff80084d9a7c>] dpu_encoder_init+0x60/0x94
    [<ffffff80084eced0>] _dpu_kms_drm_obj_init+0xa0/0x424
    [<ffffff80084ed870>] dpu_kms_hw_init+0x61c/0x6bc
    [<ffffff80084f7614>] msm_drm_bind+0x380/0x67c
    [<ffffff80085114e4>] try_to_bring_up_master+0x228/0x264
    [<ffffff80085116e8>] component_master_add_with_match+0x90/0xc0
    [<ffffff80084f722c>] msm_pdev_probe+0x260/0x2c8
    [<ffffff800851a910>] platform_drv_probe+0x58/0xa8
    [<ffffff80085185c8>] driver_probe_device+0x2d8/0x40c
    [<ffffff8008518928>] __device_attach_driver+0xd4/0x10c
    [<ffffff800851644c>] bus_for_each_drv+0xb4/0xd0
    [<ffffff8008518230>] __device_attach+0xd0/0x160
    [<ffffff8008518984>] device_initial_probe+0x24/0x30
    [<ffffff800851744c>] bus_probe_device+0x38/0x98
    [<ffffff8008517aac>] deferred_probe_work_func+0x144/0x148
    [<ffffff80080c8654>] process_one_work+0x218/0x3bc
    [<ffffff80080c883c>] process_scheduled_works+0x44/0x48
    [<ffffff80080c95bc>] worker_thread+0x288/0x32c
    [<ffffff80080cea30>] kthread+0x134/0x13c
    [<ffffff8008084750>] ret_from_fork+0x10/0x18
    Code: 910003fd 2a0403e6 eb0400ff 54000060 (38646845)
    
    Looking at the code I see that drm_encoder_init() is called from the DPU
    code with 'DRM_MODE_CONNECTOR_DSI' passed in as the 'encoder_type'
    argument (follow from _dpu_kms_initialize_dsi()). That corresponds to
    the integer 16. That is then indexed into drm_encoder_enum_list in
    drm_encoder_init() to look up the name of the encoder. If you're still
    following along, that's an encoder not a connector! We really want to
    use DRM_MODE_ENCODER_DSI (integer 6) instead of DRM_MODE_CONNECTOR_DSI
    here, or we'll go out of bounds of the encoder array. Pass the right
    thing and everything is fine.
    
    Cc: Jeykumar Sankaran <jsanka@codeaurora.org>
    Cc: Jordan Crouse <jcrouse@codeaurora.org>
    Cc: Sean Paul <seanpaul@chromium.org>
    Fixes: 25fdd5933e4c (drm/msm: Add SDM845 DPU support)
    Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9565e7c02b8b0e3b3b5fae13a89ad1438cf57161
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Tue Jul 31 22:45:32 2018 +0200

    drm/msm/gpu: fix parameters in function msm_gpu_crashstate_capture
    
    [ Upstream commit 6969019f65b43afb6da6a26f1d9e55bbdfeebcd5 ]
    
    When CONFIG_DEV_COREDUMP isn't defined msm_gpu_crashstate_capture
    doesn't pass the correct parameters.
    drivers/gpu/drm/msm/msm_gpu.c: In function ‘recover_worker’:
    drivers/gpu/drm/msm/msm_gpu.c:479:34: error: passing argument 2 of ‘msm_gpu_crashstate_capture’ from incompatible pointer type [-Werror=incompatible-pointer-types]
      msm_gpu_crashstate_capture(gpu, submit, comm, cmd);
                                      ^~~~~~
    drivers/gpu/drm/msm/msm_gpu.c:388:13: note: expected ‘char *’ but argument is of type ‘struct msm_gem_submit *’
     static void msm_gpu_crashstate_capture(struct msm_gpu *gpu, char *comm,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/gpu/drm/msm/msm_gpu.c:479:2: error: too many arguments to function ‘msm_gpu_crashstate_capture’
      msm_gpu_crashstate_capture(gpu, submit, comm, cmd);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/gpu/drm/msm/msm_gpu.c:388:13: note: declared here
     static void msm_gpu_crashstate_capture(struct msm_gpu *gpu, char *comm,
    
    In current code the function msm_gpu_crashstate_capture parameters.
    
    Fixes: cdb95931dea3 ("drm/msm/gpu: Add the buffer objects from the submit to the crash dump")
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Reviewed-By: Jordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0f8599196383306d693b60f85ceaa80cfafd318
Author: Daniel Axtens <dja@axtens.net>
Date:   Mon Oct 1 16:21:51 2018 +1000

    powerpc/nohash: fix undefined behaviour when testing page size support
    
    [ Upstream commit f5e284803a7206d43e26f9ffcae5de9626d95e37 ]
    
    When enumerating page size definitions to check hardware support,
    we construct a constant which is (1U << (def->shift - 10)).
    
    However, the array of page size definitions is only initalised for
    various MMU_PAGE_* constants, so it contains a number of 0-initialised
    elements with def->shift == 0. This means we end up shifting by a
    very large number, which gives the following UBSan splat:
    
    ================================================================================
    UBSAN: Undefined behaviour in /home/dja/dev/linux/linux/arch/powerpc/mm/tlb_nohash.c:506:21
    shift exponent 4294967286 is too large for 32-bit type 'unsigned int'
    CPU: 0 PID: 0 Comm: swapper Not tainted 4.19.0-rc3-00045-ga604f927b012-dirty #6
    Call Trace:
    [c00000000101bc20] [c000000000a13d54] .dump_stack+0xa8/0xec (unreliable)
    [c00000000101bcb0] [c0000000004f20a8] .ubsan_epilogue+0x18/0x64
    [c00000000101bd30] [c0000000004f2b10] .__ubsan_handle_shift_out_of_bounds+0x110/0x1a4
    [c00000000101be20] [c000000000d21760] .early_init_mmu+0x1b4/0x5a0
    [c00000000101bf10] [c000000000d1ba28] .early_setup+0x100/0x130
    [c00000000101bf90] [c000000000000528] start_here_multiplatform+0x68/0x80
    ================================================================================
    
    Fix this by first checking if the element exists (shift != 0) before
    constructing the constant.
    
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 270cbdee88789a093ed8cb3a49d70b5e4a7b7dec
Author: Fabio Estevam <fabio.estevam@nxp.com>
Date:   Mon Sep 10 14:45:23 2018 -0300

    ARM: imx_v6_v7_defconfig: Select CONFIG_TMPFS_POSIX_ACL
    
    [ Upstream commit 35d3cbe84544da74e39e1cec01374092467e3119 ]
    
    Andreas Müller reports:
    
    "Fixes:
    
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[220]: Failed to apply ACL on /dev/v4l-subdev0: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[224]: Failed to apply ACL on /dev/v4l-subdev1: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[215]: Failed to apply ACL on /dev/v4l-subdev10: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[228]: Failed to apply ACL on /dev/v4l-subdev2: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[232]: Failed to apply ACL on /dev/v4l-subdev5: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[217]: Failed to apply ACL on /dev/v4l-subdev11: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[214]: Failed to apply ACL on /dev/dri/card1: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[216]: Failed to apply ACL on /dev/v4l-subdev8: Operation not supported
    | Sep 04 09:05:10 imx6qdl-variscite-som systemd-udevd[226]: Failed to apply ACL on /dev/v4l-subdev9: Operation not supported
    
    and nasty follow-ups: Starting weston from sddm as unpriviledged user fails
    with some hints on missing access rights."
    
    Select the CONFIG_TMPFS_POSIX_ACL option to fix these issues.
    
    Reported-by: Andreas Müller <schnitzeltony@gmail.com>
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Acked-by: Otavio Salvador <otavio@ossystems.com.br>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17a5d018f68bca43d28b44eb0fffcb4816a7ce36
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Oct 8 17:22:28 2018 +0100

    drm/amdgpu/powerplay: fix missing break in switch statements
    
    [ Upstream commit 14b284832e7dea6f54f0adfd7bed105548b94e57 ]
    
    There are several switch statements that are missing break statements.
    Add missing breaks to handle any fall-throughs corner cases.
    
    Detected by CoverityScan, CID#1457175 ("Missing break in switch")
    
    Fixes: 18aafc59b106 ("drm/amd/powerplay: implement fw related smu interface for iceland.")
    Acked-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05dff1e2018b109df5d02a1f9574547a5b5c898b
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jul 24 08:27:19 2018 -0500

    drm/nouveau/secboot/acr: fix memory leak
    
    [ Upstream commit 74a07c0a59fa372b069d879971ba4d9e341979cf ]
    
    In case memory resources for *bl_desc* were allocated, release
    them before return.
    
    Addresses-Coverity-ID: 1472021 ("Resource leak")
    Fixes: 0d466901552a ("drm/nouveau/secboot/acr: Remove VLA usage")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Reviewed-by: John Hubbard <jhubbard@nvidia.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 784c2eb37ba60217fdd2230c8fdf50b9494dcd0f
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Aug 29 01:18:15 2018 +0900

    tracing/kprobes: Check the probe on unloaded module correctly
    
    [ Upstream commit 59158ec4aef7d44be51a6f3e7e17fc64c32604eb ]
    
    Current kprobe event doesn't checks correctly whether the
    given event is on unloaded module or not. It just checks
    the event has ":" in the name.
    
    That is not enough because if we define a probe on non-exist
    symbol on loaded module, it allows to define that (with
    warning message)
    
    To ensure it correctly, this searches the module name on
    loaded module list and only if there is not, it allows to
    define it. (this event will be available when the target
    module is loaded)
    
    Link: http://lkml.kernel.org/r/153547309528.26502.8300278470528281328.stgit@devbox
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ecd146b9189f75df523897b78efb39b024e2490
Author: Miles Chen <miles.chen@mediatek.com>
Date:   Mon Oct 8 10:39:17 2018 +0800

    tty: check name length in tty_find_polling_driver()
    
    [ Upstream commit 33a1a7be198657c8ca26ad406c4d2a89b7162bcc ]
    
    The issue is found by a fuzzing test.
    If tty_find_polling_driver() recevies an incorrect input such as
    ',,' or '0b', the len becomes 0 and strncmp() always return 0.
    In this case, a null p->ops->poll_init() is called and it causes a kernel
    panic.
    
    Fix this by checking name length against zero in tty_find_polling_driver().
    
    $echo ,, > /sys/module/kgdboc/parameters/kgdboc
    [   20.804451] WARNING: CPU: 1 PID: 104 at drivers/tty/serial/serial_core.c:457
    uart_get_baud_rate+0xe8/0x190
    [   20.804917] Modules linked in:
    [   20.805317] CPU: 1 PID: 104 Comm: sh Not tainted 4.19.0-rc7ajb #8
    [   20.805469] Hardware name: linux,dummy-virt (DT)
    [   20.805732] pstate: 20000005 (nzCv daif -PAN -UAO)
    [   20.805895] pc : uart_get_baud_rate+0xe8/0x190
    [   20.806042] lr : uart_get_baud_rate+0xc0/0x190
    [   20.806476] sp : ffffffc06acff940
    [   20.806676] x29: ffffffc06acff940 x28: 0000000000002580
    [   20.806977] x27: 0000000000009600 x26: 0000000000009600
    [   20.807231] x25: ffffffc06acffad0 x24: 00000000ffffeff0
    [   20.807576] x23: 0000000000000001 x22: 0000000000000000
    [   20.807807] x21: 0000000000000001 x20: 0000000000000000
    [   20.808049] x19: ffffffc06acffac8 x18: 0000000000000000
    [   20.808277] x17: 0000000000000000 x16: 0000000000000000
    [   20.808520] x15: ffffffffffffffff x14: ffffffff00000000
    [   20.808757] x13: ffffffffffffffff x12: 0000000000000001
    [   20.809011] x11: 0101010101010101 x10: ffffff880d59ff5f
    [   20.809292] x9 : ffffff880d59ff5e x8 : ffffffc06acffaf3
    [   20.809549] x7 : 0000000000000000 x6 : ffffff880d59ff5f
    [   20.809803] x5 : 0000000080008001 x4 : 0000000000000003
    [   20.810056] x3 : ffffff900853e6b4 x2 : dfffff9000000000
    [   20.810693] x1 : ffffffc06acffad0 x0 : 0000000000000cb0
    [   20.811005] Call trace:
    [   20.811214]  uart_get_baud_rate+0xe8/0x190
    [   20.811479]  serial8250_do_set_termios+0xe0/0x6f4
    [   20.811719]  serial8250_set_termios+0x48/0x54
    [   20.811928]  uart_set_options+0x138/0x1bc
    [   20.812129]  uart_poll_init+0x114/0x16c
    [   20.812330]  tty_find_polling_driver+0x158/0x200
    [   20.812545]  configure_kgdboc+0xbc/0x1bc
    [   20.812745]  param_set_kgdboc_var+0xb8/0x150
    [   20.812960]  param_attr_store+0xbc/0x150
    [   20.813160]  module_attr_store+0x40/0x58
    [   20.813364]  sysfs_kf_write+0x8c/0xa8
    [   20.813563]  kernfs_fop_write+0x154/0x290
    [   20.813764]  vfs_write+0xf0/0x278
    [   20.813951]  __arm64_sys_write+0x84/0xf4
    [   20.814400]  el0_svc_common+0xf4/0x1dc
    [   20.814616]  el0_svc_handler+0x98/0xbc
    [   20.814804]  el0_svc+0x8/0xc
    [   20.822005] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
    [   20.826913] Mem abort info:
    [   20.827103]   ESR = 0x84000006
    [   20.827352]   Exception class = IABT (current EL), IL = 16 bits
    [   20.827655]   SET = 0, FnV = 0
    [   20.827855]   EA = 0, S1PTW = 0
    [   20.828135] user pgtable: 4k pages, 39-bit VAs, pgdp = (____ptrval____)
    [   20.828484] [0000000000000000] pgd=00000000aadee003, pud=00000000aadee003, pmd=0000000000000000
    [   20.829195] Internal error: Oops: 84000006 [#1] SMP
    [   20.829564] Modules linked in:
    [   20.829890] CPU: 1 PID: 104 Comm: sh Tainted: G        W         4.19.0-rc7ajb #8
    [   20.830545] Hardware name: linux,dummy-virt (DT)
    [   20.830829] pstate: 60000085 (nZCv daIf -PAN -UAO)
    [   20.831174] pc :           (null)
    [   20.831457] lr : serial8250_do_set_termios+0x358/0x6f4
    [   20.831727] sp : ffffffc06acff9b0
    [   20.831936] x29: ffffffc06acff9b0 x28: ffffff9008d7c000
    [   20.832267] x27: ffffff900969e16f x26: 0000000000000000
    [   20.832589] x25: ffffff900969dfb0 x24: 0000000000000000
    [   20.832906] x23: ffffffc06acffad0 x22: ffffff900969e160
    [   20.833232] x21: 0000000000000000 x20: ffffffc06acffac8
    [   20.833559] x19: ffffff900969df90 x18: 0000000000000000
    [   20.833878] x17: 0000000000000000 x16: 0000000000000000
    [   20.834491] x15: ffffffffffffffff x14: ffffffff00000000
    [   20.834821] x13: ffffffffffffffff x12: 0000000000000001
    [   20.835143] x11: 0101010101010101 x10: ffffff880d59ff5f
    [   20.835467] x9 : ffffff880d59ff5e x8 : ffffffc06acffaf3
    [   20.835790] x7 : 0000000000000000 x6 : ffffff880d59ff5f
    [   20.836111] x5 : c06419717c314100 x4 : 0000000000000007
    [   20.836419] x3 : 0000000000000000 x2 : 0000000000000000
    [   20.836732] x1 : 0000000000000001 x0 : ffffff900969df90
    [   20.837100] Process sh (pid: 104, stack limit = 0x(____ptrval____))
    [   20.837396] Call trace:
    [   20.837566]            (null)
    [   20.837816]  serial8250_set_termios+0x48/0x54
    [   20.838089]  uart_set_options+0x138/0x1bc
    [   20.838570]  uart_poll_init+0x114/0x16c
    [   20.838834]  tty_find_polling_driver+0x158/0x200
    [   20.839119]  configure_kgdboc+0xbc/0x1bc
    [   20.839380]  param_set_kgdboc_var+0xb8/0x150
    [   20.839658]  param_attr_store+0xbc/0x150
    [   20.839920]  module_attr_store+0x40/0x58
    [   20.840183]  sysfs_kf_write+0x8c/0xa8
    [   20.840183]  sysfs_kf_write+0x8c/0xa8
    [   20.840440]  kernfs_fop_write+0x154/0x290
    [   20.840702]  vfs_write+0xf0/0x278
    [   20.840942]  __arm64_sys_write+0x84/0xf4
    [   20.841209]  el0_svc_common+0xf4/0x1dc
    [   20.841471]  el0_svc_handler+0x98/0xbc
    [   20.841713]  el0_svc+0x8/0xc
    [   20.842057] Code: bad PC value
    [   20.842764] ---[ end trace a8835d7de79aaadf ]---
    [   20.843134] Kernel panic - not syncing: Fatal exception
    [   20.843515] SMP: stopping secondary CPUs
    [   20.844289] Kernel Offset: disabled
    [   20.844634] CPU features: 0x0,21806002
    [   20.844857] Memory Limit: none
    [   20.845172] ---[ end Kernel panic - not syncing: Fatal exception ]---
    
    Signed-off-by: Miles Chen <miles.chen@mediatek.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 234bee8bb3a44fa1088543f42cb5e6be5614d8ec
Author: Sam Bobroff <sbobroff@linux.ibm.com>
Date:   Wed Sep 12 11:23:20 2018 +1000

    powerpc/eeh: Fix possible null deref in eeh_dump_dev_log()
    
    [ Upstream commit f9bc28aedfb5bbd572d2d365f3095c1becd7209b ]
    
    If an error occurs during an unplug operation, it's possible for
    eeh_dump_dev_log() to be called when edev->pdn is null, which
    currently leads to dereferencing a null pointer.
    
    Handle this by skipping the error log for those devices.
    
    Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32f2674c7c06e3772959847745264cbc037f6951
Author: Joel Stanley <joel@jms.id.au>
Date:   Thu Oct 11 13:13:03 2018 +1030

    powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS
    
    [ Upstream commit 960e30029863db95ec79a71009272d4661db5991 ]
    
    Ever since commit 15a3204d24a3 ("powerpc/64s: Set assembler machine type
    to POWER4") we force -mpower4 to be passed to the assembler
    irrespective of the CFLAGS used (for Book3s 64).
    
    When building a powerpc64 kernel with clang, clang will not add -many
    to the assembler flags, so any instructions that the compiler has
    generated that are not available on power4 will cause an error:
    
      /usr/bin/as -a64 -mppc64 -mlittle-endian -mpower8 \
       -I ./arch/powerpc/include -I ./arch/powerpc/include/generated \
       -I ./include -I ./arch/powerpc/include/uapi \
       -I ./arch/powerpc/include/generated/uapi -I ./include/uapi \
       -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc \
       -maltivec -mpower4 -o init/do_mounts.o /tmp/do_mounts-3b0a3d.s
      /tmp/do_mounts-51ce54.s:748: Error: unrecognized opcode: `isel'
    
    GCC does include -many, so the GCC driven gas call will succeed:
    
      as -v -I ./arch/powerpc/include -I ./arch/powerpc/include/generated -I
      ./include -I ./arch/powerpc/include/uapi
      -I ./arch/powerpc/include/generated/uapi -I ./include/uapi
      -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc
       -a64 -mpower8 -many -mlittle -maltivec -mpower4 -o init/do_mounts.o
    
    Note that isel is power7 and above for IBM CPUs. GCC only generates it
    for Power9 and above, but the above test was run against the clang
    generated assembly.
    
    Peter Bergner explains:
    
      When using -many -mpower4, gas will first try and find a matching
      power4 mnemonic and failing that, it will then allow any valid
      mnemonic that gas knows about. GCC's use of -many predates me
      though.
    
      IIRC, Alan looked at trying to remove it, but I forget why he
      didn't. Could be either a gcc or gas issue at the time. I'm not sure
      whether issue still exists or not. He and I have modified how gas
      works internally a fair amount since he tried removing gcc use of
      -many.
    
      I will also note that when using -many, gas will choose the first
      mnemonic that matches in the mnemonic table and we have (mostly)
      sorted the table so that server mnemonics show up earlier in the
      table than other mnemonics, so they'll be seen/chosen first.
    
    By explicitly setting -many we can build with Clang and GCC while
    retaining the -mpower4 option.
    
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7dba42c381039013d0308ebedf11c3e6bdc278c
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Oct 15 11:16:58 2018 -0700

    Input: wm97xx-ts - fix exit path
    
    [ Upstream commit a3f7c3fcf60868c1e90671df5d0cf9be5900a09b ]
    
    Loading then unloading wm97xx-ts.ko when CONFIG_AC97_BUS=m
    causes a WARNING: from drivers/base/driver.c:
    
    Unexpected driver unregister!
    WARNING: CPU: 0 PID: 1709 at ../drivers/base/driver.c:193 driver_unregister+0x30/0x40
    
    Fix this by only calling driver_unregister() with the same
    condition that driver_register() is called.
    
    Fixes: ae9d1b5fbd7b ("Input: wm97xx: add new AC97 bus support")
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 139dde1e967d3aa64d4fc4d10fced9ba5d95431a
Author: Su Sung Chung <Su.Chung@amd.com>
Date:   Thu Sep 20 15:03:27 2018 -0400

    drm/amd/display: fix bug of accessing invalid memory
    
    [ Upstream commit 43c3ff27a47d83d153c4adc088243ba594582bf5 ]
    
    [Why]
    A loop inside of build_evenly_distributed_points function that traverse through
    the array of points become an infinite loop when m_GammaUpdates does not
    get assigned to any value.
    
    [How]
    In DMColor, clear m_gammaIsValid bit just before writting all Zeromem for
    m_GammaUpdates, to prevent calling build_evenly_distributed_points
    before m_GammaUpdates gets assigned to some value.
    
    Signed-off-by: Su Sung Chung <Su.Chung@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56e4367f7c43dc63f875a4bcd2057b5fbb88f5fd
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Thu Aug 2 09:25:55 2018 +0000

    powerpc/mm: fix always true/false warning in slice.c
    
    [ Upstream commit 37e9c674e7e6f445e12cb1151017bd4bacdd1e2d ]
    
    This patch fixes the following warnings (obtained with make W=1).
    
    arch/powerpc/mm/slice.c: In function 'slice_range_to_mask':
    arch/powerpc/mm/slice.c:73:12: error: comparison is always true due to limited range of data type [-Werror=type-limits]
      if (start < SLICE_LOW_TOP) {
                ^
    arch/powerpc/mm/slice.c:81:20: error: comparison is always false due to limited range of data type [-Werror=type-limits]
      if ((start + len) > SLICE_LOW_TOP) {
                        ^
    arch/powerpc/mm/slice.c: In function 'slice_mask_for_free':
    arch/powerpc/mm/slice.c:136:17: error: comparison is always true due to limited range of data type [-Werror=type-limits]
      if (high_limit <= SLICE_LOW_TOP)
                     ^
    arch/powerpc/mm/slice.c: In function 'slice_check_range_fits':
    arch/powerpc/mm/slice.c:185:12: error: comparison is always true due to limited range of data type [-Werror=type-limits]
      if (start < SLICE_LOW_TOP) {
                ^
    arch/powerpc/mm/slice.c:195:39: error: comparison is always false due to limited range of data type [-Werror=type-limits]
      if (SLICE_NUM_HIGH && ((start + len) > SLICE_LOW_TOP)) {
                                           ^
    arch/powerpc/mm/slice.c: In function 'slice_scan_available':
    arch/powerpc/mm/slice.c:306:11: error: comparison is always true due to limited range of data type [-Werror=type-limits]
      if (addr < SLICE_LOW_TOP) {
               ^
    arch/powerpc/mm/slice.c: In function 'get_slice_psize':
    arch/powerpc/mm/slice.c:709:11: error: comparison is always true due to limited range of data type [-Werror=type-limits]
      if (addr < SLICE_LOW_TOP) {
               ^
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 287deb228d32bf1d361a60420dabb7f0742f807c
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Aug 15 21:29:45 2018 +1000

    powerpc/mm: Fix page table dump to work on Radix
    
    [ Upstream commit 0d923962ab69c27cca664a2d535e90ef655110ca ]
    
    When we're running on Book3S with the Radix MMU enabled the page table
    dump currently prints the wrong addresses because it uses the wrong
    start address.
    
    Fix it to use PAGE_OFFSET rather than KERN_VIRT_START.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63880b2f99747c04e12fba6588d0222dd90323f9
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed Aug 29 21:56:56 2018 +1000

    powerpc/64/module: REL32 relocation range check
    
    [ Upstream commit b851ba02a6f3075f0f99c60c4bc30a4af80cf428 ]
    
    The recent module relocation overflow crash demonstrated that we
    have no range checking on REL32 relative relocations. This patch
    implements a basic check, the same kernel that previously oopsed
    and rebooted now continues with some of these errors when loading
    the module:
    
      module_64: x_tables: REL32 527703503449812 out of range!
    
    Possibly other relocations (ADDR32, REL16, TOC16, etc.) should also have
    overflow checks.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54de3d7d55dc70fe7ce8ccd1b7e09831881a730a
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Sat Oct 13 09:16:22 2018 +0000

    powerpc/traps: restore recoverability of machine_check interrupts
    
    [ Upstream commit daf00ae71dad8aa05965713c62558aeebf2df48e ]
    
    commit b96672dd840f ("powerpc: Machine check interrupt is a non-
    maskable interrupt") added a call to nmi_enter() at the beginning of
    machine check restart exception handler. Due to that, in_interrupt()
    always returns true regardless of the state before entering the
    exception, and die() panics even when the system was not already in
    interrupt.
    
    This patch calls nmi_exit() before calling die() in order to restore
    the interrupt state we had before calling nmi_enter()
    
    Fixes: b96672dd840f ("powerpc: Machine check interrupt is a non-maskable interrupt")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>