commit cfc8d40be91d767121a6f8c148db43c87be349ed
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 21 12:05:48 2018 +0100

    Linux 4.15.12

commit c3306c7f8f97184bcccea7bd1a3a58419b848669
Author: Al Cooper <al.cooper@broadcom.com>
Date:   Wed Dec 27 14:28:50 2017 -0500

    phy: phy-brcm-usb-init: Power down USB 3.0 PHY when XHCI disabled
    
    commit cd6f769fdea7ff7d77a6cc97658c60ca0b836d0e upstream.
    
    Set PHY3_IDDQ_OVERRIDE in the xhci uninit routine. This will save
    additional power when the XHCI driver is not enabled.
    
    Fixes: 49859e55e364 ("phy: usb: phy-brcm-usb: Add Broadcom STB USB phy driver")
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fb7cf9b1ca0fa06cc63a514bf639529fbd95d49
Author: Al Cooper <al.cooper@broadcom.com>
Date:   Wed Dec 27 14:28:51 2017 -0500

    phy: phy-brcm-usb-init: DRD mode can cause crash on startup
    
    commit 0aa0c12262fd848c48448c39ff6c1c097be00dd4 upstream.
    
    This is caused by a bug in the BDC core. When the BDC core comes
    out of reset and it's not selected, it gets a backup clock. When
    the BDC core is selected, it get's the main clock. If HOST mode
    is then selected the BDC core has the main clock shut off but
    the backup clock is not restored.
    
    The failure scenario and cause are as follows:
    - DRD mode is active
    - Device mode is selected first in bootloader
    - When host mode is now selected, the clock to the BDC is cut off.
    - BDC registers are inaccessible and therefore the BDC driver
      crashes upon Linux boot.
    
    The fix is to have the phy driver always force a BDC reset on
    startup.
    
    Fixes: 49859e55e364 ("phy: usb: phy-brcm-usb: Add Broadcom STB USB phy driver")
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 048fd682b2b8a43c50a0efa7108bab644cdcdabb
Author: Al Cooper <al.cooper@broadcom.com>
Date:   Wed Dec 27 14:28:49 2017 -0500

    phy: phy-brcm-usb-init: Some Low Speed keyboards fail on 7271
    
    commit 279a0cd0e02aa1e506d9acf94a7ecb530821359c upstream.
    
    Enable the the Low Speed Keep Alive signal on the 7271b0 by setting
    the LS_KEEP_ALIVE bit in the USB CTRL OBRIDGE register otherwise
    some Dell Low Speed keyboards fail.
    
    Also do a little cleanup of the EBRIDGE ESTOP_SCB_REQ bit. Since
    this is only used on one platform, remove it from the platform
    tables and just use "if (family == ").
    
    Fixes: 49859e55e364 ("phy: usb: phy-brcm-usb: Add Broadcom STB USB phy driver")
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43bcdded80fdf5cc99390aaf0cf15746258e2d31
Author: Al Cooper <alcooperx@gmail.com>
Date:   Wed Dec 27 14:28:48 2017 -0500

    phy: phy-brcm-usb: Fix two DT properties to match bindings doc
    
    commit 5e498ff117c19fd80181b5bb09ecb024b552ece8 upstream.
    
    Change "brcm,has_xhci" and "brcm,has_eohci" device tree properties
    to the preferred "brcm,has-xhci" and "brcm,has-eohci". This also
    matches the existing device tree bindings document.
    
    Fixes: 49859e55e364 ("phy: usb: phy-brcm-usb: Add Broadcom STB USB phy driver")
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2007a7097ce1341371abad66d9f898f083d42fbf
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Fri Jan 12 20:00:56 2018 +0900

    usb: gadget: udc: renesas_usb3: fix oops in renesas_usb3_remove()
    
    commit e3190868e5f52fb26544f16463593d54ce46ce61 upstream.
    
    This patch fixes an issue that the renesas_usb3_remove() causes
    NULL pointer dereference because the usb3_to_dev() macro will use
    the gadget instance and it will be deleted before.
    
    Fixes: cf06df3fae28 ("usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able()")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95918af96116016b92826f29591a3665391286b5
Author: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Date:   Mon Dec 18 16:14:36 2017 +0100

    usb: dwc3: of-simple: fix oops by unbalanced clk disable call
    
    commit bff52352e0ccc2481f2b6b0d612ff8ff56c50f3a upstream.
    
    dwc3_of_simple_dev_pm_ops has never been used since commit a0d8c4cfdf31
    ("usb: dwc3: of-simple: set dev_pm_ops"), but this commit has brought
    and oops when unbind the device due this sequence:
    
      dwc3_of_simple_remove
       -> clk_disable ...
          -> pm_runtime_put_sync
             -> dwc3_of_simple_runtime_suspend
                -> clk_disable (again)
    
    This double call to clk_core_disable causes a kernel oops like this:
    
     WARNING: CPU: 1 PID: 4022 at drivers/clk/clk.c:656 clk_core_disable+0x78/0x80
     CPU: 1 PID: 4022 Comm: bash Not tainted 4.15.0-rc4+ #44
     Hardware name: Google Kevin (DT)
     pstate: 80000085 (Nzcv daIf -PAN -UAO)
     pc : clk_core_disable+0x78/0x80
     lr : clk_core_disable_lock+0x20/0x38
     sp : ffff00000bbf3a90
     ...
     Call trace:
      clk_core_disable+0x78/0x80
      clk_disable+0x1c/0x30
      dwc3_of_simple_runtime_suspend+0x30/0x50
      pm_generic_runtime_suspend+0x28/0x40
    
    This patch fixes the unbalanced clk disable call by setting the num_clocks
    variable to zero once the clocks were disabled.
    
    Fixes: a0d8c4cfdf31 ("usb: dwc3: of-simple: set dev_pm_ops")
    Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9fac2b8326d1533c52fe1f32fde5050b7548666
