commit 7fe7a0f4c5cf9e7f5b7cb67c1341cdbf62ed4c30
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Sep 9 19:56:02 2018 +0200

    Linux 4.14.69

commit 29245d36680efe1b268bef0072f06bf201847abe
Author: James Morse <james.morse@arm.com>
Date:   Thu Aug 30 16:05:32 2018 +0100

    arm64: mm: always enable CONFIG_HOLES_IN_ZONE
    
    commit f52bb98f5aded4c43e52f5ce19fb83f7261e9e73 upstream.
    
    Commit 6d526ee26ccd ("arm64: mm: enable CONFIG_HOLES_IN_ZONE for NUMA")
    only enabled HOLES_IN_ZONE for NUMA systems because the NUMA code was
    choking on the missing zone for nomap pages. This problem doesn't just
    apply to NUMA systems.
    
    If the architecture doesn't set HAVE_ARCH_PFN_VALID, pfn_valid() will
    return true if the pfn is part of a valid sparsemem section.
    
    When working with multiple pages, the mm code uses pfn_valid_within()
    to test each page it uses within the sparsemem section is valid. On
    most systems memory comes in MAX_ORDER_NR_PAGES chunks which all
    have valid/initialised struct pages. In this case pfn_valid_within()
    is optimised out.
    
    Systems where this isn't true (e.g. due to nomap) should set
    HOLES_IN_ZONE and provide HAVE_ARCH_PFN_VALID so that mm tests each
    page as it works with it.
    
    Currently non-NUMA arm64 systems can't enable HOLES_IN_ZONE, leading to
    a VM_BUG_ON():
    
    | page:fffffdff802e1780 is uninitialized and poisoned
    | raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff
    | raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff
    | page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
    | ------------[ cut here ]------------
    | kernel BUG at include/linux/mm.h:978!
    | Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    [...]
    | CPU: 1 PID: 25236 Comm: dd Not tainted 4.18.0 #7
    | Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
    | pstate: 40000085 (nZcv daIf -PAN -UAO)
    | pc : move_freepages_block+0x144/0x248
    | lr : move_freepages_block+0x144/0x248
    | sp : fffffe0071177680
    [...]
    | Process dd (pid: 25236, stack limit = 0x0000000094cc07fb)
    | Call trace:
    |  move_freepages_block+0x144/0x248
    |  steal_suitable_fallback+0x100/0x16c
    |  get_page_from_freelist+0x440/0xb20
    |  __alloc_pages_nodemask+0xe8/0x838
    |  new_slab+0xd4/0x418
    |  ___slab_alloc.constprop.27+0x380/0x4a8
    |  __slab_alloc.isra.21.constprop.26+0x24/0x34
    |  kmem_cache_alloc+0xa8/0x180
    |  alloc_buffer_head+0x1c/0x90
    |  alloc_page_buffers+0x68/0xb0
    |  create_empty_buffers+0x20/0x1ec
    |  create_page_buffers+0xb0/0xf0
    |  __block_write_begin_int+0xc4/0x564
    |  __block_write_begin+0x10/0x18
    |  block_write_begin+0x48/0xd0
    |  blkdev_write_begin+0x28/0x30
    |  generic_perform_write+0x98/0x16c
    |  __generic_file_write_iter+0x138/0x168
    |  blkdev_write_iter+0x80/0xf0
    |  __vfs_write+0xe4/0x10c
    |  vfs_write+0xb4/0x168
    |  ksys_write+0x44/0x88
    |  sys_write+0xc/0x14
    |  el0_svc_naked+0x30/0x34
    | Code: aa1303e0 90001a01 91296421 94008902 (d4210000)
    | ---[ end trace 1601ba47f6e883fe ]---
    
    Remove the NUMA dependency.
    
    Link: https://www.spinics.net/lists/arm-kernel/msg671851.html
    Cc: <stable@vger.kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Pavel Tatashin <pavel.tatashin@microsoft.com>
    Tested-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3098933c12130afd50c7474ee3e7318aecce3297
Author: Jeremy Cline <jcline@redhat.com>
Date:   Tue Jul 31 01:37:31 2018 +0000

    fs/quota: Fix spectre gadget in do_quotactl
    
    commit 7b6924d94a60c6b8c1279ca003e8744e6cd9e8b1 upstream.
    
    'type' is user-controlled, so sanitize it after the bounds check to
    avoid using it in speculative execution. This covers the following
    potential gadgets detected with the help of smatch:
    
    * fs/ext4/super.c:5741 ext4_quota_read() warn: potential spectre issue
      'sb_dqopt(sb)->files' [r]
    * fs/ext4/super.c:5778 ext4_quota_write() warn: potential spectre issue
      'sb_dqopt(sb)->files' [r]
    * fs/f2fs/super.c:1552 f2fs_quota_read() warn: potential spectre issue
      'sb_dqopt(sb)->files' [r]
    * fs/f2fs/super.c:1608 f2fs_quota_write() warn: potential spectre issue
      'sb_dqopt(sb)->files' [r]
    * fs/quota/dquot.c:412 mark_info_dirty() warn: potential spectre issue
      'sb_dqopt(sb)->info' [w]
    * fs/quota/dquot.c:933 dqinit_needed() warn: potential spectre issue
      'dquots' [r]
    * fs/quota/dquot.c:2112 dquot_commit_info() warn: potential spectre
      issue 'dqopt->ops' [r]
    * fs/quota/dquot.c:2362 vfs_load_quota_inode() warn: potential spectre
      issue 'dqopt->files' [w] (local cap)
    * fs/quota/dquot.c:2369 vfs_load_quota_inode() warn: potential spectre
      issue 'dqopt->ops' [w] (local cap)
    * fs/quota/dquot.c:2370 vfs_load_quota_inode() warn: potential spectre
      issue 'dqopt->info' [w] (local cap)
    * fs/quota/quota.c:110 quota_getfmt() warn: potential spectre issue
      'sb_dqopt(sb)->info' [r]
    * fs/quota/quota_v2.c:84 v2_check_quota_file() warn: potential spectre
      issue 'quota_magics' [w]
    * fs/quota/quota_v2.c:85 v2_check_quota_file() warn: potential spectre
      issue 'quota_versions' [w]
    * fs/quota/quota_v2.c:96 v2_read_file_info() warn: potential spectre
      issue 'dqopt->info' [r]
    * fs/quota/quota_v2.c:172 v2_write_file_info() warn: potential spectre
      issue 'dqopt->info' [r]
    
    Additionally, a quick inspection indicates there are array accesses with
    'type' in quota_on() and quota_off() functions which are also addressed
    by this.
    
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeremy Cline <jcline@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0682e027f39dfcdef5f5d9c264491a34196f3b25
Author: Horia Geantă <horia.geanta@nxp.com>
Date:   Mon Aug 6 15:29:39 2018 +0300

    crypto: caam/qi - fix error path in xts setkey
    
    commit ad876a18048f43b1f66f5d474b7598538668c5de upstream.
    
    xts setkey callback returns 0 on some error paths.
    Fix this by returning -EINVAL.
    
    Cc: <stable@vger.kernel.org> # 4.12+
    Fixes: b189817cf789 ("crypto: caam/qi - add ablkcipher and authenc algorithms")
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccb38942fbe180a70b773bc1dbe47d48d9458bf3
Author: Horia Geantă <horia.geanta@nxp.com>
Date:   Mon Aug 6 15:29:09 2018 +0300

    crypto: caam/jr - fix descriptor DMA unmapping
    
    commit cc98963dbaaea93d17608641b8d6942a5327fc31 upstream.
    
    Descriptor address needs to be swapped to CPU endianness before being
    DMA unmapped.
    
    Cc: <stable@vger.kernel.org> # 4.8+
    Fixes: 261ea058f016 ("crypto: caam - handle core endianness != caam endianness")
    Reported-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be6f98b203d380e58e64f989fc317a2acfdc67ac
Author: Horia Geantă <horia.geanta@nxp.com>
Date:   Mon Aug 6 15:29:55 2018 +0300

    crypto: caam - fix DMA mapping direction for RSA forms 2 & 3
    
    commit f1bf9e60a0779ec97de9ecdc353e1d01cdd73f43 upstream.
    
    Crypto engine needs some temporary locations in external memory for
    running RSA decrypt forms 2 and 3 (CRT).
    These are named "tmp1" and "tmp2" in the PDB.
    
    Update DMA mapping direction of tmp1 and tmp2 from TO_DEVICE to
    BIDIRECTIONAL, since engine needs r/w access.
    
    Cc: <stable@vger.kernel.org> # 4.13+
    Fixes: 52e26d77b8b3 ("crypto: caam - add support for RSA key form 2")
    Fixes: 4a651b122adb ("crypto: caam - add support for RSA key form 3")
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f830cf2d510035d6d2b41e4e5fa72c9c886225b
Author: Ondrej Mosnacek <omosnace@redhat.com>
Date:   Wed Aug 22 08:26:31 2018 +0200

    crypto: vmx - Fix sleep-in-atomic bugs
    
    commit 0522236d4f9c5ab2e79889cb020d1acbe5da416e upstream.
    
    This patch fixes sleep-in-atomic bugs in AES-CBC and AES-XTS VMX
    implementations. The problem is that the blkcipher_* functions should
    not be called in atomic context.
    
    The bugs can be reproduced via the AF_ALG interface by trying to
    encrypt/decrypt sufficiently large buffers (at least 64 KiB) using the
    VMX implementations of 'cbc(aes)' or 'xts(aes)'. Such operations then
    trigger BUG in crypto_yield():
    
    [  891.863680] BUG: sleeping function called from invalid context at include/crypto/algapi.h:424
    [  891.864622] in_atomic(): 1, irqs_disabled(): 0, pid: 12347, name: kcapi-enc
    [  891.864739] 1 lock held by kcapi-enc/12347:
    [  891.864811]  #0: 00000000f5d42c46 (sk_lock-AF_ALG){+.+.}, at: skcipher_recvmsg+0x50/0x530
    [  891.865076] CPU: 5 PID: 12347 Comm: kcapi-enc Not tainted 4.19.0-0.rc0.git3.1.fc30.ppc64le #1
    [  891.865251] Call Trace:
    [  891.865340] [c0000003387578c0] [c000000000d67ea4] dump_stack+0xe8/0x164 (unreliable)
    [  891.865511] [c000000338757910] [c000000000172a58] ___might_sleep+0x2f8/0x310
    [  891.865679] [c000000338757990] [c0000000006bff74] blkcipher_walk_done+0x374/0x4a0
    [  891.865825] [c0000003387579e0] [d000000007e73e70] p8_aes_cbc_encrypt+0x1c8/0x260 [vmx_crypto]
    [  891.865993] [c000000338757ad0] [c0000000006c0ee0] skcipher_encrypt_blkcipher+0x60/0x80
    [  891.866128] [c000000338757b10] [c0000000006ec504] skcipher_recvmsg+0x424/0x530
    [  891.866283] [c000000338757bd0] [c000000000b00654] sock_recvmsg+0x74/0xa0
    [  891.866403] [c000000338757c10] [c000000000b00f64] ___sys_recvmsg+0xf4/0x2f0
    [  891.866515] [c000000338757d90] [c000000000b02bb8] __sys_recvmsg+0x68/0xe0
    [  891.866631] [c000000338757e30] [c00000000000bbe4] system_call+0x5c/0x70
    
    Fixes: 8c755ace357c ("crypto: vmx - Adding CBC routines for VMX module")
    Fixes: c07f5d3da643 ("crypto: vmx - Adding support for XTS")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 300ec47ab8ea3434ed4b7e7cb5e8eeccc5ad9def
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue Aug 14 11:46:08 2018 +0300

    perf auxtrace: Fix queue resize
    
    commit 99cbbe56eb8bede625f410ab62ba34673ffa7d21 upstream.
    
    When the number of queues grows beyond 32, the array of queues is
    resized but not all members were being copied. Fix by also copying
    'tid', 'cpu' and 'set'.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: e502789302a6e ("perf auxtrace: Add helpers for queuing AUX area tracing data")
    Link: http://lkml.kernel.org/r/20180814084608.6563-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a842ecca279f583c3fdc9a1ed8fe7a4cc348789
Author: Eddie.Horng <eddie.horng@mediatek.com>
Date:   Fri Jul 20 15:30:00 2018 +0800

    cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias()
    
    commit 355139a8dba446cc11a424cddbf7afebc3041ba1 upstream.
    
    The code in cap_inode_getsecurity(), introduced by commit 8db6c34f1dbc
    ("Introduce v3 namespaced file capabilities"), should use
    d_find_any_alias() instead of d_find_alias() do handle unhashed dentry
    correctly. This is needed, for example, if execveat() is called with an
    open but unlinked overlayfs file, because overlayfs unhashes dentry on
    unlink.
    This is a regression of real life application, first reported at
    https://www.spinics.net/lists/linux-unionfs/msg05363.html
    
    Below reproducer and setup can reproduce the case.
      const char* exec="echo";
      const char *newargv[] = { "echo", "hello", NULL};
      const char *newenviron[] = { NULL };
      int fd, err;
    
      fd = open(exec, O_PATH);
      unlink(exec);
      err = syscall(322/*SYS_execveat*/, fd, "", newargv, newenviron,
    AT_EMPTY_PATH);
      if(err<0)
        fprintf(stderr, "execveat: %s\n", strerror(errno));
    
    gcc compile into ~/test/a.out
    mount -t overlay -orw,lowerdir=/mnt/l,upperdir=/mnt/u,workdir=/mnt/w
    none /mnt/m
    cd /mnt/m
    cp /bin/echo .
    ~/test/a.out
    
    Expected result:
    hello
    Actually result:
    execveat: Invalid argument
    dmesg:
    Invalid argument reading file caps for /dev/fd/3
    
    The 2nd reproducer and setup emulates similar case but for
    regular filesystem:
      const char* exec="echo";
      int fd, err;
      char buf[256];
    
      fd = open(exec, O_RDONLY);
      unlink(exec);
      err = fgetxattr(fd, "security.capability", buf, 256);
      if(err<0)
        fprintf(stderr, "fgetxattr: %s\n", strerror(errno));
    
    gcc compile into ~/test_fgetxattr
    
    cd /tmp
    cp /bin/echo .
    ~/test_fgetxattr
    
    Result:
    fgetxattr: Invalid argument
    
    On regular filesystem, for example, ext4 read xattr from
    disk and return to execveat(), will not trigger this issue, however,
    the overlay attr handler pass real dentry to vfs_getxattr() will.
    This reproducer calls fgetxattr() with an unlinked fd, involkes
    vfs_getxattr() then reproduced the case that d_find_alias() in
    cap_inode_getsecurity() can't find the unlinked dentry.
    
    Suggested-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Serge E. Hallyn <serge@hallyn.com>
    Fixes: 8db6c34f1dbc ("Introduce v3 namespaced file capabilities")
    Cc: <stable@vger.kernel.org> # v4.14
    Signed-off-by: Eddie Horng <eddie.horng@mediatek.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1a265da7b2983e3201988f1a8202e749e2d4352
