commit 86e014f514f979312cae23a15284cb81d1ee7336
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 19 22:41:37 2018 +0200

    Linux 4.18.9

commit 175ad0cbd818529ec1d642531c51af6006660b7f
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Sep 12 23:57:48 2018 -1000

    mm: get rid of vmacache_flush_all() entirely
    
    commit 7a9cdebdcc17e426fb5287e4a82db1dfe86339b2 upstream.
    
    Jann Horn points out that the vmacache_flush_all() function is not only
    potentially expensive, it's buggy too.  It also happens to be entirely
    unnecessary, because the sequence number overflow case can be avoided by
    simply making the sequence number be 64-bit.  That doesn't even grow the
    data structures in question, because the other adjacent fields are
    already 64-bit.
    
    So simplify the whole thing by just making the sequence number overflow
    case go away entirely, which gets rid of all the complications and makes
    the code faster too.  Win-win.
    
    [ Oleg Nesterov points out that the VMACACHE_FULL_FLUSHES statistics
      also just goes away entirely with this ]
    
    Reported-by: Jann Horn <jannh@google.com>
    Suggested-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39998fd58036452a3843c10196dd71a95a1c34f3
Author: Ian Kent <raven@themaw.net>
Date:   Tue Aug 21 21:51:45 2018 -0700

    autofs: fix autofs_sbi() does not check super block type
    
    commit 0633da48f0793aeba27f82d30605624416723a91 upstream.
    
    autofs_sbi() does not check the superblock magic number to verify it has
    been given an autofs super block.
    
    Link: http://lkml.kernel.org/r/153475422934.17131.7563724552005298277.stgit@pluto.themaw.net
    Reported-by: <syzbot+87c3c541582e56943277@syzkaller.appspotmail.com>
    Signed-off-by: Ian Kent <raven@themaw.net>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Guenter Roeck <groeck@google.com>
    Cc: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51d34e94c4701f125907c026272870790a37c4a1
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Sep 5 10:41:58 2018 +0200

    clocksource: Revert "Remove kthread"
    
    commit e2c631ba75a7e727e8db0a9d30a06bfd434adb3a upstream.
    
    I turns out that the silly spawn kthread from worker was actually needed.
    
    clocksource_watchdog_kthread() cannot be called directly from
    clocksource_watchdog_work(), because clocksource_select() calls
    timekeeping_notify() which uses stop_machine(). One cannot use
    stop_machine() from a workqueue() due lock inversions wrt CPU hotplug.
    
    Revert the patch but add a comment that explain why we jump through such
    apparently silly hoops.
    
    Fixes: 7197e77abcb6 ("clocksource: Remove kthread")
    Reported-by: Siegfried Metz <frame@mailbox.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Niklas Cassel <niklas.cassel@linaro.org>
    Tested-by: Kevin Shanahan <kevin@shanahan.id.au>
    Tested-by: viktor_jaegerskuepper@freenet.de
    Tested-by: Siegfried Metz <frame@mailbox.org>
    Cc: rafael.j.wysocki@intel.com
    Cc: len.brown@intel.com
    Cc: diego.viola@gmail.com
    Cc: rui.zhang@intel.com
    Cc: bjorn.andersson@linaro.org
    Link: https://lkml.kernel.org/r/20180905084158.GR24124@hirez.programming.kicks-ass.net
    Cc: Siegfried Metz <frame@mailbox.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 777c7b8464dec47af5032d3fe0cbd744050f24cc
Author: Parav Pandit <parav@mellanox.com>
Date:   Mon Jul 16 11:50:13 2018 +0300

    RDMA/cma: Do not ignore net namespace for unbound cm_id
    
    [ Upstream commit 643d213a9a034fa04f5575a40dfc8548e33ce04f ]
    
    Currently if the cm_id is not bound to any netdevice, than for such cm_id,
    net namespace is ignored; which is incorrect.
    
    Regardless of cm_id bound to a netdevice or not, net namespace must
    match. When a cm_id is bound to a netdevice, in such case net namespace
    and netdevice both must match.
    
    Fixes: 4c21b5bcef73 ("IB/cma: Add net_dev and private data checks to RDMA CM")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9daa1d751d51a94cb05de4ad8ce7c70e2fd1e9be
Author: Quentin Schulz <quentin.schulz@bootlin.com>
Date:   Wed Jul 25 14:21:32 2018 +0200

    MIPS: mscc: ocelot: fix length of memory address space for MIIM
    
    [ Upstream commit 49e5bb13adc11fe6e2e40f65c04f3a461aea1fec ]
    
    The length of memory address space for MIIM0 is from 0x7107009c to
    0x710700bf included which is 36 bytes long in decimal, or 0x24 bytes in
    hexadecimal and not 0x36.
    
    Fixes: 49b031690abe ("MIPS: mscc: Add switch to ocelot")
    
    Signed-off-by: Quentin Schulz <quentin.schulz@bootlin.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20013/
    Cc: robh+dt@kernel.org
    Cc: mark.rutland@arm.com
    Cc: ralf@linux-mips.org
    Cc: jhogan@kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: thomas.petazzoni@bootlin.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20452f8f04a2e0e5bed739f3d8e555c9ab26bf0d
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Fri Nov 25 18:46:09 2016 +0000

    MIPS: WARN_ON invalid DMA cache maintenance, not BUG_ON
    
    [ Upstream commit d4da0e97baea8768b3d66ccef3967bebd50dfc3b ]
    
    If a driver causes DMA cache maintenance with a zero length then we
    currently BUG and kill the kernel. As this is a scenario that we may
    well be able to recover from, WARN & return in the condition instead.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Patchwork: https://patchwork.linux-mips.org/patch/14623/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c7b8cf2a76a0af1b4ea339bde4ba80c547e83dd
Author: Lijun Ou <oulijun@huawei.com>
Date:   Wed Jul 25 15:29:40 2018 +0800

    RDMA/hns: Update the data type of immediate data
    
    [ Upstream commit 0c4a0e2987a51415de73180ce9f389a99b3dddd1 ]
    
    Because the data structure of hip08 is little endian, it needs to fix the
    immediate field of wqe and cqe into __le32.
    
    Signed-off-by: Lijun Ou <oulijun@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 137fee538bb0ba24ee867ebff9d4c974ac99e3b1
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Thu Jul 12 14:19:03 2018 -0400

    NFSv4.1: Fix a potential layoutget/layoutrecall deadlock
    
    [ Upstream commit bd3d16a887b0c19a2a20d35ffed499e3a3637feb ]
    
    If the client is sending a layoutget, but the server issues a callback
    to recall what it thinks may be an outstanding layout, then we may find
    an uninitialised layout attached to the inode due to the layoutget.
    In that case, it is appropriate to return NFS4ERR_NOMATCHING_LAYOUT
    rather than NFS4ERR_DELAY, as the latter can end up deadlocking.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1256eeb12678b16c40a8cf0a16a5c2c1cedd0cfc
Author: Lijun Ou <oulijun@huawei.com>
Date:   Wed Jul 25 15:29:37 2018 +0800

    RDMA/hns: Add illegal hop_num judgement
    
    [ Upstream commit 26f63b9c33ceda12fb9136a1d0c80e03c9ebb514 ]
    
    When hop_num is more than three, it need to return -EINVAL.  This patch
    fixes it.
    
    Signed-off-by: Lijun Ou <oulijun@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6f493453c78311598fdd204f7815e683818512a
Author: Chao Yu <yuchao0@huawei.com>
Date:   Mon Jun 25 23:29:49 2018 +0800

    f2fs: fix to do sanity check with extra_attr feature
    
    [ Upstream commit 76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2 ]
    
    If FI_EXTRA_ATTR is set in inode by fuzzing, inode.i_addr[0] will be
    parsed as inode.i_extra_isize, then in __recover_inline_status, inline
    data address will beyond boundary of page, result in accessing invalid
    memory.
    
    So in this condition, during reading inode page, let's do sanity check
    with EXTRA_ATTR feature of fs and extra_attr bit of inode, if they're
    inconsistent, deny to load this inode.
    
    - Overview
    Out-of-bound access in f2fs_iget() when mounting a corrupted f2fs image
    
    - Reproduce
    
    The following message will be got in KASAN build of 4.18 upstream kernel.
    [  819.392227] ==================================================================
    [  819.393901] BUG: KASAN: slab-out-of-bounds in f2fs_iget+0x736/0x1530
    [  819.395329] Read of size 4 at addr ffff8801f099c968 by task mount/1292
    
    [  819.397079] CPU: 1 PID: 1292 Comm: mount Not tainted 4.18.0-rc1+ #4
    [  819.397082] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [  819.397088] Call Trace:
    [  819.397124]  dump_stack+0x7b/0xb5
    [  819.397154]  print_address_description+0x70/0x290
    [  819.397159]  kasan_report+0x291/0x390
    [  819.397163]  ? f2fs_iget+0x736/0x1530
    [  819.397176]  check_memory_region+0x139/0x190
    [  819.397182]  __asan_loadN+0xf/0x20
    [  819.397185]  f2fs_iget+0x736/0x1530
    [  819.397197]  f2fs_fill_super+0x1b4f/0x2b40
    [  819.397202]  ? f2fs_fill_super+0x1b4f/0x2b40
    [  819.397208]  ? f2fs_commit_super+0x1b0/0x1b0
    [  819.397227]  ? set_blocksize+0x90/0x140
    [  819.397241]  mount_bdev+0x1c5/0x210
    [  819.397245]  ? f2fs_commit_super+0x1b0/0x1b0
    [  819.397252]  f2fs_mount+0x15/0x20
    [  819.397256]  mount_fs+0x60/0x1a0
    [  819.397267]  ? alloc_vfsmnt+0x309/0x360
    [  819.397272]  vfs_kern_mount+0x6b/0x1a0
    [  819.397282]  do_mount+0x34a/0x18c0
    [  819.397300]  ? lockref_put_or_lock+0xcf/0x160
    [  819.397306]  ? copy_mount_string+0x20/0x20
    [  819.397318]  ? memcg_kmem_put_cache+0x1b/0xa0
    [  819.397324]  ? kasan_check_write+0x14/0x20
    [  819.397334]  ? _copy_from_user+0x6a/0x90
    [  819.397353]  ? memdup_user+0x42/0x60
    [  819.397359]  ksys_mount+0x83/0xd0
    [  819.397365]  __x64_sys_mount+0x67/0x80
    [  819.397388]  do_syscall_64+0x78/0x170
    [  819.397403]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  819.397422] RIP: 0033:0x7f54c667cb9a
    [  819.397424] Code: 48 8b 0d 01 c3 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ce c2 2b 00 f7 d8 64 89 01 48
    [  819.397483] RSP: 002b:00007ffd8f46cd08 EFLAGS: 00000202 ORIG_RAX: 00000000000000a5
    [  819.397496] RAX: ffffffffffffffda RBX: 0000000000dfa030 RCX: 00007f54c667cb9a
    [  819.397498] RDX: 0000000000dfa210 RSI: 0000000000dfbf30 RDI: 0000000000e02ec0
    [  819.397501] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000013
    [  819.397503] R10: 00000000c0ed0000 R11: 0000000000000202 R12: 0000000000e02ec0
    [  819.397505] R13: 0000000000dfa210 R14: 0000000000000000 R15: 0000000000000003
    
    [  819.397866] Allocated by task 139:
    [  819.398702]  save_stack+0x46/0xd0
    [  819.398705]  kasan_kmalloc+0xad/0xe0
    [  819.398709]  kasan_slab_alloc+0x11/0x20
    [  819.398713]  kmem_cache_alloc+0xd1/0x1e0
    [  819.398717]  dup_fd+0x50/0x4c0
    [  819.398740]  copy_process.part.37+0xbed/0x32e0
    [  819.398744]  _do_fork+0x16e/0x590
    [  819.398748]  __x64_sys_clone+0x69/0x80
    [  819.398752]  do_syscall_64+0x78/0x170
    [  819.398756]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [  819.399097] Freed by task 159:
    [  819.399743]  save_stack+0x46/0xd0
    [  819.399747]  __kasan_slab_free+0x13c/0x1a0
    [  819.399750]  kasan_slab_free+0xe/0x10
    [  819.399754]  kmem_cache_free+0x89/0x1e0
    [  819.399757]  put_files_struct+0x132/0x150
    [  819.399761]  exit_files+0x62/0x70
    [  819.399766]  do_exit+0x47b/0x1390
    [  819.399770]  do_group_exit+0x86/0x130
    [  819.399774]  __x64_sys_exit_group+0x2c/0x30
    [  819.399778]  do_syscall_64+0x78/0x170
    [  819.399782]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [  819.400115] The buggy address belongs to the object at ffff8801f099c680
                    which belongs to the cache files_cache of size 704
    [  819.403234] The buggy address is located 40 bytes to the right of
                    704-byte region [ffff8801f099c680, ffff8801f099c940)
    [  819.405689] The buggy address belongs to the page:
    [  819.406709] page:ffffea0007c26700 count:1 mapcount:0 mapping:ffff8801f69a3340 index:0xffff8801f099d380 compound_mapcount: 0
    [  819.408984] flags: 0x2ffff0000008100(slab|head)
    [  819.409932] raw: 02ffff0000008100 ffffea00077fb600 0000000200000002 ffff8801f69a3340
    [  819.411514] raw: ffff8801f099d380 0000000080130000 00000001ffffffff 0000000000000000
    [  819.413073] page dumped because: kasan: bad access detected
    
    [  819.414539] Memory state around the buggy address:
    [  819.415521]  ffff8801f099c800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  819.416981]  ffff8801f099c880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  819.418454] >ffff8801f099c900: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    [  819.419921]                                                           ^
    [  819.421265]  ffff8801f099c980: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
    [  819.422745]  ffff8801f099ca00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  819.424206] ==================================================================
    [  819.425668] Disabling lock debugging due to kernel taint
    [  819.457463] F2FS-fs (loop0): Mounted with checkpoint version = 3
    
    The kernel still mounts the image. If you run the following program on the mounted folder mnt,
    
    (poc.c)
    
    static void activity(char *mpoint) {
    
      char *foo_bar_baz;
      int err;
    
      static int buf[8192];
      memset(buf, 0, sizeof(buf));
    
      err = asprintf(&foo_bar_baz, "%s/foo/bar/baz", mpoint);
        int fd = open(foo_bar_baz, O_RDONLY, 0);
      if (fd >= 0) {
          read(fd, (char *)buf, 11);
          close(fd);
      }
    }
    
    int main(int argc, char *argv[]) {
      activity(argv[1]);
      return 0;
    }
    
    You can get kernel crash:
    [  819.457463] F2FS-fs (loop0): Mounted with checkpoint version = 3
    [  918.028501] BUG: unable to handle kernel paging request at ffffed0048000d82
    [  918.044020] PGD 23ffee067 P4D 23ffee067 PUD 23fbef067 PMD 0
    [  918.045207] Oops: 0000 [#1] SMP KASAN PTI
    [  918.046048] CPU: 0 PID: 1309 Comm: poc Tainted: G    B             4.18.0-rc1+ #4
    [  918.047573] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [  918.049552] RIP: 0010:check_memory_region+0x5e/0x190
    [  918.050565] Code: f8 49 c1 e8 03 49 89 db 49 c1 eb 03 4d 01 cb 4d 01 c1 4d 8d 63 01 4c 89 c8 4d 89 e2 4d 29 ca 49 83 fa 10 7f 3d 4d 85 d2 74 32 <41> 80 39 00 75 23 48 b8 01 00 00 00 00 fc ff df 4d 01 d1 49 01 c0
    [  918.054322] RSP: 0018:ffff8801e3a1f258 EFLAGS: 00010202
    [  918.055400] RAX: ffffed0048000d82 RBX: ffff880240006c11 RCX: ffffffffb8867d14
    [  918.056832] RDX: 0000000000000000 RSI: 0000000000000002 RDI: ffff880240006c10
    [  918.058253] RBP: ffff8801e3a1f268 R08: 1ffff10048000d82 R09: ffffed0048000d82
    [  918.059717] R10: 0000000000000001 R11: ffffed0048000d82 R12: ffffed0048000d83
    [  918.061159] R13: ffff8801e3a1f390 R14: 0000000000000000 R15: ffff880240006c08
    [  918.062614] FS:  00007fac9732c700(0000) GS:ffff8801f6e00000(0000) knlGS:0000000000000000
    [  918.064246] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  918.065412] CR2: ffffed0048000d82 CR3: 00000001df77a000 CR4: 00000000000006f0
    [  918.066882] Call Trace:
    [  918.067410]  __asan_loadN+0xf/0x20
    [  918.068149]  f2fs_find_target_dentry+0xf4/0x270
    [  918.069083]  ? __get_node_page+0x331/0x5b0
    [  918.069925]  f2fs_find_in_inline_dir+0x24b/0x310
    [  918.070881]  ? f2fs_recover_inline_data+0x4c0/0x4c0
    [  918.071905]  ? unwind_next_frame.part.5+0x34f/0x490
    [  918.072901]  ? unwind_dump+0x290/0x290
    [  918.073695]  ? is_bpf_text_address+0xe/0x20
    [  918.074566]  __f2fs_find_entry+0x599/0x670
    [  918.075408]  ? kasan_unpoison_shadow+0x36/0x50
    [  918.076315]  ? kasan_kmalloc+0xad/0xe0
    [  918.077100]  ? memcg_kmem_put_cache+0x55/0xa0
    [  918.077998]  ? f2fs_find_target_dentry+0x270/0x270
    [  918.079006]  ? d_set_d_op+0x30/0x100
    [  918.079749]  ? __d_lookup_rcu+0x69/0x2e0
    [  918.080556]  ? __d_alloc+0x275/0x450
    [  918.081297]  ? kasan_check_write+0x14/0x20
    [  918.082135]  ? memset+0x31/0x40
    [  918.082820]  ? fscrypt_setup_filename+0x1ec/0x4c0
    [  918.083782]  ? d_alloc_parallel+0x5bb/0x8c0
    [  918.084640]  f2fs_find_entry+0xe9/0x110
    [  918.085432]  ? __f2fs_find_entry+0x670/0x670
    [  918.086308]  ? kasan_check_write+0x14/0x20
    [  918.087163]  f2fs_lookup+0x297/0x590
    [  918.087902]  ? f2fs_link+0x2b0/0x2b0
    [  918.088646]  ? legitimize_path.isra.29+0x61/0xa0
    [  918.089589]  __lookup_slow+0x12e/0x240
    [  918.090371]  ? may_delete+0x2b0/0x2b0
    [  918.091123]  ? __nd_alloc_stack+0xa0/0xa0
    [  918.091944]  lookup_slow+0x44/0x60
    [  918.092642]  walk_component+0x3ee/0xa40
    [  918.093428]  ? is_bpf_text_address+0xe/0x20
    [  918.094283]  ? pick_link+0x3e0/0x3e0
    [  918.095047]  ? in_group_p+0xa5/0xe0
    [  918.095771]  ? generic_permission+0x53/0x1e0
    [  918.096666]  ? security_inode_permission+0x1d/0x70
    [  918.097646]  ? inode_permission+0x7a/0x1f0
    [  918.098497]  link_path_walk+0x2a2/0x7b0
    [  918.099298]  ? apparmor_capget+0x3d0/0x3d0
    [  918.100140]  ? walk_component+0xa40/0xa40
    [  918.100958]  ? path_init+0x2e6/0x580
    [  918.101695]  path_openat+0x1bb/0x2160
    [  918.102471]  ? __save_stack_trace+0x92/0x100
    [  918.103352]  ? save_stack+0xb5/0xd0
    [  918.104070]  ? vfs_unlink+0x250/0x250
    [  918.104822]  ? save_stack+0x46/0xd0
    [  918.105538]  ? kasan_slab_alloc+0x11/0x20
    [  918.106370]  ? kmem_cache_alloc+0xd1/0x1e0
    [  918.107213]  ? getname_flags+0x76/0x2c0
    [  918.107997]  ? getname+0x12/0x20
    [  918.108677]  ? do_sys_open+0x14b/0x2c0
    [  918.109450]  ? __x64_sys_open+0x4c/0x60
    [  918.110255]  ? do_syscall_64+0x78/0x170
    [  918.111083]  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  918.112148]  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  918.113204]  ? f2fs_empty_inline_dir+0x1e0/0x1e0
    [  918.114150]  ? timespec64_trunc+0x5c/0x90
    [  918.114993]  ? wb_io_lists_depopulated+0x1a/0xc0
    [  918.115937]  ? inode_io_list_move_locked+0x102/0x110
    [  918.116949]  do_filp_open+0x12b/0x1d0
    [  918.117709]  ? may_open_dev+0x50/0x50
    [  918.118475]  ? kasan_kmalloc+0xad/0xe0
    [  918.119246]  do_sys_open+0x17c/0x2c0
    [  918.119983]  ? do_sys_open+0x17c/0x2c0
    [  918.120751]  ? filp_open+0x60/0x60
    [  918.121463]  ? task_work_run+0x4d/0xf0
    [  918.122237]  __x64_sys_open+0x4c/0x60
    [  918.123001]  do_syscall_64+0x78/0x170
    [  918.123759]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  918.124802] RIP: 0033:0x7fac96e3e040
    [  918.125537] Code: 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 83 3d 09 27 2d 00 00 75 10 b8 02 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 7e e0 01 00 48 89 04 24
    [  918.129341] RSP: 002b:00007fff1b37f848 EFLAGS: 00000246 ORIG_RAX: 0000000000000002
    [  918.130870] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fac96e3e040
    [  918.132295] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000122d080
    [  918.133748] RBP: 00007fff1b37f9b0 R08: 00007fac9710bbd8 R09: 0000000000000001
    [  918.135209] R10: 000000000000069d R11: 0000000000000246 R12: 0000000000400c20
    [  918.136650] R13: 00007fff1b37fab0 R14: 0000000000000000 R15: 0000000000000000
    [  918.138093] Modules linked in: snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd mac_hid i2c_piix4 soundcore ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx raid1 raid0 multipath linear 8139too crct10dif_pclmul crc32_pclmul qxl drm_kms_helper syscopyarea aesni_intel sysfillrect sysimgblt fb_sys_fops ttm drm aes_x86_64 crypto_simd cryptd 8139cp glue_helper mii pata_acpi floppy
    [  918.147924] CR2: ffffed0048000d82
    [  918.148619] ---[ end trace 4ce02f25ff7d3df5 ]---
    [  918.149563] RIP: 0010:check_memory_region+0x5e/0x190
    [  918.150576] Code: f8 49 c1 e8 03 49 89 db 49 c1 eb 03 4d 01 cb 4d 01 c1 4d 8d 63 01 4c 89 c8 4d 89 e2 4d 29 ca 49 83 fa 10 7f 3d 4d 85 d2 74 32 <41> 80 39 00 75 23 48 b8 01 00 00 00 00 fc ff df 4d 01 d1 49 01 c0
    [  918.154360] RSP: 0018:ffff8801e3a1f258 EFLAGS: 00010202
    [  918.155411] RAX: ffffed0048000d82 RBX: ffff880240006c11 RCX: ffffffffb8867d14
    [  918.156833] RDX: 0000000000000000 RSI: 0000000000000002 RDI: ffff880240006c10
    [  918.158257] RBP: ffff8801e3a1f268 R08: 1ffff10048000d82 R09: ffffed0048000d82
    [  918.159722] R10: 0000000000000001 R11: ffffed0048000d82 R12: ffffed0048000d83
    [  918.161149] R13: ffff8801e3a1f390 R14: 0000000000000000 R15: ffff880240006c08
    [  918.162587] FS:  00007fac9732c700(0000) GS:ffff8801f6e00000(0000) knlGS:0000000000000000
    [  918.164203] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  918.165356] CR2: ffffed0048000d82 CR3: 00000001df77a000 CR4: 00000000000006f0
    
    Reported-by: Wen Xu <wen.xu@gatech.edu>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 059311916fbbe6bedbb5a9002c19364fab3b862e
Author: Chao Yu <yuchao0@huawei.com>
Date:   Fri Jun 15 14:45:57 2018 +0800

    f2fs: fix to propagate return value of scan_nat_page()
    
    [ Upstream commit e2374015f27fe5ee5d5c37966e2faf396cdaaa65 ]
    
    As Anatoly Trosinenko reported in bugzilla:
    
    How to reproduce:
    1. Compile the 73fcb1a370c76 version of the kernel using the config attached
    2. Unpack and mount the attached filesystem image as F2FS
    3. The kernel will BUG() on mount (BUGs are explicitly enabled in config)
    
    [    2.233612] F2FS-fs (sda): Found nat_bits in checkpoint
    [    2.248422] ------------[ cut here ]------------
    [    2.248857] kernel BUG at fs/f2fs/node.c:1967!
    [    2.249760] invalid opcode: 0000 [#1] SMP NOPTI
    [    2.250219] Modules linked in:
    [    2.251848] CPU: 0 PID: 944 Comm: mount Not tainted 4.17.0-rc5+ #1
    [    2.252331] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    [    2.253305] RIP: 0010:build_free_nids+0x337/0x3f0
    [    2.253672] RSP: 0018:ffffae7fc0857c50 EFLAGS: 00000246
    [    2.254080] RAX: 00000000ffffffff RBX: 0000000000000123 RCX: 0000000000000001
    [    2.254638] RDX: ffff9aa7063d5c00 RSI: 0000000000000122 RDI: ffff9aa705852e00
    [    2.255190] RBP: ffff9aa705852e00 R08: 0000000000000001 R09: ffff9aa7059090c0
    [    2.255719] R10: 0000000000000000 R11: 0000000000000000 R12: ffff9aa705852e00
    [    2.256242] R13: ffff9aa7063ad000 R14: ffff9aa705919000 R15: 0000000000000123
    [    2.256809] FS:  00000000023078c0(0000) GS:ffff9aa707800000(0000) knlGS:0000000000000000
    [    2.258654] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    2.259153] CR2: 00000000005511ae CR3: 0000000005872000 CR4: 00000000000006f0
    [    2.259801] Call Trace:
    [    2.260583]  build_node_manager+0x5cd/0x600
    [    2.260963]  f2fs_fill_super+0x66a/0x17c0
    [    2.261300]  ? f2fs_commit_super+0xe0/0xe0
    [    2.261622]  mount_bdev+0x16e/0x1a0
    [    2.261899]  mount_fs+0x30/0x150
    [    2.262398]  vfs_kern_mount.part.28+0x4f/0xf0
    [    2.262743]  do_mount+0x5d0/0xc60
    [    2.263010]  ? _copy_from_user+0x37/0x60
    [    2.263313]  ? memdup_user+0x39/0x60
    [    2.263692]  ksys_mount+0x7b/0xd0
    [    2.263960]  __x64_sys_mount+0x1c/0x20
    [    2.264268]  do_syscall_64+0x43/0xf0
    [    2.264560]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [    2.265095] RIP: 0033:0x48d31a
    [    2.265502] RSP: 002b:00007ffc6fe60a08 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
    [    2.266089] RAX: ffffffffffffffda RBX: 0000000000008000 RCX: 000000000048d31a
    [    2.266607] RDX: 00007ffc6fe62fa5 RSI: 00007ffc6fe62f9d RDI: 00007ffc6fe62f94
    [    2.267130] RBP: 00000000023078a0 R08: 0000000000000000 R09: 0000000000000000
    [    2.267670] R10: 0000000000008000 R11: 0000000000000246 R12: 0000000000000000
    [    2.268192] R13: 0000000000000000 R14: 00007ffc6fe60c78 R15: 0000000000000000
    [    2.268767] Code: e8 5f c3 ff ff 83 c3 01 41 83 c7 01 81 fb c7 01 00 00 74 48 44 39 7d 04 76 42 48 63 c3 48 8d 04 c0 41 8b 44 06 05 83 f8 ff 75 c1 <0f> 0b 49 8b 45 50 48 8d b8 b0 00 00 00 e8 37 59 69 00 b9 01 00
    [    2.270434] RIP: build_free_nids+0x337/0x3f0 RSP: ffffae7fc0857c50
    [    2.271426] ---[ end trace ab20c06cd3c8fde4 ]---
    
    During loading NAT entries, we will do sanity check, once the entry info
    is corrupted, it will cause BUG_ON directly to protect user data from
    being overwrited.
    
    In this case, it will be better to just return failure on mount() instead
    of panic, so that user can get hint from kmsg and try fsck for recovery
    immediately rather than after an abnormal reboot.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=199769
    
    Reported-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d65ffb36708844dfd463e71391d3b13e4b3f42f
