commit 0b9f4cdd4d75131d8886b919bbf6e0c98906d36e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Tue Feb 13 18:42:38 2018 +0000

    Linux 3.16.54

commit 748165213beda6f96381357327ad461f70c7b881
Author: Lepton Wu <ytht.net@gmail.com>
Date:   Tue Jan 16 15:19:14 2018 +0100

    kaiser: Set _PAGE_NX only if supported
    
    This finally resolve crash if loaded under qemu + haxm. Haitao Shan pointed
    out that the reason of that crash is that NX bit get set for page tables.
    It seems we missed checking if _PAGE_NX is supported in kaiser_add_user_map
    
    Link: https://www.spinics.net/lists/kernel/msg2689835.html
    
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Lepton Wu <ytht.net@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    (backported from Greg K-H's 4.4 stable-queue)
    Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c88582f4d3c3052f03e394c3d1b4af6744ed8d8
Author: Guenter Roeck <groeck@chromium.org>
Date:   Tue Jan 16 15:19:13 2018 +0100

    kaiser: Set _PAGE_NX only if supported
    
    This resolves a crash if loaded under qemu + haxm under windows.
    See https://www.spinics.net/lists/kernel/msg2689835.html for details.
    Here is a boot log (the log is from chromeos-4.4, but Tao Wu says that
    the same log is also seen with vanilla v4.4.110-rc1).
    
    [    0.712750] Freeing unused kernel memory: 552K
    [    0.721821] init: Corrupted page table at address 57b029b332e0
    [    0.722761] PGD 80000000bb238067 PUD bc36a067 PMD bc369067 PTE 45d2067
    [    0.722761] Bad pagetable: 000b [#1] PREEMPT SMP
    [    0.722761] Modules linked in:
    [    0.722761] CPU: 1 PID: 1 Comm: init Not tainted 4.4.96 #31
    [    0.722761] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.7.5.1-0-g8936dbb-20141113_115728-nilsson.home.kraxel.org 04/01/2014
    [    0.722761] task: ffff8800bc290000 ti: ffff8800bc28c000 task.ti: ffff8800bc28c000
    [    0.722761] RIP: 0010:[<ffffffff83f4129e>]  [<ffffffff83f4129e>] __clear_user+0x42/0x67
    [    0.722761] RSP: 0000:ffff8800bc28fcf8  EFLAGS: 00010202
    [    0.722761] RAX: 0000000000000000 RBX: 00000000000001a4 RCX: 00000000000001a4
    [    0.722761] RDX: 0000000000000000 RSI: 0000000000000008 RDI: 000057b029b332e0
    [    0.722761] RBP: ffff8800bc28fd08 R08: ffff8800bc290000 R09: ffff8800bb2f4000
    [    0.722761] R10: ffff8800bc290000 R11: ffff8800bb2f4000 R12: 000057b029b332e0
    [    0.722761] R13: 0000000000000000 R14: 000057b029b33340 R15: ffff8800bb1e2a00
    [    0.722761] FS:  0000000000000000(0000) GS:ffff8800bfb00000(0000) knlGS:0000000000000000
    [    0.722761] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [    0.722761] CR2: 000057b029b332e0 CR3: 00000000bb2f8000 CR4: 00000000000006e0
    [    0.722761] Stack:
    [    0.722761]  000057b029b332e0 ffff8800bb95fa80 ffff8800bc28fd18 ffffffff83f4120c
    [    0.722761]  ffff8800bc28fe18 ffffffff83e9e7a1 ffff8800bc28fd68 0000000000000000
    [    0.722761]  ffff8800bc290000 ffff8800bc290000 ffff8800bc290000 ffff8800bc290000
    [    0.722761] Call Trace:
    [    0.722761]  [<ffffffff83f4120c>] clear_user+0x2e/0x30
    [    0.722761]  [<ffffffff83e9e7a1>] load_elf_binary+0xa7f/0x18f7
    [    0.722761]  [<ffffffff83de2088>] search_binary_handler+0x86/0x19c
    [    0.722761]  [<ffffffff83de389e>] do_execveat_common.isra.26+0x909/0xf98
    [    0.722761]  [<ffffffff844febe0>] ? rest_init+0x87/0x87
    [    0.722761]  [<ffffffff83de40be>] do_execve+0x23/0x25
    [    0.722761]  [<ffffffff83c002e3>] run_init_process+0x2b/0x2d
    [    0.722761]  [<ffffffff844fec4d>] kernel_init+0x6d/0xda
    [    0.722761]  [<ffffffff84505b2f>] ret_from_fork+0x3f/0x70
    [    0.722761]  [<ffffffff844febe0>] ? rest_init+0x87/0x87
    [    0.722761] Code: 86 84 be 12 00 00 00 e8 87 0d e8 ff 66 66 90 48 89 d8 48 c1
    eb 03 4c 89 e7 83 e0 07 48 89 d9 be 08 00 00 00 31 d2 48 85 c9 74 0a <48> 89 17
    48 01 f7 ff c9 75 f6 48 89 c1 85 c9 74 09 88 17 48 ff
    [    0.722761] RIP  [<ffffffff83f4129e>] __clear_user+0x42/0x67
    [    0.722761]  RSP <ffff8800bc28fcf8>
    [    0.722761] ---[ end trace def703879b4ff090 ]---
    [    0.722761] BUG: sleeping function called from invalid context at /mnt/host/source/src/third_party/kernel/v4.4/kernel/locking/rwsem.c:21
    [    0.722761] in_atomic(): 0, irqs_disabled(): 1, pid: 1, name: init
    [    0.722761] CPU: 1 PID: 1 Comm: init Tainted: G      D         4.4.96 #31
    [    0.722761] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5.1-0-g8936dbb-20141113_115728-nilsson.home.kraxel.org 04/01/2014
    [    0.722761]  0000000000000086 dcb5d76098c89836 ffff8800bc28fa30 ffffffff83f34004
    [    0.722761]  ffffffff84839dc2 0000000000000015 ffff8800bc28fa40 ffffffff83d57dc9
    [    0.722761]  ffff8800bc28fa68 ffffffff83d57e6a ffffffff84a53640 0000000000000000
    [    0.722761] Call Trace:
    [    0.722761]  [<ffffffff83f34004>] dump_stack+0x4d/0x63
    [    0.722761]  [<ffffffff83d57dc9>] ___might_sleep+0x13a/0x13c
    [    0.722761]  [<ffffffff83d57e6a>] __might_sleep+0x9f/0xa6
    [    0.722761]  [<ffffffff84502788>] down_read+0x20/0x31
    [    0.722761]  [<ffffffff83cc5d9b>] __blocking_notifier_call_chain+0x35/0x63
    [    0.722761]  [<ffffffff83cc5ddd>] blocking_notifier_call_chain+0x14/0x16
    [    0.800374] usb 1-1: new full-speed USB device number 2 using uhci_hcd
    [    0.722761]  [<ffffffff83cefe97>] profile_task_exit+0x1a/0x1c
    [    0.802309]  [<ffffffff83cac84e>] do_exit+0x39/0xe7f
    [    0.802309]  [<ffffffff83ce5938>] ? vprintk_default+0x1d/0x1f
    [    0.802309]  [<ffffffff83d7bb95>] ? printk+0x57/0x73
    [    0.802309]  [<ffffffff83c46e25>] oops_end+0x80/0x85
    [    0.802309]  [<ffffffff83c7b747>] pgtable_bad+0x8a/0x95
    [    0.802309]  [<ffffffff83ca7f4a>] __do_page_fault+0x8c/0x352
    [    0.802309]  [<ffffffff83eefba5>] ? file_has_perm+0xc4/0xe5
    [    0.802309]  [<ffffffff83ca821c>] do_page_fault+0xc/0xe
    [    0.802309]  [<ffffffff84507682>] page_fault+0x22/0x30
    [    0.802309]  [<ffffffff83f4129e>] ? __clear_user+0x42/0x67
    [    0.802309]  [<ffffffff83f4127f>] ? __clear_user+0x23/0x67
    [    0.802309]  [<ffffffff83f4120c>] clear_user+0x2e/0x30
    [    0.802309]  [<ffffffff83e9e7a1>] load_elf_binary+0xa7f/0x18f7
    [    0.802309]  [<ffffffff83de2088>] search_binary_handler+0x86/0x19c
    [    0.802309]  [<ffffffff83de389e>] do_execveat_common.isra.26+0x909/0xf98
    [    0.802309]  [<ffffffff844febe0>] ? rest_init+0x87/0x87
    [    0.802309]  [<ffffffff83de40be>] do_execve+0x23/0x25
    [    0.802309]  [<ffffffff83c002e3>] run_init_process+0x2b/0x2d
    [    0.802309]  [<ffffffff844fec4d>] kernel_init+0x6d/0xda
    [    0.802309]  [<ffffffff84505b2f>] ret_from_fork+0x3f/0x70
    [    0.802309]  [<ffffffff844febe0>] ? rest_init+0x87/0x87
    [    0.830559] Kernel panic - not syncing: Attempted to kill init!  exitcode=0x00000009
    [    0.830559]
    [    0.831305] Kernel Offset: 0x2c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    [    0.831305] ---[ end Kernel panic - not syncing: Attempted to kill init!  exitcode=0x00000009
    
    The crash part of this problem may be solved with the following patch
    (thanks to Hugh for the hint). There is still another problem, though -
    with this patch applied, the qemu session aborts with "VCPU Shutdown
    request", whatever that means.
    
    Cc: lepton <ytht.net@gmail.com>
    Signed-off-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    (cherry picked from commit b33c3c64c4786cd724ccde6fa97c87ada49f6a73 linux-4.4.y)
    Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e1c86644e072231e67109185a7134bc5b4eb4c99
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Dec 10 19:20:21 2015 -0800

    x86/vdso: Remove pvclock fixmap machinery
    
    commit cc1e24fdb064d3126a494716f22ad4fc39306742 upstream.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/4933029991103ae44672c82b97a20035f5c1fe4f.1449702533.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f74b0dbbfcf37abf719d2695308abf4946c5dc07
Author: Ingo Molnar <mingo@kernel.org>
Date:   Fri Dec 11 09:01:30 2015 +0100

    x86/platform/uv: Include clocksource.h for clocksource_touch_watchdog()
    
    commit d51953b0873358d13b189996e6976dfa12a9b59d upstream.
    
    This build failure triggers on 64-bit allmodconfig:
    
      arch/x86/platform/uv/uv_nmi.c:493:2: error: implicit declaration of function ‘clocksource_touch_watchdog’ [-Werror=implicit-function-declaration]
    
    which is caused by recent changes exposing a missing clocksource.h include
    in uv_nmi.c:
    
      cc1e24fdb064 x86/vdso: Remove pvclock fixmap machinery
    
    this file got clocksource.h indirectly via fixmap.h - that stealth route
    of header inclusion is now gone.
    
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 957a3d249cb16292a199f73b7138d23ee44ca433
Author: Juerg Haefliger <juerg.haefliger@canonical.com>
Date:   Wed Jan 17 17:22:04 2018 +0100

    Revert "x86: kvmclock: Disable use from vDSO if KPTI is enabled"
    
    This reverts commit abe3029e4febfa18e4a9562a792465182b3992a0.
    
    Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9f1cf17b701702325fbdd505325562cb79e6d429
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Dec 10 19:20:20 2015 -0800

    x86/vdso: Get pvclock data from the vvar VMA instead of the fixmap
    
    commit dac16fba6fc590fa7239676b35ed75dae4c4cd2b upstream.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/9d37826fdc7e2d2809efe31d5345f97186859284.1449702533.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 99478423f5dc9ac3eb8525255ca2dfd74af329ef
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Thu Dec 10 19:20:19 2015 -0800

    x86, vdso, pvclock: Simplify and speed up the vdso pvclock reader
    
    commit 6b078f5de7fc0851af4102493c7b5bb07e49c4cb upstream.
    
    The pvclock vdso code was too abstracted to understand easily
    and excessively paranoid.  Simplify it for a huge speedup.
    
    This opens the door for additional simplifications, as the vdso
    no longer accesses the pvti for any vcpu other than vcpu 0.
    
    Before, vclock_gettime using kvm-clock took about 45ns on my
    machine. With this change, it takes 29ns, which is almost as
    fast as the pure TSC implementation.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/6b51dcc41f1b101f963945c5ec7093d72bdac429.1449702533.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16:
     - Open-code rdtsc_ordered()
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4070ed709318608f7beb23d93956fc32d7bf841e
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Apr 23 13:20:18 2015 +0200

    x86: pvclock: Really remove the sched notifier for cross-cpu migrations
    
    commit 73459e2a1ada09a68c02cc5b73f3116fc8194b3d upstream.
    
    This reverts commits 0a4e6be9ca17c54817cf814b4b5aa60478c6df27
    and 80f7fdb1c7f0f9266421f823964fd1962681f6ce.
    
    The task migration notifier was originally introduced in order to support
    the pvclock vsyscall with non-synchronized TSC, but KVM only supports it
    with synchronized TSC.  Hence, on KVM the race condition is only needed
    due to a bad implementation on the host side, and even then it's so rare
    that it's mostly theoretical.
    
    As far as KVM is concerned it's possible to fix the host, avoiding the
    additional complexity in the vDSO and the (re)introduction of the task
    migration notifier.
    
    Xen, on the other hand, hasn't yet implemented vsyscall support at
    all, so we do not care about its plans for non-synchronized TSC.
    
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Suggested-by: Marcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7dd297f6f8c233a9b47cbe36837491e8cde74624
Author: Andy Lutomirski <luto@amacapital.net>
Date:   Thu Jul 10 18:13:15 2014 -0700

    x86, vdso: Move the vvar area before the vdso text
    
    commit e6577a7ce99a506b587bcd1d2cd803cb45119557 upstream.
    
    Putting the vvar area after the vdso text is rather complicated: it
    only works of the total length of the vdso text mapping is known at
    vdso link time, and the linker doesn't allow symbol addresses to
    depend on the sizes of non-allocatable data after the PT_LOAD
    segment.
    
    Moving the vvar area before the vdso text will allow is to safely
    map non-allocatable data after the vdso text, which is a nice
    simplification.
    
    Signed-off-by: Andy Lutomirski <luto@amacapital.net>
    Link: http://lkml.kernel.org/r/156c78c0d93144ff1055a66493783b9e56813983.1405040914.git.luto@amacapital.net
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d3dd21e552ba921a94f6a3498735e264d8351a5
Author: Mauro Carvalho Chehab <m.chehab@samsung.com>
Date:   Sun Jul 27 16:27:27 2014 -0300

    cx231xx: Fix the max number of interfaces
    
    commit 139d28826b8e2bc7a9232fde0d2f14812914f501 upstream.
    
    The max number of interfaces was read from the wrong descriptor.
    
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 49afc374a23c093faabd155e332c927bf0e69af0
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Dec 7 14:16:50 2017 -0700

    usbip: fix stub_send_ret_submit() vulnerability to null transfer_buffer
    
    commit be6123df1ea8f01ee2f896a16c2b7be3e4557a5a upstream.
    
    stub_send_ret_submit() handles urb with a potential null transfer_buffer,
    when it replays a packet with potential malicious data that could contain
    a null buffer. Add a check for the condition when actual_length > 0 and
    transfer_buffer is null.
    
    Reported-by: Secunia Research <vuln@secunia.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.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 789998181fc4fe5d48d1b95d796e8b62df17c1d9
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Dec 7 14:16:49 2017 -0700

    usbip: prevent vhci_hcd driver from leaking a socket pointer address
    
    commit 2f2d0088eb93db5c649d2a5e34a3800a8a935fc5 upstream.
    
    When a client has a USB device attached over IP, the vhci_hcd driver is
    locally leaking a socket pointer address via the
    
    /sys/devices/platform/vhci_hcd/status file (world-readable) and in debug
    output when "usbip --debug port" is run.
    
    Fix it to not leak. The socket pointer address is not used at the moment
    and it was made visible as a convenient way to find IP address from socket
    pointer address by looking up /proc/net/{tcp,tcp6}.
    
    As this opens a security hole, the fix replaces socket pointer address with
    sockfd.
    
    Reported-by: Secunia Research <vuln@secunia.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - usbip port status does not include hub type
     - Adjust filenames, context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 61aa1e63c06961e77b6f63823e05af637c1e3acd
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Dec 7 14:16:48 2017 -0700

    usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input
    
    commit c6688ef9f29762e65bce325ef4acd6c675806366 upstream.
    
    Harden CMD_SUBMIT path to handle malicious input that could trigger
    large memory allocations. Add checks to validate transfer_buffer_length
    and number_of_packets to protect against bad input requesting for
    unbounded memory allocations. Validate early in get_pipe() and return
    failure.
    
    Reported-by: Secunia Research <vuln@secunia.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.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 65060ba29cc54b3d5f76ceacf3c820f2087c35e6
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Thu Dec 7 14:16:47 2017 -0700

    usbip: fix stub_rx: get_pipe() to validate endpoint number
    
    commit 635f545a7e8be7596b9b2b6a43cab6bbd5a88e43 upstream.
    
    get_pipe() routine doesn't validate the input endpoint number
    and uses to reference ep_in and ep_out arrays. Invalid endpoint
    number can trigger BUG(). Range check the epnum and returning
    error instead of calling BUG().
    
    Change caller stub_recv_cmd_submit() to handle the get_pipe()
    error return.
    
    Reported-by: Secunia Research <vuln@secunia.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d848638ac8f13ed35ed1027bfe56d74d2a46beb8
Author: Alexander Popov <alpopov@ptsecurity.com>
Date:   Thu Apr 28 13:07:22 2016 +0300

    usbip: fix NULL pointer dereference on errors
    
    commit 8c7003a3b4b4afd3734cdcc39217ef22d78a4a16 upstream.
    
    Fix NULL pointer dereference and obsolete comments forgotten when
    usbip server was converted from an interface driver to a device driver.
    
    Signed-off-by: Alexander Popov <alpopov@ptsecurity.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02cbce8576a31df8fca54aaec91ee081076bd79d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 9 23:11:03 2018 +0100

    ALSA: seq: Make ioctls race-free
    
    commit b3defb791b26ea0683a93a4f49c77ec45ec96f10 upstream.
    
    The ALSA sequencer ioctls have no protection against racy calls while
    the concurrent operations may lead to interfere with each other.  As
    reported recently, for example, the concurrent calls of setting client
    pool with a combination of write calls may lead to either the
    unkillable dead-lock or UAF.
    
    As a slightly big hammer solution, this patch introduces the mutex to
    make each ioctl exclusive.  Although this may reduce performance via
    parallel ioctl calls, usually it's not demanded for sequencer usages,
    hence it should be negligible.
    
    Reported-by: Luo Quan <a4651386@163.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: ioctl dispatch is done from snd_seq_do_ioctl();
     take the mutex and add ret variable there.]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c8b61a6ecfb90c7fb4f824df2448b923954de170
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Wed Jan 3 21:06:06 2018 +0000

    RDS: null pointer dereference in rds_atomic_free_op
    
    commit 7d11f77f84b27cef452cee332f4e469503084737 upstream.
    
    set rm->atomic.op_active to 0 when rds_pin_pages() fails
    or the user supplied address is invalid,
    this prevents a NULL pointer usage in rds_atomic_free_op()
    
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a64a21f6de4faf41b74800275be0552f55e83699
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Tue Jan 2 19:44:34 2018 +0000

    RDS: Heap OOB write in rds_message_alloc_sgs()
    
    commit c095508770aebf1b9218e77026e48345d719b17c upstream.
    
    When args->nr_local is 0, nr_pages gets also 0 due some size
    calculation via rds_rm_size(), which is later used to allocate
    pages for DMA, this bug produces a heap Out-Of-Bound write access
    to a specific memory region.
    
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf101edbb0ad37a6cd970cb98a9f1ae950b719f1
Author: Ben Seri <ben@armis.com>
Date:   Fri Dec 8 15:14:47 2017 +0100

    Bluetooth: Prevent stack info leak from the EFS element.
    
    commit 06e7e776ca4d36547e503279aeff996cbb292c16 upstream.
    
    In the function l2cap_parse_conf_rsp and in the function
    l2cap_parse_conf_req the following variable is declared without
    initialization:
    
    struct l2cap_conf_efs efs;
    
    In addition, when parsing input configuration parameters in both of
    these functions, the switch case for handling EFS elements may skip the
    memcpy call that will write to the efs variable:
    
    ...
    case L2CAP_CONF_EFS:
    if (olen == sizeof(efs))
    memcpy(&efs, (void *)val, olen);
    ...
    
    The olen in the above if is attacker controlled, and regardless of that
    if, in both of these functions the efs variable would eventually be
    added to the outgoing configuration request that is being built:
    
    l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS, sizeof(efs), (unsigned long) &efs);
    
    So by sending a configuration request, or response, that contains an
    L2CAP_CONF_EFS element, but with an element length that is not
    sizeof(efs) - the memcpy to the uninitialized efs variable can be
    avoided, and the uninitialized variable would be returned to the
    attacker (16 bytes).
    
    This issue has been assigned CVE-2017-1000410
    
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Gustavo Padovan <gustavo@padovan.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d2e769238e6079e1e16c856cc352b0061a111f1d
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Apr 3 10:55:11 2017 -0700

    netfilter: xt_TCPMSS: add more sanity tests on tcph->doff
    
    commit 2638fd0f92d4397884fd991d8f4925cb3f081901 upstream.
    
    Denys provided an awesome KASAN report pointing to an use
    after free in xt_TCPMSS
    
    I have provided three patches to fix this issue, either in xt_TCPMSS or
    in xt_tcpudp.c. It seems xt_TCPMSS patch has the smallest possible
    impact.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Denys Fedoryshchenko <nuclearcat@nuclearcat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 63aa20e4f4760249339c7771bd7e4a01d82a95ad
Author: Viktor Slavkovic <viktors@google.com>
Date:   Mon Jan 8 10:43:03 2018 -0800

    staging: android: ashmem: fix a race condition in ASHMEM_SET_SIZE ioctl
    
    commit 443064cb0b1fb4569fe0a71209da7625129fb760 upstream.
    
    A lock-unlock is missing in ASHMEM_SET_SIZE ioctl which can result in a
    race condition when mmap is called. After the !asma->file check, before
    setting asma->size, asma->file can be set in mmap. That would result in
    having different asma->size than the mapped memory size. Combined with
    ASHMEM_UNPIN ioctl and shrinker invocation, this can result in memory
    corruption.
    
    Signed-off-by: Viktor Slavkovic <viktors@google.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 7a226e18520308821de1a28cf2adf899485281aa
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Nov 24 13:56:30 2017 +0900

    x86/decoder: Add new TEST instruction pattern
    
    commit 12a78d43de767eaf8fb272facb7a7b6f2dc6a9df upstream.
    
    The kbuild test robot reported this build warning:
    
      Warning: arch/x86/tools/test_get_len found difference at <jump_table>:ffffffff8103dd2c
    
      Warning: ffffffff8103dd82: f6 09 d8 testb $0xd8,(%rcx)
      Warning: objdump says 3 bytes, but insn_get_length() says 2
      Warning: decoded and checked 1569014 instructions with 1 warnings
    
    This sequence seems to be a new instruction not in the opcode map in the Intel SDM.
    
    The instruction sequence is "F6 09 d8", means Group3(F6), MOD(00)REG(001)RM(001), and 0xd8.
    Intel SDM vol2 A.4 Table A-6 said the table index in the group is "Encoding of Bits 5,4,3 of
    the ModR/M Byte (bits 2,1,0 in parenthesis)"
    
    In that table, opcodes listed by the index REG bits as:
    
      000         001       010 011  100        101        110         111
     TEST Ib/Iz,(undefined),NOT,NEG,MUL AL/rAX,IMUL AL/rAX,DIV AL/rAX,IDIV AL/rAX
    
    So, it seems TEST Ib is assigned to 001.
    
    Add the new pattern.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    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>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a1436bc91ce84e57f0bb7ed44c980398edaa874
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Thu Nov 23 20:07:00 2017 +0530

    ALSA: hda: Add Raven PCI ID
    
    commit 9ceace3c9c18c67676e75141032a65a8e01f9a7a upstream.
    
    This commit adds PCI ID for Raven platform
    
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 492af143eea363f2738ac17663fc16adb147d128
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:49 2017 -0600

    i40evf: Use smp_rmb rather than read_barrier_depends
    
    commit f72271e2a0ae4277d53c4053f5eed8bb346ba38a upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with i40evf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4bad0df1f1500ebe910e8782324b5f9893e952af
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:47 2017 -0600

    igb: Use smp_rmb rather than read_barrier_depends
    
    commit c4cb99185b4cc96c0a1c70104dc21ae14d7e7f28 upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with igb as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 017db2ebba7a38fdd13e464746a2b3a28ce129a3
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:46 2017 -0600

    igbvf: Use smp_rmb rather than read_barrier_depends
    
    commit 1e1f9ca546556e508d021545861f6b5fc75a95fe upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with igbvf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9100d3e8c198e8adc76a5a5e402166111db58773
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:45 2017 -0600

    ixgbevf: Use smp_rmb rather than read_barrier_depends
    
    commit ae0c585d93dfaf923d2c7eb44b2c3ab92854ea9b upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with ixgbevf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c07484c7069d927c9960a03bb0fe67f17006ac2f
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:44 2017 -0600

    i40e: Use smp_rmb rather than read_barrier_depends
    
    commit 52c6912fde0133981ee50ba08808f257829c4c93 upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with i40e as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fc176a999aa16744414153c8bcc9239613bbf512
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:43 2017 -0600

    ixgbe: Fix skb list corruption on Power systems
    
    commit 0a9a17e3bb4564caf4bfe2a6783ae1287667d188 upstream.
    
    This patch fixes an issue seen on Power systems with ixgbe which results
    in skb list corruption and an eventual kernel oops. The following is what
    was observed:
    
    CPU 1                                   CPU2
    ============================            ============================
    1: ixgbe_xmit_frame_ring                ixgbe_clean_tx_irq
    2:  first->skb = skb                     eop_desc = tx_buffer->next_to_watch
    3:  ixgbe_tx_map                         read_barrier_depends()
    4:   wmb                                 check adapter written status bit
    5:   first->next_to_watch = tx_desc      napi_consume_skb(tx_buffer->skb ..);
    6:   writel(i, tx_ring->tail);
    
    The read_barrier_depends is insufficient to ensure that tx_buffer->skb does not
    get loaded prior to tx_buffer->next_to_watch, which then results in loading
    a stale skb pointer. This patch replaces the read_barrier_depends with
    smp_rmb to ensure loads are ordered with respect to the load of
    tx_buffer->next_to_watch.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d61a7c596d1ce69d7c34af6474abaf9b6c8f561
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 17:28:06 2017 +0100

    ALSA: usb-audio: Add sanity checks in v2 clock parsers
    
    commit 0a62d6c966956d77397c32836a5bbfe3af786fc1 upstream.
    
    The helper functions to parse and look for the clock source, selector
    and multiplier unit may return the descriptor with a too short length
    than required, while there is no sanity check in the caller side.
    Add some sanity checks in the parsers, at least, to guarantee the
    given descriptor size, for avoiding the potential crashes.
    
    Fixes: 79f920fbff56 ("ALSA: usb-audio: parse clock topology of UAC2 devices")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1ab62280ff7827969ab1188639d8497ac5db7c67
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 17:00:32 2017 +0100

    ALSA: usb-audio: Fix potential out-of-bound access at parsing SU
    
    commit f658f17b5e0e339935dca23e77e0f3cad591926b upstream.
    
    The usb-audio driver may trigger an out-of-bound access at parsing a
    malformed selector unit, as it checks the header length only after
    evaluating bNrInPins field, which can be already above the given
    length.  Fix it by adding the length check beforehand.
    
    Fixes: 99fc86450c43 ("ALSA: usb-mixer: parse descriptors with structs")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9aeaf942b751cfd9f980caf1e7401ba99b3aa960
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 16:55:51 2017 +0100

    ALSA: usb-audio: Add sanity checks to FE parser
    
    commit d937cd6790a2bef2d07b500487646bd794c039bb upstream.
    
    When the usb-audio descriptor contains the malformed feature unit
    description with a too short length, the driver may access
    out-of-bounds.  Add a sanity check of the header size at the beginning
    of parse_audio_feature_unit().
    
    Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0fcc050bb0d2779684acae316d725ff8568b41a9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 16:36:11 2017 +0100

    ALSA: timer: Remove kernel warning at compat ioctl error paths
    
    commit 3d4e8303f2c747c8540a0a0126d0151514f6468b upstream.
    
    Some timer compat ioctls have NULL checks of timer instance with
    snd_BUG_ON() that bring up WARN_ON() when the debug option is set.
    Actually the condition can be met in the normal situation and it's
    confusing and bad to spew kernel warnings with stack trace there.
    Let's remove snd_BUG_ON() invocation and replace with the simple
    checks.  Also, correct the error code to EBADFD to follow the native
    ioctl error handling.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8ec27245b775b6b116eb1f867cbe4a5521bd049b
Author: Philip Derrin <philip@cog.systems>
Date:   Tue Nov 14 00:55:26 2017 +0100

    ARM: 8721/1: mm: dump: check hardware RO bit for LPAE
    
    commit 3b0c0c922ff4be275a8beb87ce5657d16f355b54 upstream.
    
    When CONFIG_ARM_LPAE is set, the PMD dump relies on the software
    read-only bit to determine whether a page is writable. This
    concealed a bug which left the kernel text section writable
    (AP2=0) while marked read-only in the software bit.
    
    In a kernel with the AP2 bug, the dump looks like this:
    
        ---[ Kernel Mapping ]---
        0xc0000000-0xc0200000           2M RW NX SHD
        0xc0200000-0xc0600000           4M ro x  SHD
        0xc0600000-0xc0800000           2M ro NX SHD
        0xc0800000-0xc4800000          64M RW NX SHD
    
    The fix is to check that the software and hardware bits are both
    set before displaying "ro". The dump then shows the true perms:
    
        ---[ Kernel Mapping ]---
        0xc0000000-0xc0200000           2M RW NX SHD
        0xc0200000-0xc0600000           4M RW x  SHD
        0xc0600000-0xc0800000           2M RW NX SHD
        0xc0800000-0xc4800000          64M RW NX SHD
    
    Fixes: ded947798469 ("ARM: 8109/1: mm: Modify pte_write and pmd_write logic for LPAE")
    Signed-off-by: Philip Derrin <philip@cog.systems>
    Tested-by: Neil Dick <neil@cog.systems>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bed0c40af699306c41cfe9e73c43e7c36ae63be
Author: John Johansen <john.johansen@canonical.com>
Date:   Fri Nov 17 17:42:42 2017 -0800

    apparmor: ensure that undecidable profile attachments fail
    
    commit 844b8292b6311ecd30ae63db1471edb26e01d895 upstream.
    
    Profiles that have an undecidable overlap in their attachments are
    being incorrectly handled. Instead of failing to attach the first one
    encountered is being used.
    
    eg.
      profile A /** { .. }
      profile B /*foo { .. }
    
    have an unresolvable longest left attachment, they both have an exact
    match on / and then have an overlapping expression that has no clear
    winner.
    
    Currently the winner will be the profile that is loaded first which
    can result in non-deterministic behavior. Instead in this situation
    the exec should fail.
    
    Fixes: 898127c34ec0 ("AppArmor: functions for domain transitions")
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    [bwh: Backported to 3.16:
     - Add 'info' parameter to x_to_profile(), done upstream in commit
       93c98a484c49 "apparmor: move exec domain mediation to using labels"
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 56a927d593e0b7562972253c5303fec8ce4f2d5e
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Oct 17 21:56:01 2017 +0200

    nl80211: don't expose wdev->ssid for most interfaces
    
    commit 44905265bc155e0237c76c25bf5ddf740d85a8f2 upstream.
    
    For mesh, this is simply wrong - there's no SSID, only the
    mesh ID, so don't expose it at all.
    For (P2P) client, it's wrong, because it exposes an internal
    value that's only used when certain APIs are used.
    For AP, it's actually the only correct case, so leave that.
    All other interface types shouldn't be setting this anyway,
    so there it won't change anything.
    
    Fixes: b84e7a05f619 ("nl80211: send the NL80211_ATTR_SSID in nl80211_send_iface()")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a5cdb35c21b19bcc22b43c5140604c182ae533a4
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Nov 17 14:27:18 2017 +0800

    route: also update fnhe_genid when updating a route cache
    
    commit cebe84c6190d741045a322f5343f717139993c08 upstream.
    
    Now when ip route flush cache and it turn out all fnhe_genid != genid.
    If a redirect/pmtu icmp packet comes and the old fnhe is found and all
    it's members but fnhe_genid will be updated.
    
    Then next time when it looks up route and tries to rebind this fnhe to
    the new dst, the fnhe will be flushed due to fnhe_genid != genid. It
    causes this redirect/pmtu icmp packet acutally not to be applied.
    
    This patch is to also reset fnhe_genid when updating a route cache.
    
    Fixes: 5aad1de5ea2c ("ipv4: use separate genid for next hop exceptions")
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    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 8741483f17570f513c5c46abb5e5fd777cd3aa50
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Nov 17 14:27:06 2017 +0800

    route: update fnhe_expires for redirect when the fnhe exists
    
    commit e39d5246111399dbc6e11cd39fd8580191b86c47 upstream.
    
    Now when creating fnhe for redirect, it sets fnhe_expires for this
    new route cache. But when updating the exist one, it doesn't do it.
    It will cause this fnhe never to be expired.
    
    Paolo already noticed it before, in Jianlin's test case, it became
    even worse:
    
    When ip route flush cache, the old fnhe is not to be removed, but
    only clean it's members. When redirect comes again, this fnhe will
    be found and updated, but never be expired due to fnhe_expires not
    being set.
    
    So fix it by simply updating fnhe_expires even it's for redirect.
    
    Fixes: aee06da6726d ("ipv4: use seqlock for nh_exceptions")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    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 d1c9c979215a366b2af14521d44737812d8d9a67
Author: Andreas Rohner <andreas.rohner@gmx.net>
Date:   Fri Nov 17 15:29:35 2017 -0800

    nilfs2: fix race condition that causes file system corruption
    
    commit 31ccb1f7ba3cfe29631587d451cf5bb8ab593550 upstream.
    
    There is a race condition between nilfs_dirty_inode() and
    nilfs_set_file_dirty().
    
    When a file is opened, nilfs_dirty_inode() is called to update the
    access timestamp in the inode.  It calls __nilfs_mark_inode_dirty() in a
    separate transaction.  __nilfs_mark_inode_dirty() caches the ifile
    buffer_head in the i_bh field of the inode info structure and marks it
    as dirty.
    
    After some data was written to the file in another transaction, the
    function nilfs_set_file_dirty() is called, which adds the inode to the
    ns_dirty_files list.
    
    Then the segment construction calls nilfs_segctor_collect_dirty_files(),
    which goes through the ns_dirty_files list and checks the i_bh field.
    If there is a cached buffer_head in i_bh it is not marked as dirty
    again.
    
    Since nilfs_dirty_inode() and nilfs_set_file_dirty() use separate
    transactions, it is possible that a segment construction that writes out
    the ifile occurs in-between the two.  If this happens the inode is not
    on the ns_dirty_files list, but its ifile block is still marked as dirty
    and written out.
    
    In the next segment construction, the data for the file is written out
    and nilfs_bmap_propagate() updates the b-tree.  Eventually the bmap root
    is written into the i_bh block, which is not dirty, because it was
    written out in another segment construction.
    
    As a result the bmap update can be lost, which leads to file system
    corruption.  Either the virtual block address points to an unallocated
    DAT block, or the DAT entry will be reused for something different.
    
    The error can remain undetected for a long time.  A typical error
    message would be one of the "bad btree" errors or a warning that a DAT
    entry could not be found.
    
    This bug can be reproduced reliably by a simple benchmark that creates
    and overwrites millions of 4k files.
    
    Link: http://lkml.kernel.org/r/1509367935-3086-2-git-send-email-konishi.ryusuke@lab.ntt.co.jp
    Signed-off-by: Andreas Rohner <andreas.rohner@gmx.net>
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Tested-by: Andreas Rohner <andreas.rohner@gmx.net>
    Tested-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.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 0de2c797c84c176f0b9c6fd69a33e4a0e43a6018
Author: NeilBrown <neilb@suse.com>
Date:   Thu Dec 14 15:32:38 2017 -0800

    autofs: fix careless error in recent commit
    
    commit 302ec300ef8a545a7fc7f667e5fd743b091c2eeb upstream.
    
    Commit ecc0c469f277 ("autofs: don't fail mount for transient error") was
    meant to replace an 'if' with a 'switch', but instead added the 'switch'
    leaving the case in place.
    
    Link: http://lkml.kernel.org/r/87zi6wstmw.fsf@notabene.neil.brown.name
    Fixes: ecc0c469f277 ("autofs: don't fail mount for transient error")
    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Cc: Ian Kent <raven@themaw.net>
    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 76e2147ff7783177bbe1a2d4dc7995a4d53119b3
Author: NeilBrown <neilb@suse.com>
Date:   Fri Nov 17 15:29:13 2017 -0800

    autofs: don't fail mount for transient error
    
    commit ecc0c469f27765ed1e2b967be0aa17cee1a60b76 upstream.
    
    Currently if the autofs kernel module gets an error when writing to the
    pipe which links to the daemon, then it marks the whole moutpoint as
    catatonic, and it will stop working.
    
    It is possible that the error is transient.  This can happen if the
    daemon is slow and more than 16 requests queue up.  If a subsequent
    process tries to queue a request, and is then signalled, the write to
    the pipe will return -ERESTARTSYS and autofs will take that as total
    failure.
    
    So change the code to assess -ERESTARTSYS and -ENOMEM as transient
    failures which only abort the current request, not the whole mountpoint.
    
    It isn't a crash or a data corruption, but having autofs mountpoints
    suddenly stop working is rather inconvenient.
    
    Ian said:
    
    : And given the problems with a half dozen (or so) user space applications
    : consuming large amounts of CPU under heavy mount and umount activity this
    : could happen more easily than we expect.
    
    Link: http://lkml.kernel.org/r/87y3norvgp.fsf@notabene.neil.brown.name
    Signed-off-by: NeilBrown <neilb@suse.com>
    Acked-by: Ian Kent <raven@themaw.net>
    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 75c2b0e88e9829235fbe658279ebc23c601b486e
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Nov 17 15:28:04 2017 -0800

    lib/int_sqrt: optimize small argument
    
    commit 3f3295709edea6268ff1609855f498035286af73 upstream.
    
    The current int_sqrt() computation is sub-optimal for the case of small
    @x.  Which is the interesting case when we're going to do cumulative
    distribution functions on idle times, which we assume to be a random
    variable, where the target residency of the deepest idle state gives an
    upper bound on the variable (5e6ns on recent Intel chips).
    
    In the case of small @x, the compute loop:
    
            while (m != 0) {
                    b = y + m;
                    y >>= 1;
    
                    if (x >= b) {
                            x -= b;
                            y += m;
                    }
                    m >>= 2;
            }
    
    can be reduced to:
    
            while (m > x)
                    m >>= 2;
    
    Because y==0, b==m and until x>=m y will remain 0.
    
    And while this is computationally equivalent, it runs much faster
    because there's less code, in particular less branches.
    
          cycles:                 branches:              branch-misses:
    
    OLD:
    
    hot:   45.109444 +- 0.044117  44.333392 +- 0.002254  0.018723 +- 0.000593
    cold: 187.737379 +- 0.156678  44.333407 +- 0.002254  6.272844 +- 0.004305
    
    PRE:
    
    hot:   67.937492 +- 0.064124  66.999535 +- 0.000488  0.066720 +- 0.001113
    cold: 232.004379 +- 0.332811  66.999527 +- 0.000488  6.914634 +- 0.006568
    
    POST:
    
    hot:   43.633557 +- 0.034373  45.333132 +- 0.002277  0.023529 +- 0.000681
    cold: 207.438411 +- 0.125840  45.333132 +- 0.002277  6.976486 +- 0.004219
    
    Averages computed over all values <128k using a LFSR to generate order.
    Cold numbers have a LFSR based branch trace buffer 'confuser' ran between
    each int_sqrt() invocation.
    
    Link: http://lkml.kernel.org/r/20171020164644.876503355@infradead.org
    Fixes: 30493cc9dddb ("lib/int_sqrt.c: optimize square root algorithm")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Suggested-by: Anshul Garg <aksgarg1989@gmail.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Michael Davidson <md@google.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 88c6656c94e1a38edc01dd6ed59136250b2d83b5
Author: Joshua Watt <jpewhacker@gmail.com>
Date:   Tue Nov 7 16:25:47 2017 -0600

    NFS: Fix typo in nomigration mount option
    
    commit f02fee227e5f21981152850744a6084ff3fa94ee upstream.
    
    The option was incorrectly masking off all other options.
    
    Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88a3802b8dacc8e5bf02a55c01e4cd8044438f67
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sun Nov 5 15:45:22 2017 -0500

    nfs: Fix ugly referral attributes
    
    commit c05cefcc72416a37eba5a2b35f0704ed758a9145 upstream.
    
    Before traversing a referral and performing a mount, the mounted-on
    directory looks strange:
    
    dr-xr-xr-x. 2 4294967294 4294967294 0 Dec 31  1969 dir.0
    
    nfs4_get_referral is wiping out any cached attributes with what was
    returned via GETATTR(fs_locations), but the bit mask for that
    operation does not request any file attributes.
    
    Retrieve owner and timestamp information so that the memcpy in
    nfs4_get_referral fills in more attributes.
    
    Changes since v1:
    - Don't request attributes that the client unconditionally replaces
    - Request only MOUNTED_ON_FILEID or FILEID attribute, not both
    - encode_fs_locations() doesn't use the third bitmask word
    
    Fixes: 6b97fd3da1ea ("NFSv4: Follow a referral")
    Suggested-by: Pradeep Thomas <pradeepthomas@gmail.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 224cf907e79fdbf852022c665ba7cdcd074fa12f
Author: Anna Schumaker <Anna.Schumaker@Netapp.com>
Date:   Wed Nov 1 15:48:43 2017 -0400

    NFS: Avoid RCU usage in tracepoints
    
    commit 3944369db701f075092357b511fd9f5755771585 upstream.
    
    There isn't an obvious way to acquire and release the RCU lock during a
    tracepoint, so we can't use the rpc_peeraddr2str() function here.
    Instead, rely on the client's cl_hostname, which should have similar
    enough information without needing an rcu_dereference().
    
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    [bwh: Backported to 3.16: Drop changes in
     nfs4_inode{,_stateid}_callback_event()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6d6bb1075f86f7344ee2632239aed78ee57502d8
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sat Nov 11 17:11:16 2017 -0500

    parisc: Fix validity check of pointer size argument in new CAS implementation
    
    commit 05f016d2ca7a4fab99d5d5472168506ddf95e74f upstream.
    
    As noted by Christoph Biedl, passing a pointer size of 4 in the new CAS
    implementation causes a kernel crash.  The attached patch corrects the
    off by one error in the argument validity check.
    
    In reviewing the code, I noticed that we only perform word operations
    with the pointer size argument.  The subi instruction intentionally uses
    a word condition on 64-bit kernels.  Nullification was used instead of a
    cmpib instruction as the branch should never be taken.  The shlw
    pseudo-operation generates a depw,z instruction and it clears the target
    before doing a shift left word deposit.  Thus, we don't need to clip the
    upper 32 bits of this argument on 64-bit kernels.
    
    Tested with a gcc testsuite run with a 64-bit kernel.  The gcc atomic
    code in libgcc is the only direct user of the new CAS implementation
    that I am aware of.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 40a2cffb858ffbb62e46dc674acfafe0bc00e30e
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Oct 26 09:13:27 2017 +0200

    KVM: SVM: obey guest PAT
    
    commit 15038e14724799b8c205beb5f20f9e54896013c3 upstream.
    
    For many years some users of assigned devices have reported worse
    performance on AMD processors with NPT than on AMD without NPT,
    Intel or bare metal.
    
    The reason turned out to be that SVM is discarding the guest PAT
    setting and uses the default (PA0=PA4=WB, PA1=PA5=WT, PA2=PA6=UC-,
    PA3=UC).  The guest might be using a different setting, and
    especially might want write combining but isn't getting it
    (instead getting slow UC or UC- accesses).
    
    Thanks a lot to geoff@hostfission.com for noticing the relation
    to the g_pat setting.  The patch has been tested also by a bunch
    of people on VFIO users forums.
    
    Fixes: 709ddebf81cb40e3c36c6109a7892e8b93a09464
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196409
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Tested-by: Nick Sarnie <commendsarnex@gmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52dc6a5d1b9986da6e998ebafce1d7c1f9482857
Author: Nadav Amit <namit@cs.technion.ac.il>
Date:   Thu Sep 18 22:39:44 2014 +0300

    KVM: vmx: Inject #GP on invalid PAT CR
    
    commit 4566654bb9be9e8864df417bb72ceee5136b6a6a upstream.
    
    Guest which sets the PAT CR to invalid value should get a #GP.  Currently, if
    vmx supports loading PAT CR during entry, then the value is not checked.  This
    patch makes the required check in that case.
    
    Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4e83a3da3f02707a86722ee16b616b4cbc8f4f31
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Nov 15 16:38:09 2017 -0800

    dm bufio: fix integer overflow when limiting maximum cache size
    
    commit 74d4108d9e681dbbe4a2940ed8fdff1f6868184c upstream.
    
    The default max_cache_size_bytes for dm-bufio is meant to be the lesser
    of 25% of the size of the vmalloc area and 2% of the size of lowmem.
    However, on 32-bit systems the intermediate result in the expression
    
        (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100
    
    overflows, causing the wrong result to be computed.  For example, on a
    32-bit system where the vmalloc area is 520093696 bytes, the result is
    1174405 rather than the expected 130023424, which makes the maximum
    cache size much too small (far less than 2% of lowmem).  This causes
    severe performance problems for dm-verity users on affected systems.
    
    Fix this by using mult_frac() to correctly multiply by a percentage.  Do
    this for all places in dm-bufio that multiply by a percentage.  Also
    replace (VMALLOC_END - VMALLOC_START) with VMALLOC_TOTAL, which contrary
    to the comment is now defined in include/linux/vmalloc.h.
    
    Depends-on: 9993bc635 ("sched/x86: Fix overflow in cyc2ns_offset")
    Fixes: 95d402f057f2 ("dm: add bufio")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2aef8ebc45835e81f246acb1da93146b53d34d93
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Tue Nov 14 15:40:52 2017 -0500

    dm: discard support requires all targets in a table support discards
    
    commit 8a74d29d541cd86569139c6f3f44b2d210458071 upstream.
    
    A DM device with a mix of discard capabilities (due to some underlying
    devices not having discard support) _should_ just return -EOPNOTSUPP for
    the region of the device that doesn't support discards (even if only by
    way of the underlying driver formally not supporting discards).  BUT,
    that does ask the underlying driver to handle something that it never
    advertised support for.  In doing so we're exposing users to the
    potential for a underlying disk driver hanging if/when a discard is
    issued a the device that is incapable and never claimed to support
    discards.
    
    Fix this by requiring that each DM target in a DM table provide discard
    support as a prereq for a DM device to advertise support for discards.
    
    This may cause some configurations that were happily supporting discards
    (even in the face of a mix of discard support) to stop supporting
    discards -- but the risk of users hitting driver hangs, and forced
    reboots, outweighs supporting those fringe mixed discard
    configurations.
    
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0cf96c8faa883d0f91c468c23fd98b936b4f2631
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Nov 15 22:17:48 2017 -0600

    net/sctp: Always set scope_id in sctp_inet6_skb_msgname
    
    commit 7c8a61d9ee1df0fb4747879fa67a99614eb62fec upstream.
    
    Alexandar Potapenko while testing the kernel with KMSAN and syzkaller
    discovered that in some configurations sctp would leak 4 bytes of
    kernel stack.
    
    Working with his reproducer I discovered that those 4 bytes that
    are leaked is the scope id of an ipv6 address returned by recvmsg.
    
    With a little code inspection and a shrewd guess I discovered that
    sctp_inet6_skb_msgname only initializes the scope_id field for link
    local ipv6 addresses to the interface index the link local address
    pertains to instead of initializing the scope_id field for all ipv6
    addresses.
    
    That is almost reasonable as scope_id's are meaniningful only for link
    local addresses.  Set the scope_id in all other cases to 0 which is
    not a valid interface index to make it clear there is nothing useful
    in the scope_id field.
    
    There should be no danger of breaking userspace as the stack leak
    guaranteed that previously meaningless random data was being returned.
    
    Fixes: 372f525b495c ("SCTP:  Resync with LKSCTP tree.")
    History-tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Adjust context
     - Add braces]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b00eec7d622d8e0934aab207235d79c7b42dbaeb
Author: Alexander Potapenko <glider@google.com>
Date:   Wed Aug 16 20:16:40 2017 +0200

    sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
    
    commit 15339e441ec46fbc3bf3486bb1ae4845b0f1bb8d upstream.
    
    KMSAN reported use of uninitialized sctp_addr->v4.sin_addr.s_addr and
    sctp_addr->v6.sin6_scope_id in sctp_v6_cmp_addr() (see below).
    Make sure all fields of an IPv6 address are initialized, which
    guarantees that the IPv4 fields are also initialized.
    
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15828f7bce82fc15a3a24146db47b034aec5a686
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Wed Jul 30 12:40:53 2014 -0600

    sctp: Fixup v4mapped behaviour to comply with Sock API
    
    commit 299ee123e19889d511092347f5fc14db0f10e3a6 upstream.
    
    The SCTP socket extensions API document describes the v4mapping option as
    follows:
    
    8.1.15.  Set/Clear IPv4 Mapped Addresses (SCTP_I_WANT_MAPPED_V4_ADDR)
    
       This socket option is a Boolean flag which turns on or off the
       mapping of IPv4 addresses.  If this option is turned on, then IPv4
       addresses will be mapped to V6 representation.  If this option is
       turned off, then no mapping will be done of V4 addresses and a user
       will receive both PF_INET6 and PF_INET type addresses on the socket.
       See [RFC3542] for more details on mapped V6 addresses.
    
    This description isn't really in line with what the code does though.
    
    Introduce addr_to_user (renamed addr_v4map), which should be called
    before any sockaddr is passed back to user space. The new function
    places the sockaddr into the correct format depending on the
    SCTP_I_WANT_MAPPED_V4_ADDR option.
    
    Audit all places that touched v4mapped and either sanely construct
    a v4 or v6 address then call addr_to_user, or drop the
    unnecessary v4mapped check entirely.
    
    Audit all places that call addr_to_user and verify they are on a sycall
    return path.
    
    Add a custom getname that formats the address properly.
    
    Several bugs are addressed:
     - SCTP_I_WANT_MAPPED_V4_ADDR=0 often returned garbage for
       addresses to user space
     - The addr_len returned from recvmsg was not correct when
       returning AF_INET on a v6 socket
     - flowlabel and scope_id were not zerod when promoting
       a v4 to v6
     - Some syscalls like bind and connect behaved differently
       depending on v4mapped
    
    Tested bind, getpeername, getsockname, connect, and recvmsg for proper
    behaviour in v4mapped = 1 and 0 cases.
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Tested-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f5966c69a8335142a79c16e01ead11ad8f54929d
Author: Vasily Gorbik <gor@linux.vnet.ibm.com>
Date:   Wed Nov 15 14:15:36 2017 +0100

    s390/disassembler: increase show_code buffer size
    
    commit b192571d1ae375e0bbe0aa3ccfa1a3c3704454b9 upstream.
    
    Current buffer size of 64 is too small. objdump shows that there are
    instructions which would require up to 75 bytes buffer (with current
    formating). 128 bytes "ought to be enough for anybody".
    
    Also replaces 8 spaces with a single tab to reduce the memory footprint.
    
    Fixes the following KASAN finding:
    
    BUG: KASAN: stack-out-of-bounds in number+0x3fe/0x538
    Write of size 1 at addr 000000005a4a75a0 by task bash/1282
    
    CPU: 1 PID: 1282 Comm: bash Not tainted 4.14.0+ #215
    Hardware name: IBM 2964 N96 702 (z/VM 6.4.0)
    Call Trace:
    ([<000000000011eeb6>] show_stack+0x56/0x88)
     [<0000000000e1ce1a>] dump_stack+0x15a/0x1b0
     [<00000000004e2994>] print_address_description+0xf4/0x288
     [<00000000004e2cf2>] kasan_report+0x13a/0x230
     [<0000000000e38ae6>] number+0x3fe/0x538
     [<0000000000e3dfe4>] vsnprintf+0x194/0x948
     [<0000000000e3ea42>] sprintf+0xa2/0xb8
     [<00000000001198dc>] print_insn+0x374/0x500
     [<0000000000119346>] show_code+0x4ee/0x538
     [<000000000011f234>] show_registers+0x34c/0x388
     [<000000000011f2ae>] show_regs+0x3e/0xa8
     [<000000000011f502>] die+0x1ea/0x2e8
     [<0000000000138f0e>] do_no_context+0x106/0x168
     [<0000000000139a1a>] do_protection_exception+0x4da/0x7d0
     [<0000000000e55914>] pgm_check_handler+0x16c/0x1c0
     [<000000000090639e>] sysrq_handle_crash+0x46/0x58
    ([<0000000000000007>] 0x7)
     [<00000000009073fa>] __handle_sysrq+0x102/0x218
     [<0000000000907c06>] write_sysrq_trigger+0xd6/0x100
     [<000000000061d67a>] proc_reg_write+0xb2/0x128
     [<0000000000520be6>] __vfs_write+0xee/0x368
     [<0000000000521222>] vfs_write+0x21a/0x278
     [<000000000052156a>] SyS_write+0xda/0x178
     [<0000000000e555cc>] system_call+0xc4/0x270
    
    The buggy address belongs to the page:
    page:000003d1016929c0 count:0 mapcount:0 mapping:          (null) index:0x0
    flags: 0x0()
    raw: 0000000000000000 0000000000000000 0000000000000000 ffffffff00000000
    raw: 0000000000000100 0000000000000200 0000000000000000 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     000000005a4a7480: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
     000000005a4a7500: 00 00 00 00 00 00 00 00 f2 f2 f2 f2 00 00 00 00
    >000000005a4a7580: 00 00 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00 00
                                   ^
     000000005a4a7600: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f8 f8
     000000005a4a7680: f2 f2 f2 f2 f2 f2 f8 f8 f2 f2 f3 f3 f3 f3 00 00
    ==================================================================
    
    Signed-off-by: Vasily Gorbik <gor@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 07b01b65e7733f9063165defaeb2d709c8a5d576
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 17:29:29 2017 +0100

    clk: ti: dra7-atl-clock: fix child-node lookups
    
    commit 33ec6dbc5a02677509d97fe36cd2105753f0f0ea upstream.
    
    Fix child node-lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    Note that the original premature free of the parent node has already
    been fixed separately, but that fix was apparently never backported to
    stable.
    
    Fixes: 9ac33b0ce81f ("CLK: TI: Driver for DRA7 ATL (Audio Tracking Logic)")
    Fixes: 660e15519399 ("clk: ti: dra7-atl-clock: Fix of_node reference counting")
    Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 223f341b1c8de5586b084dc0e4ef10598020985c
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Mar 11 16:13:32 2016 +0200

    clk: ti: dra7-atl-clock: Fix of_node reference counting
    
    commit 660e1551939931657808d47838a3f443c0e83fd0 upstream.
    
    of_find_node_by_name() will call of_node_put() on the node so we need to
    get it first to avoid warnings.
    The cfg_node needs to be put after we have finished processing the
    properties.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e63ac7ca2b879aee79f3fd325622d861a5ab6078
Author: Mark Bloch <markb@mellanox.com>
Date:   Thu Nov 2 15:22:26 2017 +0200

    IB/mlx4: Increase maximal message size under UD QP
    
    commit 5f22a1d87c5315a98981ecf93cd8de226cffe6ca upstream.
    
    Maximal message should be used as a limit to the max message payload allowed,
    without the headers. The ConnectX-3 check is done against this value includes
    the headers. When the payload is 4K this will cause the NIC to drop packets.
    
    Increase maximal message to 8K as workaround, this shouldn't change current
    behaviour because we continue to set the MTU to 4k.
    
    To reproduce;
    set MTU to 4296 on the corresponding interface, for example:
    ifconfig eth0 mtu 4296 (both server and client)
    
    On server:
    ib_send_bw -c UD -d mlx4_0 -s 4096 -n 1000000 -i1 -m 4096
    
    On client:
    ib_send_bw -d mlx4_0 -c UD <server_ip> -s 4096 -n 1000000 -i 1 -m 4096
    
    Fixes: 6e0d733d9215 ("IB/mlx4: Allow 4K messages for UD QPs")
    Signed-off-by: Mark Bloch <markb@mellanox.com>
    Reviewed-by: Majd Dibbiny <majd@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97141d69b6111cead4710fdfb32b9f8559ad37b2
Author: Majd Dibbiny <majd@mellanox.com>
Date:   Mon Oct 30 14:23:13 2017 +0200

    IB/mlx5: Assign send CQ and recv CQ of UMR QP
    
    commit 31fde034a8bd964a5c7c1a5663fc87a913158db2 upstream.
    
    The UMR's QP is created by calling mlx5_ib_create_qp directly, and
    therefore the send CQ and the recv CQ on the ibqp weren't assigned.
    
    Assign them right after calling the mlx5_ib_create_qp to assure
    that any access to those pointers will work as expected and won't
    crash the system as might happen as part of reset flow.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Majd Dibbiny <majd@mellanox.com>
    Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0dea4044c7794a770fccd3644dc3a1de2d4cd239
Author: Jens Axboe <axboe@kernel.dk>
Date:   Sun Nov 5 09:13:48 2017 -0700

    blktrace: fix unlocked access to init/start-stop/teardown
    
    commit 1f2cac107c591c24b60b115d6050adc213d10fc0 upstream.
    
    sg.c calls into the blktrace functions without holding the proper queue
    mutex for doing setup, start/stop, or teardown.
    
    Add internal unlocked variants, and export the ones that do the proper
    locking.
    
    Fixes: 6da127ad0918 ("blktrace: Add blktrace ioctls to SCSI generic devices")
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f3f6031fd1a4db8f195e4b57b390b3bb5baa4f14
Author: Waiman Long <longman@redhat.com>
Date:   Wed Sep 20 13:12:20 2017 -0600

    blktrace: Fix potential deadlock between delete & sysfs ops
    
    commit 5acb3cc2c2e9d3020a4fee43763c6463767f1572 upstream.
    
    The lockdep code had reported the following unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(s_active#228);
                                   lock(&bdev->bd_mutex/1);
                                   lock(s_active#228);
      lock(&bdev->bd_mutex);
    
     *** DEADLOCK ***
    
    The deadlock may happen when one task (CPU1) is trying to delete a
    partition in a block device and another task (CPU0) is accessing
    tracing sysfs file (e.g. /sys/block/dm-1/trace/act_mask) in that
    partition.
    
    The s_active isn't an actual lock. It is a reference count (kn->count)
    on the sysfs (kernfs) file. Removal of a sysfs file, however, require
    a wait until all the references are gone. The reference count is
    treated like a rwsem using lockdep instrumentation code.
    
    The fact that a thread is in the sysfs callback method or in the
    ioctl call means there is a reference to the opended sysfs or device
    file. That should prevent the underlying block structure from being
    removed.
    
    Instead of using bd_mutex in the block_device structure, a new
    blk_trace_mutex is now added to the request_queue structure to protect
    access to the blk_trace structure.
    
    Suggested-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Waiman Long <longman@redhat.com>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    
    Fix typo in patch subject line, and prune a comment detailing how
    the code used to work.
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e9546d2629dd45650d9b9035198d7e8ce907e7de
Author: Hou Tao <houtao1@huawei.com>
Date:   Wed Nov 1 15:42:36 2017 +0800

    dm: fix race between dm_get_from_kobject() and __dm_destroy()
    
    commit b9a41d21dceadf8104812626ef85dc56ee8a60ed upstream.
    
    The following BUG_ON was hit when testing repeat creation and removal of
    DM devices:
    
        kernel BUG at drivers/md/dm.c:2919!
        CPU: 7 PID: 750 Comm: systemd-udevd Not tainted 4.1.44
        Call Trace:
         [<ffffffff81649e8b>] dm_get_from_kobject+0x34/0x3a
         [<ffffffff81650ef1>] dm_attr_show+0x2b/0x5e
         [<ffffffff817b46d1>] ? mutex_lock+0x26/0x44
         [<ffffffff811df7f5>] sysfs_kf_seq_show+0x83/0xcf
         [<ffffffff811de257>] kernfs_seq_show+0x23/0x25
         [<ffffffff81199118>] seq_read+0x16f/0x325
         [<ffffffff811de994>] kernfs_fop_read+0x3a/0x13f
         [<ffffffff8117b625>] __vfs_read+0x26/0x9d
         [<ffffffff8130eb59>] ? security_file_permission+0x3c/0x44
         [<ffffffff8117bdb8>] ? rw_verify_area+0x83/0xd9
         [<ffffffff8117be9d>] vfs_read+0x8f/0xcf
         [<ffffffff81193e34>] ? __fdget_pos+0x12/0x41
         [<ffffffff8117c686>] SyS_read+0x4b/0x76
         [<ffffffff817b606e>] system_call_fastpath+0x12/0x71
    
    The bug can be easily triggered, if an extra delay (e.g. 10ms) is added
    between the test of DMF_FREEING & DMF_DELETING and dm_get() in
    dm_get_from_kobject().
    
    To fix it, we need to ensure the test of DMF_FREEING & DMF_DELETING and
    dm_get() are done in an atomic way, so _minor_lock is used.
    
    The other callers of dm_get() have also been checked to be OK: some
    callers invoke dm_get() under _minor_lock, some callers invoke it under
    _hash_lock, and dm_start_request() invoke it after increasing
    md->open_count.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d2c21fd4d8f393ca0831d8f2dbe0e826685b485
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Thu Nov 9 12:29:34 2017 +0100

    s390: fix transactional execution control register handling
    
    commit a1c5befc1c24eb9c1ee83f711e0f21ee79cbb556 upstream.
    
    Dan Horák reported the following crash related to transactional execution:
    
    User process fault: interruption code 0013 ilc:3 in libpthread-2.26.so[3ff93c00000+1b000]
    CPU: 2 PID: 1 Comm: /init Not tainted 4.13.4-300.fc27.s390x #1
    Hardware name: IBM 2827 H43 400 (z/VM 6.4.0)
    task: 00000000fafc8000 task.stack: 00000000fafc4000
    User PSW : 0705200180000000 000003ff93c14e70
               R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:1 AS:0 CC:2 PM:0 RI:0 EA:3
    User GPRS: 0000000000000077 000003ff00000000 000003ff93144d48 000003ff93144d5e
               0000000000000000 0000000000000002 0000000000000000 000003ff00000000
               0000000000000000 0000000000000418 0000000000000000 000003ffcc9fe770
               000003ff93d28f50 000003ff9310acf0 000003ff92b0319a 000003ffcc9fe6d0
    User Code: 000003ff93c14e62: 60e0b030            std     %f14,48(%r11)
               000003ff93c14e66: 60f0b038            std     %f15,56(%r11)
              #000003ff93c14e6a: e5600000ff0e        tbegin  0,65294
              >000003ff93c14e70: a7740006            brc     7,3ff93c14e7c
               000003ff93c14e74: a7080000            lhi     %r0,0
               000003ff93c14e78: a7f40023            brc     15,3ff93c14ebe
               000003ff93c14e7c: b2220000            ipm     %r0
               000003ff93c14e80: 8800001c            srl     %r0,28
    
    There are several bugs with control register handling with respect to
    transactional execution:
    
    - on task switch update_per_regs() is only called if the next task has
      an mm (is not a kernel thread). This however is incorrect. This
      breaks e.g. for user mode helper handling, where the kernel creates
      a kernel thread and then execve's a user space program. Control
      register contents related to transactional execution won't be
      updated on execve. If the previous task ran with transactional
      execution disabled then the new task will also run with
      transactional execution disabled, which is incorrect. Therefore call
      update_per_regs() unconditionally within switch_to().
    
    - on startup the transactional execution facility is not enabled for
      the idle thread. This is not really a bug, but an inconsistency to
      other facilities. Therefore enable the facility if it is available.
    
    - on fork the new thread's per_flags field is not cleared. This means
      that a child process inherits the PER_FLAG_NO_TE flag. This flag can
      be set with a ptrace request to disable transactional execution for
      the current process. It should not be inherited by new child
      processes in order to be consistent with the handling of all other
      PER related debugging options. Therefore clear the per_flags field in
      copy_thread_tls().
    
    Reported-and-tested-by: Dan Horák <dan@danny.cz>
    Fixes: d35339a42dd1 ("s390: add support for transactional memory")
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 41554a1da2fdb039577cbfa6e4e7ae977da56f3f
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Nov 9 11:59:24 2017 +0100

    rt2x00usb: mark device removed when get ENOENT usb error
    
    commit bfa62a52cad93686bb8d8171ea5288813248a7c6 upstream.
    
    ENOENT usb error mean "specified interface or endpoint does not exist or
    is not enabled". Mark device not present when we encounter this error
    similar like we do with ENODEV error.
    
    Otherwise we can have infinite loop in rt2x00usb_work_rxdone(), because
    we remove and put again RX entries to the queue infinitely.
    
    We can have similar situation when submit urb will fail all the time
    with other error, so we need consider to limit number of entries
    processed by rxdone work. But for now, since the patch fixes
    reproducible soft lockup issue on single processor systems
    and taken ENOENT error meaning, let apply this fix.
    
    Patch adds additional ENOENT check not only in rx kick routine, but
    also on other places where we check for ENODEV error.
    
    Reported-by: Richard Genoud <richard.genoud@gmail.com>
    Debugged-by: Richard Genoud <richard.genoud@gmail.com>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Tested-by: Richard Genoud <richard.genoud@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c9e38ae0fe0779c91db7f16895e43e1922c3eaf7
Author: Ladislav Michl <ladis@linux-mips.org>
Date:   Thu Nov 9 18:09:30 2017 +0100

    video: udlfb: Fix read EDID timeout
    
    commit c98769475575c8a585f5b3952f4b5f90266f699b upstream.
    
    While usb_control_msg function expects timeout in miliseconds, a value
    of HZ is used. Replace it with USB_CTRL_GET_TIMEOUT and also fix error
    message which looks like:
    udlfb: Read EDID byte 78 failed err ffffff92
    as error is either negative errno or number of bytes transferred use %d
    format specifier.
    
    Returned EDID is in second byte, so return error when less than two bytes
    are received.
    
    Fixes: 18dffdf8913a ("staging: udlfb: enhance EDID and mode handling support")
    Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
    Cc: Bernie Thompson <bernie@plugable.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 49b31d891e6bde3e95856a05a74deb55a7ab95e2
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Tue Nov 7 19:09:20 2017 +0000

    MIPS: Fix an n32 core file generation regset support regression
    
    commit 547da673173de51f73887377eb275304775064ad upstream.
    
    Fix a commit 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    regression, then activated by commit 6a9c001b7ec3 ("MIPS: Switch ELF
    core dumper to use regsets.)", that caused n32 processes to dump o32
    core files by failing to set the EF_MIPS_ABI2 flag in the ELF core file
    header's `e_flags' member:
    
    $ file tls-core
    tls-core: ELF 32-bit MSB executable, MIPS, N32 MIPS64 rel2 version 1 (SYSV), [...]
    $ ./tls-core
    Aborted (core dumped)
    $ file core
    core: ELF 32-bit MSB core file MIPS, MIPS-I version 1 (SYSV), SVR4-style
    $
    
    Previously the flag was set as the result of a:
    
    statement placed in arch/mips/kernel/binfmt_elfn32.c, however in the
    regset case, i.e. when CORE_DUMP_USE_REGSET is set, ELF_CORE_EFLAGS is
    no longer used by `fill_note_info' in fs/binfmt_elf.c, and instead the
    `->e_flags' member of the regset view chosen is.  We have the views
    defined in arch/mips/kernel/ptrace.c, however only an o32 and an n64
    one, and the latter is used for n32 as well.  Consequently an o32 core
    file is incorrectly dumped from n32 processes (the ELF32 vs ELF64 class
    is chosen elsewhere, and the 32-bit one is correctly selected for n32).
    
    Correct the issue then by defining an n32 regset view and using it as
    appropriate.  Issue discovered in GDB testing.
    
    Fixes: 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Djordje Todorovic <djordje.todorovic@rt-rk.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17617/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d056e99df1d488b1cede09f580d848daae2a7ad5
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Nov 8 12:23:17 2017 -0500

    USB: usbfs: compute urb->actual_length for isochronous
    
    commit 2ef47001b3ee3ded579b7532ebdcf8680e4d8c54 upstream.
    
    The USB kerneldoc says that the actual_length field "is read in
    non-iso completion functions", but the usbfs driver uses it for all
    URB types in processcompl().  Since not all of the host controller
    drivers set actual_length for isochronous URBs, programs using usbfs
    with some host controllers don't work properly.  For example, Minas
    reports that a USB camera controlled by libusb doesn't work properly
    with a dwc2 controller.
    
    It doesn't seem worthwhile to change the HCDs and the documentation,
    since the in-kernel USB class drivers evidently don't rely on
    actual_length for isochronous transfers.  The easiest solution is for
    usbfs to calculate the actual_length value for itself, by adding up
    the lengths of the individual packets in an isochronous transfer.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
    Reported-and-tested-by: wlf <wulf@rock-chips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8e80006b40818eeea0f066517401df91d70c3611
Author: Andrew F. Davis <afd@ti.com>
Date:   Wed Nov 8 15:24:59 2017 -0600

    ASoC: cs42l56: Fix reset GPIO name in example DT binding
    
    commit 8adc430603d67e76a0f8491df21654f691acda62 upstream.
    
    The binding states the reset GPIO property shall be named
    "cirrus,gpio-nreset" and this is what the driver looks for,
    but the example uses "gpio-reset". Fix this here.
    
    Fixes: 3bb40619aca8 ("ASoC: cs42l56: bindings: sound: Add bindings for CS42L56 CODEC")
    
    Signed-off-by: Andrew F. Davis <afd@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b10cc72bb97a5b2ccb92d83c047a684e76a94d2
Author: Boshi Wang <wangboshi@huawei.com>
Date:   Fri Oct 20 16:01:03 2017 +0800

    ima: fix hash algorithm initialization
    
    commit ebe7c0a7be92bbd34c6ff5b55810546a0ee05bee upstream.
    
    The hash_setup function always sets the hash_setup_done flag, even
    when the hash algorithm is invalid.  This prevents the default hash
    algorithm defined as CONFIG_IMA_DEFAULT_HASH from being used.
    
    This patch sets hash_setup_done flag only for valid hash algorithms.
    
    Fixes: e7a2ad7eb6f4 "ima: enable support for larger default filedata hash
            algorithms"
    Signed-off-by: Boshi Wang <wangboshi@huawei.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b11207470274dc1517548bb4bceebe5e612ae714
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Oct 27 20:52:56 2017 -0700

    iscsi-target: Fix non-immediate TMR reference leak
    
    commit 3fc9fb13a4b2576aeab86c62fd64eb29ab68659c upstream.
    
    This patch fixes a se_cmd->cmd_kref reference leak that can
    occur when a non immediate TMR is proceeded our of command
    sequence number order, and CMDSN_LOWER_THAN_EXP is returned
    by iscsit_sequence_cmd().
    
    To address this bug, call target_put_sess_cmd() during this
    special case following what iscsit_process_scsi_cmd() does
    upon CMDSN_LOWER_THAN_EXP.
    
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16: target_put_sess_cmd() takes an se_session pointer
     too]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f6ba44ba3c3664f38c67776108afa8df47b9dec4
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Oct 27 12:32:59 2017 -0700

    iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref
    
    commit ae072726f6109bb1c94841d6fb3a82dde298ea85 upstream.
    
    Since commit 59b6986dbf fixed a potential NULL pointer dereference
    by allocating a se_tmr_req for ISCSI_TM_FUNC_TASK_REASSIGN, the
    se_tmr_req is currently leaked by iscsit_free_cmd() because no
    iscsi_cmd->se_cmd.se_tfo was associated.
    
    To address this, treat ISCSI_TM_FUNC_TASK_REASSIGN like any other
    TMR and call transport_init_se_cmd() + target_get_sess_cmd() to
    setup iscsi_cmd->se_cmd.se_tfo with se_cmd->cmd_kref of 2.
    
    This will ensure normal release operation once se_cmd->cmd_kref
    reaches zero and target_release_cmd_kref() is invoked, se_tmr_req
    will be released via existing target_free_cmd_mem() and
    core_tmr_release_req() code.
    
    Reported-by: Donald White <dew@datera.io>
    Cc: Donald White <dew@datera.io>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16: Arguments passed to transport_init_se_cmd() and
     target_{get,put}_sess_cmd() are different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 065c73c2ed524b75de74a43414b699a8f7a9d6ad
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Thu Jan 5 12:39:57 2017 +0100

    target/iscsi: Fix iSCSI task reassignment handling
    
    commit 59b6986dbfcdab96a971f9663221849de79a7556 upstream.
    
    Allocate a task management request structure for all task management
    requests, including task reassignment. This change avoids that the
    se_tmr->response assignment dereferences an uninitialized se_tmr
    pointer.
    
    Reported-by: Moshe David <mdavid@infinidat.com>
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Moshe David <mdavid@infinidat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16:
     - Add definition of TMR_UNKNOWN
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a30372543ad9702a2c64d99041576974b2151416
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Oct 27 22:19:26 2017 -0800

    target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK
    
    commit 1c21a48055a67ceb693e9c2587824a8de60a217c upstream.
    
    This patch fixes bug where early se_cmd exceptions that occur
    before backend execution can result in use-after-free if/when
    a subsequent ABORT_TASK occurs for the same tag.
    
    Since an early se_cmd exception will have had se_cmd added to
    se_session->sess_cmd_list via target_get_sess_cmd(), it will
    not have CMD_T_COMPLETE set by the usual target_complete_cmd()
    backend completion path.
    
    This causes a subsequent ABORT_TASK + __target_check_io_state()
    to signal ABORT_TASK should proceed.  As core_tmr_abort_task()
    executes, it will bring the outstanding se_cmd->cmd_kref count
    down to zero releasing se_cmd, after se_cmd has already been
    queued with error status into fabric driver response path code.
    
    To address this bug, introduce a CMD_T_PRE_EXECUTE bit that is
    set at target_get_sess_cmd() time, and cleared immediately before
    backend driver dispatch in target_execute_cmd() once CMD_T_ACTIVE
    is set.
    
    Then, check CMD_T_PRE_EXECUTE within __target_check_io_state() to
    determine when an early exception has occured, and avoid aborting
    this se_cmd since it will have already been queued into fabric
    driver response path code.
    
    Reported-by: Donald White <dew@datera.io>
    Cc: Donald White <dew@datera.io>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16:
     - Use target_core_fabric_ops::get_task_tag to get the tag and %u to format it
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1068ffc77f6f832c96d6ce76120f794340edf526
Author: Zhou Chengming <zhouchengming1@huawei.com>
Date:   Thu Nov 2 09:18:21 2017 +0800

    kprobes, x86/alternatives: Use text_mutex to protect smp_alt_modules
    
    commit e846d13958066828a9483d862cc8370a72fadbb6 upstream.
    
    We use alternatives_text_reserved() to check if the address is in
    the fixed pieces of alternative reserved, but the problem is that
    we don't hold the smp_alt mutex when call this function. So the list
    traversal may encounter a deleted list_head if another path is doing
    alternatives_smp_module_del().
    
    One solution is that we can hold smp_alt mutex before call this
    function, but the difficult point is that the callers of this
    functions, arch_prepare_kprobe() and arch_prepare_optimized_kprobe(),
    are called inside the text_mutex. So we must hold smp_alt mutex
    before we go into these arch dependent code. But we can't now,
    the smp_alt mutex is the arch dependent part, only x86 has it.
    Maybe we can export another arch dependent callback to solve this.
    
    But there is a simpler way to handle this problem. We can reuse the
    text_mutex to protect smp_alt_modules instead of using another mutex.
    And all the arch dependent checks of kprobes are inside the text_mutex,
    so it's safe now.
    
    Signed-off-by: Zhou Chengming <zhouchengming1@huawei.com>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@suse.de
    Fixes: 2cfa197 "ftrace/alternatives: Introducing *_text_reserved functions"
    Link: http://lkml.kernel.org/r/1509585501-79466-1-git-send-email-zhouchengming1@huawei.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ed85a40ae9565b0ff7b465d04b1b82aea07e83f3
Author: James Morse <james.morse@arm.com>
Date:   Mon Nov 6 18:44:25 2017 +0000

    ACPI / APEI: Remove ghes_ioremap_area
    
    commit 520e18a5080d2c444a03280d99c8a35cb667d321 upstream.
    
    Now that nothing is using the ghes_ioremap_area pages, rip them out.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [bwh: Backported to 3.16:
     - Delete additional call to ghes_ioremap_exit() from ghes_exit()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ceb39f1d3f095de3134508797985043b37bde99b
Author: James Morse <james.morse@arm.com>
Date:   Mon Nov 6 18:44:24 2017 +0000

    ACPI / APEI: Replace ioremap_page_range() with fixmap
    
    commit 4f89fa286f6729312e227e7c2d764e8e7b9d340e upstream.
    
    Replace ghes_io{re,un}map_pfn_{nmi,irq}()s use of ioremap_page_range()
    with __set_fixmap() as ioremap_page_range() may sleep to allocate a new
    level of page-table, even if its passed an existing final-address to
    use in the mapping.
    
    The GHES driver can only be enabled for architectures that select
    HAVE_ACPI_APEI: Add fixmap entries to both x86 and arm64.
    
    clear_fixmap() does the TLB invalidation in __set_fixmap() for arm64
    and __set_pte_vaddr() for x86. In each case its the same as the
    respective arch_apei_flush_tlb_one().
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
    Tested-by: Toshi Kani <toshi.kani@hpe.com>
    [ For the arm64 bits: ]
    Acked-by: Will Deacon <will.deacon@arm.com>
    [ For the x86 bits: ]
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [bwh: Backported to 3.16:
     - Drop arm64 changes; ghes is x86-only here
     - Don't use page or prot variables in ghes_ioremap_fn_{nmi,irq}()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d1b56a88c319b975639b12cce0a30a720dae5579
Author: Shriya <shriyak@linux.vnet.ibm.com>
Date:   Fri Oct 13 10:06:41 2017 +0530

    powerpc/powernv/cpufreq: Fix the frequency read by /proc/cpuinfo
    
    commit cd77b5ce208c153260ed7882d8910f2395bfaabd upstream.
    
    The call to /proc/cpuinfo in turn calls cpufreq_quick_get() which
    returns the last frequency requested by the kernel, but may not
    reflect the actual frequency the processor is running at. This patch
    makes a call to cpufreq_get() instead which returns the current
    frequency reported by the hardware.
    
    Fixes: fb5153d05a7d ("powerpc: powernv: Implement ppc_md.get_proc_freq()")
    Signed-off-by: Shriya <shriyak@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 33472ce4135f0a9d2c8c2471833597c9be096264
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Aug 22 23:41:28 2017 +0300

    eCryptfs: use after free in ecryptfs_release_messaging()
    
    commit db86be3a12d0b6e5c5b51c2ab2a48f06329cb590 upstream.
    
    We're freeing the list iterator so we should be using the _safe()
    version of hlist_for_each_entry().
    
    Fixes: 88b4a07e6610 ("[PATCH] eCryptfs: Public key transport mechanism")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9fdbe28d0c3a57965d9fbacc9ea18ac0994adb26
Author: William A. Kennington III <wak@google.com>
Date:   Fri Sep 22 16:58:00 2017 -0700

    powerpc/opal: Fix EBUSY bug in acquiring tokens
    
    commit 71e24d7731a2903b1ae2bba2b2971c654d9c2aa6 upstream.
    
    The current code checks the completion map to look for the first token
    that is complete. In some cases, a completion can come in but the
    token can still be on lease to the caller processing the completion.
    If this completed but unreleased token is the first token found in the
    bitmap by another tasks trying to acquire a token, then the
    __test_and_set_bit call will fail since the token will still be on
    lease. The acquisition will then fail with an EBUSY.
    
    This patch reorganizes the acquisition code to look at the
    opal_async_token_map for an unleased token. If the token has no lease
    it must have no outstanding completions so we should never see an
    EBUSY, unless we have leased out too many tokens. Since
    opal_async_get_token_inrerruptible is protected by a semaphore, we
    will practically never see EBUSY anymore.
    
    Fixes: 8d7248232208 ("powerpc/powernv: Infrastructure to support OPAL async completion")
    Signed-off-by: William A. Kennington III <wak@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5cd856366d7de248090801be23336d7d23e4307d
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Thu Sep 28 20:19:20 2017 -0400

    powerpc/pseries/vio: Dispose of virq mapping on vdevice unregister
    
    commit b8f89fea599d91e674497aad572613eb63181f31 upstream.
    
    When a vdevice is DLPAR removed from the system the vio subsystem
    doesn't bother unmapping the virq from the irq_domain. As a result we
    have a virq mapped to a hardware irq that is no longer valid for the
    irq_domain. A side effect is that we are left with /proc/irq/<irq#>
    affinity entries, and attempts to modify the smp_affinity of the irq
    will fail.
    
    In the following observed example the kernel log is spammed by
    ics_rtas_set_affinity errors after the removal of a VSCSI adapter.
    This is a result of irqbalance trying to adjust the affinity every 10
    seconds.
    
      rpadlpar_io: slot U8408.E8E.10A7ACV-V5-C25 removed
      ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
      ics_rtas_set_affinity: ibm,set-xive irq=655385 returns -3
    
    This patch fixes the issue by calling irq_dispose_mapping() on the
    virq of the viodev on unregister.
    
    Fixes: f2ab6219969f ("powerpc/pseries: Add PFO support to the VIO bus")
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f24806af56ace0b144ddeb434442ca03028a3d8d
Author: Yunlong Song <yunlong.song@huawei.com>
Date:   Mon Oct 30 09:33:41 2017 +0800

    Revert "f2fs: handle dirty segments inside refresh_sit_entry"
    
    commit 65f1b80b33378501ea552ef085e9c31739af356c upstream.
    
    This reverts commit 5e443818fa0b2a2845561ee25bec181424fb2889
    
    The commit should be reverted because call sequence of below two parts
    of code must be kept:
    a. update sit information, it needs to be updated before segment
    allocation since latter allocation may trigger SSR, and SSR allocation
    needs latest valid block information of all segments.
    b. update segment status, it needs to be updated after segment allocation
    since we can skip updating current opened segment status.
    
    Fixes: 5e443818fa0b ("f2fs: handle dirty segments inside refresh_sit_entry")
    Suggested-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    [Jaegeuk Kim: remove refresh_sit_entry function]
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [bwh: Backported to 3.16:
     - Don't delete refresh_sit_entry(); it has another caller here
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aa9effae3126a160e07602c021c5716baf2039b8
Author: Dongho Sim <dh.sim@samsung.com>
Date:   Wed Jul 30 06:52:41 2014 +0000

    f2fs: remove redundant lines in allocate_data_block
    
    commit 33be828ada7274ebcade2001f16e5b4e33a4636e upstream.
    
    There are redundant lines in allocate_data_block.
    
    In this function, we call refresh_sit_entry with old seg and old curseg.
    After that, we call locate_dirty_segment with old curseg.
    
    But, the new address is always allocated from old curseg and
    we call locate_dirty_segment with old curseg in refresh_sit_entry.
    So, we do not need to call locate_dirty_segment with old curseg again.
    
    We've discussed like below:
    
    Jaegeuk said:
     "When considering SSR, we need to take care of the following scenario.
      - old segno : X
      - new address : Z
      - old curseg : Y
      This means, a new block is supposed to be written to Z from X.
      And Z is newly allocated in the same path from Y.
    
      In that case, we should trigger locate_dirty_segment for Y, since
      it was a current_segment and can be dirty owing to SSR.
      But that was not included in the dirty list."
    
    Changman said:
     "We already choosed old curseg(Y) and then we allocate new address(Z) from old
      curseg(Y). After that we call refresh_sit_entry(old address, new address).
      In the funcation, we call locate_dirty_segment with old seg and old curseg.
      So calling locate_dirty_segment after refresh_sit_entry again is redundant."
    
    Jaegeuk said:
     "Right. The new address is always allocated from old_curseg."
    
    Reviewed-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Dongho Sim <dh.sim@samsung.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b4e587fa528a56b85ed3af7c33ccf68663effdaa
Author: Johan Hovold <johan@kernel.org>
Date:   Sun Jul 9 13:08:58 2017 +0200

    NFC: fix device-allocation error return
    
    commit c45e3e4c5b134b081e8af362109905427967eb19 upstream.
    
    A recent change fixing NFC device allocation itself introduced an
    error-handling bug by returning an error pointer in case device-id
    allocation failed. This is clearly broken as the callers still expected
    NULL to be returned on errors as detected by Dan's static checker.
    
    Fix this up by returning NULL in the event that we've run out of memory
    when allocating a new device id.
    
    Note that the offending commit is marked for stable (3.8) so this fix
    needs to be backported along with it.
    
    Fixes: 20777bc57c34 ("NFC: fix broken device allocation")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 73f589215be2f03a4a1201e8f1b9ba2e9f242990
Author: Jan Harkes <jaharkes@cs.cmu.edu>
Date:   Wed Sep 27 15:52:12 2017 -0400

    coda: fix 'kernel memory exposure attempt' in fsync
    
    commit d337b66a4c52c7b04eec661d86c2ef6e168965a2 upstream.
    
    When an application called fsync on a file in Coda a small request with
    just the file identifier was allocated, but the declared length was set
    to the size of union of all possible upcall requests.
    
    This bug has been around for a very long time and is now caught by the
    extra checking in usercopy that was introduced in Linux-4.8.
    
    The exposure happens when the Coda cache manager process reads the fsync
    upcall request at which point it is killed. As a result there is nobody
    servicing any further upcalls, trapping any processes that try to access
    the mounted Coda filesystem.
    
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 820a29f1f8f8c8b14efc78cd8a86fb37f2e35a66
Author: Markus Elfring <elfring@users.sourceforge.net>
Date:   Wed Nov 1 18:42:45 2017 +0100

    platform/x86: sony-laptop: Fix error handling in sony_nc_setup_rfkill()
    
    commit f6c8a317ab208aee223776327c06f23342492d54 upstream.
    
    Source code review for a specific software refactoring showed the need
    for another correction because the error code "-1" was returned so far
    if a call of the function "sony_call_snc_handle" failed here.
    Thus assign the return value from these two function calls also to
    the variable "err" and provide it in case of a failure.
    
    Fixes: d6f15ed876b83a1a0eba1d0473eef58acc95444a ("sony-laptop: use soft rfkill status stored in hw")
    Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lkml.org/lkml/2017/10/31/463
    Link: https://lkml.kernel.org/r/<CAHp75VcMkXCioCzmLE0+BTmkqc5RSOx9yPO0ectVHMrMvewgwg@mail.gmail.com>
    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7490ac4d59bae28ab969731afd46c56076ddb6b5
Author: Bernhard Rosenkraenzer <bernhard.rosenkranzer@linaro.org>
Date:   Fri Nov 3 16:46:02 2017 +0100

    USB: Add delay-init quirk for Corsair K70 LUX keyboards
    
    commit a0fea6027f19c62727315aba1a7fae75a9caa842 upstream.
    
    Without this patch, K70 LUX keyboards don't work, saying
    usb 3-3: unable to read config index 0 descriptor/all
    usb 3-3: can't read configurations, error -110
    usb usb3-port3: unable to enumerate USB device
    
    Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 25d20759b2e80cfc6a79db8027330aff5fd6bb00
Author: Radu Alexe <radu.alexe@nxp.com>
Date:   Tue Oct 24 09:27:30 2017 +0300

    crypto: caam - fix incorrect define
    
    commit cc2f8ab5334a736fa0e775cfccf06c1e268667f0 upstream.
    
    Fixes: 3ebfa92f49a6 ("crypto: caam - Add new macros for building extended SEC descriptors (> 64 words)")
    Signed-off-by: Radu Alexe <radu.alexe@nxp.com>
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 62a449252bb02160d133b0745c310c2817d33408
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri Oct 20 20:40:24 2017 +0200

    staging: rtl8188eu: avoid a null dereference on pmlmepriv
    
    commit 123c0aab0050cd0e07ce18e453389fbbb0a5a425 upstream.
    
    There is a check on pmlmepriv before dereferencing it when
    vfree'ing pmlmepriv->free_bss_buf however the previous call
    to rtw_free_mlme_priv_ie_data deferences pmlmepriv causing
    a null pointer deference if it is null.  Avoid this by also
    calling rtw_free_mlme_priv_ie_data if the pointer is non-null.
    
    Detected by CoverityScan, CID#1230262 ("Dereference before null check")
    Fixes: 7b464c9fa5cc ("staging: r8188eu: Add files for new driver - part 4")
    Signed-off-by: Colin Ian King <colin.king@canonical.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 fd6ba07391126eabb0f1759dcea6dffa1d3611f5
Author: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date:   Tue Sep 19 04:48:10 2017 +0200

    clk: tegra: Fix cclk_lp divisor register
    
    commit 54eff2264d3e9fd7e3987de1d7eba1d3581c631e upstream.
    
    According to comments in code and common sense, cclk_lp uses its
    own divisor, not cclk_g's.
    
    Fixes: b08e8c0ecc42 ("clk: tegra: add clock support for Tegra30")
    Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2db44a4de227745606c34d51474017032ceca824
Author: Roman Kapl <rka@sysgo.com>
Date:   Mon Oct 30 11:56:13 2017 +0100

    drm/radeon: fix atombios on big endian
    
    commit 4f626a4ac8f57ddabf06d03870adab91e463217f upstream.
    
    The function for byteswapping the data send to/from atombios was buggy for
    num_bytes not divisible by four. The function must be aware of the fact
    that after byte-swapping the u32 units, valid bytes might end up after the
    num_bytes boundary.
    
    This patch was tested on kernel 3.12 and allowed us to sucesfully use
    DisplayPort on and Radeon SI card. Namely it fixed the link training and
    EDID readout.
    
    The function is patched both in radeon and amd drivers, since the functions
    and the fixes are identical.
    
    Signed-off-by: Roman Kapl <rka@sysgo.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [bwh: Backported to 3.16: drop changes in amdgpu]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 786df12af5f28d09da2479d2d3bf5db48d25d1ce
Author: Christian König <christian.koenig@amd.com>
Date:   Mon Oct 30 14:57:43 2017 +0100

    drm/ttm: once more fix ttm_buffer_object_transfer
    
    commit 4d98e5ee6084f6d7bc578c5d5f86de7156aaa4cb upstream.
    
    When the mutex is locked just in the moment we copy it we end up with a
    warning that we release a locked mutex.
    
    Fix this by properly reinitializing the mutex.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ab03ac6aabc197fe733e33e25b167ca3c6c0863
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Oct 19 16:47:48 2017 +0200

    isofs: fix timestamps beyond 2027
    
    commit 34be4dbf87fc3e474a842305394534216d428f5d upstream.
    
    isofs uses a 'char' variable to load the number of years since
    1900 for an inode timestamp. On architectures that use a signed
    char type by default, this results in an invalid date for
    anything beyond 2027.
    
    This changes the function argument to a 'u8' array, which
    is defined the same way on all architectures, and unambiguously
    lets us use years until 2155.
    
    This should be backported to all kernels that might still be
    in use by that date.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 09a796b320dcc5bacb4d3fb99f6ee45d7325f52b
Author: Brent Taylor <motobud@gmail.com>
Date:   Mon Oct 30 22:32:45 2017 -0500

    mtd: nand: Fix writing mtdoops to nand flash.
    
    commit 30863e38ebeb500a31cecee8096fb5002677dd9b upstream.
    
    When mtdoops calls mtd_panic_write(), it eventually calls
    panic_nand_write() in nand_base.c. In order to properly wait for the
    nand chip to be ready in panic_nand_wait(), the chip must first be
    selected.
    
    When using the atmel nand flash controller, a panic would occur due to
    a NULL pointer exception.
    
    Fixes: 2af7c6539931 ("mtd: Add panic_write for NAND flashes")
    Signed-off-by: Brent Taylor <motobud@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7980b08d171e4ef4911d3d33f6bfb1ce4f683544
Author: Markus Elfring <elfring@users.sourceforge.net>
Date:   Sun Sep 24 05:00:57 2017 -0400

    media: omap_vout: Fix a possible null pointer dereference in omap_vout_open()
    
    commit bfba2b3e21b9426c0f9aca00f3cad8631b2da170 upstream.
    
    Move a debug message so that a null pointer access can not happen
    for the variable "vout" in this function.
    
    Fixes: 5c7ab6348e7b3fcca2b8ee548306c774472971e2 ("V4L/DVB: V4L2: Add support for OMAP2/3 V4L2 display driver on top of DSS2")
    
    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65d90ba2882892badb6a017ca1e5769a35797be3
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Mon Oct 30 21:23:19 2017 +0000

    arm64: vdso: fix clock_getres for 4GiB-aligned res
    
    commit c80ed088a519da53f27b798a69748eaabc66aadf upstream.
    
    The vdso tries to check for a NULL res pointer in __kernel_clock_getres,
    but only checks the lower 32 bits as is uses CBZ on the W register the
    res pointer is held in.
    
    Thus, if the res pointer happened to be aligned to a 4GiB boundary, we'd
    spuriously skip storing the timespec to it, while returning a zero error code
    to the caller.
    
    Prevent this by checking the whole pointer, using CBZ on the X register
    the res pointer is held in.
    
    Fixes: 9031fefde6f2ac1d ("arm64: VDSO support")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Reported-by: Andrew Pinski <apinski@cavium.com>
    Reported-by: Mark Salyzyn <salyzyn@android.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 264743d0d7a9d699f02a33bc0ae6a891fbd57dac
Author: Nathan Lynch <nathan_lynch@mentor.com>
Date:   Tue Feb 24 17:21:07 2015 -0600

    arm64: vdso: minor ABI fix for clock_getres
    
    commit e1b6b6ce55a0a25c8aa8af019095253b2133a41a upstream.
    
    The vdso implementation of clock_getres currently returns 0 (success)
    whenever a null timespec is provided by the caller, regardless of the
    clock id supplied.
    
    This behavior is incorrect.  It should fall back to syscall when an
    unrecognized clock id is passed, even when the timespec argument is
    null.  This ensures that clock_getres always returns an error for
    invalid clock ids.
    
    Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
    Acked-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 05aab994b1b6ca1cd43a4f976cb40b194e1c5fdc
Author: Douglas Fischer <douglas.fischer@outlook.com>
Date:   Sun Oct 29 23:29:55 2017 +0000

    USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update
    
    commit 771394a54148f18926ca86414e51c69eda27d0cd upstream.
    
    Add USB PID/VID for Sierra Wireless EM7355 LTE modem QDL firmware update
    mode.
    
    Signed-off-by: Douglas Fischer <douglas.fischer@outlook.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1700644e9036ce3b22bf52a47850372c369ff448
Author: Coly Li <colyli@suse.de>
Date:   Mon Oct 30 14:46:31 2017 -0700

    bcache: only permit to recovery read error when cache device is clean
    
    commit d59b23795933678c9638fd20c942d2b4f3cd6185 upstream.
    
    When bcache does read I/Os, for example in writeback or writethrough mode,
    if a read request on cache device is failed, bcache will try to recovery
    the request by reading from cached device. If the data on cached device is
    not synced with cache device, then requester will get a stale data.
    
    For critical storage system like database, providing stale data from
    recovery may result an application level data corruption, which is
    unacceptible.
    
    With this patch, for a failed read request in writeback or writethrough
    mode, recovery a recoverable read request only happens when cache device
    is clean. That is to say, all data on cached device is up to update.
    
    For other cache modes in bcache, read request will never hit
    cached_dev_read_error(), they don't need this patch.
    
    Please note, because cache mode can be switched arbitrarily in run time, a
    writethrough mode might be switched from a writeback mode. Therefore
    checking dc->has_data in writethrough mode still makes sense.
    
    Changelog:
    V4: Fix parens error pointed by Michael Lyle.
    v3: By response from Kent Oversteet, he thinks recovering stale data is a
        bug to fix, and option to permit it is unnecessary. So this version
        the sysfs file is removed.
    v2: rename sysfs entry from allow_stale_data_on_failure  to
        allow_stale_data_on_failure, and fix the confusing commit log.
    v1: initial patch posted.
    
    [small change to patch comment spelling by mlyle]
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Reported-by: Arne Wolf <awolf@lenovo.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Cc: Nix <nix@esperi.org.uk>
    Cc: Kai Krakow <hurikhan77@gmail.com>
    Cc: Eric Wheeler <bcache@lists.ewheeler.net>
    Cc: Junhui Tang <tang.junhui@zte.com.cn>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ef08ec1c2850a4b748e7685f018eadabcf23f57
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Sep 11 16:15:28 2017 +0100

    btrfs: avoid null pointer dereference on fs_info when calling btrfs_crit
    
    commit 3993b112dac968612b0b213ed59cb30f50b0015b upstream.
    
    There are checks on fs_info in __btrfs_panic to avoid dereferencing a
    null fs_info, however, there is a call to btrfs_crit that may also
    dereference a null fs_info. Fix this by adding a check to see if fs_info
    is null and only print the s_id if fs_info is non-null.
    
    Detected by CoverityScan CID#401973 ("Dereference after null check")
    
    Fixes: efe120a067c8 ("Btrfs: convert printk to btrfs_ and fix BTRFS prefix")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fabb6fc84bc2968b0cc8395679ad939cb407698c
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 27 16:51:52 2017 +0200

    l2tp: initialise PPP sessions before registering them
    
    commit f98be6c6359e7e4a61aaefb9964c1db31cb9ec0c upstream.
    
    pppol2tp_connect() initialises L2TP sessions after they've been exposed
    to the rest of the system by l2tp_session_register(). This puts
    sessions into transient states that are the source of several races, in
    particular with session's deletion path.
    
    This patch centralises the initialisation code into
    pppol2tp_session_init(), which is called before the registration phase.
    The only field that can't be set before session registration is the
    pppol2tp socket pointer, which has already been converted to RCU. So
    pppol2tp_connect() should now be race-free.
    
    The session's .session_close() callback is now set before registration.
    Therefore, it's always called when l2tp_core deletes the session, even
    if it was created by pppol2tp_session_create() and hasn't been plugged
    to a pppol2tp socket yet. That'd prevent session free because the extra
    reference taken by pppol2tp_session_close() wouldn't be dropped by the
    socket's ->sk_destruct() callback (pppol2tp_session_destruct()).
    We could set .session_close() only while connecting a session to its
    pppol2tp socket, or teach pppol2tp_session_close() to avoid grabbing a
    reference when the session isn't connected, but that'd require adding
    some form of synchronisation to be race free.
    
    Instead of that, we can just let the pppol2tp socket hold a reference
    on the session as soon as it starts depending on it (that is, in
    pppol2tp_connect()). Then we don't need to utilise
    pppol2tp_session_close() to hold a reference at the last moment to
    prevent l2tp_core from dropping it.
    
    When releasing the socket, pppol2tp_release() now deletes the session
    using the standard l2tp_session_delete() function, instead of merely
    removing it from hash tables. l2tp_session_delete() drops the reference
    the sessions holds on itself, but also makes sure it doesn't remove a
    session twice. So it can safely be called, even if l2tp_core already
    tried, or is concurrently trying, to remove the session.
    Finally, pppol2tp_session_destruct() drops the reference held by the
    socket.
    
    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>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9bcc0508576b2d50efd958f2ea1c5906749c2c89
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 27 16:51:52 2017 +0200

    l2tp: protect sock pointer of struct pppol2tp_session with RCU
    
    commit ee40fb2e1eb5bc0ddd3f2f83c6e39a454ef5a741 upstream.
    
    pppol2tp_session_create() registers sessions that can't have their
    corresponding socket initialised. This socket has to be created by
    userspace, then connected to the session by pppol2tp_connect().
    Therefore, we need to protect the pppol2tp socket pointer of L2TP
    sessions, so that it can safely be updated when userspace is connecting
    or closing the socket. This will eventually allow pppol2tp_connect()
    to avoid generating transient states while initialising its parts of the
    session.
    
    To this end, this patch protects the pppol2tp socket pointer using RCU.
    
    The pppol2tp socket pointer is still set in pppol2tp_connect(), but
    only once we know the function isn't going to fail. It's eventually
    reset by pppol2tp_release(), which now has to wait for a grace period
    to elapse before it can drop the last reference on the socket. This
    ensures that pppol2tp_session_get_sock() can safely grab a reference
    on the socket, even after ps->sk is reset to NULL but before this
    operation actually gets visible from pppol2tp_session_get_sock().
    
    The rest is standard RCU conversion: pppol2tp_recv(), which already
    runs in atomic context, is simply enclosed by rcu_read_lock() and
    rcu_read_unlock(), while other functions are converted to use
    pppol2tp_session_get_sock() followed by sock_put().
    pppol2tp_session_setsockopt() is a special case. It used to retrieve
    the pppol2tp socket from the L2TP session, which itself was retrieved
    from the pppol2tp socket. Therefore we can just avoid dereferencing
    ps->sk and directly use the original socket pointer instead.
    
    With all users of ps->sk now handling NULL and concurrent updates, the
    L2TP ->ref() and ->deref() callbacks aren't needed anymore. Therefore,
    rather than converting pppol2tp_session_sock_hold() and
    pppol2tp_session_sock_put(), we can just drop them.
    
    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 fc565b4079c51ec5c4637536f73255c5745b90bc
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 27 16:51:51 2017 +0200

    l2tp: initialise l2tp_eth sessions before registering them
    
    commit ee28de6bbd78c2e18111a0aef43ea746f28d2073 upstream.
    
    Sessions must be initialised before being made externally visible by
    l2tp_session_register(). Otherwise the session may be concurrently
    deleted before being initialised, which can confuse the deletion path
    and eventually lead to kernel oops.
    
    Therefore, we need to move l2tp_session_register() down in
    l2tp_eth_create(), but also handle the intermediate step where only the
    session or the netdevice has been registered.
    
    We can't just call l2tp_session_register() in ->ndo_init() because
    we'd have no way to properly undo this operation in ->ndo_uninit().
    Instead, let's register the session and the netdevice in two different
    steps and protect the session's device pointer with RCU.
    
    And now that we allow the session's .dev field to be NULL, we don't
    need to prevent the netdevice from being removed anymore. So we can
    drop the dev_hold() and dev_put() calls in l2tp_eth_create() and
    l2tp_eth_dev_uninit().
    
    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>
    [bwh: Backported to 3.16:
     - Update another 'goto out' in l2tp_eth_create()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 10c15ddabbcf888922adbdd44ca3fecf6eab19d9
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Oct 27 16:51:50 2017 +0200

    l2tp: don't register sessions in l2tp_session_create()
    
    commit 3953ae7b218df4d1e544b98a393666f9ae58a78c upstream.
    
    Sessions created by l2tp_session_create() aren't fully initialised:
    some pseudo-wire specific operations need to be done before making the
    session usable. Therefore the PPP and Ethernet pseudo-wires continue
    working on the returned l2tp session while it's already been exposed to
    the rest of the system.
    This can lead to various issues. In particular, the session may enter
    the deletion process before having been fully initialised, which will
    confuse the session removal code.
    
    This patch moves session registration out of l2tp_session_create(), so
    that callers can control when the session is exposed to the rest of the
    system. This is done by the new l2tp_session_register() function.
    
    Only pppol2tp_session_create() can be easily converted to avoid
    modifying its session after registration (the debug message is dropped
    in order to avoid the need for holding a reference on the session).
    
    For pppol2tp_connect() and l2tp_eth_create()), more work is needed.
    That'll be done in followup patches. For now, let's just register the
    session right after its creation, like it was done before. The only
    difference is that we can easily take a reference on the session before
    registering it, so, at least, we're sure it's not going to be freed
    while we're working on it.
    
    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 8b30b1434cac475c208faff9454156c544c0aa54
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Sep 22 15:39:23 2017 +0200

    l2tp: ensure sessions are freed after their PPPOL2TP socket
    
    commit cdd10c9627496ad25c87ce6394e29752253c69d3 upstream.
    
    If l2tp_tunnel_delete() or l2tp_tunnel_closeall() deletes a session
    right after pppol2tp_release() orphaned its socket, then the 'sock'
    variable of the pppol2tp_session_close() callback is NULL. Yet the
    session is still used by pppol2tp_release().
    
    Therefore we need to take an extra reference in any case, to prevent
    l2tp_tunnel_delete() or l2tp_tunnel_closeall() from freeing the session.
    
    Since the pppol2tp_session_close() callback is only set if the session
    is associated to a PPPOL2TP socket and that both l2tp_tunnel_delete()
    and l2tp_tunnel_closeall() hold the PPPOL2TP socket before calling
    pppol2tp_session_close(), we're sure that pppol2tp_session_close() and
    pppol2tp_session_destruct() are paired and called in the right order.
    So the reference taken by the former will be released by the later.
    
    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 e7e13fa736726e9860a86e5e1ae19ce162e11b71
Author: Roger Quadros <rogerq@ti.com>
Date:   Fri Oct 20 15:16:21 2017 +0300

    mtd: nand: omap2: Fix subpage write
    
    commit 739c64414f01748a36e7d82c8e0611dea94412bd upstream.
    
    Since v4.12, NAND subpage writes were causing a NULL pointer
    dereference on OMAP platforms (omap2-nand) using OMAP_ECC_BCH4_CODE_HW,
    OMAP_ECC_BCH8_CODE_HW and OMAP_ECC_BCH16_CODE_HW.
    
    This is because for those ECC modes, omap_calculate_ecc_bch()
    generates ECC bytes for the entire (multi-sector) page and this can
    overflow the ECC buffer provided by nand_write_subpage_hwecc()
    as it expects ecc.calculate() to return ECC bytes for just one sector.
    
    However, the root cause of the problem is present since v3.9
    but was not seen then as NAND buffers were being allocated
    as one big chunk prior to commit 3deb9979c731 ("mtd: nand: allocate
    aligned buffers if NAND_OWN_BUFFERS is unset").
    
    Fix the issue by providing a OMAP optimized write_subpage()
    implementation.
    
    Fixes: 62116e5171e0 ("mtd: nand: omap2: Support for hardware BCH error correction.")
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    [bwh: Backported to 3.16:
     - Open-code mtd_to_omap()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 24842fd3ead703945b96144e47e33e5444981429
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Fri Oct 13 10:27:45 2017 -0700

    f2fs: expose some sectors to user in inline data or dentry case
    
    commit 5b4267d195dd887c4412e34b5a7365baa741b679 upstream.
    
    If there's some data written through inline data or dentry, we need to shouw
    st_blocks. This fixes reporting zero blocks even though there is small written
    data.
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    [Jaegeuk Kim: avoid link file for quotacheck]
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [bwh: Backported to 3.16:
     - Inline dentries are not supported
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9edaa6732c8bce7bd4c859c0ed36240f304d46e5
Author: Doug Berger <opendmb@gmail.com>
Date:   Wed Oct 25 15:04:13 2017 -0700

    net: bcmgenet: enable loopback during UniMAC sw_reset
    
    commit 28c2d1a7a0bfdf3617800d2beae1c67983c03d15 upstream.
    
    It is necessary for the UniMAC to be clocked at least 5 cycles
    while the sw_reset is asserted to ensure a clean reset.
    
    It was discovered that this condition was not being met when
    connected to an external RGMII PHY that disabled the Rx clock in
    the Power Save state.
    
    This commit modifies the reset_umac function to place the (RG)MII
    interface into a local loopback mode where the Rx clock comes
    from the GENET sourced Tx clk during the sw_reset to ensure the
    presence and stability of the clock.
    
    In addition, it turns out that the sw_reset of the UniMAC is not
    self clearing, but this was masked by a bug in the timeout code.
    
    The sw_reset is now explicitly cleared by zeroing the UMAC_CMD
    register before returning from reset_umac which makes it no
    longer necessary to do so in init_umac and makes the clearing of
    CMD_TX_EN and CMD_RX_EN by umac_enable_set redundant. The
    timeout code (and its associated bug) are removed so reset_umac
    no longer needs to return a result, and that means init_umac
    that calls reset_umac does not need to as well.
    
    Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Update call to init_umac() in bcmgenet_wol_resume()
     - Drop changes in bcmgenet_resume()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ad6856045f9fd17cefb87b06e123b7e96015d7e9
Author: Tuomas Tynkkynen <tuomas@tuxera.com>
Date:   Wed Sep 6 17:59:08 2017 +0300

    net/9p: Switch to wait_event_killable()
    
    commit 9523feac272ccad2ad8186ba4fcc89103754de52 upstream.
    
    Because userspace gets Very Unhappy when calls like stat() and execve()
    return -EINTR on 9p filesystem mounts. For instance, when bash is
    looking in PATH for things to execute and some SIGCHLD interrupts
    stat(), bash can throw a spurious 'command not found' since it doesn't
    retry the stat().
    
    In practice, hitting the problem is rare and needs a really
    slow/bogged down 9p server.
    
    Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: drop changes in trans_xen.c]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d05531b619ded445ae3ec1182ddff26a6596318d
Author: Tuomas Tynkkynen <tuomas@tuxera.com>
Date:   Wed Sep 6 17:59:07 2017 +0300

    fs/9p: Compare qid.path in v9fs_test_inode
    
    commit 8ee031631546cf2f7859cc69593bd60bbdd70b46 upstream.
    
    Commit fd2421f54423 ("fs/9p: When doing inode lookup compare qid details
    and inode mode bits.") transformed v9fs_qid_iget() to use iget5_locked()
    instead of iget_locked(). However, the test() callback is not checking
    fid.path at all, which means that a lookup in the inode cache can now
    accidentally locate a completely wrong inode from the same inode hash
    bucket if the other fields (qid.type and qid.version) match.
    
    Fixes: fd2421f54423 ("fs/9p: When doing inode lookup compare qid details and inode mode bits.")
    Reviewed-by: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 60ade6ae6ea22f3f132bc857bced13b39f83c7fd
Author: Alexander Steffen <Alexander.Steffen@infineon.com>
Date:   Fri Sep 8 17:21:32 2017 +0200

    tpm-dev-common: Reject too short writes
    
    commit ee70bc1e7b63ac8023c9ff9475d8741e397316e7 upstream.
    
    tpm_transmit() does not offer an explicit interface to indicate the number
    of valid bytes in the communication buffer. Instead, it relies on the
    commandSize field in the TPM header that is encoded within the buffer.
    Therefore, ensure that a) enough data has been written to the buffer, so
    that the commandSize field is present and b) the commandSize field does not
    announce more data than has been written to the buffer.
    
    This should have been fixed with CVE-2011-1161 long ago, but apparently
    a correct version of that patch never made it into the kernel.
    
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ff1c23c47688a86b00b6175d39617b88e4a1da9
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Oct 11 10:27:26 2017 -0700

    IB/srp: Avoid that a cable pull can trigger a kernel crash
    
    commit 8a0d18c62121d3c554a83eb96e2752861d84d937 upstream.
    
    This patch fixes the following kernel crash:
    
    general protection fault: 0000 [#1] PREEMPT SMP
    Workqueue: ib_mad2 timeout_sends [ib_core]
    Call Trace:
     ib_sa_path_rec_callback+0x1c4/0x1d0 [ib_core]
     send_handler+0xb2/0xd0 [ib_core]
     timeout_sends+0x14d/0x220 [ib_core]
     process_one_work+0x200/0x630
     worker_thread+0x4e/0x3b0
     kthread+0x113/0x150
    
    Fixes: commit aef9ec39c47f ("IB: Add SCSI RDMA Protocol (SRP) initiator")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    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 a231c5f766dbfbdfaf8620e333b53f9697ce4501
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Oct 11 10:27:22 2017 -0700

    IB/srpt: Do not accept invalid initiator port names
    
    commit c70ca38960399a63d5c048b7b700612ea321d17e upstream.
    
    Make srpt_parse_i_port_id() return a negative value if hex2bin()
    fails.
    
    Fixes: commit a42d985bd5b2 ("ib_srpt: Initial SRP Target merge for v3.3-rc1")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e32ea079893633905756687e8c107b242ade827
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Oct 4 10:50:37 2017 +0300

    scsi: bfa: integer overflow in debugfs
    
    commit 3e351275655d3c84dc28abf170def9786db5176d upstream.
    
    We could allocate less memory than intended because we do:
    
            bfad->regdata = kzalloc(len << 2, GFP_KERNEL);
    
    The shift can overflow leading to a crash.  This is debugfs code so the
    impact is very small.  I fixed the network version of this in March with
    commit 13e2d5187f6b ("bna: integer overflow bug in debugfs").
    
    Fixes: ab2a9ba189e8 ("[SCSI] bfa: add debugfs support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ea41f804e01eab87432ba3e812eee79ce5c87231
Author: Coly Li <colyli@suse.de>
Date:   Fri Oct 13 16:35:29 2017 -0700

    bcache: check ca->alloc_thread initialized before wake up it
    
    commit 91af8300d9c1d7c6b6a2fd754109e08d4798b8d8 upstream.
    
    In bcache code, sysfs entries are created before all resources get
    allocated, e.g. allocation thread of a cache set.
    
    There is posibility for NULL pointer deference if a resource is accessed
    but which is not initialized yet. Indeed Jorg Bornschein catches one on
    cache set allocation thread and gets a kernel oops.
    
    The reason for this bug is, when bch_bucket_alloc() is called during
    cache set registration and attaching, ca->alloc_thread is not properly
    allocated and initialized yet, call wake_up_process() on ca->alloc_thread
    triggers NULL pointer deference failure. A simple and fast fix is, before
    waking up ca->alloc_thread, checking whether it is allocated, and only
    wake up ca->alloc_thread when it is not NULL.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reported-by: Jorg Bornschein <jb@capsec.org>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8472d5e566abecd82869ac4b1e8f5a15f61b3205
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Oct 12 10:54:21 2017 +0200

    USB: serial: metro-usb: stop I/O after failed open
    
    commit 2339536d229df25c71c0900fc619289229bfecf6 upstream.
    
    Make sure to kill the interrupt-in URB after a failed open request.
    Apart from saving power (and avoiding stale input after a later
    successful open), this also prevents a NULL-deref in the completion
    handler if the port is manually unbound.
    
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: 704577861d5e ("USB: serial: metro-usb: get data from device in Uni-Directional mode.")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b5790228629dea230ca482fe7675fcebf2bccdfe
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Oct 12 17:31:46 2017 +0200

    elf_fdpic: fix unused variable warning
    
    commit 11e3e8d6d9274bf630859b4c47bc4e4d76f289db upstream.
    
    The elf_fdpic code shows a harmless warning when built with MMU disabled,
    I ran into this now that fdpic is available on ARM randconfig builds
    since commit 50b2b2e691cd ("ARM: add ELF_FDPIC support").
    
    fs/binfmt_elf_fdpic.c: In function 'elf_fdpic_dump_segments':
    fs/binfmt_elf_fdpic.c:1501:17: error: unused variable 'addr' [-Werror=unused-variable]
    
    This adds another #ifdef around the variable declaration to shut up
    the warning.
    
    Fixes: e6c1baa9b562 ("convert the rest of binfmt_elf_fdpic to dump_emit()")
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 83cce6c3dd6b659bfdc0a8f79503068e21df1534
Author: Ladi Prosek <lprosek@redhat.com>
Date:   Wed Oct 11 16:54:42 2017 +0200

    KVM: nVMX: set IDTR and GDTR limits when loading L1 host state
    
    commit 21f2d551183847bc7fbe8d866151d00cdad18752 upstream.
    
    Intel SDM 27.5.2 Loading Host Segment and Descriptor-Table Registers:
    
    "The GDTR and IDTR limits are each set to FFFFH."
    
    Signed-off-by: Ladi Prosek <lprosek@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e20e2214ed39081f3f0a470714e92bdc96edb890
Author: Sean Young <sean@mess.org>
Date:   Sun Oct 8 14:18:52 2017 -0400

    media: rc: check for integer overflow
    
    commit 3e45067f94bbd61dec0619b1c32744eb0de480c8 upstream.
    
    The ioctl LIRC_SET_REC_TIMEOUT would set a timeout of 704ns if called
    with a timeout of 4294968us.
    
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bb6730388a1d2e8c454503c0ac82355d91611b80
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Oct 11 14:02:58 2017 +0200

    USB: serial: garmin_gps: fix memory leak on probe errors
    
    commit 74d471b598444b7f2d964930f7234779c80960a0 upstream.
    
    Make sure to free the port private data before returning after a failed
    probe attempt.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9a4a78031dac3578204d25561e4f51ab2ba23fd1
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Oct 11 14:02:57 2017 +0200

    USB: serial: garmin_gps: fix I/O after failed probe and remove
    
    commit 19a565d9af6e0d828bd0d521d3bafd5017f4ce52 upstream.
    
    Make sure to stop any submitted interrupt and bulk-out URBs before
    returning after failed probe and when the port is being unbound to avoid
    later NULL-pointer dereferences in the completion callbacks.
    
    Also fix up the related and broken I/O cancellation on failed open and
    on close. (Note that port->write_urb was never submitted.)
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ba62f185d9f930d59f22d87bb5fe1f7dc50e9ff4
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Tue Sep 26 17:11:33 2017 +0200

    p54: don't unregister leds when they are not initialized
    
    commit fc09785de0a364427a5df63d703bae9a306ed116 upstream.
    
    ieee80211_register_hw() in p54_register_common() may fail and leds won't
    get initialized. Currently p54_unregister_common() doesn't check that and
    always calls p54_unregister_leds(). The fix is to check priv->registered
    flag before calling p54_unregister_leds().
    
    Found by syzkaller.
    
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 1 PID: 1404 Comm: kworker/1:1 Not tainted
    4.14.0-rc1-42251-gebb2c2437d80-dirty #205
    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
     dump_stack+0x292/0x395 lib/dump_stack.c:52
     register_lock_class+0x6c4/0x1a00 kernel/locking/lockdep.c:769
     __lock_acquire+0x27e/0x4550 kernel/locking/lockdep.c:3385
     lock_acquire+0x259/0x620 kernel/locking/lockdep.c:4002
     flush_work+0xf0/0x8c0 kernel/workqueue.c:2886
     __cancel_work_timer+0x51d/0x870 kernel/workqueue.c:2961
     cancel_delayed_work_sync+0x1f/0x30 kernel/workqueue.c:3081
     p54_unregister_leds+0x6c/0xc0 drivers/net/wireless/intersil/p54/led.c:160
     p54_unregister_common+0x3d/0xb0 drivers/net/wireless/intersil/p54/main.c:856
     p54u_disconnect+0x86/0x120 drivers/net/wireless/intersil/p54/p54usb.c:1073
     usb_unbind_interface+0x21c/0xa90 drivers/usb/core/driver.c:423
     __device_release_driver drivers/base/dd.c:861
     device_release_driver_internal+0x4f4/0x5c0 drivers/base/dd.c:893
     device_release_driver+0x1e/0x30 drivers/base/dd.c:918
     bus_remove_device+0x2f4/0x4b0 drivers/base/bus.c:565
     device_del+0x5c4/0xab0 drivers/base/core.c:1985
     usb_disable_device+0x1e9/0x680 drivers/usb/core/message.c:1170
     usb_disconnect+0x260/0x7a0 drivers/usb/core/hub.c:2124
     hub_port_connect drivers/usb/core/hub.c:4754
     hub_port_connect_change drivers/usb/core/hub.c:5009
     port_event drivers/usb/core/hub.c:5115
     hub_event+0x1318/0x3740 drivers/usb/core/hub.c:5195
     process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
     process_scheduled_works kernel/workqueue.c:2179
     worker_thread+0xb2b/0x1850 kernel/workqueue.c:2255
     kthread+0x3a1/0x470 kernel/kthread.c:231
     ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Christian Lamparter <chunkeey@googlemail.com>
    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 6addf2c8f4571d3ce4c539d01d83051107abd229
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 28 11:21:57 2017 +0300

    drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel
    
    commit 348e4058ebf53904e817eec7a1b25327143c2ed2 upstream.
    
    While technically CHV isn't DDI, we do look at the VBT based DDI port
    info for HDMI DDC pin and DP AUX channel. (We call these "alternate",
    but they're really just something that aren't platform defaults.)
    
    In commit e4ab73a13291 ("drm/i915: Respect alternate_ddc_pin for all DDI
    ports") Ville writes, "IIRC there may be CHV system that might actually
    need this."
    
    I'm not sure why there couldn't be even more platforms that need this,
    but start conservative, and parse the info for CHV in addition to DDI.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100553
    Reported-by: Marek Wilczewski <mw@3cte.pl>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/d0815082cb98487618429b62414854137049b888.1506586821.git.jani.nikula@intel.com
    [bwh: Backported to 3.16: IS_CHERRYVIEW() takes a drm_device pointer]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5293e74b7d247f61abfe75bcb8b761c7f77bb8eb
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Apr 1 18:37:25 2016 +0300

    drm/i915: Read timings from the correct transcoder in intel_crtc_mode_get()
    
    commit e30a154b5262b967b133b06ac40777e651045898 upstream.
    
    intel_crtc->config->cpu_transcoder isn't yet filled out when
    intel_crtc_mode_get() gets called during output probing, so we should
    not use it there. Instead intel_crtc_mode_get() figures out the correct
    transcoder on its own, and that's what we should use.
    
    If the BIOS boots LVDS on pipe B, intel_crtc_mode_get() would actually
    end up reading the timings from pipe A instead (since PIPE_A==0),
    which clearly isn't what we want.
    
    It looks to me like this may have been broken by
    commit eccb140bca67 ("drm/i915: hw state readout&check support for cpu_transcoder")
    as that one removed the early initialization of cpu_transcoder from
    intel_crtc_init().
    
    Cc: dri-devel@lists.freedesktop.org
    Cc: Rob Kramer <rob@solution-space.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reported-by: Rob Kramer <rob@solution-space.com>
    Fixes: eccb140bca67 ("drm/i915: hw state readout&check support for cpu_transcoder")
    References: https://lists.freedesktop.org/archives/dri-devel/2016-April/104142.html
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/1459525046-19425-1-git-send-email-ville.syrjala@linux.intel.com
    [bwh: Backported to 3.16: pipe_config is a struct not a pointer]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d334f7a132883f55c25310001443722e41b4db3
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Oct 6 23:09:55 2017 -0400

    ext4: fix interaction between i_size, fallocate, and delalloc after a crash
    
    commit 51e3ae81ec58e95f10a98ef3dd6d7bce5d8e35a2 upstream.
    
    If there are pending writes subject to delayed allocation, then i_size
    will show size after the writes have completed, while i_disksize
    contains the value of i_size on the disk (since the writes have not
    been persisted to disk).
    
    If fallocate(2) is called with the FALLOC_FL_KEEP_SIZE flag, either
    with or without the FALLOC_FL_ZERO_RANGE flag set, and the new size
    after the fallocate(2) is between i_size and i_disksize, then after a
    crash, if a journal commit has resulted in the changes made by the
    fallocate() call to be persisted after a crash, but the delayed
    allocation write has not resolved itself, i_size would not be updated,
    and this would cause the following e2fsck complaint:
    
    Inode 12, end of extent exceeds allowed value
            (logical block 33, physical block 33441, len 7)
    
    This can only take place on a sparse file, where the fallocate(2) call
    is allocating blocks in a range which is before a pending delayed
    allocation write which is extending i_size.  Since this situation is
    quite rare, and the window in which the crash must take place is
    typically < 30 seconds, in practice this condition will rarely happen.
    
    Nevertheless, it can be triggered in testing, and in particular by
    xfstests generic/456.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4bc8c44b31bdf278186fccfa15dea602ad81f8de
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Oct 6 15:00:53 2017 +0200

    iommu/vt-d: Don't register bus-notifier under dmar_global_lock
    
    commit ec154bf56b276a0bb36079a5d22a267b5f417801 upstream.
    
    The notifier function will take the dmar_global_lock too, so
    lockdep complains about inverse locking order when the
    notifier is registered under the dmar_global_lock.
    
    Reported-by: Jan Kiszka <jan.kiszka@siemens.com>
    Fixes: 59ce0515cdaf ('iommu/vt-d: Update DRHD/RMRR/ATSR device scope caches when PCI hotplug happens')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b761ef698d4f961218687b8f756cd486f5948a8f
Author: Gabriele Paoloni <gabriele.paoloni@huawei.com>
Date:   Thu Sep 28 15:33:05 2017 +0100

    PCI/AER: Report non-fatal errors only to the affected endpoint
    
    commit 86acc790717fb60fb51ea3095084e331d8711c74 upstream.
    
    Previously, if an non-fatal error was reported by an endpoint, we
    called report_error_detected() for the endpoint, every sibling on the
    bus, and their descendents.  If any of them did not implement the
    .error_detected() method, do_recovery() failed, leaving all these
    devices unrecovered.
    
    For example, the system described in the bugzilla below has two devices:
    
      0000:74:02.0 [19e5:a230] SAS controller, driver has .error_detected()
      0000:74:03.0 [19e5:a235] SATA controller, driver lacks .error_detected()
    
    When a device such as 74:02.0 reported a non-fatal error, do_recovery()
    failed because 74:03.0 lacked an .error_detected() method.  But per PCIe
    r3.1, sec 6.2.2.2.2, such an error does not compromise the Link and
    does not affect 74:03.0:
    
      Non-fatal errors are uncorrectable errors which cause a particular
      transaction to be unreliable but the Link is otherwise fully functional.
      Isolating Non-fatal from Fatal errors provides Requester/Receiver logic
      in a device or system management software the opportunity to recover from
      the error without resetting the components on the Link and disturbing
      other transactions in progress.  Devices not associated with the
      transaction in error are not impacted by the error.
    
    Report non-fatal errors only to the endpoint that reported them.  We really
    want to check for AER_NONFATAL here, but the current code structure doesn't
    allow that.  Looking for pci_channel_io_normal is the best we can do now.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197055
    Fixes: 6c2b374d7485 ("PCI-Express AER implemetation: AER core and aerdriver")
    Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com>
    Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
    [bhelgaas: changelog]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf1231629a67aea1e5c6d29420ff6caab89cbbf8
Author: Manasi Navare <manasi.d.navare@intel.com>
Date:   Wed Oct 4 09:48:26 2017 -0700

    drm/i915/edp: Get the Panel Power Off timestamp after panel is off
    
    commit cbacf02e7796fea02e5c6e46c90ed7cbe9e6f2c0 upstream.
    
    Kernel stores the time in jiffies at which the eDP panel is turned
    off. This should be obtained after the panel is off (after the
    wait_panel_off). When we next attempt to turn the panel on, we use the
    difference between the timestamp at which we want to turn the panel on
    and timestamp at which panel was turned off to ensure that this is equal
    to panel power cycle delay and if not we wait for the remaining
    time. Not waiting for the panel power cycle delay can cause the panel to
    not turn on giving rise to AUX timeouts for the attempted AUX
    transactions.
    
    v2:
    * Separate lines for bugzilla (Jani Nikula)
    * Suggested by tag (Daniel Vetter)
    
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101518
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101144
    Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Jani Nikula <jani.nikula@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1507135706-17147-1-git-send-email-manasi.d.navare@intel.com
    [bwh: Backported to 3.16: We really do use jiffies here, and the field in
     struct intel_dp has a different name]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 497b1d23ffba581c1ad23cd08040d6b1e7feae6d
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Oct 1 02:18:37 2017 +0100

    usbip: tools: Install all headers needed for libusbip development
    
    commit c15562c0dcb2c7f26e891923b784cf1926b8c833 upstream.
    
    usbip_host_driver.h now depends on several additional headers, which
    need to be installed along with it.
    
    Fixes: 021aed845303 ("staging: usbip: userspace: migrate usbip_host_driver ...")
    Fixes: 3391ba0e2792 ("usbip: tools: Extract generic code to be shared with ...")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4441dfde01600d60ba0ca047e9a40222970fc36
Author: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Date:   Thu Sep 28 13:53:27 2017 +0200

    rtc: set the alarm to the next expiring timer
    
    commit 74717b28cb32e1ad3c1042cafd76b264c8c0f68d upstream.
    
    If there is any non expired timer in the queue, the RTC alarm is never set.
    This is an issue when adding a timer that expires before the next non
    expired timer.
    
    Ensure the RTC alarm is set in that case.
    
    Fixes: 2b2f5ff00f63 ("rtc: interface: ignore expired timers when enqueuing new timers")
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 39fae4d713c2063df49efefe1b8783037c9e238c
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon May 16 17:22:54 2016 +0100

    rtc: interface: ignore expired timers when enqueuing new timers
    
    commit 2b2f5ff00f63847d95adad6289bd8b05f5983dd5 upstream.
    
    This patch fixes a RTC wakealarm issue, namely, the event fires during
    hibernate and is not cleared from the list, causing hwclock to block.
    
    The current enqueuing does not trigger an alarm if any expired timers
    already exist on the timerqueue. This can occur when a RTC wake alarm
    is used to wake a machine out of hibernate and the resumed state has
    old expired timers that have not been removed from the timer queue.
    This fix skips over any expired timers and triggers an alarm if there
    are no pending timers on the timerqueue. Note that the skipped expired
    timer will get reaped later on, so there is no need to clean it up
    immediately.
    
    The issue can be reproduced by putting a machine into hibernate and
    waking it with the RTC wakealarm.  Running the example RTC test program
    from tools/testing/selftests/timers/rtctest.c after the hibernate will
    block indefinitely.  With the fix, it no longer blocks after the
    hibernate resume.
    
    BugLink: http://bugs.launchpad.net/bugs/1333569
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d1a8438f44ba51b318cb67deac8e33615cd8f752
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Sep 11 11:24:22 2017 +0200

    s390/runtime instrumention: fix possible memory corruption
    
    commit d6e646ad7cfa7034d280459b2b2546288f247144 upstream.
    
    For PREEMPT enabled kernels the runtime instrumentation (RI) code
    contains a possible use-after-free bug. If a task that makes use of RI
    exits, it will execute do_exit() while still enabled for preemption.
    
    That function will call exit_thread_runtime_instr() via
    exit_thread(). If exit_thread_runtime_instr() gets preempted after the
    RI control block of the task has been freed but before the pointer to
    it is set to NULL, then save_ri_cb(), called from switch_to(), will
    write to already freed memory.
    
    Avoid this and simply disable preemption while freeing the control
    block and setting the pointer to NULL.
    
    Fixes: e4b8b3f33fca ("s390: add support for runtime instrumentation")
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@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 a21cd982609b98dca939984e702ca325bec59538
Author: Corey Minyard <cminyard@mvista.com>
Date:   Sat Jul 29 21:14:55 2017 -0500

    ipmi: fix unsigned long underflow
    
    commit 392a17b10ec4320d3c0e96e2a23ebaad1123b989 upstream.
    
    When I set the timeout to a specific value such as 500ms, the timeout
    event will not happen in time due to the overflow in function
    check_msg_timeout:
    ...
            ent->timeout -= timeout_period;
            if (ent->timeout > 0)
                    return;
    ...
    
    The type of timeout_period is long, but ent->timeout is unsigned long.
    This patch makes the type consistent.
    
    Reported-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Tested-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 16ac4c8ee991e019e4da6275b7905920379a3581
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Sep 20 12:04:04 2017 -0700

    Input: adxl34x - do not treat FIFO_MODE() as boolean
    
    commit 1dbc080c9ef6bcfba652ef0d6ae919b8c7c85a1d upstream.
    
    FIFO_MODE() is a macro expression with a '<<' operator, which gcc points
    out could be misread as a '<':
    
    drivers/input/misc/adxl34x.c: In function 'adxl34x_probe':
    drivers/input/misc/adxl34x.c:799:36: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
    
    While utility of this warning is being disputed (Chief Penguin: "This
    warning is clearly pure garbage.") FIFO_MODE() extracts range of values,
    with 0 being FIFO_BYPASS, and not something that is logically boolean.
    
    This converts the test to an explicit comparison with FIFO_BYPASS,
    making it clearer to gcc and the reader what is intended.
    
    Fixes: e27c729219ad ("Input: add driver for ADXL345/346 Digital Accelerometers")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e764e8ce8c50a4c9136f7d02e8e3bf3e56fa468f
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Sep 5 20:25:25 2017 +0000

    staging: lustre: ptlrpc: kfree used instead of kvfree
    
    commit c3eec59659cf25916647d2178c541302bb4822ad upstream.
    
    rq_reqbuf is allocated using kvmalloc() but released in one occasion
    using kfree() instead of kvfree().
    
    The issue was found using grep based on a similar bug.
    
    Fixes: d7e09d0397e8 ("add Lustre file system client support")
    Fixes: ee0ec1946ec2 ("lustre: ptlrpc: Replace uses of OBD_{ALLOC,FREE}_LARGE")
    
    Cc: Peng Tao <bergwolf@gmail.com>
    Cc: Oleg Drokin <oleg.drokin@intel.com>
    Cc: James Simmons <jsimmons@infradead.org>
    
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: use OBD_FREE_LARGE()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Reviewed-by: James Simmons <jsimmons@infradead.org>

commit 4dd6bb03173558d7d82f420adecbe79f8f0a7d9b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Sep 5 09:47:26 2017 +0200

    drm: gma500: fix logic error
    
    commit 67a3b63a54cbe18944191f43d644686731cf30c7 upstream.
    
    gcc-8 points out a condition that almost certainly doesn't
    do what the author had in mind:
    
    drivers/gpu/drm/gma500/mdfld_intel_display.c: In function 'mdfldWaitForPipeEnable':
    drivers/gpu/drm/gma500/mdfld_intel_display.c:102:37: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
    
    This changes it to a simple bit mask operation to check
    whether the bit is set.
    
    Fixes: 026abc333205 ("gma500: initial medfield merge")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170905074741.435324-1-arnd@arndb.de
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>