Author: Shan Hai <shan.hai@oracle.com>
Date:   Thu Aug 23 02:02:56 2018 +0800

    bcache: release dc->writeback_lock properly in bch_writeback_thread()
    
    commit 3943b040f11ed0cc6d4585fd286a623ca8634547 upstream.
    
    The writeback thread would exit with a lock held when the cache device
    is detached via sysfs interface, fix it by releasing the held lock
    before exiting the while-loop.
    
    Fixes: fadd94e05c02 (bcache: quit dc->writeback_thread when BCACHE_DEV_DETACHING is set)
    Signed-off-by: Shan Hai <shan.hai@oracle.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Tested-by: Shenghui Wang <shhuiw@foxmail.com>
    Cc: stable@vger.kernel.org #4.17+
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8d875b471b6f0304d5d85d0c33c58374b1d78d7
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Fri Aug 10 13:23:15 2018 -0600

    libnvdimm: fix ars_status output length calculation
    
    commit 286e87718103acdf85f4ed323a37e4839a8a7c05 upstream.
    
    Commit efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status output length handling")
    Introduced additional hardening for ambiguity in the ACPI spec for
    ars_status output sizing. However, it had a couple of cases mixed up.
    Where it should have been checking for (and returning) "out_field[1] -
    4" it was using "out_field[1] - 8" and vice versa.
    
    This caused a four byte discrepancy in the buffer size passed on to
    the command handler, and in some cases, this caused memory corruption
    like:
    
      ./daxdev-errors.sh: line 76: 24104 Aborted   (core dumped) ./daxdev-errors $busdev $region
      malloc(): memory corruption
      Program received signal SIGABRT, Aborted.
      [...]
      #5  0x00007ffff7865a2e in calloc () from /lib64/libc.so.6
      #6  0x00007ffff7bc2970 in ndctl_bus_cmd_new_ars_status (ars_cap=ars_cap@entry=0x6153b0) at ars.c:136
      #7  0x0000000000401644 in check_ars_status (check=0x7fffffffdeb0, bus=0x604c20) at daxdev-errors.c:144
      #8  test_daxdev_clear_error (region_name=<optimized out>, bus_name=<optimized out>)
          at daxdev-errors.c:332
    
    Cc: <stable@vger.kernel.org>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Keith Busch <keith.busch@intel.com>
    Cc: Lukasz Dorau <lukasz.dorau@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Fixes: efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status output length handling")
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Reviewed-by: Keith Busch <keith.busch@intel.com>
    Signed-of-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff0791f467d0fe641d7feadaf823a1fd16cdf7c9
Author: Christian Brauner <christian@brauner.io>
Date:   Thu Jun 7 13:43:48 2018 +0200

    getxattr: use correct xattr length
    
    commit 82c9a927bc5df6e06b72d206d24a9d10cced4eb5 upstream.
    
    When running in a container with a user namespace, if you call getxattr
    with name = "system.posix_acl_access" and size % 8 != 4, then getxattr
    silently skips the user namespace fixup that it normally does resulting in
    un-fixed-up data being returned.
    This is caused by posix_acl_fix_xattr_to_user() being passed the total
    buffer size and not the actual size of the xattr as returned by
    vfs_getxattr().
    This commit passes the actual length of the xattr as returned by
    vfs_getxattr() down.
    
    A reproducer for the issue is:
    
      touch acl_posix
    
      setfacl -m user:0:rwx acl_posix
    
    and the compile:
    
      #define _GNU_SOURCE
      #include <errno.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <sys/types.h>
      #include <unistd.h>
      #include <attr/xattr.h>
    
      /* Run in user namespace with nsuid 0 mapped to uid != 0 on the host. */
      int main(int argc, void **argv)
      {
              ssize_t ret1, ret2;
              char buf1[128], buf2[132];
              int fret = EXIT_SUCCESS;
              char *file;
    
              if (argc < 2) {
                      fprintf(stderr,
                              "Please specify a file with "
                              "\"system.posix_acl_access\" permissions set\n");
                      _exit(EXIT_FAILURE);
              }
              file = argv[1];
    
              ret1 = getxattr(file, "system.posix_acl_access",
                              buf1, sizeof(buf1));
              if (ret1 < 0) {
                      fprintf(stderr, "%s - Failed to retrieve "
                                      "\"system.posix_acl_access\" "
                                      "from \"%s\"\n", strerror(errno), file);
                      _exit(EXIT_FAILURE);
              }
    
              ret2 = getxattr(file, "system.posix_acl_access",
                              buf2, sizeof(buf2));
              if (ret2 < 0) {
                      fprintf(stderr, "%s - Failed to retrieve "
                                      "\"system.posix_acl_access\" "
                                      "from \"%s\"\n", strerror(errno), file);
                      _exit(EXIT_FAILURE);
              }
    
              if (ret1 != ret2) {
                      fprintf(stderr, "The value of \"system.posix_acl_"
                                      "access\" for file \"%s\" changed "
                                      "between two successive calls\n", file);
                      _exit(EXIT_FAILURE);
              }
    
              for (ssize_t i = 0; i < ret2; i++) {
                      if (buf1[i] == buf2[i])
                              continue;
    
                      fprintf(stderr,
                              "Unexpected different in byte %zd: "
                              "%02x != %02x\n", i, buf1[i], buf2[i]);
                      fret = EXIT_FAILURE;
              }
    
              if (fret == EXIT_SUCCESS)
                      fprintf(stderr, "Test passed\n");
              else
                      fprintf(stderr, "Test failed\n");
    
              _exit(fret);
      }
    and run:
    
      ./tester acl_posix
    
    On a non-fixed up kernel this should return something like:
    
      root@c1:/# ./t
      Unexpected different in byte 16: ffffffa0 != 00
      Unexpected different in byte 17: ffffff86 != 00
      Unexpected different in byte 18: 01 != 00
    
    and on a fixed kernel:
    
      root@c1:~# ./t
      Test passed
    
    Cc: stable@vger.kernel.org
    Fixes: 2f6f0654ab61 ("userns: Convert vfs posix_acl support to use kuids and kgids")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=199945
    Reported-by: Colin Watson <cjwatson@ubuntu.com>
    Signed-off-by: Christian Brauner <christian@brauner.io>
    Acked-by: Serge Hallyn <serge@hallyn.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19b99719970be85d17c55a0f688b746a11e82eb0
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jul 25 15:41:55 2018 +0200

    udlfb: set optimal write delay
    
    commit bb24153a3f13dd0dbc1f8055ad97fe346d598f66 upstream.
    
    The default delay 5 jiffies is too much when the kernel is compiled with
    HZ=100 - it results in jumpy cursor in Xwindow.
    
    In order to find out the optimal delay, I benchmarked the driver on
    1280x720x30fps video. I found out that with HZ=1000, 10ms is acceptable,
    but with HZ=250 or HZ=300, we need 4ms, so that the video is played
    without any frame skips.
    
    This patch changes the delay to this value.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0f2eb3a419be3ac0304fa83c6b0086ef7fc095a
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jul 25 15:41:54 2018 +0200

    fb: fix lost console when the user unplugs a USB adapter
    
    commit 8c5b044299951acd91e830a688dd920477ea1eda upstream.
    
    I have a USB display adapter using the udlfb driver and I use it on an ARM
    board that doesn't have any graphics card. When I plug the adapter in, the
    console is properly displayed, however when I unplug and re-plug the
    adapter, the console is not displayed and I can't access it until I reboot
    the board.
    
    The reason is this:
    When the adapter is unplugged, dlfb_usb_disconnect calls
    unlink_framebuffer, then it waits until the reference count drops to zero
    and then it deallocates the framebuffer. However, the console that is
    attached to the framebuffer device keeps the reference count non-zero, so
    the framebuffer device is never destroyed. When the USB adapter is plugged
    again, it creates a new device /dev/fb1 and the console is not attached to
    it.
    
    This patch fixes the bug by unbinding the console from unlink_framebuffer.
    The code to unbind the console is moved from do_unregister_framebuffer to
    a function unbind_console. When the console is unbound, the reference
    count drops to zero and the udlfb driver frees the framebuffer. When the
    adapter is plugged back, a new framebuffer is created and the console is
    attached to it.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Bernie Thompson <bernie@plugable.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Cc: stable@vger.kernel.org
    [b.zolnierkie: preserve old behavior for do_unregister_framebuffer()]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b0dd656d5932580d3727f8afa20e81f0e6d8cfe