Author: Chao Yu <yuchao0@huawei.com>
Date:   Sat Jun 23 11:25:19 2018 +0800

    f2fs: fix to do sanity check with {sit,nat}_ver_bitmap_bytesize
    
    [ Upstream commit c77ec61ca0a49544ca81881cc5d5529858f7e196 ]
    
    This patch adds to do sanity check with {sit,nat}_ver_bitmap_bytesize
    during mount, in order to avoid accessing across cache boundary with
    this abnormal bitmap size.
    
    - Overview
    buffer overrun in build_sit_info() when mounting a crafted f2fs image
    
    - Reproduce
    
    - Kernel message
    [  548.580867] F2FS-fs (loop0): Invalid log blocks per segment (8201)
    
    [  548.580877] F2FS-fs (loop0): Can't find valid F2FS filesystem in 1th superblock
    [  548.584979] ==================================================================
    [  548.586568] BUG: KASAN: use-after-free in kmemdup+0x36/0x50
    [  548.587715] Read of size 64 at addr ffff8801e9c265ff by task mount/1295
    
    [  548.589428] CPU: 1 PID: 1295 Comm: mount Not tainted 4.18.0-rc1+ #4
    [  548.589432] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [  548.589438] Call Trace:
    [  548.589474]  dump_stack+0x7b/0xb5
    [  548.589487]  print_address_description+0x70/0x290
    [  548.589492]  kasan_report+0x291/0x390
    [  548.589496]  ? kmemdup+0x36/0x50
    [  548.589509]  check_memory_region+0x139/0x190
    [  548.589514]  memcpy+0x23/0x50
    [  548.589518]  kmemdup+0x36/0x50
    [  548.589545]  f2fs_build_segment_manager+0x8fa/0x3410
    [  548.589551]  ? __asan_loadN+0xf/0x20
    [  548.589560]  ? f2fs_sanity_check_ckpt+0x1be/0x240
    [  548.589566]  ? f2fs_flush_sit_entries+0x10c0/0x10c0
    [  548.589587]  ? __put_user_ns+0x40/0x40
    [  548.589604]  ? find_next_bit+0x57/0x90
    [  548.589610]  f2fs_fill_super+0x194b/0x2b40
    [  548.589617]  ? f2fs_commit_super+0x1b0/0x1b0
    [  548.589637]  ? set_blocksize+0x90/0x140
    [  548.589651]  mount_bdev+0x1c5/0x210
    [  548.589655]  ? f2fs_commit_super+0x1b0/0x1b0
    [  548.589667]  f2fs_mount+0x15/0x20
    [  548.589672]  mount_fs+0x60/0x1a0
    [  548.589683]  ? alloc_vfsmnt+0x309/0x360
    [  548.589688]  vfs_kern_mount+0x6b/0x1a0
    [  548.589699]  do_mount+0x34a/0x18c0
    [  548.589710]  ? lockref_put_or_lock+0xcf/0x160
    [  548.589716]  ? copy_mount_string+0x20/0x20
    [  548.589728]  ? memcg_kmem_put_cache+0x1b/0xa0
    [  548.589734]  ? kasan_check_write+0x14/0x20
    [  548.589740]  ? _copy_from_user+0x6a/0x90
    [  548.589744]  ? memdup_user+0x42/0x60
    [  548.589750]  ksys_mount+0x83/0xd0
    [  548.589755]  __x64_sys_mount+0x67/0x80
    [  548.589781]  do_syscall_64+0x78/0x170
    [  548.589797]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  548.589820] RIP: 0033:0x7f76fc331b9a
    [  548.589821] Code: 48 8b 0d 01 c3 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ce c2 2b 00 f7 d8 64 89 01 48
    [  548.589880] RSP: 002b:00007ffd4f0a0e48 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [  548.589890] RAX: ffffffffffffffda RBX: 000000000146c030 RCX: 00007f76fc331b9a
    [  548.589892] RDX: 000000000146c210 RSI: 000000000146df30 RDI: 0000000001474ec0
    [  548.589895] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000013
    [  548.589897] R10: 00000000c0ed0000 R11: 0000000000000206 R12: 0000000001474ec0
    [  548.589900] R13: 000000000146c210 R14: 0000000000000000 R15: 0000000000000003
    
    [  548.590242] The buggy address belongs to the page:
    [  548.591243] page:ffffea0007a70980 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    [  548.592886] flags: 0x2ffff0000000000()
    [  548.593665] raw: 02ffff0000000000 dead000000000100 dead000000000200 0000000000000000
    [  548.595258] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    [  548.603713] page dumped because: kasan: bad access detected
    
    [  548.605203] Memory state around the buggy address:
    [  548.606198]  ffff8801e9c26480: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    [  548.607676]  ffff8801e9c26500: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    [  548.609157] >ffff8801e9c26580: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    [  548.610629]                                                                 ^
    [  548.612088]  ffff8801e9c26600: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    [  548.613674]  ffff8801e9c26680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    [  548.615141] ==================================================================
    [  548.616613] Disabling lock debugging due to kernel taint
    [  548.622871] WARNING: CPU: 1 PID: 1295 at mm/page_alloc.c:4065 __alloc_pages_slowpath+0xe4a/0x1420
    [  548.622878] Modules linked in: snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd mac_hid i2c_piix4 soundcore ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx raid1 raid0 multipath linear 8139too crct10dif_pclmul crc32_pclmul qxl drm_kms_helper syscopyarea aesni_intel sysfillrect sysimgblt fb_sys_fops ttm drm aes_x86_64 crypto_simd cryptd 8139cp glue_helper mii pata_acpi floppy
    [  548.623217] CPU: 1 PID: 1295 Comm: mount Tainted: G    B             4.18.0-rc1+ #4
    [  548.623219] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [  548.623226] RIP: 0010:__alloc_pages_slowpath+0xe4a/0x1420
    [  548.623227] Code: ff ff 01 89 85 c8 fe ff ff e9 91 fc ff ff 41 89 c5 e9 5c fc ff ff 0f 0b 89 f8 25 ff ff f7 ff 89 85 8c fe ff ff e9 d5 f2 ff ff <0f> 0b e9 65 f2 ff ff 65 8b 05 38 81 d2 47 f6 c4 01 74 1c 65 48 8b
    [  548.623281] RSP: 0018:ffff8801f28c7678 EFLAGS: 00010246
    [  548.623284] RAX: 0000000000000000 RBX: 00000000006040c0 RCX: ffffffffb82f73b7
    [  548.623287] RDX: 1ffff1003e518eeb RSI: 000000000000000c RDI: 0000000000000000
    [  548.623290] RBP: ffff8801f28c7880 R08: 0000000000000000 R09: ffffed0047fff2c5
    [  548.623292] R10: 0000000000000001 R11: ffffed0047fff2c4 R12: ffff8801e88de040
    [  548.623295] R13: 00000000006040c0 R14: 000000000000000c R15: ffff8801f28c7938
    [  548.623299] FS:  00007f76fca51840(0000) GS:ffff8801f6f00000(0000) knlGS:0000000000000000
    [  548.623302] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  548.623304] CR2: 00007f19b9171760 CR3: 00000001ed952000 CR4: 00000000000006e0
    [  548.623317] Call Trace:
    [  548.623325]  ? kasan_check_read+0x11/0x20
    [  548.623330]  ? __zone_watermark_ok+0x92/0x240
    [  548.623336]  ? get_page_from_freelist+0x1c3/0x1d90
    [  548.623347]  ? _raw_spin_lock_irqsave+0x2a/0x60
    [  548.623353]  ? warn_alloc+0x250/0x250
    [  548.623358]  ? save_stack+0x46/0xd0
    [  548.623361]  ? kasan_kmalloc+0xad/0xe0
    [  548.623366]  ? __isolate_free_page+0x2a0/0x2a0
    [  548.623370]  ? mount_fs+0x60/0x1a0
    [  548.623374]  ? vfs_kern_mount+0x6b/0x1a0
    [  548.623378]  ? do_mount+0x34a/0x18c0
    [  548.623383]  ? ksys_mount+0x83/0xd0
    [  548.623387]  ? __x64_sys_mount+0x67/0x80
    [  548.623391]  ? do_syscall_64+0x78/0x170
    [  548.623396]  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  548.623401]  __alloc_pages_nodemask+0x3c5/0x400
    [  548.623407]  ? __alloc_pages_slowpath+0x1420/0x1420
    [  548.623412]  ? __mutex_lock_slowpath+0x20/0x20
    [  548.623417]  ? kvmalloc_node+0x31/0x80
    [  548.623424]  alloc_pages_current+0x75/0x110
    [  548.623436]  kmalloc_order+0x24/0x60
    [  548.623442]  kmalloc_order_trace+0x24/0xb0
    [  548.623448]  __kmalloc_track_caller+0x207/0x220
    [  548.623455]  ? f2fs_build_node_manager+0x399/0xbb0
    [  548.623460]  kmemdup+0x20/0x50
    [  548.623465]  f2fs_build_node_manager+0x399/0xbb0
    [  548.623470]  f2fs_fill_super+0x195e/0x2b40
    [  548.623477]  ? f2fs_commit_super+0x1b0/0x1b0
    [  548.623481]  ? set_blocksize+0x90/0x140
    [  548.623486]  mount_bdev+0x1c5/0x210
    [  548.623489]  ? f2fs_commit_super+0x1b0/0x1b0
    [  548.623495]  f2fs_mount+0x15/0x20
    [  548.623498]  mount_fs+0x60/0x1a0
    [  548.623503]  ? alloc_vfsmnt+0x309/0x360
    [  548.623508]  vfs_kern_mount+0x6b/0x1a0
    [  548.623513]  do_mount+0x34a/0x18c0
    [  548.623518]  ? lockref_put_or_lock+0xcf/0x160
    [  548.623523]  ? copy_mount_string+0x20/0x20
    [  548.623528]  ? memcg_kmem_put_cache+0x1b/0xa0
    [  548.623533]  ? kasan_check_write+0x14/0x20
    [  548.623537]  ? _copy_from_user+0x6a/0x90
    [  548.623542]  ? memdup_user+0x42/0x60
    [  548.623547]  ksys_mount+0x83/0xd0
    [  548.623552]  __x64_sys_mount+0x67/0x80
    [  548.623557]  do_syscall_64+0x78/0x170
    [  548.623562]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  548.623566] RIP: 0033:0x7f76fc331b9a
    [  548.623567] Code: 48 8b 0d 01 c3 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ce c2 2b 00 f7 d8 64 89 01 48
    [  548.623632] RSP: 002b:00007ffd4f0a0e48 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [  548.623636] RAX: ffffffffffffffda RBX: 000000000146c030 RCX: 00007f76fc331b9a
    [  548.623639] RDX: 000000000146c210 RSI: 000000000146df30 RDI: 0000000001474ec0
    [  548.623641] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000013
    [  548.623643] R10: 00000000c0ed0000 R11: 0000000000000206 R12: 0000000001474ec0
    [  548.623646] R13: 000000000146c210 R14: 0000000000000000 R15: 0000000000000003
    [  548.623650] ---[ end trace 4ce02f25ff7d3df5 ]---
    [  548.623656] F2FS-fs (loop0): Failed to initialize F2FS node manager
    [  548.627936] F2FS-fs (loop0): Invalid log blocks per segment (8201)
    
    [  548.627940] F2FS-fs (loop0): Can't find valid F2FS filesystem in 1th superblock
    [  548.635835] F2FS-fs (loop0): Failed to initialize F2FS node manager
    
    - Location
    https://elixir.bootlin.com/linux/v4.18-rc1/source/fs/f2fs/segment.c#L3578
    
            sit_i->sit_bitmap = kmemdup(src_bitmap, bitmap_size, GFP_KERNEL);
    
    Buffer overrun happens when doing memcpy. I suspect there is missing (inconsistent) checks on bitmap_size.
    
    Reported by Wen Xu (wen.xu@gatech.edu) from SSLab, Gatech.
    
    Reported-by: Wen Xu <wen.xu@gatech.edu>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea08014059c65ff1128303f9fa3923d8b524ca9f
