commit bde16624c6afdbb026ea1f073a59b9f4598eed96
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Jan 1 20:52:14 2018 +0000

    Linux 3.16.52

commit d3dc1ffed4044437339a22acebebaf1c5bc141ee
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 8 15:13:27 2017 +0000

    KEYS: add missing permission check for request_key() destination
    
    commit 4dca6ea1d9432052afb06baf2e3ae78188a4410b upstream.
    
    When the request_key() syscall is not passed a destination keyring, it
    links the requested key (if constructed) into the "default" request-key
    keyring.  This should require Write permission to the keyring.  However,
    there is actually no permission check.
    
    This can be abused to add keys to any keyring to which only Search
    permission is granted.  This is because Search permission allows joining
    the keyring.  keyctl_set_reqkey_keyring(KEY_REQKEY_DEFL_SESSION_KEYRING)
    then will set the default request-key keyring to the session keyring.
    Then, request_key() can be used to add keys to the keyring.
    
    Both negatively and positively instantiated keys can be added using this
    method.  Adding negative keys is trivial.  Adding a positive key is a
    bit trickier.  It requires that either /sbin/request-key positively
    instantiates the key, or that another thread adds the key to the process
    keyring at just the right time, such that request_key() misses it
    initially but then finds it in construct_alloc_key().
    
    Fix this bug by checking for Write permission to the keyring in
    construct_get_dest_keyring() when the default keyring is being used.
    
    We don't do the permission check for non-default keyrings because that
    was already done by the earlier call to lookup_user_key().  Also,
    request_key_and_link() is currently passed a 'struct key *' rather than
    a key_ref_t, so the "possessed" bit is unavailable.
    
    We also don't do the permission check for the "requestor keyring", to
    continue to support the use case described by commit 8bbf4976b59f
    ("KEYS: Alter use of key instantiation link-to-keyring argument") where
    /sbin/request-key recursively calls request_key() to add keys to the
    original requestor's destination keyring.  (I don't know of any users
    who actually do that, though...)
    
    Fixes: 3e30148c3d52 ("[PATCH] Keys: Make request-key create an authorisation key")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 150fbc1221d1352db7dc830074586e0ee28e2a15
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Nov 28 18:01:38 2017 -0800

    crypto: hmac - require that the underlying hash algorithm is unkeyed
    
    commit af3ff8045bbf3e32f1a448542e73abb4c8ceb6f1 upstream.
    
    Because the HMAC template didn't check that its underlying hash
    algorithm is unkeyed, trying to use "hmac(hmac(sha3-512-generic))"
    through AF_ALG or through KEYCTL_DH_COMPUTE resulted in the inner HMAC
    being used without having been keyed, resulting in sha3_update() being
    called without sha3_init(), causing a stack buffer overflow.
    
    This is a very old bug, but it seems to have only started causing real
    problems when SHA-3 support was added (requires CONFIG_CRYPTO_SHA3)
    because the innermost hash's state is ->import()ed from a zeroed buffer,
    and it just so happens that other hash algorithms are fine with that,
    but SHA-3 is not.  However, there could be arch or hardware-dependent
    hash algorithms also affected; I couldn't test everything.
    
    Fix the bug by introducing a function crypto_shash_alg_has_setkey()
    which tests whether a shash algorithm is keyed.  Then update the HMAC
    template to require that its underlying hash algorithm is unkeyed.
    
    Here is a reproducer:
    
        #include <linux/if_alg.h>
        #include <sys/socket.h>
    
        int main()
        {
            int algfd;
            struct sockaddr_alg addr = {
                .salg_type = "hash",
                .salg_name = "hmac(hmac(sha3-512-generic))",
            };
            char key[4096] = { 0 };
    
            algfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
            bind(algfd, (const struct sockaddr *)&addr, sizeof(addr));
            setsockopt(algfd, SOL_ALG, ALG_SET_KEY, key, sizeof(key));
        }
    
    Here was the KASAN report from syzbot:
    
        BUG: KASAN: stack-out-of-bounds in memcpy include/linux/string.h:341  [inline]
        BUG: KASAN: stack-out-of-bounds in sha3_update+0xdf/0x2e0  crypto/sha3_generic.c:161
        Write of size 4096 at addr ffff8801cca07c40 by task syzkaller076574/3044
    
        CPU: 1 PID: 3044 Comm: syzkaller076574 Not tainted 4.14.0-mm1+ #25
        Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS  Google 01/01/2011
        Call Trace:
          __dump_stack lib/dump_stack.c:17 [inline]
          dump_stack+0x194/0x257 lib/dump_stack.c:53
          print_address_description+0x73/0x250 mm/kasan/report.c:252
          kasan_report_error mm/kasan/report.c:351 [inline]
          kasan_report+0x25b/0x340 mm/kasan/report.c:409
          check_memory_region_inline mm/kasan/kasan.c:260 [inline]
          check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
          memcpy+0x37/0x50 mm/kasan/kasan.c:303
          memcpy include/linux/string.h:341 [inline]
          sha3_update+0xdf/0x2e0 crypto/sha3_generic.c:161
          crypto_shash_update+0xcb/0x220 crypto/shash.c:109
          shash_finup_unaligned+0x2a/0x60 crypto/shash.c:151
          crypto_shash_finup+0xc4/0x120 crypto/shash.c:165
          hmac_finup+0x182/0x330 crypto/hmac.c:152
          crypto_shash_finup+0xc4/0x120 crypto/shash.c:165
          shash_digest_unaligned+0x9e/0xd0 crypto/shash.c:172
          crypto_shash_digest+0xc4/0x120 crypto/shash.c:186
          hmac_setkey+0x36a/0x690 crypto/hmac.c:66
          crypto_shash_setkey+0xad/0x190 crypto/shash.c:64
          shash_async_setkey+0x47/0x60 crypto/shash.c:207
          crypto_ahash_setkey+0xaf/0x180 crypto/ahash.c:200
          hash_setkey+0x40/0x90 crypto/algif_hash.c:446
          alg_setkey crypto/af_alg.c:221 [inline]
          alg_setsockopt+0x2a1/0x350 crypto/af_alg.c:254
          SYSC_setsockopt net/socket.c:1851 [inline]
          SyS_setsockopt+0x189/0x360 net/socket.c:1830
          entry_SYSCALL_64_fastpath+0x1f/0x96
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9517d9d0c1d62515d33c0405b5a86e88647012a2
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Nov 28 20:56:59 2017 -0800

    crypto: salsa20 - fix blkcipher_walk API usage
    
    commit ecaaab5649781c5a0effdaf298a925063020500e upstream.
    
    When asked to encrypt or decrypt 0 bytes, both the generic and x86
    implementations of Salsa20 crash in blkcipher_walk_done(), either when
    doing 'kfree(walk->buffer)' or 'free_page((unsigned long)walk->page)',
    because walk->buffer and walk->page have not been initialized.
    
    The bug is that Salsa20 is calling blkcipher_walk_done() even when
    nothing is in 'walk.nbytes'.  But blkcipher_walk_done() is only meant to
    be called when a nonzero number of bytes have been provided.
    
    The broken code is part of an optimization that tries to make only one
    call to salsa20_encrypt_bytes() to process inputs that are not evenly
    divisible by 64 bytes.  To fix the bug, just remove this "optimization"
    and use the blkcipher_walk API the same way all the other users do.
    
    Reproducer:
    
        #include <linux/if_alg.h>
        #include <sys/socket.h>
        #include <unistd.h>
    
        int main()
        {
                int algfd, reqfd;
                struct sockaddr_alg addr = {
                        .salg_type = "skcipher",
                        .salg_name = "salsa20",
                };
                char key[16] = { 0 };
    
                algfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
                bind(algfd, (void *)&addr, sizeof(addr));
                reqfd = accept(algfd, 0, 0);
                setsockopt(algfd, SOL_ALG, ALG_SET_KEY, key, sizeof(key));
                read(reqfd, key, sizeof(key));
        }
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Fixes: eb6f13eb9f81 ("[CRYPTO] salsa20_generic: Fix multi-page processing")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7cc7f67418296f829a284b6e2d4c62d937f15faa
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Dec 14 17:40:50 2017 -0800

    KVM: Fix stack-out-of-bounds read in write_mmio
    
    commit e39d200fa5bf5b94a0948db0dae44c1b73b84a56 upstream.
    
    Reported by syzkaller:
    
      BUG: KASAN: stack-out-of-bounds in write_mmio+0x11e/0x270 [kvm]
      Read of size 8 at addr ffff8803259df7f8 by task syz-executor/32298
    
      CPU: 6 PID: 32298 Comm: syz-executor Tainted: G           OE    4.15.0-rc2+ #18
      Hardware name: LENOVO ThinkCentre M8500t-N000/SHARKBAY, BIOS FBKTC1AUS 02/16/2016
      Call Trace:
       dump_stack+0xab/0xe1
       print_address_description+0x6b/0x290
       kasan_report+0x28a/0x370
       write_mmio+0x11e/0x270 [kvm]
       emulator_read_write_onepage+0x311/0x600 [kvm]
       emulator_read_write+0xef/0x240 [kvm]
       emulator_fix_hypercall+0x105/0x150 [kvm]
       em_hypercall+0x2b/0x80 [kvm]
       x86_emulate_insn+0x2b1/0x1640 [kvm]
       x86_emulate_instruction+0x39a/0xb90 [kvm]
       handle_exception+0x1b4/0x4d0 [kvm_intel]
       vcpu_enter_guest+0x15a0/0x2640 [kvm]
       kvm_arch_vcpu_ioctl_run+0x549/0x7d0 [kvm]
       kvm_vcpu_ioctl+0x479/0x880 [kvm]
       do_vfs_ioctl+0x142/0x9a0
       SyS_ioctl+0x74/0x80
       entry_SYSCALL_64_fastpath+0x23/0x9a
    
    The path of patched vmmcall will patch 3 bytes opcode 0F 01 C1(vmcall)
    to the guest memory, however, write_mmio tracepoint always prints 8 bytes
    through *(u64 *)val since kvm splits the mmio access into 8 bytes. This
    leaks 5 bytes from the kernel stack (CVE-2017-17741).  This patch fixes
    it by just accessing the bytes which we operate on.
    
    Before patch:
    
    syz-executor-5567  [007] .... 51370.561696: kvm_mmio: mmio write len 3 gpa 0x10 val 0x1ffff10077c1010f
    
    After patch:
    
    syz-executor-13416 [002] .... 51302.299573: kvm_mmio: mmio write len 3 gpa 0x10 val 0xc1010f
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Tested-by: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16:
     - ARM implementation combines the KVM_TRACE_MMIO_WRITE and
       KVM_TRACE_MMIO_READ_UNSATISFIED cases
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7dd8d19f44c65eb1567685ab8b0fe06d7cb584fc
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon May 22 15:40:12 2017 -0500

    ptrace: Properly initialize ptracer_cred on fork
    
    commit c70d9d809fdeecedb96972457ee45c49a232d97f upstream.
    
    When I introduced ptracer_cred I failed to consider the weirdness of
    fork where the task_struct copies the old value by default.  This
    winds up leaving ptracer_cred set even when a process forks and
    the child process does not wind up being ptraced.
    
    Because ptracer_cred is not set on non-ptraced processes whose
    parents were ptraced this has broken the ability of the enlightenment
    window manager to start setuid children.
    
    Fix this by properly initializing ptracer_cred in ptrace_init_task
    
    This must be done with a little bit of care to preserve the current value
    of ptracer_cred when ptrace carries through fork.  Re-reading the
    ptracer_cred from the ptracing process at this point is inconsistent
    with how PT_PTRACE_CAP has been maintained all of these years.
    
    Tested-by: Takashi Iwai <tiwai@suse.de>
    Fixes: 64b875f7ac8a ("ptrace: Capture the ptracer's creds not PT_PTRACE_CAP")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aa3fbddbb80119b4cffbb45581c8542d9dcdec79
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Tue Nov 22 12:06:50 2016 -0600

    ptrace: Don't allow accessing an undumpable mm
    
    commit 84d77d3f06e7e8dea057d10e8ec77ad71f721be3 upstream.
    
    It is the reasonable expectation that if an executable file is not
    readable there will be no way for a user without special privileges to
    read the file.  This is enforced in ptrace_attach but if ptrace
    is already attached before exec there is no enforcement for read-only
    executables.
    
    As the only way to read such an mm is through access_process_vm
    spin a variant called ptrace_access_vm that will fail if the
    target process is not being ptraced by the current process, or
    the current process did not have sufficient privileges when ptracing
    began to read the target processes mm.
    
    In the ptrace implementations replace access_process_vm by
    ptrace_access_vm.  There remain several ptrace sites that still use
    access_process_vm as they are reading the target executables
    instructions (for kernel consumption) or register stacks.  As such it
    does not appear necessary to add a permission check to those calls.
    
    This bug has always existed in Linux.
    
    Fixes: v1.0
    Reported-by: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16:
     - Pass around only a write flag, not gup_flags
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0d8337f16fb5d5dd7b963f092779bc990a1cc0e
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Nov 16 22:06:51 2016 -0600

    exec: Ensure mm->user_ns contains the execed files
    
    commit f84df2a6f268de584a201e8911384a2d244876e3 upstream.
    
    When the user namespace support was merged the need to prevent
    ptrace from revealing the contents of an unreadable executable
    was overlooked.
    
    Correct this oversight by ensuring that the executed file
    or files are in mm->user_ns, by adjusting mm->user_ns.
    
    Use the new function privileged_wrt_inode_uidgid to see if
    the executable is a member of the user namespace, and as such
    if having CAP_SYS_PTRACE in the user namespace should allow
    tracing the executable.  If not update mm->user_ns to
    the parent user namespace until an appropriate parent is found.
    
    Reported-by: Jann Horn <jann@thejh.net>
    Fixes: 9e4a36ece652 ("userns: Fail exec for suid and sgid binaries with ids outside our user namespace.")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16:
     - Add #include <linux/user_namespace.h>
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d55a94ed03a24794d47f80d5300825f6c095a0a7
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Nov 14 18:48:07 2016 -0600

    ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
    
    commit 64b875f7ac8a5d60a4e191479299e931ee949b67 upstream.
    
    When the flag PT_PTRACE_CAP was added the PTRACE_TRACEME path was
    overlooked.  This can result in incorrect behavior when an application
    like strace traces an exec of a setuid executable.
    
    Further PT_PTRACE_CAP does not have enough information for making good
    security decisions as it does not report which user namespace the
    capability is in.  This has already allowed one mistake through
    insufficient granulariy.
    
    I found this issue when I was testing another corner case of exec and
    discovered that I could not get strace to set PT_PTRACE_CAP even when
    running strace as root with a full set of caps.
    
    This change fixes the above issue with strace allowing stracing as
    root a setuid executable without disabling setuid.  More fundamentaly
    this change allows what is allowable at all times, by using the correct
    information in it's decision.
    
    Fixes: 4214e42f96d4 ("v2.4.9.11 -> v2.4.9.12")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d5b3e840dbf6dd2c0f30b5982b6f5ecd49e46b12
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu Oct 13 21:23:16 2016 -0500

    mm: Add a user_ns owner to mm_struct and fix ptrace permission checks
    
    commit bfedb589252c01fa505ac9f6f2a3d5d68d707ef4 upstream.
    
    During exec dumpable is cleared if the file that is being executed is
    not readable by the user executing the file.  A bug in
    ptrace_may_access allows reading the file if the executable happens to
    enter into a subordinate user namespace (aka clone(CLONE_NEWUSER),
    unshare(CLONE_NEWUSER), or setns(fd, CLONE_NEWUSER).
    
    This problem is fixed with only necessary userspace breakage by adding
    a user namespace owner to mm_struct, captured at the time of exec, so
    it is clear in which user namespace CAP_SYS_PTRACE must be present in
    to be able to safely give read permission to the executable.
    
    The function ptrace_may_access is modified to verify that the ptracer
    has CAP_SYS_ADMIN in task->mm->user_ns instead of task->cred->user_ns.
    This ensures that if the task changes it's cred into a subordinate
    user namespace it does not become ptraceable.
    
    The function ptrace_attach is modified to only set PT_PTRACE_CAP when
    CAP_SYS_PTRACE is held over task->mm->user_ns.  The intent of
    PT_PTRACE_CAP is to be a flag to note that whatever permission changes
    the task might go through the tracer has sufficient permissions for
    it not to be an issue.  task->cred->user_ns is always the same
    as or descendent of mm->user_ns.  Which guarantees that having
    CAP_SYS_PTRACE over mm->user_ns is the worst case for the tasks
    credentials.
    
    To prevent regressions mm->dumpable and mm->user_ns are not considered
    when a task has no mm.  As simply failing ptrace_may_attach causes
    regressions in privileged applications attempting to read things
    such as /proc/<pid>/stat
    
    Acked-by: Kees Cook <keescook@chromium.org>
    Tested-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Fixes: 8409cca70561 ("userns: allow ptrace from non-init user namespaces")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 596f5ea49ab242fffb25f39fc5552a713d704606
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Tue Mar 22 14:25:33 2016 -0700

    ptrace: change __ptrace_unlink() to clear ->ptrace under ->siglock
    
    commit 1333ab03150478df8d6f5673a91df1e50dc6ab97 upstream.
    
    This test-case (simplified version of generated by syzkaller)
    
            #include <unistd.h>
            #include <sys/ptrace.h>
            #include <sys/wait.h>
    
            void test(void)
            {
                    for (;;) {
                            if (fork()) {
                                    wait(NULL);
                                    continue;
                            }
    
                            ptrace(PTRACE_SEIZE, getppid(), 0, 0);
                            ptrace(PTRACE_INTERRUPT, getppid(), 0, 0);
                            _exit(0);
                    }
            }
    
            int main(void)
            {
                    int np;
    
                    for (np = 0; np < 8; ++np)
                            if (!fork())
                                    test();
    
                    while (wait(NULL) > 0)
                            ;
                    return 0;
            }
    
    triggers the 2nd WARN_ON_ONCE(!signr) warning in do_jobctl_trap().  The
    problem is that __ptrace_unlink() clears task->jobctl under siglock but
    task->ptrace is cleared without this lock held; this fools the "else"
    branch which assumes that !PT_SEIZED means PT_PTRACED.
    
    Note also that most of other PTRACE_SEIZE checks can race with detach
    from the exiting tracer too.  Say, the callers of ptrace_trap_notify()
    assume that SEIZED can't go away after it was checked.
    
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: syzkaller <syzkaller@googlegroups.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3d87544712111ab9e4900936aff45f2f1a538fad
Author: Jann Horn <jann@thejh.net>
Date:   Wed Jan 20 15:00:01 2016 -0800

    security: let security modules use PTRACE_MODE_* with bitmasks
    
    commit 3dfb7d8cdbc7ea0c2970450e60818bb3eefbad69 upstream.
    
    It looks like smack and yama weren't aware that the ptrace mode
    can have flags ORed into it - PTRACE_MODE_NOAUDIT until now, but
    only for /proc/$pid/stat, and with the PTRACE_MODE_*CREDS patch,
    all modes have flags ORed into them.
    
    Signed-off-by: Jann Horn <jann@thejh.net>
    Acked-by: Kees Cook <keescook@chromium.org>
    Acked-by: Casey Schaufler <casey@schaufler-ca.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Morris <james.l.morris@oracle.com>
    Cc: "Serge E. Hallyn" <serge.hallyn@ubuntu.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02b1dd5472cee5286ab1a9eb916c036ab2f86b78
Author: Andrew Honig <ahonig@google.com>
Date:   Fri Dec 1 10:21:09 2017 -0800

    KVM: VMX: remove I/O port 0x80 bypass on Intel hosts
    
    commit d59d51f088014f25c2562de59b9abff4f42a7468 upstream.
    
    This fixes CVE-2017-1000407.
    
    KVM allows guests to directly access I/O port 0x80 on Intel hosts.  If
    the guest floods this port with writes it generates exceptions and
    instability in the host kernel, leading to a crash.  With this change
    guest writes to port 0x80 on Intel will behave the same as they
    currently behave on AMD systems.
    
    Prevent the flooding by removing the code that sets port 0x80 as a
    passthrough port.  This is essentially the same as upstream patch
    99f85a28a78e96d28907fe036e1671a218fee597, except that patch was
    for AMD chipsets and this patch is for Intel.
    
    Signed-off-by: Andrew Honig <ahonig@google.com>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Fixes: fdef3ad1b386 ("KVM: VMX: Enable io bitmaps to avoid IO port 0x80 VMEXITs")
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec041ea68228f2d025e2fa1b5c90a801605d063b
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Nov 27 06:21:25 2017 +0300

    mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d()
    
    commit a8f97366452ed491d13cf1e44241bc0b5740b1f0 upstream.
    
    Currently, we unconditionally make page table dirty in touch_pmd().
    It may result in false-positive can_follow_write_pmd().
    
    We may avoid the situation, if we would only make the page table entry
    dirty if caller asks for write access -- FOLL_WRITE.
    
    The patch also changes touch_pud() in the same way.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [carnil: backport for 3.16:
     - Adjust context
     - Drop specific part for PUD-sized transparent hugepages. Support
       for PUD-sized transparent hugepages was added in v4.11-rc1
    ]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 072bee30c5d314af02c211112697ab0931ab5039
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Dec 12 14:25:13 2017 -0500

    USB: core: prevent malicious bNumInterfaces overflow
    
    commit 48a4ff1c7bb5a32d2e396b03132d20d552c0eca7 upstream.
    
    A malicious USB device with crafted descriptors can cause the kernel
    to access unallocated memory by setting the bNumInterfaces value too
    high in a configuration descriptor.  Although the value is adjusted
    during parsing, this adjustment is skipped in one of the error return
    paths.
    
    This patch prevents the problem by setting bNumInterfaces to 0
    initially.  The existing code already sets it to the proper value
    after parsing is complete.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 06b6060a61b14a747b0f29890fcb20ece18a0944
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Tue Dec 5 15:42:41 2017 -0800

    netfilter: xt_osf: Add missing permission checks
    
    commit 916a27901de01446bcf57ecca4783f6cff493309 upstream.
    
    The capability check in nfnetlink_rcv() verifies that the caller
    has CAP_NET_ADMIN in the namespace that "owns" the netlink socket.
    However, xt_osf_fingers is shared by all net namespaces on the
    system.  An unprivileged user can create user and net namespaces
    in which he holds CAP_NET_ADMIN to bypass the netlink_net_capable()
    check:
    
        vpnns -- nfnl_osf -f /tmp/pf.os
    
        vpnns -- nfnl_osf -f /tmp/pf.os -d
    
    These non-root operations successfully modify the systemwide OS
    fingerprint list.  Add new capable() checks so that they can't.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df524750e2d1ead01cceed5ffc0b62166c7630dd
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Wed Dec 6 12:12:27 2017 -0800

    netlink: Add netns check on taps
    
    commit 93c647643b48f0131f02e45da3bd367d80443291 upstream.
    
    Currently, a nlmon link inside a child namespace can observe systemwide
    netlink activity.  Filter the traffic so that nlmon can only sniff
    netlink messages from its own netns.
    
    Test case:
    
        vpnns -- bash -c "ip link add nlmon0 type nlmon; \
                          ip link set nlmon0 up; \
                          tcpdump -i nlmon0 -q -w /tmp/nlmon.pcap -U" &
        sudo ip xfrm state add src 10.1.1.1 dst 10.1.1.2 proto esp \
            spi 0x1 mode transport \
            auth sha1 0x6162633132330000000000000000000000000000 \
            enc aes 0x00000000000000000000000000000000
        grep --binary abc123 /tmp/nlmon.pcap
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fad6474d43e985338e4c2b3bb1a7668cca1f041a
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Sun Dec 3 12:12:45 2017 -0800

    netfilter: nfnetlink_cthelper: Add missing permission checks
    
    commit 4b380c42f7d00a395feede754f0bc2292eebe6e5 upstream.
    
    The capability check in nfnetlink_rcv() verifies that the caller
    has CAP_NET_ADMIN in the namespace that "owns" the netlink socket.
    However, nfnl_cthelper_list is shared by all net namespaces on the
    system.  An unprivileged user can create user and net namespaces
    in which he holds CAP_NET_ADMIN to bypass the netlink_net_capable()
    check:
    
        $ nfct helper list
        nfct v1.4.4: netlink error: Operation not permitted
        $ vpnns -- nfct helper list
        {
                .name = ftp,
                .queuenum = 0,
                .l3protonum = 2,
                .l4protonum = 6,
                .priv_data_len = 24,
                .status = enabled,
        };
    
    Add capable() checks in nfnetlink_cthelper, as this is cleaner than
    trying to generalize the solution.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eb791765b62b2a615fb692c3394d86f370d72681
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Sat Oct 7 11:07:47 2017 -0700

    Input: ims-psu - check if CDC union descriptor is sane
    
    commit ea04efee7635c9120d015dcdeeeb6988130cb67a upstream.
    
    Before trying to use CDC union descriptor, try to validate whether that it
    is sane by checking that intf->altsetting->extra is big enough and that
    descriptor bLength is not too big and not too small.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 77369e6ee42b28a529932f5f7a5522de73310d21
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Dec 19 06:20:59 2014 +0000

    Bluetooth: bnep: bnep_add_connection() should verify that it's dealing with l2cap socket
    
    commit 71bb99a02b32b4cc4265118e85f6035ca72923f0 upstream.
    
    same story as cmtp
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 255a10baacc5c4fd47d7b27619df68ae0aaf21bc
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Dec 19 06:20:58 2014 +0000

    Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket
    
    commit 96c26653ce65bf84f3212f8b00d4316c1efcbf4c upstream.
    
    ... rather than relying on ciptool(8) never passing it anything else.  Give
    it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops,
    trying to evaluate &l2cap_pi(sock->sk)->chan->dst...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 37e923d49eb8219cab4e49237d026755276484a0
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Tue Dec 5 20:58:35 2017 +0000

    dccp: CVE-2017-8824: use-after-free in DCCP code
    
    commit 69c64866ce072dea1d1e59a0d61e0f66c0dffb76 upstream.
    
    Whenever the sock object is in DCCP_CLOSED state,
    dccp_disconnect() must free dccps_hc_tx_ccid and
    dccps_hc_rx_ccid and set to NULL.
    
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 46998ed33792e51981e9b9bcdc2de626048f39d9
Author: Lauro Ramos Venancio <lvenanci@redhat.com>
Date:   Thu Apr 20 16:51:40 2017 -0300

    sched/topology: Optimize build_group_mask()
    
    commit f32d782e31bf079f600dcec126ed117b0577e85c upstream.
    
    The group mask is always used in intersection with the group CPUs. So,
    when building the group mask, we don't have to care about CPUs that are
    not part of the group.
    
    Signed-off-by: Lauro Ramos Venancio <lvenanci@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: lwang@redhat.com
    Cc: riel@redhat.com
    Link: http://lkml.kernel.org/r/1492717903-5195-2-git-send-email-lvenanci@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16:
     - Update another reference to 'span' introduced by an earlier backport of
       sched/topology changes
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5b98e5119cddd7b69c9a2682da683538fcc2624d
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 14 17:32:07 2017 +0200

    sched/topology: Simplify build_overlap_sched_groups()
    
    commit 91eaed0d61319f58a9f8e43d41a8cbb069b4f73d upstream.
    
    Now that the first group will always be the previous domain of this
    @cpu this can be simplified.
    
    In fact, writing the code now removed should've been a big clue I was
    doing it wrong :/
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab9fe361192643def006b412f42ceaae1c31a10e
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Apr 26 17:36:41 2017 +0200

    sched/topology: Remove FORCE_SD_OVERLAP
    
    commit af85596c74de2fd9abb87501ae280038ac28a3f4 upstream.
    
    Its an obsolete debug mechanism and future code wants to rely on
    properties this undermines.
    
    Namely, it would be good to assume that SD_OVERLAP domains have
    children, but if we build the entire hierarchy with SD_OVERLAP this is
    obviously false.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 62350f3b6cf96d8a0f4f1eb352908e2bfa355739
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Nov 9 16:43:13 2017 -0800

    vlan: fix a use-after-free in vlan_device_event()
    
    commit 052d41c01b3a2e3371d66de569717353af489d63 upstream.
    
    After refcnt reaches zero, vlan_vid_del() could free
    dev->vlan_info via RCU:
    
            RCU_INIT_POINTER(dev->vlan_info, NULL);
            call_rcu(&vlan_info->rcu, vlan_info_rcu_free);
    
    However, the pointer 'grp' still points to that memory
    since it is set before vlan_vid_del():
    
            vlan_info = rtnl_dereference(dev->vlan_info);
            if (!vlan_info)
                    goto out;
            grp = &vlan_info->grp;
    
    Depends on when that RCU callback is scheduled, we could
    trigger a use-after-free in vlan_group_for_each_dev()
    right following this vlan_vid_del().
    
    Fix it by moving vlan_vid_del() before setting grp. This
    is also symmetric to the vlan_vid_add() we call in
    vlan_device_event().
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Fixes: efc73f4bbc23 ("net: Fix memory leak - vlan_info struct")
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Girish Moodalbail <girish.moodalbail@oracle.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Girish Moodalbail <girish.moodalbail@oracle.com>
    Tested-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c6b9319fcd21883fdb3c366a176a24fe924571f2
Author: Richard Schütz <rschuetz@uni-koblenz.de>
Date:   Sun Oct 29 13:03:22 2017 +0100

    can: c_can: don't indicate triple sampling support for D_CAN
    
    commit fb5f0b3ef69b95e665e4bbe8a3de7201f09f1071 upstream.
    
    The D_CAN controller doesn't provide a triple sampling mode, so don't set
    the CAN_CTRLMODE_3_SAMPLES flag in ctrlmode_supported. Currently enabling
    triple sampling is a no-op.
    
    Signed-off-by: Richard Schütz <rschuetz@uni-koblenz.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd78cf7ceba9be4675a4e0243d3f8c41f9106bcb
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Nov 6 11:33:36 2017 +0100

    rbd: use GFP_NOIO for parent stat and data requests
    
    commit 1e37f2f84680fa7f8394fd444b6928e334495ccc upstream.
    
    rbd_img_obj_exists_submit() and rbd_img_obj_parent_read_full() are on
    the writeback path for cloned images -- we attempt a stat on the parent
    object to see if it exists and potentially read it in to call copyup.
    GFP_NOIO should be used instead of GFP_KERNEL here.
    
    Link: http://tracker.ceph.com/issues/22014
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: David Disseldorp <ddiss@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9cb719a2fa61fa0fbb9336775c4b7c28d259ce1e
Author: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date:   Sun Oct 29 16:27:20 2017 +0100

    MIPS: AR7: Ensure that serial ports are properly set up
    
    commit b084116f8587b222a2c5ef6dcd846f40f24b9420 upstream.
    
    Without UPF_FIXED_TYPE, the data from the PORT_AR7 uart_config entry is
    never copied, resulting in a dead port.
    
    Fixes: 154615d55459 ("MIPS: AR7: Use correct UART port type")
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    [jonas.gorski: add Fixes tag]
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
    Cc: Nicolas Schichan <nschichan@freebox.fr>
    Cc: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
    Cc: linux-mips@linux-mips.org
    Cc: linux-serial@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17543/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 80d099e0ed9157b33b0f7fe85c0fb031194268fc
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Nov 7 22:29:02 2017 +0000

    KEYS: fix NULL pointer dereference during ASN.1 parsing [ver #2]
    
    commit 624f5ab8720b3371367327a822c267699c1823b8 upstream.
    
    syzkaller reported a NULL pointer dereference in asn1_ber_decoder().  It
    can be reproduced by the following command, assuming
    CONFIG_PKCS7_TEST_KEY=y:
    
            keyctl add pkcs7_test desc '' @s
    
    The bug is that if the data buffer is empty, an integer underflow occurs
    in the following check:
    
            if (unlikely(dp >= datalen - 1))
                    goto data_overrun_error;
    
    This results in the NULL data pointer being dereferenced.
    
    Fix it by checking for 'datalen - dp < 2' instead.
    
    Also fix the similar check for 'dp >= datalen - n' later in the same
    function.  That one possibly could result in a buffer overread.
    
    The NULL pointer dereference was reproducible using the "pkcs7_test" key
    type but not the "asymmetric" key type because the "asymmetric" key type
    checks for a 0-length payload before calling into the ASN.1 decoder but
    the "pkcs7_test" key type does not.
    
    The bug report was:
    
        BUG: unable to handle kernel NULL pointer dereference at           (null)
        IP: asn1_ber_decoder+0x17f/0xe60 lib/asn1_decoder.c:233
        PGD 7b708067 P4D 7b708067 PUD 7b6ee067 PMD 0
        Oops: 0000 [#1] SMP
        Modules linked in:
        CPU: 0 PID: 522 Comm: syz-executor1 Not tainted 4.14.0-rc8 #7
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.3-20171021_125229-anatol 04/01/2014
        task: ffff9b6b3798c040 task.stack: ffff9b6b37970000
        RIP: 0010:asn1_ber_decoder+0x17f/0xe60 lib/asn1_decoder.c:233
        RSP: 0018:ffff9b6b37973c78 EFLAGS: 00010216
        RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000000000021c
        RDX: ffffffff814a04ed RSI: ffffb1524066e000 RDI: ffffffff910759e0
        RBP: ffff9b6b37973d60 R08: 0000000000000001 R09: ffff9b6b3caa4180
        R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000002
        R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
        FS:  00007f10ed1f2700(0000) GS:ffff9b6b3ea00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000000 CR3: 000000007b6f3000 CR4: 00000000000006f0
        Call Trace:
         pkcs7_parse_message+0xee/0x240 crypto/asymmetric_keys/pkcs7_parser.c:139
         verify_pkcs7_signature+0x33/0x180 certs/system_keyring.c:216
         pkcs7_preparse+0x41/0x70 crypto/asymmetric_keys/pkcs7_key_type.c:63
         key_create_or_update+0x180/0x530 security/keys/key.c:855
         SYSC_add_key security/keys/keyctl.c:122 [inline]
         SyS_add_key+0xbf/0x250 security/keys/keyctl.c:62
         entry_SYSCALL_64_fastpath+0x1f/0xbe
        RIP: 0033:0x4585c9
        RSP: 002b:00007f10ed1f1bd8 EFLAGS: 00000216 ORIG_RAX: 00000000000000f8
        RAX: ffffffffffffffda RBX: 00007f10ed1f2700 RCX: 00000000004585c9
        RDX: 0000000020000000 RSI: 0000000020008ffb RDI: 0000000020008000
        RBP: 0000000000000000 R08: ffffffffffffffff R09: 0000000000000000
        R10: 0000000000000000 R11: 0000000000000216 R12: 00007fff1b2260ae
        R13: 00007fff1b2260af R14: 00007f10ed1f2700 R15: 0000000000000000
        Code: dd ca ff 48 8b 45 88 48 83 e8 01 4c 39 f0 0f 86 a8 07 00 00 e8 53 dd ca ff 49 8d 46 01 48 89 85 58 ff ff ff 48 8b 85 60 ff ff ff <42> 0f b6 0c 30 89 c8 88 8d 75 ff ff ff 83 e0 1f 89 8d 28 ff ff
        RIP: asn1_ber_decoder+0x17f/0xe60 lib/asn1_decoder.c:233 RSP: ffff9b6b37973c78
        CR2: 0000000000000000
    
    Fixes: 42d5ec27f873 ("X.509: Add an ASN.1 decoder")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 26ae39d88b9071cbac63d7c4ea0f3e4f24b27fef
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Nov 7 18:53:07 2017 +0100

    x86/oprofile/ppro: Do not use __this_cpu*() in preemptible context
    
    commit a743bbeef27b9176987ec0cb7f906ab0ab52d1da upstream.
    
    The warning below says it all:
    
      BUG: using __this_cpu_read() in preemptible [00000000] code: swapper/0/1
      caller is __this_cpu_preempt_check
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.0-rc8 #4
      Call Trace:
       dump_stack
       check_preemption_disabled
       ? do_early_param
       __this_cpu_preempt_check
       arch_perfmon_init
       op_nmi_init
       ? alloc_pci_root_info
       oprofile_arch_init
       oprofile_init
       do_one_initcall
       ...
    
    These accessors should not have been used in the first place: it is PPro so
    no mixed silicon revisions and thus it can simply use boot_cpu_data.
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Tested-by: Fengguang Wu <fengguang.wu@intel.com>
    Fix-creation-mandated-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Robert Richter <rric@kernel.org>
    Cc: x86@kernel.org
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 242d28064b8351af5b5085a62dc0407fb1714d9c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 7 16:05:24 2017 +0100

    ALSA: seq: Fix OSS sysex delivery in OSS emulation
    
    commit 132d358b183ac6ad8b3fea32ad5e0663456d18d1 upstream.
    
    The SYSEX event delivery in OSS sequencer emulation assumed that the
    event is encoded in the variable-length data with the straight
    buffering.  This was the normal behavior in the past, but during the
    development, the chained buffers were introduced for carrying more
    data, while the OSS code was left intact.  As a result, when a SYSEX
    event with the chained buffer data is passed to OSS sequencer port,
    it may end up with the wrong memory access, as if it were having a too
    large buffer.
    
    This patch addresses the bug, by applying the buffer data expansion by
    the generic snd_seq_dump_var_event() helper function.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reported-by: Mark Salyzyn <salyzyn@android.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a7a1e985acc925aacf54e7cd96d2032c2620b3b1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Nov 6 20:16:50 2017 +0100

    ALSA: seq: Avoid invalid lockdep class warning
    
    commit 3510c7aa069aa83a2de6dab2b41401a198317bdc upstream.
    
    The recent fix for adding rwsem nesting annotation was using the given
    "hop" argument as the lock subclass key.  Although the idea itself
    works, it may trigger a kernel warning like:
      BUG: looking up invalid subclass: 8
      ....
    since the lockdep has a smaller number of subclasses (8) than we
    currently allow for the hops there (10).
    
    The current definition is merely a sanity check for avoiding the too
    deep delivery paths, and the 8 hops are already enough.  So, as a
    quick fix, just follow the max hops as same as the max lockdep
    subclasses.
    
    Fixes: 1f20f9ff57ca ("ALSA: seq: Fix nested rwsem annotation for lockdep splat")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a628beebbf8035f52a7090d429ae3d76594d2f0
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Nov 2 18:44:28 2017 +0100

    ARM: 8720/1: ensure dump_instr() checks addr_limit
    
    commit b9dd05c7002ee0ca8b676428b2268c26399b5e31 upstream.
    
    When CONFIG_DEBUG_USER is enabled, it's possible for a user to
    deliberately trigger dump_instr() with a chosen kernel address.
    
    Let's avoid problems resulting from this by using get_user() rather than
    __get_user(), ensuring that we don't erroneously access kernel memory.
    
    So that we can use the same code to dump user instructions and kernel
    instructions, the common dumping code is factored out to __dump_instr(),
    with the fs manipulated appropriately in dump_instr() around calls to
    this.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d1e8308873ed4084e2fccaad541b4f66686f6c3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Nov 5 10:07:43 2017 +0100

    ALSA: timer: Limit max instances per timer
    
    commit 9b7d869ee5a77ed4a462372bb89af622e705bfb8 upstream.
    
    Currently we allow unlimited number of timer instances, and it may
    bring the system hogging way too much CPU when too many timer
    instances are opened and processed concurrently.  This may end up with
    a soft-lockup report as triggered by syzkaller, especially when
    hrtimer backend is deployed.
    
    Since such insane number of instances aren't demanded by the normal
    use case of ALSA sequencer and it merely  opens a risk only for abuse,
    this patch introduces the upper limit for the number of instances per
    timer backend.  As default, it's set to 1000, but for the fine-grained
    timer like hrtimer, it's set to 100.
    
    Reported-by: syzbot
    Tested-by: Jérôme Glisse <jglisse@redhat.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit afb08429d01d697862083fda03c9458d909ef48f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 10 11:53:30 2016 +0100

    ALSA: timer: Protect the whole snd_timer_close() with open race
    
    commit 9984d1b5835ca29fc7025186a891ee7398d21cc7 upstream.
    
    In order to make the open/close more robust, widen the register_mutex
    protection over the whole snd_timer_close() function.  Also, the close
    procedure is slightly shuffled to be in the safer order, as well as a
    few code refactoring.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7f67e56bdd761a0437cc440a03f2f4fee0362bcf
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Nov 3 16:49:00 2017 +0100

    l2tp: don't use l2tp_tunnel_find() in l2tp_ip and l2tp_ip6
    
    commit 8f7dc9ae4a7aece9fbc3e6637bdfa38b36bcdf09 upstream.
    
    Using l2tp_tunnel_find() in l2tp_ip_recv() is wrong for two reasons:
    
      * It doesn't take a reference on the returned tunnel, which makes the
        call racy wrt. concurrent tunnel deletion.
    
      * The lookup is only based on the tunnel identifier, so it can return
        a tunnel that doesn't match the packet's addresses or protocol.
    
    For example, a packet sent to an L2TPv3 over IPv6 tunnel can be
    delivered to an L2TPv2 over UDPv4 tunnel. This is worse than a simple
    cross-talk: when delivering the packet to an L2TP over UDP tunnel, the
    corresponding socket is UDP, where ->sk_backlog_rcv() is NULL. Calling
    sk_receive_skb() will then crash the kernel by trying to execute this
    callback.
    
    And l2tp_tunnel_find() isn't even needed here. __l2tp_ip_bind_lookup()
    properly checks the socket binding and connection settings. It was used
    as a fallback mechanism for finding tunnels that didn't have their data
    path registered yet. But it's not limited to this case and can be used
    to replace l2tp_tunnel_find() in the general case.
    
    Fix l2tp_ip6 in the same way.
    
    Fixes: 0d76751fad77 ("l2tp: Add L2TPv3 IP encapsulation (no UDP) support")
    Fixes: a32e0eec7042 ("l2tp: introduce L2TPv3 IP encapsulation support for IPv6")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - In l2tp_ip6.c, always look up in init_net
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7cf582467d3e9386103ff6af2a0c52aa4e9c7c36
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Mar 29 08:44:59 2017 +0200

    l2tp: hold tunnel socket when handling control frames in l2tp_ip and l2tp_ip6
    
    commit 94d7ee0baa8b764cf64ad91ed69464c1a6a0066b upstream.
    
    The code following l2tp_tunnel_find() expects that a new reference is
    held on sk. Either sk_receive_skb() or the discard_put error path will
    drop a reference from the tunnel's socket.
    
    This issue exists in both l2tp_ip and l2tp_ip6.
    
    Fixes: a3c18422a4b4 ("l2tp: hold socket before dropping lock in l2tp_ip{, 6}_recv()")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5ce8a2b88ea52f26ec5d0294f8bf7fa4cb5c1b64
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Tue Nov 29 13:09:45 2016 +0100

    l2tp: hold socket before dropping lock in l2tp_ip{, 6}_recv()
    
    commit a3c18422a4b4e108bcf6a2328f48867e1003fd95 upstream.
    
    Socket must be held while under the protection of the l2tp lock; there
    is no guarantee that sk remains valid after the read_unlock_bh() call.
    
    Same issue for l2tp_ip and l2tp_ip6.
    
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 81ecd600d8dbb8799faa6d9d680790c6e4827019
Author: Ye Yin <hustcat@gmail.com>
Date:   Thu Oct 26 16:57:05 2017 +0800

    netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed
    
    commit 2b5ec1a5f9738ee7bf8f5ec0526e75e00362c48f upstream.
    
    When run ipvs in two different network namespace at the same host, and one
    ipvs transport network traffic to the other network namespace ipvs.
    'ipvs_property' flag will make the second ipvs take no effect. So we should
    clear 'ipvs_property' when SKB network namespace changed.
    
    Fixes: 621e84d6f373 ("dev: introduce skb_scrub_packet()")
    Signed-off-by: Ye Yin <hustcat@gmail.com>
    Signed-off-by: Wei Zhou <chouryzhou@gmail.com>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e50d80f29f010bef1b8e247550e555623ab8ab6
Author: Ashish Samant <ashish.samant@oracle.com>
Date:   Thu Nov 2 15:59:37 2017 -0700

    ocfs2: fstrim: Fix start offset of first cluster group during fstrim
    
    commit 105ddc93f06ebe3e553f58563d11ed63dbcd59f0 upstream.
    
    The first cluster group descriptor is not stored at the start of the
    group but at an offset from the start.  We need to take this into
    account while doing fstrim on the first cluster group.  Otherwise we
    will wrongly start fstrim a few blocks after the desired start block and
    the range can cross over into the next cluster group and zero out the
    group descriptor there.  This can cause filesytem corruption that cannot
    be fixed by fsck.
    
    Link: http://lkml.kernel.org/r/1507835579-7308-1-git-send-email-ashish.samant@oracle.com
    Signed-off-by: Ashish Samant <ashish.samant@oracle.com>
    Reviewed-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e29689c373d4f3a1e966329935f95f09abf6631
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Nov 2 16:12:03 2017 +0000

    arm64: ensure __dump_instr() checks addr_limit
    
    commit 7a7003b1da010d2b0d1dc8bf21c10f5c73b389f1 upstream.
    
    It's possible for a user to deliberately trigger __dump_instr with a
    chosen kernel address.
    
    Let's avoid problems resulting from this by using get_user() rather than
    __get_user(), ensuring that we don't erroneously access kernel memory.
    
    Where we use __dump_instr() on kernel text, we already switch to
    KERNEL_DS, so this shouldn't adversely affect those cases.
    
    Fixes: 60ffc30d5652810d ("arm64: Exception handling")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff684b0ce47a41eddc1071d6e2c5d0651b2f4117
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Mon Jun 13 11:15:14 2016 +0100

    arm64: fix dump_instr when PAN and UAO are in use
    
    commit c5cea06be060f38e5400d796e61cfc8c36e52924 upstream.
    
    If the kernel is set to show unhandled signals, and a user task does not
    handle a SIGILL as a result of an instruction abort, we will attempt to
    log the offending instruction with dump_instr before killing the task.
    
    We use dump_instr to log the encoding of the offending userspace
    instruction. However, dump_instr is also used to dump instructions from
    kernel space, and internally always switches to KERNEL_DS before dumping
    the instruction with get_user. When both PAN and UAO are in use, reading
    a user instruction via get_user while in KERNEL_DS will result in a
    permission fault, which leads to an Oops.
    
    As we have regs corresponding to the context of the original instruction
    abort, we can inspect this and only flip to KERNEL_DS if the original
    abort was taken from the kernel, avoiding this issue. At the same time,
    remove the redundant (and incorrect) comments regarding the order
    dump_mem and dump_instr are called in.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Reported-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Fixes: 57f4959bad0a154a ("arm64: kernel: Add support for User Access Override")
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c5db4fc4850b64d4b7b2f551c9c439c2d38b422b
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Nov 2 00:47:19 2017 +0000

    KEYS: fix out-of-bounds read during ASN.1 parsing
    
    commit 2eb9eabf1e868fda15808954fb29b0f105ed65f1 upstream.
    
    syzkaller with KASAN reported an out-of-bounds read in
    asn1_ber_decoder().  It can be reproduced by the following command,
    assuming CONFIG_X509_CERTIFICATE_PARSER=y and CONFIG_KASAN=y:
    
        keyctl add asymmetric desc $'\x30\x30' @s
    
    The bug is that the length of an ASN.1 data value isn't validated in the
    case where it is encoded using the short form, causing the decoder to
    read past the end of the input buffer.  Fix it by validating the length.
    
    The bug report was:
    
        BUG: KASAN: slab-out-of-bounds in asn1_ber_decoder+0x10cb/0x1730 lib/asn1_decoder.c:233
        Read of size 1 at addr ffff88003cccfa02 by task syz-executor0/6818
    
        CPU: 1 PID: 6818 Comm: syz-executor0 Not tainted 4.14.0-rc7-00008-g5f479447d983 #2
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Call Trace:
         __dump_stack lib/dump_stack.c:16 [inline]
         dump_stack+0xb3/0x10b lib/dump_stack.c:52
         print_address_description+0x79/0x2a0 mm/kasan/report.c:252
         kasan_report_error mm/kasan/report.c:351 [inline]
         kasan_report+0x236/0x340 mm/kasan/report.c:409
         __asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:427
         asn1_ber_decoder+0x10cb/0x1730 lib/asn1_decoder.c:233
         x509_cert_parse+0x1db/0x650 crypto/asymmetric_keys/x509_cert_parser.c:89
         x509_key_preparse+0x64/0x7a0 crypto/asymmetric_keys/x509_public_key.c:174
         asymmetric_key_preparse+0xcb/0x1a0 crypto/asymmetric_keys/asymmetric_type.c:388
         key_create_or_update+0x347/0xb20 security/keys/key.c:855
         SYSC_add_key security/keys/keyctl.c:122 [inline]
         SyS_add_key+0x1cd/0x340 security/keys/keyctl.c:62
         entry_SYSCALL_64_fastpath+0x1f/0xbe
        RIP: 0033:0x447c89
        RSP: 002b:00007fca7a5d3bd8 EFLAGS: 00000246 ORIG_RAX: 00000000000000f8
        RAX: ffffffffffffffda RBX: 00007fca7a5d46cc RCX: 0000000000447c89
        RDX: 0000000020006f4a RSI: 0000000020006000 RDI: 0000000020001ff5
        RBP: 0000000000000046 R08: fffffffffffffffd R09: 0000000000000000
        R10: 0000000000000002 R11: 0000000000000246 R12: 0000000000000000
        R13: 0000000000000000 R14: 00007fca7a5d49c0 R15: 00007fca7a5d4700
    
    Fixes: 42d5ec27f873 ("X.509: Add an ASN.1 decoder")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec1bef77b52e565a32e1d51bdc0e0c584ea5c6bc
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Nov 2 00:47:12 2017 +0000

    KEYS: trusted: fix writing past end of buffer in trusted_read()
    
    commit a3c812f7cfd80cf51e8f5b7034f7418f6beb56c1 upstream.
    
    When calling keyctl_read() on a key of type "trusted", if the
    user-supplied buffer was too small, the kernel ignored the buffer length
    and just wrote past the end of the buffer, potentially corrupting
    userspace memory.  Fix it by instead returning the size required, as per
    the documentation for keyctl_read().
    
    We also don't even fill the buffer at all in this case, as this is
    slightly easier to implement than doing a short read, and either
    behavior appears to be permitted.  It also makes it match the behavior
    of the "encrypted" key type.
    
    Fixes: d00a1c72f7f4 ("keys: add new trusted key-type")
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4baf7d94dbd1d15f87510b10c28cfd292d47eaf9
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jun 8 14:49:18 2017 +0100

    KEYS: trusted: sanitize all key material
    
    commit ee618b4619b72527aaed765f0f0b74072b281159 upstream.
    
    As the previous patch did for encrypted-keys, zero sensitive any
    potentially sensitive data related to the "trusted" key type before it
    is freed.  Notably, we were not zeroing the tpm_buf structures in which
    the actual key is stored for TPM seal and unseal, nor were we zeroing
    the trusted_key_payload in certain error paths.
    
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Cc: David Safford <safford@us.ibm.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    [bwh: Backported to 3.16:
     - Drop one unapplicable change
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 38e9e70c8a5c801f11958c4d47ae955ac952ff44
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Nov 2 00:47:03 2017 +0000

    KEYS: return full count in keyring_read() if buffer is too small
    
    commit 3239b6f29bdfb4b0a2ba59df995fc9e6f4df7f1f upstream.
    
    Commit e645016abc80 ("KEYS: fix writing past end of user-supplied buffer
    in keyring_read()") made keyring_read() stop corrupting userspace memory
    when the user-supplied buffer is too small.  However it also made the
    return value in that case be the short buffer size rather than the size
    required, yet keyctl_read() is actually documented to return the size
    required.  Therefore, switch it over to the documented behavior.
    
    Note that for now we continue to have it fill the short buffer, since it
    did that before (pre-v3.13) and dump_key_tree_aux() in keyutils arguably
    relies on it.
    
    Fixes: e645016abc80 ("KEYS: fix writing past end of user-supplied buffer in keyring_read()")
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6cefbfcabe5c3f003d374f43996f0a091e89f914
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 30 23:08:20 2017 -0700

    tcp: fix tcp_mtu_probe() vs highest_sack
    
    commit 2b7cda9c35d3b940eb9ce74b30bbd5eb30db493d upstream.
    
    Based on SNMP values provided by Roman, Yuchung made the observation
    that some crashes in tcp_sacktag_walk() might be caused by MTU probing.
    
    Looking at tcp_mtu_probe(), I found that when a new skb was placed
    in front of the write queue, we were not updating tcp highest sack.
    
    If one skb is freed because all its content was copied to the new skb
    (for MTU probing), then tp->highest_sack could point to a now freed skb.
    
    Bad things would then happen, including infinite loops.
    
    This patch renames tcp_highest_sack_combine() and uses it
    from tcp_mtu_probe() to fix the bug.
    
    Note that I also removed one test against tp->sacked_out,
    since we want to replace tp->highest_sack regardless of whatever
    condition, since keeping a stale pointer to freed skb is a recipe
    for disaster.
    
    Fixes: a47e5a988a57 ("[TCP]: Convert highest_sack to sk_buff to allow direct access")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
    Reported-by: Roman Gushchin <guro@fb.com>
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 161974d840b46afdc42fe58469915c6dbd01c287
Author: Craig Gallek <kraig@google.com>
Date:   Mon Oct 30 18:50:11 2017 -0400

    tun/tap: sanitize TUNSETSNDBUF input
    
    commit 93161922c658c714715686cd0cf69b090cb9bf1d upstream.
    
    Syzkaller found several variants of the lockup below by setting negative
    values with the TUNSETSNDBUF ioctl.  This patch adds a sanity check
    to both the tun and tap versions of this ioctl.
    
      watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [repro:2389]
      Modules linked in:
      irq event stamp: 329692056
      hardirqs last  enabled at (329692055): [<ffffffff824b8381>] _raw_spin_unlock_irqrestore+0x31/0x75
      hardirqs last disabled at (329692056): [<ffffffff824b9e58>] apic_timer_interrupt+0x98/0xb0
      softirqs last  enabled at (35659740): [<ffffffff824bc958>] __do_softirq+0x328/0x48c
      softirqs last disabled at (35659731): [<ffffffff811c796c>] irq_exit+0xbc/0xd0
      CPU: 0 PID: 2389 Comm: repro Not tainted 4.14.0-rc7 #23
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      task: ffff880009452140 task.stack: ffff880006a20000
      RIP: 0010:_raw_spin_lock_irqsave+0x11/0x80
      RSP: 0018:ffff880006a27c50 EFLAGS: 00000282 ORIG_RAX: ffffffffffffff10
      RAX: ffff880009ac68d0 RBX: ffff880006a27ce0 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffff880006a27ce0 RDI: ffff880009ac6900
      RBP: ffff880006a27c60 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000001 R11: 000000000063ff00 R12: ffff880009ac6900
      R13: ffff880006a27cf8 R14: 0000000000000001 R15: ffff880006a27cf8
      FS:  00007f4be4838700(0000) GS:ffff88000cc00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000020101000 CR3: 0000000009616000 CR4: 00000000000006f0
      Call Trace:
       prepare_to_wait+0x26/0xc0
       sock_alloc_send_pskb+0x14e/0x270
       ? remove_wait_queue+0x60/0x60
       tun_get_user+0x2cc/0x19d0
       ? __tun_get+0x60/0x1b0
       tun_chr_write_iter+0x57/0x86
       __vfs_write+0x156/0x1e0
       vfs_write+0xf7/0x230
       SyS_write+0x57/0xd0
       entry_SYSCALL_64_fastpath+0x1f/0xbe
      RIP: 0033:0x7f4be4356df9
      RSP: 002b:00007ffc18101c08 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
      RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f4be4356df9
      RDX: 0000000000000046 RSI: 0000000020101000 RDI: 0000000000000005
      RBP: 00007ffc18101c40 R08: 0000000000000001 R09: 0000000000000001
      R10: 0000000000000001 R11: 0000000000000293 R12: 0000559c75f64780
      R13: 00007ffc18101d30 R14: 0000000000000000 R15: 0000000000000000
    
    Fixes: 33dccbb050bb ("tun: Limit amount of queued packets per device")
    Fixes: 20d29d7a916a ("net: macvtap driver")
    Signed-off-by: Craig Gallek <kraig@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bae44deed2ab8704a5102919de7fac2a5193a046
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Sep 18 13:41:09 2015 +0300

    macvtap: fix TUNSETSNDBUF values > 64k
    
    commit 3ea79249e81e5ed051f2e6480cbde896d99046e8 upstream.
    
    Upon TUNSETSNDBUF,  macvtap reads the requested sndbuf size into
    a local variable u.
    commit 39ec7de7092b ("macvtap: fix uninitialized access on
    TUNSETIFF") changed its type to u16 (which is the right thing to
    do for all other macvtap ioctls), breaking all values > 64k.
    
    The value of TUNSETSNDBUF is actually a signed 32 bit integer, so
    the right thing to do is to read it into an int.
    
    Cc: David S. Miller <davem@davemloft.net>
    Fixes: 39ec7de7092b ("macvtap: fix uninitialized access on TUNSETIFF")
    Reported-by: Mark A. Peloquin
    Bisected-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
    Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Tested-by:  Matthew Rosato <mjrosato@linux.vnet.ibm.com>
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dc66b10f907649ca66974942eb9d745fb9c81ae1
Author: Gustavo A. R. Silva <garsilva@embeddedor.com>
Date:   Tue Oct 31 00:35:03 2017 -0500

    MIPS: microMIPS: Fix incorrect mask in insn_table_MM
    
    commit 77238e76b9156d28d86c1e31c00ed2960df0e4de upstream.
    
    It seems that this is a typo error and the proper bit masking is
    "RT | RS" instead of "RS | RS".
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: d6b3314b49e1 ("MIPS: uasm: Add lh uam instruction")
    Reported-by: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
    Reviewed-by: James Hogan <jhogan@kernel.org>
    Patchwork: https://patchwork.linux-mips.org/patch/17551/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d837a4578647c2d8ae0e6734cda0cd5a379ea73
Author: Paul Burton <paul.burton@mips.com>
Date:   Tue Oct 31 15:09:22 2017 -0700

    MIPS: Fix CM region target definitions
    
    commit 6a6cba1d945a7511cdfaf338526871195e420762 upstream.
    
    The default CM target field in the GCR_BASE register is encoded with 0
    meaning memory & 1 being reserved. However the definitions we use for
    those bits effectively get these two values backwards - likely because
    they were copied from the definitions for the CM regions where the
    target is encoded differently. This results in use setting up GCR_BASE
    with the reserved target value by default, rather than targeting memory
    as intended. Although we currently seem to get away with this it's not a
    great idea to rely upon.
    
    Fix this by changing our macros to match the documentated target values.
    
    The incorrect encoding became used as of commit 9f98f3dd0c51 ("MIPS: Add
    generic CM probe & access code") in the Linux v3.15 cycle, and was
    likely carried forwards from older but unused code introduced by
    commit 39b8d5254246 ("[MIPS] Add support for MIPS CMP platform.") in the
    v2.6.26 cycle.
    
    Fixes: 9f98f3dd0c51 ("MIPS: Add generic CM probe & access code")
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reported-by: Matt Redfearn <matt.redfearn@mips.com>
    Reviewed-by: James Hogan <jhogan@kernel.org>
    Cc: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17562/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a8001aacca3f29cb32157c80dec8caf87e261ede
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Oct 29 11:10:43 2017 +0100

    ALSA: seq: Fix nested rwsem annotation for lockdep splat
    
    commit 1f20f9ff57ca23b9f5502fca85ce3977e8496cb1 upstream.
    
    syzkaller reported the lockdep splat due to the possible deadlock of
    grp->list_mutex of each sequencer client object.  Actually this is
    rather a false-positive report due to the missing nested lock
    annotations.  The sequencer client may deliver the event directly to
    another client which takes another own lock.
    
    For addressing this issue, this patch replaces the simple down_read()
    with down_read_nested().  As a lock subclass, the already existing
    "hop" can be re-used, which indicates the depth of the call.
    
    Reference: http://lkml.kernel.org/r/089e082686ac9b482e055c832617@google.com
    Reported-by: syzbot <bot+7feb8de6b4d6bf810cf098bef942cc387e79d0ad@syzkaller.appspotmail.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95cbbefc2be575646f45cb512f63581219ac5545
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Oct 29 11:02:04 2017 +0100

    ALSA: timer: Add missing mutex lock for compat ioctls
    
    commit 79fb0518fec8c8b4ea7f1729f54f293724b3dbb0 upstream.
    
    The races among ioctl and other operations were protected by the
    commit af368027a49a ("ALSA: timer: Fix race among timer ioctls") and
    later fixes, but one code path was forgotten in the scenario: the
    32bit compat ioctl.  As syzkaller recently spotted, a very similar
    use-after-free may happen with the combination of compat ioctls.
    
    The fix is simply to apply the same ioctl_lock to the compat_ioctl
    callback, too.
    
    Fixes: af368027a49a ("ALSA: timer: Fix race among timer ioctls")
    Reference: http://lkml.kernel.org/r/089e082686ac9b482e055c832617@google.com
    Reported-by: syzbot <bot+e5f3c9783e7048a74233054febbe9f1bdf54b6da@syzkaller.appspotmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 99f80f253709d67ee991bb21ceaa09e2e09d462c
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Oct 30 17:58:58 2017 +0100

    l2tp: hold tunnel in pppol2tp_connect()
    
    commit f9e56baf03f9d36043a78f16e3e8b2cfd211e09e upstream.
    
    Use l2tp_tunnel_get() in pppol2tp_connect() to ensure the tunnel isn't
    going to disappear while processing the rest of the function.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a682a684485e20fd97353909c87e778a18c68f5e
Author: Li Bin <huawei.libin@huawei.com>
Date:   Sat Oct 28 11:07:28 2017 +0800

    workqueue: Fix NULL pointer dereference
    
    commit cef572ad9bd7f85035ba8272e5352040e8be0152 upstream.
    
    When queue_work() is used in irq (not in task context), there is
    a potential case that trigger NULL pointer dereference.
    ----------------------------------------------------------------
    worker_thread()
    |-spin_lock_irq()
    |-process_one_work()
            |-worker->current_pwq = pwq
            |-spin_unlock_irq()
            |-worker->current_func(work)
            |-spin_lock_irq()
            |-worker->current_pwq = NULL
    |-spin_unlock_irq()
    
                                    //interrupt here
                                    |-irq_handler
                                            |-__queue_work()
                                                    //assuming that the wq is draining
                                                    |-is_chained_work(wq)
                                                            |-current_wq_worker()
                                                            //Here, 'current' is the interrupted worker!
                                                                    |-current->current_pwq is NULL here!
    |-schedule()
    ----------------------------------------------------------------
    
    Avoid it by checking for task context in current_wq_worker(), and
    if not in task context, we shouldn't use the 'current' to check the
    condition.
    
    Reported-by: Xiaofei Tan <tanxiaofei@huawei.com>
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 8d03ecfe4718 ("workqueue: reimplement is_chained_work() using current_wq_worker()")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65143814913b0e87e3acae21ef12cffc44bc13ae
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Nov 22 10:57:15 2016 +0100

    x86/uaccess, sched/preempt: Verify access_ok() context
    
    commit 7c4788950ba5922fde976d80b72baf46f14dee8d upstream.
    
    I recently encountered wreckage because access_ok() was used where it
    should not be, add an explicit WARN when access_ok() is used wrongly.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16:
     - Adjust filename
     - Include <linux/preempt_mask.h> in <asm/uaccess.h> since it's not included by
       <linux/uaccess.h>]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d730e88381931fffb8bad3c44871616b51f156a
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Oct 28 19:43:56 2017 +0800

    sctp: fix a type cast warnings that causes a_rwnd gets the wrong value
    
    commit f6fc6bc0b8e0bb13a210bd7386ffdcb1a5f30ef1 upstream.
    
    These warnings were found by running 'make C=2 M=net/sctp/'.
    
    Commit d4d6fb5787a6 ("sctp: Try not to change a_rwnd when faking a
    SACK from SHUTDOWN.") expected to use the peers old rwnd and add
    our flight size to the a_rwnd. But with the wrong Endian, it may
    not work as well as expected.
    
    So fix it by converting to the right value.
    
    Fixes: d4d6fb5787a6 ("sctp: Try not to change a_rwnd when faking a SACK from SHUTDOWN.")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9cf38522cd2be5ebd9ab046c452876ed2883b1d6
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Oct 26 19:23:27 2017 +0800

    ip6_gre: only increase err_count for some certain type icmpv6 in ip6gre_err
    
    commit f8d20b46ce55cf40afb30dcef6d9288f7ef46d9b upstream.
    
    The similar fix in patch 'ipip: only increase err_count for some
    certain type icmp in ipip_err' is needed for ip6gre_err.
    
    In Jianlin's case, udp netperf broke even when receiving a TooBig
    icmpv6 packet.
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1fe2b7dfc8f101969c07bcef3d3b907aa6fda34f
Author: Matt Bennett <matt.bennett@alliedtelesis.co.nz>
Date:   Wed Sep 23 16:58:31 2015 +1200

    ip6_gre: Reduce log level in ip6gre_err() to debug
    
    commit a46496ce38eeb401344d5623c1960dbf2f1769be upstream.
    
    Currently error log messages in ip6gre_err are printed at 'warn'
    level. This is different to most other tunnel types which don't
    print any messages. These log messages don't provide any information
    that couldn't be deduced with networking tools. Also it can be annoying
    to have one end of the tunnel go down and have the logs fill with
    pointless messages such as "Path to destination invalid or inactive!".
    
    This patch reduces the log level of these messages to 'dbg' level to
    bring the visible behaviour into line with other tunnel types.
    
    Signed-off-by: Matt Bennett <matt.bennett@alliedtelesis.co.nz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8fafc682f3e329694e6a8ccb62a7e9c80d5b877c
Author: Steve French <smfrench@gmail.com>
Date:   Wed Oct 25 15:58:31 2017 -0500

    SMB3: Validate negotiate request must always be signed
    
    commit 4587eee04e2ac7ac3ac9fa2bc164fb6e548f99cd upstream.
    
    According to MS-SMB2 3.2.55 validate_negotiate request must
    always be signed. Some Windows can fail the request if you send it unsigned
    
    See kernel bugzilla bug 197311
    
    Acked-by: Ronnie Sahlberg <lsahlber.redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    [bwh: Backported to 3.16: s/sync_hdr\.Flags/Flags/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 72f157be2f81910ae759bfe2e5c2256fc4625645
Author: Jonathan Basseri <misterikkit@google.com>
Date:   Wed Oct 25 09:52:27 2017 -0700

    xfrm: Clear sk_dst_cache when applying per-socket policy.
    
    commit 2b06cdf3e688b98fcc9945873b5d42792bd4eee0 upstream.
    
    If a socket has a valid dst cache, then xfrm_lookup_route will get
    skipped. However, the cache is not invalidated when applying policy to a
    socket (i.e. IPV6_XFRM_POLICY). The result is that new policies are
    sometimes ignored on those sockets. (Note: This was broken for IPv4 and
    IPv6 at different times.)
    
    This can be demonstrated like so,
    1. Create UDP socket.
    2. connect() the socket.
    3. Apply an outbound XFRM policy to the socket. (setsockopt)
    4. send() data on the socket.
    
    Packets will continue to be sent in the clear instead of matching an
    xfrm or returning a no-match error (EAGAIN). This affects calls to
    send() and not sendto().
    
    Invalidating the sk_dst_cache is necessary to correctly apply xfrm
    policies. Since we do this in xfrm_user_policy(), the sk_lock was
    already acquired in either do_ip_setsockopt() or do_ipv6_setsockopt(),
    and we may call __sk_dst_reset().
    
    Performance impact should be negligible, since this code is only called
    when changing xfrm policy, and only affects the socket in question.
    
    Fixes: 00bc0ef5880d ("ipv6: Skip XFRM lookup if dst_entry in socket cache is valid")
    Tested: https://android-review.googlesource.com/517555
    Tested: https://android-review.googlesource.com/418659
    Signed-off-by: Jonathan Basseri <misterikkit@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 910e39b965c4095c8c4b2142a6144e7c1422f87b
Author: Andrei Vagin <avagin@openvz.org>
Date:   Wed Oct 25 10:16:42 2017 -0700

    net/unix: don't show information about sockets from other namespaces
    
    commit 0f5da659d8f1810f44de14acf2c80cd6499623a0 upstream.
    
    socket_diag shows information only about sockets from a namespace where
    a diag socket lives.
    
    But if we request information about one unix socket, the kernel don't
    check that its netns is matched with a diag socket namespace, so any
    user can get information about any unix socket in a system. This looks
    like a bug.
    
    v2: add a Fixes tag
    
    Fixes: 51d7cccf0723 ("net: make sock diag per-namespace")
    Signed-off-by: Andrei Vagin <avagin@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f9d9e2df98092ab83ba87e636be6cee6d974b18d
Author: David Disseldorp <ddiss@suse.de>
Date:   Fri Oct 20 14:49:38 2017 +0200

    SMB: fix validate negotiate info uninitialised memory use
    
    commit a2d9daad1d2dfbd307ab158044d1c323d7babbde upstream.
    
    An undersize validate negotiate info server response causes the client
    to use uninitialised memory for struct validate_negotiate_info_rsp
    comparisons of Dialect, SecurityMode and/or Capabilities members.
    
    Link: https://bugzilla.samba.org/show_bug.cgi?id=13092
    Fixes: 7db0a6efdc3e ("SMB3: Work around mount failure when using SMB3 dialect to Macs")
    Signed-off-by: David Disseldorp <ddiss@suse.de>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5fc060970f7077d5621162e06faf49c657a0c18d
Author: David Disseldorp <ddiss@suse.de>
Date:   Fri Oct 20 14:49:37 2017 +0200

    SMB: fix leak of validate negotiate info response buffer
    
    commit fe83bebc05228e838ed5cbbc62712ab50dd40e18 upstream.
    
    Fixes: ff1c038addc4 ("Check SMB3 dialects against downgrade attacks")
    Signed-off-by: David Disseldorp <ddiss@suse.de>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75850be9edbc77614e0b3a02ab3e09c71d095402
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Oct 25 16:34:27 2017 +0200

    fuse: fix READDIRPLUS skipping an entry
    
    commit c6cdd51404b7ac12dd95173ddfc548c59ecf037f upstream.
    
    Marios Titas running a Haskell program noticed a problem with fuse's
    readdirplus: when it is interrupted by a signal, it skips one directory
    entry.
    
    The reason is that fuse erronously updates ctx->pos after a failed
    dir_emit().
    
    The issue originates from the patch adding readdirplus support.
    
    Reported-by: Jakob Unterwurzacher <jakobunt@gmail.com>
    Tested-by: Marios Titas <redneb@gmx.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 0b05b18381ee ("fuse: implement NFS-like readdirplus support")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b4088d6bf49697855aa412e1bf24b4a5bcdefa77
Author: Jimmy Assarsson <jimmyassarsson@gmail.com>
Date:   Tue Oct 24 12:23:28 2017 +0200

    can: kvaser_usb: Correct return value in printout
    
    commit 8f65a923e6b628e187d5e791cf49393dd5e8c2f9 upstream.
    
    If the return value from kvaser_usb_send_simple_msg() was non-zero, the
    return value from kvaser_usb_flush_queue() was printed in the kernel
    warning.
    
    Signed-off-by: Jimmy Assarsson <jimmyassarsson@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3eb42126c11f1741463b36c5f130fbb98d32cc92
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Oct 20 21:17:05 2017 +0100

    ARM: 8715/1: add a private asm/unaligned.h
    
    commit 1cce91dfc8f7990ca3aea896bfb148f240b12860 upstream.
    
    The asm-generic/unaligned.h header provides two different implementations
    for accessing unaligned variables: the access_ok.h version used when
    CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set pretends that all pointers
    are in fact aligned, while the le_struct.h version convinces gcc that the
    alignment of a pointer is '1', to make it issue the correct load/store
    instructions depending on the architecture flags.
    
    On ARMv5 and older, we always use the second version, to let the compiler
    use byte accesses. On ARMv6 and newer, we currently use the access_ok.h
    version, so the compiler can use any instruction including stm/ldm and
    ldrd/strd that will cause an alignment trap. This trap can significantly
    impact performance when we have to do a lot of fixups and, worse, has
    led to crashes in the LZ4 decompressor code that does not have a trap
    handler.
    
    This adds an ARM specific version of asm/unaligned.h that uses the
    le_struct.h/be_struct.h implementation unconditionally. This should lead
    to essentially the same code on ARMv6+ as before, with the exception of
    using regular load/store instructions instead of the trapping instructions
    multi-register variants.
    
    The crash in the LZ4 decompressor code was probably introduced by the
    patch replacing the LZ4 implementation, commit 4e1a33b105dd ("lib: update
    LZ4 compressor module"), so linux-4.11 and higher would be affected most.
    However, we probably want to have this backported to all older stable
    kernels as well, to help with the performance issues.
    
    There are two follow-ups that I think we should also work on, but not
    backport to stable kernels, first to change the asm-generic version of
    the header to remove the ARM special case, and second to review all
    other uses of CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS to see if they
    might be affected by the same problem on ARM.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a7d7387cc169e912055faca1b0f123e5bce78f53
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Dec 9 19:24:58 2017 +0000

    ipsec: Fix aborted xfrm policy dump crash
    
    commit 1137b5e2529a8f5ca8ee709288ecba3e68044df2 upstream.
    
    This is a fix for CVE-2017-16939 suitable for older stable branches.
    The upstream fix is commit 1137b5e2529a8f5ca8ee709288ecba3e68044df2,
    from which the following explanation is taken:
    
        An independent security researcher, Mohamed Ghannam, has reported
        this vulnerability to Beyond Security's SecuriTeam Secure Disclosure
        program.
    
        The xfrm_dump_policy_done function expects xfrm_dump_policy to
        have been called at least once or it will crash.  This can be
        triggered if a dump fails because the target socket's receive
        buffer is full.
    
    It was not possible to define a 'start' callback for netlink dumps
    until Linux 4.5, so instead add a check for the initialisation flag in
    the 'done' callback.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ea9311454a835537e54421b80cfb9c714fe8f95d
Author: Borislav Petkov <bp@suse.de>
Date:   Sun Oct 22 12:47:31 2017 +0200

    x86/cpu/AMD: Apply the Erratum 688 fix when the BIOS doesn't
    
    commit bfc1168de949cd3e9ca18c3480b5085deff1ea7c upstream.
    
    Some F14h machines have an erratum which, "under a highly specific
    and detailed set of internal timing conditions" can lead to skipping
    instructions and RIP corruption.
    
    Add the fix for those machines when their BIOS doesn't apply it or
    there simply isn't BIOS update for them.
    
    Tested-by: <mirh@protonmail.ch>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sherry Hurwitz <sherry.hurwitz@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Link: http://lkml.kernel.org/r/20171022104731.28249-1-bp@alien8.de
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197285
    [ Added pr_info() that we activated the workaround. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 308ae6a8b33027baa5baf36f317deb889c5f557e
Author: Yazen Ghannam <Yazen.Ghannam@amd.com>
Date:   Thu Nov 10 15:10:55 2016 -0600

    x86/amd_nb: Add Fam17h Data Fabric as "Northbridge"
    
    commit b791c6b6a55c402367cc544f54921074253db061 upstream.
    
    AMD Fam17h uses a Data Fabric component instead of a traditional
    Northbridge. However, the DF is similar to a NB in that there is one per
    die and it uses PCI config D18Fx registers. So let's reuse the existing
    AMD_NB infrastructure for Data Fabrics.
    
    Signed-off-by: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: x86-ml <x86@kernel.org>
    Link: http://lkml.kernel.org/r/1478812257-5424-4-git-send-email-Yazen.Ghannam@amd.com
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5a3c256efb344217c9abfdeef22330d1d57a7840
Author: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Date:   Thu Sep 18 14:56:45 2014 -0500

    x86, amd_nb: Add device IDs to NB tables for F15h M60h
    
    commit 15895a729e02ea55433b912cc31d5c6de16359ec upstream.
    
    Add F3 and F4 PCI device IDs to amd_nb_misc_ids[] and
    amd_nb_link_ids[] respectively.
    
    Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1411070205-10217-1-git-send-email-Aravind.Gopalakrishnan@amd.com
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ee044ffb906f4be8502b3a721e8aa6282cffbe8b
Author: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Date:   Thu Sep 18 14:56:35 2014 -0500

    pci_ids: Add PCI device IDs for F15h M60h
    
    commit 4cbbdb51cc921f95978360fd7a0652d493dadc3e upstream.
    
    Add F3, F4 device IDs to be used in amd_nb.c and amd64_edac.c
    
    Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: http://lkml.kernel.org/r/1411070195-10177-1-git-send-email-Aravind.Gopalakrishnan@amd.com
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c070a9596d6fe032a1ca84c8a11e03f32671f69c
Author: Dongjiu Geng <gengdongjiu@huawei.com>
Date:   Tue Oct 17 22:23:49 2017 +0800

    arm/arm64: KVM: set right LR register value for 32 bit guest when inject abort
    
    commit fd6c8c206fc5d0717b0433b191de0715122f33bb upstream.
    
    When a exception is trapped to EL2, hardware uses  ELR_ELx to hold
    the current fault instruction address. If KVM wants to inject a
    abort to 32 bit guest, it needs to set the LR register for the
    guest to emulate this abort happened in the guest. Because ARM32
    architecture is pipelined execution, so the LR value has an offset to
    the fault instruction address.
    
    The offsets applied to Link value for exceptions as shown below,
    which should be added for the ARM32 link register(LR).
    
    Table taken from ARMv8 ARM DDI0487B-B, table G1-10:
    Exception                       Offset, for PE state of:
                                    A32       T32
    Undefined Instruction           +4        +2
    Prefetch Abort                  +4        +4
    Data Abort                      +8        +8
    IRQ or FIQ                      +4        +4
    
      [ Removed unused variables in inject_abt to avoid compile warnings.
        -- Christoffer ]
    
    Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
    Tested-by: Haibin Zhang <zhanghaibin7@huawei.com>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    [bwh: Backported to 3.16:
     - Don't delete cpsr variable in inject_abt() as it's still needed
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b2140a22396b4a8fd37d1fcf3e7a2b514526718c
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 18 21:37:49 2017 +0800

    sctp: add the missing sock_owned_by_user check in sctp_icmp_redirect
    
    commit 1cc276cec9ec574d41cf47dfc0f51406b6f26ab4 upstream.
    
    Now sctp processes icmp redirect packet in sctp_icmp_redirect where
    it calls sctp_transport_dst_check in which tp->dst can be released.
    
    The problem is before calling sctp_transport_dst_check, it doesn't
    check sock_owned_by_user, which means tp->dst could be freed while
    a process is accessing it with owning the socket.
    
    An use-after-free issue could be triggered by this.
    
    This patch is to fix it by checking sock_owned_by_user before calling
    sctp_transport_dst_check in sctp_icmp_redirect, so that it would not
    release tp->dst if users still hold sock lock.
    
    Besides, the same issue fixed in commit 45caeaa5ac0b ("dccp/tcp: fix
    routing redirect race") on sctp also needs this check.
    
    Fixes: 55be7a9c6074 ("ipv4: Add redirect support to all protocol icmp error handlers")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf5ac638a0ffa923ed03ba8cdb8241b812f5fe4f
Author: Wolfgang Grandegger <wg@grandegger.com>
Date:   Thu Sep 14 18:37:14 2017 +0200

    can: gs_usb: fix busy loop if no more TX context is available
    
    commit 97819f943063b622eca44d3644067c190dc75039 upstream.
    
    If sending messages with no cable connected, it quickly happens that
    there is no more TX context available. Then "gs_can_start_xmit()"
    returns with "NETDEV_TX_BUSY" and the upper layer does retry
    immediately keeping the CPU busy. To fix that issue, I moved
    "atomic_dec(&dev->active_tx_urbs)" from "gs_usb_xmit_callback()" to
    the TX done handling in "gs_usb_receive_bulk_callback()". Renaming
    "active_tx_urbs" to "active_tx_contexts" and moving it into
    "gs_[alloc|free]_tx_context()" would also make sense.
    
    Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e3ae1363b68f628ef972f766d1b4a40e89d37691
Author: Stefan Mätje <Stefan.Maetje@esd.eu>
Date:   Wed Oct 18 13:25:17 2017 +0200

    can: esd_usb2: Fix can_dlc value for received RTR, frames
    
    commit 72d92e865d1560723e1957ee3f393688c49ca5bf upstream.
    
    The dlc member of the struct rx_msg contains also the ESD_RTR flag to
    mark received RTR frames. Without the fix the can_dlc value for received
    RTR frames would always be set to 8 by get_can_dlc() instead of the
    received value.
    
    Fixes: 96d8e90382dc ("can: Add driver for esd CAN-USB/2 device")
    Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 49bcc562698ab82474e1eb53a0b470315d2d7782
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Oct 17 16:07:33 2017 +0300

    usb: hub: Allow reset retry for USB2 devices on connect bounce
    
    commit 1ac7db63333db1eeff901bfd6bbcd502b4634fa4 upstream.
    
    If the connect status change is set during reset signaling, but
    the status remains connected just retry port reset.
    
    This solves an issue with connecting a 90W HP Thunderbolt 3 dock
    with a Lenovo Carbon x1 (5th generation) which causes a 30min loop
    of a high speed device being re-discovererd before usb ports starts
    working.
    
    [...]
    [ 389.023845] usb 3-1: new high-speed USB device number 55 using xhci_hcd
    [ 389.491841] usb 3-1: new high-speed USB device number 56 using xhci_hcd
    [ 389.959928] usb 3-1: new high-speed USB device number 57 using xhci_hcd
    [...]
    
    This is caused by a high speed device that doesn't successfully go to the
    enabled state after the second port reset. Instead the connection bounces
    (connected, with connect status change), bailing out completely from
    enumeration just to restart from scratch.
    
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1716332
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 83527ee6a78644da89c21b56fd0f9b0caea48554
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sat Sep 30 17:24:23 2017 -0400

    parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels
    
    commit 374b3bf8e8b519f61eb9775888074c6e46b3bf0c upstream.
    
    As discussed on the debian-hppa list, double-wordcompare and exchange
    operations fail on 32-bit kernels.  Looking at the code, I realized that
    the ",ma" completer does the wrong thing in the  "ldw,ma  4(%r26), %r29"
    instruction.  This increments %r26 and causes the following store to
    write to the wrong location.
    
    Note by Helge Deller:
    The patch applies cleanly to stable kernel series if this upstream
    commit is merged in advance:
    f4125cfdb300 ("parisc: Avoid trashing sr2 and sr3 in LWS code").
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Tested-by: Christoph Biedl <debian.axhn@manchmal.in-ulm.de>
    Fixes: 89206491201c ("parisc: Implement new LWS CAS supporting 64 bit operations.")
    Signed-off-by: Helge Deller <deller@gmx.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30fe79f8171f5165aba9e043868fc9cf53c36b2e
Author: Jeff Lance <j-lance1@ti.com>
Date:   Wed Oct 18 17:25:52 2017 -0700

    Input: ti_am335x_tsc - fix incorrect step config for 5 wire touchscreen
    
    commit cf5dd48907bebaefdb43a8ca079be77e8da2cb20 upstream.
    
    Step config setting for 5 wire touchscreen is incorrect for Y coordinates.
    It was broken while we moved to DT. If you look close at the offending
    commit bb76dc09ddfc ("input: ti_am33x_tsc: Order of TSC wires, made
    configurable"), the change was:
    
    - STEPCONFIG_XNP | STEPCONFIG_YPN;
    + ts_dev->bit_xn | ts_dev->bit_yp;
    
    while bit_xn = STEPCONFIG_XNN and bit_yp = STEPCONFIG_YNN. Not quite the
    same.
    
    Fixes: bb76dc09ddfc ("input: ti_am33x_tsc: Order of TSC wires, made configurable")
    Signed-off-by: Jeff Lance <j-lance1@ti.com>
    [vigneshr@ti.com: Rebase to v4.14-rc1]
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Reviewed-by: Michael Nazzareno Trimarchi <michael@amarulasolutions.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 16d43212d457786cb2fec1dd926a906d65fb363a
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Oct 18 13:12:25 2017 +0200

    x86/microcode/intel: Disable late loading on model 79
    
    commit 723f2828a98c8ca19842042f418fb30dd8cfc0f7 upstream.
    
    Blacklist Broadwell X model 79 for late loading due to an erratum.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Tony Luck <tony.luck@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20171018111225.25635-1-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: substitute literal value for INTEL_FAM6_BROADWELL_X]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7938f33ac0318ed7456e9d1f44f3b0339dd6d154
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Oct 17 11:58:17 2017 +0200

    ALSA: hda: Remove superfluous '-' added by printk conversion
    
    commit 6bf88a343db2b3c160edf9b82a74966b31cc80bd upstream.
    
    While converting the error messages to the standard macros in the
    commit 4e76a8833fac ("ALSA: hda - Replace with standard printk"), a
    superfluous '-' slipped in the code mistakenly.  Its influence is
    almost negligible, merely shows a dB value as negative integer instead
    of positive integer (or vice versa) in the rare error message.
    So let's kill this embarrassing byte to show more correct value.
    
    Fixes: 4e76a8833fac ("ALSA: hda - Replace with standard printk")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02ed3082d5671c43c969c1ee7058f04cc9ae9839
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Tue Oct 3 11:16:43 2017 +0300

    usb: quirks: add quirk for WORLDE MINI MIDI keyboard
    
    commit 2811501e6d8f5747d08f8e25b9ecf472d0dc4c7d upstream.
    
    This keyboard doesn't implement Get String descriptors properly even
    though string indexes are valid. What happens is that when requesting
    for the String descriptor, the device disconnects and
    reconnects. Without this quirk, this loop will continue forever.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Владимир Мартьянов <vilgeforce@gmail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab1bb857b38963bd4fe025870b8773488f0e46e6
Author: Maksim Salau <msalau@iotecha.com>
Date:   Wed Oct 11 11:10:52 2017 +0300

    usb: cdc_acm: Add quirk for Elatec TWN3
    
    commit 765fb2f181cad669f2beb87842a05d8071f2be85 upstream.
    
    Elatec TWN3 has the union descriptor on data interface. This results in
    failure to bind the device to the driver with the following log:
      usb 1-1.2: new full speed USB device using streamplug-ehci and address 4
      usb 1-1.2: New USB device found, idVendor=09d8, idProduct=0320
      usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
      usb 1-1.2: Product: RFID Device (COM)
      usb 1-1.2: Manufacturer: OEM
      cdc_acm 1-1.2:1.0: Zero length descriptor references
      cdc_acm: probe of 1-1.2:1.0 failed with error -22
    
    Adding the NO_UNION_NORMAL quirk for the device fixes the issue.
    
    `lsusb -v` of the device:
    
    Bus 001 Device 003: ID 09d8:0320
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            2 Communications
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        32
      idVendor           0x09d8
      idProduct          0x0320
      bcdDevice            3.00
      iManufacturer           1 OEM
      iProduct                2 RFID Device (COM)
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           67
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              250mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass      2 Abstract (modem)
          bInterfaceProtocol      1 AT-commands (v.25ter)
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          CDC Header:
            bcdCDC               1.10
          CDC Call Management:
            bmCapabilities       0x03
              call management
              use DataInterface
            bDataInterface          1
          CDC ACM:
            bmCapabilities       0x06
              sends break
              line coding and serial state
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
    Device Status:     0x0000
      (Bus Powered)
    
    Signed-off-by: Maksim Salau <msalau@iotecha.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 22b6b54299895a5eba08ed789f9f1a251d7e2129
Author: Mayank Rana <mrana@codeaurora.org>
Date:   Fri Oct 6 17:45:30 2017 +0300

    usb: xhci: Handle error condition in xhci_stop_device()
    
    commit b3207c65dfafae27e7c492cb9188c0dc0eeaf3fd upstream.
    
    xhci_stop_device() calls xhci_queue_stop_endpoint() multiple times
    without checking the return value. xhci_queue_stop_endpoint() can
    return error if the HC is already halted or unable to queue commands.
    This can cause a deadlock condition as xhci_stop_device() would
    end up waiting indefinitely for a completion for the command that
    didn't get queued. Fix this by checking the return value and bailing
    out of xhci_stop_device() in case of error. This patch happens to fix
    potential memory leaks of the allocated command structures as well.
    
    Fixes: c311e391a7ef ("xhci: rework command timeout and cancellation,")
    Signed-off-by: Mayank Rana <mrana@codeaurora.org>
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcb358260e25e6125623d934623db6fdb6a6b31c
Author: Steffen Maier <maier@linux.vnet.ibm.com>
Date:   Fri Oct 13 15:40:07 2017 +0200

    scsi: zfcp: fix erp_action use-before-initialize in REC action trace
    
    commit ab31fd0ce65ec93828b617123792c1bb7c6dcc42 upstream.
    
    v4.10 commit 6f2ce1c6af37 ("scsi: zfcp: fix rport unblock race with LUN
    recovery") extended accessing parent pointer fields of struct
    zfcp_erp_action for tracing.  If an erp_action has never been enqueued
    before, these parent pointer fields are uninitialized and NULL. Examples
    are zfcp objects freshly added to the parent object's children list,
    before enqueueing their first recovery subsequently. In
    zfcp_erp_try_rport_unblock(), we iterate such list. Accessing erp_action
    fields can cause a NULL pointer dereference.  Since the kernel can read
    from lowcore on s390, it does not immediately cause a kernel page
    fault. Instead it can cause hangs on trying to acquire the wrong
    erp_action->adapter->dbf->rec_lock in zfcp_dbf_rec_action_lvl()
                          ^bogus^
    while holding already other locks with IRQs disabled.
    
    Real life example from attaching lots of LUNs in parallel on many CPUs:
    
    crash> bt 17723
    PID: 17723  TASK: ...               CPU: 25  COMMAND: "zfcperp0.0.1800"
     LOWCORE INFO:
      -psw      : 0x0404300180000000 0x000000000038e424
      -function : _raw_spin_lock_wait_flags at 38e424
    ...
     #0 [fdde8fc90] zfcp_dbf_rec_action_lvl at 3e0004e9862 [zfcp]
     #1 [fdde8fce8] zfcp_erp_try_rport_unblock at 3e0004dfddc [zfcp]
     #2 [fdde8fd38] zfcp_erp_strategy at 3e0004e0234 [zfcp]
     #3 [fdde8fda8] zfcp_erp_thread at 3e0004e0a12 [zfcp]
     #4 [fdde8fe60] kthread at 173550
     #5 [fdde8feb8] kernel_thread_starter at 10add2
    
    zfcp_adapter
     zfcp_port
      zfcp_unit <address>, 0x404040d600000000
      scsi_device NULL, returning early!
    zfcp_scsi_dev.status = 0x40000000
    0x40000000 ZFCP_STATUS_COMMON_RUNNING
    
    crash> zfcp_unit <address>
    struct zfcp_unit {
      erp_action = {
        adapter = 0x0,
        port = 0x0,
        unit = 0x0,
      },
    }
    
    zfcp_erp_action is always fully embedded into its container object. Such
    container object is never moved in its object tree (only add or delete).
    Hence, erp_action parent pointers can never change.
    
    To fix the issue, initialize the erp_action parent pointers before
    adding the erp_action container to any list and thus before it becomes
    accessible from outside of its initializing function.
    
    In order to also close the time window between zfcp_erp_setup_act()
    memsetting the entire erp_action to zero and setting the parent pointers
    again, drop the memset and instead explicitly initialize individually
    all erp_action fields except for parent pointers. To be extra careful
    not to introduce any other unintended side effect, even keep zeroing the
    erp_action fields for list and timer. Also double-check with
    WARN_ON_ONCE that erp_action parent pointers never change, so we get to
    know when we would deviate from previous behavior.
    
    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Fixes: 6f2ce1c6af37 ("scsi: zfcp: fix rport unblock race with LUN recovery")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff31768dd6814abefb7724fa6dc0976b33edce0e
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Oct 13 11:58:53 2017 -0700

    tun: call dev_get_valid_name() before register_netdevice()
    
    commit 0ad646c81b2182f7fa67ec0c8c825e0ee165696d upstream.
    
    register_netdevice() could fail early when we have an invalid
    dev name, in which case ->ndo_uninit() is not called. For tun
    device, this is a problem because a timer etc. are already
    initialized and it expects ->ndo_uninit() to clean them up.
    
    We could move these initializations into a ->ndo_init() so
    that register_netdevice() knows better, however this is still
    complicated due to the logic in tun_detach().
    
    Therefore, I choose to just call dev_get_valid_name() before
    register_netdevice(), which is quicker and much easier to audit.
    And for this specific case, it is already enough.
    
    Fixes: 96442e42429e ("tuntap: choose the txq based on rxq")
    Reported-by: Dmitry Alexeev <avekceeb@gmail.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c311b1f7ed1cc9226929cf8e70e97ff1b32bd28e
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Wed Oct 11 16:24:48 2017 +0200

    net: enable interface alias removal via rtnl
    
    commit 2459b4c635858094df78abb9ca87d99f89fe8ca5 upstream.
    
    IFLA_IFALIAS is defined as NLA_STRING. It means that the minimal length of
    the attribute is 1 ("\0"). However, to remove an alias, the attribute
    length must be 0 (see dev_set_alias()).
    
    Let's define the type to NLA_BINARY to allow 0-length string, so that the
    alias can be removed.
    
    Example:
    $ ip l s dummy0 alias foo
    $ ip l l dev dummy0
    5: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:20:30:4f:a7:f3 brd ff:ff:ff:ff:ff:ff
        alias foo
    
    Before the patch:
    $ ip l s dummy0 alias ""
    RTNETLINK answers: Numerical result out of range
    
    After the patch:
    $ ip l s dummy0 alias ""
    $ ip l l dev dummy0
    5: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
        link/ether ae:20:30:4f:a7:f3 brd ff:ff:ff:ff:ff:ff
    
    CC: Oliver Hartkopp <oliver@hartkopp.net>
    CC: Stephen Hemminger <stephen@networkplumber.org>
    Fixes: 96ca4a2cc145 ("net: remove ifalias on empty given alias")
    Reported-by: Julien FLoret <julien.floret@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 302e92f412f03354e02f9b265a3dd7be786d7a8b
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Oct 12 14:50:46 2017 +0200

    USB: serial: metro-usb: add MS7820 device id
    
    commit 31dc3f819bac28a0990b36510197560258ab7421 upstream.
    
    Add device-id entry for (Honeywell) Metrologic MS7820 bar code scanner.
    
    The device has two interfaces (in this mode?); a vendor-specific
    interface with two interrupt endpoints and a second HID interface, which
    we do not bind to.
    
    Reported-by: Ladislav Dobrovsky <ladislav.dobrovsky@gmail.com>
    Tested-by: Ladislav Dobrovsky <ladislav.dobrovsky@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 741e475af05559cc338f29f51efcaa8e8ef2534b
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 13 19:22:35 2017 +0200

    l2tp: check ps->sock before running pppol2tp_session_ioctl()
    
    commit 5903f594935a3841137c86b9d5b75143a5b7121c upstream.
    
    When pppol2tp_session_ioctl() is called by pppol2tp_tunnel_ioctl(),
    the session may be unconnected. That is, it was created by
    pppol2tp_session_create() and hasn't been connected with
    pppol2tp_connect(). In this case, ps->sock is NULL, so we need to check
    for this case in order to avoid dereferencing a NULL pointer.
    
    Fixes: 309795f4bec2 ("l2tp: Add netlink control API for L2TP")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef0dd635486e4c342f5d7fc64b91b5e4563a960a
Author: Matthew Wilcox <willy@infradead.org>
Date:   Fri Oct 13 15:58:15 2017 -0700

    fs/mpage.c: fix mpage_writepage() for pages with buffers
    
    commit f892760aa66a2d657deaf59538fb69433036767c upstream.
    
    When using FAT on a block device which supports rw_page, we can hit
    BUG_ON(!PageLocked(page)) in try_to_free_buffers().  This is because we
    call clean_buffers() after unlocking the page we've written.  Introduce
    a new clean_page_buffers() which cleans all buffers associated with a
    page and call it from within bdev_write_page().
    
    [akpm@linux-foundation.org: s/PAGE_SIZE/~0U/ per Linus and Matthew]
    Link: http://lkml.kernel.org/r/20171006211541.GA7409@bombadil.infradead.org
    Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
    Reported-by: Toshi Kani <toshi.kani@hpe.com>
    Reported-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Tested-by: Toshi Kani <toshi.kani@hpe.com>
    Acked-by: Johannes Thumshirn <jthumshirn@suse.de>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b8240b01eb65bb7b9963e66e7d2650d99861f61
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Oct 13 15:57:40 2017 -0700

    include/linux/of.h: provide of_n_{addr,size}_cells wrappers for !CONFIG_OF
    
    commit 8a1ac5dc7be09883051b1bf89a5e57d7ad850fa5 upstream.
    
    The pci-rcar driver is enabled for compile tests, and this has shown that
    the driver cannot build without CONFIG_OF, following the inclusion of
    commit f8f2fe7355fb ("PCI: rcar: Use new OF interrupt mapping when possible"):
    
      drivers/pci/host/pcie-rcar.c: In function 'pci_dma_range_parser_init':
      drivers/pci/host/pcie-rcar.c:1039:2: error: implicit declaration of function 'of_n_addr_cells' [-Werror=implicit-function-declaration]
        parser->pna = of_n_addr_cells(node);
        ^
    
    As pointed out by Ben Dooks and Geert Uytterhoeven, this is actually
    supposed to build fine, which we can achieve if we make the declaration
    of of_irq_parse_and_map_pci conditional on CONFIG_OF and provide an
    empty inline function otherwise, as we do for a lot of other of
    interfaces.
    
    This lets us build the rcar_pci driver again without CONFIG_OF for build
    testing.  All platforms using this driver select OF, so this doesn't
    change anything for the users.
    
    [akpm@linux-foundation.org: be consistent with surrounding code]
    Link: http://lkml.kernel.org/r/20170911200805.3363318-1-arnd@arndb.de
    Fixes: c25da4778803 ("PCI: rcar: Add Renesas R-Car PCIe driver")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Frank Rowand <frank.rowand@sony.com>
    Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Magnus Damm <damm@opensource.se>
    Cc: Ben Dooks <ben.dooks@codethink.co.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0365efcc1b7113511377d1d72d9d228bb0a79613
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Oct 13 14:32:37 2017 +0200

    iommu/amd: Finish TLB flush in amd_iommu_unmap()
    
    commit ce76353f169a6471542d999baf3d29b121dce9c0 upstream.
    
    The function only sends the flush command to the IOMMU(s),
    but does not wait for its completion when it returns. Fix
    that.
    
    Fixes: 601367d76bd1 ('x86/amd-iommu: Remove iommu_flush_domain function')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 09b65e75e671d51dcf8ba4f40a2167cb9afe8afd
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:51:27 2017 -0700

    ecryptfs: fix dereference of NULL user_key_payload
    
    commit f66665c09ab489a11ca490d6a82df57cfc1bea3e upstream.
    
    In eCryptfs, we failed to verify that the authentication token keys are
    not revoked before dereferencing their payloads, which is problematic
    because the payload of a revoked key is NULL.  request_key() *does* skip
    revoked keys, but there is still a window where the key can be revoked
    before we acquire the key semaphore.
    
    Fix it by updating ecryptfs_get_key_payload_data() to return
    -EKEYREVOKED if the key payload is NULL.  For completeness we check this
    for "encrypted" keys as well as "user" keys, although encrypted keys
    cannot be revoked currently.
    
    Alternatively we could use key_validate(), but since we'll also need to
    fix ecryptfs_get_key_payload_data() to validate the payload length, it
    seems appropriate to just check the payload pointer.
    
    Fixes: 237fead61998 ("[PATCH] ecryptfs: fs/Makefile and fs/Kconfig")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Cc: Michael Halcrow <mhalcrow@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: user key payload is key->payload.data, not
     key->payload.data[0]]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 89fd0e583cfaf225075fd6a5c392940f7a71fa73
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:43:20 2017 -0700

    lib/digsig: fix dereference of NULL user_key_payload
    
    commit 192cabd6a296cbc57b3d8c05c4c89d87fc102506 upstream.
    
    digsig_verify() requests a user key, then accesses its payload.
    However, a revoked key has a NULL payload, and we failed to check for
    this.  request_key() *does* skip revoked keys, but there is still a
    window where the key can be revoked before we acquire its semaphore.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    Fixes: 051dbb918c7f ("crypto: digital signature verification support")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Cc: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 48a69df6da32de78c3b398f62dc7429989528b36
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:40:00 2017 -0700

    FS-Cache: fix dereference of NULL user_key_payload
    
    commit d124b2c53c7bee6569d2a2d0b18b4a1afde00134 upstream.
    
    When the file /proc/fs/fscache/objects (available with
    CONFIG_FSCACHE_OBJECT_LIST=y) is opened, we request a user key with
    description "fscache:objlist", then access its payload.  However, a
    revoked key has a NULL payload, and we failed to check for this.
    request_key() *does* skip revoked keys, but there is still a window
    where the key can be revoked before we access its payload.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    Fixes: 4fbf4291aa15 ("FS-Cache: Allow the current state of all objects to be dumped")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a57f7468acda385473ecb67e2d43b26b4a31dadb
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:37:49 2017 -0700

    KEYS: encrypted: fix dereference of NULL user_key_payload
    
    commit 13923d0865ca96312197962522e88bc0aedccd74 upstream.
    
    A key of type "encrypted" references a "master key" which is used to
    encrypt and decrypt the encrypted key's payload.  However, when we
    accessed the master key's payload, we failed to handle the case where
    the master key has been revoked, which sets the payload pointer to NULL.
    Note that request_key() *does* skip revoked keys, but there is still a
    window where the key can be revoked before we acquire its semaphore.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    This was an issue for master keys of type "user" only.  Master keys can
    also be of type "trusted", but those cannot be revoked.
    
    Fixes: 7e70cb497850 ("keys: add new key-type encrypted")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Cc: David Safford <safford@us.ibm.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1937c0e58615293b11352faee0224716a509b115
Author: Jan Luebbe <jlu@pengutronix.de>
Date:   Mon Aug 28 17:25:16 2017 +0200

    bus: mbus: fix window size calculation for 4GB windows
    
    commit 2bbbd96357ce76cc45ec722c00f654aa7b189112 upstream.
    
    At least the Armada XP SoC supports 4GB on a single DRAM window. Because
    the size register values contain the actual size - 1, the MSB is set in
    that case. For example, the SDRAM window's control register's value is
    0xffffffe1 for 4GB (bits 31 to 24 contain the size).
    
    The MBUS driver reads back each window's size from registers and
    calculates the actual size as (control_reg | ~DDR_SIZE_MASK) + 1, which
    overflows for 32 bit values, resulting in other miscalculations further
    on (a bad RAM window for the CESA crypto engine calculated by
    mvebu_mbus_setup_cpu_target_nooverlap() in my case).
    
    This patch changes the type in 'struct mbus_dram_window' from u32 to
    u64, which allows us to keep using the same register calculation code in
    most MBUS-using drivers (which calculate ->size - 1 again).
    
    Fixes: fddddb52a6c4 ("bus: introduce an Marvell EBU MBus driver")
    Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c12865e4420a36e84dfa4adbef47853fcceaca30
Author: Haozhong Zhang <haozhong.zhang@intel.com>
Date:   Tue Oct 10 15:01:22 2017 +0800

    KVM: nVMX: fix guest CR4 loading when emulating L2 to L1 exit
    
    commit 8eb3f87d903168bdbd1222776a6b1e281f50513e upstream.
    
    When KVM emulates an exit from L2 to L1, it loads L1 CR4 into the
    guest CR4. Before this CR4 loading, the guest CR4 refers to L2
    CR4. Because these two CR4's are in different levels of guest, we
    should vmx_set_cr4() rather than kvm_set_cr4() here. The latter, which
    is used to handle guest writes to its CR4, checks the guest change to
    CR4 and may fail if the change is invalid.
    
    The failure may cause trouble. Consider we start
      a L1 guest with non-zero L1 PCID in use,
         (i.e. L1 CR4.PCIDE == 1 && L1 CR3.PCID != 0)
    and
      a L2 guest with L2 PCID disabled,
         (i.e. L2 CR4.PCIDE == 0)
    and following events may happen:
    
    1. If kvm_set_cr4() is used in load_vmcs12_host_state() to load L1 CR4
       into guest CR4 (in VMCS01) for L2 to L1 exit, it will fail because
       of PCID check. As a result, the guest CR4 recorded in L0 KVM (i.e.
       vcpu->arch.cr4) is left to the value of L2 CR4.
    
    2. Later, if L1 attempts to change its CR4, e.g., clearing VMXE bit,
       kvm_set_cr4() in L0 KVM will think L1 also wants to enable PCID,
       because the wrong L2 CR4 is used by L0 KVM as L1 CR4. As L1
       CR3.PCID != 0, L0 KVM will inject GP to L1 guest.
    
    Fixes: 4704d0befb072 ("KVM: nVMX: Exiting from L2 to L1")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 057507df3fa5eb40a9151521ee561d7f4268674a
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Mon Oct 9 13:40:23 2017 +0200

    iommu/exynos: Remove initconst attribute to avoid potential kernel oops
    
    commit 9d25e3cc83d731ae4eeb017fd07562fde3f80bef upstream.
    
    Exynos SYSMMU registers standard platform device with sysmmu_of_match
    table, what means that this table is accessed every time a new platform
    device is registered in a system. This might happen also after the boot,
    so the table must not be attributed as initconst to avoid potential kernel
    oops caused by access to freed memory.
    
    Fixes: 6b21a5db3642 ("iommu/exynos: Support for device tree")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2377aee4a81e5e70c6883f1db192ff5ecef009e1
Author: Johannes Thumshirn <jthumshirn@suse.de>
Date:   Mon Oct 9 13:33:19 2017 +0200

    scsi: libiscsi: fix shifting of DID_REQUEUE host byte
    
    commit eef9ffdf9cd39b2986367bc8395e2772bc1284ba upstream.
    
    The SCSI host byte should be shifted left by 16 in order to have
    scsi_decide_disposition() do the right thing (.i.e. requeue the
    command).
    
    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: 661134ad3765 ("[SCSI] libiscsi, bnx2i: make bound ep check common")
    Cc: Lee Duncan <lduncan@suse.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Bart Van Assche <Bart.VanAssche@sandisk.com>
    Cc: Chris Leech <cleech@redhat.com>
    Acked-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a13b58cf3e34e70d94b93d5706187f55d0f7782f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Oct 11 16:39:02 2017 +0200

    ALSA: caiaq: Fix stray URB at probe error path
    
    commit 99fee508245825765ff60155fed43f970ff83a8f upstream.
    
    caiaq driver doesn't kill the URB properly at its error path during
    the probe, which may lead to a use-after-free error later.  This patch
    addresses it.
    
    Reported-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e566d13703e945b341927e6a4bcd355359fdbb8
Author: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Date:   Sat Sep 30 08:55:55 2017 -0700

    usb: gadget: composite: Fix use-after-free in usb_composite_overwrite_options
    
    commit aec17e1e249567e82b26dafbb86de7d07fde8729 upstream.
    
    KASAN enabled configuration reports an error
    
        BUG: KASAN: use-after-free in usb_composite_overwrite_options+...
                    [libcomposite] at addr ...
        Read of size 1 by task ...
    
    when some driver is un-bound and then bound again.
    For example, this happens with FunctionFS driver when "ffs-test"
    test application is run several times in a row.
    
    If the driver has empty manufacturer ID string in initial static data,
    it is then replaced with generated string. After driver unbinding
    the generated string is freed, but the driver data still keep that
    pointer. And if the driver is then bound again, that pointer
    is re-used for string emptiness check.
    
    The fix is to clean up the driver string data upon its unbinding
    to drop the pointer to freed memory.
    
    Fixes: cc2683c318a5 ("usb: gadget: Provide a default implementation of default manufacturer string")
    Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 83af78ba6a82f70354626bd8a4c11cd63876c7b3
Author: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
Date:   Mon Oct 2 14:01:41 2017 +0900

    usb: renesas_usbhs: Fix DMAC sequence for receiving zero-length packet
    
    commit 29c7f3e68eec4ae94d85ad7b5dfdafdb8089f513 upstream.
    
    The DREQE bit of the DnFIFOSEL should be set to 1 after the DE bit of
    USB-DMAC on R-Car SoCs is set to 1 after the USB-DMAC received a
    zero-length packet. Otherwise, a transfer completion interruption
    of USB-DMAC doesn't happen. Even if the driver changes the sequence,
    normal operations (transmit/receive without zero-length packet) will
    not cause any side-effects. So, this patch fixes the sequence anyway.
    
    Signed-off-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
    [shimoda: revise the commit log]
    Fixes: e73a9891b3a1 ("usb: renesas_usbhs: add DMAEngine support")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30fe315383fcc093eff14fbb3ba75318d323a3ea
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Oct 6 10:27:44 2017 -0400

    USB: dummy-hcd: Fix deadlock caused by disconnect detection
    
    commit ab219221a5064abfff9f78c323c4a257b16cdb81 upstream.
    
    The dummy-hcd driver calls the gadget driver's disconnect callback
    under the wrong conditions.  It should invoke the callback when Vbus
    power is turned off, but instead it does so when the D+ pullup is
    turned off.
    
    This can cause a deadlock in the composite core when a gadget driver
    is unregistered:
    
    [   88.361471] ============================================
    [   88.362014] WARNING: possible recursive locking detected
    [   88.362580] 4.14.0-rc2+ #9 Not tainted
    [   88.363010] --------------------------------------------
    [   88.363561] v4l_id/526 is trying to acquire lock:
    [   88.364062]  (&(&cdev->lock)->rlock){....}, at: [<ffffffffa0547e03>] composite_disconnect+0x43/0x100 [libcomposite]
    [   88.365051]
    [   88.365051] but task is already holding lock:
    [   88.365826]  (&(&cdev->lock)->rlock){....}, at: [<ffffffffa0547b09>] usb_function_deactivate+0x29/0x80 [libcomposite]
    [   88.366858]
    [   88.366858] other info that might help us debug this:
    [   88.368301]  Possible unsafe locking scenario:
    [   88.368301]
    [   88.369304]        CPU0
    [   88.369701]        ----
    [   88.370101]   lock(&(&cdev->lock)->rlock);
    [   88.370623]   lock(&(&cdev->lock)->rlock);
    [   88.371145]
    [   88.371145]  *** DEADLOCK ***
    [   88.371145]
    [   88.372211]  May be due to missing lock nesting notation
    [   88.372211]
    [   88.373191] 2 locks held by v4l_id/526:
    [   88.373715]  #0:  (&(&cdev->lock)->rlock){....}, at: [<ffffffffa0547b09>] usb_function_deactivate+0x29/0x80 [libcomposite]
    [   88.374814]  #1:  (&(&dum_hcd->dum->lock)->rlock){....}, at: [<ffffffffa05bd48d>] dummy_pullup+0x7d/0xf0 [dummy_hcd]
    [   88.376289]
    [   88.376289] stack backtrace:
    [   88.377726] CPU: 0 PID: 526 Comm: v4l_id Not tainted 4.14.0-rc2+ #9
    [   88.378557] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
    [   88.379504] Call Trace:
    [   88.380019]  dump_stack+0x86/0xc7
    [   88.380605]  __lock_acquire+0x841/0x1120
    [   88.381252]  lock_acquire+0xd5/0x1c0
    [   88.381865]  ? composite_disconnect+0x43/0x100 [libcomposite]
    [   88.382668]  _raw_spin_lock_irqsave+0x40/0x54
    [   88.383357]  ? composite_disconnect+0x43/0x100 [libcomposite]
    [   88.384290]  composite_disconnect+0x43/0x100 [libcomposite]
    [   88.385490]  set_link_state+0x2d4/0x3c0 [dummy_hcd]
    [   88.386436]  dummy_pullup+0xa7/0xf0 [dummy_hcd]
    [   88.387195]  usb_gadget_disconnect+0xd8/0x160 [udc_core]
    [   88.387990]  usb_gadget_deactivate+0xd3/0x160 [udc_core]
    [   88.388793]  usb_function_deactivate+0x64/0x80 [libcomposite]
    [   88.389628]  uvc_function_disconnect+0x1e/0x40 [usb_f_uvc]
    
    This patch changes the code to test the port-power status bit rather
    than the port-connect status bit when deciding whether to isue the
    callback.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: David Tulloh <david@tulloh.id.au>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b0266192d2b1701c1b316de139f200b8315e0cf
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Sep 23 15:51:23 2017 -0400

    more bio_map_user_iov() leak fixes
    
    commit 2b04e8f6bbb196cab4b232af0f8d48ff2c7a8058 upstream.
    
    we need to take care of failure exit as well - pages already
    in bio should be dropped by analogue of bio_unmap_pages(),
    since their refcounts had been bumped only once per reference
    in bio.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 897b6ce29ca160db586408d847c5d07214e114fc
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Oct 9 11:13:18 2017 +0200

    direct-io: Prevent NULL pointer access in submit_page_section
    
    commit 899f0429c7d3eed886406cd72182bee3b96aa1f9 upstream.
    
    In the code added to function submit_page_section by commit b1058b981,
    sdio->bio can currently be NULL when calling dio_bio_submit.  This then
    leads to a NULL pointer access in dio_bio_submit, so check for a NULL
    bio in submit_page_section before trying to submit it instead.
    
    Fixes xfstest generic/250 on gfs2.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a5dd5f18a77ac67d640d5275e0995dba2718f8bf
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Oct 9 23:30:02 2017 +0800

    crypto: shash - Fix zero-length shash ahash digest crash
    
    commit b61907bb42409adf9b3120f741af7c57dd7e3db2 upstream.
    
    The shash ahash digest adaptor function may crash if given a
    zero-length input together with a null SG list.  This is because
    it tries to read the SG list before looking at the length.
    
    This patch fixes it by checking the length first.
    
    Reported-by: Stephan Müller<smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Tested-by: Stephan Müller <smueller@chronox.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 48d43259944e7b2e4bf03f6eef9e437e922c95d8
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Oct 9 08:04:13 2017 -0700

    workqueue: replace pool->manager_arb mutex with a flag
    
    commit 692b48258dda7c302e777d7d5f4217244478f1f6 upstream.
    
    Josef reported a HARDIRQ-safe -> HARDIRQ-unsafe lock order detected by
    lockdep:
    
     [ 1270.472259] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
     [ 1270.472783] 4.14.0-rc1-xfstests-12888-g76833e8 #110 Not tainted
     [ 1270.473240] -----------------------------------------------------
     [ 1270.473710] kworker/u5:2/5157 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
     [ 1270.474239]  (&(&lock->wait_lock)->rlock){+.+.}, at: [<ffffffff8da253d2>] __mutex_unlock_slowpath+0xa2/0x280
     [ 1270.474994]
     [ 1270.474994] and this task is already holding:
     [ 1270.475440]  (&pool->lock/1){-.-.}, at: [<ffffffff8d2992f6>] worker_thread+0x366/0x3c0
     [ 1270.476046] which would create a new lock dependency:
     [ 1270.476436]  (&pool->lock/1){-.-.} -> (&(&lock->wait_lock)->rlock){+.+.}
     [ 1270.476949]
     [ 1270.476949] but this new dependency connects a HARDIRQ-irq-safe lock:
     [ 1270.477553]  (&pool->lock/1){-.-.}
     ...
     [ 1270.488900] to a HARDIRQ-irq-unsafe lock:
     [ 1270.489327]  (&(&lock->wait_lock)->rlock){+.+.}
     ...
     [ 1270.494735]  Possible interrupt unsafe locking scenario:
     [ 1270.494735]
     [ 1270.495250]        CPU0                    CPU1
     [ 1270.495600]        ----                    ----
     [ 1270.495947]   lock(&(&lock->wait_lock)->rlock);
     [ 1270.496295]                                local_irq_disable();
     [ 1270.496753]                                lock(&pool->lock/1);
     [ 1270.497205]                                lock(&(&lock->wait_lock)->rlock);
     [ 1270.497744]   <Interrupt>
     [ 1270.497948]     lock(&pool->lock/1);
    
    , which will cause a irq inversion deadlock if the above lock scenario
    happens.
    
    The root cause of this safe -> unsafe lock order is the
    mutex_unlock(pool->manager_arb) in manage_workers() with pool->lock
    held.
    
    Unlocking mutex while holding an irq spinlock was never safe and this
    problem has been around forever but it never got noticed because the
    only time the mutex is usually trylocked while holding irqlock making
    actual failures very unlikely and lockdep annotation missed the
    condition until the recent b9c16a0e1f73 ("locking/mutex: Fix
    lockdep_assert_held() fail").
    
    Using mutex for pool->manager_arb has always been a bit of stretch.
    It primarily is an mechanism to arbitrate managership between workers
    which can easily be done with a pool flag.  The only reason it became
    a mutex is that pool destruction path wants to exclude parallel
    managing operations.
    
    This patch replaces the mutex with a new pool flag POOL_MANAGER_ACTIVE
    and make the destruction path wait for the current manager on a wait
    queue.
    
    v2: Drop unnecessary flag clearing before pool destruction as
        suggested by Boqun.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a2d5cc6bfe6873726e8823df230a2c2cec4d7e7
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Mon Oct 9 14:52:10 2017 +0200

    udp: fix bcast packet reception
    
    commit 996b44fcef8f216ea0b6b6e74468c5a77b5e341f upstream.
    
    The commit bc044e8db796 ("udp: perform source validation for
    mcast early demux") does not take into account that broadcast packets
    lands in the same code path and they need different checks for the
    source address - notably, zero source address are valid for bcast
    and invalid for mcast.
    
    As a result, 2nd and later broadcast packets with 0 source address
    landing to the same socket are dropped. This breaks dhcp servers.
    
    Since we don't have stringent performance requirements for ingress
    broadcast traffic, fix it by disabling UDP early demux such traffic.
    
    Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Fixes: bc044e8db796 ("udp: perform source validation for mcast early demux")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d8caf4103691b6630a9d9388e01ee0c56dd0a73
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 9 10:02:56 2017 +0200

    ALSA: seq: Fix copy_from_user() call inside lock
    
    commit 5803b023881857db32ffefa0d269c90280a67ee0 upstream.
    
    The event handler in the virmidi sequencer code takes a read-lock for
    the linked list traverse, while it's calling snd_seq_dump_var_event()
    in the loop.  The latter function may expand the user-space data
    depending on the event type.  It eventually invokes copy_from_user(),
    which might be a potential dead-lock.
    
    The sequencer core guarantees that the user-space data is passed only
    with atomic=0 argument, but snd_virmidi_dev_receive_event() ignores it
    and always takes read-lock().  For avoiding the problem above, this
    patch introduces rwsem for non-atomic case, while keeping rwlock for
    atomic case.
    
    Also while we're at it: the superfluous irq flags is dropped in
    snd_virmidi_input_open().
    
    Reported-by: Jia-Ju Bai <baijiaju1990@163.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b4a840e5bcdc2149e39115d25c6f97e2e9433a19
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Oct 5 02:50:07 2017 -0700

    netfilter: x_tables: avoid stack-out-of-bounds read in xt_copy_counters_from_user
    
    commit e466af75c074e76107ae1cd5a2823e9c61894ffb upstream.
    
    syzkaller reports an out of bound read in strlcpy(), triggered
    by xt_copy_counters_from_user()
    
    Fix this by using memcpy(), then forcing a zero byte at the last position
    of the destination, as Florian did for the non COMPAT code.
    
    Fixes: d7591f0c41ce ("netfilter: x_tables: introduce and use xt_copy_counters_from_user")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 007a7c2af4363ac854e019fcde4bcb55dbb65162
Author: Peng Xu <pxu@qti.qualcomm.com>
Date:   Tue Oct 3 23:21:51 2017 +0300

    nl80211: Define policy for packet pattern attributes
    
    commit ad670233c9e1d5feb365d870e30083ef1b889177 upstream.
    
    Define a policy for packet pattern attributes in order to fix a
    potential read over the end of the buffer during nla_get_u32()
    of the NL80211_PKTPAT_OFFSET attribute.
    
    Note that the data there can always be read due to SKB allocation
    (with alignment and struct skb_shared_info at the end), but the
    data might be uninitialized. This could be used to leak some data
    from uninitialized vmalloc() memory, but most drivers don't allow
    an offset (so you'd just get -EINVAL if the data is non-zero) or
    just allow it with a fixed value - 100 or 128 bytes, so anything
    above that would get -EINVAL. With brcmfmac the limit is 1500 so
    (at least) one byte could be obtained.
    
    Signed-off-by: Peng Xu <pxu@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
    [rewrite description based on SKB allocation knowledge]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c3e0f30a8b1b82a60f54426844b3017c16b18b85
Author: Casey Schaufler <casey@schaufler-ca.com>
Date:   Tue Sep 19 09:39:08 2017 -0700

    lsm: fix smack_inode_removexattr and xattr_getsecurity memleak
    
    commit 57e7ba04d422c3d41c8426380303ec9b7533ded9 upstream.
    
    security_inode_getsecurity() provides the text string value
    of a security attribute. It does not provide a "secctx".
    The code in xattr_getsecurity() that calls security_inode_getsecurity()
    and then calls security_release_secctx() happened to work because
    SElinux and Smack treat the attribute and the secctx the same way.
    It fails for cap_inode_getsecurity(), because that module has no
    secctx that ever needs releasing. It turns out that Smack is the
    one that's doing things wrong by not allocating memory when instructed
    to do so by the "alloc" parameter.
    
    The fix is simple enough. Change the security_release_secctx() to
    kfree() because it isn't a secctx being returned by
    security_inode_getsecurity(). Change Smack to allocate the string when
    told to do so.
    
    Note: this also fixes memory leaks for LSMs which implement
    inode_getsecurity but not release_secctx, such as capabilities.
    
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c30b5944a70d35815b4baba20223eacf16ae1411
Author: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
Date:   Thu Aug 7 20:52:49 2014 +0400

    Smack: remove unneeded NULL-termination from securtity label
    
    commit da1b63566c469bf3e2b24182114422e16b1aa34c upstream.
    
    Values of extended attributes are stored as binary blobs. NULL-termination
    of them isn't required. It just wastes disk space and confuses command-line
    tools like getfattr because they have to print that zero byte at the end.
    
    This patch removes terminating zero byte from initial security label in
    smack_inode_init_security and cuts it out in function smack_inode_getsecurity
    which is used by syscall getxattr. This change seems completely safe, because
    function smk_parse_smack ignores everything after first zero byte.
    
    Signed-off-by: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b92b4c8f64cc70f7f1c33df87f3b874ae0cd0652
Author: YASUAKI ISHIMATSU <yasu.isimatu@gmail.com>
Date:   Tue Oct 3 16:16:32 2017 -0700

    mm/memory_hotplug: define find_{smallest|biggest}_section_pfn as unsigned long
    
    commit d09b0137d204bebeaafed672bc5a244e9ac92edb upstream.
    
    find_{smallest|biggest}_section_pfn()s find the smallest/biggest section
    and return the pfn of the section.  But the functions are defined as int.
    So the functions always return 0x00000000 - 0xffffffff.  It means if
    memory address is over 16TB, the functions does not work correctly.
    
    To handle 64 bit value, the patch defines
    find_{smallest|biggest}_section_pfn() as unsigned long.
    
    Fixes: 815121d2b5cd ("memory_hotplug: clear zone when removing the memory")
    Link: http://lkml.kernel.org/r/d9d5593a-d0a4-c4be-ab08-493df59a85c6@gmail.com
    Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Cc: Reza Arbab <arbab@linux.vnet.ibm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eda0179324d5b5d8e604346d58f9fd449477b6cf
Author: YASUAKI ISHIMATSU <yasu.isimatu@gmail.com>
Date:   Tue Oct 3 16:16:29 2017 -0700

    mm/memory_hotplug: change pfn_to_section_nr/section_nr_to_pfn macro to inline function
    
    commit 1dd2bfc86818ddbc95f98e312e7704350223fd7d upstream.
    
    pfn_to_section_nr() and section_nr_to_pfn() are defined as macro.
    pfn_to_section_nr() has no issue even if it is defined as macro.  But
    section_nr_to_pfn() has overflow issue if sec is defined as int.
    
    section_nr_to_pfn() just shifts sec by PFN_SECTION_SHIFT.  If sec is
    defined as unsigned long, section_nr_to_pfn() returns pfn as 64 bit value.
    But if sec is defined as int, section_nr_to_pfn() returns pfn as 32 bit
    value.
    
    __remove_section() calculates start_pfn using section_nr_to_pfn() and
    scn_nr defined as int.  So if hot-removed memory address is over 16TB,
    overflow issue occurs and section_nr_to_pfn() does not calculate correct
    pfn.
    
    To make callers use proper arg, the patch changes the macros to inline
    functions.
    
    Fixes: 815121d2b5cd ("memory_hotplug: clear zone when removing the memory")
    Link: http://lkml.kernel.org/r/e643a387-e573-6bbf-d418-c60c8ee3d15e@gmail.com
    Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Cc: Reza Arbab <arbab@linux.vnet.ibm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 652104a95ab2308093b8c9c56b9a6d639cb85156
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Oct 3 16:14:44 2017 -0700

    sh: sh7269: remove nonexistent GPIO_PH[0-7] to fix pinctrl registration
    
    commit d9d73e81fe82fdf4ee65a48c26531edc04108349 upstream.
    
    Pinmux_pins[] is initialized through PINMUX_GPIO(), using designated
    array initializers, where the GPIO_* enums serve as indices.  If enum
    values are defined, but never used, pinmux_pins[] contains (zero-filled)
    holes.  Such entries are treated as pin zero, which was registered
    before, thus leading to pinctrl registration failures, as seen on
    sh7722:
    
        sh-pfc pfc-sh7722: pin 0 already registered
        sh-pfc pfc-sh7722: error during pin registration
        sh-pfc pfc-sh7722: could not register: -22
        sh-pfc: probe of pfc-sh7722 failed with error -22
    
    Remove GPIO_PH[0-7] from the enum to fix this.
    
    Link: http://lkml.kernel.org/r/1505205657-18012-5-git-send-email-geert+renesas@glider.be
    Fixes: ef0fa5331a73e479 ("sh: Add pinmux for sh7269")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Magnus Damm <magnus.damm@gmail.com>
    Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a36cd3698fe5b69c1ebd2e3635ca7a5ddd87d299
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Oct 3 16:14:41 2017 -0700

    sh: sh7264: remove nonexistent GPIO_PH[0-7] to fix pinctrl registration
    
    commit eae3df7e82318d798f45dedf111e241805ec7a4a upstream.
    
    Pinmux_pins[] is initialized through PINMUX_GPIO(), using designated
    array initializers, where the GPIO_* enums serve as indices.  If enum
    values are defined, but never used, pinmux_pins[] contains (zero-filled)
    holes.  Such entries are treated as pin zero, which was registered
    before, thus leading to pinctrl registration failures, as seen on
    sh7722:
    
        sh-pfc pfc-sh7722: pin 0 already registered
        sh-pfc pfc-sh7722: error during pin registration
        sh-pfc pfc-sh7722: could not register: -22
        sh-pfc: probe of pfc-sh7722 failed with error -22
    
    Remove GPIO_PH[0-7] from the enum to fix this.
    
    Link: http://lkml.kernel.org/r/1505205657-18012-4-git-send-email-geert+renesas@glider.be
    Fixes: 41797f75486d8ca3 ("sh: Add pinmux for sh7264")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Cc: Magnus Damm <magnus.damm@gmail.com>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 798678be9df8b03c2fc1bf206395ed77d575c8b6
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Oct 3 16:14:37 2017 -0700

    sh: sh7757: remove nonexistent GPIO_PT[JLNQ]7_RESV to fix pinctrl registration
    
    commit d8ce38f69843a56da044e56b6c16aecfbc3c6e39 upstream.
    
    Commit 3810e96056ff ("sh: modify pinmux for SH7757 2nd cut") renamed
    GPIO_PT[JLNQ]7 to GPIO_PT[JLNQ]7_RESV, and removed the existing users
    from the pinmux_pins[] array.
    
    However, pinmux_pins[] is initialized through PINMUX_GPIO(), using
    designated array initializers, where the GPIO_* enums serve as indices.
    Hence entries were not really removed, but replaced by (zero-filled)
    holes.  Such entries are treated as pin zero, which was registered
    before, thus leading to pinctrl registration failures, as seen on
    sh7722:
    
        sh-pfc pfc-sh7722: pin 0 already registered
        sh-pfc pfc-sh7722: error during pin registration
        sh-pfc pfc-sh7722: could not register: -22
        sh-pfc: probe of pfc-sh7722 failed with error -22
    
    Remove GPIO_PT[JLNQ]7_RESV from the enum to fix this.
    
    Link: http://lkml.kernel.org/r/1505205657-18012-3-git-send-email-geert+renesas@glider.be
    Fixes: 3810e96056ffddf6 ("sh: modify pinmux for SH7757 2nd cut")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Cc: Magnus Damm <magnus.damm@gmail.com>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 736e9ef8125f284fa61c9e7cf6716a41535c6255
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Oct 3 16:14:34 2017 -0700

    sh: sh7722: remove nonexistent GPIO_PTQ7 to fix pinctrl registration
    
    commit b78412b8300a8453b78d2c1b0b925b66493bb011 upstream.
    
    Patch series "sh: sh7722/sh7757i/sh7264/sh7269: Fix pinctrl registration",
    v2.
    
    Magnus Damm reported that on sh7722/Migo-R, pinctrl registration fails
    with:
    
        sh-pfc pfc-sh7722: pin 0 already registered
        sh-pfc pfc-sh7722: error during pin registration
        sh-pfc pfc-sh7722: could not register: -22
        sh-pfc: probe of pfc-sh7722 failed with error -22
    
    pinmux_pins[] is initialized through PINMUX_GPIO(), using designated
    array initializers, where the GPIO_* enums serve as indices.  Apparently
    GPIO_PTQ7 was defined in the enum, but never used.  If enum values are
    defined, but never used, pinmux_pins[] contains (zero-filled) holes.
    Hence such entries are treated as pin zero, which was registered before,
    and pinctrl registration fails.
    
    I can't see how this ever worked, as at the time of commit f5e25ae52fef
    ("sh-pfc: Add sh7722 pinmux support"), pinmux_gpios[] in
    drivers/pinctrl/sh-pfc/pfc-sh7722.c already had the hole, and
    drivers/pinctrl/core.c already had the check.
    
    Some scripting revealed a few more broken drivers:
      - sh7757 has four holes, due to nonexistent GPIO_PT[JLNQ]7_RESV.
      - sh7264 and sh7269 define GPIO_PH[0-7], but don't use it with
        PINMUX_GPIO().
    
    Patch 1 fixes the issue on sh7722, and was tested.  Patches 3-4 should
    fix the issue on the other 3 SoCs, but was untested due to lack of
    hardware.
    
    This patch (of 4):
    
    On sh7722/Migo-R, pinctrl registration fails with:
    
        sh-pfc pfc-sh7722: pin 0 already registered
        sh-pfc pfc-sh7722: error during pin registration
        sh-pfc pfc-sh7722: could not register: -22
        sh-pfc: probe of pfc-sh7722 failed with error -22
    
    pinmux_pins[] is initialized through PINMUX_GPIO(), using designated array
    initializers, where the GPIO_* enums serve as indices.  As GPIO_PTQ7 is
    defined in the enum, but never used, pinmux_pins[] contains a
    (zero-filled) hole.  Hence this entry is treated as pin zero, which was
    registered before, and pinctrl registration fails.
    
    According to the datasheet, port PTQ7 does not exist.  Hence remove
    GPIO_PTQ7 from the enum to fix this.
    
    Link: http://lkml.kernel.org/r/1505205657-18012-2-git-send-email-geert+renesas@glider.be
    Fixes: 8d7b5b0af7e070b9 ("sh: Add sh7722 pinmux code")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reported-by: Magnus Damm <magnus.damm@gmail.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Tested-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 45a0226f64ef684fda70b83325a2b83aa8665a0c
Author: Jean Delvare <jdelvare@suse.de>
Date:   Tue Oct 3 16:14:18 2017 -0700

    kernel/params.c: align add_sysfs_param documentation with code
    
    commit 630cc2b30a42c70628368a412beb4a5e5dd71abe upstream.
    
    This parameter is named kp, so the documentation should use that.
    
    Fixes: 9b473de87209 ("param: Fix duplicate module prefixes")
    Link: http://lkml.kernel.org/r/20170919142656.64aea59e@endymion
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Acked-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 209dc05b035705d3cd9ed18888ed88aa8b3e91a6
Author: Shrirang Bagul <shrirang.bagul@canonical.com>
Date:   Fri Sep 29 12:39:51 2017 +0800

    USB: serial: qcserial: add Dell DW5818, DW5819
    
    commit f5d9644c5fca7d8e8972268598bb516a7eae17f9 upstream.
    
    Dell Wireless 5819/5818 devices are re-branded Sierra Wireless MC74
    series which will by default boot with vid 0x413c and pid's 0x81cf,
    0x81d0, 0x81d1, 0x81d2.
    
    Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5a6034651e89c8fa92617efa24e0070dab3daaf0
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Wed Sep 27 21:35:12 2017 -0400

    scsi: sd: Implement blacklist option for WRITE SAME w/ UNMAP
    
    commit 28a0bc4120d38a394499382ba21d6965a67a3703 upstream.
    
    SBC-4 states:
    
      "A MAXIMUM UNMAP LBA COUNT field set to a non-zero value indicates the
       maximum number of LBAs that may be unmapped by an UNMAP command"
    
      "A MAXIMUM WRITE SAME LENGTH field set to a non-zero value indicates
       the maximum number of contiguous logical blocks that the device server
       allows to be unmapped or written in a single WRITE SAME command."
    
    Despite the spec being clear on the topic, some devices incorrectly
    expect WRITE SAME commands with the UNMAP bit set to be limited to the
    value reported in MAXIMUM UNMAP LBA COUNT in the Block Limits VPD.
    
    Implement a blacklist option that can be used to accommodate devices
    with this behavior.
    
    Reported-by: Bill Kuzeja <William.Kuzeja@stratus.com>
    Reported-by: Ewan D. Milne <emilne@redhat.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Tested-by: Laurence Oberman <loberman@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 476f50e79bb58f010c65001526b92e1f833e4862
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 2 14:06:43 2017 +0200

    ALSA: usx2y: Suppress kernel warning at page allocation failures
    
    commit 7682e399485fe19622b6fd82510b1f4551e48a25 upstream.
    
    The usx2y driver allocates the stream read/write buffers in continuous
    pages depending on the stream setup, and this may spew the kernel
    warning messages with a stack trace like:
      WARNING: CPU: 1 PID: 1846 at mm/page_alloc.c:3883
      __alloc_pages_slowpath+0x1ef2/0x2d70
      Modules linked in:
      CPU: 1 PID: 1846 Comm: kworker/1:2 Not tainted
      ....
    
    It may confuse user as if it were any serious error, although this is
    no fatal error and the driver handles the error case gracefully.
    Since the driver has already some sanity check of the given size (128
    and 256 pages), it can't pass any crazy value.  So it's merely page
    fragmentation.
    
    This patch adds __GFP_NOWARN to each caller for suppressing such
    kernel warnings.  The original issue was spotted by syzkaller.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e37cf5e2e128ef41fe229af84fc7272824e402cd
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Sat Sep 16 21:08:24 2017 -0700

    brcmfmac: Add check for short event packets
    
    commit dd2349121bb1b8ff688c3ca6a2a0bea9d8c142ca upstream.
    
    The length of the data in the received skb is currently passed into
    brcmf_fweh_process_event() as packet_len, but this value is not checked.
    event_packet should be followed by DATALEN bytes of additional event
    data.  Ensure that the received packet actually contains at least
    DATALEN bytes of additional data, to avoid copying uninitialized memory
    into event->data.
    
    Suggested-by: Mattias Nissler <mnissler@chromium.org>
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f714e625057359dc925a0f685b3474aa5dc13193
Author: Hante Meuleman <meuleman@broadcom.com>
Date:   Wed Feb 17 11:26:54 2016 +0100

    brcmfmac: Add length checks on firmware events
    
    commit 0aedbcaf6f182690790d98d90d5fe1e64c846c34 upstream.
    
    Add additional length checks on firmware events to create more
    robust code.
    
    Reviewed-by: Arend Van Spriel <arend@broadcom.com>
    Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
    Reviewed-by: Lei Zhang <leizh@broadcom.com>
    Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - Drop changes to brcmf_wowl_nd_results()
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 84f9cf6ecccd86254bc6e2cfac0050543269852a
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Sep 28 15:44:38 2017 +0200

    l2tp: fix l2tp_eth module loading
    
    commit 9f775ead5e570e7e19015b9e4e2f3dd6e71a5935 upstream.
    
    The l2tp_eth module crashes if its netlink callbacks are run when the
    pernet data aren't initialised.
    
    We should normally register_pernet_device() before the genl callbacks.
    However, the pernet data only maintain a list of l2tpeth interfaces,
    and this list is never used. So let's just drop pernet handling
    instead.
    
    Fixes: d9e31d17ceba ("l2tp: Add L2TP ethernet pseudowire support")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 748360402c58e21b154831335579908ce89a1fe8
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Sep 28 15:51:37 2017 +0200

    udp: perform source validation for mcast early demux
    
    commit bc044e8db7962e727a75b591b9851ff2ac5cf846 upstream.
    
    The UDP early demux can leverate the rx dst cache even for
    multicast unconnected sockets.
    
    In such scenario the ipv4 source address is validated only on
    the first packet in the given flow. After that, when we fetch
    the dst entry  from the socket rx cache, we stop enforcing
    the rp_filter and we even start accepting any kind of martian
    addresses.
    
    Disabling the dst cache for unconnected multicast socket will
    cause large performace regression, nearly reducing by half the
    max ingress tput.
    
    Instead we factor out a route helper to completely validate an
    skb source address for multicast packets and we call it from
    the UDP early demux for mcast packets landing on unconnected
    sockets, after successful fetching the related cached dst entry.
    
    This still gives a measurable, but limited performance
    regression:
    
                    rp_filter = 0           rp_filter = 1
    edmux disabled: 1182 Kpps               1127 Kpps
    edmux before:   2238 Kpps               2238 Kpps
    edmux after:    2037 Kpps               2019 Kpps
    
    The above figures are on top of current net tree.
    Applying the net-next commit 6e617de84e87 ("net: avoid a full
    fib lookup when rp_filter is disabled.") the delta with
    rp_filter == 0 will decrease even more.
    
    Fixes: 421b3885bf6d ("udp: ipv4: Add udp early demux")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit beb4d5c358e90541c02d38635a79944650f91a69
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Sep 28 15:51:36 2017 +0200

    IPv4: early demux can return an error code
    
    commit 7487449c86c65202b3b725c4524cb48dd65e4e6f upstream.
    
    Currently no error is emitted, but this infrastructure will
    used by the next patch to allow source address validation
    for mcast sockets.
    Since early demux can do a route lookup and an ipv4 route
    lookup can return an error code this is consistent with the
    current ipv4 route infrastructure.
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Drop change to net_protocol::early_demux_handler
     - Keep using NET_INC_STATS_BH() in ip_rcv_finish()
     - Fix up additional return statement in udp_v4_early_demux()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a4523adf36157051bff1b59a5c2d18dbda577c0a
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Mar 22 09:19:38 2016 +0100

    ipv4: fix broadcast packets reception
    
    commit ad0ea1989cc4d5905941d0a9e62c63ad6d859cef upstream.
    
    Currently, ingress ipv4 broadcast datagrams are dropped since,
    in udp_v4_early_demux(), ip_check_mc_rcu() is invoked even on
    bcast packets.
    
    This patch addresses the issue, invoking ip_check_mc_rcu()
    only for mcast packets.
    
    Fixes: 6e5403093261 ("ipv4/udp: Verify multicast group is ours in upd_v4_early_demux()")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 91a6bec9bfc73ccf549d2810a014e20dd62a1182
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Sep 13 18:02:02 2017 +0100

    staging: iio: ade7759: fix signed extension bug on shift of a u8
    
    commit 13ffe9a26df4e156363579b25c904dd0b1e31bfb upstream.
    
    The current shift of st->rx[2] left shifts a u8 24 bits left,
    promotes the integer to a an int and then to a unsigned u64. If
    the top bit of st->rx[2] is set then we end up with all the upper
    bits being set to 1. Fix this by casting st->rx[2] to a u64 before
    the 24 bit left shift.
    
    Detected by CoverityScan CID#144940 ("Unintended sign extension")
    
    Fixes: 2919fa54ef64 ("staging: iio: meter: new driver for ADE7759 devices")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0cf544475e05647b1c3994f1ad0295451e294a16
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Sep 29 12:27:41 2017 +0100

    arm64: fault: Route pte translation faults via do_translation_fault
    
    commit 760bfb47c36a07741a089bf6a28e854ffbee7dc9 upstream.
    
    We currently route pte translation faults via do_page_fault, which elides
    the address check against TASK_SIZE before invoking the mm fault handling
    code. However, this can cause issues with the path walking code in
    conjunction with our word-at-a-time implementation because
    load_unaligned_zeropad can end up faulting in kernel space if it reads
    across a page boundary and runs into a page fault (e.g. by attempting to
    read from a guard region).
    
    In the case of such a fault, load_unaligned_zeropad has registered a
    fixup to shift the valid data and pad with zeroes, however the abort is
    reported as a level 3 translation fault and we dispatch it straight to
    do_page_fault, despite it being a kernel address. This results in calling
    a sleeping function from atomic context:
    
      BUG: sleeping function called from invalid context at arch/arm64/mm/fault.c:313
      in_atomic(): 0, irqs_disabled(): 0, pid: 10290
      Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
      [...]
      [<ffffff8e016cd0cc>] ___might_sleep+0x134/0x144
      [<ffffff8e016cd158>] __might_sleep+0x7c/0x8c
      [<ffffff8e016977f0>] do_page_fault+0x140/0x330
      [<ffffff8e01681328>] do_mem_abort+0x54/0xb0
      Exception stack(0xfffffffb20247a70 to 0xfffffffb20247ba0)
      [...]
      [<ffffff8e016844fc>] el1_da+0x18/0x78
      [<ffffff8e017f399c>] path_parentat+0x44/0x88
      [<ffffff8e017f4c9c>] filename_parentat+0x5c/0xd8
      [<ffffff8e017f5044>] filename_create+0x4c/0x128
      [<ffffff8e017f59e4>] SyS_mkdirat+0x50/0xc8
      [<ffffff8e01684e30>] el0_svc_naked+0x24/0x28
      Code: 36380080 d5384100 f9400800 9402566d (d4210000)
      ---[ end trace 2d01889f2bca9b9f ]---
    
    Fix this by dispatching all translation faults to do_translation_faults,
    which avoids invoking the page fault logic for faults on kernel addresses.
    
    Reported-by: Ankit Jain <ankijain@codeaurora.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9dac9a036092d5c4f44eb0626cb7794d493e4a63
Author: Ethan Zhao <ethan.zhao@oracle.com>
Date:   Mon Sep 4 13:59:34 2017 +0800

    sched/sysctl: Check user input value of sysctl_sched_time_avg
    
    commit 5ccba44ba118a5000cccc50076b0344632459779 upstream.
    
    System will hang if user set sysctl_sched_time_avg to 0:
    
      [root@XXX ~]# sysctl kernel.sched_time_avg_ms=0
    
      Stack traceback for pid 0
      0xffff883f6406c600 0 0 1 3 R 0xffff883f6406cf50 *swapper/3
      ffff883f7ccc3ae8 0000000000000018 ffffffff810c4dd0 0000000000000000
      0000000000017800 ffff883f7ccc3d78 0000000000000003 ffff883f7ccc3bf8
      ffffffff810c4fc9 ffff883f7ccc3c08 00000000810c5043 ffff883f7ccc3c08
      Call Trace:
      <IRQ> [<ffffffff810c4dd0>] ? update_group_capacity+0x110/0x200
      [<ffffffff810c4fc9>] ? update_sd_lb_stats+0x109/0x600
      [<ffffffff810c5507>] ? find_busiest_group+0x47/0x530
      [<ffffffff810c5b84>] ? load_balance+0x194/0x900
      [<ffffffff810ad5ca>] ? update_rq_clock.part.83+0x1a/0xe0
      [<ffffffff810c6d42>] ? rebalance_domains+0x152/0x290
      [<ffffffff810c6f5c>] ? run_rebalance_domains+0xdc/0x1d0
      [<ffffffff8108a75b>] ? __do_softirq+0xfb/0x320
      [<ffffffff8108ac85>] ? irq_exit+0x125/0x130
      [<ffffffff810b3a17>] ? scheduler_ipi+0x97/0x160
      [<ffffffff81052709>] ? smp_reschedule_interrupt+0x29/0x30
      [<ffffffff8173a1be>] ? reschedule_interrupt+0x6e/0x80
       <EOI> [<ffffffff815bc83c>] ? cpuidle_enter_state+0xcc/0x230
      [<ffffffff815bc80c>] ? cpuidle_enter_state+0x9c/0x230
      [<ffffffff815bc9d7>] ? cpuidle_enter+0x17/0x20
      [<ffffffff810cd6dc>] ? cpu_startup_entry+0x38c/0x420
      [<ffffffff81053373>] ? start_secondary+0x173/0x1e0
    
    Because divide-by-zero error happens in function:
    
    update_group_capacity()
      update_cpu_capacity()
        scale_rt_capacity()
         {
              ...
              total = sched_avg_period() + delta;
              used = div_u64(avg, total);
              ...
         }
    
    To fix this issue, check user input value of sysctl_sched_time_avg, keep
    it unchanged when hitting invalid input, and set the minimum limit of
    sysctl_sched_time_avg to 1 ms.
    
    Reported-by: James Puthukattukaran <james.puthukattukaran@oracle.com>
    Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: efault@gmx.de
    Cc: ethan.kernel@gmail.com
    Cc: keescook@chromium.org
    Cc: mcgrof@kernel.org
    Link: http://lkml.kernel.org/r/1504504774-18253-1-git-send-email-ethan.zhao@oracle.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 38b2f505e56f7496a3bddfab910d9001f3c6142b
Author: Willem de Bruijn <willemb@google.com>
Date:   Tue Sep 26 12:20:17 2017 -0400

    packet: only test po->has_vnet_hdr once in packet_snd
    
    commit da7c9561015e93d10fe6aab73e9288e0d09d65a6 upstream.
    
    Packet socket option po->has_vnet_hdr can be updated concurrently with
    other operations if no ring is attached.
    
    Do not test the option twice in packet_snd, as the value may change in
    between calls. A race on setsockopt disable may cause a packet > mtu
    to be sent without having GSO options set.
    
    Fixes: bfd5f4a3d605 ("packet: Add GSO/csum offload support.")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ad43afc28bab51dcfc002d36afc541b7b32d5b1
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:13 2017 +0900

    usb: renesas_usbhs: fix usbhsf_fifo_clear() for RX direction
    
    commit 0a2ce62b61f2c76d0213edf4e37aaf54a8ddf295 upstream.
    
    This patch fixes an issue that the usbhsf_fifo_clear() is possible
    to cause 10 msec delay if the pipe is RX direction and empty because
    the FRDY bit will never be set to 1 in such case.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eed58cbbd61e03483c24ff3c47c475fc13f929c7
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:12 2017 +0900

    usb: renesas_usbhs: fix the BCLR setting condition for non-DCP pipe
    
    commit 6124607acc88fffeaadf3aacfeb3cc1304c87387 upstream.
    
    This patch fixes an issue that the driver sets the BCLR bit of
    {C,Dn}FIFOCTR register to 1 even when it's non-DCP pipe and
    the FRDY bit of {C,Dn}FIFOCTR register is set to 1.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8590bc1da625dd4a589eac0fc3aa3cf4f400424d
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:49 2017 -0400

    USB: dummy-hcd: Fix erroneous synchronization change
    
    commit 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 upstream.
    
    A recent change to the synchronization in dummy-hcd was incorrect.
    The issue was that dummy_udc_stop() contained no locking and therefore
    could race with various gadget driver callbacks, and the fix was to
    add locking and issue the callbacks with the private spinlock held.
    
    UDC drivers aren't supposed to do this.  Gadget driver callback
    routines are allowed to invoke functions in the UDC driver, and these
    functions will generally try to acquire the private spinlock.  This
    would deadlock the driver.
    
    The correct solution is to drop the spinlock before issuing callbacks,
    and avoid races by emulating the synchronize_irq() call that all real
    UDC drivers must perform in their ->udc_stop() routines after
    disabling interrupts.  This involves adding a flag to dummy-hcd's
    private structure to keep track of whether interrupts are supposed to
    be enabled, and adding a counter to keep track of ongoing callbacks so
    that dummy_udc_stop() can wait for them all to finish.
    
    A real UDC driver won't receive disconnect, reset, suspend, resume, or
    setup events once it has disabled interrupts.  dummy-hcd will receive
    them but won't try to issue any gadget driver callbacks, which should
    be just as good.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: f16443a034c7 ("USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks")
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a4bf471ab724e4dc875dc75ce201558af3972a29
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Jun 13 15:23:42 2017 -0400

    USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks
    
    commit f16443a034c7aa359ddf6f0f9bc40d01ca31faea upstream.
    
    Using the syzkaller kernel fuzzer, Andrey Konovalov generated the
    following error in gadgetfs:
    
    > BUG: KASAN: use-after-free in __lock_acquire+0x3069/0x3690
    > kernel/locking/lockdep.c:3246
    > Read of size 8 at addr ffff88003a2bdaf8 by task kworker/3:1/903
    >
    > CPU: 3 PID: 903 Comm: kworker/3:1 Not tainted 4.12.0-rc4+ #35
    > Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    > Workqueue: usb_hub_wq hub_event
    > Call Trace:
    >  __dump_stack lib/dump_stack.c:16 [inline]
    >  dump_stack+0x292/0x395 lib/dump_stack.c:52
    >  print_address_description+0x78/0x280 mm/kasan/report.c:252
    >  kasan_report_error mm/kasan/report.c:351 [inline]
    >  kasan_report+0x230/0x340 mm/kasan/report.c:408
    >  __asan_report_load8_noabort+0x19/0x20 mm/kasan/report.c:429
    >  __lock_acquire+0x3069/0x3690 kernel/locking/lockdep.c:3246
    >  lock_acquire+0x22d/0x560 kernel/locking/lockdep.c:3855
    >  __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
    >  _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:151
    >  spin_lock include/linux/spinlock.h:299 [inline]
    >  gadgetfs_suspend+0x89/0x130 drivers/usb/gadget/legacy/inode.c:1682
    >  set_link_state+0x88e/0xae0 drivers/usb/gadget/udc/dummy_hcd.c:455
    >  dummy_hub_control+0xd7e/0x1fb0 drivers/usb/gadget/udc/dummy_hcd.c:2074
    >  rh_call_control drivers/usb/core/hcd.c:689 [inline]
    >  rh_urb_enqueue drivers/usb/core/hcd.c:846 [inline]
    >  usb_hcd_submit_urb+0x92f/0x20b0 drivers/usb/core/hcd.c:1650
    >  usb_submit_urb+0x8b2/0x12c0 drivers/usb/core/urb.c:542
    >  usb_start_wait_urb+0x148/0x5b0 drivers/usb/core/message.c:56
    >  usb_internal_control_msg drivers/usb/core/message.c:100 [inline]
    >  usb_control_msg+0x341/0x4d0 drivers/usb/core/message.c:151
    >  usb_clear_port_feature+0x74/0xa0 drivers/usb/core/hub.c:412
    >  hub_port_disable+0x123/0x510 drivers/usb/core/hub.c:4177
    >  hub_port_init+0x1ed/0x2940 drivers/usb/core/hub.c:4648
    >  hub_port_connect drivers/usb/core/hub.c:4826 [inline]
    >  hub_port_connect_change drivers/usb/core/hub.c:4999 [inline]
    >  port_event drivers/usb/core/hub.c:5105 [inline]
    >  hub_event+0x1ae1/0x3d40 drivers/usb/core/hub.c:5185
    >  process_one_work+0xc08/0x1bd0 kernel/workqueue.c:2097
    >  process_scheduled_works kernel/workqueue.c:2157 [inline]
    >  worker_thread+0xb2b/0x1860 kernel/workqueue.c:2233
    >  kthread+0x363/0x440 kernel/kthread.c:231
    >  ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:424
    >
    > Allocated by task 9958:
    >  save_stack_trace+0x1b/0x20 arch/x86/kernel/stacktrace.c:59
    >  save_stack+0x43/0xd0 mm/kasan/kasan.c:513
    >  set_track mm/kasan/kasan.c:525 [inline]
    >  kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:617
    >  kmem_cache_alloc_trace+0x87/0x280 mm/slub.c:2745
    >  kmalloc include/linux/slab.h:492 [inline]
    >  kzalloc include/linux/slab.h:665 [inline]
    >  dev_new drivers/usb/gadget/legacy/inode.c:170 [inline]
    >  gadgetfs_fill_super+0x24f/0x540 drivers/usb/gadget/legacy/inode.c:1993
    >  mount_single+0xf6/0x160 fs/super.c:1192
    >  gadgetfs_mount+0x31/0x40 drivers/usb/gadget/legacy/inode.c:2019
    >  mount_fs+0x9c/0x2d0 fs/super.c:1223
    >  vfs_kern_mount.part.25+0xcb/0x490 fs/namespace.c:976
    >  vfs_kern_mount fs/namespace.c:2509 [inline]
    >  do_new_mount fs/namespace.c:2512 [inline]
    >  do_mount+0x41b/0x2d90 fs/namespace.c:2834
    >  SYSC_mount fs/namespace.c:3050 [inline]
    >  SyS_mount+0xb0/0x120 fs/namespace.c:3027
    >  entry_SYSCALL_64_fastpath+0x1f/0xbe
    >
    > Freed by task 9960:
    >  save_stack_trace+0x1b/0x20 arch/x86/kernel/stacktrace.c:59
    >  save_stack+0x43/0xd0 mm/kasan/kasan.c:513
    >  set_track mm/kasan/kasan.c:525 [inline]
    >  kasan_slab_free+0x72/0xc0 mm/kasan/kasan.c:590
    >  slab_free_hook mm/slub.c:1357 [inline]
    >  slab_free_freelist_hook mm/slub.c:1379 [inline]
    >  slab_free mm/slub.c:2961 [inline]
    >  kfree+0xed/0x2b0 mm/slub.c:3882
    >  put_dev+0x124/0x160 drivers/usb/gadget/legacy/inode.c:163
    >  gadgetfs_kill_sb+0x33/0x60 drivers/usb/gadget/legacy/inode.c:2027
    >  deactivate_locked_super+0x8d/0xd0 fs/super.c:309
    >  deactivate_super+0x21e/0x310 fs/super.c:340
    >  cleanup_mnt+0xb7/0x150 fs/namespace.c:1112
    >  __cleanup_mnt+0x1b/0x20 fs/namespace.c:1119
    >  task_work_run+0x1a0/0x280 kernel/task_work.c:116
    >  exit_task_work include/linux/task_work.h:21 [inline]
    >  do_exit+0x18a8/0x2820 kernel/exit.c:878
    >  do_group_exit+0x14e/0x420 kernel/exit.c:982
    >  get_signal+0x784/0x1780 kernel/signal.c:2318
    >  do_signal+0xd7/0x2130 arch/x86/kernel/signal.c:808
    >  exit_to_usermode_loop+0x1ac/0x240 arch/x86/entry/common.c:157
    >  prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
    >  syscall_return_slowpath+0x3ba/0x410 arch/x86/entry/common.c:263
    >  entry_SYSCALL_64_fastpath+0xbc/0xbe
    >
    > The buggy address belongs to the object at ffff88003a2bdae0
    >  which belongs to the cache kmalloc-1024 of size 1024
    > The buggy address is located 24 bytes inside of
    >  1024-byte region [ffff88003a2bdae0, ffff88003a2bdee0)
    > The buggy address belongs to the page:
    > page:ffffea0000e8ae00 count:1 mapcount:0 mapping:          (null)
    > index:0x0 compound_mapcount: 0
    > flags: 0x100000000008100(slab|head)
    > raw: 0100000000008100 0000000000000000 0000000000000000 0000000100170017
    > raw: ffffea0000ed3020 ffffea0000f5f820 ffff88003e80efc0 0000000000000000
    > page dumped because: kasan: bad access detected
    >
    > Memory state around the buggy address:
    >  ffff88003a2bd980: fb fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >  ffff88003a2bda00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    > >ffff88003a2bda80: fc fc fc fc fc fc fc fc fc fc fc fc fb fb fb fb
    >                                                                 ^
    >  ffff88003a2bdb00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >  ffff88003a2bdb80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    > ==================================================================
    
    What this means is that the gadgetfs_suspend() routine was trying to
    access dev->lock after it had been deallocated.  The root cause is a
    race in the dummy_hcd driver; the dummy_udc_stop() routine can race
    with the rest of the driver because it contains no locking.  And even
    when proper locking is added, it can still race with the
    set_link_state() function because that function incorrectly drops the
    private spinlock before invoking any gadget driver callbacks.
    
    The result of this race, as seen above, is that set_link_state() can
    invoke a callback in gadgetfs even after gadgetfs has been unbound
    from dummy_hcd's UDC and its private data structures have been
    deallocated.
    
    include/linux/usb/gadget.h documents that the ->reset, ->disconnect,
    ->suspend, and ->resume callbacks may be invoked in interrupt context.
    In general this is necessary, to prevent races with gadget driver
    removal.  This patch fixes dummy_hcd to retain the spinlock across
    these calls, and it adds a spinlock acquisition to dummy_udc_stop() to
    prevent the race.
    
    The net2280 driver makes the same mistake of dropping the private
    spinlock for its ->disconnect and ->reset callback invocations.  The
    patch fixes it too.
    
    Lastly, since gadgetfs_suspend() may be invoked in interrupt context,
    it cannot assume that interrupts are enabled when it runs.  It must
    use spin_lock_irqsave() instead of spin_lock_irq().  The patch fixes
    that bug as well.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Drop changes in net2280's handle_stat1_irqs()
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 066f191a478ed423b6caaee9ed3a4d02d879818b
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:40 2017 -0400

    USB: dummy-hcd: fix infinite-loop resubmission bug
    
    commit 0173a68bfb0ad1c72a6ee39cc485aa2c97540b98 upstream.
    
    The dummy-hcd HCD/UDC emulator tries not to do too much work during
    each timer interrupt.  But it doesn't try very hard; currently all
    it does is limit the total amount of bulk data transferred.  Other
    transfer types aren't limited, and URBs that transfer no data (because
    of an error, perhaps) don't count toward the limit, even though on a
    real USB bus they would consume at least a minimum overhead.
    
    This means it's possible to get the driver stuck in an infinite loop,
    for example, if the host class driver resubmits an URB every time it
    completes (which is common for interrupt URBs).  Each time the URB is
    resubmitted it gets added to the end of the pending-URBs list, and
    dummy-hcd doesn't stop until that list is empty.  Andrey Konovalov was
    able to trigger this failure mode using the syzkaller fuzzer.
    
    This patch fixes the infinite-loop problem by restricting the URBs
    handled during each timer interrupt to those that were already on the
    pending list when the interrupt routine started.  Newly added URBs
    won't be processed until the next timer interrupt.  The problem of
    properly accounting for non-bulk bandwidth (as well as packet and
    transaction overhead) is not addressed here.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit beb53919627a7d4da138f868ce84c119da31398e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:22 2017 -0400

    USB: dummy-hcd: fix connection failures (wrong speed)
    
    commit fe659bcc9b173bcfdd958ce2aec75e47651e74e1 upstream.
    
    The dummy-hcd UDC driver is not careful about the way it handles
    connection speeds.  It ignores the module parameter that is supposed
    to govern the maximum connection speed and it doesn't set the HCD
    flags properly for the case where it ends up running at full speed.
    
    The result is that in many cases, gadget enumeration over dummy-hcd
    fails because the bMaxPacketSize byte in the device descriptor is set
    incorrectly.  For example, the default settings call for a high-speed
    connection, but the maxpacket value for ep0 ends up being set for a
    Super-Speed connection.
    
    This patch fixes the problem by initializing the gadget's max_speed
    and the HCD flags correctly.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aeff2239d7c3276b0166538da07541147e92f5d5
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Tue Sep 26 06:06:22 2017 -0700

    Revert "IB/ipoib: Update broadcast object if PKey value was changed in index 0"
    
    commit 612601d0013f03de9dc134809f242ba6da9ca252 upstream.
    
    commit 9a9b8112699d will cause core to fail UD QP from being destroyed
    on ipoib unload, therefore cause resources leakage.
    On pkey change event above patch modifies mgid before calling underlying
    driver to detach it from QP. Drivers' detach_mcast() will fail to find
    modified mgid it was never given to attach in a first place.
    Core qp->usecnt will never go down, so ib_destroy_qp() will fail.
    
    IPoIB driver actually does take care of new broadcast mgid based on new
    pkey by destroying an old mcast object in ipoib_mcast_dev_flush())
    ....
            if (priv->broadcast) {
                    rb_erase(&priv->broadcast->rb_node, &priv->multicast_tree);
                    list_add_tail(&priv->broadcast->list, &remove_list);
                    priv->broadcast = NULL;
            }
    ...
    
    then in restarted ipoib_macst_join_task() creating a new broadcast mcast
    object, sending join request and on completion tells the driver to attach
    to reinitialized QP:
    ...
    if (!priv->broadcast) {
    ...
            broadcast = ipoib_mcast_alloc(dev, 0);
    ...
            memcpy(broadcast->mcmember.mgid.raw, priv->dev->broadcast + 4,
                   sizeof (union ib_gid));
            priv->broadcast = broadcast;
    ...
    
    Fixes: 9a9b8112699d ("IB/ipoib: Update broadcast object if PKey value was changed in index 0")
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Reviewed-by: Feras Daoud <ferasda@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e155a903c0d95cab1d452bd9a1722e41a3fef0c
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Sep 26 15:57:16 2017 +0100

    arm64: Make sure SPsel is always set
    
    commit 5371513fb338fb9989c569dc071326d369d6ade8 upstream.
    
    When the kernel is entered at EL2 on an ARMv8.0 system, we construct
    the EL1 pstate and make sure this uses the the EL1 stack pointer
    (we perform an exception return to EL1h).
    
    But if the kernel is either entered at EL1 or stays at EL2 (because
    we're on a VHE-capable system), we fail to set SPsel, and use whatever
    stack selection the higher exception level has choosen for us.
    
    Let's not take any chance, and make sure that SPsel is set to one
    before we decide the mode we're going to run in.
    
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffadbd1f63501bfee5036bf2d1074e50ae827e6a
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Sep 25 12:23:03 2017 +0200

    vfs: Return -ENXIO for negative SEEK_HOLE / SEEK_DATA offsets
    
    commit fc46820b27a2d9a46f7e90c9ceb4a64a1bc5fab8 upstream.
    
    In generic_file_llseek_size, return -ENXIO for negative offsets as well
    as offsets beyond EOF.  This affects filesystems which don't implement
    SEEK_HOLE / SEEK_DATA internally, possibly because they don't support
    holes.
    
    Fixes xfstest generic/448.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d87ebfe7d3cfa8d617afff30980925da88d08db3
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Sep 26 11:57:54 2017 +0200

    netfilter: ipset: pernet ops must be unregistered last
    
    commit e23ed762db7ed1950a6408c3be80bc56909ab3d4 upstream.
    
    Removing the ipset module leaves a small window where one cpu performs
    module removal while another runs a command like 'ipset flush'.
    
    ipset uses net_generic(), unregistering the pernet ops frees this
    storage area.
    
    Fix it by first removing the user-visible api handlers and the pernet
    ops last.
    
    Fixes: 1785e8f473082 ("netfiler: ipset: Add net namespace for ipset")
    Reported-by: Li Shuang <shuali@redhat.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a3c5d5b70f4ebcca904f5d7c3c5548cde0f18b6e
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Sep 26 16:16:43 2017 +0200

    l2tp: fix race condition in l2tp_tunnel_delete
    
    commit 62b982eeb4589b2e6d7c01a90590e3a4c2b2ca19 upstream.
    
    If we try to delete the same tunnel twice, the first delete operation
    does a lookup (l2tp_tunnel_get), finds the tunnel, calls
    l2tp_tunnel_delete, which queues it for deletion by
    l2tp_tunnel_del_work.
    
    The second delete operation also finds the tunnel and calls
    l2tp_tunnel_delete. If the workqueue has already fired and started
    running l2tp_tunnel_del_work, then l2tp_tunnel_delete will queue the
    same tunnel a second time, and try to free the socket again.
    
    Add a dead flag to prevent firing the workqueue twice. Then we can
    remove the check of queue_work's result that was meant to prevent that
    race but doesn't.
    
    Reproducer:
    
        ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 local 192.168.0.2 remote 192.168.0.1 encap udp udp_sport 5000 udp_dport 6000
        ip l2tp add session name l2tp1 tunnel_id 3000 session_id 1000 peer_session_id 2000
        ip link set l2tp1 up
        ip l2tp del tunnel tunnel_id 3000
        ip l2tp del tunnel tunnel_id 3000
    
    Fixes: f8ccac0e4493 ("l2tp: put tunnel socket release on a workqueue")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Acked-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab1d4947ce34364bb14e5f253d1a6bd29165069b
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Tue Sep 26 15:14:29 2017 +0300

    vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit
    
    commit 36f6ee22d2d66046e369757ec6bbe1c482957ba6 upstream.
    
    When running LTP IPsec tests, KASan might report:
    
    BUG: KASAN: use-after-free in vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
    Read of size 4 at addr ffff880dc6ad1980 by task swapper/0/0
    ...
    Call Trace:
      <IRQ>
      dump_stack+0x63/0x89
      print_address_description+0x7c/0x290
      kasan_report+0x28d/0x370
      ? vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
      __asan_report_load4_noabort+0x19/0x20
      vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
      ? vti_init_net+0x190/0x190 [ip_vti]
      ? save_stack_trace+0x1b/0x20
      ? save_stack+0x46/0xd0
      dev_hard_start_xmit+0x147/0x510
      ? icmp_echo.part.24+0x1f0/0x210
      __dev_queue_xmit+0x1394/0x1c60
    ...
    Freed by task 0:
      save_stack_trace+0x1b/0x20
      save_stack+0x46/0xd0
      kasan_slab_free+0x70/0xc0
      kmem_cache_free+0x81/0x1e0
      kfree_skbmem+0xb1/0xe0
      kfree_skb+0x75/0x170
      kfree_skb_list+0x3e/0x60
      __dev_queue_xmit+0x1298/0x1c60
      dev_queue_xmit+0x10/0x20
      neigh_resolve_output+0x3a8/0x740
      ip_finish_output2+0x5c0/0xe70
      ip_finish_output+0x4ba/0x680
      ip_output+0x1c1/0x3a0
      xfrm_output_resume+0xc65/0x13d0
      xfrm_output+0x1e4/0x380
      xfrm4_output_finish+0x5c/0x70
    
    Can be fixed if we get skb->len before dst_output().
    
    Fixes: b9959fd3b0fa ("vti: switch to new ip tunnel code")
    Fixes: 22e1b23dafa8 ("vti6: Support inter address family tunneling.")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d910752cab2fb023bbd853bf7fdfabb77eb7b969
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 21 17:19:20 2017 +0300

    drm/i915/bios: ignore HDMI on port A
    
    commit 2ba7d7e0437127314864238f8bfcb8369d81075c upstream.
    
    The hardware state readout oopses after several warnings when trying to
    use HDMI on port A, if such a combination is configured in VBT. Filter
    the combo out already at the VBT parsing phase.
    
    v2: also ignore DVI (Ville)
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102889
    Cc: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Daniel Drake <dan@reactivated.net>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170921141920.18172-1-jani.nikula@intel.com
    (cherry picked from commit d27ffc1d00327c29b3aa97f941b42f0949f9e99f)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3524562584015dece56557a36cf163ddfc67c29c
Author: satoru takeuchi <satoru.takeuchi@gmail.com>
Date:   Tue Sep 12 22:42:52 2017 +0900

    btrfs: prevent to set invalid default subvolid
    
    commit 6d6d282932d1a609e60dc4467677e0e863682f57 upstream.
    
    `btrfs sub set-default` succeeds to set an ID which isn't corresponding to any
    fs/file tree. If such the bad ID is set to a filesystem, we can't mount this
    filesystem without specifying `subvol` or `subvolid` mount options.
    
    Fixes: 6ef5ed0d386b ("Btrfs: add ioctl and incompat flag to set the default mount subvol")
    Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
    Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fb8ad54a782ce4c5c03a93e94c0ef361018d4e12
Author: Omar Sandoval <osandov@fb.com>
Date:   Tue Aug 22 23:46:00 2017 -0700

    Btrfs: fix incorrect {node,sector}size endianness from BTRFS_IOC_FS_INFO
    
    commit bea7eafdbda3ba1d4b2ccb9cca829eefb7989bb9 upstream.
    
    fs_info->super_copy->{node,sector}size are little-endian, but the ioctl
    should return the values in native endianness. Use the cached values in
    btrfs_fs_info instead. Found with sparse.
    
    Fixes: 80a773fbfc2d ("btrfs: retrieve more info from FS_INFO ioctl")
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: native nodesize and sectorsize are members of
     struct btrfs_root, not struct btrfs_fs_info]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c368ff60b54cce55237466b6d4d94684bc4104d6
Author: Nicolai Stange <nstange@suse.de>
Date:   Mon Sep 11 09:45:40 2017 +0200

    PCI: Fix race condition with driver_override
    
    commit 9561475db680f7144d2223a409dd3d7e322aca03 upstream.
    
    The driver_override implementation is susceptible to a race condition when
    different threads are reading vs. storing a different driver override.  Add
    locking to avoid the race condition.
    
    This is in close analogy to commit 6265539776a0 ("driver core: platform:
    fix race condition with driver_override") from Adrian Salido.
    
    Fixes: 782a985d7af2 ("PCI: Introduce new device binding path using pci_dev.driver_override")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d5f4fcfa244eced002a2984d0c56ef4dceb22579
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Sep 20 16:58:38 2017 +0200

    security/keys: properly zero out sensitive key material in big_key
    
    commit 910801809b2e40a4baedd080ef5d80b4a180e70e upstream.
    
    Error paths forgot to zero out sensitive material, so this patch changes
    some kfrees into a kzfrees.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Eric Biggers <ebiggers3@gmail.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Kirill Marinushkin <k.marinushkin@gmail.com>
    Cc: security@kernel.org
    [bwh: Backported to 3.16: there's only one kfree() to change]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 519dab751968b16f6c039abbc53ecd89f4668c68
Author: Ilya Lesokhin <ilyal@mellanox.com>
Date:   Sun Sep 24 21:46:34 2017 +0300

    IB/mlx5: Simplify mlx5_ib_cont_pages
    
    commit d67bc5d4e3e100d762c0f57ea67f28bc219698a6 upstream.
    
    The patch simplifies mlx5_ib_cont_pages and fixes the following
    issues in the original implementation:
    
    First issues is related to alignment of the PFNs. After the check
    base + p != PFN, the alignment of the PFN wasn't checked. So the PFN
    sequence 0, 1, 1, 2 would result in a page_shift of 13 even though
    the 3rd PFN is not 8KB aligned.
    
    This wasn't actually a bug because it was supported by all the
    existing mlx5 compatible device, but we don't want to require
    this support in all future devices.
    
    Another issue is because the inner loop didn't advance PFN so
    the test "if (base + p != pfn)" always failed for SGE with
    len > (1<<page_shift).
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Ilya Lesokhin <ilyal@mellanox.com>
    Reviewed-by: Eli Cohen <eli@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fe93ba52478c9b1203e8491ac865334b46b51338
Author: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Date:   Fri Aug 26 07:16:17 2016 +0200

    IB/mlx5: Fix the size parameter to find_first_bit
    
    commit fffd68734dc685e208e86d8c5f6522cd695a8d60 upstream.
    
    The 2nd parameter of 'find_first_bit' is the number of bits to search.
    In this case, we are passing 'sizeof(tmp)' which is likely to be 4 or 8
    because 'tmp' is an 'unsigned long'.
    
    It is likely that the number of bits of 'tmp' was expected here. So use
    BITS_PER_LONG instead.
    
    It has been spotted by the following coccinelle script:
    @@
    expression ret, x;
    
    @@
    *  ret = \(find_first_bit \| find_first_zero_bit\) (x, sizeof(...));
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Acked-by: Majd Dibbiny <majd@mellanox.com>
    Acked-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9d62d5d2f4130bd7c6986cfde8becb4fa0cf4f7f
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Sep 18 11:37:03 2017 -0700

    KEYS: prevent creating a different user's keyrings
    
    commit 237bbd29f7a049d310d907f4b2716a7feef9abf3 upstream.
    
    It was possible for an unprivileged user to create the user and user
    session keyrings for another user.  For example:
    
        sudo -u '#3000' sh -c 'keyctl add keyring _uid.4000 "" @u
                               keyctl add keyring _uid_ses.4000 "" @u
                               sleep 15' &
        sleep 1
        sudo -u '#4000' keyctl describe @u
        sudo -u '#4000' keyctl describe @us
    
    This is problematic because these "fake" keyrings won't have the right
    permissions.  In particular, the user who created them first will own
    them and will have full access to them via the possessor permissions,
    which can be used to compromise the security of a user's keys:
    
        -4: alswrv-----v------------  3000     0 keyring: _uid.4000
        -5: alswrv-----v------------  3000     0 keyring: _uid_ses.4000
    
    Fix it by marking user and user session keyrings with a flag
    KEY_FLAG_UID_KEYRING.  Then, when searching for a user or user session
    keyring by name, skip all keyrings that don't have the flag set.
    
    Fixes: 69664cf16af4 ("keys: don't generate user and user session keyrings unless they're accessed")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f3281a8f3081c1af537ceee5232d50fe9bbc3b28
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Sep 18 11:36:45 2017 -0700

    KEYS: fix writing past end of user-supplied buffer in keyring_read()
    
    commit e645016abc803dafc75e4b8f6e4118f088900ffb upstream.
    
    Userspace can call keyctl_read() on a keyring to get the list of IDs of
    keys in the keyring.  But if the user-supplied buffer is too small, the
    kernel would write the full list anyway --- which will corrupt whatever
    userspace memory happened to be past the end of the buffer.  Fix it by
    only filling the space that is available.
    
    Fixes: b2a4df200d57 ("KEYS: Expand the capacity of a keyring")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a5ce3b463bb4940a62f674df90aca0ada0f5fd9e
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Sep 18 11:36:31 2017 -0700

    KEYS: fix key refcount leak in keyctl_read_key()
    
    commit 7fc0786d956d9e59b68d282be9b156179846ea3d upstream.
    
    In keyctl_read_key(), if key_permission() were to return an error code
    other than EACCES, we would leak a the reference to the key.  This can't
    actually happen currently because key_permission() can only return an
    error code other than EACCES if security_key_permission() does, only
    SELinux and Smack implement that hook, and neither can return an error
    code other than EACCES.  But it should still be fixed, as it is a bug
    waiting to happen.
    
    Fixes: 29db91906340 ("[PATCH] Keys: Add LSM hooks for key management [try #3]")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f9c831ad44925ca3ccb59ed47e27c4731ad208df
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Sep 18 11:36:12 2017 -0700

    KEYS: fix key refcount leak in keyctl_assume_authority()
    
    commit 884bee0215fcc239b30c062c37ca29077005e064 upstream.
    
    In keyctl_assume_authority(), if keyctl_change_reqkey_auth() were to
    fail, we would leak the reference to the 'authkey'.  Currently this can
    only happen if prepare_creds() fails to allocate memory.  But it still
    should be fixed, as it is a more severe bug waiting to happen.
    
    This patch also moves the read of 'authkey->serial' to before the
    reference to the authkey is dropped.  Doing the read after dropping the
    reference is very fragile because it assumes we still hold another
    reference to the key.  (Which we do, in current->cred->request_key_auth,
    but there's no reason not to write it in the "obviously correct" way.)
    
    Fixes: d84f4f992cbd ("CRED: Inaugurate COW credentials")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d7375942b9d08cc6e52115d7b521bc86974a0ae
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Sep 21 13:57:41 2017 -0700

    KEYS: don't revoke uninstantiated key in request_key_auth_new()
    
    commit f7b48cf08fa63a68b59c2894806ee478216d7f91 upstream.
    
    If key_instantiate_and_link() were to fail (which fortunately isn't
    possible currently), the call to key_revoke(authkey) would crash with a
    NULL pointer dereference in request_key_auth_revoke() because the key
    has not yet been instantiated.
    
    Fix this by removing the call to key_revoke().  key_put() is sufficient,
    as it's not possible for an uninstantiated authkey to have been used for
    anything yet.
    
    Fixes: b5f545c880a2 ("[PATCH] keys: Permit running process to instantiate keys")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eec6386e1f24bfd935ca3944578287bf0bade158
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Sep 21 13:57:40 2017 -0700

    KEYS: fix cred refcount leak in request_key_auth_new()
    
    commit 44d8143340a99b167c74365e844516b73523c087 upstream.
    
    In request_key_auth_new(), if key_alloc() or key_instantiate_and_link()
    were to fail, we would leak a reference to the 'struct cred'.  Currently
    this can only happen if key_alloc() fails to allocate memory.  But it
    still should be fixed, as it is a more severe bug waiting to happen.
    
    Fix it by cleaning things up to use a helper function which frees a
    'struct request_key_auth' correctly.
    
    Fixes: d84f4f992cbd ("CRED: Inaugurate COW credentials")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d93e9ca95b52a8d07431aecf7c1434cec4be5dc4
Author: Stefan Popa <stefan.popa@analog.com>
Date:   Thu Sep 14 16:50:28 2017 +0300

    staging: iio: ad7192: Fix - use the dedicated reset function avoiding dma from stack.
    
    commit f790923f146140a261ad211e5baf75d169f16fb2 upstream.
    
    Depends on: 691c4b95d1 ("iio: ad_sigma_delta: Implement a dedicated reset function")
    
    SPI host drivers can use DMA to transfer data, so the buffer should be properly allocated.
    Keeping it on the stack could cause an undefined behavior.
    
    The dedicated reset function solves this issue.
    
    Signed-off-by: Stefan Popa <stefan.popa@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98f9793995848dc34446abfce0008c1eebe91633
Author: Matt Fornero <matt.fornero@mathworks.com>
Date:   Tue Sep 5 16:34:10 2017 +0200

    iio: core: Return error for failed read_reg
    
    commit 3d62c78a6eb9a7d67bace9622b66ad51e81c5f9b upstream.
    
    If an IIO device returns an error code for a read access via debugfs, it
    is currently ignored by the IIO core (other than emitting an error
    message). Instead, return this error code to user space, so upper layers
    can detect it correctly.
    
    Signed-off-by: Matt Fornero <matt.fornero@mathworks.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 55d491f61c49e4410883284a31386740acab7a35
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:16:13 2017 +0300

    iio: ad7793: Fix the serial interface reset
    
    commit 7ee3b7ebcb74714df6d94c8f500f307e1ee5dda5 upstream.
    
    The serial interface can be reset by writing 32 consecutive 1s to the device.
    'ret' was initialized correctly but its value was overwritten when
    ad7793_check_platform_data() was called. Since a dedicated reset function
    is present now, it should be used instead.
    
    Fixes: 2edb769d246e ("iio:ad7793: Add support for the ad7798 and ad7799")
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8f8629596654db70471a21a76f9b683b9ddcaffa
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:14:45 2017 +0300

    iio: ad_sigma_delta: Implement a dedicated reset function
    
    commit 7fc10de8d49a748c476532c9d8e8fe19e548dd67 upstream.
    
    Since most of the SD ADCs have the option of reseting the serial
    interface by sending a number of SCLKs with CS = 0 and DIN = 1,
    a dedicated function that can do this is usefull.
    
    Needed for the patch:  iio: ad7793: Fix the serial interface reset
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3629ddbfbd5cb9d787c29b0f1bdb5aaeb4c4df80
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Aug 22 15:33:00 2017 +0200

    iio: adc: mcp320x: Fix oops on module unload
    
    commit 0964e40947a630a2a6f724e968246992f97bcf1c upstream.
    
    The driver calls spi_get_drvdata() in its ->remove hook even though it
    has never called spi_set_drvdata().  Stack trace for posterity:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000220
    Internal error: Oops: 5 [#1] SMP ARM
    [<8072f564>] (mutex_lock) from [<7f1400d0>] (iio_device_unregister+0x24/0x7c [industrialio])
    [<7f1400d0>] (iio_device_unregister [industrialio]) from [<7f15e020>] (mcp320x_remove+0x20/0x30 [mcp320x])
    [<7f15e020>] (mcp320x_remove [mcp320x]) from [<8055a8cc>] (spi_drv_remove+0x2c/0x44)
    [<8055a8cc>] (spi_drv_remove) from [<805087bc>] (__device_release_driver+0x98/0x134)
    [<805087bc>] (__device_release_driver) from [<80509180>] (driver_detach+0xdc/0xe0)
    [<80509180>] (driver_detach) from [<8050823c>] (bus_remove_driver+0x5c/0xb0)
    [<8050823c>] (bus_remove_driver) from [<80509ab0>] (driver_unregister+0x38/0x58)
    [<80509ab0>] (driver_unregister) from [<7f15e69c>] (mcp320x_driver_exit+0x14/0x1c [mcp320x])
    [<7f15e69c>] (mcp320x_driver_exit [mcp320x]) from [<801a78d0>] (SyS_delete_module+0x184/0x1d0)
    [<801a78d0>] (SyS_delete_module) from [<80108100>] (ret_fast_syscall+0x0/0x1c)
    
    Fixes: f5ce4a7a9291 ("iio: adc: add driver for MCP3204/08 12-bit ADC")
    Cc: Oskar Andero <oskar.andero@gmail.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b35d1a29b76aa077057a0dd5197c230bd9e4e9f
Author: Steve French <smfrench@gmail.com>
Date:   Fri Sep 22 01:40:27 2017 -0500

    SMB3: Don't ignore O_SYNC/O_DSYNC and O_DIRECT flags
    
    commit 1013e760d10e614dc10b5624ce9fc41563ba2e65 upstream.
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 78a0f965e563a8a98aca9c73e172c6041df3d6db
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Sep 11 17:03:13 2017 +0100

    IB/ocrdma: fix incorrect fall-through on switch statement
    
    commit 06564f60859bdf7e73d70ae35d7e285e96ae9c46 upstream.
    
    In the case where mbox_status is OCRDMA_MBX_STATUS_FAILED and
    add_status is OCRDMA_MBX_STATUS_FAILED err_num is assigned -EAGAIN
    however the case OCRDMA_MBX_STATUS_FAILED is missing a break and
    falls through to the default case which then re-assigns err_num
    to -EFAULT.   Fix this so that err_num is assigned to -EAGAIN
    for the add_status OCRDMA_MBX_STATUS_FAILED case and -EFAULT
    otherwise.
    
    Detected by CoverityScan CID#703125 ("Missing break in switch")
    
    Fixes: fe2caefcdf58 ("RDMA/ocrdma: Add driver for Emulex OneConnect IBoE RDMA adapter")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a8ff7ff1529876e3690015270980fdc5e9967f6e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 13:22:00 2017 -0400

    USB: g_mass_storage: Fix deadlock when driver is unbound
    
    commit 1fbbb78f25d1291274f320462bf6908906f538db upstream.
    
    As a holdover from the old g_file_storage gadget, the g_mass_storage
    legacy gadget driver attempts to unregister itself when its main
    operating thread terminates (if it hasn't been unregistered already).
    This is not strictly necessary; it was never more than an attempt to
    have the gadget fail cleanly if something went wrong and the main
    thread was killed.
    
    However, now that the UDC core manages gadget drivers independently of
    UDC drivers, this scheme doesn't work any more.  A simple test:
    
            modprobe dummy-hcd
            modprobe g-mass-storage file=...
            rmmod dummy-hcd
    
    ends up in a deadlock with the following backtrace:
    
     sysrq: SysRq : Show Blocked State
       task                PC stack   pid father
     file-storage    D    0  1130      2 0x00000000
     Call Trace:
      __schedule+0x53e/0x58c
      schedule+0x6e/0x77
      schedule_preempt_disabled+0xd/0xf
      __mutex_lock.isra.1+0x129/0x224
      ? _raw_spin_unlock_irqrestore+0x12/0x14
      __mutex_lock_slowpath+0x12/0x14
      mutex_lock+0x28/0x2b
      usb_gadget_unregister_driver+0x29/0x9b [udc_core]
      usb_composite_unregister+0x10/0x12 [libcomposite]
      msg_cleanup+0x1d/0x20 [g_mass_storage]
      msg_thread_exits+0xd/0xdd7 [g_mass_storage]
      fsg_main_thread+0x1395/0x13d6 [usb_f_mass_storage]
      ? __schedule+0x573/0x58c
      kthread+0xd9/0xdb
      ? do_set_interface+0x25c/0x25c [usb_f_mass_storage]
      ? init_completion+0x1e/0x1e
      ret_from_fork+0x19/0x24
     rmmod           D    0  1155    683 0x00000000
     Call Trace:
      __schedule+0x53e/0x58c
      schedule+0x6e/0x77
      schedule_timeout+0x26/0xbc
      ? __schedule+0x573/0x58c
      do_wait_for_common+0xb3/0x128
      ? usleep_range+0x81/0x81
      ? wake_up_q+0x3f/0x3f
      wait_for_common+0x2e/0x45
      wait_for_completion+0x17/0x19
      fsg_common_put+0x34/0x81 [usb_f_mass_storage]
      fsg_free_inst+0x13/0x1e [usb_f_mass_storage]
      usb_put_function_instance+0x1a/0x25 [libcomposite]
      msg_unbind+0x2a/0x42 [g_mass_storage]
      __composite_unbind+0x4a/0x6f [libcomposite]
      composite_unbind+0x12/0x14 [libcomposite]
      usb_gadget_remove_driver+0x4f/0x77 [udc_core]
      usb_del_gadget_udc+0x52/0xcc [udc_core]
      dummy_udc_remove+0x27/0x2c [dummy_hcd]
      platform_drv_remove+0x1d/0x31
      device_release_driver_internal+0xe9/0x16d
      device_release_driver+0x11/0x13
      bus_remove_device+0xd2/0xe2
      device_del+0x19f/0x221
      ? selinux_capable+0x22/0x27
      platform_device_del+0x21/0x63
      platform_device_unregister+0x10/0x1a
      cleanup+0x20/0x817 [dummy_hcd]
      SyS_delete_module+0x10c/0x197
      ? ____fput+0xd/0xf
      ? task_work_run+0x55/0x62
      ? prepare_exit_to_usermode+0x65/0x75
      do_fast_syscall_32+0x86/0xc3
      entry_SYSENTER_32+0x4e/0x7c
    
    What happens is that removing the dummy-hcd driver causes the UDC core
    to unbind the gadget driver, which it does while holding the udc_lock
    mutex.  The unbind routine in g_mass_storage tells the main thread to
    exit and waits for it to terminate.
    
    But as mentioned above, when the main thread exits it tries to
    unregister the mass-storage function driver.  Via the composite
    framework this ends up calling usb_gadget_unregister_driver(), which
    tries to acquire the udc_lock mutex.  The result is deadlock.
    
    The simplest way to fix the problem is not to be so clever: The main
    thread doesn't have to unregister the function driver.  The side
    effects won't be so terrible; if the gadget is still attached to a USB
    host when the main thread is killed, it will appear to the host as
    though the gadget's firmware has crashed -- a reasonably accurate
    interpretation, and an all-too-common occurrence for USB mass-storage
    devices.
    
    In fact, the code to unregister the driver when the main thread exits
    is specific to g-mass-storage; it is not used when f-mass-storage is
    included as a function in a larger composite device.  Therefore the
    entire mechanism responsible for this (the fsg_operations structure
    with its ->thread_exits method, the fsg_common_set_ops() routine, and
    the msg_thread_exits() callback routine) can all be eliminated.  Even
    the msg_registered bitflag can be removed, because now the driver is
    unregistered in only one place rather than in two places.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Acked-by: Michal Nazarewicz <mina86@mina86.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Preserve the old way of iterating over LUNs in fsg_main_thread() cleanup
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e266c5ee55517e1b172cc8432d80853f61350bd9
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 13:23:58 2017 -0400

    USB: gadgetfs: Fix crash caused by inadequate synchronization
    
    commit 520b72fc64debf8a86c3853b8e486aa5982188f0 upstream.
    
    The gadgetfs driver (drivers/usb/gadget/legacy/inode.c) was written
    before the UDC and composite frameworks were adopted; it is a legacy
    driver.  As such, it expects that once bound to a UDC controller, it
    will not be unbound until it unregisters itself.
    
    However, the UDC framework does unbind function drivers while they are
    still registered.  When this happens, it can cause the gadgetfs driver
    to misbehave or crash.  For example, userspace can cause a crash by
    opening the device file and doing an ioctl call before setting up a
    configuration (found by Andrey Konovalov using the syzkaller fuzzer).
    
    This patch adds checks and synchronization to prevent these bad
    behaviors.  It adds a udc_usage counter that the driver increments at
    times when it is using a gadget interface without holding the private
    spinlock.  The unbind routine waits for this counter to go to 0 before
    returning, thereby ensuring that the UDC is no longer in use.
    
    The patch also adds a check in the dev_ioctl() routine to make sure
    the driver is bound to a UDC before dereferencing the gadget pointer,
    and it makes destroy_ep_files() synchronize with the endpoint I/O
    routines, to prevent the user from accessing an endpoint data
    structure after it has been removed.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Expand locked section in ep0_write() to match upstream
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2f8ef6bcb74f9b1f245d2fd452c868ba031b7de9
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 16:12:01 2017 -0400

    USB: gadgetfs: fix copy_to_user while holding spinlock
    
    commit 6e76c01e71551cb221c1f3deacb9dcd9a7346784 upstream.
    
    The gadgetfs driver as a long-outstanding FIXME, regarding a call of
    copy_to_user() made while holding a spinlock.  This patch fixes the
    issue by dropping the spinlock and using the dev->udc_usage mechanism
    introduced by another recent patch to guard against status changes
    while the lock isn't held.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a2be85a962b1f444ac3e1df6567dc2cac3d33b1
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 15:59:30 2017 -0400

    usb-storage: unusual_devs entry to fix write-access regression for Seagate external drives
    
    commit 113f6eb6d50cfa5e2a1cdcf1678b12661fa272ab upstream.
    
    Kris Lindgren reports that without the NO_WP_DETECT flag, his Seagate
    external disk drive fails all write accesses.  This regresssion dates
    back approximately to the start of the 4.x kernel releases.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Kris Lindgren <kris.lindgren@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 931bca15ab5bf67891bbc55956033f2a998419de
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 16:02:05 2017 -0400

    usb-storage: fix bogus hardware error messages for ATA pass-thru devices
    
    commit a4fd4a724d6c30ad671046d83be2e9be2f11d275 upstream.
    
    Ever since commit a621bac3044e ("scsi_lib: correctly retry failed zero
    length REQ_TYPE_FS commands"), people have been getting bogus error
    messages for USB disk drives using ATA pass-thru.  For example:
    
    [ 1344.880193] sd 6:0:0:0: [sdb] Attached SCSI disk
    [ 1345.069152] sd 6:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
    [ 1345.069159] sd 6:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor]
    [ 1345.069162] sd 6:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
    [ 1345.069168] sd 6:0:0:0: [sdb] tag#0 CDB: ATA command pass through(16) 85 06 20 00 00 00 00 00 00 00 00 00 00 00 e5 00
    [ 1345.172252] sd 6:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
    [ 1345.172258] sd 6:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor]
    [ 1345.172261] sd 6:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
    [ 1345.172266] sd 6:0:0:0: [sdb] tag#0 CDB: ATA command pass through(12)/Blank a1 06 20 da 00 00 4f c2 00 b0 00 00
    
    These messages can be quite annoying, because programs like udisks2
    provoke them every 10 minutes or so.  Other programs can also have
    this effect, such as those in smartmontools.
    
    I don't fully understand how that commit induced the SCSI core to log
    these error messages, but the underlying cause for them is code added
    to usb-storage by commit f1a0743bc0e7 ("USB: storage: When a device
    returns no sense data, call it a Hardware Error").  At the time it was
    necessary to do this, in order to prevent an infinite retry loop with
    some not-so-great mass storage devices.
    
    However, the ATA pass-thru protocol uses SCSI sense data to return
    command status values, and some devices always report Check Condition
    status for ATA pass-thru commands to ensure that the host retrieves
    the sense data, even if the command succeeded.  This violates the USB
    mass-storage protocol (Check Condition status is supposed to mean the
    command failed), but we can't help that.
    
    This patch attempts to mitigate the problem of these bogus error
    reports by changing usb-storage.  The HARDWARE ERROR sense key will be
    inserted only for commands that aren't ATA pass-thru.
    
    Thanks to Ewan Milne for pointing out that this mechanism was present
    in usb-storage.  8 years after writing it, I had completely forgotten
    its existence.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Kris Lindgren <kris.lindgren@gmail.com>
    Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1351305
    CC: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c6e48871d9da941df7ce17ed0e2fafea00292eab
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Wed Sep 6 16:22:59 2017 -0700

    Input: uinput - avoid crash when sending FF request to device going away
    
    commit 6b4877c7bdc6ae39ce03716df7caeecf204697eb upstream.
    
    If FF request comes in while uinput device is going away,
    uinput_request_send() will fail with -ENODEV, and uinput_request_submit()
    will attempt to mark the slot as unused by calling uinput_request_done().
    Unfortunately in this case we haven't initialized request->done completion
    yet, and we get a crash:
    
    [   39.402036] BUG: spinlock bad magic on CPU#1, fftest/3108
    [   39.402046]  lock: 0xffff88006a93bb00, .magic: 00000000, .owner: /39, .owner_cpu: 1217155072
    [   39.402055] CPU: 1 PID: 3108 Comm: fftest Tainted: G        W 4.13.0+ #15
    [   39.402059] Hardware name: LENOVO 20HQS0EG02/20HQS0EG02, BIOS N1MET37W (1.22 ) 07/04/2017
    [   39.402064]  0000000000000086 f0fad82f3ceaa120 ffff88006a93b9a0 ffffffff9de941bb
    [   39.402077]  ffff88026df8ae00 ffff88006a93bb00 ffff88006a93b9c0 ffffffff9dca62b7
    [   39.402088]  ffff88006a93bb00 ffff88006a93baf8 ffff88006a93b9e0 ffffffff9dca62e7
    [   39.402099] Call Trace:
    [   39.402112]  [<ffffffff9de941bb>] dump_stack+0x4d/0x63
    [   39.402123]  [<ffffffff9dca62b7>] spin_dump+0x97/0x9c
    [   39.402130]  [<ffffffff9dca62e7>] spin_bug+0x2b/0x2d
    [   39.402138]  [<ffffffff9dca6373>] do_raw_spin_lock+0x28/0xfd
    [   39.402147]  [<ffffffff9e3055cd>] _raw_spin_lock_irqsave+0x19/0x1f
    [   39.402154]  [<ffffffff9dca05b7>] complete+0x1d/0x48
    [   39.402162]  [<ffffffffc04f30af>] 0xffffffffc04f30af
    [   39.402167]  [<ffffffffc04f468c>] 0xffffffffc04f468c
    [   39.402177]  [<ffffffff9dd59c16>] ? __slab_free+0x22f/0x359
    [   39.402184]  [<ffffffff9dcc13e9>] ? tk_clock_read+0xc/0xe
    [   39.402189]  [<ffffffffc04f471f>] 0xffffffffc04f471f
    [   39.402195]  [<ffffffff9dc9ffe5>] ? __wake_up+0x44/0x4b
    [   39.402200]  [<ffffffffc04f3240>] ? 0xffffffffc04f3240
    [   39.402207]  [<ffffffff9e0f57f3>] erase_effect+0xa1/0xd2
    [   39.402214]  [<ffffffff9e0f58c6>] input_ff_flush+0x43/0x5c
    [   39.402219]  [<ffffffffc04f32ad>] 0xffffffffc04f32ad
    [   39.402227]  [<ffffffff9e0f174f>] input_flush_device+0x3d/0x51
    [   39.402234]  [<ffffffff9e0f69ae>] evdev_flush+0x49/0x5c
    [   39.402243]  [<ffffffff9dd62d6e>] filp_close+0x3f/0x65
    [   39.402253]  [<ffffffff9dd7dcf7>] put_files_struct+0x66/0xc1
    [   39.402261]  [<ffffffff9dd7ddeb>] exit_files+0x47/0x4e
    [   39.402270]  [<ffffffff9dc6b329>] do_exit+0x483/0x969
    [   39.402278]  [<ffffffff9dc73211>] ? recalc_sigpending_tsk+0x3d/0x44
    [   39.402285]  [<ffffffff9dc6c7a2>] do_group_exit+0x42/0xb0
    [   39.402293]  [<ffffffff9dc767e1>] get_signal+0x58d/0x5bf
    [   39.402300]  [<ffffffff9dc03701>] do_signal+0x37/0x53e
    [   39.402307]  [<ffffffff9e0f8401>] ? evdev_ioctl_handler+0xac8/0xb04
    [   39.402314]  [<ffffffff9e0f8464>] ? evdev_ioctl+0x10/0x12
    [   39.402321]  [<ffffffff9dd74cfa>] ? do_vfs_ioctl+0x42e/0x501
    [   39.402328]  [<ffffffff9dc0170e>] prepare_exit_to_usermode+0x66/0x90
    [   39.402333]  [<ffffffff9dc0181b>] syscall_return_slowpath+0xe3/0xec
    [   39.402339]  [<ffffffff9e305b7b>] int_ret_from_sys_call+0x25/0x8f
    
    While we could solve this by simply initializing the completion earlier, we
    are better off rearranging the code a bit so we avoid calling complete() on
    requests that we did not send out. This patch consolidates marking request
    slots as free in one place (in uinput_request_submit(), the same place
    where we acquire them) and having everyone else simply signal completion
    of the requests.
    
    Fixes: 00ce756ce53a ("Input: uinput - mark failed submission requests as free")
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0c4413414480a84065b566fe0a098fca2ffcf373
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Fri Sep 1 17:13:43 2017 -0700

    Input: uinput - avoid FF flush when destroying device
    
    commit e8b95728f724797f958912fd9b765a695595d3a6 upstream.
    
    Normally, when input device supporting force feedback effects is being
    destroyed, we try to "flush" currently playing effects, so that the
    physical device does not continue vibrating (or executing other effects).
    Unfortunately this does not work well for uinput as flushing of the effects
    deadlocks with the destroy action:
    
    - if device is being destroyed because the file descriptor is being closed,
      then there is noone to even service FF requests;
    
    - if device is being destroyed because userspace sent UI_DEV_DESTROY,
      while theoretically it could be possible to service FF requests,
      userspace is unlikely to do so (they'd need to make sure FF handling
      happens on a separate thread) even if kernel solves the issue with FF
      ioctls deadlocking with UI_DEV_DESTROY ioctl on udev->mutex.
    
    To avoid lockups like the one below, let's install a custom input device
    flush handler, and avoid trying to flush force feedback effects when we
    destroying the device, and instead rely on uinput to shut off the device
    properly.
    
    NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
    ...
     <<EOE>>  [<ffffffff817a0307>] _raw_spin_lock_irqsave+0x37/0x40
     [<ffffffff810e633d>] complete+0x1d/0x50
     [<ffffffffa00ba08c>] uinput_request_done+0x3c/0x40 [uinput]
     [<ffffffffa00ba587>] uinput_request_submit.part.7+0x47/0xb0 [uinput]
     [<ffffffffa00bb62b>] uinput_dev_erase_effect+0x5b/0x76 [uinput]
     [<ffffffff815d91ad>] erase_effect+0xad/0xf0
     [<ffffffff815d929d>] flush_effects+0x4d/0x90
     [<ffffffff815d4cc0>] input_flush_device+0x40/0x60
     [<ffffffff815daf1c>] evdev_cleanup+0xac/0xc0
     [<ffffffff815daf5b>] evdev_disconnect+0x2b/0x60
     [<ffffffff815d74ac>] __input_unregister_device+0xac/0x150
     [<ffffffff815d75f7>] input_unregister_device+0x47/0x70
     [<ffffffffa00bac45>] uinput_destroy_device+0xb5/0xc0 [uinput]
     [<ffffffffa00bb2de>] uinput_ioctl_handler.isra.9+0x65e/0x740 [uinput]
     [<ffffffff811231ab>] ? do_futex+0x12b/0xad0
     [<ffffffffa00bb3f8>] uinput_ioctl+0x18/0x20 [uinput]
     [<ffffffff81241248>] do_vfs_ioctl+0x298/0x480
     [<ffffffff81337553>] ? security_file_ioctl+0x43/0x60
     [<ffffffff812414a9>] SyS_ioctl+0x79/0x90
     [<ffffffff817a04ee>] entry_SYSCALL_64_fastpath+0x12/0x71
    
    Reported-by: Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
    Reported-by: Clément VUCHENER <clement.vuchener@gmail.com>
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=193741
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b792e84aa3736b71c60bf3dd6b4f4f639fcbac79
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Sep 20 15:45:36 2017 +0300

    net_sched: always reset qdisc backlog in qdisc_reset()
    
    commit c8e1812960eeae42e2183154927028511c4bc566 upstream.
    
    SKB stored in qdisc->gso_skb also counted into backlog.
    
    Some qdiscs don't reset backlog to zero in ->reset(),
    for example sfq just dequeue and free all queued skb.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Fixes: 2ccccf5fb43f ("net_sched: update hierarchical backlog too")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0053fe7e715ccda439418c9c568f99799bed30ad
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Wed Sep 20 17:02:52 2017 -0400

    powerpc/pseries: Fix parent_dn reference leak in add_dt_node()
    
    commit b537ca6fede69a281dc524983e5e633d79a10a08 upstream.
    
    A reference to the parent device node is held by add_dt_node() for the
    node to be added. If the call to dlpar_configure_connector() fails
    add_dt_node() returns ENOENT and that reference is not freed.
    
    Add a call to of_node_put(parent_dn) prior to bailing out after a
    failed dlpar_configure_connector() call.
    
    Fixes: 8d5ff320766f ("powerpc/pseries: Make dlpar_configure_connector parent node aware")
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit faab9b63b153c69673a81ded62e475204645e124
Author: Steve French <smfrench@gmail.com>
Date:   Wed Sep 20 19:57:18 2017 -0500

    SMB: Validate negotiate (to protect against downgrade) even if signing off
    
    commit 0603c96f3af50e2f9299fa410c224ab1d465e0f9 upstream.
    
    As long as signing is supported (ie not a guest user connection) and
    connection is SMB3 or SMB3.02, then validate negotiate (protect
    against man in the middle downgrade attacks).  We had been doing this
    only when signing was required, not when signing was just enabled,
    but this more closely matches recommended SMB3 behavior and is
    better security.  Suggested by Metze.
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Jeremy Allison <jra@samba.org>
    Acked-by: Stefan Metzmacher <metze@samba.org>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b00fa0c47b0c0caaa5eab2d7e07b3e6028ce0f0f
Author: Shu Wang <shuwang@redhat.com>
Date:   Fri Sep 8 18:48:33 2017 +0800

    cifs: release auth_key.response for reconnect.
    
    commit f5c4ba816315d3b813af16f5571f86c8d4e897bd upstream.
    
    There is a race that cause cifs reconnect in cifs_mount,
    - cifs_mount
      - cifs_get_tcp_session
        - [ start thread cifs_demultiplex_thread
          - cifs_read_from_socket: -ECONNABORTED
            - DELAY_WORK smb2_reconnect_server ]
      - cifs_setup_session
      - [ smb2_reconnect_server ]
    
    auth_key.response was allocated in cifs_setup_session, and
    will release when the session destoried. So when session re-
    connect, auth_key.response should be check and released.
    
    Tested with my system:
    CIFS VFS: Free previous auth_key.response = ffff8800320bbf80
    
    A simple auth_key.response allocation call trace:
    - cifs_setup_session
    - SMB2_sess_setup
    - SMB2_sess_auth_rawntlmssp_authenticate
    - build_ntlmssp_auth_blob
    - setup_ntlmv2_rsp
    
    Signed-off-by: Shu Wang <shuwang@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c1248997cfaecbe8084736fa1bb40d98ab636b8c
Author: Shu Wang <shuwang@redhat.com>
Date:   Thu Sep 7 16:03:27 2017 +0800

    cifs: release cifs root_cred after exit_cifs
    
    commit 94183331e815617246b1baa97e0916f358c794bb upstream.
    
    memory leak was found by kmemleak. exit_cifs_spnego
    should be called before cifs module removed, or
    cifs root_cred will not be released.
    
    kmemleak report:
    unreferenced object 0xffff880070a3ce40 (size 192):
      backtrace:
         kmemleak_alloc+0x4a/0xa0
         kmem_cache_alloc+0xc7/0x1d0
         prepare_kernel_cred+0x20/0x120
         init_cifs_spnego+0x2d/0x170 [cifs]
         0xffffffffc07801f3
         do_one_initcall+0x51/0x1b0
         do_init_module+0x60/0x1fd
         load_module+0x161e/0x1b60
         SYSC_finit_module+0xa9/0x100
         SyS_finit_module+0xe/0x10
    
    Signed-off-by: Shu Wang <shuwang@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 237ca143d2c8f9518d3d556c54c670e73893303f
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Sep 7 16:14:31 2017 +0200

    usb: gadget: dummy: fix nonsensical comparisons
    
    commit 7661ca09b2ff98f48693f431bb01fed62830e433 upstream.
    
    gcc-8 points out two comparisons that are clearly bogus
    and almost certainly not what the author intended to write:
    
    drivers/usb/gadget/udc/dummy_hcd.c: In function 'set_link_state_by_speed':
    drivers/usb/gadget/udc/dummy_hcd.c:379:31: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
             USB_PORT_STAT_ENABLE) == 1 &&
                                   ^~
    drivers/usb/gadget/udc/dummy_hcd.c:381:25: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
          USB_SS_PORT_LS_U0) == 1 &&
                             ^~
    
    I looked at the code for a bit and came up with a change that makes
    it look like what the author probably meant here. This makes it
    look reasonable to me and to gcc, shutting up the warning.
    
    It does of course change behavior as the two conditions are actually
    evaluated rather than being hardcoded to false, and I have made no
    attempt at verifying that the changed logic makes sense in the context
    of a USB HCD, so that part needs to be reviewed carefully.
    
    Fixes: 1cd8fd2887e1 ("usb: gadget: dummy_hcd: add SuperSpeed support")
    Cc: Tatyana Brokhman <tlinder@codeaurora.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c151a91547ffcf83ae3d2c9209a1bed637eeff6e
Author: LEROY Christophe <christophe.leroy@c-s.fr>
Date:   Tue Sep 12 11:03:39 2017 +0200

    crypto: talitos - Don't provide setkey for non hmac hashing algs.
    
    commit 56136631573baa537a15e0012055ffe8cfec1a33 upstream.
    
    Today, md5sum fails with error -ENOKEY because a setkey
    function is set for non hmac hashing algs, see strace output below:
    
    mmap(NULL, 378880, PROT_READ, MAP_SHARED, 6, 0) = 0x77f50000
    accept(3, 0, NULL)                      = 7
    vmsplice(5, [{"bin/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 378880}], 1, SPLICE_F_MORE|SPLICE_F_GIFT) = 262144
    splice(4, NULL, 7, NULL, 262144, SPLICE_F_MORE) = -1 ENOKEY (Required key not available)
    write(2, "Generation of hash for file kcap"..., 50) = 50
    munmap(0x77f50000, 378880)              = 0
    
    This patch ensures that setkey() function is set only
    for hmac hashing.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df4ebd8a4c47edbffeea06f28420a747e04eedb4
Author: LEROY Christophe <christophe.leroy@c-s.fr>
Date:   Wed Sep 13 12:44:51 2017 +0200

    crypto: talitos - fix sha224
    
    commit afd62fa26343be6445479e75de9f07092a061459 upstream.
    
    Kernel crypto tests report the following error at startup
    
    [    2.752626] alg: hash: Test 4 failed for sha224-talitos
    [    2.757907] 00000000: 30 e2 86 e2 e7 8a dd 0d d7 eb 9f d5 83 fe f1 b0
    00000010: 2d 5a 6c a5 f9 55 ea fd 0e 72 05 22
    
    This patch fixes it
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7589aff42f1c9d5b1afe2678663c3aad2b9af33
Author: Sekhar Nori <nsekhar@ti.com>
Date:   Tue Aug 29 13:52:51 2017 +0530

    ARM: dts: da850-evm: add serial and ethernet aliases
    
    commit ce21574ad1922b403198ee664c4dff276f514f1d upstream.
    
    Add aliases for serial and ethernet nodes. Serial
    aliases help keep order of tty nodes fixed and
    ethernet alias is used by bootloader to setup mac
    address correctly.
    
    Reported-by: Adam Ford <aford173@gmail.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Fixes: dd7deaf218bf ("ARM: davinci: da850: add DT node for ethernet")
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1eb0a0d3109d44b8c8354dddca9e2d7447e6c54f
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Sep 19 11:47:06 2017 +0530

    powerpc/sysrq: Fix oops whem ppmu is not registered
    
    commit 4917fcb58cc73f6b81455e3c5f960144809ddf1a upstream.
    
    Kernel crashes if power pmu is not registered and user tries to dump
    regs with 'echo p > /proc/sysrq-trigger'. Sample log:
    
      Unable to handle kernel paging request for data at address 0x00000008
      Faulting instruction address: 0xc0000000000d52f0
    
      NIP [c0000000000d52f0] perf_event_print_debug+0x10/0x230
      LR [c00000000058a938] sysrq_handle_showregs+0x38/0x50
      Call Trace:
       printk+0x38/0x4c (unreliable)
       __handle_sysrq+0xe4/0x270
       write_sysrq_trigger+0x64/0x80
       proc_reg_write+0x80/0xd0
       __vfs_write+0x40/0x200
       vfs_write+0xc8/0x240
       SyS_write+0x60/0x110
       system_call+0x58/0x6c
    
    Fixes: 5f6d0380c640 ("powerpc/perf: Define perf_event_print_debug() to print PMU register values")
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 72466da8eeb88a2b03e20b471ec2202a8c0b0bb5
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 19 10:05:57 2017 -0700

    tcp: fastopen: fix on syn-data transmit failure
    
    commit b5b7db8d680464b1d631fd016f5e093419f0bfd9 upstream.
    
    Our recent change exposed a bug in TCP Fastopen Client that syzkaller
    found right away [1]
    
    When we prepare skb with SYN+DATA, we attempt to transmit it,
    and we update socket state as if the transmit was a success.
    
    In socket RTX queue we have two skbs, one with the SYN alone,
    and a second one containing the DATA.
    
    When (malicious) ACK comes in, we now complain that second one had no
    skb_mstamp.
    
    The proper fix is to make sure that if the transmit failed, we do not
    pretend we sent the DATA skb, and make it our send_head.
    
    When 3WHS completes, we can now send the DATA right away, without having
    to wait for a timeout.
    
    [1]
    WARNING: CPU: 0 PID: 100189 at net/ipv4/tcp_input.c:3117 tcp_clean_rtx_queue+0x2057/0x2ab0 net/ipv4/tcp_input.c:3117()
    
     WARN_ON_ONCE(last_ackt == 0);
    
    Modules linked in:
    CPU: 0 PID: 100189 Comm: syz-executor1 Not tainted
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
     0000000000000000 ffff8800b35cb1d8 ffffffff81cad00d 0000000000000000
     ffffffff828a4347 ffff88009f86c080 ffffffff8316eb20 0000000000000d7f
     ffff8800b35cb220 ffffffff812c33c2 ffff8800baad2440 00000009d46575c0
    Call Trace:
     [<ffffffff81cad00d>] __dump_stack
     [<ffffffff81cad00d>] dump_stack+0xc1/0x124
     [<ffffffff812c33c2>] warn_slowpath_common+0xe2/0x150
     [<ffffffff812c361e>] warn_slowpath_null+0x2e/0x40
     [<ffffffff828a4347>] tcp_clean_rtx_queue+0x2057/0x2ab0 n
     [<ffffffff828ae6fd>] tcp_ack+0x151d/0x3930
     [<ffffffff828baa09>] tcp_rcv_state_process+0x1c69/0x4fd0
     [<ffffffff828efb7f>] tcp_v4_do_rcv+0x54f/0x7c0
     [<ffffffff8258aacb>] sk_backlog_rcv
     [<ffffffff8258aacb>] __release_sock+0x12b/0x3a0
     [<ffffffff8258ad9e>] release_sock+0x5e/0x1c0
     [<ffffffff8294a785>] inet_wait_for_connect
     [<ffffffff8294a785>] __inet_stream_connect+0x545/0xc50
     [<ffffffff82886f08>] tcp_sendmsg_fastopen
     [<ffffffff82886f08>] tcp_sendmsg+0x2298/0x35a0
     [<ffffffff82952515>] inet_sendmsg+0xe5/0x520
     [<ffffffff8257152f>] sock_sendmsg_nosec
     [<ffffffff8257152f>] sock_sendmsg+0xcf/0x110
    
    Fixes: 8c72c65b426b ("tcp: update skb->skb_mstamp more carefully")
    Fixes: 783237e8daf1 ("net-tcp: Fast Open client - sending SYN-data")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffd5ae08fa7174e237f05547aa4ed8a83477b464
Author: Tahsin Erdogan <tahsin@google.com>
Date:   Sun Sep 17 03:23:48 2017 -0700

    tracing: Fix trace_pipe behavior for instance traces
    
    commit 75df6e688ccd517e339a7c422ef7ad73045b18a2 upstream.
    
    When reading data from trace_pipe, tracing_wait_pipe() performs a
    check to see if tracing has been turned off after some data was read.
    Currently, this check always looks at global trace state, but it
    should be checking the trace instance where trace_pipe is located at.
    
    Because of this bug, cat instances/i1/trace_pipe in the following
    script will immediately exit instead of waiting for data:
    
    cd /sys/kernel/debug/tracing
    echo 0 > tracing_on
    mkdir -p instances/i1
    echo 1 > instances/i1/tracing_on
    echo 1 > instances/i1/events/sched/sched_process_exec/enable
    cat instances/i1/trace_pipe
    
    Link: http://lkml.kernel.org/r/20170917102348.1615-1-tahsin@google.com
    
    Fixes: 10246fa35d4f ("tracing: give easy way to clear trace buffer")
    Signed-off-by: Tahsin Erdogan <tahsin@google.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8d50600f295857bdc7bf24c27e590b3f05c37afd
Author: Bo Yan <byan@nvidia.com>
Date:   Mon Sep 18 10:03:35 2017 -0700

    tracing: Erase irqsoff trace with empty write
    
    commit 8dd33bcb7050dd6f8c1432732f930932c9d3a33e upstream.
    
    One convenient way to erase trace is "echo > trace". However, this
    is currently broken if the current tracer is irqsoff tracer. This
    is because irqsoff tracer use max_buffer as the default trace
    buffer.
    
    Set the max_buffer as the one to be cleared when it's the trace
    buffer currently in use.
    
    Link: http://lkml.kernel.org/r/1505754215-29411-1-git-send-email-byan@nvidia.com
    
    Cc: <mingo@redhat.com>
    Fixes: 4acd4d00f ("tracing: give easy way to clear trace buffer")
    Signed-off-by: Bo Yan <byan@nvidia.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d98636e70426c3f132079227989d386bc3f112e
Author: Andreas Engel <anen-nospam@gmx.net>
Date:   Mon Sep 18 21:11:57 2017 +0200

    USB: serial: cp210x: add support for ELV TFD500
    
    commit c496ad835c31ad639b6865714270b3003df031f6 upstream.
    
    Add the USB device id for the ELV TFD500 data logger.
    
    Signed-off-by: Andreas Engel <anen-nospam@gmx.net>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 625acf16538452abc43a636ff98b62f1076b8e37
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Sep 6 17:47:45 2017 +0200

    gpio: acpi: work around false-positive -Wstring-overflow warning
    
    commit e40a3ae1f794a35c4af3746291ed6fedc1fa0f6f upstream.
    
    gcc-7 notices that the pin_table is an array of 16-bit numbers,
    but fails to take the following range check into account:
    
    drivers/gpio/gpiolib-acpi.c: In function 'acpi_gpiochip_request_interrupt':
    drivers/gpio/gpiolib-acpi.c:206:24: warning: '%02X' directive writing between 2 and 4 bytes into a region of size 3 [-Wformat-overflow=]
       sprintf(ev_name, "_%c%02X",
                            ^~~~
    drivers/gpio/gpiolib-acpi.c:206:20: note: directive argument in the range [0, 65535]
       sprintf(ev_name, "_%c%02X",
                        ^~~~~~~~~
    drivers/gpio/gpiolib-acpi.c:206:3: note: 'sprintf' output between 5 and 7 bytes into a destination of size 5
       sprintf(ev_name, "_%c%02X",
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
        agpio->triggering == ACPI_EDGE_SENSITIVE ? 'E' : 'L',
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        pin);
        ~~~~
    
    As suggested by Andy, this changes the format string to have a fixed length.
    Since modifying the range check did not help, I also opened a bug against
    gcc, see link below.
    
    Fixes: 0d1c28a449c6 ("gpiolib-acpi: Add ACPI5 event model support to gpio.")
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://patchwork.kernel.org/patch/9840801/
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82123
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7bb28761f47f58ad388383bf69048682124bac45
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Mon Sep 18 16:51:51 2017 +0200

    s390/mm: fix write access check in gup_huge_pmd()
    
    commit ba385c0594e723d41790ecfb12c610e6f90c7785 upstream.
    
    The check for the _SEGMENT_ENTRY_PROTECT bit in gup_huge_pmd() is the
    wrong way around. It must not be set for write==1, and not be checked for
    write==0. Fix this similar to how it was fixed for ptes long time ago in
    commit 25591b070336 ("[S390] fix get_user_pages_fast").
    
    One impact of this bug would be unnecessarily using the gup slow path for
    write==0 on r/w mappings. A potentially more severe impact would be that
    gup_huge_pmd() will succeed for write==1 on r/o mappings.
    
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 19d1b47bd177746dfa395cc9f88e8cb070bdc244
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Sep 15 12:00:07 2017 +0800

    ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header
    
    commit 76cc0d3282d4b933fa144fa41fbc5318e0fdca24 upstream.
    
    Now in ip6gre_header before packing the ipv6 header, it skb_push t->hlen
    which only includes encap_hlen + tun_hlen. It means greh and inner header
    would be over written by ipv6 stuff and ipv6h might have no chance to set
    up.
    
    Jianlin found this issue when using remote any on ip6_gre, the packets he
    captured on gre dev are truncated:
    
    22:50:26.210866 Out ethertype IPv6 (0x86dd), length 120: truncated-ip6 -\
    8128 bytes missing!(flowlabel 0x92f40, hlim 0, next-header Options (0)  \
    payload length: 8192) ::1:2000:0 > ::1:0:86dd: HBH [trunc] ip-proto-128 \
    8184
    
    It should also skb_push ipv6hdr so that ipv6h points to the right position
    to set ipv6 stuff up.
    
    This patch is to skb_push hlen + sizeof(*ipv6h) and also fix some indents
    in ip6gre_header.
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 28709fef52fd49f0d45ee4783452d13875ad8d05
Author: Jim Dickerson <jim.dickerson@hpe.com>
Date:   Mon Sep 18 17:39:14 2017 +0300

    usb: pci-quirks.c: Corrected timeout values used in handshake
    
    commit 114ec3a6f9096d211a4aff4277793ba969a62c73 upstream.
    
    Servers were emitting failed handoff messages but were not
    waiting the full 1 second as designated in section 4.22.1 of
    the eXtensible Host Controller Interface specifications. The
    handshake was using wrong units so calls were made with milliseconds
    not microseconds. Comments referenced 5 seconds not 1 second as
    in specs.
    
    The wrong units were also corrected in a second handshake call.
    
    Signed-off-by: Jim Dickerson <jim.dickerson@hpe.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 81b5ee4a76e97cceca8db63c22c7e9469dd9d328
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:13 2017 +0300

    xhci: fix finding correct bus_state structure for USB 3.1 hosts
    
    commit 5a838a13c9b4e5dd188b7a6eaeb894e9358ead0c upstream.
    
    xhci driver keeps a bus_state structure for each hcd (usb2 and usb3)
    
    The structure is picked based on hcd speed, but driver only compared
    for HCD_USB3 speed, returning the wrong bus_state for HCD_USB31 hosts.
    
    This caused null pointer dereference errors in bus_resume function.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a61c34f215cf2265a40084855bc834eb44b2f59
Author: Dmitry Fleytman <dmitry@daynix.com>
Date:   Tue Sep 5 11:40:56 2017 +0300

    usb: Increase quirk delay for USB devices
    
    commit b2a542bbb3081dbd64acc8929c140d196664c406 upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    The workaround is introducing delay for some USB operations.
    
    According to our testing, delay introduced by original commit
    is not long enough and in rare cases we still see issues described
    by the aforementioned commit.
    
    This patch increases delays introduced by original commit.
    Having this patch applied we do not see those problems anymore.
    
    Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a088612bc35033159077fa7bee6f3761d712725
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 14:30:55 2017 +0200

    uwb: properly check kthread_run return value
    
    commit bbf26183b7a6236ba602f4d6a2f7cade35bba043 upstream.
    
    uwbd_start() calls kthread_run() and checks that the return value is
    not NULL. But the return value is not NULL in case kthread_run() fails,
    it takes the form of ERR_PTR(-EINTR).
    
    Use IS_ERR() instead.
    
    Also add a check to uwbd_stop().
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 89529d63ee25fb3b89e907f24255680dd82c7bfe
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 16:52:59 2017 +0200

    uwb: ensure that endpoint is interrupt
    
    commit 70e743e4cec3733dc13559f6184b35d358b9ef3f upstream.
    
    hwarc_neep_init() assumes that endpoint 0 is interrupt, but there's no
    check for that, which results in a WARNING in USB core code, when a bad
    USB descriptor is provided from a device:
    
    usb 1-1: BOGUS urb xfer, pipe 1 != type 3
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 3 at drivers/usb/core/urb.c:449 usb_submit_urb+0xf8a/0x11d0
    Modules linked in:
    CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.13.0+ #111
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    task: ffff88006bdc1a00 task.stack: ffff88006bde8000
    RIP: 0010:usb_submit_urb+0xf8a/0x11d0 drivers/usb/core/urb.c:448
    RSP: 0018:ffff88006bdee3c0 EFLAGS: 00010282
    RAX: 0000000000000029 RBX: ffff8800672a7200 RCX: 0000000000000000
    RDX: 0000000000000029 RSI: ffff88006c815c78 RDI: ffffed000d7bdc6a
    RBP: ffff88006bdee4c0 R08: fffffbfff0fe00ff R09: fffffbfff0fe00ff
    R10: 0000000000000018 R11: fffffbfff0fe00fe R12: 1ffff1000d7bdc7f
    R13: 0000000000000003 R14: 0000000000000001 R15: ffff88006b02cc90
    FS:  0000000000000000(0000) GS:ffff88006c800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe4daddf000 CR3: 000000006add6000 CR4: 00000000000006f0
    Call Trace:
     hwarc_neep_init+0x4ce/0x9c0 drivers/uwb/hwa-rc.c:710
     uwb_rc_add+0x2fb/0x730 drivers/uwb/lc-rc.c:361
     hwarc_probe+0x34e/0x9b0 drivers/uwb/hwa-rc.c:858
     usb_probe_interface+0x351/0x8d0 drivers/usb/core/driver.c:361
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_set_configuration+0x1064/0x1890 drivers/usb/core/message.c:1932
     generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
     usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
     hub_port_connect drivers/usb/core/hub.c:4890
     hub_port_connect_change drivers/usb/core/hub.c:4996
     port_event drivers/usb/core/hub.c:5102
     hub_event+0x23c8/0x37c0 drivers/usb/core/hub.c:5182
     process_one_work+0x9fb/0x1570 kernel/workqueue.c:2097
     worker_thread+0x1e4/0x1350 kernel/workqueue.c:2231
     kthread+0x324/0x3f0 kernel/kthread.c:231
     ret_from_fork+0x25/0x30 arch/x86/entry/entry_64.S:425
    Code: 48 8b 85 30 ff ff ff 48 8d b8 98 00 00 00 e8 8e 93 07 ff 45 89
    e8 44 89 f1 4c 89 fa 48 89 c6 48 c7 c7 a0 e5 55 86 e8 20 08 8f fd <0f>
    ff e9 9b f7 ff ff e8 4a 04 d6 fd e9 80 f7 ff ff e8 60 11 a6
    ---[ end trace 55d741234124cfc3 ]---
    
    Check that endpoint is interrupt.
    
    Found by syzkaller.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0edd22993918847efc109c64ad87ae446c7e208e
Author: Henryk Heisig <hyniu@o2.pl>
Date:   Mon Sep 11 17:57:34 2017 +0200

    USB: serial: option: add support for TP-Link LTE module
    
    commit 837ddc4793a69b256ac5e781a5e729b448a8d983 upstream.
    
    This commit adds support for TP-Link LTE mPCIe module is used
    in in TP-Link MR200v1, MR6400v1 and v2 routers.
    
    Signed-off-by: Henryk Heisig <hyniu@o2.pl>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 613710dac677ee1ed91ea5b599edfaa48e91ec88
Author: Jeffrey Chu <jeffrey.chu@cypress.com>
Date:   Fri Sep 8 21:08:58 2017 +0000

    USB: serial: ftdi_sio: add id for Cypress WICED dev board
    
    commit a6c215e21b0dc5fe9416dce90f9acc2ea53c4502 upstream.
    
    Add CYPRESS_VID vid and CYPRESS_WICED_BT_USB and CYPRESS_WICED_WL_USB
    device IDs to ftdi_sio driver.
    
    Signed-off-by: Jeffrey Chu <jeffrey.chu@cypress.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 626846513376911e9d29ea96d5a4b6aba0a137cd
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Sep 6 11:02:56 2017 +0200

    scsi: lpfc: Don't return internal MBXERR_ERROR code from probe function
    
    commit 5c756065e47dc3e84b00577bd109f0a8e69903d7 upstream.
    
    Internal error codes happen to be positive, thus the PCI driver core
    won't treat them as failure, but we do. This would cause a crash later
    on as lpfc_pci_remove_one() is called (e.g. as shutdown function).
    
    Fixes: 6d368e532168 ("[SCSI] lpfc 8.3.24: Add resource extent support")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Acked-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16: adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4c8de3b2d2264eb8749d84db736466024b27c8f1
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Sun Sep 10 20:29:45 2017 +0300

    spi: uapi: spidev: add missing ioctl header
    
    commit a2b4a79b88b24c49d98d45a06a014ffd22ada1a4 upstream.
    
    The SPI_IOC_MESSAGE() macro references _IOC_SIZEBITS. Add linux/ioctl.h
    to make sure this macro is defined. This fixes the following build
    failure of lcdproc with the musl libc:
    
    In file included from .../sysroot/usr/include/sys/ioctl.h:7:0,
                     from hd44780-spi.c:31:
    hd44780-spi.c: In function 'spi_transfer':
    hd44780-spi.c:89:24: error: '_IOC_SIZEBITS' undeclared (first use in this function)
      status = ioctl(p->fd, SPI_IOC_MESSAGE(1), &xfer);
                            ^
    
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3714f6dbf201739467d09c28fb518ca0ccf0f983
Author: Adrian Salido <salidoa@google.com>
Date:   Fri Sep 8 10:55:27 2017 -0700

    HID: i2c-hid: allocate hid buffers for real worst case
    
    commit 8320caeeffdefec3b58b9d4a7ed8e1079492fe7b upstream.
    
    The buffer allocation is not currently accounting for an extra byte for
    the report id. This can cause an out of bounds access in function
    i2c_hid_set_or_send_report() with reportID > 15.
    
    Signed-off-by: Adrian Salido <salidoa@google.com>
    Reviewed-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15daa442f83017a3c6a20faa94c087dd2e93a100
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Fri Sep 8 10:37:35 2017 +1000

    cifs: check rsp for NULL before dereferencing in SMB2_open
    
    commit bf2afee14e07de16d3cafc67edbfc2a3cc65e4bc upstream.
    
    In SMB2_open there are several paths where the SendReceive2
    call will return an error before it sets rsp_iov.iov_base
    thus leaving iov_base uninitialized.
    
    Thus we need to check rsp before we dereference it in
    the call to get_rfc1002_length().
    
    A report of this issue was previously reported in
    http://www.spinics.net/lists/linux-cifs/msg12846.html
    
    RH-bugzilla : 1476151
    
    Version 2 :
    * Lets properly initialize rsp_iov before we use it.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>.
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reported-by: Xiaoli Feng <xifeng@redhat.com>
    [bwh: Backported to 3.16: zero-initialise iov instead of rsp_iov]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f8064fd26a197cd65f4d4fd631cf3ebab0b5d9f
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Fri Sep 1 17:59:15 2017 +0300

    iwlwifi: mvm: use IWL_HCMD_NOCOPY for MCAST_FILTER_CMD
    
    commit 97bce57bd7f96e1218751996f549a6e61f18cc8c upstream.
    
    The MCAST_FILTER_CMD can get quite large when we have many mcast
    addresses to set (we support up to 255).  So the command should be
    send as NOCOPY to prevent a warning caused by too-long commands:
    
    WARNING: CPU: 0 PID: 9700 at /root/iwlwifi/stack-dev/drivers/net/wireless/iwlwifi/pcie/tx.c:1550 iwl_pcie_enqueue_hcmd+0x8c7/0xb40 [iwlwifi]
    Command MCAST_FILTER_CMD (0x1d0) is too large (328 bytes)
    
    This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196743
    
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf1529ed37a15b432ba6ec428b70d02b58c5c2f7
Author: Ricard Wanderlof <ricard.wanderlof@axis.com>
Date:   Thu Sep 7 15:31:38 2017 +0200

    ASoC: adau17x1: Workaround for noise bug in ADC
    
    commit 1e6f4fc06f6411adf98bbbe7fcd79442cd2b2a75 upstream.
    
    The ADC in the ADAU1361 (and possibly other Analog Devices codecs)
    exhibits a cyclic variation in the noise floor (in our test setup between
    -87 and -93 dB), a new value being attained within this range whenever a
    new capture stream is started. The cycle repeats after about 10 or 11
    restarts.
    
    The workaround recommended by the manufacturer is to toggle the ADOSR bit
    in the Converter Control 0 register each time a new capture stream is
    started.
    
    I have verified that the patch fixes this problem on the ADAU1361, and
    according to the manufacturer toggling the bit in question in this manner
    will at least have no detrimental effect on other chips served by this
    driver.
    
    Signed-off-by: Ricard Wanderlof <ricardw@axis.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e7d02919dd82afdc368ab25140ae11a2f3af6a29
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Jul 22 10:33:02 2017 +0300

    tile: array underflow in setup_maxnodemem()
    
    commit 637f23abca87d26e091e0d6647ec878d97d2c6cd upstream.
    
    My static checker correctly complains that we should have a lower bound
    on "node" to prevent an array underflow.
    
    Fixes: 867e359b97c9 ("arch/tile: core support for Tilera 32-bit chips.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Chris Metcalf <cmetcalf@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>