Author: Vignesh R <vigneshr@ti.com>
Date:   Mon Jun 11 11:39:56 2018 +0530

    pwm: tiehrpwm: Fix disabling of output of PWMs
    
    commit 38dabd91ff0bde33352ca3cc65ef515599b77a05 upstream.
    
    pwm-tiehrpwm driver disables PWM output by putting it in low output
    state via active AQCSFRC register in ehrpwm_pwm_disable(). But, the
    AQCSFRC shadow register is not updated. Therefore, when shadow AQCSFRC
    register is re-enabled in ehrpwm_pwm_enable() (say to enable second PWM
    output), previous settings are lost as shadow register value is loaded
    into active register. This results in things like PWMA getting enabled
    automatically, when PWMB is enabled and vice versa. Fix this by
    updating AQCSFRC shadow register as well during ehrpwm_pwm_disable().
    
    Fixes: 19891b20e7c2 ("pwm: pwm-tiehrpwm: PWM driver support for EHRPWM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ef9c771924d485e8c3768fdd35acc203525f352
Author: Vignesh R <vigneshr@ti.com>
Date:   Mon Jun 11 11:39:55 2018 +0530

    pwm: tiehrpwm: Don't use emulation mode bits to control PWM output
    
    commit aa49d628f6e016bcec8c6f8e704b9b18ee697329 upstream.
    
    As per AM335x TRM SPRUH73P "15.2.2.11 ePWM Behavior During Emulation",
    TBCTL[15:14] only have effect during emulation suspend events (IOW,
    to stop PWM when debugging using a debugger). These bits have no effect
    on PWM output during normal running of system. Hence, remove code
    accessing these bits as they have no role in enabling/disabling PWMs.
    
    Fixes: 19891b20e7c2 ("pwm: pwm-tiehrpwm: PWM driver support for EHRPWM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63bbaa1469e6a037a1f7b84106bf8f0dcb3f6f71
Author: Richard Weinberger <richard@nod.at>
Date:   Tue Jun 12 00:52:28 2018 +0200

    ubifs: Fix synced_i_size calculation for xattr inodes
    
    commit 59965593205fa4044850d35ee3557cf0b7edcd14 upstream.
    
    In ubifs_jnl_update() we sync parent and child inodes to the flash,
    in case of xattrs, the parent inode (AKA host inode) has a non-zero
    data_len. Therefore we need to adjust synced_i_size too.
    
    This issue was reported by ubifs self tests unter a xattr related work
    load.
    UBIFS error (ubi0:0 pid 1896): dbg_check_synced_i_size: ui_size is 4, synced_i_size is 0, but inode is clean
    UBIFS error (ubi0:0 pid 1896): dbg_check_synced_i_size: i_ino 65, i_mode 0x81a4, i_size 4
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a23348d76a1e7716da6e76383281ac82fc071cf
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Jul 8 23:33:25 2018 +0200

    ubifs: xattr: Don't operate on deleted inodes
    
    commit 11a6fc3dc743e22fb50f2196ec55bee5140d3c52 upstream.
    
    xattr operations can race with unlink and the following assert triggers:
    UBIFS assert failed in ubifs_jnl_change_xattr at 1606 (pid 6256)
    
    Fix this by checking i_nlink before working on the host inode.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6d7acc1d9cae277b0379e8209eaefe59a3fbf79
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Jul 1 23:20:51 2018 +0200

    ubifs: Check data node size before truncate
    
    commit 95a22d2084d72ea067d8323cc85677dba5d97cae upstream.
    
    Check whether the size is within bounds before using it.
    If the size is not correct, abort and dump the bad data node.
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Silvio Cesare <silvio.cesare@gmail.com>
    Cc: stable@vger.kernel.org
    Fixes: 1e51764a3c2ac ("UBIFS: add new flash file system")
    Reported-by: Silvio Cesare <silvio.cesare@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3259dd7176e4d98248f2dcc94f540dbca051ff42
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Jul 1 23:20:50 2018 +0200

    Revert "UBIFS: Fix potential integer overflow in allocation"
    
    commit 08acbdd6fd736b90f8d725da5a0de4de2dd6de62 upstream.
    
    This reverts commit 353748a359f1821ee934afc579cf04572406b420.
    It bypassed the linux-mtd review process and fixes the issue not as it
    should.
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Silvio Cesare <silvio.cesare@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a230db38a9fd9b422bb7f114da9bb7141c87fded
Author: Richard Weinberger <richard@nod.at>
Date:   Tue Jun 12 20:49:45 2018 +0200

    ubifs: Fix memory leak in lprobs self-check
    
    commit eef19816ada3abd56d9f20c88794cc2fea83ebb2 upstream.
    
    Allocate the buffer after we return early.
    Otherwise memory is being leaked.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 656d6e6f6d235fe3e349a331ec2d8c5105df721e
Author: Jann Horn <jannh@google.com>
Date:   Mon Jun 25 18:34:19 2018 +0200

    userns: move user access out of the mutex
    
    commit 5820f140edef111a9ea2ef414ab2428b8cb805b1 upstream.
    
    The old code would hold the userns_state_mutex indefinitely if
    memdup_user_nul stalled due to e.g. a userfault region. Prevent that by
    moving the memdup_user_nul in front of the mutex_lock().
    
    Note: This changes the error precedence of invalid buf/count/*ppos vs
    map already written / capabilities missing.
    
    Fixes: 22d917d80e84 ("userns: Rework the user_namespace adding uid/gid...")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: Christian Brauner <christian@brauner.io>
    Acked-by: Serge Hallyn <serge@hallyn.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b692c405a1ae577b44764351ad80e99e0a08be99
Author: Jann Horn <jannh@google.com>
Date:   Mon Jun 25 18:34:10 2018 +0200

    sys: don't hold uts_sem while accessing userspace memory
    
    commit 42a0cc3478584d4d63f68f2f5af021ddbea771fa upstream.
    
    Holding uts_sem as a writer while accessing userspace memory allows a
    namespace admin to stall all processes that attempt to take uts_sem.
    Instead, move data through stack buffers and don't access userspace memory
    while uts_sem is held.
    
    Cc: stable@vger.kernel.org
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2ea292b13509ebb79a1a80c72d0b28d4e5a48db
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Thu Jun 7 09:57:00 2018 -0700

    iommu/vt-d: Fix dev iotlb pfsid use
    
    commit 1c48db44924298ad0cb5a6386b88017539be8822 upstream.
    
    PFSID should be used in the invalidation descriptor for flushing
    device IOTLBs on SRIOV VFs.
    
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Cc: stable@vger.kernel.org
    Cc: "Ashok Raj" <ashok.raj@intel.com>
    Cc: "Lu Baolu" <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb58c40465f35fa72a9b633040f367972ff2632c
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Thu Jun 7 09:56:59 2018 -0700

    iommu/vt-d: Add definitions for PFSID
    
    commit 0f725561e168485eff7277d683405c05b192f537 upstream.
    
    When SRIOV VF device IOTLB is invalidated, we need to provide
    the PF source ID such that IOMMU hardware can gauge the depth
    of invalidation queue which is shared among VFs. This is needed
    when device invalidation throttle (DIT) capability is supported.
    
    This patch adds bit definitions for checking and tracking PFSID.
    
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Cc: stable@vger.kernel.org
    Cc: "Ashok Raj" <ashok.raj@intel.com>
    Cc: "Lu Baolu" <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cf82f3b7a7710dc29fc90ce83bee8a1ea7ff6fb
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Aug 22 17:30:14 2018 +0200

    mm/tlb: Remove tlb_remove_table() non-concurrent condition
    
    commit a6f572084fbee8b30f91465f4a085d7a90901c57 upstream.
    
    Will noted that only checking mm_users is incorrect; we should also
    check mm_count in order to cover CPUs that have a lazy reference to
    this mm (and could do speculative TLB operations).
    
    If removing this turns out to be a performance issue, we can
    re-instate a more complete check, but in tlb_table_flush() eliding the
    call_rcu_sched().
    
    Fixes: 267239116987 ("mm, powerpc: move the RCU page-table freeing into generic code")
    Reported-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Rik van Riel <riel@surriel.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddcb92700552eeedea717dcca9b16b0a99d26679
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Tue Jul 3 09:59:47 2018 +0100

    ARM: tegra: Fix Tegra30 Cardhu PCA954x reset
    
    commit 6e1811900b6fe6f2b4665dba6bd6ed32c6b98575 upstream.
    
    On all versions of Tegra30 Cardhu, the reset signal to the NXP PCA9546
    I2C mux is connected to the Tegra GPIO BB0. Currently, this pin on the
    Tegra is not configured as a GPIO but as a special-function IO (SFIO)
    that is multiplexing the pin to an I2S controller. On exiting system
    suspend, I2C commands sent to the PCA9546 are failing because there is
    no ACK. Although it is not possible to see exactly what is happening
    to the reset during suspend, by ensuring it is configured as a GPIO
    and driven high, to de-assert the reset, the failures are no longer
    seen.
    
    Please note that this GPIO is also used to drive the reset signal
    going to the camera connector on the board. However, given that there
    is no camera support currently for Cardhu, this should not have any
    impact.
    
    Fixes: 40431d16ff11 ("ARM: tegra: enable PCA9546 on Cardhu")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d453f04e813a9ded568b0bbb918909698c8bfed0
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Tue Aug 14 17:55:56 2018 -0400

    NFSv4: Fix a sleep in atomic context in nfs4_callback_sequence()
    
    commit 8618289c46556fd4dd259a1af02ccc448032f48d upstream.
    
    We must drop the lock before we can sleep in referring_call_exists().
    
    Reported-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Fixes: 045d2a6d076a ("NFSv4.1: Delay callback processing...")
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5759d5a7e6a00ffd8a342cde8f33340891bd095
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Tue Aug 14 17:25:37 2018 -0400

    NFSv4: Fix locking in pnfs_generic_recover_commit_reqs
    
    commit d0fbb1d8a194c0ec0180c1d073ad709e45503a43 upstream.
    
    The use of the inode->i_lock was converted to a mutex, but we forgot
    to remove the old inode unlock/lock() pair that allowed the layout
    segment to be put inside the loop.
    
    Reported-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Fixes: e824f99adaaf1 ("NFSv4: Use a mutex to protect the per-inode commit...")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf23ba3737e097d80363b5f5aea6239a952a36a9
Author: Bill Baker <Bill.Baker@Oracle.com>
Date:   Tue Jun 19 16:24:58 2018 -0500

    NFSv4 client live hangs after live data migration recovery
    
    commit 0f90be132cbf1537d87a6a8b9e80867adac892f6 upstream.
    
    After a live data migration event at the NFS server, the client may send
    I/O requests to the wrong server, causing a live hang due to repeated
    recovery events.  On the wire, this will appear as an I/O request failing
    with NFS4ERR_BADSESSION, followed by successful CREATE_SESSION, repeatedly.
    NFS4ERR_BADSSESSION is returned because the session ID being used was
    issued by the other server and is not valid at the old server.
    
    The failure is caused by async worker threads having cached the transport
    (xprt) in the rpc_task structure.  After the migration recovery completes,
    the task is redispatched and the task resends the request to the wrong
    server based on the old value still present in tk_xprt.
    
    The solution is to recompute the tk_xprt field of the rpc_task structure
    so that the request goes to the correct server.
    
    Signed-off-by: Bill Baker <bill.baker@oracle.com>
    Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Helen Chao <helen.chao@oracle.com>
    Fixes: fb43d17210ba ("SUNRPC: Use the multipath iterator to assign a ...")
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec13c53dc59f82cfaa71a295430c0005a8836f27
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 4 12:59:58 2018 +0300

    pnfs/blocklayout: off by one in bl_map_stripe()
    
    commit 0914bb965e38a055e9245637aed117efbe976e91 upstream.
    
    "dev->nr_children" is the number of children which were parsed
    successfully in bl_parse_stripe().  It could be all of them and then, in
    that case, it is equal to v->stripe.volumes_count.  Either way, the >
    should be >= so that we don't go beyond the end of what we're supposed
    to.
    
    Fixes: 5c83746a0cf2 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org # 3.17+
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed480f2b9e86102b5d57fcd708915ae4f34add5b
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Wed Aug 15 23:56:45 2018 +0200

    block, bfq: return nbytes and not zero from struct cftype .write() method
    
    commit fc8ebd01deeb12728c83381f6ec923e4a192ffd3 upstream.
    
    The value that struct cftype .write() method returns is then directly
    returned to userspace as the value returned by write() syscall, so it
    should be the number of bytes actually written (or consumed) and not zero.
    
    Returning zero from write() syscall makes programs like /bin/echo or bash
    spin.
    
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Fixes: e21b7a0b9887 ("block, bfq: add full hierarchical scheduling and cgroups support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe806eb54bca42f854e2b74a08ebbba5a860f473
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Fri Aug 10 22:21:22 2018 -0700

    xtensa: increase ranges in ___invalidate_{i,d}cache_all
    
    commit fec3259c9f747c039f90e99570540114c8d81a14 upstream.
    
    Cache invalidation macros use cache line size to iterate over
    invalidated cache lines, assuming that all cache ways are invalidated by
    single instruction, but xtensa ISA recommends to not assume that for
    future compatibility:
      In some implementations all ways at index Addry-1..z are invalidated
      regardless of the specified way, but for future compatibility this
      behavior should not be assumed.
    
    Iterate over all cache ways in ___invalidate_icache_all and
    ___invalidate_dcache_all.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d78efe0412b1b60409d3c977717c4c2625560f4
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Fri Aug 10 20:43:48 2018 -0700

    xtensa: limit offsets in __loop_cache_{all,page}
    
    commit be75de25251f7cf3e399ca1f584716a95510d24a upstream.
    
    When building kernel for xtensa cores with big cache lines (e.g. 128
    bytes or more) __loop_cache_all and __loop_cache_page may generate
    assembly instructions with immediate fields that are too big. This
    results in the following build errors:
    
      arch/xtensa/mm/misc.S: Assembler messages:
      arch/xtensa/mm/misc.S:464: Error: operand 2 of 'diwbi' has invalid value '256'
      arch/xtensa/mm/misc.S:464: Error: operand 2 of 'diwbi' has invalid value '384'
      arch/xtensa/kernel/head.S: Assembler messages:
      arch/xtensa/kernel/head.S:172: Error: operand 2 of 'diu' has invalid value '256'
      arch/xtensa/kernel/head.S:172: Error: operand 2 of 'diu' has invalid value '384'
      arch/xtensa/kernel/head.S:176: Error: operand 2 of 'iiu' has invalid value '256'
      arch/xtensa/kernel/head.S:176: Error: operand 2 of 'iiu' has invalid value '384'
      arch/xtensa/kernel/head.S:255: Error: operand 2 of 'diwb' has invalid value '256'
      arch/xtensa/kernel/head.S:255: Error: operand 2 of 'diwb' has invalid value '384'
    
    Add parameter max_immed to these macros and use it to limit values of
    immediate operands. Extract common code of these macros into the new
    macro __loop_cache_unroll.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 025cc91f8c5290dc1bf2586baf3767547760e899
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu Aug 23 10:08:58 2018 +1000

    KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages
    
    commit 8cfbdbdc24815417a3ab35101ccf706b9a23ff17 upstream.
    
    Commit 76fa4975f3ed ("KVM: PPC: Check if IOMMU page is contained in
    the pinned physical page", 2018-07-17) added some checks to ensure
    that guest DMA mappings don't attempt to map more than the guest is
    entitled to access. However, errors in the logic mean that legitimate
    guest requests to map pages for DMA are being denied in some
    situations. Specifically, if the first page of the range passed to
    mm_iommu_get() is mapped with a normal page, and subsequent pages are
    mapped with transparent huge pages, we end up with mem->pageshift ==
    0. That means that the page size checks in mm_iommu_ua_to_hpa() and
    mm_iommu_up_to_hpa_rm() will always fail for every page in that
    region, and thus the guest can never map any memory in that region for
    DMA, typically leading to a flood of error messages like this:
    
      qemu-system-ppc64: VFIO_MAP_DMA: -22
      qemu-system-ppc64: vfio_dma_map(0x10005f47780, 0x800000000000000, 0x10000, 0x7fff63ff0000) = -22 (Invalid argument)
    
    The logic errors in mm_iommu_get() are:
    
      (a) use of 'ua' not 'ua + (i << PAGE_SHIFT)' in the find_linux_pte()
          call (meaning that find_linux_pte() returns the pte for the
          first address in the range, not the address we are currently up
          to);
      (b) use of 'pageshift' as the variable to receive the hugepage shift
          returned by find_linux_pte() - for a normal page this gets set
          to 0, leading to us setting mem->pageshift to 0 when we conclude
          that the pte returned by find_linux_pte() didn't match the page
          we were looking at;
      (c) comparing 'compshift', which is a page order, i.e. log base 2 of
          the number of pages, with 'pageshift', which is a log base 2 of
          the number of bytes.
    
    To fix these problems, this patch introduces 'cur_ua' to hold the
    current user address and uses that in the find_linux_pte() call;
    introduces 'pteshift' to hold the hugepage shift found by
    find_linux_pte(); and compares 'pteshift' with 'compshift +
    PAGE_SHIFT' rather than 'compshift'.
    
    The patch also moves the local_irq_restore to the point after the PTE
    pointer returned by find_linux_pte() has been dereferenced because
    otherwise the PTE could change underneath us, and adds a check to
    avoid doing the find_linux_pte() call once mem->pageshift has been
    reduced to PAGE_SHIFT, as an optimization.
    
    Fixes: 76fa4975f3ed ("KVM: PPC: Check if IOMMU page is contained in the pinned physical page")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58936d4d7b14bdeb26515b03dc9a3dbf255a709b
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Aug 22 16:43:39 2018 +0200

    KVM: VMX: fixes for vmentry_l1d_flush module parameter
    
    commit 0027ff2a75f9dcf0537ac0a65c5840b0e21a4950 upstream.
    
    Two bug fixes:
    
    1) missing entries in the l1d_param array; this can cause a host crash
    if an access attempts to reach the missing entry. Future-proof the get
    function against any overflows as well.  However, the two entries
    VMENTER_L1D_FLUSH_EPT_DISABLED and VMENTER_L1D_FLUSH_NOT_REQUIRED must
    not be accepted by the parse function, so disable them there.
    
    2) invalid values must be rejected even if the CPU does not have the
    bug, so test for them before checking boot_cpu_has(X86_BUG_L1TF)
    
    ... and a small refactoring, since the .cmd field is redundant with
    the index in the array.
    
    Reported-by: Bandan Das <bsd@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: a7b9020b06ec6d7c3f3b0d4ef1a9eba12654f4f7
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 015156f5017987d4164630d763937834dd44506e
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Tue Aug 14 10:34:42 2018 +0800

    PM / sleep: wakeup: Fix build error caused by missing SRCU support
    
    commit 3df6f61fff49632492490fb6e42646b803a9958a upstream.
    
    Commit ea0212f40c6 (power: auto select CONFIG_SRCU) made the code in
    drivers/base/power/wakeup.c use SRCU instead of RCU, but it forgot to
    select CONFIG_SRCU in Kconfig, which leads to the following build
    error if CONFIG_SRCU is not selected somewhere else:
    
    drivers/built-in.o: In function `wakeup_source_remove':
    (.text+0x3c6fc): undefined reference to `synchronize_srcu'
    drivers/built-in.o: In function `pm_print_active_wakeup_sources':
    (.text+0x3c7a8): undefined reference to `__srcu_read_lock'
    drivers/built-in.o: In function `pm_print_active_wakeup_sources':
    (.text+0x3c84c): undefined reference to `__srcu_read_unlock'
    drivers/built-in.o: In function `device_wakeup_arm_wake_irqs':
    (.text+0x3d1d8): undefined reference to `__srcu_read_lock'
    drivers/built-in.o: In function `device_wakeup_arm_wake_irqs':
    (.text+0x3d228): undefined reference to `__srcu_read_unlock'
    drivers/built-in.o: In function `device_wakeup_disarm_wake_irqs':
    (.text+0x3d24c): undefined reference to `__srcu_read_lock'
    drivers/built-in.o: In function `device_wakeup_disarm_wake_irqs':
    (.text+0x3d29c): undefined reference to `__srcu_read_unlock'
    drivers/built-in.o:(.data+0x4158): undefined reference to `process_srcu'
    
    Fix this error by selecting CONFIG_SRCU when PM_SLEEP is enabled.
    
    Fixes: ea0212f40c6 (power: auto select CONFIG_SRCU)
    Cc: 4.2+ <stable@vger.kernel.org> # 4.2+
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    [ rjw: Minor subject/changelog fixups ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 924383edf44c2a4190820853c6e33c0deb24d98a
Author: Henry Willard <henry.willard@oracle.com>
Date:   Tue Aug 14 17:01:02 2018 -0700

    cpufreq: governor: Avoid accessing invalid governor_data
    
    commit 2a3eb51e30b9ac66fe1b75877627a7e4aaeca24a upstream.
    
    If cppc_cpufreq.ko is deleted at the same time that tuned-adm is
    changing profiles, there is a small chance that a race can occur
    between cpufreq_dbs_governor_exit() and cpufreq_dbs_governor_limits()
    resulting in a system failure when the latter tries to use
    policy->governor_data that has been freed by the former.
    
    This patch uses gov_dbs_data_mutex to synchronize access.
    
    Fixes: e788892ba3cc (cpufreq: governor: Get rid of governor events)
    Signed-off-by: Henry Willard <henry.willard@oracle.com>
    [ rjw: Subject, minor white space adjustment ]
    Cc: 4.8+ <stable@vger.kernel.org> # 4.8+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 256f63f52ec3fc0aa3a62d4c8f710ea39b7b7fdc
Author: Peter Kalauskas <peskal@google.com>
Date:   Tue Aug 21 21:54:02 2018 -0700

    drivers/block/zram/zram_drv.c: fix bug storing backing_dev
    
    commit c8bd134a4bddafe5917d163eea73873932c15e83 upstream.
    
    The call to strlcpy in backing_dev_store is incorrect. It should take
    the size of the destination buffer instead of the size of the source
    buffer.  Additionally, ignore the newline character (\n) when reading
    the new file_name buffer. This makes it possible to set the backing_dev
    as follows:
    
            echo /dev/sdX > /sys/block/zram0/backing_dev
    
    The reason it worked before was the fact that strlcpy() copies 'len - 1'
    bytes, which is strlen(buf) - 1 in our case, so it accidentally didn't
    copy the trailing new line symbol.  Which also means that "echo -n
    /dev/sdX" most likely was broken.
    
    Signed-off-by: Peter Kalauskas <peskal@google.com>
    Link: http://lkml.kernel.org/r/20180813061623.GC64836@rodete-desktop-imager.corp.google.com
    Acked-by: Minchan Kim <minchan@kernel.org>
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: <stable@vger.kernel.org>    [4.14+]
    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 8840ca570f2be567db83af3b62a214bc683a9991
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Tue Jul 17 16:05:38 2018 +0300

    ovl: fix wrong use of impure dir cache in ovl_iterate()
    
    commit 67810693077afc1ebf9e1646af300436cb8103c2 upstream.
    
    Only upper dir can be impure, but if we are in the middle of
    iterating a lower real dir, dir could be copied up and marked
    impure. We only want the impure cache if we started iterating
    a real upper dir to begin with.
    
    Aditya Kali reported that the following reproducer hits the
    WARN_ON(!cache->refcount) in ovl_get_cache():
    
     docker run --rm drupal:8.5.4-fpm-alpine \
        sh -c 'cd /var/www/html/vendor/symfony && \
               chown -R www-data:www-data . && ls -l .'
    
    Reported-by: Aditya Kali <adityakali@google.com>
    Tested-by: Aditya Kali <adityakali@google.com>
    Fixes: 4edb83bb1041 ('ovl: constant d_ino for non-merge dirs')
    Cc: <stable@vger.kernel.org> # v4.14
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9ceea207882ccc983c6cda4db37acbb391f7e4
Author: Rafael David Tinoco <rafael.tinoco@linaro.org>
Date:   Fri Jul 6 14:28:33 2018 -0300

    mfd: hi655x: Fix regmap area declared size for hi655x
    
    commit 6afebb70ee7a4bde106dc1a875e7ac7997248f84 upstream.
    
    Fixes https://bugs.linaro.org/show_bug.cgi?id=3903
    
    LTP Functional tests have caused a bad paging request when triggering
    the regmap_read_debugfs() logic of the device PMIC Hi6553 (reading
    regmap/f8000000.pmic/registers file during read_all test):
    
    Unable to handle kernel paging request at virtual address ffff0
    [ffff00000984e000] pgd=0000000077ffe803, pud=0000000077ffd803,0
    Internal error: Oops: 96000007 [#1] SMP
    ...
    Hardware name: HiKey Development Board (DT)
    ...
    Call trace:
     regmap_mmio_read8+0x24/0x40
     regmap_mmio_read+0x48/0x70
     _regmap_bus_reg_read+0x38/0x48
     _regmap_read+0x68/0x170
     regmap_read+0x50/0x78
     regmap_read_debugfs+0x1a0/0x308
     regmap_map_read_file+0x48/0x58
     full_proxy_read+0x68/0x98
     __vfs_read+0x48/0x80
     vfs_read+0x94/0x150
     SyS_read+0x6c/0xd8
     el0_svc_naked+0x30/0x34
    Code: aa1e03e0 d503201f f9400280 8b334000 (39400000)
    
    Investigations have showed that, when triggered by debugfs read()
    handler, the mmio regmap logic was reading a bigger (16k) register area
    than the one mapped by devm_ioremap_resource() during hi655x-pmic probe
    time (4k).
    
    This commit changes hi655x's max register, according to HW specs, to be
    the same as the one declared in the pmic device in hi6220's dts, fixing
    the issue.
    
    Cc: <stable@vger.kernel.org> #v4.9 #v4.14 #v4.16 #v4.17
    Signed-off-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f6789cad6472a09200a60928ef6c56ae457ed38
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Aug 9 15:37:59 2018 -0400

    uprobes: Use synchronize_rcu() not synchronize_sched()
    
    commit 016f8ffc48cb01d1e7701649c728c5d2e737d295 upstream.
    
    While debugging another bug, I was looking at all the synchronize*()
    functions being used in kernel/trace, and noticed that trace_uprobes was
    using synchronize_sched(), with a comment to synchronize with
    {u,ret}_probe_trace_func(). When looking at those functions, the data is
    protected with "rcu_read_lock()" and not with "rcu_read_lock_sched()". This
    is using the wrong synchronize_*() function.
    
    Link: http://lkml.kernel.org/r/20180809160553.469e1e32@gandalf.local.home
    
    Cc: stable@vger.kernel.org
    Fixes: 70ed91c6ec7f8 ("tracing/uprobes: Support ftrace_event_file base multibuffer")
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a36e2aa90576263341b3179d47cfe733be7a8085
Author: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Date:   Fri Jul 20 15:16:42 2018 +0530

    livepatch: Validate module/old func name length
    
    commit 6e9df95b76cad18f7b217bdad7bb8a26d63b8c47 upstream.
    
    livepatch module author can pass module name/old function name with more
    than the defined character limit. With obj->name length greater than
    MODULE_NAME_LEN, the livepatch module gets loaded but waits forever on
    the module specified by obj->name to be loaded. It also populates a /sys
    directory with an untruncated object name.
    
    In the case of funcs->old_name length greater then KSYM_NAME_LEN, it
    would not match against any of the symbol table entries. Instead loop
    through the symbol table comparing them against a nonexisting function,
    which can be avoided.
    
    The same issues apply, to misspelled/incorrect names. At least gatekeep
    the modules with over the limit string length, by checking for their
    length during livepatch module registration.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
    Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68a735eb9a16147a85024c47e6176fe4599b91ef
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Sep 5 16:29:49 2018 -0400

    printk/tracing: Do not trace printk_nmi_enter()
    
    commit d1c392c9e2a301f38998a353f467f76414e38725 upstream.
    
    I hit the following splat in my tests:
    
    ------------[ cut here ]------------
    IRQs not enabled as expected
    WARNING: CPU: 3 PID: 0 at kernel/time/tick-sched.c:982 tick_nohz_idle_enter+0x44/0x8c
    Modules linked in: ip6t_REJECT nf_reject_ipv6 ip6table_filter ip6_tables ipv6
    CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.19.0-rc2-test+ #2
    Hardware name: MSI MS-7823/CSM-H87M-G43 (MS-7823), BIOS V1.6 02/22/2014
    EIP: tick_nohz_idle_enter+0x44/0x8c
    Code: ec 05 00 00 00 75 26 83 b8 c0 05 00 00 00 75 1d 80 3d d0 36 3e c1 00
    75 14 68 94 63 12 c1 c6 05 d0 36 3e c1 01 e8 04 ee f8 ff <0f> 0b 58 fa bb a0
    e5 66 c1 e8 25 0f 04 00 64 03 1d 28 31 52 c1 8b
    EAX: 0000001c EBX: f26e7f8c ECX: 00000006 EDX: 00000007
    ESI: f26dd1c0 EDI: 00000000 EBP: f26e7f40 ESP: f26e7f38
    DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 EFLAGS: 00010296
    CR0: 80050033 CR2: 0813c6b0 CR3: 2f342000 CR4: 001406f0
    Call Trace:
     do_idle+0x33/0x202
     cpu_startup_entry+0x61/0x63
     start_secondary+0x18e/0x1ed
     startup_32_smp+0x164/0x168
    irq event stamp: 18773830
    hardirqs last  enabled at (18773829): [<c040150c>] trace_hardirqs_on_thunk+0xc/0x10
    hardirqs last disabled at (18773830): [<c040151c>] trace_hardirqs_off_thunk+0xc/0x10
    softirqs last  enabled at (18773824): [<c0ddaa6f>] __do_softirq+0x25f/0x2bf
    softirqs last disabled at (18773767): [<c0416bbe>] call_on_stack+0x45/0x4b
    ---[ end trace b7c64aa79e17954a ]---
    
    After a bit of debugging, I found what was happening. This would trigger
    when performing "perf" with a high NMI interrupt rate, while enabling and
    disabling function tracer. Ftrace uses breakpoints to convert the nops at
    the start of functions to calls to the function trampolines. The breakpoint
    traps disable interrupts and this makes calls into lockdep via the
    trace_hardirqs_off_thunk in the entry.S code. What happens is the following:
    
      do_idle {
    
        [interrupts enabled]
    
        <interrupt> [interrupts disabled]
            TRACE_IRQS_OFF [lockdep says irqs off]
            [...]
            TRACE_IRQS_IRET
                test if pt_regs say return to interrupts enabled [yes]
                TRACE_IRQS_ON [lockdep says irqs are on]
    
                <nmi>
                    nmi_enter() {
                        printk_nmi_enter() [traced by ftrace]
                        [ hit ftrace breakpoint ]
                        <breakpoint exception>
                            TRACE_IRQS_OFF [lockdep says irqs off]
                            [...]
                            TRACE_IRQS_IRET [return from breakpoint]
                               test if pt_regs say interrupts enabled [no]
                               [iret back to interrupt]
               [iret back to code]
    
        tick_nohz_idle_enter() {
    
            lockdep_assert_irqs_enabled() [lockdep say no!]
    
    Although interrupts are indeed enabled, lockdep thinks it is not, and since
    we now do asserts via lockdep, it gives a false warning. The issue here is
    that printk_nmi_enter() is called before lockdep_off(), which disables
    lockdep (for this reason) in NMIs. By simply not allowing ftrace to see
    printk_nmi_enter() (via notrace annotation) we keep lockdep from getting
    confused.
    
    Cc: stable@vger.kernel.org
    Fixes: 42a0bb3f71383 ("printk/nmi: generic solution for safe printk in NMI")
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Acked-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbde057aa0e7b2fcca06e7f6ba28b8d76a041ce9
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Aug 16 16:08:37 2018 -0400

    tracing/blktrace: Fix to allow setting same value
    
    commit 757d9140072054528b13bbe291583d9823cde195 upstream.
    
    Masami Hiramatsu reported:
    
      Current trace-enable attribute in sysfs returns an error
      if user writes the same setting value as current one,
      e.g.
    
        # cat /sys/block/sda/trace/enable
        0
        # echo 0 > /sys/block/sda/trace/enable
        bash: echo: write error: Invalid argument
        # echo 1 > /sys/block/sda/trace/enable
        # echo 1 > /sys/block/sda/trace/enable
        bash: echo: write error: Device or resource busy
    
      But this is not a preferred behavior, it should ignore
      if new setting is same as current one. This fixes the
      problem as below.
    
        # cat /sys/block/sda/trace/enable
        0
        # echo 0 > /sys/block/sda/trace/enable
        # echo 1 > /sys/block/sda/trace/enable
        # echo 1 > /sys/block/sda/trace/enable
    
    Link: http://lkml.kernel.org/r/20180816103802.08678002@gandalf.local.home
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-block@vger.kernel.org
    Cc: stable@vger.kernel.org
    Fixes: cd649b8bb830d ("blktrace: remove sysfs_blk_trace_enable_show/store()")
    Reported-by: Masami Hiramatsu <mhiramat@kernel.org>
    Tested-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c9016757e3bf695a6716946d7fd5f0f486a475a
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Aug 1 15:40:57 2018 -0400

    tracing: Do not call start/stop() functions when tracing_on does not change
    
    commit f143641bfef9a4a60c57af30de26c63057e7e695 upstream.
    
    Currently, when one echo's in 1 into tracing_on, the current tracer's
    "start()" function is executed, even if tracing_on was already one. This can
    lead to strange side effects. One being that if the hwlat tracer is enabled,
    and someone does "echo 1 > tracing_on" into tracing_on, the hwlat tracer's
    start() function is called again which will recreate another kernel thread,
    and make it unable to remove the old one.
    
    Link: http://lkml.kernel.org/r/1533120354-22923-1-git-send-email-erica.bugden@linutronix.de
    
    Cc: stable@vger.kernel.org
    Fixes: 2df8f8a6a897e ("tracing: Fix regression with irqsoff tracer and tracing_on file")
    Reported-by: Erica Bugden <erica.bugden@linutronix.de>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b4c940dccbe29029c75a4bf7016f864425057a9
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jul 4 11:05:55 2018 +0200

    rtc: omap: fix potential crash on power off
    
    commit 5c8b84f410b3819d14cb1ebf32e4b3714b5a6e0b upstream.
    
    Do not set the system power-off callback and omap power-off rtc pointer
    until we're done setting up our device to avoid leaving stale pointers
    around after a late probe error.
    
    Fixes: 97ea1906b3c2 ("rtc: omap: Support ext_wakeup configuration")
    Cc: stable <stable@vger.kernel.org>     # 4.9
    Cc: Marcin Niestroj <m.niestroj@grinn-global.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Reviewed-by: Marcin Niestroj <m.niestroj@grinn-global.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbac5374b537ad81ce70d8434e1364b549e3d4a1
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Jun 19 16:00:27 2018 -0700

    vmw_balloon: fix VMCI use when balloon built into kernel
    
    commit c3cc1b0fc27508da53fe955a3b23d03964410682 upstream.
    
    Currently, when all modules, including VMCI and VMware balloon are built
    into the kernel, the initialization of the balloon happens before the
    VMCI is probed. As a result, the balloon fails to initialize the VMCI
    doorbell, which it uses to get asynchronous requests for balloon size
    changes.
    
    The problem can be seen in the logs, in the form of the following
    message:
            "vmw_balloon: failed to initialize vmci doorbell"
    
    The driver would work correctly but slightly less efficiently, probing
    for requests periodically. This patch changes the balloon to be
    initialized using late_initcall() instead of module_init() to address
    this issue. It does not address a situation in which VMCI is built as a
    module and the balloon is built into the kernel.
    
    Fixes: 48e3d668b790 ("VMware balloon: Enable notification via VMCI")
    Cc: stable@vger.kernel.org
    Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89667b269e8716390fe558ab35e82d65013b13cd
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Jun 19 16:00:26 2018 -0700

    vmw_balloon: VMCI_DOORBELL_SET does not check status
    
    commit ce664331b2487a5d244a51cbdd8cb54f866fbe5d upstream.
    
    When vmballoon_vmci_init() sets a doorbell using VMCI_DOORBELL_SET, for
    some reason it does not consider the status and looks at the result.
    However, the hypervisor does not update the result - it updates the
    status. This might cause VMCI doorbell not to be enabled, resulting in
    degraded performance.
    
    Fixes: 48e3d668b790 ("VMware balloon: Enable notification via VMCI")
    Cc: stable@vger.kernel.org
    Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3b403844db50f87052d4e0387f384e24e052f44
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Jun 19 16:00:25 2018 -0700

    vmw_balloon: do not use 2MB without batching
    
    commit 5081efd112560d3febb328e627176235b250d59d upstream.
    
    If the hypervisor sets 2MB batching is on, while batching is cleared,
    the balloon code breaks. In this case the legacy mechanism is used with
    2MB page. The VM would report a 2MB page is ballooned, and the
    hypervisor would only take the first 4KB.
    
    While the hypervisor should not report such settings, make the code more
    robust by not enabling 2MB support without batching.
    
    Fixes: 365bd7ef7ec8e ("VMware balloon: Support 2m page ballooning.")
    Cc: stable@vger.kernel.org
    Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
    Signed-off-by: Nadav Amit <nadav.amit@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fd44e90903c0f8eb3bee8160280ebf749e992a9
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Jun 19 16:00:24 2018 -0700

    vmw_balloon: fix inflation of 64-bit GFNs
    
    commit 09755690c6b7c1eabdc4651eb3b276f8feb1e447 upstream.
    
    When balloon batching is not supported by the hypervisor, the guest
    frame number (GFN) must fit in 32-bit. However, due to a bug, this check
    was mistakenly ignored. In practice, when total RAM is greater than
    16TB, the balloon does not work currently, making this bug unlikely to
    happen.
    
    Fixes: ef0f8f112984 ("VMware balloon: partially inline vmballoon_reserve_page.")
    Cc: stable@vger.kernel.org
    Reviewed-by: Xavier Deguillard <xdeguillard@vmware.com>
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0a8e047734ce3dcce51715108ff666829fa539e
Author: Chanwoo Choi <cw00.choi@samsung.com>
Date:   Thu Jun 14 11:16:29 2018 +0900

    extcon: Release locking when sending the notification of connector state
    
    commit 8a9dbb779fe882325b9a0238494a7afaff2eb444 upstream.
    
    Previously, extcon used the spinlock before calling the notifier_call_chain
    to prevent the scheduled out of task and to prevent the notification delay.
    When spinlock is locked for sending the notification, deadlock issue
    occured on the side of extcon consumer device. To fix this issue,
    extcon consumer device should always use the work. it is always not
    reasonable to use work.
    
    To fix this issue on extcon consumer device, release locking when sending
    the notification of connector state.
    
    Fixes: ab11af049f88 ("extcon: Add the synchronization extcon APIs to support the notification")
    Cc: stable@vger.kernel.org
    Cc: Roger Quadros <rogerq@ti.com>
    Cc: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f9481902f0b65292addc62771e2c6f59149044d
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Jul 27 09:42:45 2018 +0300

    iio: ad9523: Fix return value for ad952x_store()
    
    commit 9a5094ca29ea9b1da301b31fd377c0c0c4c23034 upstream.
    
    A sysfs write callback function needs to either return the number of
    consumed characters or an error.
    
    The ad952x_store() function currently returns 0 if the input value was "0",
    this will signal that no characters have been consumed and the function
    will be called repeatedly in a loop indefinitely. Fix this by returning
    number of supplied characters to indicate that the whole input string has
    been consumed.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Fixes: cd1678f96329 ("iio: frequency: New driver for AD9523 SPI Low Jitter Clock Generator")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4d3a25111dc6f907a78bf1d333af10b09bc7e59
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Jun 25 11:03:07 2018 +0300

    iio: ad9523: Fix displayed phase
    
    commit 5a4e33c1c53ae7d4425f7d94e60e4458a37b349e upstream.
    
    Fix the displayed phase for the ad9523 driver. Currently the most
    significant decimal place is dropped and all other digits are shifted one
    to the left. This is due to a multiplication by 10, which is not necessary,
    so remove it.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Fixes: cd1678f9632 ("iio: frequency: New driver for AD9523 SPI Low Jitter Clock Generator")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b86374912fee81fc266355b2a911cbbb92ffff54
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Sat Jul 7 12:44:01 2018 -0500

    iio: sca3000: Fix missing return in switch
    
    commit c5b974bee9d2ceae4c441ae5a01e498c2674e100 upstream.
    
    The IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY case is missing a
    return and will fall through to the default case and errorenously
    return -EINVAL.
    
    Fix this by adding in missing *return ret*.
    
    Fixes: 626f971b5b07 ("staging:iio:accel:sca3000 Add write support to the low pass filter control")
    Reported-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91b48a9ced0683d0f69385a2d08b70574603fb27
Author: Dexuan Cui <decui@microsoft.com>
Date:   Thu Aug 2 03:08:23 2018 +0000

    Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind()
    
    commit d3b26dd7cb0e3433bfd3c1d4dcf74c6039bb49fb upstream.
    
    Before setting channel->rescind in vmbus_rescind_cleanup(), we should make
    sure the channel callback won't run any more, otherwise a high-level
    driver like pci_hyperv, which may be infinitely waiting for the host VSP's
    response and notices the channel has been rescinded, can't safely give
    up: e.g., in hv_pci_protocol_negotiation() -> wait_for_response(), it's
    unsafe to exit from wait_for_response() and proceed with the on-stack
    variable "comp_pkt" popped. The issue was originally spotted by
    Michael Kelley <mikelley@microsoft.com>.
    
    In vmbus_close_internal(), the patch also minimizes the range protected by
    disabling/enabling channel->callback_event: we don't really need that for
    the whole function.
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Cc: stable@vger.kernel.org
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d286cfd4527711d7711674b4214099c42d216e85
Author: Tycho Andersen <tycho@tycho.ws>
Date:   Fri Jul 6 10:24:57 2018 -0600

    uart: fix race between uart_put_char() and uart_shutdown()
    
    commit a5ba1d95e46ecaea638ddd7cd144107c783acb5d upstream.
    
    We have reports of the following crash:
    
        PID: 7 TASK: ffff88085c6d61c0 CPU: 1 COMMAND: "kworker/u25:0"
        #0 [ffff88085c6db710] machine_kexec at ffffffff81046239
        #1 [ffff88085c6db760] crash_kexec at ffffffff810fc248
        #2 [ffff88085c6db830] oops_end at ffffffff81008ae7
        #3 [ffff88085c6db860] no_context at ffffffff81050b8f
        #4 [ffff88085c6db8b0] __bad_area_nosemaphore at ffffffff81050d75
        #5 [ffff88085c6db900] bad_area_nosemaphore at ffffffff81050e83
        #6 [ffff88085c6db910] __do_page_fault at ffffffff8105132e
        #7 [ffff88085c6db9b0] do_page_fault at ffffffff8105152c
        #8 [ffff88085c6db9c0] page_fault at ffffffff81a3f122
        [exception RIP: uart_put_char+149]
        RIP: ffffffff814b67b5 RSP: ffff88085c6dba78 RFLAGS: 00010006
        RAX: 0000000000000292 RBX: ffffffff827c5120 RCX: 0000000000000081
        RDX: 0000000000000000 RSI: 000000000000005f RDI: ffffffff827c5120
        RBP: ffff88085c6dba98 R8: 000000000000012c R9: ffffffff822ea320
        R10: ffff88085fe4db04 R11: 0000000000000001 R12: ffff881059f9c000
        R13: 0000000000000001 R14: 000000000000005f R15: 0000000000000fba
        ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
        #9 [ffff88085c6dbaa0] tty_put_char at ffffffff81497544
        #10 [ffff88085c6dbac0] do_output_char at ffffffff8149c91c
        #11 [ffff88085c6dbae0] __process_echoes at ffffffff8149cb8b
        #12 [ffff88085c6dbb30] commit_echoes at ffffffff8149cdc2
        #13 [ffff88085c6dbb60] n_tty_receive_buf_fast at ffffffff8149e49b
        #14 [ffff88085c6dbbc0] __receive_buf at ffffffff8149ef5a
        #15 [ffff88085c6dbc20] n_tty_receive_buf_common at ffffffff8149f016
        #16 [ffff88085c6dbca0] n_tty_receive_buf2 at ffffffff8149f194
        #17 [ffff88085c6dbcb0] flush_to_ldisc at ffffffff814a238a
        #18 [ffff88085c6dbd50] process_one_work at ffffffff81090be2
        #19 [ffff88085c6dbe20] worker_thread at ffffffff81091b4d
        #20 [ffff88085c6dbeb0] kthread at ffffffff81096384
        #21 [ffff88085c6dbf50] ret_from_fork at ffffffff81a3d69f​
    
    after slogging through some dissasembly:
    
    ffffffff814b6720 <uart_put_char>:
    ffffffff814b6720:       55                      push   %rbp
    ffffffff814b6721:       48 89 e5                mov    %rsp,%rbp
    ffffffff814b6724:       48 83 ec 20             sub    $0x20,%rsp
    ffffffff814b6728:       48 89 1c 24             mov    %rbx,(%rsp)
    ffffffff814b672c:       4c 89 64 24 08          mov    %r12,0x8(%rsp)
    ffffffff814b6731:       4c 89 6c 24 10          mov    %r13,0x10(%rsp)
    ffffffff814b6736:       4c 89 74 24 18          mov    %r14,0x18(%rsp)
    ffffffff814b673b:       e8 b0 8e 58 00          callq  ffffffff81a3f5f0 <mcount>
    ffffffff814b6740:       4c 8b a7 88 02 00 00    mov    0x288(%rdi),%r12
    ffffffff814b6747:       45 31 ed                xor    %r13d,%r13d
    ffffffff814b674a:       41 89 f6                mov    %esi,%r14d
    ffffffff814b674d:       49 83 bc 24 70 01 00    cmpq   $0x0,0x170(%r12)
    ffffffff814b6754:       00 00
    ffffffff814b6756:       49 8b 9c 24 80 01 00    mov    0x180(%r12),%rbx
    ffffffff814b675d:       00
    ffffffff814b675e:       74 2f                   je     ffffffff814b678f <uart_put_char+0x6f>
    ffffffff814b6760:       48 89 df                mov    %rbx,%rdi
    ffffffff814b6763:       e8 a8 67 58 00          callq  ffffffff81a3cf10 <_raw_spin_lock_irqsave>
    ffffffff814b6768:       41 8b 8c 24 78 01 00    mov    0x178(%r12),%ecx
    ffffffff814b676f:       00
    ffffffff814b6770:       89 ca                   mov    %ecx,%edx
    ffffffff814b6772:       f7 d2                   not    %edx
    ffffffff814b6774:       41 03 94 24 7c 01 00    add    0x17c(%r12),%edx
    ffffffff814b677b:       00
    ffffffff814b677c:       81 e2 ff 0f 00 00       and    $0xfff,%edx
    ffffffff814b6782:       75 23                   jne    ffffffff814b67a7 <uart_put_char+0x87>
    ffffffff814b6784:       48 89 c6                mov    %rax,%rsi
    ffffffff814b6787:       48 89 df                mov    %rbx,%rdi
    ffffffff814b678a:       e8 e1 64 58 00          callq  ffffffff81a3cc70 <_raw_spin_unlock_irqrestore>
    ffffffff814b678f:       44 89 e8                mov    %r13d,%eax
    ffffffff814b6792:       48 8b 1c 24             mov    (%rsp),%rbx
    ffffffff814b6796:       4c 8b 64 24 08          mov    0x8(%rsp),%r12
    ffffffff814b679b:       4c 8b 6c 24 10          mov    0x10(%rsp),%r13
    ffffffff814b67a0:       4c 8b 74 24 18          mov    0x18(%rsp),%r14
    ffffffff814b67a5:       c9                      leaveq
    ffffffff814b67a6:       c3                      retq
    ffffffff814b67a7:       49 8b 94 24 70 01 00    mov    0x170(%r12),%rdx
    ffffffff814b67ae:       00
    ffffffff814b67af:       48 63 c9                movslq %ecx,%rcx
    ffffffff814b67b2:       41 b5 01                mov    $0x1,%r13b
    ffffffff814b67b5:       44 88 34 0a             mov    %r14b,(%rdx,%rcx,1)
    ffffffff814b67b9:       41 8b 94 24 78 01 00    mov    0x178(%r12),%edx
    ffffffff814b67c0:       00
    ffffffff814b67c1:       83 c2 01                add    $0x1,%edx
    ffffffff814b67c4:       81 e2 ff 0f 00 00       and    $0xfff,%edx
    ffffffff814b67ca:       41 89 94 24 78 01 00    mov    %edx,0x178(%r12)
    ffffffff814b67d1:       00
    ffffffff814b67d2:       eb b0                   jmp    ffffffff814b6784 <uart_put_char+0x64>
    ffffffff814b67d4:       66 66 66 2e 0f 1f 84    data32 data32 nopw %cs:0x0(%rax,%rax,1)
    ffffffff814b67db:       00 00 00 00 00
    
    for our build, this is crashing at:
    
        circ->buf[circ->head] = c;
    
    Looking in uart_port_startup(), it seems that circ->buf (state->xmit.buf)
    protected by the "per-port mutex", which based on uart_port_check() is
    state->port.mutex. Indeed, the lock acquired in uart_put_char() is
    uport->lock, i.e. not the same lock.
    
    Anyway, since the lock is not acquired, if uart_shutdown() is called, the
    last chunk of that function may release state->xmit.buf before its assigned
    to null, and cause the race above.
    
    To fix it, let's lock uport->lock when allocating/deallocating
    state->xmit.buf in addition to the per-port mutex.
    
    v2: switch to locking uport->lock on allocation/deallocation instead of
        locking the per-port mutex in uart_put_char. Note that since
        uport->lock is a spin lock, we have to switch the allocation to
        GFP_ATOMIC.
    v3: move the allocation outside the lock, so we can switch back to
        GFP_KERNEL
    
    Signed-off-by: Tycho Andersen <tycho@tycho.ws>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5044eb05026e9138ad3a31879bc752009f9248eb
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Aug 10 11:23:56 2018 -0400

    dm crypt: don't decrease device limits
    
    commit bc9e9cf0401f18e33b78d4c8a518661b8346baf7 upstream.
    
    dm-crypt should only increase device limits, it should not decrease them.
    
    This fixes a bug where the user could creates a crypt device with 1024
    sector size on the top of scsi device that had 4096 logical block size.
    The limit 4096 would be lost and the user could incorrectly send
    1024-I/Os to the crypt device.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f961be8944130e94ce32c662a748e6f386d666ca
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Thu Aug 9 12:38:28 2018 +0200

    dm cache metadata: set dirty on all cache blocks after a crash
    
    commit 5b1fe7bec8a8d0cc547a22e7ddc2bd59acd67de4 upstream.
    
    Quoting Documentation/device-mapper/cache.txt:
    
      The 'dirty' state for a cache block changes far too frequently for us
      to keep updating it on the fly.  So we treat it as a hint.  In normal
      operation it will be written when the dm device is suspended.  If the
      system crashes all cache blocks will be assumed dirty when restarted.
    
    This got broken in commit f177940a8091 ("dm cache metadata: switch to
    using the new cursor api for loading metadata") in 4.9, which removed
    the code that consulted cmd->clean_when_opened (CLEAN_SHUTDOWN on-disk
    flag) when loading cache blocks.  This results in data corruption on an
    unclean shutdown with dirty cache blocks on the fast device.  After the
    crash those blocks are considered clean and may get evicted from the
    cache at any time.  This can be demonstrated by doing a lot of reads
    to trigger individual evictions, but uncache is more predictable:
    
      ### Disable auto-activation in lvm.conf to be able to do uncache in
      ### time (i.e. see uncache doing flushing) when the fix is applied.
    
      # xfs_io -d -c 'pwrite -b 4M -S 0xaa 0 1G' /dev/vdb
      # vgcreate vg_cache /dev/vdb /dev/vdc
      # lvcreate -L 1G -n lv_slowdev vg_cache /dev/vdb
      # lvcreate -L 512M -n lv_cachedev vg_cache /dev/vdc
      # lvcreate -L 256M -n lv_metadev vg_cache /dev/vdc
      # lvconvert --type cache-pool --cachemode writeback vg_cache/lv_cachedev --poolmetadata vg_cache/lv_metadev
      # lvconvert --type cache vg_cache/lv_slowdev --cachepool vg_cache/lv_cachedev
      # xfs_io -d -c 'pwrite -b 4M -S 0xbb 0 512M' /dev/mapper/vg_cache-lv_slowdev
      # xfs_io -d -c 'pread -v 254M 512' /dev/mapper/vg_cache-lv_slowdev | head -n 2
      0fe00000:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      0fe00010:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      # dmsetup status vg_cache-lv_slowdev
      0 2097152 cache 8 27/65536 128 8192/8192 1 100 0 0 0 8192 7065 2 metadata2 writeback 2 migration_threshold 2048 smq 0 rw -
                                                                ^^^^
                                    7065 * 64k = 441M yet to be written to the slow device
      # echo b >/proc/sysrq-trigger
    
      # vgchange -ay vg_cache
      # xfs_io -d -c 'pread -v 254M 512' /dev/mapper/vg_cache-lv_slowdev | head -n 2
      0fe00000:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      0fe00010:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      # lvconvert --uncache vg_cache/lv_slowdev
      Flushing 0 blocks for cache vg_cache/lv_slowdev.
      Logical volume "lv_cachedev" successfully removed
      Logical volume vg_cache/lv_slowdev is not cached.
      # xfs_io -d -c 'pread -v 254M 512' /dev/mapper/vg_cache-lv_slowdev | head -n 2
      0fe00000:  aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa  ................
      0fe00010:  aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa  ................
    
    This is the case with both v1 and v2 cache pool metatata formats.
    
    After applying this patch:
    
      # vgchange -ay vg_cache
      # xfs_io -d -c 'pread -v 254M 512' /dev/mapper/vg_cache-lv_slowdev | head -n 2
      0fe00000:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      0fe00010:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      # lvconvert --uncache vg_cache/lv_slowdev
      Flushing 3724 blocks for cache vg_cache/lv_slowdev.
      ...
      Flushing 71 blocks for cache vg_cache/lv_slowdev.
      Logical volume "lv_cachedev" successfully removed
      Logical volume vg_cache/lv_slowdev is not cached.
      # xfs_io -d -c 'pread -v 254M 512' /dev/mapper/vg_cache-lv_slowdev | head -n 2
      0fe00000:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      0fe00010:  bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
    
    Cc: stable@vger.kernel.org
    Fixes: f177940a8091 ("dm cache metadata: switch to using the new cursor api for loading metadata")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7227e6044be9e0a0617346cd54baa384298b18b
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Thu Aug 2 16:08:52 2018 -0400

    dm cache metadata: save in-core policy_hint_size to on-disk superblock
    
    commit fd2fa95416188a767a63979296fa3e169a9ef5ec upstream.
    
    policy_hint_size starts as 0 during __write_initial_superblock().  It
    isn't until the policy is loaded that policy_hint_size is set in-core
    (cmd->policy_hint_size).  But it never got recorded in the on-disk
    superblock because __commit_transaction() didn't deal with transfering
    the in-core cmd->policy_hint_size to the on-disk superblock.
    
    The in-core cmd->policy_hint_size gets initialized by metadata_open()'s
    __begin_transaction_flags() which re-reads all superblock fields.
    Because the superblock's policy_hint_size was never properly stored, when
    the cache was created, hints_array_available() would always return false
    when re-activating a previously created cache.  This means
    __load_mappings() always considered the hints invalid and never made use
    of the hints (these hints served to optimize).
    
    Another detremental side-effect of this oversight is the cache_check
    utility would fail with: "invalid hint width: 0"
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bef88257145fd4f8abf0c0f92ecdeafbd96739e
Author: Hou Tao <houtao1@huawei.com>
Date:   Thu Aug 2 16:18:24 2018 +0800

    dm thin: stop no_space_timeout worker when switching to write-mode
    
    commit 75294442d896f2767be34f75aca7cc2b0d01301f upstream.
    
    Now both check_for_space() and do_no_space_timeout() will read & write
    pool->pf.error_if_no_space.  If these functions run concurrently, as
    shown in the following case, the default setting of "queue_if_no_space"
    can get lost.
    
    precondition:
        * error_if_no_space = false (aka "queue_if_no_space")
        * pool is in Out-of-Data-Space (OODS) mode
        * no_space_timeout worker has been queued
    
    CPU 0:                          CPU 1:
    // delete a thin device
    process_delete_mesg()
    // check_for_space() invoked by commit()
    set_pool_mode(pool, PM_WRITE)
        pool->pf.error_if_no_space = \
         pt->requested_pf.error_if_no_space
    
                                    // timeout, pool is still in OODS mode
                                    do_no_space_timeout
                                        // "queue_if_no_space" config is lost
                                        pool->pf.error_if_no_space = true
        pool->pf.mode = new_mode
    
    Fix it by stopping no_space_timeout worker when switching to write mode.
    
    Fixes: bcc696fac11f ("dm thin: stay in out-of-data-space mode once no_space_timeout expires")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f4b1c5c4c8a566ba5debc9e1a613de5e540c9ae
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Jul 3 20:13:25 2018 +0200

    dm integrity: change 'suspending' variable from bool to int
    
    commit c21b16392701543d61e366dca84e15fe7f0cf0cf upstream.
    
    Early alpha processors can't write a byte or short atomically - they
    read 8 bytes, modify the byte or two bytes in registers and write back
    8 bytes.
    
    The modification of the variable "suspending" may race with
    modification of the variable "failed".  Fix this by changing
    "suspending" to an int.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f04d296f24b8a89c48eba775260d772834f9a6c
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Fri Jul 20 11:27:30 2018 +0200

    net/9p/trans_fd.c: fix race-condition by flushing workqueue before the kfree()
    
    commit 430ac66eb4c5b5c4eb846b78ebf65747510b30f1 upstream.
    
    The patch adds the flush in p9_mux_poll_stop() as it the function used by
    p9_conn_destroy(), in turn called by p9_fd_close() to stop the async
    polling associated with the data regarding the connection.
    
    Link: http://lkml.kernel.org/r/20180720092730.27104-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+39749ed7d9ef6dfb23f6@syzkaller.appspotmail.com
    To: Eric Van Hensbergen <ericvh@gmail.com>
    To: Ron Minnich <rminnich@sandia.gov>
    To: Latchesar Ionkov <lucho@ionkov.net>
    Cc: Yiwen Jiang <jiangyiwen@huwei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 312479e068288b4a15b869b049e4f8bfacd6e36a
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Tue Jul 10 00:29:43 2018 +0200

    net/9p/client.c: version pointer uninitialized
    
    commit 7913690dcc5e18e235769fd87c34143072f5dbea upstream.
    
    The p9_client_version() does not initialize the version pointer. If the
    call to p9pdu_readf() returns an error and version has not been allocated
    in p9pdu_readf(), then the program will jump to the "error" label and will
    try to free the version pointer. If version is not initialized, free()
    will be called with uninitialized, garbage data and will provoke a crash.
    
    Link: http://lkml.kernel.org/r/20180709222943.19503-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+65c6b72f284a39d416b4@syzkaller.appspotmail.com
    Reviewed-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Ron Minnich <rminnich@sandia.gov>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f92953b0765bf465261782d47af6a4b38c20fa8c
Author: jiangyiwen <jiangyiwen@huawei.com>
Date:   Fri Aug 3 12:11:34 2018 +0800

    9p/virtio: fix off-by-one error in sg list bounds check
    
    commit 23cba9cbde0bba05d772b335fe5f66aa82b9ad19 upstream.
    
    Because the value of limit is VIRTQUEUE_NUM, if index is equal to
    limit, it will cause sg array out of bounds, so correct the judgement
    of BUG_ON.
    
    Link: http://lkml.kernel.org/r/5B63D5F6.6080109@huawei.com
    Signed-off-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Reported-By: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4827a583871a225cfce62a52d779e2a31f310925
Author: piaojun <piaojun@huawei.com>
Date:   Wed Jul 25 11:13:16 2018 +0800

    fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed
    
    commit 3111784bee81591ea2815011688d28b65df03627 upstream.
    
    In my testing, v9fs_fid_xattr_set will return successfully even if the
    backend ext4 filesystem has no space to store xattr key-value. That will
    cause inconsistent behavior between front end and back end. The reason is
    that lsetxattr will be triggered by p9_client_clunk, and unfortunately we
    did not catch the error. This patch will catch the error to notify upper
    caller.
    
    p9_client_clunk (in 9p)
      p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid);
        v9fs_clunk (in qemu)
          put_fid
            free_fid
              v9fs_xattr_fid_clunk
                v9fs_co_lsetxattr
                  s->ops->lsetxattr
                    ext4_xattr_user_set (in host ext4 filesystem)
    
    Link: http://lkml.kernel.org/r/5B57EACC.2060900@huawei.com
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Ron Minnich <rminnich@sandia.gov>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 390671089d6214542fb8bd8e2f7700647c18017f
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Fri Jul 27 13:05:58 2018 +0200

    9p: fix multiple NULL-pointer-dereferences
    
    commit 10aa14527f458e9867cf3d2cc6b8cb0f6704448b upstream.
    
    Added checks to prevent GPFs from raising.
    
    Link: http://lkml.kernel.org/r/20180727110558.5479-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+1a262da37d3bead15c39@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit def89b81ef459e98d3e4adce8de78561c3be14f0
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Tue Jun 26 08:39:36 2018 -0700

    RDMA/rxe: Set wqe->status correctly if an unexpected response is received
    
    commit 61b717d041b1976530f68f8b539b2e3a7dd8e39c upstream.
    
    Every function that returns COMPST_ERROR must set wqe->status to another
    value than IB_WC_SUCCESS before returning COMPST_ERROR. Fix the only code
    path for which this is not yet the case.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bac5c3c122f43114f925fb53f2e5edd86413e423
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Mon Jul 2 14:08:18 2018 -0700

    ib_srpt: Fix a use-after-free in srpt_close_ch()
    
    commit 995250959d22fc341b5424e3343b0ce5df672461 upstream.
    
    Avoid that KASAN reports the following:
    
    BUG: KASAN: use-after-free in srpt_close_ch+0x4f/0x1b0 [ib_srpt]
    Read of size 4 at addr ffff880151180cb8 by task check/4681
    
    CPU: 15 PID: 4681 Comm: check Not tainted 4.18.0-rc2-dbg+ #4
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
    Call Trace:
     dump_stack+0xa4/0xf5
     print_address_description+0x6f/0x270
     kasan_report+0x241/0x360
     __asan_load4+0x78/0x80
     srpt_close_ch+0x4f/0x1b0 [ib_srpt]
     srpt_set_enabled+0xf7/0x1e0 [ib_srpt]
     srpt_tpg_enable_store+0xb8/0x120 [ib_srpt]
     configfs_write_file+0x14e/0x1d0 [configfs]
     __vfs_write+0xd2/0x3b0
     vfs_write+0x101/0x270
     ksys_write+0xab/0x120
     __x64_sys_write+0x43/0x50
     do_syscall_64+0x77/0x230
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: aaf45bd83eba ("IB/srpt: Detect session shutdown reliably")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 241e62005c742a238c525d0dbb80e1c8cb735466
Author: Vaibhav Jain <vaibhav@linux.ibm.com>
Date:   Wed Jul 4 20:58:33 2018 +0530

    cxl: Fix wrong comparison in cxl_adapter_context_get()
    
    commit ef6cb5f1a048fdf91ccee6d63d2bfa293338502d upstream.
    
    Function atomic_inc_unless_negative() returns a bool to indicate
    success/failure. However cxl_adapter_context_get() wrongly compares
    the return value against '>=0' which will always be true. The patch
    fixes this comparison to '==0' there by also fixing this compile time
    warning:
    
            drivers/misc/cxl/main.c:290 cxl_adapter_context_get()
            warn: 'atomic_inc_unless_negative(&adapter->contexts_num)' is unsigned
    
    Fixes: 70b565bbdb91 ("cxl: Prevent adapter reset if an active context exists")
    Cc: stable@vger.kernel.org # v4.9+
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com>
    Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1eb08e7b192d2c412175f607cf51449c916abd57
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Fri Aug 17 17:30:39 2018 +1000

    powerpc/powernv/pci: Work around races in PCI bridge enabling
    
    commit db2173198b9513f7add8009f225afa1f1c79bcc6 upstream.
    
    The generic code is racy when multiple children of a PCI bridge try to
    enable it simultaneously.
    
    This leads to drivers trying to access a device through a
    not-yet-enabled bridge, and this EEH errors under various
    circumstances when using parallel driver probing.
    
    There is work going on to fix that properly in the PCI core but it
    will take some time.
    
    x86 gets away with it because (outside of hotplug), the BIOS enables
    all the bridges at boot time.
    
    This patch does the same thing on powernv by enabling all bridges that
    have child devices at boot time, thus avoiding subsequent races. It's
    suitable for backporting to stable and distros, while the proper PCI
    fix will probably be significantly more invasive.
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15677df25afc6e4d27731c9c47888807588f7ffc
Author: Frederick Lawler <fred@fredlawl.com>
Date:   Thu Jan 18 12:55:24 2018 -0600

    PCI: Add wrappers for dev_printk()
    
    commit 7506dc7989933235e6fc23f3d0516bdbf0f7d1a8 upstream.
    
    Add PCI-specific dev_printk() wrappers and use them to simplify the code
    slightly.  No functional change intended.
    
    Signed-off-by: Frederick Lawler <fred@fredlawl.com>
    [bhelgaas: squash into one patch]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    [only take the pci.h portion of this patch, to make backporting stuff
    easier over time - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bfd910e8fb3b86660243ac0cf1b31df842b54b2
Author: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Date:   Tue Aug 7 19:46:46 2018 +0530

    powerpc/pseries: Fix endianness while restoring of r3 in MCE handler.
    
    commit cd813e1cd7122f2c261dce5b54d1e0c97f80e1a5 upstream.
    
    During Machine Check interrupt on pseries platform, register r3 points
    RTAS extended event log passed by hypervisor. Since hypervisor uses r3
    to pass pointer to rtas log, it stores the original r3 value at the
    start of the memory (first 8 bytes) pointed by r3. Since hypervisor
    stores this info and rtas log is in BE format, linux should make
    sure to restore r3 value in correct endian format.
    
    Without this patch when MCE handler, after recovery, returns to code that
    that caused the MCE may end up with Data SLB access interrupt for invalid
    address followed by kernel panic or hang.
    
      Severe Machine check interrupt [Recovered]
        NIP [d00000000ca301b8]: init_module+0x1b8/0x338 [bork_kernel]
        Initiator: CPU
        Error type: SLB [Multihit]
          Effective address: d00000000ca70000
      cpu 0xa: Vector: 380 (Data SLB Access) at [c0000000fc7775b0]
          pc: c0000000009694c0: vsnprintf+0x80/0x480
          lr: c0000000009698e0: vscnprintf+0x20/0x60
          sp: c0000000fc777830
         msr: 8000000002009033
         dar: a803a30c000000d0
        current = 0xc00000000bc9ef00
        paca    = 0xc00000001eca5c00         softe: 3        irq_happened: 0x01
          pid   = 8860, comm = insmod
      vscnprintf+0x20/0x60
      vprintk_emit+0xb4/0x4b0
      vprintk_func+0x5c/0xd0
      printk+0x38/0x4c
      init_module+0x1c0/0x338 [bork_kernel]
      do_one_initcall+0x54/0x230
      do_init_module+0x8c/0x248
      load_module+0x12b8/0x15b0
      sys_finit_module+0xa8/0x110
      system_call+0x58/0x6c
      --- Exception: c00 (System Call) at 00007fff8bda0644
      SP (7fffdfbfe980) is in userspace
    
    This patch fixes this issue.
    
    Fixes: a08a53ea4c97 ("powerpc/le: Enable RTAS events support")
    Cc: stable@vger.kernel.org # v3.15+
    Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed53c0ecc959c0f3941324b03231c07e1e4afa64
Author: Hari Bathini <hbathini@linux.ibm.com>
Date:   Tue Aug 7 02:12:45 2018 +0530

    powerpc/fadump: handle crash memory ranges array index overflow
    
    commit 1bd6a1c4b80a28d975287630644e6b47d0f977a5 upstream.
    
    Crash memory ranges is an array of memory ranges of the crashing kernel
    to be exported as a dump via /proc/vmcore file. The size of the array
    is set based on INIT_MEMBLOCK_REGIONS, which works alright in most cases
    where memblock memory regions count is less than INIT_MEMBLOCK_REGIONS
    value. But this count can grow beyond INIT_MEMBLOCK_REGIONS value since
    commit 142b45a72e22 ("memblock: Add array resizing support").
    
    On large memory systems with a few DLPAR operations, the memblock memory
    regions count could be larger than INIT_MEMBLOCK_REGIONS value. On such
    systems, registering fadump results in crash or other system failures
    like below:
    
      task: c00007f39a290010 ti: c00000000b738000 task.ti: c00000000b738000
      NIP: c000000000047df4 LR: c0000000000f9e58 CTR: c00000000010f180
      REGS: c00000000b73b570 TRAP: 0300   Tainted: G          L   X  (4.4.140+)
      MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 22004484  XER: 20000000
      CFAR: c000000000008500 DAR: 000007a450000000 DSISR: 40000000 SOFTE: 0
      ...
      NIP [c000000000047df4] smp_send_reschedule+0x24/0x80
      LR [c0000000000f9e58] resched_curr+0x138/0x160
      Call Trace:
        resched_curr+0x138/0x160 (unreliable)
        check_preempt_curr+0xc8/0xf0
        ttwu_do_wakeup+0x38/0x150
        try_to_wake_up+0x224/0x4d0
        __wake_up_common+0x94/0x100
        ep_poll_callback+0xac/0x1c0
        __wake_up_common+0x94/0x100
        __wake_up_sync_key+0x70/0xa0
        sock_def_readable+0x58/0xa0
        unix_stream_sendmsg+0x2dc/0x4c0
        sock_sendmsg+0x68/0xa0
        ___sys_sendmsg+0x2cc/0x2e0
        __sys_sendmsg+0x5c/0xc0
        SyS_socketcall+0x36c/0x3f0
        system_call+0x3c/0x100
    
    as array index overflow is not checked for while setting up crash memory
    ranges causing memory corruption. To resolve this issue, dynamically
    allocate memory for crash memory ranges and resize it incrementally,
    in units of pagesize, on hitting array size limit.
    
    Fixes: 2df173d9e85d ("fadump: Initialize elfcore header and add PT_LOAD program headers.")
    Cc: stable@vger.kernel.org # v3.4+
    Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
    Reviewed-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    [mpe: Just use PAGE_SIZE directly, fixup variable placement]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 259c5122f3a80036a2e9774260a5bfecbeac7f76
Author: Yannik Sembritzki <yannik@sembritzki.me>
Date:   Thu Aug 16 14:05:23 2018 +0100

    Fix kexec forbidding kernels signed with keys in the secondary keyring to boot
    
    commit ea93102f32244e3f45c8b26260be77ed0cc1d16c upstream.
    
    The split of .system_keyring into .builtin_trusted_keys and
    .secondary_trusted_keys broke kexec, thereby preventing kernels signed by
    keys which are now in the secondary keyring from being kexec'd.
    
    Fix this by passing VERIFY_USE_SECONDARY_KEYRING to
    verify_pefile_signature().
    
    Fixes: d3bfe84129f6 ("certs: Add a secondary system keyring that can be added to dynamically")
    Signed-off-by: Yannik Sembritzki <yannik@sembritzki.me>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Cc: kexec@lists.infradead.org
    Cc: keyrings@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f70805bef73eda436ad664deab818b3291cc8407
Author: Yannik Sembritzki <yannik@sembritzki.me>
Date:   Thu Aug 16 14:05:10 2018 +0100

    Replace magic for trusting the secondary keyring with #define
    
    commit 817aef260037f33ee0f44c17fe341323d3aebd6d upstream.
    
    Replace the use of a magic number that indicates that verify_*_signature()
    should use the secondary keyring with a symbol.
    
    Signed-off-by: Yannik Sembritzki <yannik@sembritzki.me>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Cc: keyrings@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cbb32610233e3531ec74e17b44d702c1ca353f0
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu Jul 26 12:11:39 2018 -0500

    mailbox: xgene-slimpro: Fix potential NULL pointer dereference
    
    commit 3512a18cbd8d09e22a790540cb9624c3c49827ba upstream.
    
    There is a potential execution path in which function
    platform_get_resource() returns NULL. If this happens,
    we will end up having a NULL pointer dereference.
    
    Fix this by replacing devm_ioremap with devm_ioremap_resource,
    which has the NULL check and the memory region request.
    
    This code was detected with the help of Coccinelle.
    
    Cc: stable@vger.kernel.org
    Fixes: f700e84f417b ("mailbox: Add support for APM X-Gene platform mailbox driver")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c160382ab064ae53c4a939aa6a8989bf553f77f7
Author: Javier Martinez Canillas <javierm@redhat.com>
Date:   Sun Jun 10 16:43:02 2018 -0400

    media: Revert "[media] tvp5150: fix pad format frame height"
    
    commit 1831af092308aa5a59ae61e47494e441c8be6b93 upstream.
    
    This reverts commit 0866df8dffd514185bfab0d205db76e4c02cf1e4.
    
    The v4l uAPI documentation [0] makes clear that in the case of interlaced
    video (i.e: field is V4L2_FIELD_ALTERNATE) the height refers to the number
    of lines in the field and not the number of lines in the full frame (which
    is twice the field height for interlaced formats).
    
    So the original height calculation was correct, and it shouldn't had been
    changed by the mentioned commit.
    
    [0]:https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/subdev-formats.html
    
    Fixes: 0866df8dffd5 ("[media] tvp5150: fix pad format frame height")
    
    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
    Cc: <stable@vger.kernel.org>      # for v4.12 and up
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fba6b7f4bbe24c45c62172d8f1a450cbe4ec8dc6
Author: Daniel Mack <daniel@zonque.org>
Date:   Wed Jun 27 20:58:45 2018 +0200

    libertas: fix suspend and resume for SDIO connected cards
    
    commit 7444a8092906ed44c09459780c56ba57043e39b1 upstream.
    
    Prior to commit 573185cc7e64 ("mmc: core: Invoke sdio func driver's PM
    callbacks from the sdio bus"), the MMC core used to call into the power
    management functions of SDIO clients itself and removed the card if the
    return code was non-zero. IOW, the mmc handled errors gracefully and didn't
    upchain them to the pm core.
    
    Since this change, the mmc core relies on generic power management
    functions which treat all errors as a reason to cancel the suspend
    immediately. This causes suspend attempts to fail when the libertas
    driver is loaded.
    
    To fix this, power down the card explicitly in if_sdio_suspend() when we
    know we're about to lose power and return success. Also set a flag in these
    cases, and power up the card again in if_sdio_resume().
    
    Fixes: 573185cc7e64 ("mmc: core: Invoke sdio func driver's PM callbacks from the sdio bus")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Reviewed-by: Chris Ball <chris@printf.net>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7188f7416438a34412a6702f548f81be9e2cf56c
Author: Matthew Auld <matthew.auld@intel.com>
Date:   Wed May 2 20:50:21 2018 +0100

    drm/i915/userptr: reject zero user_size
    
    commit c11c7bfd213495784b22ef82a69b6489f8d0092f upstream.
    
    Operating on a zero sized GEM userptr object will lead to explosions.
    
    Fixes: 5cc9ed4b9a7a ("drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl")
    Testcase: igt/gem_userptr_blits/input-checking
    Signed-off-by: Matthew Auld <matthew.auld@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502195021.30900-1-matthew.auld@intel.com
    Cc: Loic <hackurx@opensec.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e2698976822852b67c2dc11b2ebc2febc25955c
Author: Ming Lei <ming.lei@redhat.com>
Date:   Mon Jul 30 20:02:19 2018 +0800

    block: really disable runtime-pm for blk-mq
    
    commit b233f127042dba991229e3882c6217c80492f6ef upstream.
    
    Runtime PM isn't ready for blk-mq yet, and commit 765e40b675a9 ("block:
    disable runtime-pm for blk-mq") tried to disable it. Unfortunately,
    it can't take effect in that way since user space still can switch
    it on via 'echo auto > /sys/block/sdN/device/power/control'.
    
    This patch disables runtime-pm for blk-mq really by pm_runtime_disable()
    and fixes all kinds of PM related kernel crash.
    
    Cc: Tomas Janousek <tomi@nomi.cz>
    Cc: Przemek Socha <soprwa@gmail.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Tested-by: Patrick Steinhardt <ps@pks.im>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0affbaece6d0b7c75c5166732d0481ae9a28be60
Author: xiao jin <jin.xiao@intel.com>
Date:   Mon Jul 30 14:11:12 2018 +0800

    block: blk_init_allocated_queue() set q->fq as NULL in the fail case
    
    commit 54648cf1ec2d7f4b6a71767799c45676a138ca24 upstream.
    
    We find the memory use-after-free issue in __blk_drain_queue()
    on the kernel 4.14. After read the latest kernel 4.18-rc6 we
    think it has the same problem.
    
    Memory is allocated for q->fq in the blk_init_allocated_queue().
    If the elevator init function called with error return, it will
    run into the fail case to free the q->fq.
    
    Then the __blk_drain_queue() uses the same memory after the free
    of the q->fq, it will lead to the unpredictable event.
    
    The patch is to set q->fq as NULL in the fail case of
    blk_init_allocated_queue().
    
    Fixes: commit 7c94e1c157a2 ("block: introduce blk_flush_queue to drive flush machinery")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: xiao jin <jin.xiao@intel.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf12d0f9c0dc9129f08490390d14ee4d9dbf6ebb
Author: Markus Stockhausen <stockhausen@collogia.de>
Date:   Fri Jul 27 09:09:53 2018 -0600

    readahead: stricter check for bdi io_pages
    
    commit dc30b96ab6d569060741572cf30517d3179429a8 upstream.
    
    ondemand_readahead() checks bdi->io_pages to cap the maximum pages
    that need to be processed. This works until the readit section. If
    we would do an async only readahead (async size = sync size) and
    target is at beginning of window we expand the pages by another
    get_next_ra_size() pages. Btrace for large reads shows that kernel
    always issues a doubled size read at the beginning of processing.
    Add an additional check for io_pages in the lower part of the func.
    The fix helps devices that hard limit bio pages and rely on proper
    handling of max_hw_read_sectors (e.g. older FusionIO cards). For
    that reason it could qualify for stable.
    
    Fixes: 9491ae4a ("mm: don't cap request size based on read-ahead setting")
    Cc: stable@vger.kernel.org
    Signed-off-by: Markus Stockhausen stockhausen@collogia.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8513c01ae15f5ec456dda387e44317752c8da544
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Wed Aug 22 21:28:01 2018 +0300

    mmc: renesas_sdhi_internal_dmac: fix #define RST_RESERVED_BITS
    
    commit 9faf870e559a710c44e747ba20383ea82d8ac5d2 upstream.
    
    The DM_CM_RST register actually has bits 0-31 defaulting to 1s and bits
    32-63 defaulting to 0s -- fix off-by-one in #define RST_RESERVED_BITS.
    
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Fixes: 2a68ea7896e3 ("mmc: renesas-sdhi: add support for R-Car Gen3 SDHI DMAC")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7b6b3699b97a1e6b1ad31cd7c611dd92685c399
Author: Janek Kotas <jank@cadence.com>
Date:   Mon Jun 4 11:24:44 2018 +0000

    spi: cadence: Change usleep_range() to udelay(), for atomic context
    
    commit 931c4e9a72ae91d59c5332ffb6812911a749da8e upstream.
    
    The path "spi: cadence: Add usleep_range() for
    cdns_spi_fill_tx_fifo()" added a usleep_range() function call,
    which cannot be used in atomic context.
    However the cdns_spi_fill_tx_fifo() function can be called during
    an interrupt which may result in a kernel panic:
    
    BUG: scheduling while atomic: grep/561/0x00010002
    Modules linked in:
    Preemption disabled at:
    [<ffffff800858ea28>] wait_for_common+0x48/0x178
    CPU: 0 PID: 561 Comm: grep Not tainted 4.17.0 #1
    Hardware name: Cadence CSP (DT)
    Call trace:
     dump_backtrace+0x0/0x198
     show_stack+0x14/0x20
     dump_stack+0x8c/0xac
     __schedule_bug+0x6c/0xb8
     __schedule+0x570/0x5d8
     schedule+0x34/0x98
     schedule_hrtimeout_range_clock+0x98/0x110
     schedule_hrtimeout_range+0x10/0x18
     usleep_range+0x64/0x98
     cdns_spi_fill_tx_fifo+0x70/0xb0
     cdns_spi_irq+0xd0/0xe0
     __handle_irq_event_percpu+0x9c/0x128
     handle_irq_event_percpu+0x34/0x88
     handle_irq_event+0x48/0x78
     handle_fasteoi_irq+0xbc/0x1b0
     generic_handle_irq+0x24/0x38
     __handle_domain_irq+0x84/0xf8
     gic_handle_irq+0xc4/0x180
    
    This patch replaces the function call with udelay() which can be
    used in an atomic context, like an interrupt.
    
    Signed-off-by: Jan Kotas <jank@cadence.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc9a7dd57f63e56dcba88565c57cde7b55efb329
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Fri Jun 29 13:33:09 2018 +0200

    spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe
    
    commit d8ffee2f551a627ffb7b216e2da322cb9a037f77 upstream.
    
    Registers of DSPI should not be accessed before enabling its clock.  On
    Toradex Colibri VF50 on Iris carrier board this could be seen during
    bootup as imprecise abort:
    
        Unhandled fault: imprecise external abort (0x1c06) at 0x00000000
        Internal error: : 1c06 [#1] ARM
        Modules linked in:
        CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.39-dirty #97
        Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
        Backtrace:
        [<804166a8>] (regmap_write) from [<80466b5c>] (dspi_probe+0x1f0/0x8dc)
        [<8046696c>] (dspi_probe) from [<8040107c>] (platform_drv_probe+0x54/0xb8)
        [<80401028>] (platform_drv_probe) from [<803ff53c>] (driver_probe_device+0x280/0x2f8)
        [<803ff2bc>] (driver_probe_device) from [<803ff674>] (__driver_attach+0xc0/0xc4)
        [<803ff5b4>] (__driver_attach) from [<803fd818>] (bus_for_each_dev+0x70/0xa4)
        [<803fd7a8>] (bus_for_each_dev) from [<803fee74>] (driver_attach+0x24/0x28)
        [<803fee50>] (driver_attach) from [<803fe980>] (bus_add_driver+0x1a0/0x218)
        [<803fe7e0>] (bus_add_driver) from [<803fffe8>] (driver_register+0x80/0x100)
        [<803fff68>] (driver_register) from [<80400fdc>] (__platform_driver_register+0x48/0x50)
        [<80400f94>] (__platform_driver_register) from [<8091cf7c>] (fsl_dspi_driver_init+0x1c/0x20)
        [<8091cf60>] (fsl_dspi_driver_init) from [<8010195c>] (do_one_initcall+0x4c/0x174)
        [<80101910>] (do_one_initcall) from [<80900e8c>] (kernel_init_freeable+0x144/0x1d8)
        [<80900d48>] (kernel_init_freeable) from [<805ff6a8>] (kernel_init+0x10/0x114)
        [<805ff698>] (kernel_init) from [<80107be8>] (ret_from_fork+0x14/0x2c)
    
    Cc: <stable@vger.kernel.org>
    Fixes: 5ee67b587a2b ("spi: dspi: clear SPI_SR before enable interrupt")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23554cab1ebdd2bb1c1cde5bbb3d3064a85bb131
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Thu Jun 28 13:52:23 2018 +0300

    spi: pxa2xx: Add support for Intel Ice Lake
    
    commit 22d71a5097ec7059b6cbbee678a4f88484695941 upstream.
    
    Intel Ice Lake SPI host controller follows the Intel Cannon Lake but the
    PCI IDs are different. Add the new PCI IDs to the driver supported
    devices list.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa1d05c504832dbb17855dd4bd858b1cb263ca7b
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Fri Aug 10 11:13:52 2018 +0200

    spi: davinci: fix a NULL pointer dereference
    
    commit 563a53f3906a6b43692498e5b3ae891fac93a4af upstream.
    
    On non-OF systems spi->controlled_data may be NULL. This causes a NULL
    pointer derefence on dm365-evm.
    
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d3016e56c3d2fdbd5b1a984c4316da3cfbf63a9
Author: Chirantan Ekbote <chirantan@chromium.org>
Date:   Mon Jul 16 17:35:29 2018 -0700

    9p/net: Fix zero-copy path in the 9p virtio transport
    
    commit d28c756caee6e414d9ba367d0b92da24145af2a8 upstream.
    
    The zero-copy optimization when reading or writing large chunks of data
    is quite useful.  However, the 9p messages created through the zero-copy
    write path have an incorrect message size: it should be the size of the
    header + size of the data being written but instead it's just the size
    of the header.
    
    This only works if the server ignores the size field of the message and
    otherwise breaks the framing of the protocol. Fix this by re-writing the
    message size field with the correct value.
    
    Tested by running `dd if=/dev/zero of=out bs=4k count=1` inside a
    virtio-9p mount.
    
    Link: http://lkml.kernel.org/r/20180717003529.114368-1-chirantan@chromium.org
    Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
    Reviewed-by: Greg Kurz <groug@kaod.org>
    Tested-by: Greg Kurz <groug@kaod.org>
    Cc: Dylan Reid <dgreid@chromium.org>
    Cc: Guenter Roeck <groeck@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a2262972b5dab51e1e09dee8992d29b4946c1ab
Author: Alexander Aring <aring@mojatatu.com>
Date:   Mon Jul 2 16:32:03 2018 -0400

    net: mac802154: tx: expand tailroom if necessary
    
    commit f9c52831133050c6b82aa8b6831c92da2bbf2a0b upstream.
    
    This patch is necessary if case of AF_PACKET or other socket interface
    which I am aware of it and didn't allocated the necessary room.
    
    Reported-by: David Palma <david.palma@ntnu.no>
    Reported-by: Rabi Narayan Sahoo <rabinarayans0828@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Aring <aring@mojatatu.com>
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54c0fa829d45f9ad40e40a47d7a899d47dc23569
Author: Alexander Aring <aring@mojatatu.com>
Date:   Sat Jul 14 12:52:10 2018 -0400

    net: 6lowpan: fix reserved space for single frames
    
    commit ac74f87c789af40936a80131c4759f3e72579c3a upstream.
    
    This patch fixes patch add handling to take care tail and headroom for
    single 6lowpan frames. We need to be sure we have a skb with the right
    head and tailroom for single frames. This patch do it by using
    skb_copy_expand() if head and tailroom is not enough allocated by upper
    layer.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195059
    Reported-by: David Palma <david.palma@ntnu.no>
    Reported-by: Rabi Narayan Sahoo <rabinarayans0828@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Aring <aring@mojatatu.com>
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>