Author: Zumeng Chen <zumeng.chen@gmail.com>
Date:   Wed Jul 4 12:35:29 2018 +0800

    mfd: ti_am335x_tscadc: Fix struct clk memory leak
    
    [ Upstream commit c2b1509c77a99a0dcea0a9051ca743cb88385f50 ]
    
    Use devm_elk_get() to let Linux manage struct clk memory to avoid the following
    memory leakage report:
    
    unreferenced object 0xdd75efc0 (size 64):
      comm "systemd-udevd", pid 186, jiffies 4294945126 (age 1195.750s)
      hex dump (first 32 bytes):
        61 64 63 5f 74 73 63 5f 66 63 6b 00 00 00 00 00  adc_tsc_fck.....
        00 00 00 00 92 03 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<c0a15260>] kmemleak_alloc+0x40/0x74
        [<c0287a10>] __kmalloc_track_caller+0x198/0x388
        [<c0255610>] kstrdup+0x40/0x5c
        [<c025565c>] kstrdup_const+0x30/0x3c
        [<c0636630>] __clk_create_clk+0x60/0xac
        [<c0630918>] clk_get_sys+0x74/0x144
        [<c0630cdc>] clk_get+0x5c/0x68
        [<bf0ac540>] ti_tscadc_probe+0x260/0x468 [ti_am335x_tscadc]
        [<c06f3c0c>] platform_drv_probe+0x60/0xac
        [<c06f1abc>] driver_probe_device+0x214/0x2dc
        [<c06f1c18>] __driver_attach+0x94/0xc0
        [<c06efe2c>] bus_for_each_dev+0x90/0xa0
        [<c06f1470>] driver_attach+0x28/0x30
        [<c06f1030>] bus_add_driver+0x184/0x1ec
        [<c06f2b74>] driver_register+0xb0/0xf0
        [<c06f3b4c>] __platform_driver_register+0x40/0x54
    
    Signed-off-by: Zumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff418359bfcb89dae0d483fc6e04cbb26f7b0c0e
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Jul 20 18:16:59 2018 +0200

    iommu/ipmmu-vmsa: Fix allocation in atomic context
    
    [ Upstream commit 46583e8c48c5a094ba28060615b3a7c8c576690f ]
    
    When attaching a device to an IOMMU group with
    CONFIG_DEBUG_ATOMIC_SLEEP=y:
    
        BUG: sleeping function called from invalid context at mm/slab.h:421
        in_atomic(): 1, irqs_disabled(): 128, pid: 61, name: kworker/1:1
        ...
        Call trace:
         ...
         arm_lpae_alloc_pgtable+0x114/0x184
         arm_64_lpae_alloc_pgtable_s1+0x2c/0x128
         arm_32_lpae_alloc_pgtable_s1+0x40/0x6c
         alloc_io_pgtable_ops+0x60/0x88
         ipmmu_attach_device+0x140/0x334
    
    ipmmu_attach_device() takes a spinlock, while arm_lpae_alloc_pgtable()
    allocates memory using GFP_KERNEL.  Originally, the ipmmu-vmsa driver
    had its own custom page table allocation implementation using
    GFP_ATOMIC, hence the spinlock was fine.
    
    Fix this by replacing the spinlock by a mutex, like the arm-smmu driver
    does.
    
    Fixes: f20ed39f53145e45 ("iommu/ipmmu-vmsa: Use the ARM LPAE page table allocator")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ca5bae4d2d8f35ad847625b9f693c73db467f4e
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Fri Jul 6 19:41:05 2018 -0700

    mfd: rave-sp: Initialize flow control and parity of the port
    
    [ Upstream commit 6c450bdf13ebe110821a74960936cec936edae49 ]
    
    Relying on serial port defaults for flow control and parity can result
    in complete breakdown of communication with RAVE SP on some platforms
    where defaults are not what we need them to be. One such case is
    VF610-base ZII SPU3 board (not supported upstream). To avoid this
    problem in the future, add code to explicitly configure both.
    
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0342426f2bf7298a91efee659ddc033082f6918b
Author: Chao Yu <yuchao0@huawei.com>
Date:   Sat Jun 23 00:12:36 2018 +0800

    f2fs: fix to do sanity check with secs_per_zone
    
    [ Upstream commit 42bf546c1fe3f3654bdf914e977acbc2b80a5be5 ]
    
    As Wen Xu reported in below link:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=200183
    
    - Overview
    Divide zero in reset_curseg() when mounting a crafted f2fs image
    
    - Reproduce
    
    - Kernel message
    [  588.281510] divide error: 0000 [#1] SMP KASAN PTI
    [  588.282701] CPU: 0 PID: 1293 Comm: mount Not tainted 4.18.0-rc1+ #4
    [  588.284000] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [  588.286178] RIP: 0010:reset_curseg+0x94/0x1a0
    [  588.298166] RSP: 0018:ffff8801e88d7940 EFLAGS: 00010246
    [  588.299360] RAX: 0000000000000014 RBX: ffff8801e1d46d00 RCX: ffffffffb88bf60b
    [  588.300809] RDX: 0000000000000000 RSI: dffffc0000000000 RDI: ffff8801e1d46d64
    [  588.305272] R13: 0000000000000000 R14: 0000000000000014 R15: 0000000000000000
    [  588.306822] FS:  00007fad85008840(0000) GS:ffff8801f6e00000(0000) knlGS:0000000000000000
    [  588.308456] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  588.309623] CR2: 0000000001705078 CR3: 00000001f30f8000 CR4: 00000000000006f0
    [  588.311085] Call Trace:
    [  588.311637]  f2fs_build_segment_manager+0x103f/0x3410
    [  588.316136]  ? f2fs_commit_super+0x1b0/0x1b0
    [  588.317031]  ? set_blocksize+0x90/0x140
    [  588.319473]  f2fs_mount+0x15/0x20
    [  588.320166]  mount_fs+0x60/0x1a0
    [  588.320847]  ? alloc_vfsmnt+0x309/0x360
    [  588.321647]  vfs_kern_mount+0x6b/0x1a0
    [  588.322432]  do_mount+0x34a/0x18c0
    [  588.323175]  ? strndup_user+0x46/0x70
    [  588.323937]  ? copy_mount_string+0x20/0x20
    [  588.324793]  ? memcg_kmem_put_cache+0x1b/0xa0
    [  588.325702]  ? kasan_check_write+0x14/0x20
    [  588.326562]  ? _copy_from_user+0x6a/0x90
    [  588.327375]  ? memdup_user+0x42/0x60
    [  588.328118]  ksys_mount+0x83/0xd0
    [  588.328808]  __x64_sys_mount+0x67/0x80
    [  588.329607]  do_syscall_64+0x78/0x170
    [  588.330400]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  588.331461] RIP: 0033:0x7fad848e8b9a
    [  588.336022] RSP: 002b:00007ffd7c5b6be8 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [  588.337547] RAX: ffffffffffffffda RBX: 00000000016f8030 RCX: 00007fad848e8b9a
    [  588.338999] RDX: 00000000016f8210 RSI: 00000000016f9f30 RDI: 0000000001700ec0
    [  588.340442] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000013
    [  588.341887] R10: 00000000c0ed0000 R11: 0000000000000206 R12: 0000000001700ec0
    [  588.343341] R13: 00000000016f8210 R14: 0000000000000000 R15: 0000000000000003
    [  588.354891] ---[ end trace 4ce02f25ff7d3df5 ]---
    [  588.355862] RIP: 0010:reset_curseg+0x94/0x1a0
    [  588.360742] RSP: 0018:ffff8801e88d7940 EFLAGS: 00010246
    [  588.361812] RAX: 0000000000000014 RBX: ffff8801e1d46d00 RCX: ffffffffb88bf60b
    [  588.363485] RDX: 0000000000000000 RSI: dffffc0000000000 RDI: ffff8801e1d46d64
    [  588.365213] RBP: ffff8801e88d7968 R08: ffffed003c32266f R09: ffffed003c32266f
    [  588.366661] R10: 0000000000000001 R11: ffffed003c32266e R12: ffff8801f0337700
    [  588.368110] R13: 0000000000000000 R14: 0000000000000014 R15: 0000000000000000
    [  588.370057] FS:  00007fad85008840(0000) GS:ffff8801f6e00000(0000) knlGS:0000000000000000
    [  588.372099] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  588.373291] CR2: 0000000001705078 CR3: 00000001f30f8000 CR4: 00000000000006f0
    
    - Location
    https://elixir.bootlin.com/linux/latest/source/fs/f2fs/segment.c#L2147
            curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno);
    
    If secs_per_zone is corrupted due to fuzzing test, it will cause divide
    zero operation when using GET_ZONE_FROM_SEG macro, so we should do more
    sanity check with secs_per_zone during mount to avoid this issue.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee0b97e19865d761eb012e9fe8dc93595d800294
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Sun Jul 15 09:58:08 2018 +0900

    f2fs: avoid potential deadlock in f2fs_sbi_store
    
    [ Upstream commit a1933c09ef84c2fd187e05b560ddc6e1267d6508 ]
    
    [  155.018460] ======================================================
    [  155.021431] WARNING: possible circular locking dependency detected
    [  155.024339] 4.18.0-rc3+ #5 Tainted: G           OE
    [  155.026879] ------------------------------------------------------
    [  155.029783] umount/2901 is trying to acquire lock:
    [  155.032187] 00000000c4282f1f (kn->count#130){++++}, at: kernfs_remove+0x1f/0x30
    [  155.035439]
    [  155.035439] but task is already holding lock:
    [  155.038892] 0000000056e4307b (&type->s_umount_key#41){++++}, at: deactivate_super+0x33/0x50
    [  155.042602]
    [  155.042602] which lock already depends on the new lock.
    [  155.042602]
    [  155.047465]
    [  155.047465] the existing dependency chain (in reverse order) is:
    [  155.051354]
    [  155.051354] -> #1 (&type->s_umount_key#41){++++}:
    [  155.054768]        f2fs_sbi_store+0x61/0x460 [f2fs]
    [  155.057083]        kernfs_fop_write+0x113/0x1a0
    [  155.059277]        __vfs_write+0x36/0x180
    [  155.061250]        vfs_write+0xbe/0x1b0
    [  155.063179]        ksys_write+0x55/0xc0
    [  155.065068]        do_syscall_64+0x60/0x1b0
    [  155.067071]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [  155.069529]
    [  155.069529] -> #0 (kn->count#130){++++}:
    [  155.072421]        __kernfs_remove+0x26f/0x2e0
    [  155.074452]        kernfs_remove+0x1f/0x30
    [  155.076342]        kobject_del.part.5+0xe/0x40
    [  155.078354]        f2fs_put_super+0x12d/0x290 [f2fs]
    [  155.080500]        generic_shutdown_super+0x6c/0x110
    [  155.082655]        kill_block_super+0x21/0x50
    [  155.084634]        kill_f2fs_super+0x9c/0xc0 [f2fs]
    [  155.086726]        deactivate_locked_super+0x3f/0x70
    [  155.088826]        cleanup_mnt+0x3b/0x70
    [  155.090584]        task_work_run+0x93/0xc0
    [  155.092367]        exit_to_usermode_loop+0xf0/0x100
    [  155.094466]        do_syscall_64+0x162/0x1b0
    [  155.096312]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [  155.098603]
    [  155.098603] other info that might help us debug this:
    [  155.098603]
    [  155.102418]  Possible unsafe locking scenario:
    [  155.102418]
    [  155.105134]        CPU0                    CPU1
    [  155.107037]        ----                    ----
    [  155.108910]   lock(&type->s_umount_key#41);
    [  155.110674]                                lock(kn->count#130);
    [  155.113010]                                lock(&type->s_umount_key#41);
    [  155.115608]   lock(kn->count#130);
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d92dadb83be8f7d8644ec02f1b2dedd7c16258e1
Author: Brad Love <brad@nextdimension.cc>
Date:   Wed Jun 27 11:32:01 2018 -0400

    media: em28xx: Fix DualHD disconnect oops
    
    [ Upstream commit 20cdcaf903298d54b834daedf65a2ddef70cae0a ]
    
    During the duplication of em28xx state for the second tuner pair
    a pointer to alt_max_pkt_size_isoc is copied. During tear down
    the second tuner is destroyed first and kfrees alt_max_pkt_size_isoc,
    then the first tuner is destroyed and kfrees it again. The property
    should only be kfree'd if the tuner is PRIMARY_TS.
    
    [  354.888560] ------------[ cut here ]------------
    [  354.888562] kernel BUG at mm/slub.c:296!
    [  354.888574] invalid opcode: 0000 [#1] SMP NOPTI
    [  354.888869] CPU: 1 PID: 19 Comm: kworker/1:0 Not tainted 4.18.0-rc1+ #20
    [  354.889140] Hardware name: MSI MS-7A39/B350M GAMING PRO (MS-7A39), BIOS 2.G0 04/27/2018
    [  354.889408] Workqueue: usb_hub_wq hub_event
    [  354.889679] RIP: 0010:__slab_free+0x217/0x370
    [  354.889942] Code: bb c0 e8 07 41 38 c7 72 39 48 83 c4 70 5b 41 5a 41 5c 41 5d 41 5e 41 5f 5d 49 8d 62 f8 c3 f3 90 49 8b 04 24 a8 01 75 f6 eb 82 <0f> 0b 44 89 45 80 48 89 4d 88 e8 aa fa ff ff 85 c0 74 cc e9 b7 fe
    [  354.890598] RSP: 0018:ffffb84c41a4fad0 EFLAGS: 00010246
    [  354.890934] RAX: ffff948646e85150 RBX: ffff948646e85150 RCX: ffff948646e85150
    [  354.891280] RDX: 00000000820001d9 RSI: fffffa8fd01ba140 RDI: ffff94865e807c00
    [  354.891649] RBP: ffffb84c41a4fb70 R08: 0000000000000001 R09: ffffffffc059ce21
    [  354.892025] R10: ffff948646e85150 R11: 0000000000000001 R12: fffffa8fd01ba140
    [  354.892403] R13: ffff948646e85150 R14: ffff94865e807c00 R15: ffff94864c92e0a0
    [  354.892780] FS:  0000000000000000(0000) GS:ffff94865ec40000(0000) knlGS:0000000000000000
    [  354.893150] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  354.893530] CR2: 00007f4e476da950 CR3: 000000040112c000 CR4: 00000000003406e0
    [  354.893917] Call Trace:
    [  354.894315]  ? __dev_printk+0x3c/0x80
    [  354.894695]  ? _dev_info+0x64/0x80
    [  354.895082]  ? em28xx_free_device+0x41/0x50 [em28xx]
    [  354.895464]  kfree+0x17a/0x190
    [  354.895852]  ? kfree+0x17a/0x190
    [  354.896310]  em28xx_free_device+0x41/0x50 [em28xx]
    [  354.896698]  em28xx_usb_disconnect+0xfa/0x110 [em28xx]
    [  354.897083]  usb_unbind_interface+0x7a/0x270
    [  354.897475]  device_release_driver_internal+0x17c/0x250
    [  354.897864]  device_release_driver+0x12/0x20
    [  354.898252]  bus_remove_device+0xec/0x160
    [  354.898639]  device_del+0x13d/0x320
    [  354.899018]  ? usb_remove_ep_devs+0x1f/0x30
    [  354.899392]  usb_disable_device+0x9e/0x270
    [  354.899772]  usb_disconnect+0x92/0x2a0
    [  354.900149]  hub_event+0x98e/0x1650
    [  354.900519]  ? sched_clock_cpu+0x11/0xa0
    [  354.900890]  process_one_work+0x167/0x3f0
    [  354.901251]  worker_thread+0x4d/0x460
    [  354.901610]  kthread+0x105/0x140
    [  354.901964]  ? rescuer_thread+0x360/0x360
    [  354.902318]  ? kthread_associate_blkcg+0xa0/0xa0
    [  354.902672]  ret_from_fork+0x22/0x40
    [  354.903024] Modules linked in: rc_hauppauge em28xx_rc rc_core si2157 lgdt3306a i2c_mux em28xx_dvb dvb_core videobuf2_vmalloc videobuf2_memops videobuf2_common snd_hda_codec_hdmi nls_iso8859_1 edac_mce_amd kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_seq_midi aesni_intel snd_seq_midi_event aes_x86_64 snd_rawmidi crypto_simd em28xx cryptd glue_helper asix tveeprom usbnet snd_seq v4l2_common mii videodev snd_seq_device media input_leds snd_timer joydev ccp k10temp wmi_bmof snd soundcore mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables vfio_pci vfio_virqfd irqbypass vfio_iommu_type1 vfio nouveau mxm_wmi video i2c_algo_bit ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops i2c_piix4 drm ahci libahci
    [  354.905129]  wmi gpio_amdpt gpio_generic hid_generic usbhid hid
    [  354.908140] ---[ end trace c230d02716298c34 ]---
    [  354.908145] RIP: 0010:__slab_free+0x217/0x370
    [  354.908147] Code: bb c0 e8 07 41 38 c7 72 39 48 83 c4 70 5b 41 5a 41 5c 41 5d 41 5e 41 5f 5d 49 8d 62 f8 c3 f3 90 49 8b 04 24 a8 01 75 f6 eb 82 <0f> 0b 44 89 45 80 48 89 4d 88 e8 aa fa ff ff 85 c0 74 cc e9 b7 fe
    [  354.908183] RSP: 0018:ffffb84c41a4fad0 EFLAGS: 00010246
    [  354.908186] RAX: ffff948646e85150 RBX: ffff948646e85150 RCX: ffff948646e85150
    [  354.908189] RDX: 00000000820001d9 RSI: fffffa8fd01ba140 RDI: ffff94865e807c00
    [  354.908191] RBP: ffffb84c41a4fb70 R08: 0000000000000001 R09: ffffffffc059ce21
    [  354.908193] R10: ffff948646e85150 R11: 0000000000000001 R12: fffffa8fd01ba140
    [  354.908195] R13: ffff948646e85150 R14: ffff94865e807c00 R15: ffff94864c92e0a0
    [  354.908198] FS:  0000000000000000(0000) GS:ffff94865ec40000(0000) knlGS:0000000000000000
    [  354.908201] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  354.908203] CR2: 00007f4e476da950 CR3: 000000016b20a000 CR4: 00000000003406e0
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aba03a8b544ab73397811a908b4d7608d743002e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jun 20 13:39:53 2018 +0300

    f2fs: Fix uninitialized return in f2fs_ioc_shutdown()
    
    [ Upstream commit 2a96d8ad94ce57cb0072f7a660b1039720c47716 ]
    
    "ret" can be uninitialized on the success path when "in ==
    F2FS_GOING_DOWN_FULLSYNC".
    
    Fixes: 60b2b4ee2bc0 ("f2fs: Fix deadlock in shutdown ioctl")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eade994be5e644a2e77a9d088b1f6536e7a7e942
Author: Chao Yu <yuchao0@huawei.com>
Date:   Thu Jun 21 22:38:28 2018 +0800

    f2fs: fix to wait on page writeback before updating page
    
    [ Upstream commit 6aead1617b3adf2b7e2c56f0f13e4e0ee42ebb4a ]
    
    In error path of f2fs_move_rehashed_dirents, inode page could be writeback
    state, so we should wait on inode page writeback before updating it.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9ce9240ebbe77d66300df337888741ec551ee9e
Author: Will Deacon <will.deacon@arm.com>
Date:   Wed Jul 25 15:58:43 2018 +0100

    iommu/arm-smmu-v3: Abort all transactions if SMMU is enabled in kdump kernel
    
    [ Upstream commit b63b3439b85609338e4faabd5d2588dbda137e5c ]
    
    If we find that the SMMU is enabled during probe, we reset it by
    re-initialising its registers and either enabling translation or placing
    it into bypass based on the disable_bypass commandline option.
    
    In the case of a kdump kernel, the SMMU won't have been shutdown cleanly
    by the previous kernel and there may be concurrent DMA through the SMMU.
    Rather than reset the SMMU to bypass, which would likely lead to rampant
    data corruption, we can instead configure the SMMU to abort all incoming
    transactions when we find that it is enabled from within a kdump kernel.
    
    Reported-by: Sameer Goel <sgoel@codeaurora.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b210d52abf5cc2e059bcb346875fbda3d787fc7
Author: Brad Love <brad@nextdimension.cc>
Date:   Thu Jun 28 13:29:09 2018 -0400

    media: em28xx: Fix dual transport stream operation
    
    [ Upstream commit a7853c257a3ea0907467a1750ff45de4d9ba1915 ]
    
    Addresses the following, which introduced a regression itself:
    
    Commit 509f89652f83 ("media: em28xx: fix a regression with HVR-950")
    
    The regression fix breaks dual transport stream support. Currently,
    when a tuner starts streaming it sets alt mode on the USB interface.
    The problem is, in a dual tuner model, both tuners share the same
    USB interface, so when the second tuner becomes active and sets alt
    mode on the interface it kills streaming on the other port.
    
    This patch addresses the regression by only setting alt mode
    on the USB interface during em28xx_start_streaming, if the
    device is not a dual tuner model. This allows all older and
    single tuner devices to explicitly set alt mode during stream
    startup. Testers report both isoc and bulk DualHD models work
    correctly with the alt mode set only once, in em28xx_dvb_init.
    
    Fixes: 509f89652f83 ("media: em28xx: fix a regression with HVR-950")
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Michael Ira Krufky <mkrufky@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 088ce054c745f94a3d7a48ceedb483164b8724d0
Author: Anthony Koo <Anthony.Koo@amd.com>
Date:   Tue Jul 17 09:43:44 2018 -0400

    drm/amd/display: Prevent PSR from being enabled if initialization fails
    
    [ Upstream commit 9907704174e0ad4ed02766fac4049971e583323d ]
    
    [Why]
    PSR_SET command is sent to the microcontroller in order to initialize
    parameters needed for PSR feature, such as telling the microcontroller
    which pipe is driving the PSR supported panel. When this command is
    skipped or fails, the microcontroller may program the wrong thing if
    driver tries to enable PSR.
    
    [How]
    If PSR_SET fails, do not set psr_enable flag to indicate the feature is
    not yet initialized.
    
    Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdc340f5a710472d046fe928de2e144a06daa05e
Author: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
Date:   Mon May 28 21:09:20 2018 -0400

    media: helene: fix xtal frequency setting at power on
    
    [ Upstream commit a00e5f074b3f3cd39d1ccdc53d4d805b014df3f3 ]
    
    This patch fixes crystal frequency setting when power on this device.
    
    Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
    Acked-by: Abylay Ospan <aospan@netup.ru>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18f4b79efb408de8a995783bed859d721c477ab3
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Date:   Thu Jul 26 18:36:57 2018 -0400

    media: rcar-csi2: update stream start for V3M
    
    [ Upstream commit 4070fc9ade52f7d0ad1397fe74f564ae95e68a4f ]
    
    Latest errata document updates the start procedure for V3M. This change
    in addition to adhering to the datasheet update fixes capture on early
    revisions of V3M.
    
    Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e681be2362e80e8c66ef9d1113ce32e3e5bf3e45
Author: Mauricio Faria de Oliveira <mfo@canonical.com>
Date:   Wed Jul 25 22:46:28 2018 -0300

    partitions/aix: fix usage of uninitialized lv_info and lvname structures
    
    [ Upstream commit 14cb2c8a6c5dae57ee3e2da10fa3db2b9087e39e ]
    
    The if-block that sets a successful return value in aix_partition()
    uses 'lvip[].pps_per_lv' and 'n[].name' potentially uninitialized.
    
    For example, if 'numlvs' is zero or alloc_lvn() fails, neither is
    initialized, but are used anyway if alloc_pvd() succeeds after it.
    
    So, make the alloc_pvd() call conditional on their initialization.
    
    This has been hit when attaching an apparently corrupted/stressed
    AIX LUN, misleading the kernel to pr_warn() invalid data and hang.
    
        [...] partition (null) (11 pp's found) is not contiguous
        [...] partition (null) (2 pp's found) is not contiguous
        [...] partition (null) (3 pp's found) is not contiguous
        [...] partition (null) (64 pp's found) is not contiguous
    
    Fixes: 6ceea22bbbc8 ("partitions: add aix lvm partition support files")
    Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06a557d12a90a9e697d41e763f5a274d25909818
Author: Mauricio Faria de Oliveira <mfo@canonical.com>
Date:   Wed Jul 25 22:46:29 2018 -0300

    partitions/aix: append null character to print data from disk
    
    [ Upstream commit d43fdae7bac2def8c4314b5a49822cb7f08a45f1 ]
    
    Even if properly initialized, the lvname array (i.e., strings)
    is read from disk, and might contain corrupt data (e.g., lack
    the null terminating character for strings).
    
    So, make sure the partition name string used in pr_warn() has
    the null terminating character.
    
    Fixes: 6ceea22bbbc8 ("partitions: add aix lvm partition support files")
    Suggested-by: Daniel J. Axtens <daniel.axtens@canonical.com>
    Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c57525ab6f778897f78ba8f1c12004970ed703a8
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Tue Jun 5 09:33:59 2018 -0400

    media: s5p-mfc: Fix buffer look up in s5p_mfc_handle_frame_{new, copy_time} functions
    
    [ Upstream commit 4faeaf9c0f4581667ce5826f9c90c4fd463ef086 ]
    
    Look up of buffers in s5p_mfc_handle_frame_new, s5p_mfc_handle_frame_copy_time
    functions is not working properly for DMA addresses above 2 GiB. As a result
    flags and timestamp of returned buffers are not set correctly and it breaks
    operation of GStreamer/OMX plugins which rely on the CAPTURE buffer queue
    flags.
    
    Due to improper return type of the get_dec_y_adr, get_dspl_y_adr callbacks
    and sign bit extension these callbacks return incorrect address values,
    e.g. 0xfffffffffefc0000 instead of 0x00000000fefc0000. Then the statement:
    
    "if (vb2_dma_contig_plane_dma_addr(&dst_buf->b->vb2_buf, 0) == dec_y_addr)"
    
    is always false, which breaks looking up capture queue buffers.
    
    To ensure proper matching by address u32 type is used for the DMA
    addresses. This should work on all related SoCs, since the MFC DMA
    address width is not larger than 32-bit.
    
    Changes done in this patch are minimal as there is a larger patch series
    pending refactoring the whole driver.
    
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f6592445cbe2e1031d14bcbdfce8778d509b4ca
Author: Nick Dyer <nick.dyer@itdev.co.uk>
Date:   Fri Jul 27 11:44:20 2018 -0700

    Input: atmel_mxt_ts - only use first T9 instance
    
    [ Upstream commit 36f5d9ef26e52edff046b4b097855db89bf0cd4a ]
    
    The driver only registers one input device, which uses the screen
    parameters from the first T9 instance. The first T63 instance also uses
    those parameters.
    
    It is incorrect to send input reports from the second instances of these
    objects if they are enabled: the input scaling will be wrong and the
    positions will be mashed together.
    
    This also causes problems on Android if the number of slots exceeds 32.
    
    In the future, this could be handled by looking for enabled touch object
    instances and creating an input device for each one.
    
    Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
    Acked-by: Benson Leung <bleung@chromium.org>
    Acked-by: Yufeng Shen <miletus@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5864b9e06e17e0cb7a307fa66fdf6f6f34093e1f
Author: John Pittman <jpittman@redhat.com>
Date:   Thu Jun 21 17:35:33 2018 -0400

    dm cache: only allow a single io_mode cache feature to be requested
    
    [ Upstream commit af9313c32c0fa2a0ac3b113669273833d60cc9de ]
    
    More than one io_mode feature can be requested when creating a dm cache
    device (as is: last one wins).  The io_mode selections are incompatible
    with one another, we should force them to be selected exclusively.  Add
    a counter to check for more than one io_mode selection.
    
    Fixes: 629d0a8a1a10 ("dm cache metadata: add "metadata2" feature")
    Signed-off-by: John Pittman <jpittman@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24983c8101c93efae2062d6adf69333bc2686bad
Author: Petr Machata <petrm@mellanox.com>
Date:   Fri Jul 27 15:26:55 2018 +0300

    net: dcb: For wild-card lookups, use priority -1, not 0
    
    [ Upstream commit 08193d1a893c802c4b807e4d522865061f4e9f4f ]
    
    The function dcb_app_lookup walks the list of specified DCB APP entries,
    looking for one that matches a given criteria: ifindex, selector,
    protocol ID and optionally also priority. The "don't care" value for
    priority is set to 0, because that priority has not been allowed under
    CEE regime, which predates the IEEE standardization.
    
    Under IEEE, 0 is a valid priority number. But because dcb_app_lookup
    considers zero a wild card, attempts to add an APP entry with priority 0
    fail when other entries exist for a given ifindex / selector / PID
    triplet.
    
    Fix by changing the wild-card value to -1.
    
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e66813955581f2aa0aff076c12ac4313ab99c020
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jul 10 16:40:34 2018 +0100

    thermal_hwmon: Sanitize attribute name passed to hwmon
    
    [ Upstream commit 409ef0bacacf72c51cc876349ae3fdf7cf726d47 ]
    
    My Chromebook Plus (kevin) is spitting the following at boot time:
    
    (NULL device *): hwmon: 'sbs-9-000b' is not a valid name attribute, please fix
    
    Clearly, __hwmon_device_register is unhappy about the property name.
    Some investigation reveals that thermal_add_hwmon_sysfs doesn't
    sanitize the name of the attribute.
    
    In order to keep it quiet, let's replace '-' with '_' in hwmon->type
    This is consistent with what iio-hwmon does since b92fe9e3379c8.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cc36414d8158e68d3bcb56f0ce2396152eac848
Author: Simon Horman <horms+renesas@verge.net.au>
Date:   Tue Jul 24 13:14:13 2018 +0200

    thermal: rcar_thermal: avoid NULL dereference in absence of IRQ resources
    
    [ Upstream commit 542cdf4068049458e1411b120bd5a4bbe3ddc49a ]
    
    Ensure that the base address used by a call to rcar_thermal_common_write()
    may be NULL if the SOC supports interrupts for use with the thermal device
    but none are defined in DT as is the case for R-Car H1 (r8a7779). Guard
    against this condition to prevent a NULL dereference when the device is
    probed.
    
    Tested on:
    * R-Mobile APE6 (r8a73a4) / APE6EVM
    * R-Car H1 (r8a7779) / Marzen
    * R-Car H2 (r8a7790) / Lager
    * R-Car M2-W (r8a7791) / Koelsch
    * R-Car M2-N (r8a7793) / Gose
    * R-Car D3 ES1.0 (r8a77995) / Draak
    
    Fixes: 1969d9dc2079 ("thermal: rcar_thermal: add r8a77995 support")
    Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 273234f22e95efba41e3da408493c58b7a231988
Author: Nicholas Mc Guire <hofrat@osadl.org>
Date:   Wed Jul 11 20:32:45 2018 +0200

    MIPS: generic: fix missing of_node_put()
    
    [ Upstream commit 28ec2238f37e72a3a40a7eb46893e7651bcc40a6 ]
    
    of_find_compatible_node() returns a device_node pointer with refcount
    incremented and must be decremented explicitly.
     As this code is using the result only to check presence of the interrupt
    controller (!NULL) but not actually using the result otherwise the
    refcount can be decremented here immediately again.
    
    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/19820/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9449bd8ff77057e2ebdec7686cfcea77d4de2fdb
Author: Nicholas Mc Guire <hofrat@osadl.org>
Date:   Sat Jun 16 09:06:33 2018 +0200

    MIPS: Octeon: add missing of_node_put()
    
    [ Upstream commit b1259519e618d479ede8a0db5474b3aff99f5056 ]
    
    The call to of_find_node_by_name returns a node pointer with refcount
    incremented thus it must be explicitly decremented here after the last
    usage.
    
    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/19558/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 235fd393825b8b79d962eb2f9a2d6aa454eb17a5
Author: Chao Yu <yuchao0@huawei.com>
Date:   Sat Jun 30 18:13:40 2018 +0800

    f2fs: fix to do sanity check with reserved blkaddr of inline inode
    
    [ Upstream commit 4dbe38dc386910c668c75ae616b99b823b59f3eb ]
    
    As Wen Xu reported in bugzilla, after image was injected with random data
    by fuzzing, inline inode would contain invalid reserved blkaddr, then
    during inline conversion, we will encounter illegal memory accessing
    reported by KASAN, the root cause of this is when writing out converted
    inline page, we will use invalid reserved blkaddr to update sit bitmap,
    result in accessing memory beyond sit bitmap boundary.
    
    In order to fix this issue, let's do sanity check with reserved block
    address of inline inode to avoid above condition.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=200179
    
    [ 1428.846352] BUG: KASAN: use-after-free in update_sit_entry+0x80/0x7f0
    [ 1428.846618] Read of size 4 at addr ffff880194483540 by task a.out/2741
    
    [ 1428.846855] CPU: 0 PID: 2741 Comm: a.out Tainted: G        W         4.17.0+ #1
    [ 1428.846858] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    [ 1428.846860] Call Trace:
    [ 1428.846868]  dump_stack+0x71/0xab
    [ 1428.846875]  print_address_description+0x6b/0x290
    [ 1428.846881]  kasan_report+0x28e/0x390
    [ 1428.846888]  ? update_sit_entry+0x80/0x7f0
    [ 1428.846898]  update_sit_entry+0x80/0x7f0
    [ 1428.846906]  f2fs_allocate_data_block+0x6db/0xc70
    [ 1428.846914]  ? f2fs_get_node_info+0x14f/0x590
    [ 1428.846920]  do_write_page+0xc8/0x150
    [ 1428.846928]  f2fs_outplace_write_data+0xfe/0x210
    [ 1428.846935]  ? f2fs_do_write_node_page+0x170/0x170
    [ 1428.846941]  ? radix_tree_tag_clear+0xff/0x130
    [ 1428.846946]  ? __mod_node_page_state+0x22/0xa0
    [ 1428.846951]  ? inc_zone_page_state+0x54/0x100
    [ 1428.846956]  ? __test_set_page_writeback+0x336/0x5d0
    [ 1428.846964]  f2fs_convert_inline_page+0x407/0x6d0
    [ 1428.846971]  ? f2fs_read_inline_data+0x3b0/0x3b0
    [ 1428.846978]  ? __get_node_page+0x335/0x6b0
    [ 1428.846987]  f2fs_convert_inline_inode+0x41b/0x500
    [ 1428.846994]  ? f2fs_convert_inline_page+0x6d0/0x6d0
    [ 1428.847000]  ? kasan_unpoison_shadow+0x31/0x40
    [ 1428.847005]  ? kasan_kmalloc+0xa6/0xd0
    [ 1428.847024]  f2fs_file_mmap+0x79/0xc0
    [ 1428.847029]  mmap_region+0x58b/0x880
    [ 1428.847037]  ? arch_get_unmapped_area+0x370/0x370
    [ 1428.847042]  do_mmap+0x55b/0x7a0
    [ 1428.847048]  vm_mmap_pgoff+0x16f/0x1c0
    [ 1428.847055]  ? vma_is_stack_for_current+0x50/0x50
    [ 1428.847062]  ? __fsnotify_update_child_dentry_flags.part.1+0x160/0x160
    [ 1428.847068]  ? do_sys_open+0x206/0x2a0
    [ 1428.847073]  ? __fget+0xb4/0x100
    [ 1428.847079]  ksys_mmap_pgoff+0x278/0x360
    [ 1428.847085]  ? find_mergeable_anon_vma+0x50/0x50
    [ 1428.847091]  do_syscall_64+0x73/0x160
    [ 1428.847098]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 1428.847102] RIP: 0033:0x7fb1430766ba
    [ 1428.847103] Code: 89 f5 41 54 49 89 fc 55 53 74 35 49 63 e8 48 63 da 4d 89 f9 49 89 e8 4d 63 d6 48 89 da 4c 89 ee 4c 89 e7 b8 09 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 56 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 00
    [ 1428.847162] RSP: 002b:00007ffc651d9388 EFLAGS: 00000246 ORIG_RAX: 0000000000000009
    [ 1428.847167] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fb1430766ba
    [ 1428.847170] RDX: 0000000000000001 RSI: 0000000000001000 RDI: 0000000000000000
    [ 1428.847173] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000000000
    [ 1428.847176] R10: 0000000000008002 R11: 0000000000000246 R12: 0000000000000000
    [ 1428.847179] R13: 0000000000001000 R14: 0000000000008002 R15: 0000000000000000
    
    [ 1428.847252] Allocated by task 2683:
    [ 1428.847372]  kasan_kmalloc+0xa6/0xd0
    [ 1428.847380]  kmem_cache_alloc+0xc8/0x1e0
    [ 1428.847385]  getname_flags+0x73/0x2b0
    [ 1428.847390]  user_path_at_empty+0x1d/0x40
    [ 1428.847395]  vfs_statx+0xc1/0x150
    [ 1428.847401]  __do_sys_newlstat+0x7e/0xd0
    [ 1428.847405]  do_syscall_64+0x73/0x160
    [ 1428.847411]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [ 1428.847466] Freed by task 2683:
    [ 1428.847566]  __kasan_slab_free+0x137/0x190
    [ 1428.847571]  kmem_cache_free+0x85/0x1e0
    [ 1428.847575]  filename_lookup+0x191/0x280
    [ 1428.847580]  vfs_statx+0xc1/0x150
    [ 1428.847585]  __do_sys_newlstat+0x7e/0xd0
    [ 1428.847590]  do_syscall_64+0x73/0x160
    [ 1428.847596]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [ 1428.847648] The buggy address belongs to the object at ffff880194483300
                    which belongs to the cache names_cache of size 4096
    [ 1428.847946] The buggy address is located 576 bytes inside of
                    4096-byte region [ffff880194483300, ffff880194484300)
    [ 1428.848234] The buggy address belongs to the page:
    [ 1428.848366] page:ffffea0006512000 count:1 mapcount:0 mapping:ffff8801f3586380 index:0x0 compound_mapcount: 0
    [ 1428.848606] flags: 0x17fff8000008100(slab|head)
    [ 1428.848737] raw: 017fff8000008100 dead000000000100 dead000000000200 ffff8801f3586380
    [ 1428.848931] raw: 0000000000000000 0000000000070007 00000001ffffffff 0000000000000000
    [ 1428.849122] page dumped because: kasan: bad access detected
    
    [ 1428.849305] Memory state around the buggy address:
    [ 1428.849436]  ffff880194483400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 1428.849620]  ffff880194483480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 1428.849804] >ffff880194483500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 1428.849985]                                            ^
    [ 1428.850120]  ffff880194483580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 1428.850303]  ffff880194483600: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [ 1428.850498] ==================================================================
    
    Reported-by: Wen Xu <wen.xu@gatech.edu>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d44e0ddb577dcae51e11e725c19d17d65dad87e5
Author: Peter Rosin <peda@axentia.se>
Date:   Wed Jun 20 07:17:54 2018 +0200

    tpm/tpm_i2c_infineon: switch to i2c_lock_bus(..., I2C_LOCK_SEGMENT)
    
    [ Upstream commit bb853aac2c478ce78116128263801189408ad2a8 ]
    
    Locking the root adapter for __i2c_transfer will deadlock if the
    device sits behind a mux-locked I2C mux. Switch to the finer-grained
    i2c_lock_bus with the I2C_LOCK_SEGMENT flag. If the device does not
    sit behind a mux-locked mux, the two locking variants are equivalent.
    
    Signed-off-by: Peter Rosin <peda@axentia.se>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d229e7ecc0cb29996688f0fa98c5eb6128b81e3a
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Fri Jun 8 09:09:07 2018 +0200

    tpm_tis_spi: Pass the SPI IRQ down to the driver
    
    [ Upstream commit 1a339b658d9dbe1471f67b78237cf8fa08bbbeb5 ]
    
    An SPI TPM device managed directly on an embedded board using
    the SPI bus and some GPIO or similar line as IRQ handler will
    pass the IRQn from the TPM device associated with the SPI
    device. This is already handled by the SPI core, so make sure
    to pass this down to the core as well.
    
    (The TPM core habit of using -1 to signal no IRQ is dubious
    (as IRQ 0 is NO_IRQ) but I do not want to mess with that
    semantic in this patch.)
    
    Cc: Mark Brown <broonie@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f268d9812581596c1e6a8fd64134ab259b35247
Author: Chao Yu <yuchao0@huawei.com>
Date:   Wed Jul 4 21:20:05 2018 +0800

    f2fs: fix to skip GC if type in SSA and SIT is inconsistent
    
    [ Upstream commit 10d255c3540239c7920f52d2eb223756e186af56 ]
    
    If segment type in SSA and SIT is inconsistent, we will encounter below
    BUG_ON during GC, to avoid this panic, let's just skip doing GC on such
    segment.
    
    The bug is triggered with image reported in below link:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=200223
    
    [  388.060262] ------------[ cut here ]------------
    [  388.060268] kernel BUG at /home/y00370721/git/devf2fs/gc.c:989!
    [  388.061172] invalid opcode: 0000 [#1] SMP
    [  388.061773] Modules linked in: f2fs(O) bluetooth ecdh_generic xt_tcpudp iptable_filter ip_tables x_tables lp ttm drm_kms_helper drm intel_rapl sb_edac crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel fb_sys_fops ppdev aes_x86_64 syscopyarea crypto_simd sysfillrect parport_pc joydev sysimgblt glue_helper parport cryptd i2c_piix4 serio_raw mac_hid btrfs hid_generic usbhid hid raid6_pq psmouse pata_acpi floppy
    [  388.064247] CPU: 7 PID: 4151 Comm: f2fs_gc-7:0 Tainted: G           O    4.13.0-rc1+ #26
    [  388.065306] Hardware name: Xen HVM domU, BIOS 4.1.2_115-900.260_ 11/06/2015
    [  388.066058] task: ffff880201583b80 task.stack: ffffc90004d7c000
    [  388.069948] RIP: 0010:do_garbage_collect+0xcc8/0xcd0 [f2fs]
    [  388.070766] RSP: 0018:ffffc90004d7fc68 EFLAGS: 00010202
    [  388.071783] RAX: ffff8801ed227000 RBX: 0000000000000001 RCX: ffffea0007b489c0
    [  388.072700] RDX: ffff880000000000 RSI: 0000000000000001 RDI: ffffea0007b489c0
    [  388.073607] RBP: ffffc90004d7fd58 R08: 0000000000000003 R09: ffffea0007b489dc
    [  388.074619] R10: 0000000000000000 R11: 0052782ab317138d R12: 0000000000000018
    [  388.075625] R13: 0000000000000018 R14: ffff880211ceb000 R15: ffff880211ceb000
    [  388.076687] FS:  0000000000000000(0000) GS:ffff880214fc0000(0000) knlGS:0000000000000000
    [  388.083277] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  388.084536] CR2: 0000000000e18c60 CR3: 00000001ecf2e000 CR4: 00000000001406e0
    [  388.085748] Call Trace:
    [  388.086690]  ? find_next_bit+0xb/0x10
    [  388.088091]  f2fs_gc+0x1a8/0x9d0 [f2fs]
    [  388.088888]  ? lock_timer_base+0x7d/0xa0
    [  388.090213]  ? try_to_del_timer_sync+0x44/0x60
    [  388.091698]  gc_thread_func+0x342/0x4b0 [f2fs]
    [  388.092892]  ? wait_woken+0x80/0x80
    [  388.094098]  kthread+0x109/0x140
    [  388.095010]  ? f2fs_gc+0x9d0/0x9d0 [f2fs]
    [  388.096043]  ? kthread_park+0x60/0x60
    [  388.097281]  ret_from_fork+0x25/0x30
    [  388.098401] Code: ff ff 48 83 e8 01 48 89 44 24 58 e9 27 f8 ff ff 48 83 e8 01 e9 78 fc ff ff 48 8d 78 ff e9 17 fb ff ff 48 83 ef 01 e9 4d f4 ff ff <0f> 0b 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55
    [  388.100864] RIP: do_garbage_collect+0xcc8/0xcd0 [f2fs] RSP: ffffc90004d7fc68
    [  388.101810] ---[ end trace 81c73d6e6b7da61d ]---
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cf9708981e7810cd7b1e4c46ac09685120bfbad
Author: Jinbum Park <jinb.park7@gmail.com>
Date:   Sat Jul 28 13:20:44 2018 +0900

    pktcdvd: Fix possible Spectre-v1 for pkt_devs
    
    [ Upstream commit 55690c07b44a82cc3359ce0c233f4ba7d80ba145 ]
    
    User controls @dev_minor which to be used as index of pkt_devs.
    So, It can be exploited via Spectre-like attack. (speculative execution)
    
    This kind of attack leaks address of pkt_devs, [1]
    It leads an attacker to bypass security mechanism such as KASLR.
    
    So sanitize @dev_minor before using it to prevent attack.
    
    [1] https://github.com/jinb-park/linux-exploit/
    tree/master/exploit-remaining-spectre-gadget/leak_pkt_devs.c
    
    Signed-off-by: Jinbum Park <jinb.park7@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf5cde3c685bec12de368379cbe8ecfaa32ff9d3
Author: Chao Yu <yuchao0@huawei.com>
Date:   Wed Jul 4 18:04:10 2018 +0800

    f2fs: try grabbing node page lock aggressively in sync scenario
    
    [ Upstream commit 4b270a8cc5047682f0a3f3f9af3b498408dbd2bc ]
    
    In synchronous scenario, like in checkpoint(), we are going to flush
    dirty node pages to device synchronously, we can easily failed
    writebacking node page due to trylock_page() failure, especially in
    condition of intensive lock competition, which can cause long latency
    of checkpoint(). So let's use lock_page() in synchronous scenario to
    avoid this issue.
    
    Signed-off-by: Yunlei He <heyunlei@huawei.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b493d05c0402c80ef7f77216cd26f9997bdaeb8c
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Wed Jul 18 18:10:51 2018 +0200

    net: mvneta: fix mtu change on port without link
    
    [ Upstream commit 8466baf788ec3e18836bd9c91ba0b1a07af25878 ]
    
    It is incorrect to enable TX/RX queues (call by mvneta_port_up()) for
    port without link. Indeed MTU change for interface without link causes TX
    queues to stuck.
    
    Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP
    network unit")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    [gregory.clement: adding Fixes tags and rewording commit log]
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d35bf0a213ece1eb45f7892b0935773094034512
Author: Daniel Kurtz <djkurtz@chromium.org>
Date:   Mon Jul 16 18:57:18 2018 -0600

    pinctrl/amd: only handle irq if it is pending and unmasked
    
    [ Upstream commit 8bbed1eef001fdfc0ee9595f64cc4f769d265af4 ]
    
    The AMD pinctrl driver demultiplexes GPIO interrupts and fires off their
    individual handlers.
    
    If one of these GPIO irqs is configured as a level interrupt, and its
    downstream handler is a threaded ONESHOT interrupt, the GPIO interrupt
    source is masked by handle_level_irq() until the eventual return of the
    threaded irq handler.  During this time the level GPIO interrupt status
    will still report as high until the actual gpio source is cleared - both
    in the individual GPIO interrupt status bit (INTERRUPT_STS_OFF) and in
    its corresponding "WAKE_INT_STATUS_REG" bit.
    
    Thus, if another GPIO interrupt occurs during this time,
    amd_gpio_irq_handler() will see that the (masked-and-not-yet-cleared)
    level irq is still pending and incorrectly call its handler again.
    
    To fix this, have amd_gpio_irq_handler() check for both interrupts status
    and mask before calling generic_handle_irq().
    
    Note: Is it possible that this bug was the source of the interrupt storm
    on Ryzen when using chained interrupts before commit ba714a9c1dea85
    ("pinctrl/amd: Use regular interrupt instead of chained")?
    
    Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d288d8163c975e414690abe80fd0f4c966b04980
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Mon Jul 23 19:53:30 2018 +0300

    gpio: ml-ioh: Fix buffer underwrite on probe error path
    
    [ Upstream commit 4bf4eed44bfe288f459496eaf38089502ef91a79 ]
    
    If ioh_gpio_probe() fails on devm_irq_alloc_descs() then chip may point
    to any element of chip_save array, so reverse iteration from pointer chip
    may become chip_save[-1] and gpiochip_remove() will operate with wrong
    memory.
    
    The patch fix the error path of ioh_gpio_probe() to correctly bypass
    chip_save array.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b9ceea29ad2d028b9ea11c979fb3ecbdfeb2766
Author: Daniel Mack <daniel@zonque.org>
Date:   Fri Jul 13 18:15:38 2018 +0200

    gpio: pxa: disable pinctrl calls for PXA3xx
    
    [ Upstream commit 9dabfdd84bdfa25f0df486dd3de43e53e79a1892 ]
    
    The pxa3xx driver uses the pinctrl-single driver since a while which
    does not implement a .gpio_set_direction() callback. The pinmux core
    will simply return 0 in this case, and the pxa3xx gpio driver hence
    believes the pinctrl driver did its job and returns as well.
    
    This effectively makes pxa_gpio_direction_{input,output} no-ops.
    
    To fix this, do not call into the pinctrl subsystem for the PXA3xx
    platform for now. We can revert this once the pinctrl-single driver
    learned to support setting pin directions.
    
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6871146498a7ab8d1470a01f28b4efe334935d57
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jul 19 11:16:48 2018 +0300

    pinctrl: imx: off by one in imx_pinconf_group_dbg_show()
    
    [ Upstream commit b4859f3edb47825f62d1b2efdd75fe7945996f49 ]
    
    The > should really be >= here.  It's harmless because
    pinctrl_generic_get_group() will return a NULL if group is invalid.
    
    Fixes: ae75ff814538 ("pinctrl: pinctrl-imx: add imx pinctrl core driver")
    Reported-by: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d8c6300d1585e7f97f2b0e371659e5a5c0bc510
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Fri Jul 27 16:59:29 2018 +0300

    regulator: tps65217: Fix NULL pointer dereference on probe
    
    [ Upstream commit 4f919ca2bf6da826ba1a4316e1b8e9c94e5dbeb2 ]
    
    There is no check that tps->strobes is allocated successfully in
    tps65217_regulator_probe().
    The patch adds corresponding check.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d268eaecd3d352addefddacc3f1854257d6af5c
Author: Joerg Roedel <jroedel@suse.de>
Date:   Wed Jul 25 17:48:01 2018 +0200

    x86/mm: Remove in_nmi() warning from vmalloc_fault()
    
    [ Upstream commit 6863ea0cda8725072522cd78bda332d9a0b73150 ]
    
    It is perfectly okay to take page-faults, especially on the
    vmalloc area while executing an NMI handler. Remove the
    warning.
    
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: David H. Gutteridge <dhgutteridge@sympatico.ca>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: linux-mm@kvack.org
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Waiman Long <llong@redhat.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: joro@8bytes.org
    Link: https://lkml.kernel.org/r/1532533683-5988-2-git-send-email-joro@8bytes.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73941b28bcdd0ec7ac39cc702867f9e7aef20f72
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Mon Jul 30 13:57:41 2018 +0200

    Bluetooth: hidp: Fix handling of strncpy for hid->name information
    
    [ Upstream commit b3cadaa485f0c20add1644a5c877b0765b285c0c ]
    
    This fixes two issues with setting hid->name information.
    
      CC      net/bluetooth/hidp/core.o
    In function ‘hidp_setup_hid’,
        inlined from ‘hidp_session_dev_init’ at net/bluetooth/hidp/core.c:815:9,
        inlined from ‘hidp_session_new’ at net/bluetooth/hidp/core.c:953:8,
        inlined from ‘hidp_connection_add’ at net/bluetooth/hidp/core.c:1366:8:
    net/bluetooth/hidp/core.c:778:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
      strncpy(hid->name, req->name, sizeof(req->name) - 1);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
      CC      net/bluetooth/hidp/core.o
    net/bluetooth/hidp/core.c: In function ‘hidp_setup_hid’:
    net/bluetooth/hidp/core.c:778:38: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
      strncpy(hid->name, req->name, sizeof(req->name));
                                          ^
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc00dc4ccf8bf18ed839db6925893b8d8f67c93e
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Jul 20 00:33:16 2018 +1000

    powerpc/mm: Don't report PUDs as memory leaks when using kmemleak
    
    [ Upstream commit a984506c542e26b31cbb446438f8439fa2253b2e ]
    
    Paul Menzel reported that kmemleak was producing reports such as:
    
      unreferenced object 0xc0000000f8b80000 (size 16384):
        comm "init", pid 1, jiffies 4294937416 (age 312.240s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<00000000d997deb7>] __pud_alloc+0x80/0x190
          [<0000000087f2e8a3>] move_page_tables+0xbac/0xdc0
          [<00000000091e51c2>] shift_arg_pages+0xc0/0x210
          [<00000000ab88670c>] setup_arg_pages+0x22c/0x2a0
          [<0000000060871529>] load_elf_binary+0x41c/0x1648
          [<00000000ecd9d2d4>] search_binary_handler.part.11+0xbc/0x280
          [<0000000034e0cdd7>] __do_execve_file.isra.13+0x73c/0x940
          [<000000005f953a6e>] sys_execve+0x58/0x70
          [<000000009700a858>] system_call+0x5c/0x70
    
    Indicating that a PUD was being leaked.
    
    However what's really happening is that kmemleak is not able to
    recognise the references from the PGD to the PUD, because they are not
    fully qualified pointers.
    
    We can confirm that in xmon, eg:
    
    Find the task struct for pid 1 "init":
      0:mon> P
           task_struct     ->thread.ksp    PID   PPID S  P CMD
      c0000001fe7c0000 c0000001fe803960      1      0 S 13 systemd
    
    Dump virtual address 0 to find the PGD:
      0:mon> dv 0 c0000001fe7c0000
      pgd  @ 0xc0000000f8b01000
    
    Dump the memory of the PGD:
      0:mon> d c0000000f8b01000
      c0000000f8b01000 00000000f8b90000 0000000000000000  |................|
      c0000000f8b01010 0000000000000000 0000000000000000  |................|
      c0000000f8b01020 0000000000000000 0000000000000000  |................|
      c0000000f8b01030 0000000000000000 00000000f8b80000  |................|
                                        ^^^^^^^^^^^^^^^^
    
    There we can see the reference to our supposedly leaked PUD. But
    because it's missing the leading 0xc, kmemleak won't recognise it.
    
    We can confirm it's still in use by translating an address that is
    mapped via it:
      0:mon> dv 7fff94000000 c0000001fe7c0000
      pgd  @ 0xc0000000f8b01000
      pgdp @ 0xc0000000f8b01038 = 0x00000000f8b80000 <--
      pudp @ 0xc0000000f8b81ff8 = 0x00000000037c4000
      pmdp @ 0xc0000000037c5ca0 = 0x00000000fbd89000
      ptep @ 0xc0000000fbd89000 = 0xc0800001d5ce0386
      Maps physical address = 0x00000001d5ce0000
      Flags = Accessed Dirty Read Write
    
    The fix is fairly simple. We need to tell kmemleak to ignore PUD
    allocations and never report them as leaks. We can also tell it not to
    scan the PGD, because it will never find pointers in there. However it
    will still notice if we allocate a PGD and then leak it.
    
    Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Tested-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81a4ff2429e7223ebb0cd3ec78ca5da51de9edef
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Mon Jul 30 13:24:12 2018 +0100

    PCI: mobiveil: Fix struct mobiveil_pcie.pcie_reg_base address type
    
    [ Upstream commit af3f606e0bbb6d811c50b7b90fe324b07fb7cab8 ]
    
    The field pcie_reg_base in struct mobiveil_pcie represents a physical
    address so it should be of phys_addr_t type rather than void __iomem*;
    this results in the following compilation  warnings:
    
    drivers/pci/controller/pcie-mobiveil.c: In function
    'mobiveil_pcie_parse_dt':
    drivers/pci/controller/pcie-mobiveil.c:326:22: warning: assignment makes
    pointer from integer without a cast [-Wint-conversion]
      pcie->pcie_reg_base = res->start;
                          ^
    drivers/pci/controller/pcie-mobiveil.c: In function
    'mobiveil_pcie_enable_msi':
    drivers/pci/controller/pcie-mobiveil.c:485:25: warning: initialization
    makes integer from pointer without a cast [-Wint-conversion]
      phys_addr_t msg_addr = pcie->pcie_reg_base;
                             ^~~~
    drivers/pci/controller/pcie-mobiveil.c: In function
    'mobiveil_compose_msi_msg':
    drivers/pci/controller/pcie-mobiveil.c:640:21: warning: initialization
    makes integer from pointer without a cast [-Wint-conversion]
      phys_addr_t addr = pcie->pcie_reg_base + (data->hwirq * sizeof(int));
    
    Fix the type and with it the compilation warnings.
    
    Fixes: 9af6bcb11e12 ("PCI: mobiveil: Add Mobiveil PCIe Host Bridge IP
    driver")
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Subrahmanya Lingappa <l.subrahmanya@mobiveil.co.in>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94ee251c1ed436e4e09d6ea0598f3b643635f45a
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Mon Jul 30 13:24:33 2018 +0100

    PCI: mobiveil: Add missing ../pci.h include
    
    [ Upstream commit d3743012230f8dab30d47caba1f2ee9e382385e7 ]
    
    PCI mobiveil host controller driver currently fails to compile
    with the following error:
    
    drivers/pci/controller/pcie-mobiveil.c: In function
    'mobiveil_pcie_probe':
    drivers/pci/controller/pcie-mobiveil.c:788:8: error: implicit
    declaration of function 'devm_of_pci_get_host_bridge_resources'; did you
    mean 'pci_get_host_bridge_device'?
    [-Werror=implicit-function-declaration]
      ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            pci_get_host_bridge_device
    
    Add the missing include file to pull in the required function declaration.
    
    Fixes: 9af6bcb11e12 ("PCI: mobiveil: Add Mobiveil PCIe Host Bridge IP
    driver")
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Subrahmanya Lingappa <l.subrahmanya@mobiveil.co.in>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f1e9c39a6a795742121a179fd28b8c46cb1112e
Author: Robert Schlabbach <Robert.Schlabbach@gmx.net>
Date:   Sat Jun 16 15:04:22 2018 -0400

    media: em28xx: explicitly disable TS packet filter
    
    [ Upstream commit 157eb9a0b75e97ad390c6e50c7381b0a0e02fe97 ]
    
    The em28xx driver never touched the EM2874 register bits that control
    the transport stream packet filters, leaving them at whatever default
    the firmware has set. E.g. the Pinnacle 290e disables them by default,
    while the Hauppauge WinTV dualHD enables discarding NULL packets by
    default.
    
    However, some applications require NULL packets, e.g. to determine the
    load in DOCSIS segments, so discarding NULL packets is undesired for
    such applications.
    
    This patch simply extends the bit mask when starting or stopping the
    transport stream packet capture, so that the filter bits are cleared.
    It has been verified that this makes the Hauppauge WinTV dualHD pass
    an unfiltered DVB-C stream including NULL packets, which it didn't
    before.
    
    Signed-off-by: Robert Schlabbach <Robert.Schlabbach@gmx.net>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddd0ae7f02d4b7795c5e214d624564387d9281ad
Author: Surabhi Vishnoi <svishnoi@codeaurora.org>
Date:   Wed Jul 25 10:59:41 2018 +0300

    ath10k: disable bundle mgmt tx completion event support
    
    [ Upstream commit 673bc519c55843c68c3aecff71a4101e79d28d2b ]
    
    The tx completion of multiple mgmt frames can be bundled
    in a single event and sent by the firmware to host, if this
    capability is not disabled explicitly by the host. If the host
    cannot handle the bundled mgmt tx completion, this capability
    support needs to be disabled in the wmi init cmd, sent to the firmware.
    
    Add the host capability indication flag in the wmi ready command,
    to let firmware know the features supported by the host driver.
    This field is ignored if it is not supported by firmware.
    
    Set the host capability indication flag(i.e. host_capab) to zero,
    for disabling the support of bundle mgmt tx completion. This will
    indicate the firmware to send completion event for every mgmt tx
    completion, instead of bundling them together and sending in a single
    event.
    
    Tested HW: WCN3990
    Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1
    
    Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org>
    Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bf7bf9931ad77bfa30d55bd0a7d3bcc58735cb8
Author: Huaisheng Ye <yehs1@lenovo.com>
Date:   Mon Jul 30 15:15:45 2018 +0800

    tools/testing/nvdimm: kaddr and pfn can be NULL to ->direct_access()
    
    [ Upstream commit 45df5d3dc0c7289c1e67afe6d2ba806ad5174314 ]
    
    The mock / test version of pmem_direct_access() needs to check the
    validity of pointers kaddr and pfn for NULL assignment. If anyone
    equals to NULL, it doesn't need to calculate the value.
    
    If pointer equals to NULL, that is to say callers may have no need for
    kaddr or pfn, so this patch is prepared for allowing them to pass in
    NULL instead of having to pass in a local pointer or variable that
    they then just throw away.
    
    Suggested-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
    Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83d9430bd43bb868d2960f8e327062fad3dd0897
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Fri Jul 27 16:51:57 2018 +0300

    scsi: 3ware: fix return 0 on the error path of probe
    
    [ Upstream commit 4dc98c1995482262e70e83ef029135247fafe0f2 ]
    
    tw_probe() returns 0 in case of fail of tw_initialize_device_extension(),
    pci_resource_start() or tw_reset_sequence() and releases resources.
    twl_probe() returns 0 in case of fail of twl_initialize_device_extension(),
    pci_iomap() and twl_reset_sequence().  twa_probe() returns 0 in case of
    fail of tw_initialize_device_extension(), ioremap() and
    twa_reset_sequence().
    
    The patch adds retval initialization for these cases.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Acked-by: Adam Radford <aradford@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a964871cceab521aaf5a95ba9c544a77a0476ed
Author: Calum Mackay <calum.mackay@oracle.com>
Date:   Thu Jul 5 17:08:08 2018 +0100

    nfs: Referrals not inheriting proto setting from parent
    
    [ Upstream commit 23a88ade7131aa259c532ab17685c76de562242b ]
    
    Commit 530ea4219231 ("nfs: Referrals should use the same proto setting
    as their parent") encloses the fix with #ifdef CONFIG_SUNRPC_XPRT_RDMA.
    
    CONFIG_SUNRPC_XPRT_RDMA is a tristate option, so it should be tested
    with #if IS_ENABLED().
    
    Fixes: 530ea4219231 ("nfs: Referrals should use the same proto setting as their parent")
    Reported-by: Helen Chao <helen.chao@oracle.com>
    Tested-by: Helen Chao <helen.chao@oracle.com>
    Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
    Reviewed-by: Bill Baker <bill.baker@oracle.com>
    Signed-off-by: Calum Mackay <calum.mackay@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c8b7991f40d9aa48e405b1f7ebfc918d7fb2bb1
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Mon Jul 2 12:01:53 2018 -0700

    ata: libahci: Correct setting of DEVSLP register
    
    [ Upstream commit 2dbb3ec29a6c069035857a2fc4c24e80e5dfe3cc ]
    
    We have seen that on some platforms, SATA device never show any DEVSLP
    residency. This prevent power gating of SATA IP, which prevent system
    to transition to low power mode in systems with SLP_S0 aka modern
    standby systems. The PHY logic is off only in DEVSLP not in slumber.
    Reference:
    https://www.intel.com/content/dam/www/public/us/en/documents/datasheets
    /332995-skylake-i-o-platform-datasheet-volume-1.pdf
    Section 28.7.6.1
    
    Here driver is trying to do read-modify-write the devslp register. But
    not resetting the bits for which this driver will modify values (DITO,
    MDAT and DETO). So simply reset those bits before updating to new values.
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d12d3336fe95a12d042b446f1eda86a575ec4f3a
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Mon Jul 2 12:01:54 2018 -0700

    ata: libahci: Allow reconfigure of DEVSLP register
    
    [ Upstream commit 11c291461b6ea8d1195a96d6bba6673a94aacebc ]
    
    There are two modes in which DEVSLP can be entered. The OS initiated or
    hardware autonomous.
    
    In hardware autonomous mode, BIOS configures the AHCI controller and the
    device to enable DEVSLP. But they may not be ideal for all cases. So in
    this case, OS should be able to reconfigure DEVSLP register.
    
    Currently if the DEVSLP is already enabled, we can't set again as it will
    simply return. There are some systems where the firmware is setting high
    DITO by default, in this case we can't modify here to correct settings.
    With the default in several seconds, we are not able to transition to
    DEVSLP.
    
    This change will allow reconfiguration of devslp register if DITO is
    different.
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0f09f787d388d1f7e370b205d791822b6eb3f82
Author: Paul Burton <paul.burton@mips.com>
Date:   Fri Jul 27 18:23:19 2018 -0700

    MIPS: Fix ISA virt/bus conversion for non-zero PHYS_OFFSET
    
    [ Upstream commit 0494d7ffdcebc6935410ea0719b24ab626675351 ]
    
    isa_virt_to_bus() & isa_bus_to_virt() claim to treat ISA bus addresses
    as being identical to physical addresses, but they fail to do so in the
    presence of a non-zero PHYS_OFFSET.
    
    Correct this by having them use virt_to_phys() & phys_to_virt(), which
    consolidates the calculations to one place & ensures that ISA bus
    addresses do indeed match physical addresses.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/20047/
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: Vladimir Kondratiev <vladimir.kondratiev@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2916355cbc9ccae92ce5ca608c72d70965aa6b14
Author: Mike Christie <mchristi@redhat.com>
Date:   Mon Jul 23 14:07:49 2018 -0500

    scsi: tcmu: do not set max_blocks if data_bitmap has been setup
    
    [ Upstream commit c97840c84f5a4362a596a2751e9245a979377a16 ]
    
    This patch prevents a bug where data_bitmap is allocated in
    tcmu_configure_device, userspace changes the max_blocks setting, the device
    is mapped to a LUN, then we try to access the data_bitmap based on the new
    max_blocks limit which may now be out of range.
    
    To prevent this, we just check if data_bitmap has been setup. If it has
    then we fail the max_blocks update operation.
    
    Signed-off-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: Xiubo Li <xiubli@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15ce90b8346fe3ebc66604007fc393ce3d71bc0f
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Thu Jul 19 00:09:12 2018 +0200

    mtd: rawnand: make subop helpers return unsigned values
    
    [ Upstream commit 760c435e0f85ed19e48a90d746ce1de2cd02def7 ]
    
    A report from Colin Ian King pointed a CoverityScan issue where error
    values on these helpers where not checked in the drivers. These
    helpers can error out only in case of a software bug in driver code,
    not because of a runtime/hardware error. Hence, let's WARN_ON() in this
    case and return 0 which is harmless anyway.
    
    Fixes: 8878b126df76 ("mtd: nand: add ->exec_op() implementation")
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5d9ae0077a5cf336d298002959dc0c8dcfe7b89
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Fri Jun 15 10:59:39 2018 +0100

    rpmsg: core: add support to power domains for devices
    
    [ Upstream commit fe782affd0f440a4e60e2cc81b8f2eccb2923113 ]
    
    Some of the rpmsg devices need to switch on power domains to communicate
    with remote processor. For example on Qualcomm DB820c platform LPASS
    power domain needs to switched on for any kind of audio services.
    This patch adds the missing power domain support in rpmsg core.
    
    Without this patch attempting to play audio via QDSP on DB820c would
    reboot the system.
    
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d397e7c9d663f46ea191870dbebd217a93e94b92
Author: Loic Poulain <loic.poulain@linaro.org>
Date:   Fri Jul 27 18:30:23 2018 +0200

    wlcore: Set rx_status boottime_ns field on rx
    
    [ Upstream commit 37a634f60fd6dfbda2c312657eec7ef0750546e7 ]
    
    When receiving a beacon or probe response, we should update the
    boottime_ns field which is the timestamp the frame was received at.
    (cf mac80211.h)
    
    This fixes a scanning issue with Android since it relies on this
    timestamp to determine when the AP has been seen for the last time
    (via the nl80211 BSS_LAST_SEEN_BOOTTIME parameter).
    
    Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b19c6e6985580749101c838efe05a13685250d7d
Author: Sven Eckelmann <sven.eckelmann@openmesh.com>
Date:   Thu Jul 26 15:59:48 2018 +0200

    ath10k: prevent active scans on potential unusable channels
    
    [ Upstream commit 3f259111583801013cb605bb4414aa529adccf1c ]
    
    The QCA4019 hw1.0 firmware 10.4-3.2.1-00050 and 10.4-3.5.3-00053 (and most
    likely all other) seem to ignore the WMI_CHAN_FLAG_DFS flag during the
    scan. This results in transmission (probe requests) on channels which are
    not "available" for transmissions.
    
    Since the firmware is closed source and nothing can be done from our side
    to fix the problem in it, the driver has to work around this problem. The
    WMI_CHAN_FLAG_PASSIVE seems to be interpreted by the firmware to not
    scan actively on a channel unless an AP was detected on it. Simple probe
    requests will then be transmitted by the STA on the channel.
    
    ath10k must therefore also use this flag when it queues a radar channel for
    scanning. This should reduce the chance of an active scan when the channel
    might be "unusable" for transmissions.
    
    Fixes: e8a50f8ba44b ("ath10k: introduce DFS implementation")
    Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23aa633d564bbe200ad4b1a3086286edc17e9545
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Jul 30 21:31:28 2018 +0300

    ath9k_hw: fix channel maximum power level test
    
    [ Upstream commit 461d8a6bb9879b0e619752d040292e67aa06f1d2 ]
    
    The tx power applied by set_txpower is limited by the CTL (conformance
    test limit) entries in the EEPROM. These can change based on the user
    configured regulatory domain.
    Depending on the EEPROM data this can cause the tx power to become too
    limited, if the original regdomain CTLs impose lower limits than the CTLs
    of the user configured regdomain.
    
    To fix this issue, set the initial channel limits without any CTL
    restrictions and only apply the CTL at run time when setting the channel
    and the real tx power.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce5127257d99bd68b359c2543259969f4942e2a7
Author: Felix Fietkau <nbd@nbd.name>
Date:   Mon Jul 30 21:31:23 2018 +0300

    ath9k: report tx status on EOSP
    
    [ Upstream commit 36e14a787dd0b459760de3622e9709edb745a6af ]
    
    Fixes missed indications of end of U-APSD service period to mac80211
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e83b3b9c60ead04f326cdb0ccb5ed1d28909659
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Jul 31 09:32:54 2018 +0200

    perf build: Fix installation directory for eBPF
    
    [ Upstream commit 83868bf71d2eb7700b37f1ea188007f0125e4ee4 ]
    
    The perf tool build and install is controlled via a Makefile. The
    'install' rule creates directories and copies files. Among them are
    header files installed in /usr/lib/include/perf/bpf/.
    
    However all listed examples are installing its header files in
    
      /usr/lib/<tool-name>/...[/include]/header.h
    
    and not in
    
      /usr/lib/include/<tool-name>/.../header.h.
    
    Background information:
    
    Building the Fedora 28 glibc RPM on s390x and s390 fails on s390 (gcc
    -m31) as gcc is not able to find header-files like stdbool.h.
    
    In the glibc.spec file, you can see that glibc is configured with
    "--with-headers". In this case, first -nostdinc is added to the CFLAGS
    and then further include paths are added via -isystem.  One of those
    paths should contain header files like stdbool.h.
    
    In order to get this path, gcc is invoked with:
    
    - on Fedora 28 (with 4.18 kernel):
    
      $ gcc -print-file-name=include
      /usr/lib/gcc/s390x-redhat-linux/8/include
      $ gcc -m31 -print-file-name=include
      /usr/lib/gcc/s390x-redhat-linux/8/../../../../lib/include
      => If perf is installed, this is: /usr/lib/include
      On my machine this directory is only containing the directory "perf".
      If perf is not installed gcc returns: /usr/lib/gcc/s390x-redhat-linux/8/include
    
    - on Ubuntu 18.04 (with 4.15 kernel):
    
      $ gcc  -print-file-name=include
      /usr/lib/gcc/s390x-linux-gnu/7/include
      $ gcc -m31 -print-file-name=include
      /usr/lib/gcc/s390x-linux-gnu/7/include
      => gcc returns the correct path even if perf is installed.
    
    In each case, the introduction of the subdirectory /usr/lib/include
    leads to the regression that one can not build the glibc RPM for s390
    anymore as gcc can not find headers like stdbool.h.
    
    To remedy this install bpf.h to /usr/lib/perf/include/bpf/bpf.h
    
    Output before using the command 'perf test -Fv 40':
    
      echo '...[bpf-program-source]...' | /usr/bin/clang ... \
                       -I/root/lib/include/perf/bpf ...
                                   ^^^^^^^^^^^^
    ...
      [root@p23lp27 perf]# perf test -F 40
      40: BPF filter                                            :
      40.1: Basic BPF filtering                                 : Ok
      40.2: BPF pinning                                         : Ok
      40.3: BPF prologue generation                             : Ok
      40.4: BPF relocation checker                              : Ok
      [root@p23lp27 perf]#
    
    Output after using command 'perf test -Fv 40':
    
      echo '...[bpf-program-source]...' | /usr/bin/clang ... \
                     -I/root/lib/perf/include/bpf ...
                                 ^^^^^^^^^^^^
    ...
      [root@p23lp27 perf]# perf test -F 40
      40: BPF filter                                            :
      40.1: Basic BPF filtering                                 : Ok
      40.2: BPF pinning                                         : Ok
      40.3: BPF prologue generation                             : Ok
      40.4: BPF relocation checker                              : Ok
      [root@p23lp27 perf]#
    
    Committer testing:
    
    While the above 'perf test -F 40' (or 'perf test bpf') will allow us
    to see that the correct path is now added via -I, to actually test this
    we better try to use a bpf script that includes files in the changed
    directory.
    
    We have the files that now reside in /root/lib/perf/examples/bpf/ to do
    just that:
    
      # tail -8 /root/lib/perf/examples/bpf/5sec.c
      #include <bpf.h>
    
      int probe(hrtimer_nanosleep, rqtp->tv_sec)(void *ctx, int err, long sec)
      {
              return sec == 5;
      }
    
      license(GPL);
      # perf trace -e *sleep -e /root/lib/perf/examples/bpf/5sec.c sleep 4
           0.333 (4000.086 ms): sleep/9248 nanosleep(rqtp: 0x7ffc155f3300) = 0
      # perf trace -e *sleep -e /root/lib/perf/examples/bpf/5sec.c sleep 5
           0.287 (         ): sleep/9659 nanosleep(rqtp: 0x7ffeafe38200) ...
           0.290 (         ): perf_bpf_probe:hrtimer_nanosleep:(ffffffff9911efe0) tv_sec=5
           0.287 (5000.059 ms): sleep/9659  ... [continued]: nanosleep()) = 0
      # perf trace -e *sleep -e /root/lib/perf/examples/bpf/5sec.c sleep 6
           0.247 (5999.951 ms): sleep/10068 nanosleep(rqtp: 0x7fff2086d900) = 0
      # perf trace -e *sleep -e /root/lib/perf/examples/bpf/5sec.c sleep 5.987
           0.293 (         ): sleep/10489 nanosleep(rqtp: 0x7ffdd4fc10e0) ...
           0.296 (         ): perf_bpf_probe:hrtimer_nanosleep:(ffffffff9911efe0) tv_sec=5
           0.293 (5986.912 ms): sleep/10489  ... [continued]: nanosleep()) = 0
      #
    
    Suggested-by: Stefan Liebler <stli@linux.ibm.com>
    Suggested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Fixes: 1b16fffa389d ("perf llvm-utils: Add bpf include path to clang command line")
    Link: http://lkml.kernel.org/r/20180731073254.91090-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e01f7c77ce21e8a58ab11b5312de4f63d0c94610
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Mon Jul 2 04:21:18 2018 -0400

    macintosh/via-pmu: Add missing mmio accessors
    
    [ Upstream commit 576d5290d678a651b9f36050fc1717e0573aca13 ]
    
    Add missing in_8() accessors to init_pmu() and pmu_sr_intr().
    
    This fixes several sparse warnings:
    drivers/macintosh/via-pmu.c:536:29: warning: dereference of noderef expression
    drivers/macintosh/via-pmu.c:537:33: warning: dereference of noderef expression
    drivers/macintosh/via-pmu.c:1455:17: warning: dereference of noderef expression
    drivers/macintosh/via-pmu.c:1456:69: warning: dereference of noderef expression
    
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14335f6beb3f83ab28f87bf3e2ddcd0eab99f19c
Author: Sam Bobroff <sbobroff@linux.ibm.com>
Date:   Mon Jul 30 11:59:14 2018 +1000

    powerpc/pseries: fix EEH recovery of some IOV devices
    
    [ Upstream commit b87b9cf4935325c98522823caeddd333022a1c62 ]
    
    EEH recovery currently fails on pSeries for some IOV capable PCI
    devices, if CONFIG_PCI_IOV is on and the hypervisor doesn't provide
    certain device tree properties for the device. (Found on an IOV
    capable device using the ipr driver.)
    
    Recovery fails in pci_enable_resources() at the check on r->parent,
    because r->flags is set and r->parent is not.  This state is due to
    sriov_init() setting the start, end and flags members of the IOV BARs
    but the parent not being set later in
    pseries_pci_fixup_iov_resources(), because the
    "ibm,open-sriov-vf-bar-info" property is missing.
    
    Correct this by zeroing the resource flags for IOV BARs when they
    can't be configured (this is the same method used by sriov_init() and
    __pci_read_base()).
    
    VFs cleared this way can't be enabled later, because that requires
    another device tree property, "ibm,number-of-configurable-vfs" as well
    as support for the RTAS function "ibm_map_pes". These are all part of
    hypervisor support for IOV and it seems unlikely that a hypervisor
    would ever partially, but not fully, support it. (None are currently
    provided by QEMU/KVM.)
    
    Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Reviewed-by: Bryant G. Ly <bryantly@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8551bc50c57d914511f75cca73fd0676dd11f8f
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Mon Jul 9 07:15:22 2018 -0700

    perf evlist: Fix error out while applying initial delay and LBR
    
    [ Upstream commit 95035c5e167ae6e740b1ddd30210ae0eaf39a5db ]
    
    'perf record' will error out if both --delay and LBR are applied.
    
    For example:
    
      # perf record -D 1000 -a -e cycles -j any -- sleep 2
      Error:
      dummy:HG: PMU Hardware doesn't support sampling/overflow-interrupts.
      Try 'perf stat'
      #
    
    A dummy event is added implicitly for initial delay, which has the same
    configurations as real sampling events. The dummy event is a software
    event. If LBR is configured, perf must error out.
    
    The dummy event will only be used to track PERF_RECORD_MMAP while perf
    waits for the initial delay to enable the real events. The BRANCH_STACK
    bit can be safely cleared for the dummy event.
    
    After applying the patch:
    
      # perf record -D 1000 -a -e cycles -j any -- sleep 2
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 1.054 MB perf.data (828 samples) ]
      #
    
    Reported-by: Sunil K Pandey <sunil.k.pandey@intel.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1531145722-16404-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96e8b14b1f42b6530154646588827d9db4e60786
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Tue Jul 24 08:20:08 2018 +0200

    perf c2c report: Fix crash for empty browser
    
    [ Upstream commit 73978332572ccf5e364c31e9a70ba953f8202b46 ]
    
    'perf c2c' scans read/write accesses and tries to find false sharing
    cases, so when the events it wants were not asked for or ended up not
    taking place, we get no histograms.
    
    So do not try to display entry details if there's not any. Currently
    this ends up in crash:
    
      $ perf c2c report # then press 'd'
      perf: Segmentation fault
      $
    
    Committer testing:
    
    Before:
    
    Record a perf.data file without events of interest to 'perf c2c report',
    then call it and press 'd':
    
      # perf record sleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.001 MB perf.data (6 samples) ]
      # perf c2c report
      perf: Segmentation fault
      -------- backtrace --------
      perf[0x5b1d2a]
      /lib64/libc.so.6(+0x346df)[0x7fcb566e36df]
      perf[0x46fcae]
      perf[0x4a9f1e]
      perf[0x4aa220]
      perf(main+0x301)[0x42c561]
      /lib64/libc.so.6(__libc_start_main+0xe9)[0x7fcb566cff29]
      perf(_start+0x29)[0x42c999]
      #
    
    After the patch the segfault doesn't take place, a follow up patch to
    tell the user why nothing changes when 'd' is pressed would be good.
    
    Reported-by: rodia@autistici.org
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Don Zickus <dzickus@redhat.com>
    Cc: Joe Mario <jmario@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: f1c5fd4d0bb9 ("perf c2c report: Add TUI cacheline browser")
    Link: http://lkml.kernel.org/r/20180724062008.26126-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ce0566333dd191fe9fbd1a6870ae453d83c259e
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Thu Jul 26 16:04:47 2018 -0400

    NFSv4.0 fix client reference leak in callback
    
    [ Upstream commit 32cd3ee511f4e07ca25d71163b50e704808d22f4 ]
    
    If there is an error during processing of a callback message, it leads
    to refrence leak on the client structure and eventually an unclean
    superblock.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa405740d359b5e0ad3d6748ee0f187c3ad3162c
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date:   Tue Jul 31 15:32:46 2018 +0100

    device-dax: avoid hang on error before devm_memremap_pages()
    
    [ Upstream commit b7751410c180a05fdc21268f8661b1480169b0df ]
    
    dax_pmem_percpu_exit() waits for dax_pmem_percpu_release() to invoke the
    dax_pmem->cmp completion.  Unfortunately this approach to cleaning up
    the percpu_ref only works after devm_memremap_pages() was successful.
    
    If devm_add_action_or_reset() or devm_memremap_pages() fails,
    dax_pmem_percpu_release() is not invoked.  Therefore
    dax_pmem_percpu_exit() hangs waiting for the completion:
    
      rc = devm_add_action_or_reset(dev, dax_pmem_percpu_exit,
                                    &dax_pmem->ref);
      if (rc)
            return rc;
    
      dax_pmem->pgmap.ref = &dax_pmem->ref;
      addr = devm_memremap_pages(dev, &dax_pmem->pgmap);
    
    Avoid the hang by calling percpu_ref_exit() in the error paths instead
    of going through dax_pmem_percpu_exit().
    
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2d46f40bb92fc286d1a9fd8afdeb8b9bb8e07a2
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Sep 22 13:20:43 2017 +0200

    perf tools: Allow overriding MAX_NR_CPUS at compile time
    
    [ Upstream commit 21b8732eb4479b579bda9ee38e62b2c312c2a0e5 ]
    
    After update of kernel, the perf tool doesn't run anymore on my 32MB RAM
    powerpc board, but still runs on a 128MB RAM board:
    
      ~# strace perf
      execve("/usr/sbin/perf", ["perf"], [/* 12 vars */]) = -1 ENOMEM (Cannot allocate memory)
      --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
      +++ killed by SIGSEGV +++
      Segmentation fault
    
    objdump -x shows that .bss section has a huge size of 24Mbytes:
    
     27 .bss          016baca8  101cebb8  101cebb8  001cd988  2**3
    
    With especially the following objects having quite big size:
    
      10205f80 l     O .bss 00140000     runtime_cycles_stats
      10345f80 l     O .bss 00140000     runtime_stalled_cycles_front_stats
      10485f80 l     O .bss 00140000     runtime_stalled_cycles_back_stats
      105c5f80 l     O .bss 00140000     runtime_branches_stats
      10705f80 l     O .bss 00140000     runtime_cacherefs_stats
      10845f80 l     O .bss 00140000     runtime_l1_dcache_stats
      10985f80 l     O .bss 00140000     runtime_l1_icache_stats
      10ac5f80 l     O .bss 00140000     runtime_ll_cache_stats
      10c05f80 l     O .bss 00140000     runtime_itlb_cache_stats
      10d45f80 l     O .bss 00140000     runtime_dtlb_cache_stats
      10e85f80 l     O .bss 00140000     runtime_cycles_in_tx_stats
      10fc5f80 l     O .bss 00140000     runtime_transaction_stats
      11105f80 l     O .bss 00140000     runtime_elision_stats
      11245f80 l     O .bss 00140000     runtime_topdown_total_slots
      11385f80 l     O .bss 00140000     runtime_topdown_slots_retired
      114c5f80 l     O .bss 00140000     runtime_topdown_slots_issued
      11605f80 l     O .bss 00140000     runtime_topdown_fetch_bubbles
      11745f80 l     O .bss 00140000     runtime_topdown_recovery_bubbles
    
    This is due to commit 4d255766d28b1 ("perf: Bump max number of cpus
    to 1024"), because many tables are sized with MAX_NR_CPUS
    
    This patch gives the opportunity to redefine MAX_NR_CPUS via
    
      $ make EXTRA_CFLAGS=-DMAX_NR_CPUS=1
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/20170922112043.8349468C57@po15668-vm-win7.idsi0.si.c-s.fr
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 528000132554d593f8a748a65f83df2f851666a4
Author: Akshu Agrawal <akshu.agrawal@amd.com>
Date:   Wed Aug 1 15:37:33 2018 +0530

    ASoC: soc-pcm: Use delay set in component pointer function
    
    [ Upstream commit 9fb4c2bf130b922c77c16a8368732699799c40de ]
    
    Take into account the base delay set in pointer callback.
    
    There are cases where a pointer function populates
    runtime->delay, such as:
    ./sound/pci/hda/hda_controller.c
    ./sound/soc/intel/atom/sst-mfld-platform-pcm.c
    
    This delay was getting lost and was overwritten by delays
    from codec or cpu dai delay function if exposed.
    
    Now,
    Total delay = base delay + cpu_dai delay + codec_dai delay
    
    Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9590fe082ac4c24c8c77fe3a91b66a43855062e9
Author: Chao Yu <yuchao0@huawei.com>
Date:   Thu Jul 5 19:37:00 2018 +0800

    f2fs: fix to detect looped node chain correctly
    
    [ Upstream commit 82902c06bd17dbf6e8184299842ca5c68880970f ]
    
    Below dmesg was printed when testing generic/388 of fstest:
    
    F2FS-fs (zram1): find_fsync_dnodes: detect looped node chain, blkaddr:526615, next:526616
    F2FS-fs (zram1): Cannot recover all fsync data errno=-22
    F2FS-fs (zram1): Mounted with checkpoint version = 22300d0e
    F2FS-fs (zram1): find_fsync_dnodes: detect looped node chain, blkaddr:526615, next:526616
    F2FS-fs (zram1): Cannot recover all fsync data errno=-22
    
    The reason is that we initialize free_blocks with free blocks of
    filesystem, so if filesystem is full, free_blocks can be zero,
    below condition will be true, so that, it will fail recovery.
    
    if (++loop_cnt >= free_blocks ||
            blkaddr == next_blkaddr_of_node(page))
    
    To fix this issue, initialize free_blocks with correct value which
    includes over-privision blocks.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d2914dac2060f5a66c82019720212146400ef1d
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Jul 6 20:50:57 2018 -0700

    f2fs: fix defined but not used build warnings
    
    [ Upstream commit cb15d1e43db0a6341c1e26ac6a2c74e61b74f1aa ]
    
    Fix build warnings in f2fs when CONFIG_PROC_FS is not enabled
    by marking the unused functions as __maybe_unused.
    
    ../fs/f2fs/sysfs.c:519:12: warning: 'segment_info_seq_show' defined but not used [-Wunused-function]
    ../fs/f2fs/sysfs.c:546:12: warning: 'segment_bits_seq_show' defined but not used [-Wunused-function]
    ../fs/f2fs/sysfs.c:570:12: warning: 'iostat_info_seq_show' defined but not used [-Wunused-function]
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jaegeuk Kim <jaegeuk@kernel.org>
    Cc: Chao Yu <yuchao0@huawei.com>
    Cc: linux-f2fs-devel@lists.sourceforge.net
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86750bef4029807e04d4d9a4fb3ac98e474c01f4
Author: Yunlong Song <yunlong.song@huawei.com>
Date:   Thu Jul 19 20:58:15 2018 +0800

    f2fs: issue discard align to section in LFS mode
    
    [ Upstream commit ad6672bbc527727dc8968e8d92687f55ae928ce5 ]
    
    For the case when sbi->segs_per_sec > 1 with lfs mode, take
    section:segment = 5 for example, if the section prefree_map is
    ...previous section | current section (1 1 0 1 1) | next section...,
    then the start = x, end = x + 1, after start = start_segno +
    sbi->segs_per_sec, start = x + 5, then it will skip x + 3 and x + 4, but
    their bitmap is still set, which will cause duplicated
    f2fs_issue_discard of this same section in the next write_checkpoint:
    
    round 1: section bitmap : 1 1 1 1 1, all valid, prefree_map: 0 0 0 0 0
    then rm data block NO.2, block NO.2 becomes invalid, prefree_map: 0 0 1 0 0
    write_checkpoint: section bitmap: 1 1 0 1 1, prefree_map: 0 0 0 0 0,
    prefree of NO.2 is cleared, and no discard issued
    
    round 2: rm data block NO.0, NO.1, NO.3, NO.4
    all invalid, but prefree bit of NO.2 is set and cleared in round 1, then
    prefree_map: 1 1 0 1 1
    write_checkpoint: section bitmap: 0 0 0 0 0, prefree_map: 0 0 0 1 1, no
    valid blocks of this section, so discard issued, but this time prefree
    bit of NO.3 and NO.4 is skipped due to start = start_segno + sbi->segs_per_sec;
    
    round 3:
    write_checkpoint: section bitmap: 0 0 0 0 0, prefree_map: 0 0 0 1 1 ->
    0 0 0 0 0, no valid blocks of this section, so discard issued,
    this time prefree bit of NO.3 and NO.4 is cleared, but the discard of
    this section is sent again...
    
    To fix this problem, we can align the start and end value to section
    boundary for fstrim and real-time discard operation, and decide to issue
    discard only when the whole section is invalid, which can issue discard
    aligned to section size as much as possible and avoid redundant discard.
    
    Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14580e8d96554438df8ee00bed0e58a06da76033
Author: Daniel Rosenberg <drosen@google.com>
Date:   Mon Jul 9 20:32:42 2018 -0700

    f2fs: Keep alloc_valid_block_count in sync
    
    [ Upstream commit 36b877af7992893b6d1ddbe96971cab5ab9e50eb ]
    
    If we attempt to request more blocks than we have room for, we try to
    instead request as much as we can, however, alloc_valid_block_count
    is not decremented to match the new value, allowing it to drift higher
    until the next checkpoint. This always decrements it when the requested
    amount cannot be fulfilled.
    
    Signed-off-by: Daniel Rosenberg <drosen@google.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ab744266b20b73b9a90b19e07e72881deb0b867
Author: Yunlong Song <yunlong.song@huawei.com>
Date:   Thu Jul 12 23:09:26 2018 +0800

    f2fs: do not set free of current section
    
    [ Upstream commit 3611ce9911267cb93d364bd71ddea6821278d11f ]
    
    For the case when sbi->segs_per_sec > 1, take section:segment = 5 for
    example, if segment 1 is just used and allocate new segment 2, and the
    blocks of segment 1 is invalidated, at this time, the previous code will
    use __set_test_and_free to free the free_secmap and free_sections++,
    this is not correct since it is still a current section, so fix it.
    
    Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a83044805f93b5c5abf0d1d7771a851460f1c1f
Author: Chao Yu <yuchao0@huawei.com>
Date:   Fri Jul 27 18:15:14 2018 +0800

    f2fs: fix to active page in lru list for read path
    
    [ Upstream commit 82cf4f132e6d16dca6fc3bd955019246141bc645 ]
    
    If config CONFIG_F2FS_FAULT_INJECTION is on, for both read or write path
    we will call find_lock_page() to get the page, but for read path, it
    missed to passing FGP_ACCESSED to allocator to active the page in LRU
    list, result in being reclaimed in advance incorrectly, fix it.
    
    Reported-by: Xianrong Zhou <zhouxianrong@huawei.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b70fdc0ffc1457d799bf58647b05d198ac89be11
Author: Denis Drozdov <denisd@mellanox.com>
Date:   Sun Jul 29 11:42:28 2018 +0300

    IB/IPoIB: Set ah valid flag in multicast send flow
    
    [ Upstream commit 75da96067ade4e7854379ec2f7834f3497652b1a ]
    
    The change of ipoib_ah data structure with adding "valid" flag and
    checks of ah->valid in ipoib_start_xmit affected multicast packet flow.
    
    Since the multicast flow doesn't invoke path_rec_start, "ah->valid" flag
    remains unset, so that ipoib_start_xmit end up with neigh_refresh_path
    instead of sending the packet using neigh.
    
    "ah->valid" has to be set in multicast send flow. As a result IPoIB
    starts sending packets via neigh immediately and eliminates 60sec delay
    of neigh keep alive interval.
    
    The typical example of this issue are two sequential arpings:
    
    arping 11.134.208.9 -> got response (mcast_send)
    arping 11.134.208.9 -> no response  (ah->valid = 0)
    
    Fixes: fa9391dbad4b ("RDMA/ipoib: Update paths on CLIENT_REREG/SM_CHANGE events")
    Signed-off-by: Denis Drozdov <denisd@mellanox.com>
    Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
    Reviewed-by: Feras Daoud <ferasda@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17732e7759e824727108d7e12c48d319491e11e0
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Tue Mar 13 14:12:40 2018 +0200

    iwlwifi: pcie: don't access periphery registers when not available
    
    [ Upstream commit f98ad635c097c29339b7a7d6947173000485893d ]
    
    The periphery can't be accessed before we set the
    INIT_DONE bit which initializes the device.
    
    A previous patch added a reconfiguration of the MSI-X
    tables upon resume, but at that point in the flow,
    INIT_DONE wasn't set. Since the reconfiguration of the
    MSI-X tables require periphery access, it failed.
    
    The difference between WoWLAN and without WoWLAN is that
    in WoWLAN, iwl_trans_pcie_d3_suspend clears the INIT_DONE
    without clearing the STATUS_DEVICE_ENABLED bit in the
    software status. Because of that, the resume code thinks
    that the device is enabled, but the INIT_DONE bit has been
    cleared.
    
    To fix this, don't reconfigure the MSI-X tables in case
    WoWLAN is enabled. It will be done in
    iwl_trans_pcie_d3_resume anyway.
    
    Fixes: 52848a79b9d2 ("iwlwifi: pcie: reconfigure MSI-X HW on resume")
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1354f0d718a1a98cd86273ddd7309ebefafc516
Author: Xiubo Li <xiubli@redhat.com>
Date:   Mon Jul 30 03:11:48 2018 -0400

    uio: fix possible circular locking dependency
    
    [ Upstream commit b34e9a15b37b8ddbf06a4da142b0c39c74211eb4 ]
    
    The call trace:
    XXX/1910 is trying to acquire lock:
     (&mm->mmap_sem){++++++}, at: [<ffffffff97008c87>] might_fault+0x57/0xb0
    
    but task is already holding lock:
     (&idev->info_lock){+.+...}, at: [<ffffffffc0638a06>] uio_write+0x46/0x130 [uio]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (&idev->info_lock){+.+...}:
           [<ffffffff96f31fc9>] lock_acquire+0x99/0x1e0
           [<ffffffff975edad3>] mutex_lock_nested+0x93/0x410
           [<ffffffffc063873d>] uio_mmap+0x2d/0x170 [uio]
           [<ffffffff97016b58>] mmap_region+0x428/0x650
           [<ffffffff97017138>] do_mmap+0x3b8/0x4e0
           [<ffffffff96ffaba3>] vm_mmap_pgoff+0xd3/0x120
           [<ffffffff97015261>] SyS_mmap_pgoff+0x1f1/0x270
           [<ffffffff96e387c2>] SyS_mmap+0x22/0x30
           [<ffffffff975ff315>] system_call_fastpath+0x1c/0x21
    
    -> #0 (&mm->mmap_sem){++++++}:
           [<ffffffff96f30e9c>] __lock_acquire+0xdac/0x15f0
           [<ffffffff96f31fc9>] lock_acquire+0x99/0x1e0
           [<ffffffff97008cb4>] might_fault+0x84/0xb0
           [<ffffffffc0638a74>] uio_write+0xb4/0x130 [uio]
           [<ffffffff9706ffa3>] vfs_write+0xc3/0x1f0
           [<ffffffff97070e2a>] SyS_write+0x8a/0x100
           [<ffffffff975ff315>] system_call_fastpath+0x1c/0x21
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
           CPU0                    CPU1
           ----                    ----
      lock(&idev->info_lock);
                                   lock(&mm->mmap_sem);
                                   lock(&idev->info_lock);
      lock(&mm->mmap_sem);
    
     *** DEADLOCK ***
    1 lock held by XXX/1910:
     #0:  (&idev->info_lock){+.+...}, at: [<ffffffffc0638a06>] uio_write+0x46/0x130 [uio]
    
    stack backtrace:
    CPU: 0 PID: 1910 Comm: XXX Kdump: loaded Not tainted #1
    Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/19/2017
    Call Trace:
     [<ffffffff975e9211>] dump_stack+0x19/0x1b
     [<ffffffff975e260a>] print_circular_bug+0x1f9/0x207
     [<ffffffff96f2f6a7>] check_prevs_add+0x957/0x960
     [<ffffffff96f30e9c>] __lock_acquire+0xdac/0x15f0
     [<ffffffff96f2fb19>] ? mark_held_locks+0xb9/0x140
     [<ffffffff96f31fc9>] lock_acquire+0x99/0x1e0
     [<ffffffff97008c87>] ? might_fault+0x57/0xb0
     [<ffffffff97008cb4>] might_fault+0x84/0xb0
     [<ffffffff97008c87>] ? might_fault+0x57/0xb0
     [<ffffffffc0638a74>] uio_write+0xb4/0x130 [uio]
     [<ffffffff9706ffa3>] vfs_write+0xc3/0x1f0
     [<ffffffff9709349c>] ? fget_light+0xfc/0x510
     [<ffffffff97070e2a>] SyS_write+0x8a/0x100
     [<ffffffff975ff315>] system_call_fastpath+0x1c/0x21
    
    Signed-off-by: Xiubo Li <xiubli@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40dc1eb129a528a7d9ae29c0c6b4c445af93badb
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Fri Jul 27 16:39:31 2018 +0300

    tty: rocket: Fix possible buffer overwrite on register_PCI
    
    [ Upstream commit 0419056ec8fd01ddf5460d2dba0491aad22657dd ]
    
    If number of isa and pci boards exceed NUM_BOARDS on the path
    rp_init()->init_PCI()->register_PCI() then buffer overwrite occurs
    in register_PCI() on assign rcktpt_io_addr[i].
    
    The patch adds check on upper bound for index of registered
    board in register_PCI.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e951163fb87c78005c567cc6e4788d48956b17bb
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Thu Aug 2 03:08:25 2018 +0000

    Drivers: hv: vmbus: Cleanup synic memory free path
    
    [ Upstream commit 572086325ce9a9e348b8748e830653f3959e88b6 ]
    
    clk_evt memory is not being freed when the synic is shutdown
    or when there is an allocation error.  Add the appropriate
    kfree() call, along with a comment to clarify how the memory
    gets freed after an allocation error.  Make the free path
    consistent by removing checks for NULL since kfree() and
    free_page() already do the check.
    
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15e5a96b1e1af3fcd7c722e2119365c9e18a79b0
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Tue Jul 24 18:10:38 2018 +0300

    firmware: vpd: Fix section enabled flag on vpd_section_destroy
    
    [ Upstream commit 45ca3f76de0507ecf143f770570af2942f263812 ]
    
    static struct ro_vpd and rw_vpd are initialized by vpd_sections_init()
    in vpd_probe() based on header's ro and rw sizes.
    In vpd_remove() vpd_section_destroy() performs deinitialization based
    on enabled flag, which is set to true by vpd_sections_init().
    This leads to call of vpd_section_destroy() on already destroyed section
    for probe-release-probe-release sequence if first probe performs
    ro_vpd initialization and second probe does not initialize it.
    
    The patch adds changing enabled flag on vpd_section_destroy and adds
    cleanup on the error path of vpd_sections_init.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 386b28c2de45db7b252836916779a2a0a45d3ab9
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 2 11:24:47 2018 +0300

    uio: potential double frees if __uio_register_device() fails
    
    [ Upstream commit f019f07ecf6a6b8bd6d7853bce70925d90af02d1 ]
    
    The uio_unregister_device() function assumes that if "info->uio_dev" is
    non-NULL that means "info" is fully allocated.  Setting info->uio_de
    has to be the last thing in the function.
    
    In the current code, if request_threaded_irq() fails then we return with
    info->uio_dev set to non-NULL but info is not fully allocated and it can
    lead to double frees.
    
    Fixes: beafc54c4e2f ("UIO: Add the User IO core code")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baec9ce83ad583a9a353d32d7089e0a54ed22aeb
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Fri Jul 27 18:45:36 2018 +0300

    misc: ti-st: Fix memory leak in the error path of probe()
    
    [ Upstream commit 81ae962d7f180c0092859440c82996cccb254976 ]
    
    Free resources instead of direct return of the error code if kim_probe
    fails.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fef1a4f376aa06098c4a2145549d9758f5ca432
Author: Philipp Zabel <p.zabel@pengutronix.de>
Date:   Thu Jun 21 21:13:38 2018 +0200

    gpu: ipu-v3: default to id 0 on missing OF alias
    
    [ Upstream commit 2d87e6c1b99c402360fdfe19ce4f579ab2f96adf ]
    
    This is better than storing -ENODEV in the id number. This fixes SoCs
    with only one IPU that don't specify an IPU alias in the device tree.
    
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bbd7344b42a3763e298e92a36b5246fafc101c7
Author: Todor Tomov <todor.tomov@linaro.org>
Date:   Wed Jul 25 12:38:20 2018 -0400

    media: camss: csid: Configure data type and decode format properly
    
    [ Upstream commit c628e78899ff8006b5f9d8206da54ed3bb994342 ]
    
    The CSID decodes the input data stream. When the input comes from
    the Test Generator the format of the stream is set on the source
    media pad. When the input comes from the CSIPHY the format is the
    one on the sink media pad. Use the proper format for each case.
    
    Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
    Signed-off-by: Hans Verkuil <hansverk@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3f70869623d5da84a21dbe8b0e13cbeac2b0f31
Author: Gaurav Kohli <gkohli@codeaurora.org>
Date:   Thu Aug 2 14:21:03 2018 +0530

    timers: Clear timer_base::must_forward_clk with timer_base::lock held
    
    [ Upstream commit 363e934d8811d799c88faffc5bfca782fd728334 ]
    
    timer_base::must_forward_clock is indicating that the base clock might be
    stale due to a long idle sleep.
    
    The forwarding of the base clock takes place in the timer softirq or when a
    timer is enqueued to a base which is idle. If the enqueue of timer to an
    idle base happens from a remote CPU, then the following race can happen:
    
      CPU0                                  CPU1
      run_timer_softirq                     mod_timer
    
                                            base = lock_timer_base(timer);
      base->must_forward_clk = false
                                            if (base->must_forward_clk)
                                                forward(base); -> skipped
    
                                            enqueue_timer(base, timer, idx);
                                            -> idx is calculated high due to
                                               stale base
                                            unlock_timer_base(timer);
      base = lock_timer_base(timer);
      forward(base);
    
    The root cause is that timer_base::must_forward_clk is cleared outside the
    timer_base::lock held region, so the remote queuing CPU observes it as
    cleared, but the base clock is still stale. This can cause large
    granularity values for timers, i.e. the accuracy of the expiry time
    suffers.
    
    Prevent this by clearing the flag with timer_base::lock held, so that the
    forwarding takes place before the cleared flag is observable by a remote
    CPU.
    
    Signed-off-by: Gaurav Kohli <gkohli@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: john.stultz@linaro.org
    Cc: sboyd@kernel.org
    Cc: linux-arm-msm@vger.kernel.org
    Link: https://lkml.kernel.org/r/1533199863-22748-1-git-send-email-gkohli@codeaurora.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a149d67afa965367fd9cc9c237047cbf8dd6adf
Author: BingJing Chang <bingjingc@synology.com>
Date:   Wed Aug 1 17:08:36 2018 +0800

    md/raid5: fix data corruption of replacements after originals dropped
    
    [ Upstream commit d63e2fc804c46e50eee825c5d3a7228e07048b47 ]
    
    During raid5 replacement, the stripes can be marked with R5_NeedReplace
    flag. Data can be read from being-replaced devices and written to
    replacing spares without reading all other devices. (It's 'replace'
    mode. s.replacing = 1) If a being-replaced device is dropped, the
    replacement progress will be interrupted and resumed with pure recovery
    mode. However, existing stripes before being interrupted cannot read
    from the dropped device anymore. It prints lots of WARN_ON messages.
    And it results in data corruption because existing stripes write
    problematic data into its replacement device and update the progress.
    
    \# Erase disks (1MB + 2GB)
    dd if=/dev/zero of=/dev/sda bs=1MB count=2049
    dd if=/dev/zero of=/dev/sdb bs=1MB count=2049
    dd if=/dev/zero of=/dev/sdc bs=1MB count=2049
    dd if=/dev/zero of=/dev/sdd bs=1MB count=2049
    mdadm -C /dev/md0 -amd -R -l5 -n3 -x0 /dev/sd[abc] -z 2097152
    \# Ensure array stores non-zero data
    dd if=/root/data_4GB.iso of=/dev/md0 bs=1MB
    \# Start replacement
    mdadm /dev/md0 -a /dev/sdd
    mdadm /dev/md0 --replace /dev/sda
    
    Then, Hot-plug out /dev/sda during recovery, and wait for recovery done.
    echo check > /sys/block/md0/md/sync_action
    cat /sys/block/md0/md/mismatch_cnt # it will be greater than 0.
    
    Soon after you hot-plug out /dev/sda, you will see many WARN_ON
    messages. The replacement recovery will be interrupted shortly. After
    the recovery finishes, it will result in data corruption.
    
    Actually, it's just an unhandled case of replacement. In commit
    <f94c0b6658c7> (md/raid5: fix interaction of 'replace' and 'recovery'.),
    if a NeedReplace device is not UPTODATE then that is an error, the
    commit just simply print WARN_ON but also mark these corrupted stripes
    with R5_WantReplace. (it means it's ready for writes.)
    
    To fix this case, we can leverage 'sync and replace' mode mentioned in
    commit <9a3e1101b827> (md/raid5: detect and handle replacements during
    recovery.). We can add logics to detect and use 'sync and replace' mode
    for these stripes.
    
    Reported-by: Alex Chen <alexchen@synology.com>
    Reviewed-by: Alex Wu <alexwu@synology.com>
    Reviewed-by: Chung-Chiang Cheng <cccheng@synology.com>
    Signed-off-by: BingJing Chang <bingjingc@synology.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b54ac5fd6d6ab04492b1fe15953169aa17ee8a59
Author: Mike Christie <mchristi@redhat.com>
Date:   Thu Aug 2 12:12:20 2018 -0500

    scsi: target: fix __transport_register_session locking
    
    [ Upstream commit 6a64f6e1591322beb8ce16e952a53582caf2a15c ]
    
    When __transport_register_session is called from transport_register_session
    irqs will already have been disabled, so we do not want the unlock irq call
    to enable them until the higher level has done the final
    spin_unlock_irqrestore/ spin_unlock_irq.
    
    This has __transport_register_session use the save/restore call.
    
    Signed-off-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9db9eb8c4e3049993ad01f8721084fc47cd28acc
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jul 31 17:23:21 2018 -0700

    scsi: lpfc: Fix driver crash when re-registering NVME rports.
    
    [ Upstream commit 93a3922da428ec0752e8b2ab00c42dadbbf805a9 ]
    
    During remote port loss fault testing, the driver crashed with the
    following trace:
    
    general protection fault: 0000 [#1] SMP
    RIP: ... lpfc_nvme_register_port+0x250/0x480 [lpfc]
    Call Trace:
     lpfc_nlp_state_cleanup+0x1b3/0x7a0 [lpfc]
     lpfc_nlp_set_state+0xa6/0x1d0 [lpfc]
     lpfc_cmpl_prli_prli_issue+0x213/0x440
     lpfc_disc_state_machine+0x7e/0x1e0 [lpfc]
     lpfc_cmpl_els_prli+0x18a/0x200 [lpfc]
     lpfc_sli_sp_handle_rspiocb+0x3b5/0x6f0 [lpfc]
     lpfc_sli_handle_slow_ring_event_s4+0x161/0x240 [lpfc]
     lpfc_work_done+0x948/0x14c0 [lpfc]
     lpfc_do_work+0x16f/0x180 [lpfc]
     kthread+0xc9/0xe0
     ret_from_fork+0x55/0x80
    
    After registering a new remoteport, the driver is pulling an ndlp pointer
    from the lpfc rport associated with the private area of a newly registered
    remoteport. The private area is uninitialized, so it's garbage.
    
    Correct by pulling the the lpfc rport pointer from the entering ndlp point,
    then ndlp value from at rport. Note the entering ndlp may be replacing by
    the rport->ndlp due to an address change swap.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abe0bde4dd8c2b6e92899fbad56c5360e56ec361
Author: Ming Lei <ming.lei@redhat.com>
Date:   Thu Aug 2 18:23:26 2018 +0800

    blk-mq: fix updating tags depth
    
    [ Upstream commit 75d6e175fc511e95ae3eb8f708680133bc211ed3 ]
    
    The passed 'nr' from userspace represents the total depth, meantime
    inside 'struct blk_mq_tags', 'nr_tags' stores the total tag depth,
    and 'nr_reserved_tags' stores the reserved part.
    
    There are two issues in blk_mq_tag_update_depth() now:
    
    1) for growing tags, we should have used the passed 'nr', and keep the
    number of reserved tags not changed.
    
    2) the passed 'nr' should have been used for checking against
    'tags->nr_tags', instead of number of the normal part.
    
    This patch fixes the above two cases, and avoids kernel crash caused
    by wrong resizing sbitmap queue.
    
    Cc: "Ewan D. Milne" <emilne@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Omar Sandoval <osandov@fb.com>
    Tested by: Marco Patalano <mpatalan@redhat.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a73a10b78563368aff0e8e864768a936129f6858
Author: Amit Daniel Kachhap <amit.kachhap@arm.com>
Date:   Tue Jul 31 11:25:55 2018 +0530

    clk: scmi: Fix the rounding of clock rate
    
    [ Upstream commit 7a8655e19bdb3be43f6a3b4768c9b0928a2585fc ]
    
    This fix rounds the clock rate properly by using quotient and not
    remainder in the calculation. This issue was found while testing HDMI
    in the Juno platform.
    
    Fixes: 6d6a1d82eaef7 ("clk: add support for clocks provided by SCMI")
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 846f4edf32b619429862b9566eb93cc2744ee84d
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Thu Aug 2 13:16:48 2018 -0700

    scsi: qla2xxx: Silent erroneous message
    
    [ Upstream commit 3f915271b12e11183c606bed1c3dfff0983662d3 ]
    
    Driver uses shadow pointer instead of Mirror pointer for firmware dump
    collection. Skip those entries for Mirror pointers for Request/Response
    queue from firmware dump template reading.
    
    Following messages are printed in log messages:
    
     qla27xx_fwdt_entry_t268: unknown buffer 4
     qla27xx_fwdt_entry_t268: unknown buffer 5
    
    This patch fixes these error messages by adding skip_entry() to not read
    them from template.
    
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e2b7c2c14f5e09b2770d8f12cf616e4a2d1a527
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Thu Aug 2 13:16:50 2018 -0700

    scsi: qla2xxx: Fix session state stuck in Get Port DB
    
    [ Upstream commit 8fde6977ac478c00eeb2beccfdd4a6ad44219f6c ]
    
    This patch sets discovery state back to GNL (Get Name List) when session is
    stuck at GPDB (Get Port DataBase). This will allow state machine to retry
    login and move session state ahead in discovery.
    
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 549f8519437953df986595b35f187232d75c8c6b
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Thu Aug 2 13:16:51 2018 -0700

    scsi: qla2xxx: Fix unintended Logout
    
    [ Upstream commit cb97f2c2e8d9f8c71ddbf04ad57e163ee6d86474 ]
    
    During normal IO, FW can return IO with 'port unavailble' status.  Driver
    would send a LOGO to remote port for session resync.  On an off chance, a
    PLOGI could arrive before sending the LOGO.  This patch will skip sendiing
    LOGO if a PLOGI just came in.
    
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8246055b5c6b6926dea69d3b62424a089ba0ef80
Author: Arun Parameswaran <arun.parameswaran@broadcom.com>
Date:   Wed Aug 1 17:53:47 2018 -0700

    net: phy: Fix the register offsets in Broadcom iProc mdio mux driver
    
    [ Upstream commit 77fefa93bfebe4df44f154f2aa5938e32630d0bf ]
    
    Modify the register offsets in the Broadcom iProc mdio mux to start
    from the top of the register address space.
    
    Earlier, the base address pointed to the end of the block's register
    space. The base address will now point to the start of the mdio's
    address space. The offsets have been fixed to match this.
    
    Signed-off-by: Arun Parameswaran <arun.parameswaran@broadcom.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e78e5a975500d9d1659d482b859a76e159f1a326
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Mon Jul 23 13:04:54 2018 -0400

    media: dw2102: Fix memleak on sequence of probes
    
    [ Upstream commit 299c7007e93645067e1d2743f4e50156de78c4ff ]
    
    Each call to dw2102_probe() allocates memory by kmemdup for structures
    p1100, s660, p7500 and s421, but there is no their deallocation.
    dvb_usb_device_init() copies the corresponding structure into
    dvb_usb_device->props, so there is no use of original structure after
    dvb_usb_device_init().
    
    The patch moves structures from global scope to local and adds their
    deallocation.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e88a48b70c3154969a55b2cf7e71e3fc1c74fa4d
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Fri Jul 27 07:52:20 2018 -0400

    media: davinci: vpif_display: Mix memory leak on probe error path
    
    [ Upstream commit 61e641f36ed81ae473177c085f0bfd83ad3b55ed ]
    
    If vpif_probe() fails on v4l2_device_register() then memory allocated
    at initialize_vpif() for global vpif_obj.dev[i] become unreleased.
    
    The patch adds deallocation of vpif_obj.dev[i] on the error path and
    removes duplicated check on platform_data presence.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3b51c11c836d770513dc9e5ddff75c1d3014426
Author: Roman Gushchin <guro@fb.com>
Date:   Thu Aug 2 15:47:10 2018 -0700

    selftests/bpf: fix a typo in map in map test
    
    [ Upstream commit 0069fb854364da79fd99236ea620affc8e1152d5 ]
    
    Commit fbeb1603bf4e ("bpf: verifier: MOV64 don't mark dst reg unbounded")
    revealed a typo in commit fb30d4b71214 ("bpf: Add tests for map-in-map"):
    BPF_MOV64_REG(BPF_REG_0, 0) was used instead of
    BPF_MOV64_IMM(BPF_REG_0, 0).
    
    I've noticed the problem by running bpf kselftests.
    
    Fixes: fb30d4b71214 ("bpf: Add tests for map-in-map")
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Arthur Fabre <afabre@cloudflare.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9feebab869cce6c88db2a31abba0564814e5395
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Jul 30 18:44:14 2018 -0700

    powerpc/4xx: Fix error return path in ppc4xx_msi_probe()
    
    [ Upstream commit 6e0495c2e8ac39b1aad0a4588fe64413ce9028c0 ]
    
    An arbitrary error in ppc4xx_msi_probe() quite likely results in a
    crash similar to the following, seen after dma_alloc_coherent()
    returned an error.
    
      Unable to handle kernel paging request for data at address 0x00000000
      Faulting instruction address: 0xc001bff0
      Oops: Kernel access of bad area, sig: 11 [#1]
      BE Canyonlands
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Tainted: G        W
      4.18.0-rc6-00010-gff33d1030a6c #1
      NIP:  c001bff0 LR: c001c418 CTR: c01faa7c
      REGS: cf82db40 TRAP: 0300   Tainted: G        W
      (4.18.0-rc6-00010-gff33d1030a6c)
      MSR:  00029000 <CE,EE,ME>  CR: 28002024  XER: 00000000
      DEAR: 00000000 ESR: 00000000
      GPR00: c001c418 cf82dbf0 cf828000 cf8de400 00000000 00000000 000000c4 000000c4
      GPR08: c0481ea4 00000000 00000000 000000c4 22002024 00000000 c00025e8 00000000
      GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 c0492380 0000004a
      GPR24: 00029000 0000000c 00000000 cf8de410 c0494d60 c0494d60 cf8bebc0 00000001
      NIP [c001bff0] ppc4xx_of_msi_remove+0x48/0xa0
      LR [c001c418] ppc4xx_msi_probe+0x294/0x3b8
      Call Trace:
      [cf82dbf0] [00029000] 0x29000 (unreliable)
      [cf82dc10] [c001c418] ppc4xx_msi_probe+0x294/0x3b8
      [cf82dc70] [c0209fbc] platform_drv_probe+0x40/0x9c
      [cf82dc90] [c0208240] driver_probe_device+0x2a8/0x350
      [cf82dcc0] [c0206204] bus_for_each_drv+0x60/0xac
      [cf82dcf0] [c0207e88] __device_attach+0xe8/0x160
      [cf82dd20] [c02071e0] bus_probe_device+0xa0/0xbc
      [cf82dd40] [c02050c8] device_add+0x404/0x5c4
      [cf82dd90] [c0288978] of_platform_device_create_pdata+0x88/0xd8
      [cf82ddb0] [c0288b70] of_platform_bus_create+0x134/0x220
      [cf82de10] [c0288bcc] of_platform_bus_create+0x190/0x220
      [cf82de70] [c0288cf4] of_platform_bus_probe+0x98/0xec
      [cf82de90] [c0449650] __machine_initcall_canyonlands_ppc460ex_device_probe+0x38/0x54
      [cf82dea0] [c0002404] do_one_initcall+0x40/0x188
      [cf82df00] [c043daec] kernel_init_freeable+0x130/0x1d0
      [cf82df30] [c0002600] kernel_init+0x18/0x104
      [cf82df40] [c000c23c] ret_from_kernel_thread+0x14/0x1c
      Instruction dump:
      90010024 813d0024 2f890000 83c30058 41bd0014 48000038 813d0024 7f89f800
      409d002c 813e000c 57ea103a 3bff0001 <7c69502e> 2f830000 419effe0 4803b26d
      ---[ end trace 8cf551077ecfc42a ]---
    
    Fix it up. Specifically,
    
    - Return valid error codes from ppc4xx_setup_pcieh_hw(), have it clean
      up after itself, and only access hardware after all possible error
      conditions have been handled.
    - Use devm_kzalloc() instead of kzalloc() in ppc4xx_msi_probe()
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35fa5df6c79a57b506b6a082348ace2e2195fd2c
Author: Reza Arbab <arbab@linux.ibm.com>
Date:   Thu Aug 2 23:03:36 2018 -0500

    powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage
    
    [ Upstream commit 9eab9901b015f489199105c470de1ffc337cfabb ]
    
    We've encountered a performance issue when multiple processors stress
    {get,put}_mmio_atsd_reg(). These functions contend for
    mmio_atsd_usage, an unsigned long used as a bitmask.
    
    The accesses to mmio_atsd_usage are done using test_and_set_bit_lock()
    and clear_bit_unlock(). As implemented, both of these will require
    a (successful) stwcx to that same cache line.
    
    What we end up with is thread A, attempting to unlock, being slowed by
    other threads repeatedly attempting to lock. A's stwcx instructions
    fail and retry because the memory reservation is lost every time a
    different thread beats it to the punch.
    
    There may be a long-term way to fix this at a larger scale, but for
    now resolve the immediate problem by gating our call to
    test_and_set_bit_lock() with one to test_bit(), which is obviously
    implemented without using a store.
    
    Fixes: 1ab66d1fbada ("powerpc/powernv: Introduce address translation services for Nvlink2")
    Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
    Acked-by: Alistair Popple <alistair@popple.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e3d17181c135df74384887ec9a749385698268c
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Thu Aug 2 14:11:44 2018 +0300

    gpio: tegra: Move driver registration to subsys_init level
    
    [ Upstream commit 40b25bce0adbe641a744d1291bc0e51fb7f3c3d8 ]
    
    There is a bug in regards to deferred probing within the drivers core
    that causes GPIO-driver to suspend after its users. The bug appears if
    GPIO-driver probe is getting deferred, which happens after introducing
    dependency on PINCTRL-driver for the GPIO-driver by defining "gpio-ranges"
    property in device-tree. The bug in the drivers core is old (more than 4
    years now) and is well known, unfortunately there is no easy fix for it.
    The good news is that we can workaround the deferred probe issue by
    changing GPIO / PINCTRL drivers registration order and hence by moving
    PINCTRL driver registration to the arch_init level and GPIO to the
    subsys_init.
    
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a5cbf5c84a141fdcf1db24424fa18273058790e
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Aug 1 13:10:49 2018 +0800

    pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state
    
    [ Upstream commit b5031b7db77dc47f474f0efc2b2552c32b7bb59d ]
    
    fixes following Smatch static check warning:
    
     drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
     warn: passing devm_ allocated variable to kfree. 'pctrl->functions'
    
    As we will be calling krealloc() on pointer 'pctrl->functions', which means
    kfree() will be called in there, devm_kzalloc() shouldn't be used with
    the allocation in the first place.  Fix the warning by calling kcalloc()
    and managing the free procedure in error path on our own.
    
    Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for Marvell Berlin SoCs")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 074f319a5c13a2b2db1c44d95a2b8afddf7cee6e
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Sat Aug 4 23:40:26 2018 +0300

    Bluetooth: h5: Fix missing dependency on BT_HCIUART_SERDEV
    
    [ Upstream commit 6c3711ec64fd23a9abc8aaf59a9429569a6282df ]
    
    This driver was recently updated to use serdev, so add the appropriate
    dependency. Without this one can get compiler warnings like this if
    CONFIG_SERIAL_DEV_BUS is not enabled:
    
      CC [M]  drivers/bluetooth/hci_h5.o
    drivers/bluetooth/hci_h5.c:934:36: warning: ‘h5_serdev_driver’ defined but not used [-Wunused-variable]
     static struct serdev_device_driver h5_serdev_driver = {
                                        ^~~~~~~~~~~~~~~~
    
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5167712831493b07f5fc7cc8d84ea34158b98659
Author: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Date:   Tue Jul 24 13:36:15 2018 -0700

    i2c: aspeed: Add an explicit type casting for *get_clk_reg_val
    
    [ Upstream commit 5799c4b2f1dbc0166d9b1d94443deaafc6e7a070 ]
    
    This commit fixes this sparse warning:
    drivers/i2c/busses/i2c-aspeed.c:875:38: warning: incorrect type in assignment (different modifiers)
    drivers/i2c/busses/i2c-aspeed.c:875:38:    expected unsigned int ( *get_clk_reg_val )( ... )
    drivers/i2c/busses/i2c-aspeed.c:875:38:    got void const *const data
    
    Reported-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
    Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6ab983acd1b2b017f78297bd376b8324cdd63b6
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Sat Aug 4 14:20:40 2018 -0700

    ethtool: Remove trailing semicolon for static inline
    
    [ Upstream commit d89d41556141a527030a15233135ba622ba3350d ]
    
    Android's header sanitization tool chokes on static inline functions having a
    trailing semicolon, leading to an incorrectly parsed header file. While the
    tool should obviously be fixed, also fix the header files for the two affected
    functions: ethtool_get_flow_spec_ring() and ethtool_get_flow_spec_ring_vf().
    
    Fixes: 8cf6f497de40 ("ethtool: Add helper routines to pass vf to rx_flow_spec")
    Reporetd-by: Blair Prescott <blair.prescott@broadcom.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0906eb972eeabfed2657d1d168ef673642977614
Author: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Date:   Sat Aug 4 11:44:44 2018 -0500

    ALSA: hda/realtek - Add mute LED quirk for HP Spectre x360
    
    [ Upstream commit 56e40eb6d656194e55ce2012fee9d5a496270aaa ]
    
    This device has the same issues as the HP x360 wrt the MUTE LED and
    the front speakers not working. This patch fixes the MUTE LED issue,
    but doesn't touch the HDA verbs. The fix for the x360 does not work
    on the Spectre.
    
    Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6fe801568288436849231aa1431843c0cef0642
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Aug 2 11:42:22 2018 +0300

    misc: mic: SCIF Fix scif_get_new_port() error handling
    
    [ Upstream commit a39284ae9d2ad09975c8ae33f1bd0f05fbfbf6ee ]
    
    There are only 2 callers of scif_get_new_port() and both appear to get
    the error handling wrong.  Both treat zero returns as error, but it
    actually returns negative error codes and >= 0 on success.
    
    Fixes: e9089f43c9a7 ("misc: mic: SCIF open close bind and listen APIs")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40b9d96cea9f833aaeb003a584665109591bee18
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Sun Aug 5 22:36:44 2018 +0300

    tc-testing: remove duplicate spaces in connmark match patterns
    
    [ Upstream commit 757a9a39d483ae415a712388c33d4042a98b751f ]
    
    Match patterns for some connmark tests contain duplicate whitespace that is
    not present in actual tc output. This causes tests to fail because they
    can't match required action, even when it was successfully created.
    
    Fixes: 1dad0f9ffff7 ("tc-testing: add connmark action tests")
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86bebb604160953ba74928ca57265de40fa48d8b
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Sun Aug 5 22:36:25 2018 +0300

    tc-testing: flush gact actions on test teardown
    
    [ Upstream commit 0c62f8a820b7fdeacf5ad9f9e24b53043d372c97 ]
    
    Test 6fb4 creates one mirred and one pipe action, but only flushes mirred
    on teardown. Leaking pipe action causes failures in other tests.
    
    Add additional teardown command to also flush gact actions.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e114758826f53c644052c957440a9b1cf0d4bb44
Author: Alexey Brodkin <abrodkin@synopsys.com>
Date:   Thu Aug 2 11:50:16 2018 +0300

    ARC: [plat-axs*]: Enable SWAP
    
    commit c83532fb0fe053d2e43e9387354cb1b52ba26427 upstream.
    
    SWAP support on ARC was fixed earlier by
    commit 6e3761145a9b ("ARC: Fix CONFIG_SWAP")
    so now we may safely enable it on platforms that
    have external media like USB and SD-card.
    
    Note: it was already allowed for HSDK
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: stable@vger.kernel.org # 6e3761145a9b: ARC: Fix CONFIG_SWAP
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f688bf1511c96f390b8c9f52f968d464968173e8
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu Aug 16 14:06:46 2018 -0500

    switchtec: Fix Spectre v1 vulnerability
    
    commit 46feb6b495f7628a6dbf36c4e6d80faf378372d4 upstream.
    
    p.port can is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
      drivers/pci/switch/switchtec.c:912 ioctl_port_to_pff() warn: potential spectre issue 'pcfg->dsp_pff_inst_id' [r]
    
    Fix this by sanitizing p.port before using it to index
    pcfg->dsp_pff_inst_id
    
    Notice that given that speculation windows are large, the policy is to kill
    the speculation on the first load and not worry if it can be completed with
    a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Logan Gunthorpe <logang@deltatee.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b7497c02daca9aa2aab98192fe5204eea652982
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Sep 8 12:07:26 2018 +0200

    x86/apic/vector: Make error return value negative
    
    commit 47b7360ce563e18c524ce92b55fb4da72b3b3578 upstream.
    
    activate_managed() returns EINVAL instead of -EINVAL in case of
    error. While this is unlikely to happen, the positive return value would
    cause further malfunction at the call site.
    
    Fixes: 2db1f959d9dc ("x86/vector: Handle managed interrupts proper")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d07d02abd5826215cd39eef7fb55c44f1912310
Author: Jann Horn <jannh@google.com>
Date:   Fri Aug 31 21:41:51 2018 +0200

    x86/process: Don't mix user/kernel regs in 64bit __show_regs()
    
    commit 9fe6299dde587788f245e9f7a5a1b296fad4e8c7 upstream.
    
    When the kernel.print-fatal-signals sysctl has been enabled, a simple
    userspace crash will cause the kernel to write a crash dump that contains,
    among other things, the kernel gsbase into dmesg.
    
    As suggested by Andy, limit output to pt_regs, FS_BASE and KERNEL_GS_BASE
    in this case.
    
    This also moves the bitness-specific logic from show_regs() into
    process_{32,64}.c.
    
    Fixes: 45807a1df9f5 ("vdso: print fatal signals")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180831194151.123586-1-jannh@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6f8e398c10ea9a664374d8dbb8b0e7a7265b382
Author: Filippo Sironi <sironi@amazon.de>
Date:   Tue Jul 31 17:29:30 2018 +0200

    x86/microcode: Update the new microcode revision unconditionally
    
    commit 8da38ebaad23fe1b0c4a205438676f6356607cfc upstream.
    
    Handle the case where microcode gets loaded on the BSP's hyperthread
    sibling first and the boot_cpu_data's microcode revision doesn't get
    updated because of early exit due to the siblings sharing a microcode
    engine.
    
    For that, simply write the updated revision on all CPUs unconditionally.
    
    Signed-off-by: Filippo Sironi <sironi@amazon.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: prarit@redhat.com
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1533050970-14385-1-git-send-email-sironi@amazon.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0a8f85b0aeee32a7528bc42e7086d2e154b02ed
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Tue Jul 31 07:27:39 2018 -0400

    x86/microcode: Make sure boot_cpu_data.microcode is up-to-date
    
    commit 370a132bb2227ff76278f98370e0e701d86ff752 upstream.
    
    When preparing an MCE record for logging, boot_cpu_data.microcode is used
    to read out the microcode revision on the box.
    
    However, on systems where late microcode update has happened, the microcode
    revision output in a MCE log record is wrong because
    boot_cpu_data.microcode is not updated when the microcode gets updated.
    
    But, the microcode revision saved in boot_cpu_data's microcode member
    should be kept up-to-date, regardless, for consistency.
    
    Make it so.
    
    Fixes: fa94d0c6e0f3 ("x86/MCE: Save microcode revision in machine check records")
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: sironi@amazon.de
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180731112739.32338-1-prarit@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 875872547357d4f6646679f1070598118397a28b
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Sep 6 15:21:38 2018 +0200

    cpu/hotplug: Prevent state corruption on error rollback
    
    commit 69fa6eb7d6a64801ea261025cce9723d9442d773 upstream.
    
    When a teardown callback fails, the CPU hotplug code brings the CPU back to
    the previous state. The previous state becomes the new target state. The
    rollback happens in undo_cpu_down() which increments the state
    unconditionally even if the state is already the same as the target.
    
    As a consequence the next CPU hotplug operation will start at the wrong
    state. This is easily to observe when __cpu_disable() fails.
    
    Prevent the unconditional undo by checking the state vs. target before
    incrementing state and fix up the consequently wrong conditional in the
    unplug code which handles the failure of the final CPU take down on the
    control CPU side.
    
    Fixes: 4dddfb5faa61 ("smp/hotplug: Rewrite AP state machine core")
    Reported-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Cc: josh@joshtriplett.org
    Cc: peterz@infradead.org
    Cc: jiangshanlai@gmail.com
    Cc: dzickus@redhat.com
    Cc: brendan.jackman@arm.com
    Cc: malat@debian.org
    Cc: sramana@codeaurora.org
    Cc: linux-arm-msm@vger.kernel.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1809051419580.1416@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    ----

commit 6b7b020bef06e1cd18b370867e9e77a1912d961f
Author: Neeraj Upadhyay <neeraju@codeaurora.org>
Date:   Wed Sep 5 11:22:07 2018 +0530

    cpu/hotplug: Adjust misplaced smb() in cpuhp_thread_fun()
    
    commit f8b7530aa0a1def79c93101216b5b17cf408a70a upstream.
    
    The smp_mb() in cpuhp_thread_fun() is misplaced. It needs to be after the
    load of st->should_run to prevent reordering of the later load/stores
    w.r.t. the load of st->should_run.
    
    Fixes: 4dddfb5faa61 ("smp/hotplug: Rewrite AP state machine core")
    Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infraded.org>
    Cc: josh@joshtriplett.org
    Cc: peterz@infradead.org
    Cc: jiangshanlai@gmail.com
    Cc: dzickus@redhat.com
    Cc: brendan.jackman@arm.com
    Cc: malat@debian.org
    Cc: mojha@codeaurora.org
    Cc: sramana@codeaurora.org
    Cc: linux-arm-msm@vger.kernel.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1536126727-11629-1-git-send-email-neeraju@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4db12abb871762dc0cd785f68af789e732ebcac
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Aug 30 15:13:16 2018 +0200

    ALSA: hda - Fix cancel_work_sync() stall from jackpoll work
    
    commit 16037643969e095509cd8446a3f8e406a6dc3a2c upstream.
    
    On AMD/ATI controllers, the HD-audio controller driver allows a bus
    reset upon the error recovery, and its procedure includes the
    cancellation of pending jack polling work as found in
    snd_hda_bus_codec_reset().  This works usually fine, but it becomes a
    problem when the reset happens from the jack poll work itself; then
    calling cancel_work_sync() from the work being processed tries to wait
    the finish endlessly.
    
    As a workaround, this patch adds the check of current_work() and
    applies the cancel_work_sync() only when it's not from the
    jackpoll_work.
    
    This doesn't fix the root cause of the reported error below, but at
    least, it eases the unexpected stall of the whole system.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200937
    Cc: <stable@vger.kernel.org>
    Cc: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce987db2b52fd8ce551bb728f0a865dedff6fc83
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Thu Sep 6 14:12:19 2018 +0200

    memory: ti-aemif: fix a potential NULL-pointer dereference
    
    commit 6b45a2b1c0bc2aec84d1c56a1976ca9c8a621ecb upstream.
    
    Platform data pointer may be NULL. We check it everywhere but in one
    place. Fix it.
    
    Fixes: 8af70cd2ca50 ("memory: aemif: add support for board files")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bf0dc8d0a6732339e28add75970b907fd238c59
Author: Zhang Rui <rui.zhang@intel.com>
Date:   Mon Sep 3 10:00:07 2018 +0800

    ACPI / LPSS: Force LPSS quirks on boot
    
    commit f11fc4bc669b8622510c1039499f5a9d24248fec upstream.
    
    Commit 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume
    from hibernation) bypasses lpss quirks for S3 and S4, by setting a flag
    for S3/S4 in acpi_lpss_suspend(), and check that flag in
    acpi_lpss_resume().
    
    But this overlooks the boot case where acpi_lpss_resume() may get called
    without a corresponding acpi_lpss_suspend() having been called.
    
    Thus force setting the flag during boot.
    
    Fixes: 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200989
    Reported-and-tested-by: William Lieurance <william.lieurance@namikoda.com>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Cc: 4.15+ <stable@vger.kernel.org> # 4.15+: 12864ff8545f (ACPI / LPSS: Avoid ...)
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8cc3b38a0b692f3bfa99f0d05a712348411d7b0
Author: Alexey Brodkin <abrodkin@synopsys.com>
Date:   Thu Aug 2 13:19:37 2018 +0300

    ARC: [plat-axs*/plat-hsdk]: Allow U-Boot to pass MAC-address to the kernel
    
    commit 5c0920897af59779546e9ea0e89c5db45c8aff33 upstream.
    
    Otherwise kernel uses random MAC which is not very conveniet.
    With that change in place use might set desired MAC in U-Boot
    with "setenv ethaddr 11:22:33:44:55:66", save environment and
    then from boot to boot the same MAC will be used by the kernel.
    
    One other note for this to happen it's required to pass
    board's .dtb in U-Boot's "bootm" command like that:
    ------------------->8-----------------
    bootm 0x82000000 - 0x84000000
    ------------------->8-----------------
    
    Here 0x82000000 is location of uImage while
    0x80000000 is location of either axs10x.dtb or hsdk.dtb
    previously loaded from SD-card, USB storage or TFTP server.
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: stable@vger.kernel.org # 4.14
    Cc: devicetree@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18d40b7836d4077e83f58ccd528e3eddce6f9db2
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:51 2018 -0700

    KVM: x86: Do not re-{try,execute} after failed emulation in L2
    
    commit 6c3dfeb6a48b1562bd5b8ec5f3317ef34d0134ef upstream.
    
    Commit a6f177efaa58 ("KVM: Reenter guest after emulation failure if
    due to access to non-mmio address") added reexecute_instruction() to
    handle the scenario where two (or more) vCPUS race to write a shadowed
    page, i.e. reexecute_instruction() is intended to return true if and
    only if the instruction being emulated was accessing a shadowed page.
    As L0 is only explicitly shadowing L1 tables, an emulation failure of
    a nested VM instruction cannot be due to a race to write a shadowed
    page and so should never be re-executed.
    
    This fixes an issue where an "MMIO" emulation failure[1] in L2 is all
    but guaranteed to result in an infinite loop when TDP is enabled.
    Because "cr2" is actually an L2 GPA when TDP is enabled, calling
    kvm_mmu_gva_to_gpa_write() to translate cr2 in the non-direct mapped
    case (L2 is never direct mapped) will almost always yield UNMAPPED_GVA
    and cause reexecute_instruction() to immediately return true.  The
    !mmio_info_in_cache() check in kvm_mmu_page_fault() doesn't catch this
    case because mmio_info_in_cache() returns false for a nested MMU (the
    MMIO caching currently handles L1 only, e.g. to cache nested guests'
    GPAs we'd have to manually flush the cache when switching between
    VMs and when L1 updated its page tables controlling the nested guest).
    
    Way back when, commit 68be0803456b ("KVM: x86: never re-execute
    instruction with enabled tdp") changed reexecute_instruction() to
    always return false when using TDP under the assumption that KVM would
    only get into the emulator for MMIO.  Commit 95b3cf69bdf8 ("KVM: x86:
    let reexecute_instruction work for tdp") effectively reverted that
    behavior in order to handle the scenario where emulation failed due to
    an access from L1 to the shadow page tables for L2, but it didn't
    account for the case where emulation failed in L2 with TDP enabled.
    
    All of the above logic also applies to retry_instruction(), added by
    commit 1cb3f3ae5a38 ("KVM: x86: retry non-page-table writing
    instructions").  An indefinite loop in retry_instruction() should be
    impossible as it protects against retrying the same instruction over
    and over, but it's still correct to not retry an L2 instruction in
    the first place.
    
    Fix the immediate issue by adding a check for a nested guest when
    determining whether or not to allow retry in kvm_mmu_page_fault().
    In addition to fixing the immediate bug, add WARN_ON_ONCE in the
    retry functions since they are not designed to handle nested cases,
    i.e. they need to be modified even if there is some scenario in the
    future where we want to allow retrying a nested guest.
    
    [1] This issue was encountered after commit 3a2936dedd20 ("kvm: mmu:
        Don't expose private memslots to L2") changed the page fault path
        to return KVM_PFN_NOSLOT when translating an L2 access to a
        prive memslot.  Returning KVM_PFN_NOSLOT is semantically correct
        when we want to hide a memslot from L2, i.e. there effectively is
        no defined memory region for L2, but it has the unfortunate side
        effect of making KVM think the GFN is a MMIO page, thus triggering
        emulation.  The failure occurred with in-development code that
        deliberately exposed a private memslot to L2, which L2 accessed
        with an instruction that is not emulated by KVM.
    
    Fixes: 95b3cf69bdf8 ("KVM: x86: let reexecute_instruction work for tdp")
    Fixes: 1cb3f3ae5a38 ("KVM: x86: retry non-page-table writing instructions")
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: Jim Mattson <jmattson@google.com>
    Cc: Krish Sadhukhan <krish.sadhukhan@oracle.com>
    Cc: Xiao Guangrong <xiaoguangrong@tencent.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ff64069721a8405cfe5d252fc096c1ab28dc867
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:50 2018 -0700

    KVM: x86: Default to not allowing emulation retry in kvm_mmu_page_fault
    
    commit 472faffacd9032164f611f56329d0025ddca55b5 upstream.
    
    Effectively force kvm_mmu_page_fault() to opt-in to allowing retry to
    make it more obvious when and why it allows emulation to be retried.
    Previously this approach was less convenient due to retry and
    re-execute behavior being controlled by separate flags that were also
    inverted in their implementations (opt-in versus opt-out).
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e88f92cd11810858526cbef1a1a582ea2600d5c
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:49 2018 -0700

    KVM: x86: Merge EMULTYPE_RETRY and EMULTYPE_ALLOW_REEXECUTE
    
    commit 384bf2218e96f57118270945b1841e4dbbe9e352 upstream.
    
    retry_instruction() and reexecute_instruction() are a package deal,
    i.e. there is no scenario where one is allowed and the other is not.
    Merge their controlling emulation type flags to enforce this in code.
    Name the combined flag EMULTYPE_ALLOW_RETRY to make it abundantly
    clear that we are allowing re{try,execute} to occur, as opposed to
    explicitly requesting retry of a previously failed instruction.
    
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 172c718af8b2323a597d373508f0da313fea4282
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:48 2018 -0700

    KVM: x86: Invert emulation re-execute behavior to make it opt-in
    
    commit 8065dbd1ee0ef04321d80da7999b4f0086e0a407 upstream.
    
    Re-execution of an instruction after emulation decode failure is
    intended to be used only when emulating shadow page accesses.  Invert
    the flag to make allowing re-execution opt-in since that behavior is
    by far in the minority.
    
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a89243cb1c74764c28a6e4fc50ec5efab594fbe
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:46 2018 -0700

    KVM: VMX: Do not allow reexecute_instruction() when skipping MMIO instr
    
    commit c4409905cd6eb42cfd06126e9226b0150e05a715 upstream.
    
    Re-execution after an emulation decode failure is only intended to
    handle a case where two or vCPUs race to write a shadowed page, i.e.
    we should never re-execute an instruction as part of MMIO emulation.
    As handle_ept_misconfig() is only used for MMIO emulation, it should
    pass EMULTYPE_NO_REEXECUTE when using the emulator to skip an instr
    in the fast-MMIO case where VM_EXIT_INSTRUCTION_LEN is invalid.
    
    And because the cr2 value passed to x86_emulate_instruction() is only
    destined for use when retrying or reexecuting, we can simply call
    emulate_instruction().
    
    Fixes: d391f1207067 ("x86/kvm/vmx: do not use vm-exit instruction length
                          for fast MMIO when running nested")
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7e360b1086b0d5862fa3770e12cf562642fabd2
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Aug 23 13:56:47 2018 -0700

    KVM: x86: SVM: Set EMULTYPE_NO_REEXECUTE for RSM emulation
    
    commit 35be0aded76b54a24dc8aa678a71bca22273e8d8 upstream.
    
    Re-execution after an emulation decode failure is only intended to
    handle a case where two or vCPUs race to write a shadowed page, i.e.
    we should never re-execute an instruction as part of RSM emulation.
    
    Add a new helper, kvm_emulate_instruction_from_buffer(), to support
    emulating from a pre-defined buffer.  This eliminates the last direct
    call to x86_emulate_instruction() outside of kvm_mmu_page_fault(),
    which means x86_emulate_instruction() can be unexported in a future
    patch.
    
    Fixes: 7607b7174405 ("KVM: SVM: install RSM intercept")
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 625a6bcb11a23a4a50ca83bf968728bba1d0a8bf
Author: Pierre Morel <pmorel@linux.ibm.com>
Date:   Thu Aug 23 12:25:54 2018 +0200

    KVM: s390: vsie: copy wrapping keys to right place
    
    commit 204c97245612b6c255edf4e21e24d417c4a0c008 upstream.
    
    Copy the key mask to the right offset inside the shadow CRYCB
    
    Fixes: bbeaa58b3 ("KVM: s390: vsie: support aes dea wrapping keys")
    Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Cc: stable@vger.kernel.org # v4.8+
    Message-Id: <1535019956-23539-2-git-send-email-pmorel@linux.ibm.com>
    Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33cd6d44e8c6a566e9817c8e87e882d6852f3864
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Tue Aug 14 20:37:45 2018 +1000

    KVM: PPC: Book3S HV: Use correct pagesize in kvm_unmap_radix()
    
    commit c066fafc595eef5ae3c83ae3a8305956b8c3ef15 upstream.
    
    Since commit e641a317830b ("KVM: PPC: Book3S HV: Unify dirty page map
    between HPT and radix", 2017-10-26), kvm_unmap_radix() computes the
    number of PAGE_SIZEd pages being unmapped and passes it to
    kvmppc_update_dirty_map(), which expects to be passed the page size
    instead.  Consequently it will only mark one system page dirty even
    when a large page (for example a THP page) is being unmapped.  The
    consequence of this is that part of the THP page might not get copied
    during live migration, resulting in memory corruption for the guest.
    
    This fixes it by computing and passing the page size in kvm_unmap_radix().
    
    Cc: stable@vger.kernel.org # v4.15+
    Fixes: e641a317830b (KVM: PPC: Book3S HV: Unify dirty page map between HPT and radix)
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e7e9f25ef3e91790d6ecc900d3548cebfd0f221
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Aug 23 09:58:27 2018 +0100

    KVM: arm/arm64: Clean dcache to PoC when changing PTE due to CoW
    
    commit 694556d54f354d3fe43bb2e61fd6103cca2638a4 upstream.
    
    When triggering a CoW, we unmap the RO page via an MMU notifier
    (invalidate_range_start), and then populate the new PTE using another
    one (change_pte). In the meantime, we'll have copied the old page
    into the new one.
    
    The problem is that the data for the new page is sitting in the
    cache, and should the guest have an uncached mapping to that page
    (or its MMU off), following accesses will bypass the cache.
    
    In a way, this is similar to what happens on a translation fault:
    We need to clean the page to the PoC before mapping it. So let's just
    do that.
    
    This fixes a KVM unit test regression observed on a HiSilicon platform,
    and subsequently reproduced on Seattle.
    
    Fixes: a9c0e12ebee5 ("KVM: arm/arm64: Only clean the dcache on translation fault")
    Cc: stable@vger.kernel.org # v4.16+
    Reported-by: Mike Galbraith <efault@gmx.de>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2359d3d80fe242394513d2e4ac568d071537e16
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Aug 23 11:51:43 2018 +0100

    arm64: KVM: Only force FPEXC32_EL2.EN if trapping FPSIMD
    
    commit 7d14919c0d475a795c0127631ac8ecb2b0f31831 upstream.
    
    If trapping FPSIMD in the context of an AArch32 guest, it is critical
    to set FPEXC32_EL2.EN to 1 so that the trapping is taken to EL2 and
    not EL1.
    
    Conversely, it is just as critical *not* to set FPEXC32_EL2.EN to 1
    if we're not going to trap FPSIMD, as we then corrupt the existing
    VFP state.
    
    Moving the call to __activate_traps_fpsimd32 to the point where we
    know for sure that we are going to trap ensures that we don't set that
    bit spuriously.
    
    Fixes: e6b673b741ea ("KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing")
    Cc: stable@vger.kernel.org # v4.18
    Cc: Dave Martin <dave.martin@arm.com>
    Reported-by: Alexander Graf <agraf@suse.de>
    Tested-by: Alexander Graf <agraf@suse.de>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9773e97f50267c2bc95e7c60ee9d8a4922e2a4e
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Aug 17 09:38:59 2018 +0100

    Btrfs: fix data corruption when deduplicating between different files
    
    commit de02b9f6bb65a6a1848f346f7a3617b7a9b930c0 upstream.
    
    If we deduplicate extents between two different files we can end up
    corrupting data if the source range ends at the size of the source file,
    the source file's size is not aligned to the filesystem's block size
    and the destination range does not go past the size of the destination
    file size.
    
    Example:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ xfs_io -f -c "pwrite -S 0x6b 0 2518890" /mnt/foo
      # The first byte with a value of 0xae starts at an offset (2518890)
      # which is not a multiple of the sector size.
      $ xfs_io -c "pwrite -S 0xae 2518890 102398" /mnt/foo
    
      # Confirm the file content is full of bytes with values 0x6b and 0xae.
      $ od -t x1 /mnt/foo
      0000000 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
      *
      11467540 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b ae ae ae ae ae ae
      11467560 ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae
      *
      11777540 ae ae ae ae ae ae ae ae
      11777550
    
      # Create a second file with a length not aligned to the sector size,
      # whose bytes all have the value 0x6b, so that its extent(s) can be
      # deduplicated with the first file.
      $ xfs_io -f -c "pwrite -S 0x6b 0 557771" /mnt/bar
    
      # Now deduplicate the entire second file into a range of the first file
      # that also has all bytes with the value 0x6b. The destination range's
      # end offset must not be aligned to the sector size and must be less
      # then the offset of the first byte with the value 0xae (byte at offset
      # 2518890).
      $ xfs_io -c "dedupe /mnt/bar 0 1957888 557771" /mnt/foo
    
      # The bytes in the range starting at offset 2515659 (end of the
      # deduplication range) and ending at offset 2519040 (start offset
      # rounded up to the block size) must all have the value 0xae (and not
      # replaced with 0x00 values). In other words, we should have exactly
      # the same data we had before we asked for deduplication.
      $ od -t x1 /mnt/foo
      0000000 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
      *
      11467540 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b ae ae ae ae ae ae
      11467560 ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae
      *
      11777540 ae ae ae ae ae ae ae ae
      11777550
    
      # Unmount the filesystem and mount it again. This guarantees any file
      # data in the page cache is dropped.
      $ umount /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ od -t x1 /mnt/foo
      0000000 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
      *
      11461300 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 00 00 00 00 00
      11461320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      *
      11470000 ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae ae
      *
      11777540 ae ae ae ae ae ae ae ae
      11777550
    
      # The bytes in range 2515659 to 2519040 have a value of 0x00 and not a
      # value of 0xae, data corruption happened due to the deduplication
      # operation.
    
    So fix this by rounding down, to the sector size, the length used for the
    deduplication when the following conditions are met:
    
      1) Source file's range ends at its i_size;
      2) Source file's i_size is not aligned to the sector size;
      3) Destination range does not cross the i_size of the destination file.
    
    Fixes: e1d227a42ea2 ("btrfs: Handle unaligned length in extent_same")
    CC: stable@vger.kernel.org # 4.2+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29d76c9853a24bbec8ef6efaff62f2feb4355575
Author: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Date:   Thu Aug 9 09:46:04 2018 +0800

    btrfs: fix qgroup_free wrong num_bytes in btrfs_subvolume_reserve_metadata
    
    commit a5b7f4295eeae8b05ca91f6d145cd8773b08de9e upstream.
    
    After btrfs_qgroup_reserve_meta_prealloc(), num_bytes will be assigned
    again by btrfs_calc_trans_metadata_size(). Once block_rsv fails, we
    can't properly free the num_bytes of the previous qgroup_reserve. Use a
    separate variable to store the num_bytes of the qgroup_reserve.
    
    Delete the comment for the qgroup_reserved that does not exist and add a
    comment about use_global_rsv.
    
    Fixes: c4c129db5da8 ("btrfs: drop unused parameter qgroup_reserved")
    CC: stable@vger.kernel.org # 4.18+
    Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15c4b1902f0e35dd51bb79fca73c50b6d14df699
Author: Thomas Werschlein <thomas.werschlein@geo.uzh.ch>
Date:   Thu Aug 30 18:29:20 2018 +0200

    cifs: connect to servername instead of IP for IPC$ share
    
    commit 395a2076b4064f97d3fce03af15210ff2a7bb7f9 upstream.
    
    This patch is required allows access to a Microsoft fileserver failover
    cluster behind a 1:1 NAT firewall.
    
    The change also provides stronger context for authentication and share
    connection (see MS-SMB2 3.3.5.7 and MS-SRVS 3.1.6.8) as noted by
    Tom Talpey, and addresses comments about the buffer size for the UNC
    made by Aurélien Aptel.
    
    Signed-off-by: Thomas Werschlein <thomas.werschlein@geo.uzh.ch>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Tom Talpey <ttalpey@microsoft.com>
    Reviewed-by: Aurelien Aptel <aaptel@suse.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc0416dcd3ab12ec37a7138f5d462aa24d37e4ac
Author: Steve French <stfrench@microsoft.com>
Date:   Fri Aug 31 15:12:10 2018 -0500

    smb3: check for and properly advertise directory lease support
    
    commit f801568332321e2b1e7a8bd26c3e4913a312a2ec upstream.
    
    Although servers will typically ignore unsupported features,
    we should advertise the support for directory leases (as
    Windows e.g. does) in the negotiate protocol capabilities we
    pass to the server, and should check for the server capability
    (CAP_DIRECTORY_LEASING) before sending a lease request for an
    open of a directory.  This will prevent us from accidentally
    sending directory leases to SMB2.1 or SMB2 server for example.
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d88717b6ce78fd3844a4038c3aa5aad5f5dbcbed
Author: Steve French <stfrench@microsoft.com>
Date:   Mon Aug 27 17:04:13 2018 -0500

    SMB3: Backup intent flag missing for directory opens with backupuid mounts
    
    commit 5e19697b56a64004e2d0ff1bb952ea05493c088f upstream.
    
    When "backup intent" is requested on the mount (e.g. backupuid or
    backupgid mount options), the corresponding flag needs to be set
    on opens of directories (and files) but was missing in some
    places causing access denied trying to enumerate and backup
    servers.
    
    Fixes kernel bugzilla #200953
    https://bugzilla.kernel.org/show_bug.cgi?id=200953
    
    Reported-and-tested-by: <whh@rubrik.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 521983976c38b8d3b911628ff7760af3d9af4502
Author: Paul Burton <paul.burton@mips.com>
Date:   Thu Aug 30 11:01:21 2018 -0700

    MIPS: VDSO: Match data page cache colouring when D$ aliases
    
    commit 0f02cfbc3d9e413d450d8d0fd660077c23f67eff upstream.
    
    When a system suffers from dcache aliasing a user program may observe
    stale VDSO data from an aliased cache line. Notably this can break the
    expectation that clock_gettime(CLOCK_MONOTONIC, ...) is, as its name
    suggests, monotonic.
    
    In order to ensure that users observe updates to the VDSO data page as
    intended, align the user mappings of the VDSO data page such that their
    cache colouring matches that of the virtual address range which the
    kernel will use to update the data page - typically its unmapped address
    within kseg0.
    
    This ensures that we don't introduce aliasing cache lines for the VDSO
    data page, and therefore that userland will observe updates without
    requiring cache invalidation.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
    Reported-by: Rene Nielsen <rene.nielsen@microsemi.com>
    Reported-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Fixes: ebb5e78cc634 ("MIPS: Initial implementation of a VDSO")
    Patchwork: https://patchwork.linux-mips.org/patch/20344/
    Tested-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67b9876482580914cfd99d49b54c9b0ed88581a6
Author: Minchan Kim <minchan@kernel.org>
Date:   Thu Aug 23 14:29:56 2018 +0900

    android: binder: fix the race mmap and alloc_new_buf_locked
    
    commit da1b9564e85b1d7baf66cbfabcab27e183a1db63 upstream.
    
    There is RaceFuzzer report like below because we have no lock to close
    below the race between binder_mmap and binder_alloc_new_buf_locked.
    To close the race, let's use memory barrier so that if someone see
    alloc->vma is not NULL, alloc->vma_vm_mm should be never NULL.
    
    (I didn't add stable mark intentionallybecause standard android
    userspace libraries that interact with binder (libbinder & libhwbinder)
    prevent the mmap/ioctl race. - from Todd)
    
    "
    Thread interleaving:
    CPU0 (binder_alloc_mmap_handler)              CPU1 (binder_alloc_new_buf_locked)
    =====                                         =====
    // drivers/android/binder_alloc.c
    // #L718 (v4.18-rc3)
    alloc->vma = vma;
                                                  // drivers/android/binder_alloc.c
                                                  // #L346 (v4.18-rc3)
                                                  if (alloc->vma == NULL) {
                                                      ...
                                                      // alloc->vma is not NULL at this point
                                                      return ERR_PTR(-ESRCH);
                                                  }
                                                  ...
                                                  // #L438
                                                  binder_update_page_range(alloc, 0,
                                                          (void *)PAGE_ALIGN((uintptr_t)buffer->data),
                                                          end_page_addr);
    
                                                  // In binder_update_page_range() #L218
                                                  // But still alloc->vma_vm_mm is NULL here
                                                  if (need_mm && mmget_not_zero(alloc->vma_vm_mm))
    alloc->vma_vm_mm = vma->vm_mm;
    
    Crash Log:
    ==================================================================
    BUG: KASAN: null-ptr-deref in __atomic_add_unless include/asm-generic/atomic-instrumented.h:89 [inline]
    BUG: KASAN: null-ptr-deref in atomic_add_unless include/linux/atomic.h:533 [inline]
    BUG: KASAN: null-ptr-deref in mmget_not_zero include/linux/sched/mm.h:75 [inline]
    BUG: KASAN: null-ptr-deref in binder_update_page_range+0xece/0x18e0 drivers/android/binder_alloc.c:218
    Write of size 4 at addr 0000000000000058 by task syz-executor0/11184
    
    CPU: 1 PID: 11184 Comm: syz-executor0 Not tainted 4.18.0-rc3 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x16e/0x22c lib/dump_stack.c:113
     kasan_report_error mm/kasan/report.c:352 [inline]
     kasan_report+0x163/0x380 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x140/0x1a0 mm/kasan/kasan.c:267
     kasan_check_write+0x14/0x20 mm/kasan/kasan.c:278
     __atomic_add_unless include/asm-generic/atomic-instrumented.h:89 [inline]
     atomic_add_unless include/linux/atomic.h:533 [inline]
     mmget_not_zero include/linux/sched/mm.h:75 [inline]
     binder_update_page_range+0xece/0x18e0 drivers/android/binder_alloc.c:218
     binder_alloc_new_buf_locked drivers/android/binder_alloc.c:443 [inline]
     binder_alloc_new_buf+0x467/0xc30 drivers/android/binder_alloc.c:513
     binder_transaction+0x125b/0x4fb0 drivers/android/binder.c:2957
     binder_thread_write+0xc08/0x2770 drivers/android/binder.c:3528
     binder_ioctl_write_read.isra.39+0x24f/0x8e0 drivers/android/binder.c:4456
     binder_ioctl+0xa86/0xf34 drivers/android/binder.c:4596
     vfs_ioctl fs/ioctl.c:46 [inline]
     do_vfs_ioctl+0x154/0xd40 fs/ioctl.c:686
     ksys_ioctl+0x94/0xb0 fs/ioctl.c:701
     __do_sys_ioctl fs/ioctl.c:708 [inline]
     __se_sys_ioctl fs/ioctl.c:706 [inline]
     __x64_sys_ioctl+0x43/0x50 fs/ioctl.c:706
     do_syscall_64+0x167/0x4b0 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    "
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Reviewed-by: Martijn Coenen <maco@android.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c583d8956d83261236b083c998e6f393184acb0a
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Sep 6 11:05:44 2018 +0300

    block: bfq: swap puts in bfqg_and_blkg_put
    
    commit d5274b3cd6a814ccb2f56d81ee87cbbf51bd4cf7 upstream.
    
    Fix trivial use-after-free. This could be last reference to bfqg.
    
    Fixes: 8f9bebc33dd7 ("block, bfq: access and cache blkg data only when safe")
    Acked-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d927dea6392d5445a62f104baf8881ff5095d3ba
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Sep 5 16:14:36 2018 -0600

    block: don't warn when doing fsync on read-only devices
    
    commit 8b2ded1c94c06f841f8c1612bcfa33c85012a36b upstream.
    
    It is possible to call fsync on a read-only handle (for example, fsck.ext2
    does it when doing read-only check), and this call results in kernel
    warning.
    
    The patch b089cfd95d32 ("block: don't warn for flush on read-only device")
    attempted to disable the warning, but it is buggy and it doesn't
    (op_is_flush tests flags, but bio_op strips off the flags).
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Fixes: 721c7fc701c7 ("block: fail op_is_write() requests to read-only partitions")
    Cc: stable@vger.kernel.org      # 4.18
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56935391aba9292b1b6a30e81c4f42495b3120b7
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue Sep 4 11:52:34 2018 -0600

    nbd: don't allow invalid blocksize settings
    
    commit bc811f05d77f47059c197a98b6ad242eb03999cb upstream.
    
    syzbot reports a divide-by-zero off the NBD_SET_BLKSIZE ioctl.
    We need proper validation of the input here. Not just if it's
    zero, but also if the value is a power-of-2 and in a valid
    range. Add that.
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot <syzbot+25dbecbec1e62c6b0dd4@syzkaller.appspotmail.com>
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e847a545edae1a88bd58c828746a23878a1550c1
Author: James Smart <jsmart2021@gmail.com>
Date:   Thu Aug 16 16:04:05 2018 -0700

    scsi: lpfc: Correct MDS diag and nvmet configuration
    
    commit 53e13ee087a80e8d4fc95436318436e5c2c1f8c2 upstream.
    
    A recent change added some MDS processing in the lpfc_drain_txq routine
    that relies on the fcp_wq being allocated. For nvmet operation the fcp_wq
    is not allocated because it can only be an nvme-target.  When the original
    MDS support was added LS_MDS_LOOPBACK was defined wrong, (0x16) it should
    have been 0x10 (decimal value used for hex setting). This incorrect value
    allowed MDS_LOOPBACK to be set simultaneously with LS_NPIV_FAB_SUPPORTED,
    causing the driver to crash when it accesses the non-existent fcp_wq.
    
    Correct the bad value setting for LS_MDS_LOOPBACK.
    
    Fixes:  ae9e28f36a6c  ("lpfc: Add MDS Diagnostic support.")
    Cc: <stable@vger.kernel.org> # v4.12+
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.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 faeb7c279e482fa85dbe538324764bb75cd07175
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Mon Aug 20 13:56:07 2018 +0300

    mac80211: don't update the PM state of a peer upon a multicast frame
    
    commit 20932750d9c78d307e4f2f18f9c6a32b82b1e0e8 upstream.
    
    I changed the way mac80211 updates the PM state of the peer.
    I forgot that we could also have multicast frames from the
    peer and that those frame should of course not change the
    PM state of the peer: A peer goes to power save when it
    needs to scan, but it won't send the broadcast Probe Request
    with the PM bit set.
    
    This made us mark the peer as awake when it wasn't and then
    Intel's firmware would fail to transmit because the peer is
    asleep according to its database. The driver warned about
    this and it looked like this:
    
     WARNING: CPU: 0 PID: 184 at /usr/src/linux-4.16.14/drivers/net/wireless/intel/iwlwifi/mvm/tx.c:1369 iwl_mvm_rx_tx_cmd+0x53b/0x860
     CPU: 0 PID: 184 Comm: irq/124-iwlwifi Not tainted 4.16.14 #1
     RIP: 0010:iwl_mvm_rx_tx_cmd+0x53b/0x860
     Call Trace:
      iwl_pcie_rx_handle+0x220/0x880
      iwl_pcie_irq_handler+0x6c9/0xa20
      ? irq_forced_thread_fn+0x60/0x60
      ? irq_thread_dtor+0x90/0x90
    
    The relevant code that spits the WARNING is:
    
            case TX_STATUS_FAIL_DEST_PS:
                    /* the FW should have stopped the queue and not
                     * return this status
                     */
                    WARN_ON(1);
                    info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
    
    This fixes https://bugzilla.kernel.org/show_bug.cgi?id=199967.
    
    Fixes: 9fef65443388 ("mac80211: always update the PM state of a peer on MGMT / DATA frames")
    Cc: <stable@vger.kernel.org>   #4.16+
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15a6f8974a8c14d02dc1c471219aa2ab16a0b692
Author: Mikhail Zaslonko <zaslonko@linux.ibm.com>
Date:   Tue Sep 4 15:46:09 2018 -0700

    memory_hotplug: fix kernel_panic on offline page processing
    
    commit 4e8346d0be889c7ab5eb2d3deedc18111d741e99 upstream.
    
    Within show_valid_zones() the function test_pages_in_a_zone() should be
    called for online memory blocks only.
    
    Otherwise it might lead to the VM_BUG_ON due to uninitialized struct
    pages (when CONFIG_DEBUG_VM_PGFLAGS kernel option is set):
    
     page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
     ------------[ cut here ]------------
     Call Trace:
     ([<000000000038f91e>] test_pages_in_a_zone+0xe6/0x168)
      [<0000000000923472>] show_valid_zones+0x5a/0x1a8
      [<0000000000900284>] dev_attr_show+0x3c/0x78
      [<000000000046f6f0>] sysfs_kf_seq_show+0xd0/0x150
      [<00000000003ef662>] seq_read+0x212/0x4b8
      [<00000000003bf202>] __vfs_read+0x3a/0x178
      [<00000000003bf3ca>] vfs_read+0x8a/0x148
      [<00000000003bfa3a>] ksys_read+0x62/0xb8
      [<0000000000bc2220>] system_call+0xdc/0x2d8
    
    That VM_BUG_ON was triggered by the page poisoning introduced in
    mm/sparse.c with the git commit d0dc12e86b31 ("mm/memory_hotplug:
    optimize memory hotplug").
    
    With the same commit the new 'nid' field has been added to the struct
    memory_block in order to store and later on derive the node id for
    offline pages (instead of accessing struct page which might be
    uninitialized).  But one reference to nid in show_valid_zones() function
    has been overlooked.  Fixed with current commit.  Also, nr_pages will
    not be used any more after test_pages_in_a_zone() call, do not update
    it.
    
    Link: http://lkml.kernel.org/r/20180828090539.41491-1-zaslonko@linux.ibm.com
    Fixes: d0dc12e86b31 ("mm/memory_hotplug: optimize memory hotplug")
    Signed-off-by: Mikhail Zaslonko <zaslonko@linux.ibm.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Pavel Tatashin <pavel.tatashin@microsoft.com>
    Cc: <stable@vger.kernel.org>    [4.17+]
    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 f1549c67f23f04a400cc056c54dd549b1433d221
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Tue Sep 4 15:45:59 2018 -0700

    mm/hugetlb: filter out hugetlb pages if HUGEPAGE migration is not supported.
    
    commit 464c7ffbcb164b2e5cebfa406b7fc6cdb7945344 upstream.
    
    When scanning for movable pages, filter out Hugetlb pages if hugepage
    migration is not supported.  Without this we hit infinte loop in
    __offline_pages() where we do
    
            pfn = scan_movable_pages(start_pfn, end_pfn);
            if (pfn) { /* We have movable pages */
                    ret = do_migrate_range(pfn, end_pfn);
                    goto repeat;
            }
    
    Fix this by checking hugepage_migration_supported both in
    has_unmovable_pages which is the primary backoff mechanism for page
    offlining and for consistency reasons also into scan_movable_pages
    because it doesn't make any sense to return a pfn to non-migrateable
    huge page.
    
    This issue was revealed by, but not caused by 72b39cfc4d75 ("mm,
    memory_hotplug: do not fail offlining too early").
    
    Link: http://lkml.kernel.org/r/20180824063314.21981-1-aneesh.kumar@linux.ibm.com
    Fixes: 72b39cfc4d75 ("mm, memory_hotplug: do not fail offlining too early")
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Reported-by: Haren Myneni <haren@linux.vnet.ibm.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.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 c0cbb9e5d448b1fcec131d7c51257ae7349cdb97
Author: Stefan Agner <stefan@agner.ch>
Date:   Tue Aug 28 13:29:55 2018 +0200

    HID: input: fix leaking custom input node name
    
    commit e38c0ac55ee67cf3626cfbc2283f8873dc44d370 upstream.
    
    Make sure to free the custom input node name on disconnect.
    
    Cc: stable@vger.kernel.org # v4.18+
    Fixes: c554bb045511 ("HID: input: append a suffix matching the application")
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81bb35902b63888f4c576881329c3508ed22375e
Author: AceLan Kao <acelan.kao@canonical.com>
Date:   Tue Aug 21 16:55:13 2018 +0800

    HID: i2c-hid: Fix flooded incomplete report after S3 on Rayd touchscreen
    
    commit fb6acf76c3fdd97fea6995e64e2c665725f00fc5 upstream.
    
    The incomplete report flooded after S3 and touchscreen becomes
    malfunctioned.
    [ 1367.646244] i2c_hid i2c-CUST0000:00: i2c_hid_get_input: incomplete report (58/18785)
    [ 1367.649471] i2c_hid i2c-CUST0000:00: i2c_hid_get_input: incomplete report (58/28743)
    [ 1367.651092] i2c_hid i2c-CUST0000:00: i2c_hid_get_input: incomplete report (58/26757)
    [ 1367.652658] i2c_hid i2c-CUST0000:00: i2c_hid_get_input: incomplete report (58/52280)
    [ 1367.654287] i2c_hid i2c-CUST0000:00: i2c_hid_get_input: incomplete report (58/56059)
    
    Adding device ID, 04F3:30CC, to the quirk to re-send report description
    after resume.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: AceLan Kao <acelan.kao@canonical.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bc3f187fd30a4980534dfba01596b9e6c20648f
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Tue Sep 4 15:31:14 2018 +0200

    HID: core: fix grouping by application
    
    commit 0d6c3011409135ea84e2a231b013a22017ff999a upstream.
    
    commit f07b3c1da92d ("HID: generic: create one input report per
    application type") was effectively the same as MULTI_INPUT:
    hidinput->report was never set, so hidinput_match_application()
    always returned null.
    
    Fix that by testing against the real application.
    
    Note that this breaks some old eGalax touchscreens that expect MULTI_INPUT
    instead of HID_QUIRK_INPUT_PER_APP. Enable this quirk for backward
    compatibility on all non-Win8 touchscreens.
    
    link: https://bugzilla.kernel.org/show_bug.cgi?id=200847
    link: https://bugzilla.kernel.org/show_bug.cgi?id=200849
    link: https://bugs.archlinux.org/task/59699
    link: https://github.com/NixOS/nixpkgs/issues/45165
    
    Cc: stable@vger.kernel.org # v4.18+
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e114a409eef6072f87a084f80c6597ea9018d4a7
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Tue Sep 4 15:31:12 2018 +0200

    HID: multitouch: fix Elan panels with 2 input modes declaration
    
    commit ec6adef5fbc3f140c70e7499fdad818acb3a46c6 upstream.
    
    When implementing commit 7f81c8db5489 ("HID: multitouch: simplify
    the settings of the various features"), I wrongly removed a test
    that made sure we never try to set the second InputMode feature
    to something else than 0.
    
    This broke badly some recent Elan panels that now forget to send the
    click button in some area of the touchpad.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200899
    Fixes: 7f81c8db5489 ("HID: multitouch: simplify the settings of the various features")
    Cc: stable@vger.kernel.org # v4.18+
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b94023f1ab5152505d7376301f986a0a27225043
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Mon Sep 3 11:24:57 2018 +0300

    i2c: i801: fix DNV's SMBCTRL register offset
    
    commit 851a15114895c5bce163a6f2d57e0aa4658a1be4 upstream.
    
    DNV's iTCO is slightly different with SMBCTRL sitting at a different
    offset when compared to all other devices. Let's fix so that we can
    properly use iTCO watchdog.
    
    Fixes: 84d7f2ebd70d ("i2c: i801: Add support for Intel DNV")
    Cc: <stable@vger.kernel.org> # v4.4+
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 824ca37630579efc80ce8f1a2fa115b1b0566575
Author: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Date:   Mon Sep 3 15:11:11 2018 +0530

    i2c: xiic: Make the start and the byte count write atomic
    
    commit ae7304c3ea28a3ba47a7a8312c76c654ef24967e upstream.
    
    Disable interrupts while configuring the transfer and enable them back.
    
    We have below as the programming sequence
    1. start and slave address
    2. byte count and stop
    
    In some customer platform there was a lot of interrupts between 1 and 2
    and after slave address (around 7 clock cyles) if 2 is not executed
    then the transaction is nacked.
    
    To fix this case make the 2 writes atomic.
    
    Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    [wsa: added a newline for better readability]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>