commit fa745a1bd983b601c3f9c081ebf07dad9e0e3cb9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jul 3 11:25:05 2018 +0200

    Linux 4.14.53

commit 4798e96b7646d562f839b9a87332d86a5aa5bf10
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu May 3 17:30:07 2018 +0300

    xhci: Fix use-after-free in xhci_free_virt_device
    
    commit 44a182b9d17765514fa2b1cc911e4e65134eef93 upstream.
    
    KASAN found a use-after-free in xhci_free_virt_device+0x33b/0x38e
    where xhci_free_virt_device() sets slot id to 0 if udev exists:
    if (dev->udev && dev->udev->slot_id)
            dev->udev->slot_id = 0;
    
    dev->udev will be true even if udev is freed because dev->udev is
    not set to NULL.
    
    set dev->udev pointer to NULL in xhci_free_dev()
    
    The original patch went to stable so this fix needs to be applied
    there as well.
    
    Fixes: a400efe455f7 ("xhci: zero usb device slot_id member when disabling and freeing a xhci slot")
    Cc: <stable@vger.kernel.org>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b19825ffa2838c7a3eaa83851dc19e8d5c527b3
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Tue Jun 26 12:04:23 2018 -0400

    dm thin: handle running out of data space vs concurrent discard
    
    commit a685557fbbc3122ed11e8ad3fa63a11ebc5de8c3 upstream.
    
    Discards issued to a DM thin device can complete to userspace (via
    fstrim) _before_ the metadata changes associated with the discards is
    reflected in the thinp superblock (e.g. free blocks).  As such, if a
    user constructs a test that loops repeatedly over these steps, block
    allocation can fail due to discards not having completed yet:
    1) fill thin device via filesystem file
    2) remove file
    3) fstrim
    
    From initial report, here:
    https://www.redhat.com/archives/dm-devel/2018-April/msg00022.html
    
    "The root cause of this issue is that dm-thin will first remove
    mapping and increase corresponding blocks' reference count to prevent
    them from being reused before DISCARD bios get processed by the
    underlying layers. However. increasing blocks' reference count could
    also increase the nr_allocated_this_transaction in struct sm_disk
    which makes smd->old_ll.nr_allocated +
    smd->nr_allocated_this_transaction bigger than smd->old_ll.nr_blocks.
    In this case, alloc_data_block() will never commit metadata to reset
    the begin pointer of struct sm_disk, because sm_disk_get_nr_free()
    always return an underflow value."
    
    While there is room for improvement to the space-map accounting that
    thinp is making use of: the reality is this test is inherently racey and
    will result in the previous iteration's fstrim's discard(s) completing
    vs concurrent block allocation, via dd, in the next iteration of the
    loop.
    
    No amount of space map accounting improvements will be able to allow
    user's to use a block before a discard of that block has completed.
    
    So the best we can really do is allow DM thinp to gracefully handle such
    aggressive use of all the pool's data by degrading the pool into
    out-of-data-space (OODS) mode.  We _should_ get that behaviour already
    (if space map accounting didn't falsely cause alloc_data_block() to
    believe free space was available).. but short of that we handle the
    current reality that dm_pool_alloc_data_block() can return -ENOSPC.
    
    Reported-by: Dennis Yang <dennisyang@qnap.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb4d8744a8f92626309e391f4b52138662275d0a
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Fri Jun 22 08:09:11 2018 -0700

    dm zoned: avoid triggering reclaim from inside dmz_map()
    
    commit 2d0b2d64d325e22939d9db3ba784f1236459ed98 upstream.
    
    This patch avoids that lockdep reports the following:
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.18.0-rc1 #62 Not tainted
    ------------------------------------------------------
    kswapd0/84 is trying to acquire lock:
    00000000c313516d (&xfs_nondir_ilock_class){++++}, at: xfs_free_eofblocks+0xa2/0x1e0
    
    but task is already holding lock:
    00000000591c83ae (fs_reclaim){+.+.}, at: __fs_reclaim_acquire+0x5/0x30
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #2 (fs_reclaim){+.+.}:
      kmem_cache_alloc+0x2c/0x2b0
      radix_tree_node_alloc.constprop.19+0x3d/0xc0
      __radix_tree_create+0x161/0x1c0
      __radix_tree_insert+0x45/0x210
      dmz_map+0x245/0x2d0 [dm_zoned]
      __map_bio+0x40/0x260
      __split_and_process_non_flush+0x116/0x220
      __split_and_process_bio+0x81/0x180
      __dm_make_request.isra.32+0x5a/0x100
      generic_make_request+0x36e/0x690
      submit_bio+0x6c/0x140
      mpage_readpages+0x19e/0x1f0
      read_pages+0x6d/0x1b0
      __do_page_cache_readahead+0x21b/0x2d0
      force_page_cache_readahead+0xc4/0x100
      generic_file_read_iter+0x7c6/0xd20
      __vfs_read+0x102/0x180
      vfs_read+0x9b/0x140
      ksys_read+0x55/0xc0
      do_syscall_64+0x5a/0x1f0
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    -> #1 (&dmz->chunk_lock){+.+.}:
      dmz_map+0x133/0x2d0 [dm_zoned]
      __map_bio+0x40/0x260
      __split_and_process_non_flush+0x116/0x220
      __split_and_process_bio+0x81/0x180
      __dm_make_request.isra.32+0x5a/0x100
      generic_make_request+0x36e/0x690
      submit_bio+0x6c/0x140
      _xfs_buf_ioapply+0x31c/0x590
      xfs_buf_submit_wait+0x73/0x520
      xfs_buf_read_map+0x134/0x2f0
      xfs_trans_read_buf_map+0xc3/0x580
      xfs_read_agf+0xa5/0x1e0
      xfs_alloc_read_agf+0x59/0x2b0
      xfs_alloc_pagf_init+0x27/0x60
      xfs_bmap_longest_free_extent+0x43/0xb0
      xfs_bmap_btalloc_nullfb+0x7f/0xf0
      xfs_bmap_btalloc+0x428/0x7c0
      xfs_bmapi_write+0x598/0xcc0
      xfs_iomap_write_allocate+0x15a/0x330
      xfs_map_blocks+0x1cf/0x3f0
      xfs_do_writepage+0x15f/0x7b0
      write_cache_pages+0x1ca/0x540
      xfs_vm_writepages+0x65/0xa0
      do_writepages+0x48/0xf0
      __writeback_single_inode+0x58/0x730
      writeback_sb_inodes+0x249/0x5c0
      wb_writeback+0x11e/0x550
      wb_workfn+0xa3/0x670
      process_one_work+0x228/0x670
      worker_thread+0x3c/0x390
      kthread+0x11c/0x140
      ret_from_fork+0x3a/0x50
    
    -> #0 (&xfs_nondir_ilock_class){++++}:
      down_read_nested+0x43/0x70
      xfs_free_eofblocks+0xa2/0x1e0
      xfs_fs_destroy_inode+0xac/0x270
      dispose_list+0x51/0x80
      prune_icache_sb+0x52/0x70
      super_cache_scan+0x127/0x1a0
      shrink_slab.part.47+0x1bd/0x590
      shrink_node+0x3b5/0x470
      balance_pgdat+0x158/0x3b0
      kswapd+0x1ba/0x600
      kthread+0x11c/0x140
      ret_from_fork+0x3a/0x50
    
    other info that might help us debug this:
    
    Chain exists of:
      &xfs_nondir_ilock_class --> &dmz->chunk_lock --> fs_reclaim
    
    Possible unsafe locking scenario:
    
         CPU0                    CPU1
         ----                    ----
    lock(fs_reclaim);
                                 lock(&dmz->chunk_lock);
                                 lock(fs_reclaim);
    lock(&xfs_nondir_ilock_class);