Author: Manu Gautam <mgautam@codeaurora.org>
Date:   Thu Jan 18 16:54:30 2018 +0530

    usb: dwc3: core: Power-off core/PHYs on system_suspend in host mode
    
    commit c4a5153e87fdf6805f63ff57556260e2554155a5 upstream.
    
    Commit 689bf72c6e0d ("usb: dwc3: Don't reinitialize core during
    host bus-suspend/resume") updated suspend/resume routines to not
    power_off and reinit PHYs/core for host mode.
    It broke platforms that rely on DWC3 core to power_off PHYs to
    enter low power state on system suspend.
    
    Perform dwc3_core_exit/init only during host mode system_suspend/
    resume to addresses power regression from above mentioned patch
    and also allow USB session to stay connected across
    runtime_suspend/resume in host mode. While at it also replace
    existing checks for HOST only dr_mode with current_dr_role to
    have similar core driver behavior for both Host-only and DRD+Host
    configurations.
    
    Fixes: 689bf72c6e0d ("usb: dwc3: Don't reinitialize core during host bus-suspend/resume")
    Reviewed-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cad33fd60fdeac2587802abdb51eb1a3cbeac841
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Fri Feb 2 13:21:35 2018 -0800

    usb: dwc3: Fix GDBGFIFOSPACE_TYPE values
    
    commit b16ea8b9492e99e03b1269fe93ebdbf8e4eabf8a upstream.
    
    The FIFO/Queue type values are incorrect. Correct them according to
    DWC_usb3 programming guide section 1.2.27 (or DWC_usb31 section 1.2.25).
    
    Additionally, this patch includes ProtocolStatusQ and AuxEventQ types.
    
    Fixes: cf6d867d3b57 ("usb: dwc3: core: add fifo space helper")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41d3763d99424730f62e5dd67567f961e5a9d34e
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Jan 23 09:35:14 2018 +0000

    USB: gadget: udc: Add missing platform_device_put() on error in bdc_pci_probe()
    
    commit 8874ae5f15f3feef3b4a415b9aed51edcf449aa1 upstream.
    
    Add the missing platform_device_put() before return from bdc_pci_probe()
    in the platform_device_add_resources() error handling case.
    
    Fixes: efed421a94e6 ("usb: gadget: Add UDC driver for Broadcom USB3.0 device controller IP BDC")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f21951e274023d95bd0c97409b3bf22b97f4c0ba
Author: Amelie Delaunay <amelie.delaunay@st.com>
Date:   Thu Mar 1 11:05:34 2018 +0100

    dt-bindings: usb: fix the STM32F7 DWC2 OTG HS core binding
    
    commit 4c437920fa216f66f6a5d469cae2a0360cc2d9c7 upstream.
    
    This patch fixes binding documentation for DWC2 controller in HS mode
    found on STMicroelectronics STM32F7 SoC.
    The v2 former patch [1] had been acked by Rob Herring, but v1 was merged.
    
    [1] https://patchwork.kernel.org/patch/9925575/
    
    Fixes: 000777dadc7e ("dt-bindings: usb: Document the STM32F7xx DWC2 ...")
    Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e9122d4e1af1648741fd4c4d0329ab0e6d84d13
Author: Amelie Delaunay <amelie.delaunay@st.com>
Date:   Thu Mar 1 11:05:35 2018 +0100

    usb: dwc2: fix STM32F7 USB OTG HS compatible
    
    commit 1a149e3554e0324a3d551dfb327bdb67b150a320 upstream.
    
    This patch fixes compatible for STM32F7 USB OTG HS and consistently rename
    dw2_set_params function.
    The v2 former patch [1] had been acked by Paul Young, but v1 was merged.
    
    [1] https://patchwork.kernel.org/patch/9925573/
    
    Fixes: d8fae8b93682 ("usb: dwc2: add support for STM32F7xx USB OTG HS")
    Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb5159f40c223119d9bb1c8431b8ec891167e645
Author: Bill Kuzeja <William.Kuzeja@stratus.com>
Date:   Mon Mar 5 00:02:55 2018 -0500

    scsi: qla2xxx: Fix crashes in qla2x00_probe_one on probe failure
    
    commit 6a2cf8d3663e13e19af636c2a8d92e766261dc45 upstream.
    
    Because of the shifting around of code in qla2x00_probe_one recently,
    failures during adapter initialization can lead to problems, i.e. NULL
    pointer crashes and doubly freed data structures which cause eventual
    panics.
    
    This V2 version makes the relevant memory free routines idempotent, so
    repeat calls won't cause any harm. I also removed the problematic
    probe_init_failed exit point as it is not needed.
    
    Fixes: d64d6c5671db ("scsi: qla2xxx: Fix NULL pointer crash due to probe failure")
    Signed-off-by: Bill Kuzeja <william.kuzeja@stratus.com>
    Acked-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bbf2aa0f9e2b5605a7e2518f07db00971368acd
Author: Himanshu Madhani <hmadhani@redhat.com>
Date:   Mon Jan 22 12:04:20 2018 -0800

    scsi: qla2xxx: Fix logo flag for qlt_free_session_done()
    
    commit a2390348c19d0819d525d375414a7cfdacb51a68 upstream.
    
    Commit 3515832cc614 ("scsi: qla2xxx: Reset the logo flag, after target
    re-login.")fixed the target re-login after session relogin is complete,
    but missed out the qlt_free_session_done() path.
    
    This patch clears send_els_logo flag in qlt_free_session_done()
    callback.
    
    [mkp: checkpatch]
    
    Fixes: 3515832cc614 ("scsi: qla2xxx: Reset the logo flag, after target re-login.")
    Signed-off-by: Himanshu Madhani <hmadhani@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84f1972c3c5d581d629985afae552723a7d69153
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Thu Dec 28 12:33:09 2017 -0800

    scsi: qla2xxx: Fix NULL pointer access for fcport structure
    
    commit 5c25d451163cab9be80744cbc5448d6b95ab8d1a upstream.
    
    when processing iocb in a timeout case, driver was trying to log messages
    without verifying if the fcport structure could have valid data. This
    results in a NULL pointer access.
    
    Fixes: 726b85487067("qla2xxx: Add framework for async fabric discovery")
    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 1675cbb32906a74e1c1dc1670049e3d7a0c75233
Author: Himanshu Madhani <himanshu.madhani@cavium.com>
Date:   Sat Dec 16 16:05:09 2017 -0800

    scsi: qla2xxx: Fix smatch warning in qla25xx_delete_{rsp|req}_que
    
    commit 62aa281470fdb7c0796d63a1cc918a8c1f02dde2 upstream.
    
    This patch fixes following warnings reported by smatch:
    
    drivers/scsi/qla2xxx/qla_mid.c:586 qla25xx_delete_req_que()
    error: we previously assumed 'req' could be null (see line 580)
    
    drivers/scsi/qla2xxx/qla_mid.c:602 qla25xx_delete_rsp_que()
    error: we previously assumed 'rsp' could be null (see line 596)
    
    Fixes: 7867b98dceb7 ("scsi: qla2xxx: Fix memory leak in dual/target mode")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.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 71103f2b9fd2bacff09458b054607836458700ce
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Tue Oct 24 13:47:37 2017 +0300

    btrfs: Fix memory barriers usage with device stats counters
    
    commit 9deae9689231964972a94bb56a79b669f9d47ac1 upstream.
    
    Commit addc3fa74e5b ("Btrfs: Fix the problem that the dirty flag of dev
    stats is cleared") reworked the way device stats changes are tracked. A
    new atomic dev_stats_ccnt counter was introduced which is incremented
    every time any of the device stats counters are changed. This serves as
    a flag whether there are any pending stats changes. However, this patch
    only partially implemented the correct memory barriers necessary:
    
    - It only ordered the stores to the counters but not the reads e.g.
      btrfs_run_dev_stats
    - It completely omitted any comments documenting the intended design and
      how the memory barriers pair with each-other
    
    This patch provides the necessary comments as well as adds a missing
    smp_rmb in btrfs_run_dev_stats. Furthermore since dev_stats_cnt is only
    a snapshot at best there was no point in reading the counter twice -
    once in btrfs_dev_stats_dirty and then again when assigning stats_cnt.
    Just collapse both reads into 1.
    
    Fixes: addc3fa74e5b ("Btrfs: Fix the problem that the dirty flag of dev stats is cleared")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.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 005155e22a0bfb2bb15e434511bc5bbfc8d41389
Author: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
Date:   Tue Jan 23 22:22:09 2018 -0500

    btrfs: remove spurious WARN_ON(ref->count < 0) in find_parent_nodes
    
    commit c8195a7b1ad5648857ce20ba24f384faed8512bc upstream.
    
    Until v4.14, this warning was very infrequent:
    
            WARNING: CPU: 3 PID: 18172 at fs/btrfs/backref.c:1391 find_parent_nodes+0xc41/0x14e0
            Modules linked in: [...]
            CPU: 3 PID: 18172 Comm: bees Tainted: G      D W    L  4.11.9-zb64+ #1
            Hardware name: System manufacturer System Product Name/M5A78L-M/USB3, BIOS 2101    12/02/2014
            Call Trace:
             dump_stack+0x85/0xc2
             __warn+0xd1/0xf0
             warn_slowpath_null+0x1d/0x20
             find_parent_nodes+0xc41/0x14e0
             __btrfs_find_all_roots+0xad/0x120
             ? extent_same_check_offsets+0x70/0x70
             iterate_extent_inodes+0x168/0x300
             iterate_inodes_from_logical+0x87/0xb0
             ? iterate_inodes_from_logical+0x87/0xb0
             ? extent_same_check_offsets+0x70/0x70
             btrfs_ioctl+0x8ac/0x2820
             ? lock_acquire+0xc2/0x200
             do_vfs_ioctl+0x91/0x700
             ? __fget+0x112/0x200
             SyS_ioctl+0x79/0x90
             entry_SYSCALL_64_fastpath+0x23/0xc6
             ? trace_hardirqs_off_caller+0x1f/0x140
    
    Starting with v4.14 (specifically 86d5f9944252 ("btrfs: convert prelimary
    reference tracking to use rbtrees")) the WARN_ON occurs three orders of
    magnitude more frequently--almost once per second while running workloads
    like bees.
    
    Replace the WARN_ON() with a comment rationale for its removal.
    The rationale is paraphrased from an explanation by Edmund Nadolski
    <enadolski@suse.de> on the linux-btrfs mailing list.
    
    Fixes: 8da6d5815c59 ("Btrfs: added btrfs_find_all_roots()")
    Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
    Reviewed-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a42df9f039414b3a29b09a5c231a43bada43dff
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Tue Jan 30 16:07:37 2018 +0200

    btrfs: Fix use-after-free when cleaning up fs_devs with a single stale device
    
    commit fd649f10c3d21ee9d7542c609f29978bdf73ab94 upstream.
    
    Commit 4fde46f0cc71 ("Btrfs: free the stale device") introduced
    btrfs_free_stale_device which iterates the device lists for all
    registered btrfs filesystems and deletes those devices which aren't
    mounted. In a btrfs_devices structure has only 1 device attached to it
    and it is unused then btrfs_free_stale_devices will proceed to also free
    the btrfs_fs_devices struct itself. Currently this leads to a use after
    free since list_for_each_entry will try to perform a check on the
    already freed memory to see if it has to terminate the loop.
    
    The fix is to use 'break' when we know we are freeing the current
    fs_devs.
    
    Fixes: 4fde46f0cc71 ("Btrfs: free the stale device")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce1ac9c8ebe031ebbb13f862d2fa50215224a02c
Author: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
Date:   Mon Feb 5 17:45:11 2018 +0100

    btrfs: alloc_chunk: fix DUP stripe size handling
    
    commit 92e222df7b8f05c565009c7383321b593eca488b upstream.
    
    In case of using DUP, we search for enough unallocated disk space on a
    device to hold two stripes.
    
    The devices_info[ndevs-1].max_avail that holds the amount of unallocated
    space found is directly assigned to stripe_size, while it's actually
    twice the stripe size.
    
    Later on in the code, an unconditional division of stripe_size by
    dev_stripes corrects the value, but in the meantime there's a check to
    see if the stripe_size does not exceed max_chunk_size. Since during this
    check stripe_size is twice the amount as intended, the check will reduce
    the stripe_size to max_chunk_size if the actual correct to be used
    stripe_size is more than half the amount of max_chunk_size.
    
    The unconditional division later tries to correct stripe_size, but will
    actually make sure we can't allocate more than half the max_chunk_size.
    
    Fix this by moving the division by dev_stripes before the max chunk size
    check, so it always contains the right value, instead of putting a duct
    tape division in further on to get it fixed again.
    
    Since in all other cases than DUP, dev_stripes is 1, this change only
    affects DUP.
    
    Other attempts in the past were made to fix this:
    * 37db63a400 "Btrfs: fix max chunk size check in chunk allocator" tried
    to fix the same problem, but still resulted in part of the code acting
    on a wrongly doubled stripe_size value.
    * 86db25785a "Btrfs: fix max chunk size on raid5/6" unintentionally
    broke this fix again.
    
    The real problem was already introduced with the rest of the code in
    73c5de0051.
    
    The user visible result however will be that the max chunk size for DUP
    will suddenly double, while it's actually acting according to the limits
    in the code again like it was 5 years ago.
    
    Reported-by: Naohiro Aota <naohiro.aota@wdc.com>
    Link: https://www.spinics.net/lists/linux-btrfs/msg69752.html
    Fixes: 73c5de0051 ("btrfs: quasi-round-robin for chunk allocation")
    Fixes: 86db25785a ("Btrfs: fix max chunk size on raid5/6")
    Signed-off-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ update comment ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0505842848e0c2905a4f91f9082f99be2b9e6bd
Author: Edmund Nadolski <enadolski@suse.com>
Date:   Wed Mar 14 09:03:11 2018 -0600

    btrfs: add missing initialization in btrfs_check_shared
    
    commit 18bf591ba9753e3e5ba91f38f756a800693408f4 upstream.
    
    This patch addresses an issue that causes fiemap to falsely
    report a shared extent.  The test case is as follows:
    
    xfs_io -f -d -c "pwrite -b 16k 0 64k" -c "fiemap -v" /media/scratch/file5
    sync
    xfs_io  -c "fiemap -v" /media/scratch/file5
    
    which gives the resulting output:
    
    wrote 65536/65536 bytes at offset 0
    64 KiB, 4 ops; 0.0000 sec (121.359 MiB/sec and 7766.9903 ops/sec)
    /media/scratch/file5:
     EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
       0: [0..127]:        24576..24703       128 0x2001
    /media/scratch/file5:
     EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
       0: [0..127]:        24576..24703       128   0x1
    
    This is because btrfs_check_shared calls find_parent_nodes
    repeatedly in a loop, passing a share_check struct to report
    the count of shared extent. But btrfs_check_shared does not
    re-initialize the count value to zero for subsequent calls
    from the loop, resulting in a false share count value. This
    is a regressive behavior from 4.13.
    
    With proper re-initialization the test result is as follows:
    
    wrote 65536/65536 bytes at offset 0
    64 KiB, 4 ops; 0.0000 sec (110.035 MiB/sec and 7042.2535 ops/sec)
    /media/scratch/file5:
     EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
       0: [0..127]:        24576..24703       128   0x1
    /media/scratch/file5:
     EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS
       0: [0..127]:        24576..24703       128   0x1
    
    which corrects the regression.
    
    Fixes: 3ec4d3238ab ("btrfs: allow backref search checks for shared extents")
    Signed-off-by: Edmund Nadolski <enadolski@suse.com>
    [ add text from cover letter to changelog ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fef1dad2a98529cad91a3cbf2b2450bd48e2c84b
Author: Dmitriy Gorokh <Dmitriy.Gorokh@wdc.com>
Date:   Fri Feb 16 19:51:38 2018 +0000

    btrfs: Fix NULL pointer exception in find_bio_stripe
    
    commit 047fdea6341966a0898e3b16c51f54d4f5ba030a upstream.
    
    On detaching of a disk which is a part of a RAID6 filesystem, the
    following kernel OOPS may happen:
    
    [63122.680461] BTRFS error (device sdo): bdev /dev/sdo errs: wr 0, rd 0, flush 1, corrupt 0, gen 0
    [63122.719584] BTRFS warning (device sdo): lost page write due to IO error on /dev/sdo
    [63122.719587] BTRFS error (device sdo): bdev /dev/sdo errs: wr 1, rd 0, flush 1, corrupt 0, gen 0
    [63122.803516] BTRFS warning (device sdo): lost page write due to IO error on /dev/sdo
    [63122.803519] BTRFS error (device sdo): bdev /dev/sdo errs: wr 2, rd 0, flush 1, corrupt 0, gen 0
    [63122.863902] BTRFS critical (device sdo): fatal error on device /dev/sdo
    [63122.935338] BUG: unable to handle kernel NULL pointer dereference at 0000000000000080
    [63122.946554] IP: fail_bio_stripe+0x58/0xa0 [btrfs]
    [63122.958185] PGD 9ecda067 P4D 9ecda067 PUD b2b37067 PMD 0
    [63122.971202] Oops: 0000 [#1] SMP
    [63123.006760] CPU: 0 PID: 3979 Comm: kworker/u8:9 Tainted: G W 4.14.2-16-scst34x+ #8
    [63123.007091] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [63123.007402] Workqueue: btrfs-worker btrfs_worker_helper [btrfs]
    [63123.007595] task: ffff880036ea4040 task.stack: ffffc90006384000
    [63123.007796] RIP: 0010:fail_bio_stripe+0x58/0xa0 [btrfs]
    [63123.007968] RSP: 0018:ffffc90006387ad8 EFLAGS: 00010287
    [63123.008140] RAX: 0000000000000002 RBX: ffff88004beaa0b8 RCX: ffff8800b2bd5690
    [63123.008359] RDX: 0000000000000000 RSI: ffff88007bb43500 RDI: ffff88004beaa000
    [63123.008621] RBP: ffffc90006387ae8 R08: 0000000099100000 R09: ffff8800b2bd5600
    [63123.008840] R10: 0000000000000004 R11: 0000000000010000 R12: ffff88007bb43500
    [63123.009059] R13: 00000000fffffffb R14: ffff880036fc5180 R15: 0000000000000004
    [63123.009278] FS: 0000000000000000(0000) GS:ffff8800b7000000(0000) knlGS:0000000000000000
    [63123.009564] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [63123.009748] CR2: 0000000000000080 CR3: 00000000b0866000 CR4: 00000000000406f0
    [63123.009969] Call Trace:
    [63123.010085] raid_write_end_io+0x7e/0x80 [btrfs]
    [63123.010251] bio_endio+0xa1/0x120
    [63123.010378] generic_make_request+0x218/0x270
    [63123.010921] submit_bio+0x66/0x130
    [63123.011073] finish_rmw+0x3fc/0x5b0 [btrfs]
    [63123.011245] full_stripe_write+0x96/0xc0 [btrfs]
    [63123.011428] raid56_parity_write+0x117/0x170 [btrfs]
    [63123.011604] btrfs_map_bio+0x2ec/0x320 [btrfs]
    [63123.011759] ? ___cache_free+0x1c5/0x300
    [63123.011909] __btrfs_submit_bio_done+0x26/0x50 [btrfs]
    [63123.012087] run_one_async_done+0x9c/0xc0 [btrfs]
    [63123.012257] normal_work_helper+0x19e/0x300 [btrfs]
    [63123.012429] btrfs_worker_helper+0x12/0x20 [btrfs]
    [63123.012656] process_one_work+0x14d/0x350
    [63123.012888] worker_thread+0x4d/0x3a0
    [63123.013026] ? _raw_spin_unlock_irqrestore+0x15/0x20
    [63123.013192] kthread+0x109/0x140
    [63123.013315] ? process_scheduled_works+0x40/0x40
    [63123.013472] ? kthread_stop+0x110/0x110
    [63123.013610] ret_from_fork+0x25/0x30
    [63123.014469] RIP: fail_bio_stripe+0x58/0xa0 [btrfs] RSP: ffffc90006387ad8
    [63123.014678] CR2: 0000000000000080
    [63123.016590] ---[ end trace a295ea7259c17880 ]—
    
    This is reproducible in a cycle, where a series of writes is followed by
    SCSI device delete command. The test may take up to few minutes.
    
    Fixes: 74d46992e0d9 ("block: replace bi_bdev with a gendisk pointer and partitions index")
    [ no signed-off-by provided ]
    Author: Dmitriy Gorokh <Dmitriy.Gorokh@wdc.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.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 428da4f87e1d91e3511457b83d8883d267da568c
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Fri Jan 26 11:24:40 2018 -0800

    xfs: preserve i_rdev when recycling a reclaimable inode
    
    commit acd1d71598f7654b6d7718bcbe979992295c672a upstream.
    
    Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
    value for special inodes to VFS inodes, but forgot to preserve the
    value of i_rdev when recycling a reclaimable xfs_inode.
    
    This was detected by xfstest overlay/017 with inodex=on mount option
    and xfs base fs. The test does a lookup of overlay chardev and blockdev
    right after drop caches.
    
    Overlayfs inodes hold a reference on underlying xfs inodes when mount
    option index=on is configured. If drop caches reclaim xfs inodes, before
    it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
    inode and that test hits that case quite often.
    
    When that happens, the xfs inode cache remains broken (zere i_rdev)
    until the next cycle mount or drop caches.
    
    Fixes: 66f364649d870 ("xfs: remove if_rdev")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c7453ec86ce3787d29b5925352e18a8c3a2bc86
Author: Israel Rukshin <israelr@mellanox.com>
Date:   Thu Jan 4 17:56:14 2018 +0200

    nvme: fix subsystem multiple controllers support check
    
    commit b837b28394fb76993c28bb242db7061ee0417da6 upstream.
    
    There is a problem when another module (e.g. nvmet) takes a reference on
    the nvme block device and the physical nvme drive is removed.  In that
    case nvme_free_ctrl() will not be called and the controller state will be
    "deleting" or "dead" unless nvmet module releases the block device.
    Later on, the same nvme drive probes back and nvme_init_subsystem() will
    be called and fail due to duplicate subnqn (if the nvme device doesn't
    support subsystem with multiple controllers). This will cause a probe
    failure.  This commit changes the check of multiple controllers support
    at nvme_init_subsystem() by not counting all the controllers at "dead" or
    "deleting" state (this is safe because controllers at this state will
    never be active again).
    
    Fixes: ab9e00cc72fa ("nvme: track subsystems")
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Israel Rukshin <israelr@mellanox.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69f0542a7befb5fa3f1cf004bdc0c83c5166a7e6
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Mar 6 15:51:32 2018 +0000

    irqchip/gic-v3-its: Ensure nr_ites >= nr_lpis
    
    commit 4f2c7583e33eb08dc09dd2e25574b80175ba7d93 upstream.
    
    When struct its_device instances are created, the nr_ites member
    will be set to a power of 2 that equals or exceeds the requested
    number of MSIs passed to the msi_prepare() callback. At the same
    time, the LPI map is allocated to be some multiple of 32 in size,
    where the allocated size may be less than the requested size
    depending on whether a contiguous range of sufficient size is
    available in the global LPI bitmap.
    
    This may result in the situation where the nr_ites < nr_lpis, and
    since nr_ites is what we program into the hardware when we map the
    device, the additional LPIs will be non-functional.
    
    For bog standard hardware, this does not really matter. However,
    in cases where ITS device IDs are shared between different PCIe
    devices, we may end up allocating these additional LPIs without
    taking into account that they don't actually work.
    
    So let's make nr_ites at least 32. This ensures that all allocated
    LPIs are 'live', and that its_alloc_device_irq() will fail when
    attempts are made to allocate MSIs beyond what was allocated in
    the first place.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    [maz: updated comment]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdb574d9a7e032ae9a4fd64796ebb6e429da9296
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Mar 14 12:10:18 2018 -0700

    RDMAVT: Fix synchronization around percpu_ref
    
    commit 74b44bbe80b4c62113ac1501482ea1ee40eb9d67 upstream.
    
    rvt_mregion uses percpu_ref for reference counting and RCU to protect
    accesses from lkey_table.  When a rvt_mregion needs to be freed, it
    first gets unregistered from lkey_table and then rvt_check_refs() is
    called to wait for in-flight usages before the rvt_mregion is freed.
    
    rvt_check_refs() seems to have a couple issues.
    
    * It has a fast exit path which tests percpu_ref_is_zero().  However,
      a percpu_ref reading zero doesn't mean that the object can be
      released.  In fact, the ->release() callback might not even have
      started executing yet.  Proceeding with freeing can lead to
      use-after-free.
    
    * lkey_table is RCU protected but there is no RCU grace period in the
      free path.  percpu_ref uses RCU internally but it's sched-RCU whose
      grace periods are different from regular RCU.  Also, it generally
      isn't a good idea to depend on internal behaviors like this.
    
    To address the above issues, this patch removes the fast exit and adds
    an explicit synchronize_rcu().
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Cc: linux-rdma@vger.kernel.org
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b68e9ccaf0b1c71a6ab767b6b42a58a9f2437d3
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Mar 14 12:10:17 2018 -0700

    fs/aio: Use RCU accessors for kioctx_table->table[]
    
    commit d0264c01e7587001a8c4608a5d1818dba9a4c11a upstream.
    
    While converting ioctx index from a list to a table, db446a08c23d
    ("aio: convert the ioctx list to table lookup v3") missed tagging
    kioctx_table->table[] as an array of RCU pointers and using the
    appropriate RCU accessors.  This introduces a small window in the
    lookup path where init and access may race.
    
    Mark kioctx_table->table[] with __rcu and use the approriate RCU
    accessors when using the field.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: db446a08c23d ("aio: convert the ioctx list to table lookup v3")
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org # v3.12+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5b8b8be78089b6ac15b4644eb1424b796cf8a8d
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Mar 14 12:10:17 2018 -0700

    fs/aio: Add explicit RCU grace period when freeing kioctx
    
    commit a6d7cff472eea87d96899a20fa718d2bab7109f3 upstream.
    
    While fixing refcounting, e34ecee2ae79 ("aio: Fix a trinity splat")
    incorrectly removed explicit RCU grace period before freeing kioctx.
    The intention seems to be depending on the internal RCU grace periods
    of percpu_ref; however, percpu_ref uses a different flavor of RCU,
    sched-RCU.  This can lead to kioctx being freed while RCU read
    protected dereferences are still in progress.
    
    Fix it by updating free_ioctx() to go through call_rcu() explicitly.
    
    v2: Comment added to explain double bouncing.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: e34ecee2ae79 ("aio: Fix a trinity splat")
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org # v3.13+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fa76b885ece6d2b8aaaa3e28ff445d5527d4f27
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Feb 23 20:47:17 2018 -0500

    lock_parent() needs to recheck if dentry got __dentry_kill'ed under it
    
    commit 3b821409632ab778d46e807516b457dfa72736ed upstream.
    
    In case when dentry passed to lock_parent() is protected from freeing only
    by the fact that it's on a shrink list and trylock of parent fails, we
    could get hit by __dentry_kill() (and subsequent dentry_kill(parent))
    between unlocking dentry and locking presumed parent.  We need to recheck
    that dentry is alive once we lock both it and parent *and* postpone
    rcu_read_unlock() until after that point.  Otherwise we could return
    a pointer to struct dentry that already is rcu-scheduled for freeing, with
    ->d_lock held on it; caller's subsequent attempt to unlock it can end
    up with memory corruption.
    
    Cc: stable@vger.kernel.org # 3.12+, counting backports
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c7b569aec95670a2d42f45d0327232b0d74af30
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Mar 6 21:48:01 2018 +0000

    KVM: arm/arm64: vgic: Don't populate multiple LRs with the same vintid
    
    commit 16ca6a607d84bef0129698d8d808f501afd08d43 upstream.
    
    The vgic code is trying to be clever when injecting GICv2 SGIs,
    and will happily populate LRs with the same interrupt number if
    they come from multiple vcpus (after all, they are distinct
    interrupt sources).
    
    Unfortunately, this is against the letter of the architecture,
    and the GICv2 architecture spec says "Each valid interrupt stored
    in the List registers must have a unique VirtualID for that
    virtual CPU interface.". GICv3 has similar (although slightly
    ambiguous) restrictions.
    
    This results in guests locking up when using GICv2-on-GICv3, for
    example. The obvious fix is to stop trying so hard, and inject
    a single vcpu per SGI per guest entry. After all, pending SGIs
    with multiple source vcpus are pretty rare, and are mostly seen
    in scenario where the physical CPUs are severely overcomitted.
    
    But as we now only inject a single instance of a multi-source SGI per
    vcpu entry, we may delay those interrupts for longer than strictly
    necessary, and run the risk of injecting lower priority interrupts
    in the meantime.
    
    In order to address this, we adopt a three stage strategy:
    - If we encounter a multi-source SGI in the AP list while computing
      its depth, we force the list to be sorted
    - When populating the LRs, we prevent the injection of any interrupt
      of lower priority than that of the first multi-source SGI we've
      injected.
    - Finally, the injection of a multi-source SGI triggers the request
      of a maintenance interrupt when there will be no pending interrupt
      in the LRs (HCR_NPIE).
    
    At the point where the last pending interrupt in the LRs switches
    from Pending to Active, the maintenance interrupt will be delivered,
    allowing us to add the remaining SGIs using the same process.
    
    Cc: stable@vger.kernel.org
    Fixes: 0919e84c0fc1 ("KVM: arm/arm64: vgic-new: Add IRQ sync/flush framework")
    Acked-by: Christoffer Dall <cdall@kernel.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bf14279499c96539d5c0f06b54336c221ac7c63
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Mar 6 21:44:37 2018 +0000

    kvm: arm/arm64: vgic-v3: Tighten synchronization for guests using v2 on v3
    
    commit 27e91ad1e746e341ca2312f29bccb9736be7b476 upstream.
    
    On guest exit, and when using GICv2 on GICv3, we use a dsb(st) to
    force synchronization between the memory-mapped guest view and
    the system-register view that the hypervisor uses.
    
    This is incorrect, as the spec calls out the need for "a DSB whose
    required access type is both loads and stores with any Shareability
    attribute", while we're only synchronizing stores.
    
    We also lack an isb after the dsb to ensure that the latter has
    actually been executed before we start reading stuff from the sysregs.
    
    The fix is pretty easy: turn dsb(st) into dsb(sy), and slap an isb()
    just after.
    
    Cc: stable@vger.kernel.org
    Fixes: f68d2b1b73cc ("arm64: KVM: Implement vgic-v3 save/restore")
    Acked-by: Christoffer Dall <cdall@kernel.org>
    Reviewed-by: Andre Przywara <andre.przywara@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8853101329951ec551cd21d4a6f9c5c4b1a797a0
Author: Christoffer Dall <cdall@kernel.org>
Date:   Mon Mar 5 11:36:38 2018 +0100

    KVM: arm/arm64: Reset mapped IRQs on VM reset
    
    commit 413aa807ae39fed7e387c175d2d0ae9fcf6c0c9d upstream.
    
    We currently don't allow resetting mapped IRQs from userspace, because
    their state is controlled by the hardware.  But we do need to reset the
    state when the VM is reset, so we provide a function for the 'owner' of
    the mapped interrupt to reset the interrupt state.
    
    Currently only the timer uses mapped interrupts, so we call this
    function from the timer reset logic.
    
    Cc: stable@vger.kernel.org
    Fixes: 4c60e360d6df ("KVM: arm/arm64: Provide a get_input_level for the arch timer")
    Signed-off-by: Christoffer Dall <cdall@kernel.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1368ba16c8e6e2314e429281fbd47c552d08073a
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Mar 2 08:16:30 2018 +0000

    KVM: arm/arm64: Reduce verbosity of KVM init log
    
    commit 76600428c3677659e3c3633bb4f2ea302220a275 upstream.
    
    On my GICv3 system, the following is printed to the kernel log at boot:
    
       kvm [1]: 8-bit VMID
       kvm [1]: IDMAP page: d20e35000
       kvm [1]: HYP VA range: 800000000000:ffffffffffff
       kvm [1]: vgic-v2@2c020000
       kvm [1]: GIC system register CPU interface enabled
       kvm [1]: vgic interrupt IRQ1
       kvm [1]: virtual timer IRQ4
       kvm [1]: Hyp mode initialized successfully
    
    The KVM IDMAP is a mapping of a statically allocated kernel structure,
    and so printing its physical address leaks the physical placement of
    the kernel when physical KASLR in effect. So change the kvm_info() to
    kvm_debug() to remove it from the log output.
    
    While at it, trim the output a bit more: IRQ numbers can be found in
    /proc/interrupts, and the HYP VA and vgic-v2 lines are not highly
    informational either.
    
    Cc: <stable@vger.kernel.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Christoffer Dall <cdall@kernel.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad3edd3c404705ac57b2da49ce3da96825b3a75e
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Mar 14 18:20:29 2018 -0500

    fs: Teach path_connected to handle nfs filesystems with multiple roots.
    
    commit 95dd77580ccd66a0da96e6d4696945b8cea39431 upstream.
    
    On nfsv2 and nfsv3 the nfs server can export subsets of the same
    filesystem and report the same filesystem identifier, so that the nfs
    client can know they are the same filesystem.  The subsets can be from
    disjoint directory trees.  The nfsv2 and nfsv3 filesystems provides no
    way to find the common root of all directory trees exported form the
    server with the same filesystem identifier.
    
    The practical result is that in struct super s_root for nfs s_root is
    not necessarily the root of the filesystem.  The nfs mount code sets
    s_root to the root of the first subset of the nfs filesystem that the
    kernel mounts.
    
    This effects the dcache invalidation code in generic_shutdown_super
    currently called shrunk_dcache_for_umount and that code for years
    has gone through an additional list of dentries that might be dentry
    trees that need to be freed to accomodate nfs.
    
    When I wrote path_connected I did not realize nfs was so special, and
    it's hueristic for avoiding calling is_subdir can fail.
    
    The practical case where this fails is when there is a move of a
    directory from the subtree exposed by one nfs mount to the subtree
    exposed by another nfs mount.  This move can happen either locally or
    remotely.  With the remote case requiring that the move directory be cached
    before the move and that after the move someone walks the path
    to where the move directory now exists and in so doing causes the
    already cached directory to be moved in the dcache through the magic
    of d_splice_alias.
    
    If someone whose working directory is in the move directory or a
    subdirectory and now starts calling .. from the initial mount of nfs
    (where s_root == mnt_root), then path_connected as a heuristic will
    not bother with the is_subdir check.  As s_root really is not the root
    of the nfs filesystem this heuristic is wrong, and the path may
    actually not be connected and path_connected can fail.
    
    The is_subdir function might be cheap enough that we can call it
    unconditionally.  Verifying that will take some benchmarking and
    the result may not be the same on all kernels this fix needs
    to be backported to.  So I am avoiding that for now.
    
    Filesystems with snapshots such as nilfs and btrfs do something
    similar.  But as the directory tree of the snapshots are disjoint
    from one another and from the main directory tree rename won't move
    things between them and this problem will not occur.
    
    Cc: stable@vger.kernel.org
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Fixes: 397d425dc26d ("vfs: Test for and handle paths that are unreachable from their mnt_root")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab2660381a80221b907ccc035ba915085a2b95fa
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Fri Mar 9 18:26:18 2018 +0100

    drm/amdgpu/dce: Don't turn off DP sink when disconnected
    
    commit 7d617264eb22b18d979eac6e85877a141253034e upstream.
    
    Turning off the sink in this case causes various issues, because
    userspace expects it to stay on until it turns it off explicitly.
    
    Instead, turn the sink off and back on when a display is connected
    again. This dance seems necessary for link training to work correctly.
    
    Bugzilla: https://bugs.freedesktop.org/105308
    Cc: stable@vger.kernel.org
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa2192eea5c03649c5e8b1d1acad4d0b47a01cd9
Author: Christian König <christian.koenig@amd.com>
Date:   Fri Mar 9 14:44:32 2018 +0100

    drm/radeon: fix prime teardown order
    
    commit 0f4f715bc6bed3bf14c5cd7d5fe88d443e756b14 upstream.
    
    We unmapped imported DMA-bufs when the GEM handle was dropped, not when the
    hardware was done with the buffere.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.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 d747af9a681f18d4fe8076eb9f53e2f6dc9b14c9
Author: Christian König <christian.koenig@amd.com>
Date:   Fri Mar 9 14:42:54 2018 +0100

    drm/amdgpu: fix prime teardown order
    
    commit 342038d92403b3efa1138a8599666b9f026279d6 upstream.
    
    We unmapped imported DMA-bufs when the GEM handle was dropped, not when the
    hardware was done with the buffere.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.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 69b9106f97cece0b0dc4f2df9ec34b60998030a0
Author: Māris Nartišs <maris.nartiss@gmail.com>
Date:   Fri Mar 16 11:38:43 2018 +1000

    drm/nouveau/mmu: ALIGN_DOWN correct variable
    
    commit da5e45e619b3f101420c38b3006a9ae4f3ad19b0 upstream.
    
    Commit 7110c89bb8852ff8b0f88ce05b332b3fe22bd11e ("mmu: swap out round
    for ALIGN") replaced two calls to round/rounddown with ALIGN/ALIGN_DOWN,
    but erroneously applied ALIGN_DOWN to a different variable (addr) and left
    intended variable (tail) not rounded/ALIGNed.
    
    As a result screen corruption, X lockups are observable. An example of kernel
    log of affected system with NV98 card where it was bisected:
    
    nouveau 0000:01:00.0: gr: TRAP_M2MF 00000002 [IN]
    nouveau 0000:01:00.0: gr: TRAP_M2MF 00320951 400007c0 00000000 04000000
    nouveau 0000:01:00.0: gr: 00200000 [] ch 1 [000fbbe000 DRM] subc 4 class 5039
    mthd 0100 data 00000000
    nouveau 0000:01:00.0: fb: trapped read at 0040000000 on channel 1
    [0fbbe000 DRM]
    engine 00 [PGRAPH] client 03 [DISPATCH] subclient 04 [M2M_IN] reason 00000006
    [NULL_DMAOBJ]
    
    Fixes bug 105173 ("[MCP79][Regression] Unhandled NULL pointer dereference in
    nvkm_object_unmap since kernel 4.15")
    https://bugs.freedesktop.org/show_bug.cgi?id=105173
    
    Fixes: 7110c89bb885 ("mmu: swap out round for ALIGN ")
    Tested-by: Pierre Moreau <pierre.morrow@free.fr>
    Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
    Signed-off-by: Maris Nartiss <maris.nartiss@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Cc: stable@vger.kernel.org # v4.15+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba753a894a532bfcb2fc19bdf28ac699886331b2
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sat Feb 17 13:40:23 2018 +0100

    drm/nouveau/bl: Fix oops on driver unbind
    
    commit 76f2e2bc627f7d08360ac731b6277d744d4eb599 upstream.
    
    Unbinding nouveau on a dual GPU MacBook Pro oopses because we iterate
    over the bl_connectors list in nouveau_backlight_exit() but skipped
    initializing it in nouveau_backlight_init().  Stacktrace for posterity:
    
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
        IP: nouveau_backlight_exit+0x2b/0x70 [nouveau]
        nouveau_display_destroy+0x29/0x80 [nouveau]
        nouveau_drm_unload+0x65/0xe0 [nouveau]
        drm_dev_unregister+0x3c/0xe0 [drm]
        drm_put_dev+0x2e/0x60 [drm]
        nouveau_drm_device_remove+0x47/0x70 [nouveau]
        pci_device_remove+0x36/0xb0
        device_release_driver_internal+0x157/0x220
        driver_detach+0x39/0x70
        bus_remove_driver+0x51/0xd0
        pci_unregister_driver+0x2a/0xa0
        nouveau_drm_exit+0x15/0xfb0 [nouveau]
        SyS_delete_module+0x18c/0x290
        system_call_fast_compare_end+0xc/0x6f
    
    Fixes: b53ac1ee12a3 ("drm/nouveau/bl: Do not register interface if Apple GMUX detected")
    Cc: stable@vger.kernel.org # v4.10+
    Cc: Pierre Moreau <pierre.morrow@free.fr>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18d8a34ac8908b0a06d9f1f7a5c5fd2b209be4c0
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 9 22:23:31 2018 +0100

    ALSA: seq: Clear client entry before deleting else at closing
    
    commit a2ff19f7b70118ced291a28d5313469914de451b upstream.
    
    When releasing a client, we need to clear the clienttab[] entry at
    first, then call snd_seq_queue_client_leave().  Otherwise, the
    in-flight cell in the queue might be picked up by the timer interrupt
    via snd_seq_check_queue() before calling snd_seq_queue_client_leave(),
    and it's delivered to another queue while the client is clearing
    queues.  This may eventually result in an uncleared cell remaining in
    a queue, and the later snd_seq_pool_delete() may need to wait for a
    long time until the event gets really processed.
    
    By moving the clienttab[] clearance at the beginning of release, any
    event delivery of a cell belonging to this client will fail at a later
    point, since snd_seq_client_ptr() returns NULL.  Thus the cell that
    was picked up by the timer interrupt will be returned immediately
    without further delivery, and the long stall of snd_seq_delete_pool()
    can be avoided, too.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d63f1fc63f4b22a9dae98d99f5214974194c648
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 9 21:58:28 2018 +0100

    ALSA: seq: Fix possible UAF in snd_seq_check_queue()
    
    commit d0f833065221cbfcbadf19fd4102bcfa9330006a upstream.
    
    Although we've covered the races between concurrent write() and
    ioctl() in the previous patch series, there is still a possible UAF in
    the following scenario:
    
    A: user client closed           B: timer irq
      -> snd_seq_release()            -> snd_seq_timer_interrupt()
        -> snd_seq_free_client()        -> snd_seq_check_queue()
                                          -> cell = snd_seq_prioq_cell_peek()
          -> snd_seq_prioq_leave()
             .... removing all cells
          -> snd_seq_pool_done()
             .... vfree()
                                          -> snd_seq_compare_tick_time(cell)
                                             ... Oops
    
    So the problem is that a cell is peeked and accessed without any
    protection until it's retrieved from the queue again via
    snd_seq_prioq_cell_out().
    
    This patch tries to address it, also cleans up the code by a slight
    refactoring.  snd_seq_prioq_cell_out() now receives an extra pointer
    argument.  When it's non-NULL, the function checks the event timestamp
    with the given pointer.  The caller needs to pass the right reference
    either to snd_seq_tick or snd_seq_realtime depending on the event
    timestamp type.
    
    A good news is that the above change allows us to remove the
    snd_seq_prioq_cell_peek(), too, thus the patch actually reduces the
    code size.
    
    Reviewed-by: Nicolai Stange <nstange@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdcecd3415a1e4ecedd6a64b744061d47953eb10
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Mar 12 13:55:48 2018 +0100

    ALSA: hda - Revert power_save option default value
    
    commit 40088dc4e1ead7df31728c73f5b51d71da18831d upstream.
    
    With the commit 1ba8f9d30817 ("ALSA: hda: Add a power_save
    blacklist"), we changed the default value of power_save option to -1
    for processing the power-save blacklist.
    Unfortunately, this seems breaking user-space applications that
    actually read the power_save parameter value via sysfs and judge /
    adjust the power-saving status.  They see the value -1 as if the
    power-save is turned off, although the actual value is taken from
    CONFIG_SND_HDA_POWER_SAVE_DEFAULT and it can be a positive.
    
    So, overall, passing -1 there was no good idea.  Let's partially
    revert it -- at least for power_save option default value is restored
    again to CONFIG_SND_HDA_POWER_SAVE_DEFAULT.  Meanwhile, in this patch,
    we keep the blacklist behavior and make is adjustable via the new
    option, pm_blacklist.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199073
    Fixes: 1ba8f9d30817 ("ALSA: hda: Add a power_save blacklist")
    Acked-by: Hans de Goede <hdegoede@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb0e7a1f56870d9865e8cf70db1f80ec2e3350bd
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Mar 10 23:04:23 2018 +0100

    ALSA: pcm: Fix UAF in snd_pcm_oss_get_formats()
    
    commit 01c0b4265cc16bc1f43f475c5944c55c10d5768f upstream.
    
    snd_pcm_oss_get_formats() has an obvious use-after-free around
    snd_mask_test() calls, as spotted by syzbot.  The passed format_mask
    argument is a pointer to the hw_params object that is freed before the
    loop.  What a surprise that it has been present since the original
    code of decades ago...
    
    Reported-by: syzbot+4090700a4f13fccaf648@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf724633cfda3a01001b5efe0fc49df2d6f91b9d
Author: John David Anglin <dave.anglin@bell.net>
Date:   Wed Mar 7 08:18:05 2018 -0500

    parisc: Handle case where flush_cache_range is called with no context
    
    commit 9ef0f88fe5466c2ca1d2975549ba6be502c464c1 upstream.
    
    Just when I had decided that flush_cache_range() was always called with
    a valid context, Helge reported two cases where the
    "BUG_ON(!vma->vm_mm->context);" was hit on the phantom buildd:
    
     kernel BUG at /mnt/sdb6/linux/linux-4.15.4/arch/parisc/kernel/cache.c:587!
     CPU: 1 PID: 3254 Comm: kworker/1:2 Tainted: G D 4.15.0-1-parisc64-smp #1 Debian 4.15.4-1+b1
     Workqueue: events free_ioctx
      IAOQ[0]: flush_cache_range+0x164/0x168
      IAOQ[1]: flush_cache_page+0x0/0x1c8
      RP(r2): unmap_page_range+0xae8/0xb88
     Backtrace:
      [<00000000404a6980>] unmap_page_range+0xae8/0xb88
      [<00000000404a6ae0>] unmap_single_vma+0xc0/0x188
      [<00000000404a6cdc>] zap_page_range_single+0x134/0x1f8
      [<00000000404a702c>] unmap_mapping_range+0x1cc/0x208
      [<0000000040461518>] truncate_pagecache+0x98/0x108
      [<0000000040461624>] truncate_setsize+0x9c/0xb8
      [<00000000405d7f30>] put_aio_ring_file+0x80/0x100
      [<00000000405d803c>] aio_free_ring+0x8c/0x290
      [<00000000405d82c0>] free_ioctx+0x80/0x180
      [<0000000040284e6c>] process_one_work+0x21c/0x668
      [<00000000402854c4>] worker_thread+0x20c/0x778
      [<0000000040291d44>] kthread+0x2d4/0x2e0
      [<0000000040204020>] end_fault_vector+0x20/0xc0
    
    This indicates that we need to handle the no context case in
    flush_cache_range() as we do in flush_cache_mm().
    
    In thinking about this, I realized that we don't need to flush the TLB
    when there is no context.  So, I added context checks to the large flush
    cases in flush_cache_mm() and flush_cache_range().  The large flush case
    occurs frequently in flush_cache_mm() and the change should improve fork
    performance.
    
    The v2 version of this change removes the BUG_ON from flush_cache_page()
    by skipping the TLB flush when there is no context.  I also added code
    to flush the TLB in flush_cache_mm() and flush_cache_range() when we
    have a context that's not current.  Now all three routines handle TLB
    flushes in a similar manner.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org # 4.9+
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7d57946c5f5474aa8a76ef3f9adaf13d9128be7
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Tue Mar 13 11:03:46 2018 -0600

    x86/mm: Fix vmalloc_fault to use pXd_large
    
    commit 18a955219bf7d9008ce480d4451b6b8bf4483a22 upstream.
    
    Gratian Crisan reported that vmalloc_fault() crashes when CONFIG_HUGETLBFS
    is not set since the function inadvertently uses pXn_huge(), which always
    return 0 in this case.  ioremap() does not depend on CONFIG_HUGETLBFS.
    
    Fix vmalloc_fault() to call pXd_large() instead.
    
    Fixes: f4eafd8bcd52 ("x86/mm: Fix vmalloc_fault() to handle large pages properly")
    Reported-by: Gratian Crisan <gratian.crisan@ni.com>
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Link: https://lkml.kernel.org/r/20180313170347.3829-2-toshi.kani@hpe.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4abf8650d69379773ba9d03cc263507a1461b985
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Thu Mar 8 17:17:31 2018 -0600

    KVM: x86: Fix device passthrough when SME is active
    
    commit daaf216c06fba4ee4dc3f62715667da929d68774 upstream.
    
    When using device passthrough with SME active, the MMIO range that is
    mapped for the device should not be mapped encrypted.  Add a check in
    set_spte() to insure that a page is not mapped encrypted if that page
    is a device MMIO page as indicated by kvm_is_mmio_pfn().
    
    Cc: <stable@vger.kernel.org> # 4.14.x-
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da0812b4989581b7bcbbbeb7011400c62df7922a
Author: Alexander Sergeyev <sergeev917@gmail.com>
Date:   Tue Mar 13 22:38:56 2018 +0300

    x86/speculation: Remove Skylake C2 from Speculation Control microcode blacklist
    
    commit e3b3121fa8da94cb20f9e0c64ab7981ae47fd085 upstream.
    
    In accordance with Intel's microcode revision guidance from March 6 MCU
    rev 0xc2 is cleared on both Skylake H/S and Skylake Xeon E3 processors
    that share CPUID 506E3.
    
    Signed-off-by: Alexander Sergeyev <sergeev917@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jia Zhang <qianyue.zj@alibaba-inc.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Kyle Huey <me@kylehuey.com>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Link: https://lkml.kernel.org/r/20180313193856.GA8580@localhost.localdomain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8449802675b34e3f5dda79c0bad1016431e958c7
Author: Andy Whitcroft <apw@canonical.com>
Date:   Wed Mar 14 11:24:27 2018 +0000

    x86/speculation, objtool: Annotate indirect calls/jumps for objtool on 32-bit kernels
    
    commit a14bff131108faf50cc0cf864589fd71ee216c96 upstream.
    
    In the following commit:
    
      9e0e3c5130e9 ("x86/speculation, objtool: Annotate indirect calls/jumps for objtool")
    
    ... we added annotations for CALL_NOSPEC/JMP_NOSPEC on 64-bit x86 kernels,
    but we did not annotate the 32-bit path.
    
    Annotate it similarly.
    
    Signed-off-by: Andy Whitcroft <apw@canonical.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20180314112427.22351-1-apw@canonical.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a73ba591708a35d10d2cc7d33d1ac326713a195
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Mar 13 22:03:12 2018 -0700

    x86/vm86/32: Fix POPF emulation
    
    commit b5069782453459f6ec1fdeb495d9901a4545fcb5 upstream.
    
    POPF would trap if VIP was set regardless of whether IF was set.  Fix it.
    
    Suggested-by: Stas Sergeev <stsp@list.ru>
    Reported-by: Bart Oldeman <bartoldeman@gmail.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: 5ed92a8ab71f ("x86/vm86: Use the normal pt_regs area for vm86")
    Link: http://lkml.kernel.org/r/ce95f40556e7b2178b6bc06ee9557827ff94bd28.1521003603.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfb3f12e5a01b803a02fb876bb2af4fc4d5c66af
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Mar 13 22:03:11 2018 -0700

    selftests/x86/entry_from_vm86: Add test cases for POPF
    
    commit 78393fdde2a456cafa414b171c90f26a3df98b20 upstream.
    
    POPF is currently broken -- add tests to catch the error.  This
    results in:
    
       [RUN]        POPF with VIP set and IF clear from vm86 mode
       [INFO]       Exited vm86 mode due to STI
       [FAIL]       Incorrect return reason (started at eip = 0xd, ended at eip = 0xf)
    
    because POPF currently fails to check IF before reporting a pending
    interrupt.
    
    This patch also makes the FAIL message a bit more informative.
    
    Reported-by: Bart Oldeman <bartoldeman@gmail.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stas Sergeev <stsp@list.ru>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/a16270b5cfe7832d6d00c479d0f871066cbdb52b.1521003603.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 673d00d2cc1646882adcd1fa0d348ca03dbed6b7
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Mar 13 22:03:10 2018 -0700

    selftests/x86/entry_from_vm86: Exit with 1 if we fail
    
    commit 327d53d005ca47b10eae940616ed11c569f75a9b upstream.
    
    Fix a logic error that caused the test to exit with 0 even if test
    cases failed.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stas Sergeev <stsp@list.ru>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: bartoldeman@gmail.com
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/b1cc37144038958a469c8f70a5f47a6a5638636a.1521003603.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 733307cf6ba664b8243b89ef152d5b66a5b1dff3
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Mar 5 19:25:51 2018 +0300

    x86/cpufeatures: Add Intel PCONFIG cpufeature
    
    commit 7958b2246fadf54b7ff820a2a5a2c5ca1554716f upstream.
    
    CPUID.0x7.0x0:EDX[18] indicates whether Intel CPU support PCONFIG instruction.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kai Huang <kai.huang@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180305162610.37510-4-kirill.shutemov@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a21fcb3967184955d8226eb801e0f8f0c50af5df
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Mar 5 19:25:49 2018 +0300

    x86/cpufeatures: Add Intel Total Memory Encryption cpufeature
    
    commit 1da961d72ab0cfbe8b7c26cba731dc2bb6b9494b upstream.
    
    CPUID.0x7.0x0:ECX[13] indicates whether CPU supports Intel Total Memory
    Encryption.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kai Huang <kai.huang@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180305162610.37510-2-kirill.shutemov@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>