commit 0cfb151b93527711b7af2fea8313bd67459299e2
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Jun 25 15:08:52 2018 +0300

    x86/efi: Fix efi_call_phys_epilog() with CONFIG_X86_5LEVEL=y
    
    commit cfe19577047e74cdac5826adbdc2337d8437f8fb upstream.
    
    Open-coded page table entry checks don't work correctly when we fold the
    page table level at runtime.
    
    pgd_present() on 4-level paging machine always returns true, but
    open-coded version of the check may return false-negative result and
    we silently skip the rest of the loop body in efi_call_phys_epilog().
    
    Replace open-coded checks with proper helpers.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org # v4.12+
    Fixes: 94133e46a0f5 ("x86/efi: Correct EFI identity mapping under 'efi=old_map' when KASLR is enabled")
    Link: http://lkml.kernel.org/r/20180625120852.18300-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 251141340fd8028607a20329217900ce4aac909e
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Jun 27 12:55:18 2018 -0700

    block: Fix cloning of requests with a special payload
    
    commit 297ba57dcdec7ea37e702bcf1a577ac32a034e21 upstream.
    
    This patch avoids that removing a path controlled by the dm-mpath driver
    while mkfs is running triggers the following kernel bug:
    
        kernel BUG at block/blk-core.c:3347!
        invalid opcode: 0000 [#1] PREEMPT SMP KASAN
        CPU: 20 PID: 24369 Comm: mkfs.ext4 Not tainted 4.18.0-rc1-dbg+ #2
        RIP: 0010:blk_end_request_all+0x68/0x70
        Call Trace:
         <IRQ>
         dm_softirq_done+0x326/0x3d0 [dm_mod]
         blk_done_softirq+0x19b/0x1e0
         __do_softirq+0x128/0x60d
         irq_exit+0x100/0x110
         smp_call_function_single_interrupt+0x90/0x330
         call_function_single_interrupt+0xf/0x20
         </IRQ>
    
    Fixes: f9d03f96b988 ("block: improve handling of the magic discard payload")
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Johannes Thumshirn <jthumshirn@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29413e068b2b4b81c0423066029025244f43d32d
Author: Keith Busch <keith.busch@intel.com>
Date:   Tue Jun 26 09:14:58 2018 -0600

    block: Fix transfer when chunk sectors exceeds max
    
    commit 15bfd21fbc5d35834b9ea383dc458a1f0c9e3434 upstream.
    
    A device may have boundary restrictions where the number of sectors
    between boundaries exceeds its max transfer size. In this case, we need
    to cap the max size to the smaller of the two limits.
    
    Reported-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
    Tested-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 804a0db743e01f8d613051497c9c5f6ff03b40c6
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jun 27 23:26:09 2018 -0700

    slub: fix failure when we delete and create a slab cache
    
    commit d50d82faa0c964e31f7a946ba8aba7c715ca7ab0 upstream.
    
    In kernel 4.17 I removed some code from dm-bufio that did slab cache
    merging (commit 21bb13276768: "dm bufio: remove code that merges slab
    caches") - both slab and slub support merging caches with identical
    attributes, so dm-bufio now just calls kmem_cache_create and relies on
    implicit merging.
    
    This uncovered a bug in the slub subsystem - if we delete a cache and
    immediatelly create another cache with the same attributes, it fails
    because of duplicate filename in /sys/kernel/slab/.  The slub subsystem
    offloads freeing the cache to a workqueue - and if we create the new
    cache before the workqueue runs, it complains because of duplicate
    filename in sysfs.
    
    This patch fixes the bug by moving the call of kobject_del from
    sysfs_slab_remove_workfn to shutdown_cache.  kobject_del must be called
    while we hold slab_mutex - so that the sysfs entry is deleted before a
    cache with the same attributes could be created.
    
    Running device-mapper-test-suite with:
    
      dmtest run --suite thin-provisioning -n /commit_failure_causes_fallback/
    
    triggered:
    
      Buffer I/O error on dev dm-0, logical block 1572848, async page read
      device-mapper: thin: 253:1: metadata operation 'dm_pool_alloc_data_block' failed: error = -5
      device-mapper: thin: 253:1: aborting current metadata transaction
      sysfs: cannot create duplicate filename '/kernel/slab/:a-0000144'
      CPU: 2 PID: 1037 Comm: kworker/u48:1 Not tainted 4.17.0.snitm+ #25
      Hardware name: Supermicro SYS-1029P-WTR/X11DDW-L, BIOS 2.0a 12/06/2017
      Workqueue: dm-thin do_worker [dm_thin_pool]
      Call Trace:
       dump_stack+0x5a/0x73
       sysfs_warn_dup+0x58/0x70
       sysfs_create_dir_ns+0x77/0x80
       kobject_add_internal+0xba/0x2e0
       kobject_init_and_add+0x70/0xb0
       sysfs_slab_add+0xb1/0x250
       __kmem_cache_create+0x116/0x150
       create_cache+0xd9/0x1f0
       kmem_cache_create_usercopy+0x1c1/0x250
       kmem_cache_create+0x18/0x20
       dm_bufio_client_create+0x1ae/0x410 [dm_bufio]
       dm_block_manager_create+0x5e/0x90 [dm_persistent_data]
       __create_persistent_data_objects+0x38/0x940 [dm_thin_pool]
       dm_pool_abort_metadata+0x64/0x90 [dm_thin_pool]
       metadata_operation_failed+0x59/0x100 [dm_thin_pool]
       alloc_data_block.isra.53+0x86/0x180 [dm_thin_pool]
       process_cell+0x2a3/0x550 [dm_thin_pool]
       do_worker+0x28d/0x8f0 [dm_thin_pool]
       process_one_work+0x171/0x370
       worker_thread+0x49/0x3f0
       kthread+0xf8/0x130
       ret_from_fork+0x35/0x40
      kobject_add_internal failed for :a-0000144 with -EEXIST, don't try to register things with the same name in the same directory.
      kmem_cache_create(dm_bufio_buffer-16) failed with error -17
    
    Link: http://lkml.kernel.org/r/alpine.LRH.2.02.1806151817130.6333@file01.intranet.prod.int.rdu2.redhat.com
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reported-by: Mike Snitzer <snitzer@redhat.com>
    Tested-by: Mike Snitzer <snitzer@redhat.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.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 cd41a8fac35a92e3b19365181a337d4dd657bb06
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon Jun 25 14:40:56 2018 +0800

    ALSA: hda/realtek - Fix the problem of two front mics on more machines
    
    commit e41fc8c5bd41b96bfae5ce4c66bee6edabc932e8 upstream.
    
    We have 3 more Lenovo machines, they all have 2 front mics on them,
    so they need the fixup to change the location for one of two mics.
    
    Among these 3 Lenovo machines, one of them has the same pin cfg as the
    machine with subid 0x17aa3138, so use the pin cfg table to apply fixup
    for them. The rest machines don't share the same pin cfg, so far use
    the subid to apply fixup for them.
    
    Fixes: a3dafb2200bf ("ALSA: hda/realtek - adjust the location of one mic")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c75f047560cbc39d39ee31a0088fbb8eacd36446
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jun 22 12:17:45 2018 +0200

    ALSA: hda/realtek - Add a quirk for FSC ESPRIMO U9210
    
    commit 275ec0cb946cb75ac8977f662e608fce92f8b8a8 upstream.
    
    Fujitsu Seimens ESPRIMO Mobile U9210 requires the same fixup as H270
    for the correct pin configs.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200107
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59bcd69457c7f0d64531ca4b572e2aab0d061b3f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jun 13 12:43:10 2018 +0200

    ALSA: hda/realtek - Fix pop noise on Lenovo P50 & co
    
    commit d5a6cabf02210b896a60eee7c04c670ee9ba6dca upstream.
    
    Some Lenovo laptops, e.g. Lenovo P50, showed the pop noise at resume
    or runtime resume.  It turned out to be reduced by applying
    alc_no_shutup() just like TPT440 quirk does.
    
    Since there are many Lenovo models showing the same behavior, put this
    workaround in ALC269_FIXUP_THINKPAD_ACPI entry so that it's applied
    commonly to all such Lenovo machines.
    
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Tested-by: Benjamin Berg <bberg@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 69f96e9b570a7e09e8493a50068d08174ce3a3a2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 25 11:09:11 2018 +0200

    ALSA: timer: Fix UBSAN warning at SNDRV_TIMER_IOCTL_NEXT_DEVICE ioctl
    
    commit b41f794f284966fd6ec634111e3b40d241389f96 upstream.
    
    The kernel may spew a WARNING about UBSAN undefined behavior at
    handling ALSA timer ioctl SNDRV_TIMER_IOCTL_NEXT_DEVICE:
    
    UBSAN: Undefined behaviour in sound/core/timer.c:1524:19
    signed integer overflow:
    2147483647 + 1 cannot be represented in type 'int'
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x122/0x1c8 lib/dump_stack.c:113
     ubsan_epilogue+0x12/0x86 lib/ubsan.c:159
     handle_overflow+0x1c2/0x21f lib/ubsan.c:190
     __ubsan_handle_add_overflow+0x2a/0x31 lib/ubsan.c:198
     snd_timer_user_next_device sound/core/timer.c:1524 [inline]
     __snd_timer_user_ioctl+0x204d/0x2520 sound/core/timer.c:1939
     snd_timer_user_ioctl+0x67/0x95 sound/core/timer.c:1994
     ....
    
    It happens only when a value with INT_MAX is passed, as we're
    incrementing it unconditionally.  So the fix is trivial, check the
    value with INT_MAX.  Although the bug itself is fairly harmless, it's
    better to fix it so that fuzzers won't hit this again later.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200213
    Reported-and-tested-by: Team OWL337 <icytxw@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d1de95138fbf54bab0049ae669299e3f1a4c4fe
Author: ??? <kt.liao@emc.com.tw>
Date:   Thu Jun 21 17:15:32 2018 -0700

    Input: elantech - fix V4 report decoding for module with middle key
    
    commit e0ae2519ca004a628fa55aeef969c37edce522d3 upstream.
    
    Some touchpad has middle key and it will be indicated in bit 2 of packet[0].
    We need to fix V4 formation's byte mask to prevent error decoding.
    
    Signed-off-by: KT Liao <kt.liao@emc.com.tw>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 524a0c6f2efde4262356de3d31769439abb27cb5
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Thu Jun 21 17:14:01 2018 -0700

    Input: elantech - enable middle button of touchpads on ThinkPad P52
    
    commit 24bb555e6e46d96e2a954aa0295029a81cc9bbaa upstream.
    
    PNPID is better way to identify the type of touchpads.
    Enable middle button support on 2 types of touchpads on Lenovo P52.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ade767642cc7abee7f14a1d7331fa64e5f475191
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Tue Jun 19 11:17:32 2018 -0700

    Input: elan_i2c_smbus - fix more potential stack buffer overflows
    
    commit 50fc7b61959af4b95fafce7fe5dd565199e0b61a upstream.
    
    Commit 40f7090bb1b4 ("Input: elan_i2c_smbus - fix corrupted stack")
    fixed most of the functions using i2c_smbus_read_block_data() to
    allocate a buffer with the maximum block size.  However three
    functions were left unchanged:
    
    * In elan_smbus_initialize(), increase the buffer size in the same
      way.
    * In elan_smbus_calibrate_result(), the buffer is provided by the
      caller (calibrate_store()), so introduce a bounce buffer.  Also
      name the result buffer size.
    * In elan_smbus_get_report(), the buffer is provided by the caller
      but happens to be the right length.  Add a compile-time assertion
      to ensure this remains the case.
    
    Cc: <stable@vger.kernel.org> # 3.19+
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fa052853d4862988f22f1f9a030d1df44a2e8c1
Author: Enno Boland <gottox@voidlinux.eu>
Date:   Tue Jun 19 11:55:33 2018 -0700

    Input: xpad - fix GPD Win 2 controller name
    
    commit dd6bee81c942c0ea01030da9356026afb88f9d18 upstream.
    
    This fixes using the controller with SDL2.
    
    SDL2 has a naive algorithm to apply the correct settings to a controller.
    For X-Box compatible controllers it expects that the controller name
    contains a variation of a 'XBOX'-string.
    
    This patch changes the identifier to contain "X-Box" as substring.  Tested
    with Steam and C-Dogs-SDL which both detect the controller properly after
    adding this patch.
    
    Fixes: c1ba08390a8b ("Input: xpad - add GPD Win 2 Controller USB IDs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Enno Boland <gottox@voidlinux.eu>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b241aa840df5c7af16eb1ad0b614a372a639caa
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jun 13 12:09:22 2018 +0200

    udf: Detect incorrect directory size
    
    commit fa65653e575fbd958bdf5fb9c4a71a324e39510d upstream.
    
    Detect when a directory entry is (possibly partially) beyond directory
    size and return EIO in that case since it means the filesystem is
    corrupted. Otherwise directory operations can further corrupt the
    directory and possibly also oops the kernel.
    
    CC: Anatoly Trosinenko <anatoly.trosinenko@gmail.com>
    CC: stable@vger.kernel.org
    Reported-and-tested-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d08dfdeaf49d240674fff55189a0d8349aeb0858
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Thu Jun 21 13:29:44 2018 -0400

    xen: Remove unnecessary BUG_ON from __unbind_from_irq()
    
    commit eef04c7b3786ff0c9cb1019278b6c6c2ea0ad4ff upstream.
    
    Commit 910f8befdf5b ("xen/pirq: fix error path cleanup when binding
    MSIs") fixed a couple of errors in error cleanup path of
    xen_bind_pirq_msi_to_irq(). This cleanup allowed a call to
    __unbind_from_irq() with an unbound irq, which would result in
    triggering the BUG_ON there.
    
    Since there is really no reason for the BUG_ON (xen_free_irq() can
    operate on unbound irqs) we can remove it.
    
    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fff76ff5e2b0b299d9c9ed0003b88c2837d9e745
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Jun 14 15:26:24 2018 -0700

    mm: fix devmem_is_allowed() for sub-page System RAM intersections
    
    commit 2bdce74412c249ac01dfe36b6b0043ffd7a5361e upstream.
    
    Hussam reports:
    
        I was poking around and for no real reason, I did cat /dev/mem and
        strings /dev/mem.  Then I saw the following warning in dmesg. I saved it
        and rebooted immediately.
    
         memremap attempted on mixed range 0x000000000009c000 size: 0x1000
         ------------[ cut here ]------------
         WARNING: CPU: 0 PID: 11810 at kernel/memremap.c:98 memremap+0x104/0x170
         [..]
         Call Trace:
          xlate_dev_mem_ptr+0x25/0x40
          read_mem+0x89/0x1a0
          __vfs_read+0x36/0x170
    
    The memremap() implementation checks for attempts to remap System RAM
    with MEMREMAP_WB and instead redirects those mapping attempts to the
    linear map.  However, that only works if the physical address range
    being remapped is page aligned.  In low memory we have situations like
    the following:
    
        00000000-00000fff : Reserved
        00001000-0009fbff : System RAM
        0009fc00-0009ffff : Reserved
    
    ...where System RAM intersects Reserved ranges on a sub-page page
    granularity.
    
    Given that devmem_is_allowed() special cases any attempt to map System
    RAM in the first 1MB of memory, replace page_is_ram() with the more
    precise region_intersects() to trap attempts to map disallowed ranges.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=199999
    Link: http://lkml.kernel.org/r/152856436164.18127.2847888121707136898.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 92281dee825f ("arch: introduce memremap()")
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Reported-by: Hussam Al-Tayeb <me@hussam.eu.org>
    Tested-by: Hussam Al-Tayeb <me@hussam.eu.org>
    Cc: Christoph Hellwig <hch@lst.de>
    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 6f23028480c435a58873a1bb9d4d51cba8e6c1b2
Author: Jia He <jia.he@hxt-semitech.com>
Date:   Thu Jun 14 15:26:14 2018 -0700

    mm/ksm.c: ignore STABLE_FLAG of rmap_item->address in rmap_walk_ksm()
    
    commit 1105a2fc022f3c7482e32faf516e8bc44095f778 upstream.
    
    In our armv8a server(QDF2400), I noticed lots of WARN_ON caused by
    PAGE_SIZE unaligned for rmap_item->address under memory pressure
    tests(start 20 guests and run memhog in the host).
    
      WARNING: CPU: 4 PID: 4641 at virt/kvm/arm/mmu.c:1826 kvm_age_hva_handler+0xc0/0xc8
      CPU: 4 PID: 4641 Comm: memhog Tainted: G        W 4.17.0-rc3+ #8
      Call trace:
       kvm_age_hva_handler+0xc0/0xc8
       handle_hva_to_gpa+0xa8/0xe0
       kvm_age_hva+0x4c/0xe8
       kvm_mmu_notifier_clear_flush_young+0x54/0x98
       __mmu_notifier_clear_flush_young+0x6c/0xa0
       page_referenced_one+0x154/0x1d8
       rmap_walk_ksm+0x12c/0x1d0
       rmap_walk+0x94/0xa0
       page_referenced+0x194/0x1b0
       shrink_page_list+0x674/0xc28
       shrink_inactive_list+0x26c/0x5b8
       shrink_node_memcg+0x35c/0x620
       shrink_node+0x100/0x430
       do_try_to_free_pages+0xe0/0x3a8
       try_to_free_pages+0xe4/0x230
       __alloc_pages_nodemask+0x564/0xdc0
       alloc_pages_vma+0x90/0x228
       do_anonymous_page+0xc8/0x4d0
       __handle_mm_fault+0x4a0/0x508
       handle_mm_fault+0xf8/0x1b0
       do_page_fault+0x218/0x4b8
       do_translation_fault+0x90/0xa0
       do_mem_abort+0x68/0xf0
       el0_da+0x24/0x28
    
    In rmap_walk_ksm, the rmap_item->address might still have the
    STABLE_FLAG, then the start and end in handle_hva_to_gpa might not be
    PAGE_SIZE aligned.  Thus it will cause exceptions in handle_hva_to_gpa
    on arm64.
    
    This patch fixes it by ignoring (not removing) the low bits of address
    when doing rmap_walk_ksm.
    
    IMO, it should be backported to stable tree.  the storm of WARN_ONs is
    very easy for me to reproduce.  More than that, I watched a panic (not
    reproducible) as follows:
    
      page:ffff7fe003742d80 count:-4871 mapcount:-2126053375 mapping: (null) index:0x0
      flags: 0x1fffc00000000000()
      raw: 1fffc00000000000 0000000000000000 0000000000000000 ffffecf981470000
      raw: dead000000000100 dead000000000200 ffff8017c001c000 0000000000000000
      page dumped because: nonzero _refcount
      CPU: 29 PID: 18323 Comm: qemu-kvm Tainted: G W 4.14.15-5.hxt.aarch64 #1
      Hardware name: <snip for confidential issues>
      Call trace:
        dump_backtrace+0x0/0x22c
        show_stack+0x24/0x2c
        dump_stack+0x8c/0xb0
        bad_page+0xf4/0x154
        free_pages_check_bad+0x90/0x9c
        free_pcppages_bulk+0x464/0x518
        free_hot_cold_page+0x22c/0x300
        __put_page+0x54/0x60
        unmap_stage2_range+0x170/0x2b4
        kvm_unmap_hva_handler+0x30/0x40
        handle_hva_to_gpa+0xb0/0xec
        kvm_unmap_hva_range+0x5c/0xd0
    
    I even injected a fault on purpose in kvm_unmap_hva_range by seting
    size=size-0x200, the call trace is similar as above.  So I thought the
    panic is similarly caused by the root cause of WARN_ON.
    
    Andrea said:
    
    : It looks a straightforward safe fix, on x86 hva_to_gfn_memslot would
    : zap those bits and hide the misalignment caused by the low metadata
    : bits being erroneously left set in the address, but the arm code
    : notices when that's the last page in the memslot and the hva_end is
    : getting aligned and the size is below one page.
    :
    : I think the problem triggers in the addr += PAGE_SIZE of
    : unmap_stage2_ptes that never matches end because end is aligned but
    : addr is not.
    :
    :       } while (pte++, addr += PAGE_SIZE, addr != end);
    :
    : x86 again only works on hva_start/hva_end after converting it to
    : gfn_start/end and that being in pfn units the bits are zapped before
    : they risk to cause trouble.
    
    Jia He said:
    
    : I've tested by myself in arm64 server (QDF2400,46 cpus,96G mem) Without
    : this patch, the WARN_ON is very easy for reproducing.  After this patch, I
    : have run the same benchmarch for a whole day without any WARN_ONs
    
    Link: http://lkml.kernel.org/r/1525403506-6750-1-git-send-email-hejianet@gmail.com
    Signed-off-by: Jia He <jia.he@hxt-semitech.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Tested-by: Jia He <hejianet@gmail.com>
    Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Cc: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76022230aa643deebdc4e4c551f3da7782bb3dee
Author: Dongsheng Yang <dongsheng.yang@easystack.cn>
Date:   Mon Jun 4 06:24:37 2018 -0400

    rbd: flush rbd_dev->watch_dwork after watch is unregistered
    
    commit 23edca864951250af845a11da86bb3ea63522ed2 upstream.
    
    There is a problem if we are going to unmap a rbd device and the
    watch_dwork is going to queue delayed work for watch:
    
    unmap Thread                    watch Thread                  timer
    do_rbd_remove
      cancel_tasks_sync(rbd_dev)
                                    queue_delayed_work for watch
      destroy_workqueue(rbd_dev->task_wq)
        drain_workqueue(wq)
        destroy other resources in wq
                                                                  call_timer_fn
                                                                    __queue_work()
    
    Then the delayed work escape the cancel_tasks_sync() and
    destroy_workqueue() and we will get an user-after-free call trace:
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP PTI
      Modules linked in:
      CPU: 7 PID: 0 Comm: swapper/7 Tainted: G           OE     4.17.0-rc6+ #13
      Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
      RIP: 0010:__queue_work+0x6a/0x3b0
      RSP: 0018:ffff9427df1c3e90 EFLAGS: 00010086
      RAX: ffff9427deca8400 RBX: 0000000000000000 RCX: 0000000000000000
      RDX: ffff9427deca8400 RSI: ffff9427df1c3e50 RDI: 0000000000000000
      RBP: ffff942783e39e00 R08: ffff9427deca8400 R09: ffff9427df1c3f00
      R10: 0000000000000004 R11: 0000000000000005 R12: ffff9427cfb85970
      R13: 0000000000002000 R14: 000000000001eca0 R15: 0000000000000007
      FS:  0000000000000000(0000) GS:ffff9427df1c0000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 00000004c900a005 CR4: 00000000000206e0
      Call Trace:
       <IRQ>
       ? __queue_work+0x3b0/0x3b0
       call_timer_fn+0x2d/0x130
       run_timer_softirq+0x16e/0x430
       ? tick_sched_timer+0x37/0x70
       __do_softirq+0xd2/0x280
       irq_exit+0xd5/0xe0
       smp_apic_timer_interrupt+0x6c/0x130
       apic_timer_interrupt+0xf/0x20
    
    [ Move rbd_dev->watch_dwork cancellation so that rbd_reregister_watch()
      either bails out early because the watch is UNREGISTERED at that point
      or just gets cancelled. ]
    
    Cc: stable@vger.kernel.org
    Fixes: 99d1694310df ("rbd: retry watch re-registration periodically")
    Signed-off-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c718460f5a3adc0e1363e37430330295477b108
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 14:10:23 2018 +0200

    pwm: lpss: platform: Save/restore the ctrl register over a suspend/resume
    
    commit 1d375b58c12f08d8570b30b865def4734517f04f upstream.
    
    On some devices the contents of the ctrl register get lost over a
    suspend/resume and the PWM comes back up disabled after the resume.
    
    This is seen on some Bay Trail devices with the PWM in ACPI enumerated
    mode, so it shows up as a platform device instead of a PCI device.
    
    If we still think it is enabled and then try to change the duty-cycle
    after this, we end up with a "PWM_SW_UPDATE was not cleared" error and
    the PWM is stuck in that state from then on.
    
    This commit adds suspend and resume pm callbacks to the pwm-lpss-platform
    code, which save/restore the ctrl register over a suspend/resume, fixing
    this.
    
    Note that:
    
    1) There is no need to do this over a runtime suspend, since we
    only runtime suspend when disabled and then we properly set the enable
    bit and reprogram the timings when we re-enable the PWM.
    
    2) This may be happening on more systems then we realize, but has been
    covered up sofar by a bug in the acpi-lpss.c code which was save/restoring
    the regular device registers instead of the lpss private registers due to
    lpss_device_desc.prv_offset not being set. This is fixed by a later patch
    in this series.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24ab6e6858e762ade66aebf80ba02f6c4f2311b9
Author: Alexandr Savca <alexandr.savca@saltedge.com>
Date:   Thu Jun 21 17:12:54 2018 -0700

    Input: elan_i2c - add ELAN0618 (Lenovo v330 15IKB) ACPI ID
    
    commit 8938fc7b8fe9ccfa11751ead502a8d385b607967 upstream.
    
    Add ELAN0618 to the list of supported touchpads; this ID is used in
    Lenovo v330 15IKB devices.
    
    Signed-off-by: Alexandr Savca <alexandr.savca@saltedge.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7f3c0abac1dbba0581904ef9c9643efb0415154
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 14:10:24 2018 +0200

    ACPI / LPSS: Add missing prv_offset setting for byt/cht PWM devices
    
    commit fdcb613d49321b5bf5d5a1bd0fba8e7c241dcc70 upstream.
    
    The LPSS PWM device on on Bay Trail and Cherry Trail devices has a set
    of private registers at offset 0x800, the current lpss_device_desc for
    them already sets the LPSS_SAVE_CTX flag to have these saved/restored
    over device-suspend, but the current lpss_device_desc was not setting
    the prv_offset field, leading to the regular device registers getting
    saved/restored instead.
    
    This is causing the PWM controller to no longer work, resulting in a black
    screen,  after a suspend/resume on systems where the firmware clears the
    APB clock and reset bits at offset 0x804.
    
    This commit fixes this by properly setting prv_offset to 0x800 for
    the PWM devices.
    
    Cc: stable@vger.kernel.org
    Fixes: e1c748179754 ("ACPI / LPSS: Add Intel BayTrail ACPI mode PWM")
    Fixes: 1bfbd8eb8a7f ("ACPI / LPSS: Add ACPI IDs for Intel Braswell")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Rafael J . Wysocki <rjw@rjwysocki.net>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9aa818d42bf5f5477f66dbc941b4daddfcae290d
Author: Kees Cook <keescook@chromium.org>
Date:   Fri May 11 18:24:12 2018 +1000

    video: uvesafb: Fix integer overflow in allocation
    
    commit 9f645bcc566a1e9f921bdae7528a01ced5bc3713 upstream.
    
    cmap->len can get close to INT_MAX/2, allowing for an integer overflow in
    allocation. This uses kmalloc_array() instead to catch the condition.
    
    Reported-by: Dr Silvio Cesare of InfoSect <silvio.cesare@gmail.com>
    Fixes: 8bdb3a2d7df48 ("uvesafb: the driver core")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb7fecb4d90fd0808b45f50befa7a07917b3ff9e
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat Jun 9 12:50:50 2018 -0400

    NFSv4: Fix a typo in nfs41_sequence_process
    
    commit 995891006ccbb73c0c9c3923cf9d25c4d07ec16b upstream.
    
    We want to compare the slot_id to the highest slot number advertised by the
    server.
    
    Fixes: 3be0f80b5fe9c ("NFSv4.1: Fix up replays of interrupted requests")
    Cc: stable@vger.kernel.org # 4.15+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63715ead82c5d784798427ba5e5d21b9bc7717e2
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat Jun 9 12:43:06 2018 -0400

    NFSv4: Revert commit 5f83d86cf531d ("NFSv4.x: Fix wraparound issues..")
    
    commit fc40724fc6731d90cc7fb6d62d66135f85a33dd2 upstream.
    
    The correct behaviour for NFSv4 sequence IDs is to wrap around
    to the value 0 after 0xffffffff.
    See https://tools.ietf.org/html/rfc5661#section-2.10.6.1
    
    Fixes: 5f83d86cf531d ("NFSv4.x: Fix wraparound issues when validing...")
    Cc: stable@vger.kernel.org # 4.6+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c92d800fc9c408d09526e6651154743cd6c23c29
Author: Dave Wysochanski <dwysocha@redhat.com>
Date:   Tue May 29 17:47:30 2018 -0400

    NFSv4: Fix possible 1-byte stack overflow in nfs_idmap_read_and_verify_message
    
    commit d68894800ec5712d7ddf042356f11e36f87d7f78 upstream.
    
    In nfs_idmap_read_and_verify_message there is an incorrect sprintf '%d'
    that converts the __u32 'im_id' from struct idmap_msg to 'id_str', which
    is a stack char array variable of length NFS_UINT_MAXLEN == 11.
    If a uid or gid value is > 2147483647 = 0x7fffffff, the conversion
    overflows into a negative value, for example:
    crash> p (unsigned) (0x80000000)
    $1 = 2147483648
    crash> p (signed) (0x80000000)
    $2 = -2147483648
    The '-' sign is written to the buffer and this causes a 1 byte overflow
    when the NULL byte is written, which corrupts kernel stack memory.  If
    CONFIG_CC_STACKPROTECTOR_STRONG is set we see a stack-protector panic:
    
    [11558053.616565] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: ffffffffa05b8a8c
    [11558053.639063] CPU: 6 PID: 9423 Comm: rpc.idmapd Tainted: G        W      ------------ T 3.10.0-514.el7.x86_64 #1
    [11558053.641990] Hardware name: Red Hat OpenStack Compute, BIOS 1.10.2-3.el7_4.1 04/01/2014
    [11558053.644462]  ffffffff818c7bc0 00000000b1f3aec1 ffff880de0f9bd48 ffffffff81685eac
    [11558053.646430]  ffff880de0f9bdc8 ffffffff8167f2b3 ffffffff00000010 ffff880de0f9bdd8
    [11558053.648313]  ffff880de0f9bd78 00000000b1f3aec1 ffffffff811dcb03 ffffffffa05b8a8c
    [11558053.650107] Call Trace:
    [11558053.651347]  [<ffffffff81685eac>] dump_stack+0x19/0x1b
    [11558053.653013]  [<ffffffff8167f2b3>] panic+0xe3/0x1f2
    [11558053.666240]  [<ffffffff811dcb03>] ? kfree+0x103/0x140
    [11558053.682589]  [<ffffffffa05b8a8c>] ? idmap_pipe_downcall+0x1cc/0x1e0 [nfsv4]
    [11558053.689710]  [<ffffffff810855db>] __stack_chk_fail+0x1b/0x30
    [11558053.691619]  [<ffffffffa05b8a8c>] idmap_pipe_downcall+0x1cc/0x1e0 [nfsv4]
    [11558053.693867]  [<ffffffffa00209d6>] rpc_pipe_write+0x56/0x70 [sunrpc]
    [11558053.695763]  [<ffffffff811fe12d>] vfs_write+0xbd/0x1e0
    [11558053.702236]  [<ffffffff810acccc>] ? task_work_run+0xac/0xe0
    [11558053.704215]  [<ffffffff811fec4f>] SyS_write+0x7f/0xe0
    [11558053.709674]  [<ffffffff816964c9>] system_call_fastpath+0x16/0x1b
    
    Fix this by calling the internally defined nfs_map_numeric_to_string()
    function which properly uses '%u' to convert this __u32.  For consistency,
    also replace the one other place where snprintf is called.
    
    Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
    Reported-by: Stephen Johnston <sjohnsto@redhat.com>
    Fixes: cf4ab538f1516 ("NFSv4: Fix the string length returned by the idmapper")
    Cc: stable@vger.kernel.org # v3.4+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89864c2e7506ff0b5d62734b31872a5b6ddfb3ab
Author: Scott Mayhew <smayhew@redhat.com>
Date:   Mon May 7 09:01:08 2018 -0400

    nfsd: restrict rd_maxcount to svc_max_payload in nfsd_encode_readdir
    
    commit 9c2ece6ef67e9d376f32823086169b489c422ed0 upstream.
    
    nfsd4_readdir_rsize restricts rd_maxcount to svc_max_payload when
    estimating the size of the readdir reply, but nfsd_encode_readdir
    restricts it to INT_MAX when encoding the reply.  This can result in log
    messages like "kernel: RPC request reserved 32896 but used 1049444".
    
    Restrict rd_dircount similarly (no reason it should be larger than
    svc_max_payload).
    
    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 c508ed236c8b2dab6f19a6727704cc77ffe5dc1e
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Thu Apr 5 05:30:52 2018 -0400

    media: dvb_frontend: fix locking issues at dvb_frontend_get_event()
    
    commit 76d81243a487c09619822ef8e7201a756e58a87d upstream.
    
    As warned by smatch:
            drivers/media/dvb-core/dvb_frontend.c:314 dvb_frontend_get_event() warn: inconsistent returns 'sem:&fepriv->sem'.
              Locked on:   line 288
                           line 295
                           line 306
                           line 314
              Unlocked on: line 303
    
    The lock implementation for get event is wrong, as, if an
    interrupt occurs, down_interruptible() will fail, and the
    routine will call up() twice when userspace calls the ioctl
    again.
    
    The bad code is there since when Linux migrated to git, in
    2005.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c40fa51428b50343e7964faea0aae2810750bc2
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Mon Mar 26 02:06:16 2018 -0400

    media: cx231xx: Add support for AverMedia DVD EZMaker 7
    
    commit 29e61d6ef061b012d320327af7dbb3990e75be45 upstream.
    
    User reports AverMedia DVD EZMaker 7 can be driven by VIDEO_GRABBER.
    Add the device to the id_table to make it work.
    
    BugLink: https://bugs.launchpad.net/bugs/1620762
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Hans Verkuil <hansverk@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06b846486668e1de1d350f8adc86c3d36f01a4ac
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Wed Apr 11 11:47:32 2018 -0400

    media: v4l2-compat-ioctl32: prevent go past max size
    
    commit ea72fbf588ac9c017224dcdaa2019ff52ca56fee upstream.
    
    As warned by smatch:
            drivers/media/v4l2-core/v4l2-compat-ioctl32.c:879 put_v4l2_ext_controls32() warn: check for integer overflow 'count'
    
    The access_ok() logic should check for too big arrays too.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b28f53169c0f4947f6745a993fe655c7c7a9ff8a
Author: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Date:   Fri May 18 16:41:54 2018 -0400

    media: vsp1: Release buffers for each video node
    
    commit 83967993f2320575c0ab27a80bf1d7535909c2f4 upstream.
    
    Commit 372b2b0399fc ("media: v4l: vsp1: Release buffers in
    start_streaming error path") introduced a helper to clean up buffers on
    error paths, but inadvertently changed the code such that only the
    output WPF buffers were cleaned, rather than the video node being
    operated on.
    
    Since then vsp1_video_cleanup_pipeline() has grown to perform both video
    node cleanup, as well as pipeline cleanup. Split the implementation into
    two distinct functions that perform the required work, so that each
    video node can release its buffers correctly on streamoff. The pipe
    cleanup that was performed in the vsp1_video_stop_streaming() (releasing
    the pipe->dl) is moved to the function for clarity.
    
    Fixes: 372b2b0399fc ("media: v4l: vsp1: Release buffers in start_streaming error path")
    
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3564366d550960865c273e8ce90130f6e1929aaa
Author: Kan Liang <kan.liang@intel.com>
Date:   Tue Nov 14 06:06:40 2017 -0800

    perf/x86/intel/uncore: Add event constraint for BDX PCU
    
    commit bb9fbe1b57503f790dbbf9f06e72cb0fb9e60740 upstream.
    
    Event select bit 7 'Use Occupancy' in PCU Box is not available for
    counter 0 on BDX
    
    Add a constraint to fix it.
    
    Reported-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Kan Liang <kan.liang@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Stephane Eranian <eranian@google.com>
    Cc: peterz@infradead.org
    Cc: ak@linux.intel.com
    Link: https://lkml.kernel.org/r/1510668400-301000-1-git-send-email-kan.liang@intel.com
    Cc: "Jin, Yao" <yao.jin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cb6105d2211e96250db10cda6202d7e40c3d3fc
Author: Kan Liang <Kan.liang@intel.com>
Date:   Wed Oct 18 06:05:07 2017 -0700

    perf vendor events: Add Goldmont Plus V1 event file
    
    commit 65db92e0965ab56e8031d5c804f26d5be0e47047 upstream.
    
    Add a Intel event file for perf.
    
    Signed-off-by: Kan Liang <Kan.liang@intel.com>
    Acked-by: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/1508331907-395162-1-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: "Jin, Yao" <yao.jin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3382e70a0435cb93eb09fd39c3419d2f8875b5d
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Jun 7 14:30:02 2018 +0300

    perf intel-pt: Fix packet decoding of CYC packets
    
    commit 621a5a327c1e36ffd7bb567f44a559f64f76358f upstream.
    
    Use a 64-bit type so that the cycle count is not limited to 32-bits.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1528371002-8862-1-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e7b3632eafa50c8d2225a4f70c7012a0ff8258b
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu May 31 13:23:45 2018 +0300

    perf intel-pt: Fix "Unexpected indirect branch" error
    
    commit 9fb523363f6e3984457fee95bb7019395384ffa7 upstream.
    
    Some Atom CPUs can produce FUP packets that contain NLIP (next linear
    instruction pointer) instead of CLIP (current linear instruction
    pointer).  That will result in "Unexpected indirect branch" errors. Fix
    by comparing IP to NLIP in that case.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1527762225-26024-5-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65a163984abe6450c0f7f957581c1a8fc019e946
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu May 31 13:23:44 2018 +0300

    perf intel-pt: Fix MTC timing after overflow
    
    commit dd27b87ab5fcf3ea1c060b5e3ab5d31cc78e9f4c upstream.
    
    On some platforms, overflows will clear before MTC wraparound, and there
    is no following TSC/TMA packet. In that case the previous TMA is valid.
    Since there will be a valid TMA either way, stop setting 'have_tma' to
    false upon overflow.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1527762225-26024-4-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1587f178eb14ae98443494adafde35b8ac6f43c
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu May 31 13:23:43 2018 +0300

    perf intel-pt: Fix decoding to accept CBR between FUP and corresponding TIP
    
    commit bd2e49ec48feb1855f7624198849eea4610e2286 upstream.
    
    It is possible to have a CBR packet between a FUP packet and
    corresponding TIP packet. Stop treating it as an error.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1527762225-26024-3-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9db211cfb9e29456edc7cbf302b2b4c44b3d87
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu May 31 13:23:42 2018 +0300

    perf intel-pt: Fix sync_switch INTEL_PT_SS_NOT_TRACING
    
    commit dbcb82b93f3e8322891e47472c89e63058b81e99 upstream.
    
    sync_switch is a facility to synchronize decoding more closely with the
    point in the kernel when the context actually switched.
    
    In one case, INTEL_PT_SS_NOT_TRACING state was not correctly
    transitioning to INTEL_PT_SS_TRACING state due to a missing case clause.
    Add it.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1527762225-26024-2-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5009bd5b93212a206cdf09bd849779ac63847a73
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Jun 4 15:56:54 2018 +0300

    perf tools: Fix symbol and object code resolution for vdso32 and vdsox32
    
    commit aef4feace285f27c8ed35830a5d575bec7f3e90a upstream.
    
    Fix __kmod_path__parse() so that perf tools does not treat vdso32 and
    vdsox32 as kernel modules and fail to find the object.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: stable@vger.kernel.org
    Fixes: 1f121b03d058 ("perf tools: Deal with kernel module names in '[]' correctly")
    Link: http://lkml.kernel.org/r/1528117014-30032-3-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f810961e06c6a8b2cdff26a8bac1e38921608673
Author: Sean Wang <sean.wang@mediatek.com>
Date:   Wed Apr 11 16:53:56 2018 +0800

    arm: dts: mt7623: fix invalid memory node being generated
    
    commit c0b0d540db1a8bfb041166c4991dd6f624e8de45 upstream.
    
    Below two wrong nodes in existing DTS files would cause a fail boot since
    in fact the address 0 is not the correct place the memory device locates
    at.
    
    memory {
            device_type = "memory";
            reg = <0x0 0x0 0x0 0x0>;
    };
    
    memory@80000000 {
            reg = <0x0 0x80000000 0x0 0x40000000>;
    };
    
    In order to avoid having a memory node starting at address 0, we can't
    include file skeleton64.dtsi and instead need to explicitly manually
    define a few of properties the DTS relies on such as #address-cells
    and #size-cells in root node and device_type in the node memory@80000000.
    
    Cc: stable@vger.kernel.org
    Fixes: 31ac0d69a1d4 ("ARM: dts: mediatek: add MT7623 basic support")
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Cc: Rob Herring <robh+dt@kernel.org>
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18be8bd3aceb282c145b74144caaccb51b24bf92
Author: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Date:   Fri May 18 11:38:27 2018 +0300

    mfd: intel-lpss: Fix Intel Cannon Lake LPSS I2C input clock
    
    commit 4e93a658576ab115977225c9d0992b97ff19ba8c upstream.
    
    Intel Cannon Lake PCH has much higher 216 MHz input clock to LPSS I2C
    than Sunrisepoint which uses 120 MHz. Preliminary information was that
    both share the same clock rate but actual silicon implements elevated
    rate for better support for 3.4 MHz high-speed I2C.
    
    This incorrect input clock rate results too high I2C bus clock in case
    ACPI doesn't provide tuned I2C timing parameters since I2C host
    controller driver calculates them from input clock rate.
    
    Fix this by using the correct rate. We still share the same 230 ns SDA
    hold time value than Sunrisepoint.
    
    Cc: stable@vger.kernel.org
    Fixes: b418bbff36dd ("mfd: intel-lpss: Add Intel Cannonlake PCI IDs")
    Reported-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Reported-by: Chris Chiu <chiu@endlessm.com>
    Reported-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Tested-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f79c97198b5596fa8052938471bd67ae6ccb4067
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Apr 24 18:00:10 2018 +0300

    mfd: intel-lpss: Program REMAP register in PIO mode
    
    commit d28b62520830b2d0bffa2d98e81afc9f5e537e8b upstream.
    
    According to documentation REMAP register has to be programmed in
    either DMA or PIO mode of the slice.
    
    Move the DMA capability check below to let REMAP register be programmed
    in PIO mode.
    
    Cc: stable@vger.kernel.org # 4.3+
    Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 779d5f71c2323ef5610e7c3d9bdb73e5f92f660e
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 20 11:45:46 2017 +0100

    backlight: tps65217_bl: Fix Device Tree node lookup
    
    commit 2b12dfa124dbadf391cb9a616aaa6b056823bf75 upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    This would only cause trouble if the child node is missing while there
    is an unrelated node named "backlight" elsewhere in the tree.
    
    Cc: stable <stable@vger.kernel.org>     # 3.7
    Fixes: eebfdc17cc6c ("backlight: Add TPS65217 WLED driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f893fca0a4b5ac0ea6003945e791486eac32b90c
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 20 11:45:45 2017 +0100

    backlight: max8925_bl: Fix Device Tree node lookup
    
    commit d1cc0ec3da23e44c23712579515494b374f111c9 upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent mfd node was also prematurely freed,
    while the child backlight node was leaked.
    
    Cc: stable <stable@vger.kernel.org>     # 3.9
    Fixes: 47ec340cb8e2 ("mfd: max8925: Support dt for backlight")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3db7c40093f6dc58fdfaf2723980955dedadf0a3
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 20 11:45:44 2017 +0100

    backlight: as3711_bl: Fix Device Tree node lookup
    
    commit 4a9c8bb2aca5b5a2a15744333729745dd9903562 upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent mfd node was also prematurely freed.
    
    Cc: stable <stable@vger.kernel.org>     # 3.10
    Fixes: 59eb2b5e57ea ("drivers/video/backlight/as3711_bl.c: add OF support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7261fc5f5748b3f6f1a839dbc5a744b8871dfcd
Author: Silvio Cesare <silvio.cesare@gmail.com>
Date:   Fri May 4 13:44:02 2018 +1000

    UBIFS: Fix potential integer overflow in allocation
    
    commit 353748a359f1821ee934afc579cf04572406b420 upstream.
    
    There is potential for the size and len fields in ubifs_data_node to be
    too large causing either a negative value for the length fields or an
    integer overflow leading to an incorrect memory allocation. Likewise,
    when the len field is small, an integer underflow may occur.
    
    Signed-off-by: Silvio Cesare <silvio.cesare@gmail.com>
    Fixes: 1e51764a3c2ac ("UBIFS: add new flash file system")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a23cf10d9abb04652ec2daf93d494dc0e2cd835f
Author: Richard Weinberger <richard@nod.at>
Date:   Mon May 28 22:04:32 2018 +0200

    ubi: fastmap: Correctly handle interrupted erasures in EBA
    
    commit 781932375ffc6411713ee0926ccae8596ed0261c upstream.
    
    Fastmap cannot track the LEB unmap operation, therefore it can
    happen that after an interrupted erasure the mapping still looks
    good from Fastmap's point of view, while reading from the PEB will
    cause an ECC error and confuses the upper layer.
    
    Instead of teaching users of UBI how to deal with that, we read back
    the VID header and check for errors. If the PEB is empty or shows ECC
    errors we fixup the mapping and schedule the PEB for erasure.
    
    Fixes: dbb7d2a88d2a ("UBI: Add fastmap core")
    Cc: <stable@vger.kernel.org>
    Reported-by: martin bayern <Martinbayern@outlook.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b24d90f4d66d9e1f1313cd9bb47cdf0643894ab1
Author: Richard Weinberger <richard@nod.at>
Date:   Wed May 16 22:17:03 2018 +0200

    ubi: fastmap: Cancel work upon detach
    
    commit 6e7d80161066c99d12580d1b985cb1408bb58cf1 upstream.
    
    Ben Hutchings pointed out that 29b7a6fa1ec0 ("ubi: fastmap: Don't flush
    fastmap work on detach") does not really fix the problem, it just
    reduces the risk to hit the race window where fastmap work races against
    free()'ing ubi->volumes[].
    
    The correct approach is making sure that no more fastmap work is in
    progress before we free ubi data structures.
    So we cancel fastmap work right after the ubi background thread is
    stopped.
    By setting ubi->thread_enabled to zero we make sure that no further work
    tries to wake the thread.
    
    Fixes: 29b7a6fa1ec0 ("ubi: fastmap: Don't flush fastmap work on detach")
    Fixes: 74cdaf24004a ("UBI: Fastmap: Fix memory leaks while closing the WL sub-system")
    Cc: stable@vger.kernel.org
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Cc: Martin Townsend <mtownsend1973@gmail.com>
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db04f92b658083a0a2842919c6d8f9013bff2d08
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Mon Jun 4 10:39:01 2018 +0100

    rpmsg: smd: do not use mananged resources for endpoints and channels
    
    commit 4a2e84c6ed85434ce7843e4844b4d3263f7e233b upstream.
    
    All the managed resources would be freed by the time release function
    is invoked. Handling such memory in qcom_smd_edge_release() would do
    bad things.
    
    Found this issue while testing Audio usecase where the dsp is started up
    and shutdown in a loop.
    
    This patch fixes this issue by using simple kzalloc for allocating
    channel->name and channel which is then freed in qcom_smd_edge_release().
    
    Without this patch restarting a remoteproc would crash the system.
    Fixes: 53e2822e56c7 ("rpmsg: Introduce Qualcomm SMD backend")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfeb333b590c78d0dbadfa00a56635f1b2489d58
Author: NeilBrown <neilb@suse.com>
Date:   Thu Apr 26 14:46:29 2018 +1000

    md: fix two problems with setting the "re-add" device state.
    
    commit 011abdc9df559ec75779bb7c53a744c69b2a94c6 upstream.
    
    If "re-add" is written to the "state" file for a device
    which is faulty, this has an effect similar to removing
    and re-adding the device.  It should take up the
    same slot in the array that it previously had, and
    an accelerated (e.g. bitmap-based) rebuild should happen.
    
    The slot that "it previously had" is determined by
    rdev->saved_raid_disk.
    However this is not set when a device fails (only when a device
    is added), and it is cleared when resync completes.
    This means that "re-add" will normally work once, but may not work a
    second time.
    
    This patch includes two fixes.
    1/ when a device fails, record the ->raid_disk value in
        ->saved_raid_disk before clearing ->raid_disk
    2/ when "re-add" is written to a device for which
        ->saved_raid_disk is not set, fail.
    
    I think this is suitable for stable as it can
    cause re-adding a device to be forced to do a full
    resync which takes a lot longer and so puts data at
    more risk.
    
    Cc: <stable@vger.kernel.org> (v4.1)
    Fixes: 97f6cd39da22 ("md-cluster: re-add capabilities")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Reviewed-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88896a963b4e80f5d4f6fe508ab7ce399d7bcb4c
Author: Michael Trimarchi <michael@amarulasolutions.com>
Date:   Wed May 30 23:57:44 2018 +0530

    rtc: sun6i: Fix bit_idx value for clk_register_gate
    
    commit 09018d4bd7994c2c9f775029bc24589bc85f76fa upstream.
    
    clk-gate core will take bit_idx through clk_register_gate
    and then do clk_gate_ops by using BIT(bit_idx), but rtc-sun6i
    is passing bit_idx as BIT(bit_idx) it becomes BIT(BIT(bit_idx)
    which is wrong and eventually external gate clock is not enabling.
    
    This patch fixed by passing bit index and the original change
    introduced from below commit.
    "rtc: sun6i: Add support for the external oscillator gate"
    (sha1:  17ecd246414b3a0fe0cb248c86977a8bda465b7b)
    
    Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
    Fixes: 17ecd246414b ("rtc: sun6i: Add support for the external oscillator gate")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
    Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b90f3eccf8aa9eb2990e98bf8c67bd613d44aa0f
Author: Marcin Ziemianowicz <marcin@ziemianowicz.com>
Date:   Sun Apr 29 15:01:11 2018 -0400

    clk: at91: PLL recalc_rate() now using cached MUL and DIV values
    
    commit a982e45dc150da3a08907b6dd676b735391704b4 upstream.
    
    When a USB device is connected to the USB host port on the SAM9N12 then
    you get "-62" error which seems to indicate USB replies from the device
    are timing out. Based on a logic sniffer, I saw the USB bus was running
    at half speed.
    
    The PLL code uses cached MUL and DIV values which get set in set_rate()
    and applied in prepare(), but the recalc_rate() function instead
    queries the hardware instead of using these cached values. Therefore,
    if recalc_rate() is called between a set_rate() and prepare(), the
    wrong frequency is calculated and later the USB clock divider for the
    SAM9N12 SOC will be configured for an incorrect clock.
    
    In my case, the PLL hardware was set to 96 Mhz before the OHCI
    driver loads, and therefore the usb clock divider was being set
    to /2 even though the OHCI driver set the PLL to 48 Mhz.
    
    As an alternative explanation, I noticed this was fixed in the past by
    87e2ed338f1b ("clk: at91: fix recalc_rate implementation of PLL
    driver") but the bug was later re-introduced by 1bdf02326b71 ("clk:
    at91: make use of syscon/regmap internally").
    
    Fixes: 1bdf02326b71 ("clk: at91: make use of syscon/regmap internally)
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marcin Ziemianowicz <marcin@ziemianowicz.com>
    Acked-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a98f1946ea58a21ea8004e07d414ba2f99bc6434
Author: Robert Elliott <elliott@hpe.com>
Date:   Thu May 31 18:36:36 2018 -0500

    linvdimm, pmem: Preserve read-only setting for pmem devices
    
    commit 254a4cd50b9fe2291a12b8902e08e56dcc4e9b10 upstream.
    
    The pmem driver does not honor a forced read-only setting for very long:
            $ blockdev --setro /dev/pmem0
            $ blockdev --getro /dev/pmem0
            1
    
    followed by various commands like these:
            $ blockdev --rereadpt /dev/pmem0
            or
            $ mkfs.ext4 /dev/pmem0
    
    results in this in the kernel serial log:
             nd_pmem namespace0.0: region0 read-write, marking pmem0 read-write
    
    with the read-only setting lost:
            $ blockdev --getro /dev/pmem0
            0
    
    That's from bus.c nvdimm_revalidate_disk(), which always applies the
    setting from nd_region (which is initially based on the ACPI NFIT
    NVDIMM state flags not_armed bit).
    
    In contrast, commit 20bd1d026aac ("scsi: sd: Keep disk read-only when
    re-reading partition") fixed this issue for SCSI devices to preserve
    the previous setting if it was set to read-only.
    
    This patch modifies bus.c to preserve any previous read-only setting.
    It also eliminates the kernel serial log print except for cases where
    read-write is changed to read-only, so it doesn't print read-only to
    read-only non-changes.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 581388209405 ("libnvdimm, nfit: handle unarmed dimms, mark namespaces read-only")
    Signed-off-by: Robert Elliott <elliott@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a64be479ef08c945a94626e90b11ec46bcb66a5e
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:49 2018 +0200

    scsi: zfcp: fix missing REC trigger trace on enqueue without ERP thread
    
    commit 6a76550841d412330bd86aed3238d1888ba70f0e upstream.
    
    Example trace record formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : REC
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1                      ZFCP_DBF_REC_TRIG
    Tag            : .......
    LUN            : 0x...
    WWPN           : 0x...
    D_ID           : 0x...
    Adapter status : 0x...
    Port status    : 0x...
    LUN status     : 0x...
    Ready count    : 0x...
    Running count  : 0x...
    ERP want       : 0x0.                   ZFCP_ERP_ACTION_REOPEN_...
    ERP need       : 0xc0                   ZFCP_ERP_ACTION_NONE
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beadcfcca2577f56e70f99cde38f1307aed09f03
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:48 2018 +0200

    scsi: zfcp: fix missing REC trigger trace for all objects in ERP_FAILED
    
    commit 8c3d20aada70042a39c6a6625be037c1472ca610 upstream.
    
    That other commit introduced an inconsistency because it would trace on
    ERP_FAILED for all callers of port forced reopen triggers (not just
    terminate_rport_io), but it would not trace on ERP_FAILED for all callers of
    other ERP triggers such as adapter, port regular, LUN.
    
    Therefore, generalize that other commit. zfcp_erp_action_enqueue() already
    had two early outs which re-used the one zfcp_dbf_rec_trig() call.  All ERP
    trigger functions finally run through zfcp_erp_action_enqueue().  So move
    the special handling for ZFCP_STATUS_COMMON_ERP_FAILED into
    zfcp_erp_action_enqueue() and add another early out with new trace marker
    for pseudo ERP need in this case. This removes all early returns from all
    ERP trigger functions so we always end up at zfcp_dbf_rec_trig().
    
    Example trace record formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : REC
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1                      ZFCP_DBF_REC_TRIG
    Tag            : .......
    LUN            : 0x...
    WWPN           : 0x...
    D_ID           : 0x...
    Adapter status : 0x...
    Port status    : 0x...
    LUN status     : 0x...
    Ready count    : 0x...
    Running count  : 0x...
    ERP want       : 0x0.                   ZFCP_ERP_ACTION_REOPEN_...
    ERP need       : 0xe0                   ZFCP_ERP_ACTION_FAILED
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60ed2673986f6c47a5fd12f328da8d92090524d9
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:47 2018 +0200

    scsi: zfcp: fix missing REC trigger trace on terminate_rport_io for ERP_FAILED
    
    commit d70aab55924b44f213fec2b900b095430b33eec6 upstream.
    
    For problem determination we always want to see when we were invoked on the
    terminate_rport_io callback whether we perform something or not.
    
    Temporal event sequence of interest with a long fast_io_fail_tmo of 27 sec:
    
    loose remote port
    
    t   workqueue
    [s] zfcp_q_<dev>       IRQ                 zfcperp<dev>
    
    === ================== =================== ============================
    
      0                    recv RSCN
                           q p.test_link_work
        block rport
         start fast_io_fail_tmo
        send ADISC ELS
      4                    recv ADISC fail
                           block zfcp_port
                                               port forced reopen
                                               send open port
     12                    recv open port fail
                                               q p.gid_pn_work
                                               zfcp_erp_wakeup
                                               (zfcp_erp_wait would return)
        GID_PN fail
    
    Before this point, we got a SCSI trace with tag "sctrpi1" on fast_io_fail,
    e.g. with the typical 5 sec setting.
    
        port.status |= ERP_FAILED
    
    If fast_io_fail_tmo triggers after this point, we missed a SCSI trace.
    
        workqueue
        fc_dl_<host>
        ==================
     27 fc_timeout_fail_rport_io
        fc_terminate_rport_io
        zfcp_scsi_terminate_rport_io
        zfcp_erp_port_forced_reopen
        _zfcp_erp_port_forced_reopen
         if (port.status & ERP_FAILED)
          return;
    
    Therefore, write a trace before above early return.
    
    Example trace record formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : REC
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1                      ZFCP_DBF_REC_TRIG
    Tag            : sctrpi1                SCSI terminate rport I/O
    LUN            : 0xffffffffffffffff                     none (invalid)
    WWPN           : 0x<wwpn>
    D_ID           : 0x<n_port_id>
    Adapter status : 0x...
    Port status    : 0x...
    LUN status     : 0x00000000                             none (invalid)
    Ready count    : 0x...
    Running count  : 0x...
    ERP want       : 0x03                   ZFCP_ERP_ACTION_REOPEN_PORT_FORCED
    ERP need       : 0xe0                   ZFCP_ERP_ACTION_FAILED
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 071f23266c301c8e07007a8f05f266f9f04c5623
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:46 2018 +0200

    scsi: zfcp: fix missing REC trigger trace on terminate_rport_io early return
    
    commit 96d9270499471545048ed8a6d7f425a49762283d upstream.
    
    get_device() and its internally used kobject_get() only return NULL if they
    get passed NULL as argument. zfcp_get_port_by_wwpn() loops over
    adapter->port_list so the iteration variable port is always non-NULL.
    Struct device is embedded in struct zfcp_port so &port->dev is always
    non-NULL. This is the argument to get_device().  However, if we get an
    fc_rport in terminate_rport_io() for which we cannot find a match within
    zfcp_get_port_by_wwpn(), the latter can return NULL.  v2.6.30 commit
    70932935b61e ("[SCSI] zfcp: Fix oops when port disappears") introduced an
    early return without adding a trace record for this case.  Even if we don't
    need recovery in this case, for debugging we should still see that our
    callback was invoked originally by scsi_transport_fc.
    
    Example trace record formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : REC
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1
    Tag            : sctrpin        SCSI terminate rport I/O, no zfcp port
    LUN            : 0xffffffffffffffff                     none (invalid)
    WWPN           : 0x<wwpn>               WWPN
    D_ID           : 0x<n_port_id>          N_Port-ID
    Adapter status : 0x...
    Port status    : 0xffffffff             unknown (-1)
    LUN status     : 0x00000000                             none (invalid)
    Ready count    : 0x...
    Running count  : 0x...
    ERP want       : 0x03                   ZFCP_ERP_ACTION_REOPEN_PORT_FORCED
    ERP need       : 0xc0                   ZFCP_ERP_ACTION_NONE
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: 70932935b61e ("[SCSI] zfcp: Fix oops when port disappears")
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d0d31e512f29ad34ea078f1ad86ec074b7311b0
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:45 2018 +0200

    scsi: zfcp: fix misleading REC trigger trace where erp_action setup failed
    
    commit 512857a795cbbda5980efa4cdb3c0b6602330408 upstream.
    
    If a SCSI device is deleted during scsi_eh host reset, we cannot get a
    reference to the SCSI device anymore since scsi_device_get returns !=0 by
    design. Assuming the recovery of adapter and port(s) was successful,
    zfcp_erp_strategy_followup_success() attempts to trigger a LUN reset for the
    half-gone SCSI device. Unfortunately, it causes the following confusing
    trace record which states that zfcp will do a LUN recovery as "ERP need" is
    ZFCP_ERP_ACTION_REOPEN_LUN == 1 and equals "ERP want".
    
    Old example trace record formatted with zfcpdbf from s390-tools:
    
    Tag:           : ersfs_3 ERP, trigger, unit reopen, port reopen succeeded
    LUN            : 0x<FCP_LUN>
    WWPN           : 0x<WWPN>
    D_ID           : 0x<N_Port-ID>
    Adapter status : 0x5400050b
    Port status    : 0x54000001
    LUN status     : 0x40000000     ZFCP_STATUS_COMMON_RUNNING
                                    but not ZFCP_STATUS_COMMON_UNBLOCKED as it
                                    was closed on close part of adapter reopen
    ERP want       : 0x01
    ERP need       : 0x01           misleading
    
    However, zfcp_erp_setup_act() returns NULL as it cannot get the reference.
    Hence, zfcp_erp_action_enqueue() takes an early goto out and _NO_ recovery
    actually happens.
    
    We always do want the recovery trigger trace record even if no erp_action
    could be enqueued as in this case. For other cases where we did not enqueue
    an erp_action, 'need' has always been zero to indicate this. In order to
    indicate above goto out, introduce an eyecatcher "flag" to mark the "ERP
    need" as 'not needed' but still keep the information which erp_action type,
    that zfcp_erp_required_act() had decided upon, is needed.  0xc_ is chosen to
    be visibly different from 0x0_ in "ERP want".
    
    New example trace record formatted with zfcpdbf from s390-tools:
    
    Tag:           : ersfs_3 ERP, trigger, unit reopen, port reopen succeeded
    LUN            : 0x<FCP_LUN>
    WWPN           : 0x<WWPN>
    D_ID           : 0x<N_Port-ID>
    Adapter status : 0x5400050b
    Port status    : 0x54000001
    LUN status     : 0x40000000
    ERP want       : 0x01
    ERP need       : 0xc1           would need LUN ERP, but no action set up
                       ^
    
    Before v2.6.38 commit ae0904f60fab ("[SCSI] zfcp: Redesign of the debug
    tracing for recovery actions.") we could detect this case because the
    "erp_action" field in the trace was NULL. The rework removed erp_action as
    argument and field from the trace.
    
    This patch here is for tracing. A fix to allow LUN recovery in the case at
    hand is a topic for a separate patch.
    
    See also commit fdbd1c5e27da ("[SCSI] zfcp: Allow running unit/LUN shutdown
    without acquiring reference") for a similar case and background info.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: ae0904f60fab ("[SCSI] zfcp: Redesign of the debug tracing for recovery actions.")
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 941e8bee351e5224ab3f5d6de77da82969e723db
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:44 2018 +0200

    scsi: zfcp: fix missing SCSI trace for retry of abort / scsi_eh TMF
    
    commit 81979ae63e872ef650a7197f6ce6590059d37172 upstream.
    
    We already have a SCSI trace for the end of abort and scsi_eh TMF. Due to
    zfcp_erp_wait() and fc_block_scsi_eh() time can pass between the start of
    our eh callback and an actual send/recv of an abort / TMF request.  In order
    to see the temporal sequence including any abort / TMF send retries, add a
    trace before the above two blocking functions.  This supports problem
    determination with scsi_eh and parallel zfcp ERP.
    
    No need to explicitly trace the beginning of our eh callback, since we
    typically can send an abort / TMF and see its HBA response (in the worst
    case, it's a pseudo response on dismiss all of adapter recovery, e.g. due to
    an FSF request timeout [fsrth_1] of the abort / TMF). If we cannot send, we
    now get a trace record for the first "abrt_wt" or "[lt]r_wait" which denotes
    almost the beginning of the callback.
    
    No need to explicitly trace the wakeup after the above two blocking
    functions because the next retry loop causes another trace in any case and
    that is sufficient.
    
    Example trace records formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : SCSI
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1
    Tag            : abrt_wt        abort, before zfcp_erp_wait()
    Request ID     : 0x0000000000000000                     none (invalid)
    SCSI ID        : 0x<scsi_id>
    SCSI LUN       : 0x<scsi_lun>
    SCSI LUN high  : 0x<scsi_lun_high>
    SCSI result    : 0x<scsi_result_of_cmd_to_be_aborted>
    SCSI retries   : 0x<retries_of_cmd_to_be_aborted>
    SCSI allowed   : 0x<allowed_retries_of_cmd_to_be_aborted>
    SCSI scribble  : 0x<req_id_of_cmd_to_be_aborted>
    SCSI opcode    : <CDB_of_cmd_to_be_aborted>
    FCP rsp inf cod: 0x..                                   none (invalid)
    FCP rsp IU     : ...                                    none (invalid)
    
    Timestamp      : ...
    Area           : SCSI
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1
    Tag            : lr_wait        LUN reset, before zfcp_erp_wait()
    Request ID     : 0x0000000000000000                     none (invalid)
    SCSI ID        : 0x<scsi_id>
    SCSI LUN       : 0x<scsi_lun>
    SCSI LUN high  : 0x<scsi_lun_high>
    SCSI result    : 0x...                                  unrelated
    SCSI retries   : 0x..                                   unrelated
    SCSI allowed   : 0x..                                   unrelated
    SCSI scribble  : 0x...                                  unrelated
    SCSI opcode    : ...                                    unrelated
    FCP rsp inf cod: 0x..                                   none (invalid)
    FCP rsp IU     : ...                                    none (invalid)
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: 63caf367e1c9 ("[SCSI] zfcp: Improve reliability of SCSI eh handlers in zfcp")
    Fixes: af4de36d911a ("[SCSI] zfcp: Block scsi_eh thread for rport state BLOCKED")
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74da693a03ceaa21c38c604c5e0b314340a84781
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 17 19:14:43 2018 +0200

    scsi: zfcp: fix missing SCSI trace for result of eh_host_reset_handler
    
    commit df30781699f53e4fd4c494c6f7dd16e3d5c21d30 upstream.
    
    For problem determination we need to see whether and why we were successful
    or not. This allows deduction of scsi_eh escalation.
    
    Example trace record formatted with zfcpdbf from s390-tools:
    
    Timestamp      : ...
    Area           : SCSI
    Subarea        : 00
    Level          : 1
    Exception      : -
    CPU ID         : ..
    Caller         : 0x...
    Record ID      : 1
    Tag            : schrh_r        SCSI host reset handler result
    Request ID     : 0x0000000000000000                     none (invalid)
    SCSI ID        : 0xffffffff                             none (invalid)
    SCSI LUN       : 0xffffffff                             none (invalid)
    SCSI LUN high  : 0xffffffff                             none (invalid)
    SCSI result    : 0x00002002     field re-used for midlayer value: SUCCESS
                                    or in other cases: 0x2009 == FAST_IO_FAIL
    SCSI retries   : 0xff                                   none (invalid)
    SCSI allowed   : 0xff                                   none (invalid)
    SCSI scribble  : 0xffffffffffffffff                     none (invalid)
    SCSI opcode    : ffffffff ffffffff ffffffff ffffffff    none (invalid)
    FCP rsp inf cod: 0xff                                   none (invalid)
    FCP rsp IU     : 00000000 00000000 00000000 00000000    none (invalid)
                     00000000 00000000
    
    v2.6.35 commit a1dbfddd02d2 ("[SCSI] zfcp: Pass return code from
    fc_block_scsi_eh to scsi eh") introduced the first return with something
    other than the previously hardcoded single SUCCESS return path.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: a1dbfddd02d2 ("[SCSI] zfcp: Pass return code from fc_block_scsi_eh to scsi eh")
    Cc: <stable@vger.kernel.org> #2.6.38+
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9db2ad79b8f03d2ddef33e860fb9cf9cd52e7cbc
Author: Anil Gurumurthy <anil.gurumurthy@cavium.com>
Date:   Wed Jun 6 08:41:42 2018 -0700

    scsi: qla2xxx: Mask off Scope bits in retry delay
    
    commit 3cedc8797b9c0f2222fd45a01f849c57c088828b upstream.
    
    Some newer target uses "Status Qualifier" response in a returned "Busy
    Status". This new response code of 0x4001, which is "Scope" bits,
    translates to "Affects all units accessible by target".  Due to this new
    value returned in the Scope bits, driver was using that value as timeout
    value which resulted into driver waiting for 27min timeout.
    
    This patch masks off this Scope bits so that driver does not use this
    value as retry delay time.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Anil Gurumurthy <anil.gurumurthy@cavium.com>
    Signed-off-by: Giridhar Malavali <giridhar.malavali@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9224583a5ee225969577ba4992322420e805fd2b
Author: Himanshu Madhani <himanshu.madhani@cavium.com>
Date:   Sun Jun 3 22:09:53 2018 -0700

    scsi: qla2xxx: Fix setting lower transfer speed if GPSC fails
    
    commit 413c2f33489b134e3cc65d9c3ff7861e8fdfe899 upstream.
    
    This patch prevents driver from setting lower default speed of 1 GB/sec,
    if the switch does not support Get Port Speed Capabilities (GPSC)
    command. Setting this default speed results into much lower write
    performance for large sequential WRITE.  This patch modifies driver to
    check for gpsc_supported flags and prevents driver from issuing
    MBC_SET_PORT_PARAM (001Ah) to set default speed of 1 GB/sec. If driver
    does not send this mailbox command, firmware assumes maximum supported
    link speed and will operate at the max speed.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reported-by: Eda Zhou <ezhou@redhat.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Tested-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 2829829c3e61b8ff7245345613f10344e1bf3d22
Author: Sinan Kaya <okaya@codeaurora.org>
Date:   Sat Jun 2 00:28:53 2018 -0400

    scsi: hpsa: disable device during shutdown
    
    commit 0d98ba8d70b0070ac117452ea0b663e26bbf46bf upstream.
    
    'Commit cc27b735ad3a ("PCI/portdrv: Turn off PCIe services during
    shutdown")' has been added to kernel to shutdown pending PCIe port service
    interrupts during reboot so that a newly started kexec kernel wouldn't
    observe pending interrupts.
    
    pcie_port_device_remove() is disabling the root port and switches by
    calling pci_disable_device() after all PCIe service drivers are shutdown.
    
    This has been found to cause crashes on HP DL360 Gen9 machines during
    reboot due to hpsa driver not clearing the bus master bit during the
    shutdown procedure by calling pci_disable_device().
    
    Disable device as part of the shutdown sequence.
    
    Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=199779
    Fixes: cc27b735ad3a ("PCI/portdrv: Turn off PCIe services during shutdown")
    Cc: stable@vger.kernel.org
    Reported-by: Ryan Finnie <ryan@finnie.org>
    Tested-by: Don Brace <don.brace@microsemi.com>
    Acked-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d329968a883f4b64758df6a6c972a02392b3a24
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Apr 19 21:32:19 2018 -0700

    mm: fix __gup_device_huge vs unmap
    
    commit a9b6de77b1a3ff729f7bfc54b2e17711776a416c upstream.
    
    get_user_pages_fast() for device pages is missing the typical validation
    that all page references have been taken while the mapping was valid.
    Without this validation truncate operations can not reliably coordinate
    against new page reference events like O_DIRECT.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 3565fce3a659 ("mm, x86: get_user_pages() for dax mappings")
    Reported-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d6ad5a030675c6527956cf8737657b6be81b41b
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Apr 8 21:44:01 2018 +0200

    iio: sca3000: Fix an error handling path in 'sca3000_probe()'
    
    commit 4a5b45383ca371e123ba103d34d4b3b87616245c upstream.
    
    Use 'devm_iio_kfifo_allocate()' instead of 'iio_kfifo_allocate()' in order
    to simplify code and avoid a memory leak in an error path in
    'sca3000_probe()'. A call to 'sca3000_unconfigure_ring()' was missing.
    
    Sent via the next merge window as unimportant bug and there are
    other patches dependent on it.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d55209eeb1215c66d5e2b8360760c6c2ff53ae93
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Mon Mar 12 14:06:53 2018 +0200

    iio: adc: ad7791: remove sample freq sysfs attributes
    
    commit 7eb6b35d93c356f1afebbfb808bc296d6351e708 upstream.
    
    In the current state, these attributes are broken, because they are
    registered already, and the kernel throws a warning.
    The first registration happens via the `IIO_CHAN_INFO_SAMP_FREQ` flag from
    the `ad_sigma_delta` driver.
    
    In this commit these attrs are removed, and in the following the
    IIO_CHAN_INFO_SAMP_FREQ behavior will be implemented, which replaces these
    hooks.
    
    This is done to make things a bit easier to review as there is a bit of
    overlap in the patch if it's done all at once.
    
    Fixes: a13e831fcaa7 ("staging: iio: ad7192: implement IIO_CHAN_INFO_SAMP_FREQ")
    
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6101eea47bf3a74345e5d722537cc9531ea85a72
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 11 19:24:16 2018 +0100

    Btrfs: fix return value on rename exchange failure
    
    commit c5b4a50b74018b3677098151ec5f4fce07d5e6a0 upstream.
    
    If we failed during a rename exchange operation after starting/joining a
    transaction, we would end up replacing the return value, stored in the
    local 'ret' variable, with the return value from btrfs_end_transaction().
    So this could end up returning 0 (success) to user space despite the
    operation having failed and aborted the transaction, because if there are
    multiple tasks having a reference on the transaction at the time
    btrfs_end_transaction() is called by the rename exchange, that function
    returns 0 (otherwise it returns -EIO and not the original error value).
    So fix this by not overwriting the return value on error after getting
    a transaction handle.
    
    Fixes: cdd1fedf8261 ("btrfs: add support for RENAME_EXCHANGE and RENAME_WHITEOUT")
    CC: stable@vger.kernel.org # 4.9+
    Signed-off-by: Filipe Manana <fdmanana@suse.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 af20e4eccc2d5a6d8985c4ff671cabd2c1ef2016
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Sat May 19 14:23:54 2018 +0200

    X.509: unpack RSA signatureValue field from BIT STRING
    
    commit b65c32ec5a942ab3ada93a048089a938918aba7f upstream.
    
    The signatureValue field of a X.509 certificate is encoded as a BIT STRING.
    For RSA signatures this BIT STRING is of so-called primitive subtype, which
    contains a u8 prefix indicating a count of unused bits in the encoding.
    
    We have to strip this prefix from signature data, just as we already do for
    key data in x509_extract_key_data() function.
    
    This wasn't noticed earlier because this prefix byte is zero for RSA key
    sizes divisible by 8. Since BIT STRING is a big-endian encoding adding zero
    prefixes has no bearing on its value.
    
    The signature length, however was incorrect, which is a problem for RSA
    implementations that need it to be exactly correct (like AMD CCP).
    
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Fixes: c26fd69fa009 ("X.509: Add a crypto key parser for binary (DER) X.509 certificates")
    Cc: stable@vger.kernel.org
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dfc81992a3e0da45e45eab2f113658f3628f743
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Fri Jun 22 10:52:51 2018 +0100

    irqchip/gic-v3-its: Don't bind LPI to unavailable NUMA node
    
    commit c1797b11a09c8323c92b074fd48b89a936c991d0 upstream.
    
    On a NUMA system, if an ITS is local to an offline node, the ITS driver may
    pick an offline CPU to bind the LPI.  In this case, pick an online CPU (and
    the first one will do).
    
    But on some systems, binding an LPI to non-local node CPU may cause
    deadlock (see Cavium erratum 23144).  In this case, just fail the activate
    and return an error code.
    
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Sumit Garg <sumit.garg@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180622095254.5906-5-marc.zyngier@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88c4318d36337ddaeb21eeae34a405a6b9f93bc0
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Fri Jun 22 16:33:57 2018 +0200

    time: Make sure jiffies_to_msecs() preserves non-zero time periods
    
    commit abcbcb80cd09cd40f2089d912764e315459b71f7 upstream.
    
    For the common cases where 1000 is a multiple of HZ, or HZ is a multiple of
    1000, jiffies_to_msecs() never returns zero when passed a non-zero time
    period.
    
    However, if HZ > 1000 and not an integer multiple of 1000 (e.g. 1024 or
    1200, as used on alpha and DECstation), jiffies_to_msecs() may return zero
    for small non-zero time periods.  This may break code that relies on
    receiving back a non-zero value.
    
    jiffies_to_usecs() does not need such a fix: one jiffy can only be less
    than one µs if HZ > 1000000, and such large values of HZ are already
    rejected at build time, twice:
    
      - include/linux/jiffies.h does #error if HZ >= 12288,
      - kernel/time/time.c has BUILD_BUG_ON(HZ > USEC_PER_SEC).
    
    Broken since forever.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Stephen Boyd <sboyd@kernel.org>
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180622143357.7495-1-geert@linux-m68k.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fe95015fb93d171b6cd0e315b33c26ea33e82f1
Author: Huacai Chen <chenhc@lemote.com>
Date:   Tue Jun 12 17:54:42 2018 +0800

    MIPS: io: Add barrier after register read in inX()
    
    commit 18f3e95b90b28318ef35910d21c39908de672331 upstream.
    
    While a barrier is present in the outX() functions before the register
    write, a similar barrier is missing in the inX() functions after the
    register read. This could allow memory accesses following inX() to
    observe stale data.
    
    This patch is very similar to commit a1cc7034e33d12dc1 ("MIPS: io: Add
    barrier after register read in readX()"). Because war_io_reorder_wmb()
    is both used by writeX() and outX(), if readX() need a barrier then so
    does inX().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Patchwork: https://patchwork.linux-mips.org/patch/19516/
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: James Hogan <james.hogan@mips.com>
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93e1297f9edce474df6839d5434a511cb130a4a2
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Mon Jun 18 12:47:45 2018 -0700

    cpufreq: intel_pstate: Fix scaling max/min limits with Turbo 3.0
    
    commit ff7c9917143b3a6cf2fa61212a32d67cf259bf9c upstream.
    
    When scaling max/min settings are changed, internally they are converted
    to a ratio using the max turbo 1 core turbo frequency. This works fine
    when 1 core max is same irrespective of the core. But under Turbo 3.0,
    this will not be the case. For example:
    Core 0: max turbo pstate: 43 (4.3GHz)
    Core 1: max turbo pstate: 45 (4.5GHz)
    In this case 1 core turbo ratio will be maximum of all, so it will be
    45 (4.5GHz). Suppose scaling max is set to 4GHz (ratio 40) for all cores
    ,then on core one it will be
     = max_state * policy->max / max_freq;
     = 43 * (4000000/4500000) = 38 (3.8GHz)
     = 38
    which is 200MHz less than the desired.
    On core2, it will be correctly set to ratio 40 (4GHz). Same holds true
    for scaling min frequency limit. So this requires usage of correct turbo
    max frequency for core one, which in this case is 4.3GHz. So we need to
    adjust per CPU cpu->pstate.turbo_freq using the maximum HWP ratio of that
    core.
    
    This change uses the HWP capability of a core to adjust max turbo
    frequency. But since Broadwell HWP doesn't use ratios in the HWP
    capabilities, we have to use legacy max 1 core turbo ratio. This is not
    a problem as the HWP capabilities don't differ among cores in Broadwell.
    We need to check for non Broadwell CPU model for applying this change,
    though.
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: 4.6+ <stable@vger.kernel.org> # 4.6+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55be2e6f50ac817bcb553d79ab703838b2760226
Author: Fabio Estevam <fabio.estevam@nxp.com>
Date:   Thu Jun 7 13:51:33 2018 -0300

    pinctrl: devicetree: Fix pctldev pointer overwrite
    
    commit bc3322bc166a2905bc91f774d7b22773dc7c063a upstream.
    
    Commit b89405b6102f ("pinctrl: devicetree: Fix dt_to_map_one_config
    handling of hogs") causes the pinctrl hog pins to not get initialized
    on i.MX platforms leaving them with the IOMUX settings untouched.
    
    This causes several regressions on i.MX such as:
    
    - OV5640 camera driver can not be probed anymore on imx6qdl-sabresd
    because the camera clock pin is in a pinctrl_hog group and since
    its pinctrl initialization is skipped, the camera clock is kept
    in GPIO functionality instead of CLK_CKO function.
    
    - Audio stopped working on imx6qdl-wandboard and imx53-qsb for
    the same reason.
    
    Richard Fitzgerald explains the problem:
    
    "I see the bug. If the hog node isn't a 1st level child of the pinctrl
    parent node it will go around the for(;;) loop again but on the first
    pass I overwrite pctldev with the result of
    get_pinctrl_dev_from_of_node() so it doesn't point to the pinctrl driver
    any more."
    
    Fix the issue by stashing the original pctldev so it doesn't
    get overwritten.
    
    Fixes:  b89405b6102f ("pinctrl: devicetree: Fix dt_to_map_one_config handling of hogs")
    Cc: <stable@vger.kernel.org>
    Reported-by: Mika Penttilä <mika.penttila@nextfour.com>
    Reported-by: Steve Longerbeam <slongerbeam@gmail.com>
    Suggested-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
    Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cc7ae5ce0189f5032fe42eabeb80361eede6783
Author: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Date:   Mon Apr 16 17:52:45 2018 +0200

    pinctrl: samsung: Correct EINTG banks order
    
    commit 5cf9a338db94cfd570aa2607bef1b30996f188e3 upstream.
    
    All banks with GPIO interrupts should be at beginning of bank array and
    without any other types of banks between them.  This order is expected
    by exynos_eint_gpio_irq, when doing interrupt group to bank translation.
    Otherwise, kernel NULL pointer dereference would happen when trying to
    handle interrupt, due to wrong bank being looked up.  Observed on
    s5pv210, when trying to handle gpj0 interrupt, where kernel was mapping
    it to gpi bank.
    
    Cc: stable@vger.kernel.org
    Fixes: 023e06dfa688 ("pinctrl: exynos: add exynos5410 SoC specific data")
    Fixes: 608a26a7bc04 ("pinctrl: Add s5pv210 support to pinctrl-exynos)
    Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e838b2e5a3c2ee04e46302f7d3d644b7dc4daf5
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Feb 28 18:33:03 2018 -0800

    auxdisplay: fix broken menu
    
    commit b5b903fba96a4d1771422efd5c713ebb73f7dc82 upstream.
    
    Having the CHARLCD Kconfig symbol between "menuconfig AUXDISPLAY"
    and "if AUXDISPLAY" breaks the AUXDISPLAY submenus, so move the
    CHARLCD Kconfig symbol near the end of the file so that the menu
    display is continuous.
    
    Also include ARM_CHARLCD inside of the if AUXDISPLAY/endif block.
    Geert says that it should be there.
    
    Fixes: 39f8ea46724e ("auxdisplay: charlcd: Extract character LCD core from misc/panel")
    
    Cc: stable@vger.kernel.org # v4.12
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 226ffbf6135c0a4adf52f6f4c693c26e23d69b90
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed May 23 17:14:39 2018 -0500

    PCI: pciehp: Clear Presence Detect and Data Link Layer Status Changed on resume
    
    commit 13c65840feab8109194f9490c9870587173cb29d upstream.
    
    After a suspend/resume cycle the Presence Detect or Data Link Layer Status
    Changed bits might be set.  If we don't clear them those events will not
    fire anymore and nothing happens for instance when a device is now
    hot-unplugged.
    
    Fix this by clearing those bits in a newly introduced function
    pcie_reenable_notification().  This should be fine because immediately
    after, we check if the adapter is still present by reading directly from
    the status register.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc0096bceae9385dbed081a7922294cfccfde827
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Fri Apr 27 13:06:30 2018 -0500

    PCI: Add ACS quirk for Intel 300 series
    
    commit f154a718e6cc0d834f5ac4dc4c3b174e65f3659e upstream.
    
    Intel 300 series chipset still has the same ACS issue as the previous
    generations so extend the ACS quirk to cover it as well.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78923ba967799cf5125651c345952e790b744940
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed Apr 25 14:27:37 2018 -0600

    PCI: Add ACS quirk for Intel 7th & 8th Gen mobile
    
    commit e8440f4bfedc623bee40c84797ac78d9303d0db6 upstream.
    
    The specification update indicates these have the same errata for
    implementing non-standard ACS capabilities.
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4a424c550b61d05de509aea2eea6415bb8c185f
Author: Sridhar Pitchai <Sridhar.Pitchai@microsoft.com>
Date:   Tue May 1 17:56:32 2018 +0000

    PCI: hv: Make sure the bus domain is really unique
    
    commit 29927dfb7f69bcf2ae7fd1cda10997e646a5189c upstream.
    
    When Linux runs as a guest VM in Hyper-V and Hyper-V adds the virtual PCI
    bus to the guest, Hyper-V always provides unique PCI domain.
    
    commit 4a9b0933bdfc ("PCI: hv: Use device serial number as PCI domain")
    overrode unique domain with the serial number of the first device added to
    the virtual PCI bus.
    
    The reason for that patch was to have a consistent and short name for the
    device, but Hyper-V doesn't provide unique serial numbers. Using non-unique
    serial numbers as domain IDs leads to duplicate device addresses, which
    causes PCI bus registration to fail.
    
    commit 0c195567a8f6 ("netvsc: transparent VF management") avoids the need
    for commit 4a9b0933bdfc ("PCI: hv: Use device serial number as PCI
    domain").  When scripts were used to configure VF devices, the name of
    the VF needed to be consistent and short, but with commit 0c195567a8f6
    ("netvsc: transparent VF management") all the setup is done in the kernel,
    and we do not need to maintain consistent name.
    
    Revert commit 4a9b0933bdfc ("PCI: hv: Use device serial number as PCI
    domain") so we can reliably support multiple devices being assigned to
    a guest.
    
    Tag the patch for stable kernels containing commit 0c195567a8f6
    ("netvsc: transparent VF management").
    
    Fixes: 4a9b0933bdfc ("PCI: hv: Use device serial number as PCI domain")
    Signed-off-by: Sridhar Pitchai <sridhar.pitchai@microsoft.com>
    [lorenzo.pieralisi@arm.com: trimmed commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: stable@vger.kernel.org # v4.14+
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43f6a09c8c5b181afff4956fe748b7d6d481618d
Author: Tokunori Ikegami <ikegami@allied-telesis.co.jp>
Date:   Sun Jun 3 23:02:01 2018 +0900

    MIPS: BCM47XX: Enable 74K Core ExternalSync for PCIe erratum
    
    commit 2a027b47dba6b77ab8c8e47b589ae9bbc5ac6175 upstream.
    
    The erratum and workaround are described by BCM5300X-ES300-RDS.pdf as
    below.
    
      R10: PCIe Transactions Periodically Fail
    
        Description: The BCM5300X PCIe does not maintain transaction ordering.
                     This may cause PCIe transaction failure.
        Fix Comment: Add a dummy PCIe configuration read after a PCIe
                     configuration write to ensure PCIe configuration access
                     ordering. Set ES bit of CP0 configu7 register to enable
                     sync function so that the sync instruction is functional.
        Resolution:  hndpci.c: extpci_write_config()
                     hndmips.c: si_mips_init()
                     mipsinc.h CONF7_ES
    
    This is fixed by the CFE MIPS bcmsi chipset driver also for BCM47XX.
    Also the dummy PCIe configuration read is already implemented in the
    Linux BCMA driver.
    
    Enable ExternalSync in Config7 when CONFIG_BCMA_DRIVER_PCI_HOSTMODE=y
    too so that the sync instruction is externalised.
    
    Signed-off-by: Tokunori Ikegami <ikegami@allied-telesis.co.jp>
    Reviewed-by: Paul Burton <paul.burton@mips.com>
    Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
    Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Cc: Rafał Miłecki <zajec5@gmail.com>
    Cc: linux-mips@linux-mips.org
    Cc: stable@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/19461/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c375d0bd66840b9932353332e0e0a304581d0575
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Wed Jun 6 12:13:30 2018 +0200

    mtd: cfi_cmdset_0002: Avoid walking all chips when unlocking.
    
    commit f1ce87f6080b1dda7e7b1eda3da332add19d87b9 upstream.
    
    cfi_ppb_unlock() walks all flash chips when unlocking sectors,
    avoid walking chips unaffected by the unlock operation.
    
    Fixes: 1648eaaa1575 ("mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbbde9343c3e2452f304cc7715d77d4c9481ac3a
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Wed Jun 6 12:13:29 2018 +0200

    mtd: cfi_cmdset_0002: Fix unlocking requests crossing a chip boudary
    
    commit 0cd8116f172eed018907303dbff5c112690eeb91 upstream.
    
    The "sector is in requested range" test used to determine whether
    sectors should be re-locked or not is done on a variable that is reset
    everytime we cross a chip boundary, which can lead to some blocks being
    re-locked while the caller expect them to be unlocked.
    Fix the check to make sure this cannot happen.
    
    Fixes: 1648eaaa1575 ("mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f11a0c8c23ab092feef59a941c373b0f93c51d7
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Wed Jun 6 12:13:28 2018 +0200

    mtd: cfi_cmdset_0002: fix SEGV unlocking multiple chips
    
    commit 5fdfc3dbad099281bf027a353d5786c09408a8e5 upstream.
    
    cfi_ppb_unlock() tries to relock all sectors that were locked before
    unlocking the whole chip.
    This locking used the chip start address + the FULL offset from the
    first flash chip, thereby forming an illegal address. Fix that by using
    the chip offset(adr).
    
    Fixes: 1648eaaa1575 ("mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80349943d56c1fdf361e6cf2f1f44ca7d210675c
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Wed Jun 6 12:13:27 2018 +0200

    mtd: cfi_cmdset_0002: Use right chip in do_ppb_xxlock()
    
    commit f93aa8c4de307069c270b2d81741961162bead6c upstream.
    
    do_ppb_xxlock() fails to add chip->start when querying for lock status
    (and chip_ready test), which caused false status reports.
    Fix that by adding adr += chip->start and adjust call sites
    accordingly.
    
    Fixes: 1648eaaa1575 ("mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking")
    Cc: stable@vger.kernel.org
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 746c1362c434d4c4d48eb53fa0ef757bc191e55f
Author: Tokunori Ikegami <ikegami@allied-telesis.co.jp>
Date:   Wed May 30 18:32:26 2018 +0900

    mtd: cfi_cmdset_0002: Change write buffer to check correct value
    
    commit dfeae1073583dc35c33b32150e18b7048bbb37e6 upstream.
    
    For the word write it is checked if the chip has the correct value.
    But it is not checked for the write buffer as only checked if ready.
    To make sure for the write buffer change to check the value.
    
    It is enough as this patch is only checking the last written word.
    Since it is described by data sheets to check the operation status.
    
    Signed-off-by: Tokunori Ikegami <ikegami@allied-telesis.co.jp>
    Reviewed-by: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
    Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Cc: Brian Norris <computersforpeace@gmail.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
    Cc: Marek Vasut <marek.vasut@gmail.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
    Cc: linux-mtd@lists.infradead.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d097e5b5a1bc3cc601f11b61455210414c4f8b59
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri May 4 15:35:46 2018 -0400

    xprtrdma: Return -ENOBUFS when no pages are available
    
    commit a8f688ec437dc2045cc8f0c89fe877d5803850da upstream.
    
    The use of -EAGAIN in rpcrdma_convert_iovs() is a latent bug: the
    transport never calls xprt_write_space() when more pages become
    available. -ENOBUFS will trigger the correct "delay briefly and call
    again" logic.
    
    Fixes: 7a89f9c626e3 ("xprtrdma: Honor ->send_request API contract")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: stable@vger.kernel.org # 4.8+
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 786c8d79f34f0c54d3f9028e994e397207ae769c
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Tue May 29 14:56:14 2018 +0300

    RDMA/mlx4: Discard unknown SQP work requests
    
    commit 6b1ca7ece15e94251d1d0d919f813943e4a58059 upstream.
    
    There is no need to crash the machine if unknown work request was
    received in SQP MAD.
    
    Cc: <stable@vger.kernel.org> # 3.6
    Fixes: 37bfc7c1e83f ("IB/mlx4: SR-IOV multiplex and demultiplex MADs")
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a336999251226e5451afce56173c322cdc9d873a
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Thu May 31 11:30:09 2018 -0700

    IB/hfi1: Fix user context tail allocation for DMA_RTAIL
    
    commit 1bc0299d976e000ececc6acd76e33b4582646cb7 upstream.
    
    The following code fails to allocate a buffer for the
    tail address that the hardware DMAs into when the user
    context DMA_RTAIL is set.
    
    if (HFI1_CAP_KGET_MASK(rcd->flags, DMA_RTAIL)) {
            rcd->rcvhdrtail_kvaddr = dma_zalloc_coherent(
                    &dd->pcidev->dev, PAGE_SIZE, &dma_hdrqtail,
                    gfp_flags);
            if (!rcd->rcvhdrtail_kvaddr)
                    goto bail_free;
            rcd->rcvhdrqtailaddr_dma = dma_hdrqtail;
    }
    
    So the rcvhdrtail_kvaddr would then be NULL.
    
    The mmap logic fails to check for a NULL rcvhdrtail_kvaddr.
    
    The fix is to test for both user and kernel DMA_TAIL options
    during the allocation as well as testing for a NULL
    rcvhdrtail_kvaddr during the mmap processing.
    
    Additionally, all downstream testing of the capmask for DMA_RTAIL
    have been eliminated in favor of testing rcvhdrtail_kvaddr.
    
    Cc: <stable@vger.kernel.org> # 4.9.x
    Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 964705c4a69183182362977c28786e789a384700
Author: Sebastian Sanchez <sebastian.sanchez@intel.com>
Date:   Wed May 2 06:43:39 2018 -0700

    IB/hfi1: Optimize kthread pointer locking when queuing CQ entries
    
    commit af8aab71370a692eaf7e7969ba5b1a455ac20113 upstream.
    
    All threads queuing CQ entries on different CQs are unnecessarily
    synchronized by a spin lock to check if the CQ kthread worker hasn't
    been destroyed before queuing an CQ entry.
    
    The lock used in 6efaf10f163d ("IB/rdmavt: Avoid queuing work into a
    destroyed cq kthread worker") is a device global lock and will have
    poor performance at scale as completions are entered from a large
    number of CPUs.
    
    Convert to use RCU where the read side of RCU is rvt_cq_enter() to
    determine that the worker is alive prior to triggering the
    completion event.
    Apply write side RCU semantics in rvt_driver_cq_init() and
    rvt_cq_exit().
    
    Fixes: 6efaf10f163d ("IB/rdmavt: Avoid queuing work into a destroyed cq kthread worker")
    Cc: <stable@vger.kernel.org> # 4.14.x
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bd28cba43bd24ad3c8b485c3ab4bb4a65564b0c
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Wed May 2 06:43:07 2018 -0700

    IB/hfi1: Reorder incorrect send context disable
    
    commit a93a0a31111231bb1949f4a83b17238f0fa32d6a upstream.
    
    User send context integrity bits are cleared before the context is
    disabled.  If the send context is still processing data, any packets
    that need those integrity bits will cause an error and halt the send
    context.
    
    During the disable handling, the driver waits for the context to drain.
    If the context is halted, the driver will eventually timeout because
    the context won't drain and then incorrectly bounce the link.
    
    Reorder the bit clearing and the context disable.
    
    Examine the software state and send context status as well as the
    egress status to determine if a send context is in the halted state.
    
    Promote the check macros to static functions for consistency with the
    new check and to follow kernel style.
    
    Remove an unused define that refers to the egress timeout.
    
    Cc: <stable@vger.kernel.org> # 4.9.x
    Reviewed-by: Mitko Haralanov <mitko.haralanov@intel.com>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e81f9a2cef15c7563181a00d103c2b2fb4184eb
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Wed May 2 06:42:44 2018 -0700

    IB/hfi1: Fix fault injection init/exit issues
    
    commit 8c79d8223bb11b2f005695a32ddd3985de97727c upstream.
    
    There are config dependent code paths that expose panics in unload
    paths both in this file and in debugfs_remove_recursive() because
    CONFIG_FAULT_INJECTION and CONFIG_FAULT_INJECTION_DEBUG_FS can be
    set independently.
    
    Having CONFIG_FAULT_INJECTION set and CONFIG_FAULT_INJECTION_DEBUG_FS
    reset causes fault_create_debugfs_attr() to return an error.
    
    The debugfs.c routines tolerate failures, but the module unload panics
    dereferencing a NULL in the two exit routines.  If that is fixed, the
    dir passed to debugfs_remove_recursive comes from a memory location
    that was freed and potentially reused causing a segfault or corrupting
    memory.
    
    Here is an example of the NULL deref panic:
    
    [66866.286829] BUG: unable to handle kernel NULL pointer dereference at 0000000000000088
    [66866.295602] IP: hfi1_dbg_ibdev_exit+0x2a/0x80 [hfi1]
    [66866.301138] PGD 858496067 P4D 858496067 PUD 8433a7067 PMD 0
    [66866.307452] Oops: 0000 [#1] SMP
    [66866.310953] Modules linked in: hfi1(-) rdmavt rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm iw_cm ib_cm ib_core rpcsec_gss_krb5 nfsv4 dns_resolver nfsv3 nfs fscache sb_edac x86_pkg_temp_thermal intel_powerclamp vfat fat coretemp kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel iTCO_wdt iTCO_vendor_support crypto_simd mei_me glue_helper cryptd mxm_wmi ipmi_si pcspkr lpc_ich sg mei ioatdma ipmi_devintf i2c_i801 mfd_core shpchp ipmi_msghandler wmi acpi_power_meter acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables ext4 mbcache jbd2 sd_mod mgag200 drm_kms_helper syscopyarea sysfillrect sysimgblt igb fb_sys_fops ttm ahci ptp crc32c_intel libahci pps_core drm dca libata i2c_algo_bit i2c_core [last unloaded: opa_vnic]
    [66866.385551] CPU: 8 PID: 7470 Comm: rmmod Not tainted 4.14.0-mam-tid-rdma #2
    [66866.393317] Hardware name: Intel Corporation S2600WT2/S2600WT2, BIOS SE5C610.86B.01.01.0018.C4.072020161249 07/20/2016
    [66866.405252] task: ffff88084f28c380 task.stack: ffffc90008454000
    [66866.411866] RIP: 0010:hfi1_dbg_ibdev_exit+0x2a/0x80 [hfi1]
    [66866.417984] RSP: 0018:ffffc90008457da0 EFLAGS: 00010202
    [66866.423812] RAX: 0000000000000000 RBX: ffff880857de0000 RCX: 0000000180040001
    [66866.431773] RDX: 0000000180040002 RSI: ffffea0021088200 RDI: 0000000040000000
    [66866.439734] RBP: ffffc90008457da8 R08: ffff88084220e000 R09: 0000000180040001
    [66866.447696] R10: 000000004220e001 R11: ffff88084220e000 R12: ffff88085a31c000
    [66866.455657] R13: ffffffffa07c9820 R14: ffffffffa07c9890 R15: ffff881059d78100
    [66866.463618] FS:  00007f6876047740(0000) GS:ffff88085f800000(0000) knlGS:0000000000000000
    [66866.472644] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [66866.479053] CR2: 0000000000000088 CR3: 0000000856357006 CR4: 00000000001606e0
    [66866.487013] Call Trace:
    [66866.489747]  remove_one+0x1f/0x220 [hfi1]
    [66866.494221]  pci_device_remove+0x39/0xc0
    [66866.498596]  device_release_driver_internal+0x141/0x210
    [66866.504424]  driver_detach+0x3f/0x80
    [66866.508409]  bus_remove_driver+0x55/0xd0
    [66866.512784]  driver_unregister+0x2c/0x50
    [66866.517164]  pci_unregister_driver+0x2a/0xa0
    [66866.521934]  hfi1_mod_cleanup+0x10/0xaa2 [hfi1]
    [66866.526988]  SyS_delete_module+0x171/0x250
    [66866.531558]  do_syscall_64+0x67/0x1b0
    [66866.535644]  entry_SYSCALL64_slow_path+0x25/0x25
    [66866.540792] RIP: 0033:0x7f6875525c27
    [66866.544777] RSP: 002b:00007ffd48528e78 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
    [66866.553224] RAX: ffffffffffffffda RBX: 0000000001cc01d0 RCX: 00007f6875525c27
    [66866.561185] RDX: 00007f6875596000 RSI: 0000000000000800 RDI: 0000000001cc0238
    [66866.569146] RBP: 0000000000000000 R08: 00007f68757e9060 R09: 00007f6875596000
    [66866.577120] R10: 00007ffd48528c00 R11: 0000000000000206 R12: 00007ffd48529db4
    [66866.585080] R13: 0000000000000000 R14: 0000000001cc01d0 R15: 0000000001cc0010
    [66866.593040] Code: 90 0f 1f 44 00 00 48 83 3d a3 8b 03 00 00 55 48 89 e5 53 48 89 fb 74 4e 48 8d bf 18 0c 00 00 e8 9d f2 ff ff 48 8b 83 20 0c 00 00 <48> 8b b8 88 00 00 00 e8 2a 21 b3 e0 48 8b bb 20 0c 00 00 e8 0e
    [66866.614127] RIP: hfi1_dbg_ibdev_exit+0x2a/0x80 [hfi1] RSP: ffffc90008457da0
    [66866.621885] CR2: 0000000000000088
    [66866.625618] ---[ end trace c4817425783fb092 ]---
    
    Fix by insuring that upon failure from fault_create_debugfs_attr() the
    parent pointer for the routines is always set to NULL and guards added
    in the exit routines to insure that debugfs_remove_recursive() is not
    called when when the parent pointer is NULL.
    
    Fixes: 0181ce31b260 ("IB/hfi1: Add receive fault injection feature")
    Cc: <stable@vger.kernel.org> # 4.14.x
    Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c32951862c1a32c978643fc3cc5d47cc70c33da4
Author: Max Gurtovoy <maxg@mellanox.com>
Date:   Thu May 31 11:05:23 2018 +0300

    IB/isert: fix T10-pi check mask setting
    
    commit 0e12af84cdd3056460f928adc164f9e87f4b303b upstream.
    
    A copy/paste bug (probably) caused setting of an app_tag check mask
    in case where a ref_tag check was needed.
    
    Fixes: 38a2d0d429f1 ("IB/isert: convert to the generic RDMA READ/WRITE API")
    Fixes: 9e961ae73c2c ("IB/isert: Support T10-PI protected transactions")
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d4aaca8d0937ea5ff434f5a7039f27e163f476a
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Tue May 15 18:31:39 2018 -0700

    IB/isert: Fix for lib/dma_debug check_sync warning
    
    commit 763b69654bfb88ea3230d015e7d755ee8339f8ee upstream.
    
    The following error message occurs on a target host in a debug build
    during session login:
    
    [ 3524.411874] WARNING: CPU: 5 PID: 12063 at lib/dma-debug.c:1207 check_sync+0x4ec/0x5b0
    [ 3524.421057] infiniband hfi1_0: DMA-API: device driver tries to sync DMA memory it has not allocated [device address=0x0000000000000000] [size=76 bytes]
    ......snip .....
    
    [ 3524.535846] CPU: 5 PID: 12063 Comm: iscsi_np Kdump: loaded Not tainted 3.10.0-862.el7.x86_64.debug #1
    [ 3524.546764] Hardware name: Dell Inc. PowerEdge R430/03XKDV, BIOS 1.2.6 06/08/2015
    [ 3524.555740] Call Trace:
    [ 3524.559102]  [<ffffffffa5fe915b>] dump_stack+0x19/0x1b
    [ 3524.565477]  [<ffffffffa58a2f58>] __warn+0xd8/0x100
    [ 3524.571557]  [<ffffffffa58a2fdf>] warn_slowpath_fmt+0x5f/0x80
    [ 3524.578610]  [<ffffffffa5bf5b8c>] check_sync+0x4ec/0x5b0
    [ 3524.585177]  [<ffffffffa58efc3f>] ? set_cpus_allowed_ptr+0x5f/0x1c0
    [ 3524.592812]  [<ffffffffa5bf5cd0>] debug_dma_sync_single_for_cpu+0x80/0x90
    [ 3524.601029]  [<ffffffffa586add3>] ? x2apic_send_IPI_mask+0x13/0x20
    [ 3524.608574]  [<ffffffffa585ee1b>] ? native_smp_send_reschedule+0x5b/0x80
    [ 3524.616699]  [<ffffffffa58e9b76>] ? resched_curr+0xf6/0x140
    [ 3524.623567]  [<ffffffffc0879af0>] isert_create_send_desc.isra.26+0xe0/0x110 [ib_isert]
    [ 3524.633060]  [<ffffffffc087af95>] isert_put_login_tx+0x55/0x8b0 [ib_isert]
    [ 3524.641383]  [<ffffffffa58ef114>] ? try_to_wake_up+0x1a4/0x430
    [ 3524.648561]  [<ffffffffc098cfed>] iscsi_target_do_tx_login_io+0xdd/0x230 [iscsi_target_mod]
    [ 3524.658557]  [<ffffffffc098d827>] iscsi_target_do_login+0x1a7/0x600 [iscsi_target_mod]
    [ 3524.668084]  [<ffffffffa59f9bc9>] ? kstrdup+0x49/0x60
    [ 3524.674420]  [<ffffffffc098e976>] iscsi_target_start_negotiation+0x56/0xc0 [iscsi_target_mod]
    [ 3524.684656]  [<ffffffffc098c2ee>] __iscsi_target_login_thread+0x90e/0x1070 [iscsi_target_mod]
    [ 3524.694901]  [<ffffffffc098ca50>] ? __iscsi_target_login_thread+0x1070/0x1070 [iscsi_target_mod]
    [ 3524.705446]  [<ffffffffc098ca50>] ? __iscsi_target_login_thread+0x1070/0x1070 [iscsi_target_mod]
    [ 3524.715976]  [<ffffffffc098ca78>] iscsi_target_login_thread+0x28/0x60 [iscsi_target_mod]
    [ 3524.725739]  [<ffffffffa58d60ff>] kthread+0xef/0x100
    [ 3524.732007]  [<ffffffffa58d6010>] ? insert_kthread_work+0x80/0x80
    [ 3524.739540]  [<ffffffffa5fff1b7>] ret_from_fork_nospec_begin+0x21/0x21
    [ 3524.747558]  [<ffffffffa58d6010>] ? insert_kthread_work+0x80/0x80
    [ 3524.755088] ---[ end trace 23f8bf9238bd1ed8 ]---
    [ 3595.510822] iSCSI/iqn.1994-05.com.redhat:537fa56299: Unsupported SCSI Opcode 0xa3, sending CHECK_CONDITION.
    
    The code calls dma_sync on login_tx_desc->dma_addr prior to initializing it
    with dma-mapped address.
    login_tx_desc is a part of iser_conn structure and is used only once
    during login negotiation, so the issue is fixed by eliminating
    dma_sync call for this buffer using a special case routine.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Reviewed-by: Don Dutile <ddutile@redhat.com>
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c06f8c2173b2c848b28c4cf2ee2e82c4f791c638
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Mon May 21 11:41:01 2018 +0300

    IB/mlx5: Fetch soft WQE's on fatal error state
    
    commit 7b74a83cf54a3747e22c57e25712bd70eef8acee upstream.
    
    On fatal error the driver simulates CQE's for ULPs that rely on
    completion of all their posted work-request.
    
    For the GSI traffic, the mlx5 has its own mechanism that sends the
    completions via software CQE's directly to the relevant CQ.
    
    This should be kept in fatal error too, so the driver should simulate
    such CQE's with the specified error state in order to complete GSI QP
    work requests.
    
    Without the fix the next deadlock might appears:
            schedule_timeout+0x274/0x350
            wait_for_common+0xec/0x240
            mcast_remove_one+0xd0/0x120 [ib_core]
            ib_unregister_device+0x12c/0x230 [ib_core]
            mlx5_ib_remove+0xc4/0x270 [mlx5_ib]
            mlx5_detach_device+0x184/0x1a0 [mlx5_core]
            mlx5_unload_one+0x308/0x340 [mlx5_core]
            mlx5_pci_err_detected+0x74/0xe0 [mlx5_core]
    
    Cc: <stable@vger.kernel.org> # 4.7
    Fixes: 89ea94a7b6c4 ("IB/mlx5: Reset flow support for IB kernel ULPs")
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96fb9b88385f9b8b308cf2c8b050cd38ed038a59
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Wed May 23 15:30:30 2018 +0300

    IB/core: Make testing MR flags for writability a static inline function
    
    commit 08bb558ac11ab944e0539e78619d7b4c356278bd upstream.
    
    Make the MR writability flags check, which is performed in umem.c,
    a static inline function in file ib_verbs.h
    
    This allows the function to be used by low-level infiniband drivers.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c82abc1b26ae3ce8c81f939e579b9e44452b81b
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Wed May 23 15:30:31 2018 +0300

    IB/mlx4: Mark user MR as writable if actual virtual memory is writable
    
    commit d8f9cc328c8888369880e2527e9186d745f2bbf6 upstream.
    
    To allow rereg_user_mr to modify the MR from read-only to writable without
    using get_user_pages again, we needed to define the initial MR as writable.
    However, this was originally done unconditionally, without taking into
    account the writability of the underlying virtual memory.
    
    As a result, any attempt to register a read-only MR over read-only
    virtual memory failed.
    
    To fix this, do not add the writable flag bit when the user virtual memory
    is not writable (e.g. const memory).
    
    However, when the underlying memory is NOT writable (and we therefore
    do not define the initial MR as writable), the IB core adds a
    "force writable" flag to its user-pages request. If this succeeds,
    the reg_user_mr caller gets a writable copy of the original pages.
    
    If the user-space caller then does a rereg_user_mr operation to enable
    writability, this will succeed. This should not be allowed, since
    the original virtual memory was not writable.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 9376932d0c26 ("IB/mlx4_ib: Add support for user MR re-registration")
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49e1083214c68a151b9395388791061a8d0de710
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Wed May 2 06:43:15 2018 -0700

    IB/{hfi1, qib}: Add handling of kernel restart
    
    commit 8d3e71136a080d007620472f50c7b3e63ba0f5cf upstream.
    
    A warm restart will fail to unload the driver, leaving link state
    potentially flapping up to the point the BIOS resets the adapter.
    Correct the issue by hooking the shutdown pci method,
    which will bring port down.
    
    Cc: <stable@vger.kernel.org> # 4.9.x
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e884ed82995ad9d31b6fa93bbaa7870a584700dd
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Fri May 18 17:07:01 2018 -0700

    IB/qib: Fix DMA api warning with debug kernel
    
    commit 0252f73334f9ef68868e4684200bea3565a4fcee upstream.
    
    The following error occurs in a debug build when running MPI PSM:
    
    [  307.415911] WARNING: CPU: 4 PID: 23867 at lib/dma-debug.c:1158
    check_unmap+0x4ee/0xa20
    [  307.455661] ib_qib 0000:05:00.0: DMA-API: device driver failed to check map
    error[device address=0x00000000df82b000] [size=4096 bytes] [mapped as page]
    [  307.517494] Modules linked in:
    [  307.531584]  ib_isert iscsi_target_mod ib_srpt target_core_mod rpcrdma
    sunrpc ib_srp scsi_transport_srp scsi_tgt ib_iser libiscsi ib_ipoib
    scsi_transport_iscsi rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm
    ib_qib intel_powerclamp coretemp rdmavt intel_rapl iosf_mbi kvm_intel kvm
    irqbypass crc32_pclmul ghash_clmulni_intel ipmi_ssif ib_core aesni_intel sg
    ipmi_si lrw gf128mul dca glue_helper ipmi_devintf iTCO_wdt gpio_ich hpwdt
    iTCO_vendor_support ablk_helper hpilo acpi_power_meter cryptd ipmi_msghandler
    ie31200_edac shpchp pcc_cpufreq lpc_ich pcspkr ip_tables xfs libcrc32c sd_mod
    crc_t10dif crct10dif_generic mgag200 i2c_algo_bit drm_kms_helper syscopyarea
    sysfillrect sysimgblt fb_sys_fops ttm ahci crct10dif_pclmul crct10dif_common
    drm crc32c_intel libahci tg3 libata serio_raw ptp i2c_core
    [  307.846113]  pps_core dm_mirror dm_region_hash dm_log dm_mod
    [  307.866505] CPU: 4 PID: 23867 Comm: mpitests-IMB-MP Kdump: loaded Not
    tainted 3.10.0-862.el7.x86_64.debug #1
    [  307.911178] Hardware name: HP ProLiant DL320e Gen8, BIOS J05 11/09/2013
    [  307.944206] Call Trace:
    [  307.956973]  [<ffffffffbd9e915b>] dump_stack+0x19/0x1b
    [  307.982201]  [<ffffffffbd2a2f58>] __warn+0xd8/0x100
    [  308.005999]  [<ffffffffbd2a2fdf>] warn_slowpath_fmt+0x5f/0x80
    [  308.034260]  [<ffffffffbd5f667e>] check_unmap+0x4ee/0xa20
    [  308.060801]  [<ffffffffbd41acaa>] ? page_add_file_rmap+0x2a/0x1d0
    [  308.090689]  [<ffffffffbd5f6c4d>] debug_dma_unmap_page+0x9d/0xb0
    [  308.120155]  [<ffffffffbd4082e0>] ? might_fault+0xa0/0xb0
    [  308.146656]  [<ffffffffc07761a5>] qib_tid_free.isra.14+0x215/0x2a0 [ib_qib]
    [  308.180739]  [<ffffffffc0776bf4>] qib_write+0x894/0x1280 [ib_qib]
    [  308.210733]  [<ffffffffbd540b00>] ? __inode_security_revalidate+0x70/0x80
    [  308.244837]  [<ffffffffbd53c2b7>] ? security_file_permission+0x27/0xb0
    [  308.266025] qib_ib0.8006: multicast join failed for
    ff12:401b:8006:0000:0000:0000:ffff:ffff, status -22
    [  308.323421]  [<ffffffffbd46f5d3>] vfs_write+0xc3/0x1f0
    [  308.347077]  [<ffffffffbd492a5c>] ? fget_light+0xfc/0x510
    [  308.372533]  [<ffffffffbd47045a>] SyS_write+0x8a/0x100
    [  308.396456]  [<ffffffffbd9ff355>] system_call_fastpath+0x1c/0x21
    
    The code calls a qib_map_page() which has never correctly tested for a
    mapping error.
    
    Fix by testing for pci_dma_mapping_error() in all cases and properly
    handling the failure in the caller.
    
    Additionally, streamline qib_map_page() arguments to satisfy just
    the single caller.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Alex Estrin <alex.estrin@intel.com>
    Tested-by: Don Dutile <ddutile@redhat.com>
    Reviewed-by: Don Dutile <ddutile@redhat.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c41cb9cb5611747d64c3d569c1e9937f3d90e965
Author: Tadeusz Struk <tadeusz.struk@intel.com>
Date:   Tue May 22 14:37:18 2018 -0700

    tpm: fix race condition in tpm_common_write()
    
    commit 3ab2011ea368ec3433ad49e1b9e1c7b70d2e65df upstream.
    
    There is a race condition in tpm_common_write function allowing
    two threads on the same /dev/tpm<N>, or two different applications
    on the same /dev/tpmrm<N> to overwrite each other commands/responses.
    Fixed this by taking the priv->buffer_mutex early in the function.
    
    Also converted the priv->data_pending from atomic to a regular size_t
    type. There is no need for it to be atomic since it is only touched
    under the protection of the priv->buffer_mutex.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bf1a5e21798518fd6a025c6e0c0168955f5e8e6
Author: Tadeusz Struk <tadeusz.struk@intel.com>
Date:   Wed May 9 11:55:35 2018 -0700

    tpm: fix use after free in tpm2_load_context()
    
    commit 8c81c24758ffbf17cf06c6835d361ffa57be2f0e upstream.
    
    If load context command returns with TPM2_RC_HANDLE or TPM2_RC_REFERENCE_H0
    then we have use after free in line 114 and double free in 117.
    
    Fixes: 4d57856a21ed2 ("tpm2: add session handle context saving and restoring to the space code")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off--by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ed6871464b813c9fbdfac6878ce96af7725f614
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Mon Jun 4 15:14:08 2018 +0100

    of: platform: stop accessing invalid dev in of_platform_device_destroy
    
    commit 522811e944ed9b36806faa019faec10f9d259cca upstream.
    
    Immediately after the platform_device_unregister() the device will be
    cleaned up. Accessing the freed pointer immediately after that will
    crash the system.
    
    Found this bug when kernel is built with CONFIG_PAGE_POISONING and testing
    loading/unloading audio drivers in a loop on Qcom platforms.
    
    Fix this by moving of_node_clear_flag() just before the unregister calls.
    
    Below is the crash trace:
    
    Unable to handle kernel paging request at virtual address 6b6b6b6b6b6c03
    Mem abort info:
      ESR = 0x96000021
      Exception class = DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
    Data abort info:
      ISV = 0, ISS = 0x00000021
      CM = 0, WnR = 0
    [006b6b6b6b6b6c03] address between user and kernel address ranges
    Internal error: Oops: 96000021 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 2 PID: 1784 Comm: sh Tainted: G        W         4.17.0-rc7-02230-ge3a63a7ef641-dirty #204
    Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
    pstate: 80000005 (Nzcv daif -PAN -UAO)
    pc : clear_bit+0x18/0x2c
    lr : of_platform_device_destroy+0x64/0xb8
    sp : ffff00000c9c3930
    x29: ffff00000c9c3930 x28: ffff80003d39b200
    x27: ffff000008bb1000 x26: 0000000000000040
    x25: 0000000000000124 x24: ffff80003a9a3080
    x23: 0000000000000060 x22: ffff00000939f518
    x21: ffff80003aa79e98 x20: ffff80003aa3dae0
    x19: ffff80003aa3c890 x18: ffff800009feb794
    x17: 0000000000000000 x16: 0000000000000000
    x15: ffff800009feb790 x14: 0000000000000000
    x13: ffff80003a058778 x12: ffff80003a058728
    x11: ffff80003a058750 x10: 0000000000000000
    x9 : 0000000000000006 x8 : ffff80003a825988
    x7 : bbbbbbbbbbbbbbbb x6 : 0000000000000001
    x5 : 0000000000000000 x4 : 0000000000000001
    x3 : 0000000000000008 x2 : 0000000000000001
    x1 : 6b6b6b6b6b6b6c03 x0 : 0000000000000000
    Process sh (pid: 1784, stack limit = 0x        (ptrval))
    Call trace:
     clear_bit+0x18/0x2c
     q6afe_remove+0x20/0x38
     apr_device_remove+0x30/0x70
     device_release_driver_internal+0x170/0x208
     device_release_driver+0x14/0x20
     bus_remove_device+0xcc/0x150
     device_del+0x10c/0x310
     device_unregister+0x1c/0x70
     apr_remove_device+0xc/0x18
     device_for_each_child+0x50/0x80
     apr_remove+0x18/0x20
     rpmsg_dev_remove+0x38/0x68
     device_release_driver_internal+0x170/0x208
     device_release_driver+0x14/0x20
     bus_remove_device+0xcc/0x150
     device_del+0x10c/0x310
     device_unregister+0x1c/0x70
     qcom_smd_remove_device+0xc/0x18
     device_for_each_child+0x50/0x80
     qcom_smd_unregister_edge+0x3c/0x70
     smd_subdev_remove+0x18/0x28
     rproc_stop+0x48/0xd8
     rproc_shutdown+0x60/0xe8
     state_store+0xbc/0xf8
     dev_attr_store+0x18/0x28
     sysfs_kf_write+0x3c/0x50
     kernfs_fop_write+0x118/0x1e0
     __vfs_write+0x18/0x110
     vfs_write+0xa4/0x1a8
     ksys_write+0x48/0xb0
     sys_write+0xc/0x18
     el0_svc_naked+0x30/0x34
    Code: d2800022 8b400c21 f9800031 9ac32043 (c85f7c22)
    ---[ end trace 32020935775616a2 ]---
    
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ba51909693c7bf8c463b9c90f7f8726b710fe42
Author: Stefan M Schaeckeler <sschaeck@cisco.com>
Date:   Mon May 21 16:26:14 2018 -0700

    of: unittest: for strings, account for trailing \0 in property length field
    
    commit 3b9cf7905fe3ab35ab437b5072c883e609d3498d upstream.
    
    For strings, account for trailing \0 in property length field:
    
    This is consistent with how dtc builds string properties.
    
    Function __of_prop_dup() would misbehave on such properties as it duplicates
    properties based on the property length field creating new string values
    without trailing \0s.
    
    Signed-off-by: Stefan M Schaeckeler <sschaeck@cisco.com>
    Reviewed-by: Frank Rowand <frank.rowand@sony.com>
    Tested-by: Frank Rowand <frank.rowand@sony.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4910cc250b4dab82b42a743377d359abaee07b73
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Wed May 16 21:19:51 2018 -0700

    of: overlay: validate offset from property fixups
    
    commit 482137bf2aecd887ebfa8756456764a2f6a0e545 upstream.
    
    The smatch static checker marks the data in offset as untrusted,
    leading it to warn:
    
      drivers/of/resolver.c:125 update_usages_of_a_phandle_reference()
      error: buffer underflow 'prop->value' 's32min-s32max'
    
    Add check to verify that offset is within the property data.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 728ea2302acc19cd83164b38408fd5f84e5153b2
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Thu Apr 26 12:50:46 2018 +0200

    ARM64: dts: meson: disable sd-uhs modes on the libretech-cc
    
    commit d5b4885b1dff72ac670b518cfeaac719d768bd4d upstream.
    
    There is a problem with the sd-uhs mode when doing a soft reboot.
    Switching back from 1.8v to 3.3v messes with the card, which no longer
    respond (timeout errors). According to the specification, we should
    perform a card reset (power cycling the card) but this is something we
    cannot control on this design.
    
    Then the only solution to restore the communication with the card is an
    "unplug-plug" which is not acceptable
    
    Until we find a solution, if any, disable the sd-uhs modes on this design.
    For the people using uhs at the moment, there will a performance drop as
    a result.
    
    Fixes: 3cde63ebc85c ("ARM64: dts: meson-gxl: libretech-cc: enable high speed modes")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64df84dcf1e4dd3b63c60dd6f36473d19060af48
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Jun 22 16:23:45 2018 +0100

    arm64: mm: Ensure writes to swapper are ordered wrt subsequent cache maintenance
    
    commit 71c8fc0c96abf8e53e74ed4d891d671e585f9076 upstream.
    
    When rewriting swapper using nG mappings, we must performance cache
    maintenance around each page table access in order to avoid coherency
    problems with the host's cacheable alias under KVM. To ensure correct
    ordering of the maintenance with respect to Device memory accesses made
    with the Stage-1 MMU disabled, DMBs need to be added between the
    maintenance and the corresponding memory access.
    
    This patch adds a missing DMB between writing a new page table entry and
    performing a clean+invalidate on the same line.
    
    Fixes: f992b4dfd58b ("arm64: kpti: Add ->enable callback to remap swapper using nG mappings")
    Cc: <stable@vger.kernel.org> # 4.16.x-
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6ae5ac75abf889e89c7ad3cdb75bb15d0a6308
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Jun 22 10:25:25 2018 +0100

    arm64: kpti: Use early_param for kpti= command-line option
    
    commit b5b7dd647f2d21b93f734ce890671cd908e69b0a upstream.
    
    We inspect __kpti_forced early on as part of the cpufeature enable
    callback which remaps the swapper page table using non-global entries.
    
    Ensure that __kpti_forced has been updated to reflect the kpti=
    command-line option before we start using it.
    
    Fixes: ea1e3de85e94 ("arm64: entry: Add fake CPU feature for unmapping the kernel at EL0")
    Cc: <stable@vger.kernel.org> # 4.16.x-
    Reported-by: Wei Xu <xuwei5@hisilicon.com>
    Tested-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Wei Xu <xuwei5@hisilicon.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdfa28c29ad4b5933c84ac13293739040fa1a3e9
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Thu Jun 7 12:32:05 2018 +0100

    arm64: Fix syscall restarting around signal suppressed by tracer
    
    commit 0fe42512b2f03f9e5a20b9f55ef1013a68b4cd48 upstream.
    
    Commit 17c2895 ("arm64: Abstract syscallno manipulation") abstracts
    out the pt_regs.syscallno value for a syscall cancelled by a tracer
    as NO_SYSCALL, and provides helpers to set and check for this
    condition.  However, the way this was implemented has the
    unintended side-effect of disabling part of the syscall restart
    logic.
    
    This comes about because the second in_syscall() check in
    do_signal() re-evaluates the "in a syscall" condition based on the
    updated pt_regs instead of the original pt_regs.  forget_syscall()
    is explicitly called prior to the second check in order to prevent
    restart logic in the ret_to_user path being spuriously triggered,
    which means that the second in_syscall() check always yields false.
    
    This triggers a failure in
    tools/testing/selftests/seccomp/seccomp_bpf.c, when using ptrace to
    suppress a signal that interrups a nanosleep() syscall.
    
    Misbehaviour of this type is only expected in the case where a
    tracer suppresses a signal and the target process is either being
    single-stepped or the interrupted syscall attempts to restart via
    -ERESTARTBLOCK.
    
    This patch restores the old behaviour by performing the
    in_syscall() check only once at the start of the function.
    
    Fixes: 17c289586009 ("arm64: Abstract syscallno manipulation")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Reported-by: Sumit Semwal <sumit.semwal@linaro.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: <stable@vger.kernel.org> # 4.14.x-
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14ca7d344e271c89858858abb3757642bc4c7a76
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Mon May 14 10:15:19 2018 -0500

    ARM: dts: socfpga: Fix NAND controller node compatible for Arria10
    
    commit 3877ef7a1ccecaae378c497e1dcddbc2dccb664c upstream.
    
    The NAND compatible "denali,denal-nand-dt" property has never been used and
    is obsolete. Remove it.
    
    Cc: stable@vger.kernel.org
    Fixes: f549af06e9b6("ARM: dts: socfpga: Add NAND device tree for Arria10")
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae6647c78ff831380851869344161f460896892a
Author: Marek Vasut <marex@denx.de>
Date:   Thu May 10 16:37:26 2018 +0200

    ARM: dts: socfpga: Fix NAND controller clock supply
    
    commit 4eda9b766b042ea38d84df91581b03f6145a2ab0 upstream.
    
    The Denali NAND x-clock should be supplied by nand_x_clk, not by
    nand_clk. Fix this, otherwise the Denali driver gets incorrect
    clock frequency information and incorrectly configures the NAND
    timing.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Marek Vasut <marex@denx.de>
    Fixes: d837a80d19 ("ARM: dts: socfpga: add nand controller nodes")
    Cc: Steffen Trumtrar <s.trumtrar@pengutronix.de>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3482130d8d1e60b5b08ed09874dbfafa9908df98
Author: Marek Vasut <marex@denx.de>
Date:   Thu May 10 14:52:23 2018 +0200

    ARM: dts: socfpga: Fix NAND controller node compatible
    
    commit d9a695f3c8098ac9684689774a151cff30d8aa25 upstream.
    
    The compatible string for the Denali NAND controller is incorrect,
    fix it by replacing it with one matching the DT bindings and the
    driver.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Marek Vasut <marex@denx.de>
    Fixes: d837a80d19 ("ARM: dts: socfpga: add nand controller nodes")
    Cc: Steffen Trumtrar <s.trumtrar@pengutronix.de>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3db24d2e192f1ccf1723550184e38f94d173e8ab
Author: Thor Thayer <thor.thayer@linux.intel.com>
Date:   Fri Jun 22 13:37:34 2018 -0500

    ARM: dts: Fix SPI node for Arria10
    
    commit 975ba94c2c3aca4d9f1ae26f3916d7787495ce86 upstream.
    
    Remove the unused bus-num node and change num-chipselect
    to num-cs to match SPI bindings.
    
    Cc: stable@vger.kernel.org
    Fixes: f2d6f8f817814 ("ARM: dts: socfpga: Add SPI Master1 for Arria10 SR chip")
    Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eda170a9fe51284303f4999957e57e1c4b3c9ff3
Author: David Rivshin <DRivshin@allworx.com>
Date:   Wed Apr 25 21:15:01 2018 +0100

    ARM: 8764/1: kgdb: fix NUMREGBYTES so that gdb_regs[] is the correct size
    
    commit 76ed0b803a2ab793a1b27d1dfe0de7955282cd34 upstream.
    
    NUMREGBYTES (which is used as the size for gdb_regs[]) is incorrectly
    based on DBG_MAX_REG_NUM instead of GDB_MAX_REGS. DBG_MAX_REG_NUM
    is the number of total registers, while GDB_MAX_REGS is the number
    of 'unsigned longs' it takes to serialize those registers. Since
    FP registers require 3 'unsigned longs' each, DBG_MAX_REG_NUM is
    smaller than GDB_MAX_REGS.
    
    This causes GDB 8.0 give the following error on connect:
    "Truncated register 19 in remote 'g' packet"
    
    This also causes the register serialization/deserialization logic
    to overflow gdb_regs[], overwriting whatever follows.
    
    Fixes: 834b2964b7ab ("kgdb,arm: fix register dump")
    Cc: <stable@vger.kernel.org> # 2.6.37+
    Signed-off-by: David Rivshin <drivshin@allworx.com>
    Acked-by: Rabin Vincent <rabin@rab.in>
    Tested-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9debbd1a5b84014d8651da82ca30651d83ca322
Author: Vaibhav Jain <vaibhav@linux.ibm.com>
Date:   Fri May 18 15:12:23 2018 +0530

    cxl: Disable prefault_mode in Radix mode
    
    commit b6c84ba22ff3a198eb8d5552cf9b8fda1d792e54 upstream.
    
    Currently we see a kernel-oops reported on Power-9 while attaching a
    context to an AFU, with radix-mode and sysfs attr 'prefault_mode' set
    to anything other than 'none'. The backtrace of the oops is of this
    form:
    
      Unable to handle kernel paging request for data at address 0x00000080
      Faulting instruction address: 0xc00800000bcf3b20
      cpu 0x1: Vector: 300 (Data Access) at [c00000037f003800]
          pc: c00800000bcf3b20: cxl_load_segment+0x178/0x290 [cxl]
          lr: c00800000bcf39f0: cxl_load_segment+0x48/0x290 [cxl]
          sp: c00000037f003a80
         msr: 9000000000009033
         dar: 80
       dsisr: 40000000
        current = 0xc00000037f280000
        paca    = 0xc0000003ffffe600   softe: 3        irq_happened: 0x01
          pid   = 3529, comm = afp_no_int
      <snip>
      cxl_prefault+0xfc/0x248 [cxl]
      process_element_entry_psl9+0xd8/0x1a0 [cxl]
      cxl_attach_dedicated_process_psl9+0x44/0x130 [cxl]
      native_attach_process+0xc0/0x130 [cxl]
      afu_ioctl+0x3f4/0x5e0 [cxl]
      do_vfs_ioctl+0xdc/0x890
      ksys_ioctl+0x68/0xf0
      sys_ioctl+0x40/0xa0
      system_call+0x58/0x6c
    
    The issue is caused as on Power-8 the AFU attr 'prefault_mode' was
    used to improve initial storage fault performance by prefaulting
    process segments. However on Power-9 with radix mode we don't have
    Storage-Segments that we can prefault. Also prefaulting process Pages
    will be too costly and fine-grained.
    
    Hence, since the prefaulting mechanism doesn't makes sense of
    radix-mode, this patch updates prefault_mode_store() to not allow any
    other value apart from CXL_PREFAULT_NONE when radix mode is enabled.
    
    Fixes: f24be42aab37 ("cxl: Add psl9 specific code")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 971a55574b4789c64d43c6d34f5549c337567731
Author: Finley Xiao <finley.xiao@rock-chips.com>
Date:   Mon May 14 11:29:38 2018 +0800

    soc: rockchip: power-domain: Fix wrong value when power up pd with writemask
    
    commit 9e59c5f66c624b43c766a9fe3b2430e0e976bf0e upstream.
    
    Solve the pd could only ever turn off but never turn them on again,
    if the pd registers have the writemask bits.
    
    So far this affects the rk3328 only.
    
    Fixes: 79bb17ce8edb ("soc: rockchip: power-domain: Support domain control in hiword-registers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
    Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56fbab60aa47c64898c3d18540322c317ada32ef
Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Date:   Fri Apr 27 11:53:18 2018 +0530

    powerpc/fadump: Unregister fadump on kexec down path.
    
    commit 722cde76d68e8cc4f3de42e71c82fd40dea4f7b9 upstream.
    
    Unregister fadump on kexec down path otherwise the fadump registration
    in new kexec-ed kernel complains that fadump is already registered.
    This makes new kernel to continue using fadump registered by previous
    kernel which may lead to invalid vmcore generation. Hence this patch
    fixes this issue by un-registering fadump in fadump_cleanup() which is
    called during kexec path so that new kernel can register fadump with
    new valid values.
    
    Fixes: b500afff11f6 ("fadump: Invalidate registration and release reserved memory for general use.")
    Cc: stable@vger.kernel.org # v3.4+
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b185e667b5222f170a337d57ca338fd2f66f828
Author: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Date:   Thu May 31 17:45:09 2018 +0530

    cpuidle: powernv: Fix promotion from snooze if next state disabled
    
    commit 0a4ec6aa035a52c422eceb2ed51ed88392a3d6c2 upstream.
    
    The commit 78eaa10f027c ("cpuidle: powernv/pseries: Auto-promotion of
    snooze to deeper idle state") introduced a timeout for the snooze idle
    state so that it could be eventually be promoted to a deeper idle
    state. The snooze timeout value is static and set to the target
    residency of the next idle state, which would train the cpuidle
    governor to pick the next idle state eventually.
    
    The unfortunate side-effect of this is that if the next idle state(s)
    is disabled, the CPU will forever remain in snooze, despite the fact
    that the system is completely idle, and other deeper idle states are
    available.
    
    This patch fixes the issue by dynamically setting the snooze timeout
    to the target residency of the next enabled state on the device.
    
    Before Patch:
      POWER8 : Only nap disabled.
      $ cpupower monitor sleep 30
      sleep took 30.01297 seconds and exited with status 0
                    |Idle_Stats
      PKG |CORE|CPU | snoo | Nap  | Fast
         0|   8|   0| 96.41|  0.00|  0.00
         0|   8|   1| 96.43|  0.00|  0.00
         0|   8|   2| 96.47|  0.00|  0.00
         0|   8|   3| 96.35|  0.00|  0.00
         0|   8|   4| 96.37|  0.00|  0.00
         0|   8|   5| 96.37|  0.00|  0.00
         0|   8|   6| 96.47|  0.00|  0.00
         0|   8|   7| 96.47|  0.00|  0.00
    
      POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1,
      stop2) disabled:
      $ cpupower monitor sleep 30
      sleep took 30.05033 seconds and exited with status 0
                    |Idle_Stats
      PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop
         0|  16|   0| 89.79|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
         0|  16|   1| 90.12|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
         0|  16|   2| 90.21|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
         0|  16|   3| 90.29|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
    
    After Patch:
      POWER8 : Only nap disabled.
      $ cpupower monitor sleep 30
      sleep took 30.01200 seconds and exited with status 0
                    |Idle_Stats
      PKG |CORE|CPU | snoo | Nap  | Fast
         0|   8|   0| 16.58|  0.00| 77.21
         0|   8|   1| 18.42|  0.00| 75.38
         0|   8|   2|  4.70|  0.00| 94.09
         0|   8|   3| 17.06|  0.00| 81.73
         0|   8|   4|  3.06|  0.00| 95.73
         0|   8|   5|  7.00|  0.00| 96.80
         0|   8|   6|  1.00|  0.00| 98.79
         0|   8|   7|  5.62|  0.00| 94.17
    
      POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1,
      stop2) disabled:
    
      $ cpupower monitor sleep 30
      sleep took 30.02110 seconds and exited with status 0
                    |Idle_Stats
      PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop
         0|   0|   0|  0.69|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  9.39| 89.70
         0|   0|   1|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.05| 93.21
         0|   0|   2|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 89.93
         0|   0|   3|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 93.26
    
    Fixes: 78eaa10f027c ("cpuidle: powernv/pseries: Auto-promotion of snooze to deeper idle state")
    Cc: stable@vger.kernel.org # v4.2+
    Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Reviewed-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5d49dfb20c943d6b9b49bdca3142795db2c55ef
Author: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
Date:   Wed May 16 17:32:14 2018 +0530

    powerpc/powernv/cpuidle: Init all present cpus for deep states
    
    commit ac9816dcbab53c57bcf1d7b15370b08f1e284318 upstream.
    
    Init all present cpus for deep states instead of "all possible" cpus.
    Init fails if a possible cpu is guarded. Resulting in making only
    non-deep states available for cpuidle/hotplug.
    
    Stewart says, this means that for single threaded workloads, if you
    guard out a CPU core you'll not get WoF (Workload Optimised
    Frequency), which means that performance goes down when you wouldn't
    expect it to.
    
    Fixes: 77b54e9f213f ("powernv/powerpc: Add winkle support for offline cpus")
    Cc: stable@vger.kernel.org # v3.19+
    Signed-off-by: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 134e70c22eb0a47dcb30f20859f331344b5018db
Author: Haren Myneni <haren@us.ibm.com>
Date:   Mon Jun 4 18:33:38 2018 +1000

    powerpc/powernv: copy/paste - Mask SO bit in CR
    
    commit 75743649064ec0cf5ddd69f240ef23af66dde16e upstream.
    
    NX can set the 3rd bit in CR register for XER[SO] (Summary overflow)
    which is not related to paste request. The current paste function
    returns failure for a successful request when this bit is set. So mask
    this bit and check the proper return status.
    
    Fixes: 2392c8c8c045 ("powerpc/powernv/vas: Define copy/paste interfaces")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Haren Myneni <haren@us.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e8bb91c6dd6a77c60279c4fd83975ef257ed3c2
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Wed May 30 19:22:50 2018 +1000

    powerpc/powernv/ioda2: Remove redundant free of TCE pages
    
    commit 98fd72fe82527fd26618062b60cfd329451f2329 upstream.
    
    When IODA2 creates a PE, it creates an IOMMU table with it_ops::free
    set to pnv_ioda2_table_free() which calls pnv_pci_ioda2_table_free_pages().
    
    Since iommu_tce_table_put() calls it_ops::free when the last reference
    to the table is released, explicit call to pnv_pci_ioda2_table_free_pages()
    is not needed so let's remove it.
    
    This should fix double free in the case of PCI hotuplug as
    pnv_pci_ioda2_table_free_pages() does not reset neither
    iommu_table::it_base nor ::it_size.
    
    This was not exposed by SRIOV as it uses different code path via
    pnv_pcibios_sriov_disable().
    
    IODA1 does not inialize it_ops::free so it does not have this issue.
    
    Fixes: c5f7700bbd2e ("powerpc/powernv: Dynamically release PE")
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 919c9b8187bc8aa66388e50248c7f6c5b0c87e97
Author: Michael Neuling <mikey@neuling.org>
Date:   Thu May 17 15:37:14 2018 +1000

    powerpc/ptrace: Fix enforcement of DAWR constraints
    
    commit cd6ef7eebf171bfcba7dc2df719c2a4958775040 upstream.
    
    Back when we first introduced the DAWR, in commit 4ae7ebe9522a
    ("powerpc: Change hardware breakpoint to allow longer ranges"), we
    screwed up the constraint making it a 1024 byte boundary rather than a
    512. This makes the check overly permissive. Fortunately GDB is the
    only real user and it always did they right thing, so we never
    noticed.
    
    This fixes the constraint to 512 bytes.
    
    Fixes: 4ae7ebe9522a ("powerpc: Change hardware breakpoint to allow longer ranges")
    Cc: stable@vger.kernel.org # v3.9+
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ab9092356a13ab26cf28f35943571bb35d5d875
Author: Anju T Sudhakar <anju@linux.vnet.ibm.com>
Date:   Wed May 16 12:05:18 2018 +0530

    powerpc/perf: Fix memory allocation for core-imc based on num_possible_cpus()
    
    commit d2032678e57fc508d7878307badde8f89b632ba3 upstream.
    
    Currently memory is allocated for core-imc based on cpu_present_mask,
    which has bit 'cpu' set iff cpu is populated. We use (cpu number / threads
    per core) as the array index to access the memory.
    
    Under some circumstances firmware marks a CPU as GUARDed CPU and boot the
    system, until cleared of errors, these CPU's are unavailable for all
    subsequent boots. GUARDed CPUs are possible but not present from linux
    view, so it blows a hole when we assume the max length of our allocation
    is driven by our max present cpus, where as one of the cpus might be online
    and be beyond the max present cpus, due to the hole.
    So (cpu number / threads per core) value bounds the array index and leads
    to memory overflow.
    
    Call trace observed during a guard test:
    
    Faulting instruction address: 0xc000000000149f1c
    cpu 0x69: Vector: 380 (Data Access Out of Range) at [c000003fea303420]
        pc:c000000000149f1c: prefetch_freepointer+0x14/0x30
        lr:c00000000014e0f8: __kmalloc+0x1a8/0x1ac
        sp:c000003fea3036a0
       msr:9000000000009033
       dar:c9c54b2c91dbf6b7
      current = 0xc000003fea2c0000
      paca    = 0xc00000000fddd880   softe: 3        irq_happened: 0x01
        pid   = 1, comm = swapper/104
    Linux version 4.16.7-openpower1 (smc@smc-desktop) (gcc version 6.4.0
    (Buildroot 2018.02.1-00006-ga8d1126)) #2 SMP Fri May 4 16:44:54 PDT 2018
    enter ? for help
    call trace:
             __kmalloc+0x1a8/0x1ac
             (unreliable)
             init_imc_pmu+0x7f4/0xbf0
             opal_imc_counters_probe+0x3fc/0x43c
             platform_drv_probe+0x48/0x80
             driver_probe_device+0x22c/0x308
             __driver_attach+0xa0/0xd8
             bus_for_each_dev+0x88/0xb4
             driver_attach+0x2c/0x40
             bus_add_driver+0x1e8/0x228
             driver_register+0xd0/0x114
             __platform_driver_register+0x50/0x64
             opal_imc_driver_init+0x24/0x38
             do_one_initcall+0x150/0x15c
             kernel_init_freeable+0x250/0x254
             kernel_init+0x1c/0x150
             ret_from_kernel_thread+0x5c/0xc8
    
    Allocating memory for core-imc based on cpu_possible_mask, which has
    bit 'cpu' set iff cpu is populatable, will fix this issue.
    
    Reported-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
    Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
    Reviewed-by: Balbir Singh <bsingharora@gmail.com>
    Tested-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
    Fixes: 39a846db1d57 ("powerpc/perf: Add core IMC PMU support")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c12d24161611e6038631778e614581edc4647eb6
Author: Michael Neuling <mikey@neuling.org>
Date:   Thu May 17 15:37:15 2018 +1000

    powerpc/ptrace: Fix setting 512B aligned breakpoints with PTRACE_SET_DEBUGREG
    
    commit 4f7c06e26ec9cf7fe9f0c54dc90079b6a4f4b2c3 upstream.
    
    In commit e2a800beaca1 ("powerpc/hw_brk: Fix off by one error when
    validating DAWR region end") we fixed setting the DAWR end point to
    its max value via PPC_PTRACE_SETHWDEBUG. Unfortunately we broke
    PTRACE_SET_DEBUGREG when setting a 512 byte aligned breakpoint.
    
    PTRACE_SET_DEBUGREG currently sets the length of the breakpoint to
    zero (memset() in hw_breakpoint_init()). This worked with
    arch_validate_hwbkpt_settings() before the above patch was applied but
    is now broken if the breakpoint is 512byte aligned.
    
    This sets the length of the breakpoint to 8 bytes when using
    PTRACE_SET_DEBUGREG.
    
    Fixes: e2a800beaca1 ("powerpc/hw_brk: Fix off by one error when validating DAWR region end")
    Cc: stable@vger.kernel.org # v3.11+
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fefd9a5d97a45bc2927acc0aa53a098e80a4d41
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Wed May 30 18:48:04 2018 +0530

    powerpc/mm/hash: Add missing isync prior to kernel stack SLB switch
    
    commit 91d06971881f71d945910de128658038513d1b24 upstream.
    
    Currently we do not have an isync, or any other context synchronizing
    instruction prior to the slbie/slbmte in _switch() that updates the
    SLB entry for the kernel stack.
    
    However that is not correct as outlined in the ISA.
    
    From Power ISA Version 3.0B, Book III, Chapter 11, page 1133:
    
      "Changing the contents of ... the contents of SLB entries ... can
       have the side effect of altering the context in which data
       addresses and instruction addresses are interpreted, and in which
       instructions are executed and data accesses are performed.
       ...
       These side effects need not occur in program order, and therefore
       may require explicit synchronization by software.
       ...
       The synchronizing instruction before the context-altering
       instruction ensures that all instructions up to and including that
       synchronizing instruction are fetched and executed in the context
       that existed before the alteration."
    
    And page 1136:
    
      "For data accesses, the context synchronizing instruction before the
       slbie, slbieg, slbia, slbmte, tlbie, or tlbiel instruction ensures
       that all preceding instructions that access data storage have
       completed to a point at which they have reported all exceptions
       they will cause."
    
    We're not aware of any bugs caused by this, but it should be fixed
    regardless.
    
    Add the missing isync when updating kernel stack SLB entry.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    [mpe: Flesh out change log with more ISA text & explanation]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69829f749a432eeb1c208b113bfec598a23ee823
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Thu May 31 12:26:10 2018 +0200

    fuse: fix control dir setup and teardown
    
    commit 6becdb601bae2a043d7fb9762c4d48699528ea6e upstream.
    
    syzbot is reporting NULL pointer dereference at fuse_ctl_remove_conn() [1].
    Since fc->ctl_ndents is incremented by fuse_ctl_add_conn() when new_inode()
    failed, fuse_ctl_remove_conn() reaches an inode-less dentry and tries to
    clear d_inode(dentry)->i_private field.
    
    Fix by only adding the dentry to the array after being fully set up.
    
    When tearing down the control directory, do d_invalidate() on it to get rid
    of any mounts that might have been added.
    
    [1] https://syzkaller.appspot.com/bug?id=f396d863067238959c91c0b7cfc10b163638cac6
    Reported-by: syzbot <syzbot+32c236387d66c4516827@syzkaller.appspotmail.com>
    Fixes: bafa96541b25 ("[PATCH] fuse: add control filesystem")
    Cc: <stable@vger.kernel.org> # v2.6.18
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a37d85a90dafb4986dbfc356c6d662f0db665a8
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue May 1 13:12:14 2018 +0900

    fuse: don't keep dead fuse_conn at fuse_fill_super().
    
    commit 543b8f8662fe6d21f19958b666ab0051af9db21a upstream.
    
    syzbot is reporting use-after-free at fuse_kill_sb_blk() [1].
    Since sb->s_fs_info field is not cleared after fc was released by
    fuse_conn_put() when initialization failed, fuse_kill_sb_blk() finds
    already released fc and tries to hold the lock. Fix this by clearing
    sb->s_fs_info field after calling fuse_conn_put().
    
    [1] https://syzkaller.appspot.com/bug?id=a07a680ed0a9290585ca424546860464dd9658db
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+ec3986119086fe4eec97@syzkaller.appspotmail.com>
    Fixes: 3b463ae0c626 ("fuse: invalidation reverse calls")
    Cc: John Muir <john@jmuir.com>
    Cc: Csaba Henk <csaba@gluster.com>
    Cc: Anand Avati <avati@redhat.com>
    Cc: <stable@vger.kernel.org> # v2.6.31
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f7bf369b5f8699231398aef585cb680828f3ac9
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Thu Feb 8 15:17:38 2018 +0100

    fuse: atomic_o_trunc should truncate pagecache
    
    commit df0e91d488276086bc07da2e389986cae0048c37 upstream.
    
    Fuse has an "atomic_o_trunc" mode, where userspace filesystem uses the
    O_TRUNC flag in the OPEN request to truncate the file atomically with the
    open.
    
    In this mode there's no need to send a SETATTR request to userspace after
    the open, so fuse_do_setattr() checks this mode and returns.  But this
    misses the important step of truncating the pagecache.
    
    Add the missing parts of truncation to the ATTR_OPEN branch.
    
    Reported-by: Chad Austin <chadaustin@fb.com>
    Fixes: 6ff958edbf39 ("fuse: add atomic open+truncate support")
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02832578eb9d4572a3194e50e5d2268ff049f9f4
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Feb 2 09:54:14 2018 -0800

    fuse: fix congested state leak on aborted connections
    
    commit 8a301eb16d99983a4961f884690ec97b92e7dcfe upstream.
    
    If a connection gets aborted while congested, FUSE can leave
    nr_wb_congested[] stuck until reboot causing wait_iff_congested() to
    wait spuriously which can lead to severe performance degradation.
    
    The leak is caused by gating congestion state clearing with
    fc->connected test in request_end().  This was added way back in 2009
    by 26c3679101db ("fuse: destroy bdi on umount").  While the commit
    description doesn't explain why the test was added, it most likely was
    to avoid dereferencing bdi after it got destroyed.
    
    Since then, bdi lifetime rules have changed many times and now we're
    always guaranteed to have access to the bdi while the superblock is
    alive (fc->sb).
    
    Drop fc->connected conditional to avoid leaking congestion states.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Joshua Miller <joshmiller@fb.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: stable@vger.kernel.org # v2.6.29+
    Acked-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a47c3c48769ab1e41f1dd53aa116a89f1f208aa1
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Fri May 11 19:54:19 2018 +0900

    printk: fix possible reuse of va_list variable
    
    commit 988a35f8da1dec5a8cd2788054d1e717be61bf25 upstream.
    
    I noticed that there is a possibility that printk_safe_log_store() causes
    kernel oops because "args" parameter is passed to vsnprintf() again when
    atomic_cmpxchg() detected that we raced. Fix this by using va_copy().
    
    Link: http://lkml.kernel.org/r/201805112002.GIF21216.OFVHFOMLJtQFSO@I-love.SAKURA.ne.jp
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: dvyukov@google.com
    Cc: syzkaller@googlegroups.com
    Cc: fengguang.wu@intel.com
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 42a0bb3f71383b45 ("printk/nmi: generic solution for safe printk in NMI")
    Cc: 4.7+ <stable@vger.kernel.org> # v4.7+
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit affd84024cbedfc0ee091396d064fbf1366ea8fe
Author: Amit Pundir <amit.pundir@linaro.org>
Date:   Mon Apr 16 12:10:24 2018 +0530

    Bluetooth: hci_qca: Avoid missing rampatch failure with userspace fw loader
    
    commit 7dc5fe0814c35ec4e7d2e8fa30abab72e0e6a172 upstream.
    
    AOSP use userspace firmware loader to load firmwares, which will
    return -EAGAIN in case qca/rampatch_00440302.bin is not found.
    Since there is no rampatch for dragonboard820c QCA controller
    revision, just make it work as is.
    
    CC: Loic Poulain <loic.poulain@linaro.org>
    CC: Nicolas Dechesne <nicolas.dechesne@linaro.org>
    CC: Marcel Holtmann <marcel@holtmann.org>
    CC: Johan Hedberg <johan.hedberg@gmail.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ffecef63d0932c3becceb1ef166e95e9a1ca33d
Author: Corey Minyard <cminyard@mvista.com>
Date:   Tue May 22 08:14:51 2018 -0500

    ipmi:bt: Set the timeout before doing a capabilities check
    
    commit fe50a7d0393a552e4539da2d31261a59d6415950 upstream.
    
    There was one place where the timeout value for an operation was
    not being set, if a capabilities request was done from idle.  Move
    the timeout value setting to before where that change might be
    requested.
    
    IMHO the cause here is the invisible returns in the macros.  Maybe
    that's a job for later, though.
    
    Reported-by: Nordmark Claes <Claes.Nordmark@tieto.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26e03f8dcd347a543f62eb58831ff417736d9d53
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed May 30 08:19:22 2018 -0400

    branch-check: fix long->int truncation when profiling branches
    
    commit 2026d35741f2c3ece73c11eb7e4a15d7c2df9ebe upstream.
    
    The function __builtin_expect returns long type (see the gcc
    documentation), and so do macros likely and unlikely. Unfortunatelly, when
    CONFIG_PROFILE_ANNOTATED_BRANCHES is selected, the macros likely and
    unlikely expand to __branch_check__ and __branch_check__ truncates the
    long type to int. This unintended truncation may cause bugs in various
    kernel code (we found a bug in dm-writecache because of it), so it's
    better to fix __branch_check__ to return long.
    
    Link: http://lkml.kernel.org/r/alpine.LRH.2.02.1805300818140.24812@file01.intranet.prod.int.rdu2.redhat.com
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 1f0d69a9fc815 ("tracing: profile likely and unlikely annotations")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5eff5dbf3108017efe46ad3803b2122dfd1128b5
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Sat Mar 24 17:57:49 2018 +0100

    mips: ftrace: fix static function graph tracing
    
    commit 6fb8656646f996d1eef42e6d56203c4915cb9e08 upstream.
    
    ftrace_graph_caller was never run after calling ftrace_trace_function,
    breaking the function graph tracer. Fix this, bringing it in line with the
    x86 implementation.
    
    While we're at it, also streamline the control flow of _mcount a bit to
    reduce the number of branches.
    
    This issue was reported before:
    https://www.linux-mips.org/archives/linux-mips/2014-11/msg00295.html
    
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Tested-by: Matt Redfearn <matt.redfearn@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/18929/
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: stable@vger.kernel.org # v3.17+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f7a15af646d8c9cf52f7d86b43a590fabf4e808
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Mon May 14 15:40:29 2018 -0400

    ftrace/selftest: Have the reset_trigger code be a bit more careful
    
    commit 756b56a9e832e063edc83be7c3889e98c536dd2b upstream.
    
    The trigger code is picky in how it can be disabled as there may be
    dependencies between different events and synthetic events. Change the order
    on how triggers are reset.
    
     1) Reset triggers of all synthetic events first
     2) Remove triggers with actions attached to them
     3) Remove all other triggers
    
    If this order isn't followed, then some triggers will not be reset, and an
    error may happen because a trigger is busy.
    
    Cc: stable@vger.kernel.org
    Fixes: cfa0963dc474f ("kselftests/ftrace : Add event trigger testcases")
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea0ac01f68aa01cc391f18148342fc4ecc912860
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Jun 1 11:28:22 2018 +0200

    lib/vsprintf: Remove atomic-unsafe support for %pCr
    
    commit 666902e42fd8344b923c02dc5b0f37948ff4f225 upstream.
    
    "%pCr" formats the current rate of a clock, and calls clk_get_rate().
    The latter obtains a mutex, hence it must not be called from atomic
    context.
    
    Remove support for this rarely-used format, as vsprintf() (and e.g.
    printk()) must be callable from any context.
    
    Any remaining out-of-tree users will start seeing the clock's name
    printed instead of its rate.
    
    Reported-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Fixes: 900cca2944254edd ("lib/vsprintf: add %pC{,n,r} format specifiers for clocks")
    Link: http://lkml.kernel.org/r/1527845302-12159-5-git-send-email-geert+renesas@glider.be
    To: Jia-Ju Bai <baijiaju1990@gmail.com>
    To: Jonathan Corbet <corbet@lwn.net>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Zhang Rui <rui.zhang@intel.com>
    To: Eduardo Valentin <edubezval@gmail.com>
    To: Eric Anholt <eric@anholt.net>
    To: Stefan Wahren <stefan.wahren@i2se.com>
    To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: linux-doc@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: linux-serial@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-renesas-soc@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org # 4.1+
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fcc267de242acb5da81861334519c150c3dc445
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Jun 1 11:28:19 2018 +0200

    clk: renesas: cpg-mssr: Stop using printk format %pCr
    
    commit ef4b0be62641d296cf4c0ad8f75ab83ab066ed51 upstream.
    
    Printk format "%pCr" will be removed soon, as clk_get_rate() must not be
    called in atomic context.
    
    Replace it by open-coding the operation.  This is safe here, as the code
    runs in task context.
    
    Link: http://lkml.kernel.org/r/1527845302-12159-2-git-send-email-geert+renesas@glider.be
    To: Jia-Ju Bai <baijiaju1990@gmail.com>
    To: Jonathan Corbet <corbet@lwn.net>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Zhang Rui <rui.zhang@intel.com>
    To: Eduardo Valentin <edubezval@gmail.com>
    To: Eric Anholt <eric@anholt.net>
    To: Stefan Wahren <stefan.wahren@i2se.com>
    To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: linux-doc@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: linux-serial@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-renesas-soc@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org # 4.5+
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cf93821e34da487c5c86d0078c70dcd47b9ae7e
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Jun 1 11:28:20 2018 +0200

    thermal: bcm2835: Stop using printk format %pCr
    
    commit bd2a07f71a1e2e198f8a30cb551d9defe422d83d upstream.
    
    Printk format "%pCr" will be removed soon, as clk_get_rate() must not be
    called in atomic context.
    
    Replace it by printing the variable that already holds the clock rate.
    Note that calling clk_get_rate() is safe here, as the code runs in task
    context.
    
    Link: http://lkml.kernel.org/r/1527845302-12159-3-git-send-email-geert+renesas@glider.be
    To: Jia-Ju Bai <baijiaju1990@gmail.com>
    To: Jonathan Corbet <corbet@lwn.net>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Zhang Rui <rui.zhang@intel.com>
    To: Eduardo Valentin <edubezval@gmail.com>
    To: Eric Anholt <eric@anholt.net>
    To: Stefan Wahren <stefan.wahren@i2se.com>
    To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: linux-doc@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: linux-serial@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-renesas-soc@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.12+
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2291a435c292743cc6f9ec528e9e2d72cabfa9a
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Sat Apr 28 22:51:39 2018 +0200

    ASoC: cirrus: i2s: Fix {TX|RX}LinCtrlData setup
    
    commit 5d302ed3cc80564fb835bed5fdba1e1250ecc9e5 upstream.
    
    According to "EP93xx User’s Guide", I2STXLinCtrlData and I2SRXLinCtrlData
    registers actually have different format. The only currently used bit
    (Left_Right_Justify) has different position. Fix this and simplify the
    whole setup taking into account the fact that both registers have zero
    default value.
    
    The practical effect of the above is repaired SND_SOC_DAIFMT_RIGHT_J
    support (currently unused).
    
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5e8118779e54b6e31a00e7e96fb4be94b62a18f
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Sat Apr 28 22:51:38 2018 +0200

    ASoC: cirrus: i2s: Fix LRCLK configuration
    
    commit 2d534113be9a2aa532a1ae127a57e83558aed358 upstream.
    
    The bit responsible for LRCLK polarity is i2s_tlrs (0), not i2s_trel (2)
    (refer to "EP93xx User's Guide").
    
    Previously card drivers which specified SND_SOC_DAIFMT_NB_IF actually got
    SND_SOC_DAIFMT_NB_NF, an adaptation is necessary to retain the old
    behavior.
    
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a1d79de77f531a4d227f93554215678f8c7ad31
Author: Paul Handrigan <Paul.Handrigan@cirrus.com>
Date:   Fri May 4 16:37:41 2018 -0500

    ASoC: cs35l35: Add use_single_rw to regmap config
    
    commit 6a6ad7face95af0b9e6aaf1eb2261eb70240b89b upstream.
    
    Add the use_single_rw flag to regmap config since the
    device does not support bulk transactions over i2c.
    
    Signed-off-by: Paul Handrigan <Paul.Handrigan@cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 040fecfd714a67decf3334727da4d6ea99a2f576
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Mon Jun 4 12:13:26 2018 +0100

    ASoC: dapm: delete dapm_kcontrol_data paths list before freeing it
    
    commit ff2faf1289c1f81b5b26b9451dd1c2006aac8db8 upstream.
    
    dapm_kcontrol_data is freed as part of dapm_kcontrol_free(), leaving the
    paths pointer dangling in the list.
    
    This leads to system crash when we try to unload and reload sound card.
    I hit this bug during ADSP crash/reboot test case on Dragon board DB410c.
    
    Without this patch, on SLAB Poisoning enabled build, kernel crashes with
    "BUG kmalloc-128 (Tainted: G        W        ): Poison overwritten"
    
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e0ce7053a12dcc0fc19628fccea7f0bed77eaf5
Author: Ingo Flaschberger <ingo.flaschberger@gmail.com>
Date:   Tue May 1 16:10:33 2018 +0200

    1wire: family module autoload fails because of upper/lower case mismatch.
    
    commit 065c09563c872e52813a17218c52cd642be1dca6 upstream.
    
    1wire family module autoload fails because of upper/lower
      case mismatch.
    
    Signed-off-by: Ingo Flaschberger <ingo.flaschberger@gmail.com>
    Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c22218ed86921ac18b4554093a1034feb3ebb5b
Author: Maxim Moseychuk <franchesko.salias.hudro.pedros@gmail.com>
Date:   Thu Jan 4 21:43:03 2018 +0300

    usb: do not reset if a low-speed or full-speed device timed out
    
    commit 6e01827ed93947895680fbdad68c072a0f4e2450 upstream.
    
    Some low-speed and full-speed devices (for example, bluetooth)
    do not have time to initialize. For them, ETIMEDOUT is a valid error.
    We need to give them another try. Otherwise, they will
    never be initialized correctly and in dmesg will be messages
    "Bluetooth: hci0 command 0x1002 tx timeout" or similars.
    
    Fixes: 264904ccc33c ("usb: retry reset if a device times out")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Maxim Moseychuk <franchesko.salias.hudro.pedros@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b03376580c9c2b4d239bc43527bb9a35dc2078e
Author: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@gmail.com>
Date:   Thu Jun 14 15:56:08 2018 +0200

    PM / OPP: Update voltage in case freq == old_freq
    
    commit c5c2a97b3ac7d1ec19e7cff9e38caca6afefc3de upstream.
    
    This commit fixes a rare but possible case when the clk rate is updated
    without update of the regulator voltage.
    
    At boot up, CPUfreq checks if the system is running at the right freq. This
    is a sanity check in case a bootloader set clk rate that is outside of freq
    table present with cpufreq core. In such cases system can be unstable so
    better to change it to a freq that is preset in freq-table.
    
    The CPUfreq takes next freq that is >= policy->cur and this is our
    target_freq that needs to be set now.
    
    dev_pm_opp_set_rate(dev, target_freq) checks the target_freq and the
    old_freq (a current rate). If these are equal it returns early. If not,
    it searches for OPP (old_opp) that fits best to old_freq (not listed in
    the table) and updates old_freq (!).
    
    Here, we can end up with old_freq = old_opp.rate = target_freq, which
    is not handled in _generic_set_opp_regulator(). It's supposed to update
    voltage only when freq > old_freq  || freq > old_freq.
    
    if (freq > old_freq) {
                    ret = _set_opp_voltage(dev, reg, new_supply);
    [...]
    if (freq < old_freq) {
                    ret = _set_opp_voltage(dev, reg, new_supply);
                    if (ret)
    
    It results in, no voltage update while clk rate is updated.
    
    Example:
    freq-table = {
            1000MHz   1.15V
             666MHZ   1.10V
             333MHz   1.05V
    }
    boot-up-freq        = 800MHz   # not listed in freq-table
    freq = target_freq  = 1GHz
    old_freq            = 800Mhz
    old_opp = _find_freq_ceil(opp_table, &old_freq);  #(old_freq is modified!)
    old_freq            = 1GHz
    
    Fixes: 6a0712f6f199 ("PM / OPP: Add dev_pm_opp_set_rate()")
    Cc: 4.6+ <stable@vger.kernel.org> # v4.6+
    Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@gmail.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba0be5973f9e5eef705409a021159a6cc0571135
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Jun 14 10:01:52 2018 +0200

    PM / core: Fix supplier device runtime PM usage counter imbalance
    
    commit 47e5abfb546a3ace23a77453dc2e9db92704c5ac upstream.
    
    If a device link is added via device_link_add() by the driver of the
    link's consumer device, the supplier's runtime PM usage counter is
    going to be dropped by the pm_runtime_put_suppliers() call in
    driver_probe_device().  However, in that case it is not incremented
    unless the supplier driver is already present and the link is not
    stateless.  That leads to a runtime PM usage counter imbalance for
    the supplier device in a few cases.
    
    To prevent that from happening, bump up the supplier runtime
    PM usage counter in device_link_add() for all links with the
    DL_FLAG_PM_RUNTIME flag set that are added at the consumer probe
    time.  Use pm_runtime_get_noresume() for that as the callers of
    device_link_add() who want the supplier to be resumed by it are
    expected to pass DL_FLAG_RPM_ACTIVE in flags to it anyway, but
    additionally resume the supplier if the link is added during
    consumer driver probe to retain the existing behavior for the
    callers depending on it.
    
    Fixes: 21d5c57b3726 (PM / runtime: Use device links)
    Reported-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: 4.10+ <stable@vger.kernel.org> # 4.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7ac0389770aacc2dc91d17dc44fd4dcc1438faf
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Thu Apr 26 10:53:00 2018 +0200

    PM / Domains: Fix error path during attach in genpd
    
    commit 72038df3c580c4c326b83c86149d7ac34007532a upstream.
    
    In case the PM domain fails to be powered on in genpd_dev_pm_attach(), it
    returns -EPROBE_DEFER, but keeping the device attached to its PM domain.
    This leads to problems when the next attempt to attach is re-tried. More
    precisely, in that situation an -EEXIST error code is returned, because the
    device already has its PM domain pointer assigned, from the first attempt.
    
    Now, because of the sloppy error handling by the existing callers of
    dev_pm_domain_attach(), probing is allowed to continue when -EEXIST is
    returned. However, in such case there are no guarantees that the PM domain
    is powered on by genpd, which may lead to hangs when buses/drivers tried to
    access their devices.
    
    Let's fix this behaviour, simply by detaching the device when powering on
    fails in genpd_dev_pm_attach().
    
    Cc: v4.11+ <stable@vger.kernel.org> # v4.11+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ae5d476a3b7bd7938abcd0f926925c7c81fd79b
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Apr 20 09:14:56 2018 -0500

    signal/xtensa: Consistenly use SIGBUS in do_unaligned_user
    
    commit 7de712ccc096b81d23cc0a941cd9b8cb3956605d upstream.
    
    While working on changing this code to use force_sig_fault I
    discovered that do_unaliged_user is sets si_signo to SIGBUS and passes
    SIGSEGV to force_sig_info.  Which is just b0rked.
    
    The code is reporting a SIGBUS error so replace the SIGSEGV with SIGBUS.
    
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: linux-xtensa@linux-xtensa.org
    Cc: stable@vger.kernel.org
    Acked-by: Max Filippov <jcmvbkbc@gmail.com>
    Fixes: 5a0015d62668 ("[PATCH] xtensa: Architecture support for Tensilica Xtensa Part 3")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 980899da5dc9249aef2329ae662f16a97062e8b1
Author: Daniel Wagner <daniel.wagner@siemens.com>
Date:   Tue May 8 10:55:09 2018 +0200

    serial: sh-sci: Use spin_{try}lock_irqsave instead of open coding version
    
    commit 8afb1d2c12163f77777f84616a8e9444d0050ebe upstream.
    
    Commit 40f70c03e33a ("serial: sh-sci: add locking to console write
    function to avoid SMP lockup") copied the strategy to avoid locking
    problems in conjuncture with the console from the UART8250
    driver. Instead using directly spin_{try}lock_irqsave(),
    local_irq_save() followed by spin_{try}lock() was used. While this is
    correct on mainline, for -rt it is a problem. spin_{try}lock() will
    check if it is running in a valid context. Since the local_irq_save()
    has already been executed, the context has changed and
    spin_{try}lock() will complain. The reason why spin_{try}lock()
    complains is that on -rt the spin locks are turned into mutexes and
    therefore can sleep. Sleeping with interrupts disabled is not valid.
    
    BUG: sleeping function called from invalid context at /home/wagi/work/rt/v4.4-cip-rt/kernel/locking/rtmutex.c:995
    in_atomic(): 0, irqs_disabled(): 128, pid: 778, name: irq/76-eth0
    CPU: 0 PID: 778 Comm: irq/76-eth0 Not tainted 4.4.126-test-cip22-rt14-00403-gcd03665c8318 #12
    Hardware name: Generic RZ/G1 (Flattened Device Tree)
    Backtrace:
    [<c00140a0>] (dump_backtrace) from [<c001424c>] (show_stack+0x18/0x1c)
     r7:c06b01f0 r6:60010193 r5:00000000 r4:c06b01f0
    [<c0014234>] (show_stack) from [<c01d3c94>] (dump_stack+0x78/0x94)
    [<c01d3c1c>] (dump_stack) from [<c004c134>] (___might_sleep+0x134/0x194)
     r7:60010113 r6:c06d3559 r5:00000000 r4:ffffe000
    [<c004c000>] (___might_sleep) from [<c04ded60>] (rt_spin_lock+0x20/0x74)
     r5:c06f4d60 r4:c06f4d60
    [<c04ded40>] (rt_spin_lock) from [<c02577e4>] (serial_console_write+0x100/0x118)
     r5:c06f4d60 r4:c06f4d60
    [<c02576e4>] (serial_console_write) from [<c0061060>] (call_console_drivers.constprop.15+0x10c/0x124)
     r10:c06d2894 r9:c04e18b0 r8:00000028 r7:00000000 r6:c06d3559 r5:c06d2798
     r4:c06b9914 r3:c02576e4
    [<c0060f54>] (call_console_drivers.constprop.15) from [<c0062984>] (console_unlock+0x32c/0x430)
     r10:c06d30d8 r9:00000028 r8:c06dd518 r7:00000005 r6:00000000 r5:c06d2798
     r4:c06d2798 r3:00000028
    [<c0062658>] (console_unlock) from [<c0062e1c>] (vprintk_emit+0x394/0x4f0)
     r10:c06d2798 r9:c06d30ee r8:00000006 r7:00000005 r6:c06a78fc r5:00000027
     r4:00000003
    [<c0062a88>] (vprintk_emit) from [<c0062fa0>] (vprintk+0x28/0x30)
     r10:c060bd46 r9:00001000 r8:c06b9a90 r7:c06b9a90 r6:c06b994c r5:c06b9a3c
     r4:c0062fa8
    [<c0062f78>] (vprintk) from [<c0062fb8>] (vprintk_default+0x10/0x14)
    [<c0062fa8>] (vprintk_default) from [<c009cd30>] (printk+0x78/0x84)
    [<c009ccbc>] (printk) from [<c025afdc>] (credit_entropy_bits+0x17c/0x2cc)
     r3:00000001 r2:decade60 r1:c061a5ee r0:c061a523
     r4:00000006
    [<c025ae60>] (credit_entropy_bits) from [<c025bf74>] (add_interrupt_randomness+0x160/0x178)
     r10:466e7196 r9:1f536000 r8:fffeef74 r7:00000000 r6:c06b9a60 r5:c06b9a3c
     r4:dfbcf680
    [<c025be14>] (add_interrupt_randomness) from [<c006536c>] (irq_thread+0x1e8/0x248)
     r10:c006537c r9:c06cdf21 r8:c0064fcc r7:df791c24 r6:df791c00 r5:ffffe000
     r4:df525180
    [<c0065184>] (irq_thread) from [<c003fba4>] (kthread+0x108/0x11c)
     r10:00000000 r9:00000000 r8:c0065184 r7:df791c00 r6:00000000 r5:df791d00
     r4:decac000
    [<c003fa9c>] (kthread) from [<c00101b8>] (ret_from_fork+0x14/0x3c)
     r8:00000000 r7:00000000 r6:00000000 r5:c003fa9c r4:df791d00
    
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Daniel Wagner <daniel.wagner@siemens.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60711b27c5f5d1dda01078df21520cfb63d06419
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    m68k/mac: Fix SWIM memory resource end address
    
    commit 3e2816c1078eb2b5a3276eb83d4da156b3e2d04f upstream.
    
    The resource size is 0x2000 == end - start + 1.
    Therefore end == start + 0x2000 - 1.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da9ad89c72d58df3534fed2963972e932c70fdd7
Author: Michael Schmitz <schmitzmic@gmail.com>
Date:   Mon May 14 23:10:53 2018 +1200

    m68k/mm: Adjust VM area to be unmapped by gap size for __iounmap()
    
    commit 3f90f9ef2dda316d64e420d5d51ba369587ccc55 upstream.
    
    If 020/030 support is enabled, get_io_area() leaves an IO_SIZE gap
    between mappings which is added to the vm_struct representing the
    mapping.  __ioremap() uses the actual requested size (after alignment),
    while __iounmap() is passed the size from the vm_struct.
    
    On 020/030, early termination descriptors are used to set up mappings of
    extent 'size', which are validated on unmapping. The unmapped gap of
    size IO_SIZE defeats the sanity check of the pmd tables, causing
    __iounmap() to loop forever on 030.
    
    On 040/060, unmapping of page table entries does not check for a valid
    mapping, so the umapping loop always completes there.
    
    Adjust size to be unmapped by the gap that had been added in the
    vm_struct prior.
    
    This fixes the hang in atari_platform_init() reported a long time ago,
    and a similar one reported by Finn recently (addressed by removing
    ioremap() use from the SWIM driver.
    
    Tested on my Falcon in 030 mode - untested but should work the same on
    040/060 (the extra page tables cleared there would never have been set
    up anyway).
    
    Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
    [geert: Minor commit description improvements]
    [geert: This was fixed in 2.4.23, but not in 2.5.x]
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab693cc665ca539d3d79783fd1699fc52697469a
Author: Siarhei Liakh <Siarhei.Liakh@concurrent-rt.com>
Date:   Thu Jun 14 19:36:07 2018 +0000

    x86: Call fixup_exception() before notify_die() in math_error()
    
    commit 3ae6295ccb7cf6d344908209701badbbbb503e40 upstream.
    
    fpu__drop() has an explicit fwait which under some conditions can trigger a
    fixable FPU exception while in kernel. Thus, we should attempt to fixup the
    exception first, and only call notify_die() if the fixup failed just like
    in do_general_protection(). The original call sequence incorrectly triggers
    KDB entry on debug kernels under particular FPU-intensive workloads.
    
    Andy noted, that this makes the whole conditional irq enable thing even
    more inconsistent, but fixing that it outside the scope of this.
    
    Signed-off-by: Siarhei Liakh <siarhei.liakh@concurrent-rt.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Andy Lutomirski <luto@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: "Borislav  Petkov" <bpetkov@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/DM5PR11MB201156F1CAB2592B07C79A03B17D0@DM5PR11MB2011.namprd11.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64d44661e2207a408783360f3029b9a2c48a6daf
Author: Borislav Petkov <bp@suse.de>
Date:   Fri Jun 22 11:54:28 2018 +0200

    x86/mce: Do not overwrite MCi_STATUS in mce_no_way_out()
    
    commit 1f74c8a64798e2c488f86efc97e308b85fb7d7aa upstream.
    
    mce_no_way_out() does a quick check during #MC to see whether some of
    the MCEs logged would require the kernel to panic immediately. And it
    passes a struct mce where MCi_STATUS gets written.
    
    However, after having saved a valid status value, the next iteration
    of the loop which goes over the MCA banks on the CPU, overwrites the
    valid status value because we're using struct mce as storage instead of
    a temporary variable.
    
    Which leads to MCE records with an empty status value:
    
      mce: [Hardware Error]: CPU 0: Machine Check Exception: 6 Bank 0: 0000000000000000
      mce: [Hardware Error]: RIP 10:<ffffffffbd42fbd7> {trigger_mce+0x7/0x10}
    
    In order to prevent the loss of the status register value, return
    immediately when severity is a panic one so that we can panic
    immediately with the first fatal MCE logged. This is also the intention
    of this function and not to noodle over the banks while a fatal MCE is
    already logged.
    
    Tony: read the rest of the MCA bank to populate the struct mce fully.
    
    Suggested-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20180622095428.626-8-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b8e086891b038adc667f3ae2f6839f76b54b264
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Jun 22 11:54:23 2018 +0200

    x86/mce: Fix incorrect "Machine check from unknown source" message
    
    commit 40c36e2741d7fe1e66d6ec55477ba5fd19c9c5d2 upstream.
    
    Some injection testing resulted in the following console log:
    
      mce: [Hardware Error]: CPU 22: Machine Check Exception: f Bank 1: bd80000000100134
      mce: [Hardware Error]: RIP 10:<ffffffffc05292dd> {pmem_do_bvec+0x11d/0x330 [nd_pmem]}
      mce: [Hardware Error]: TSC c51a63035d52 ADDR 3234bc4000 MISC 88
      mce: [Hardware Error]: PROCESSOR 0:50654 TIME 1526502199 SOCKET 0 APIC 38 microcode 2000043
      mce: [Hardware Error]: Run the above through 'mcelog --ascii'
      Kernel panic - not syncing: Machine check from unknown source
    
    This confused everybody because the first line quite clearly shows
    that we found a logged error in "Bank 1", while the last line says
    "unknown source".
    
    The problem is that the Linux code doesn't do the right thing
    for a local machine check that results in a fatal error.
    
    It turns out that we know very early in the handler whether the
    machine check is fatal. The call to mce_no_way_out() has checked
    all the banks for the CPU that took the local machine check. If
    it says we must crash, we can do so right away with the right
    messages.
    
    We do scan all the banks again. This means that we might initially
    not see a problem, but during the second scan find something fatal.
    If this happens we print a slightly different message (so I can
    see if it actually every happens).
    
    [ bp: Remove unneeded severity assignment. ]
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: stable@vger.kernel.org # 4.2
    Link: http://lkml.kernel.org/r/52e049a497e86fd0b71c529651def8871c804df0.1527283897.git.tony.luck@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d292f33b74942e1419311887b0054794d779ce3f
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri May 25 14:42:09 2018 -0700

    x86/mce: Check for alternate indication of machine check recovery on Skylake
    
    commit 4c5717da1d021cf368eabb3cb1adcaead56c0d1e upstream.
    
    Currently we just check the "CAPID0" register to see whether the CPU
    can recover from machine checks.
    
    But there are also some special SKUs which do not have all advanced
    RAS features, but do enable machine check recovery for use with NVDIMMs.
    
    Add a check for any of bits {8:5} in the "CAPID5" register (each
    reports some NVDIMM mode available, if any of them are set, then
    the system supports memory machine check recovery).
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Cc: stable@vger.kernel.org # 4.9
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/03cbed6e99ddafb51c2eadf9a3b7c8d7a0cc204e.1527283897.git.tony.luck@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d1dd2011adca8fa1e0715a83fc751eae31acf1d
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri May 25 14:41:39 2018 -0700

    x86/mce: Improve error message when kernel cannot recover
    
    commit c7d606f560e4c698884697fef503e4abacdd8c25 upstream.
    
    Since we added support to add recovery from some errors inside the kernel in:
    
    commit b2f9d678e28c ("x86/mce: Check for faults tagged in EXTABLE_CLASS_FAULT exception table entries")
    
    we have done a less than stellar job at reporting the cause of recoverable
    machine checks that occur in other parts of the kernel. The user just gets
    the unhelpful message:
    
            mce: [Hardware Error]: Machine check: Action required: unknown MCACOD
    
    doubly unhelpful when they check the manual for the reported IA32_MSR_STATUS.MCACOD
    and see that it is listed as one of the standard recoverable values.
    
    Add an extra rule to the MCE severity table to catch this case and report it
    as:
    
            mce: [Hardware Error]: Machine check: Data load in unrecoverable area of kernel
    
    Fixes: b2f9d678e28c ("x86/mce: Check for faults tagged in EXTABLE_CLASS_FAULT exception table entries")
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Cc: stable@vger.kernel.org # 4.6+
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/4cc7c465150a9a48b8b9f45d0b840278e77eb9b5.1527283897.git.tony.luck@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbb37d98b93d239269420cd9848bd730cb33530b
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Jun 21 10:43:31 2018 +0200

    x86/xen: Add call of speculative_store_bypass_ht_init() to PV paths
    
    commit 74899d92e66663dc7671a8017b3146dcd4735f3b upstream.
    
    Commit:
    
      1f50ddb4f418 ("x86/speculation: Handle HT correctly on AMD")
    
    ... added speculative_store_bypass_ht_init() to the per-CPU initialization sequence.
    
    speculative_store_bypass_ht_init() needs to be called on each CPU for
    PV guests, too.
    
    Reported-by: Brian Woods <brian.woods@amd.com>
    Tested-by: Brian Woods <brian.woods@amd.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Cc: <stable@vger.kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: boris.ostrovsky@oracle.com
    Cc: xen-devel@lists.xenproject.org
    Fixes: 1f50ddb4f4189243c05926b842dc1a0332195f31 ("x86/speculation: Handle HT correctly on AMD")
    Link: https://lore.kernel.org/lkml/20180621084331.21228-1-jgross@suse.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ce79716a9ff97cfe2283606aed360ff7a8e3955
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Jun 7 09:13:48 2018 -0700

    x86/spectre_v1: Disable compiler optimizations over array_index_mask_nospec()
    
    commit eab6870fee877258122a042bfd99ee7908c40280 upstream.
    
    Mark Rutland noticed that GCC optimization passes have the potential to elide
    necessary invocations of the array_index_mask_nospec() instruction sequence,
    so mark the asm() volatile.
    
    Mark explains:
    
    "The volatile will inhibit *some* cases where the compiler could lift the
     array_index_nospec() call out of a branch, e.g. where there are multiple
     invocations of array_index_nospec() with the same arguments:
    
            if (idx < foo) {
                    idx1 = array_idx_nospec(idx, foo)
                    do_something(idx1);
            }
    
            < some other code >
    
            if (idx < foo) {
                    idx2 = array_idx_nospec(idx, foo);
                    do_something_else(idx2);
            }
    
     ... since the compiler can determine that the two invocations yield the same
     result, and reuse the first result (likely the same register as idx was in
     originally) for the second branch, effectively re-writing the above as:
    
            if (idx < foo) {
                    idx = array_idx_nospec(idx, foo);
                    do_something(idx);
            }
    
            < some other code >
    
            if (idx < foo) {
                    do_something_else(idx);
            }
    
     ... if we don't take the first branch, then speculatively take the second, we
     lose the nospec protection.
    
     There's more info on volatile asm in the GCC docs:
    
       https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Volatile
     "
    
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: <stable@vger.kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: babdde2698d4 ("x86: Implement array_index_mask_nospec")
    Link: https://lkml.kernel.org/lkml/152838798950.14521.4893346294059739135.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>