commit de8cdc5572311b0742eccf3c0cfd34af1e105904
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Mar 24 11:01:30 2018 +0100

    Linux 4.14.30

commit 5019b23699f4de435e6a601db82e5c41e0cbfa68
Author: Adit Ranadive <aditr@vmware.com>
Date:   Thu Feb 15 12:36:46 2018 -0800

    RDMA/vmw_pvrdma: Fix usage of user response structures in ABI file
    
    commit 1f5a6c47aabc4606f91ad2e6ef71a1ff1924101c upstream.
    
    This ensures that we return the right structures back to userspace.
    Otherwise, it looks like the reserved fields in the response structures
    in userspace might have uninitialized data in them.
    
    Fixes: 8b10ba783c9d ("RDMA/vmw_pvrdma: Add shared receive queue support")
    Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver")
    Suggested-by: Jason Gunthorpe <jgg@mellanox.com>
    Reviewed-by: Bryan Tan <bryantan@vmware.com>
    Reviewed-by: Aditya Sarwade <asarwade@vmware.com>
    Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
    Signed-off-by: Adit Ranadive <aditr@vmware.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 957435b566c9d14afa3cb957b2ba7b57c6eda787
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Mon Nov 6 10:47:54 2017 -0800

    kbuild: fix linker feature test macros when cross compiling with Clang
    
    commit 86a9df597cdd564d2d29c65897bcad42519e3678 upstream.
    
    I was not seeing my linker flags getting added when using ld-option when
    cross compiling with Clang. Upon investigation, this seems to be due to
    a difference in how GCC vs Clang handle cross compilation.
    
    GCC is configured at build time to support one backend, that is implicit
    when compiling.  Clang is explicit via the use of `-target <triple>` and
    ships with all supported backends by default.
    
    GNU Make feature test macros that compile then link will always fail
    when cross compiling with Clang unless Clang's triple is passed along to
    the compiler. For example:
    
    $ clang -x c /dev/null -c -o temp.o
    $ aarch64-linux-android/bin/ld -E temp.o
    aarch64-linux-android/bin/ld:
    unknown architecture of input file `temp.o' is incompatible with
    aarch64 output
    aarch64-linux-android/bin/ld:
    warning: cannot find entry symbol _start; defaulting to
    0000000000400078
    $ echo $?
    1
    
    $ clang -target aarch64-linux-android- -x c /dev/null -c -o temp.o
    $ aarch64-linux-android/bin/ld -E temp.o
    aarch64-linux-android/bin/ld:
    warning: cannot find entry symbol _start; defaulting to 00000000004002e4
    $ echo $?
    0
    
    This causes conditional checks that invoke $(CC) without the target
    triple, then $(LD) on the result, to always fail.
    
    Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Greg Hackmann <ghackmann@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e82496fbe3a08489ffbbbcdf995be8aec575428d
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Tue Mar 13 18:37:27 2018 +0200

    RDMA/ucma: Don't allow join attempts for unsupported AF family
    
    commit 0c81ffc60d5280991773d17e84bda605387148b1 upstream.
    
    Users can provide garbage while calling to ucma_join_ip_multicast(),
    it will indirectly cause to rdma_addr_size() return 0, making the
    call to ucma_process_join(), which had the right checks, but it is
    better to check the input as early as possible.
    
    The following crash from syzkaller revealed it.
    
    kernel BUG at lib/string.c:1052!
    invalid opcode: 0000 [#1] SMP KASAN Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 4113 Comm: syz-executor0 Not tainted 4.16.0-rc5+ #261
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:fortify_panic+0x13/0x20 lib/string.c:1051
    RSP: 0018:ffff8801ca81f8f0 EFLAGS: 00010286
    RAX: 0000000000000022 RBX: 1ffff10039503f23 RCX: 0000000000000000
    RDX: 0000000000000022 RSI: 1ffff10039503ed3 RDI: ffffed0039503f12
    RBP: ffff8801ca81f8f0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000006 R11: 0000000000000000 R12: ffff8801ca81f998
    R13: ffff8801ca81f938 R14: ffff8801ca81fa58 R15: 000000000000fa00
    FS:  0000000000000000(0000) GS:ffff8801db200000(0063) knlGS:000000000a12a900
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 0000000008138024 CR3: 00000001cbb58004 CR4: 00000000001606f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     memcpy include/linux/string.h:344 [inline]
     ucma_join_ip_multicast+0x36b/0x3b0 drivers/infiniband/core/ucma.c:1421
     ucma_write+0x2d6/0x3d0 drivers/infiniband/core/ucma.c:1633
     __vfs_write+0xef/0x970 fs/read_write.c:480
     vfs_write+0x189/0x510 fs/read_write.c:544
     SYSC_write fs/read_write.c:589 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:581
     do_syscall_32_irqs_on arch/x86/entry/common.c:330 [inline]
     do_fast_syscall_32+0x3ec/0xf9f arch/x86/entry/common.c:392
     entry_SYSENTER_compat+0x70/0x7f arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7f9ec99
    RSP: 002b:00000000ff8172cc EFLAGS: 00000282 ORIG_RAX: 0000000000000004
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000020000100
    RDX: 0000000000000063 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    Code: 08 5b 41 5c 41 5d 41 5e 41 5f 5d c3 0f 0b 48 89 df e8 42 2c e3 fb eb de
    55 48 89 fe 48 c7 c7 80 75 98 86 48 89 e5 e8 85 95 94 fb <0f> 0b 90 90 90 90
    90 90 90 90 90 90 90 55 48 89 e5 41 57 41 56
    RIP: fortify_panic+0x13/0x20 lib/string.c:1051 RSP: ffff8801ca81f8f0
    
    Fixes: 5bc2b7b397b0 ("RDMA/ucma: Allow user space to specify AF_IB when joining multicast")
    Reported-by: <syzbot+2287ac532caa81900a4e@syzkaller.appspotmail.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Sean Hefty <sean.hefty@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce3e82c0630f9360f22ad283c9c9511090b049f5
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Tue Mar 13 11:43:23 2018 +0200

    RDMA/ucma: Fix access to non-initialized CM_ID object
    
    commit 7688f2c3bbf55e52388e37ac5d63ca471a7712e1 upstream.
    
    The attempt to join multicast group without ensuring that CMA device
    exists will lead to the following crash reported by syzkaller.
    
    [   64.076794] BUG: KASAN: null-ptr-deref in rdma_join_multicast+0x26e/0x12c0
    [   64.076797] Read of size 8 at addr 00000000000000b0 by task join/691
    [   64.076797]
    [   64.076800] CPU: 1 PID: 691 Comm: join Not tainted 4.16.0-rc1-00219-gb97853b65b93 #23
    [   64.076802] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.0-0-g63451fca13-prebuilt.qemu-proj4
    [   64.076803] Call Trace:
    [   64.076809]  dump_stack+0x5c/0x77
    [   64.076817]  kasan_report+0x163/0x380
    [   64.085859]  ? rdma_join_multicast+0x26e/0x12c0
    [   64.086634]  rdma_join_multicast+0x26e/0x12c0
    [   64.087370]  ? rdma_disconnect+0xf0/0xf0
    [   64.088579]  ? __radix_tree_replace+0xc3/0x110
    [   64.089132]  ? node_tag_clear+0x81/0xb0
    [   64.089606]  ? idr_alloc_u32+0x12e/0x1a0
    [   64.090517]  ? __fprop_inc_percpu_max+0x150/0x150
    [   64.091768]  ? tracing_record_taskinfo+0x10/0xc0
    [   64.092340]  ? idr_alloc+0x76/0xc0
    [   64.092951]  ? idr_alloc_u32+0x1a0/0x1a0
    [   64.093632]  ? ucma_process_join+0x23d/0x460
    [   64.094510]  ucma_process_join+0x23d/0x460
    [   64.095199]  ? ucma_migrate_id+0x440/0x440
    [   64.095696]  ? futex_wake+0x10b/0x2a0
    [   64.096159]  ucma_join_multicast+0x88/0xe0
    [   64.096660]  ? ucma_process_join+0x460/0x460
    [   64.097540]  ? _copy_from_user+0x5e/0x90
    [   64.098017]  ucma_write+0x174/0x1f0
    [   64.098640]  ? ucma_resolve_route+0xf0/0xf0
    [   64.099343]  ? rb_erase_cached+0x6c7/0x7f0
    [   64.099839]  __vfs_write+0xc4/0x350
    [   64.100622]  ? perf_syscall_enter+0xe4/0x5f0
    [   64.101335]  ? kernel_read+0xa0/0xa0
    [   64.103525]  ? perf_sched_cb_inc+0xc0/0xc0
    [   64.105510]  ? syscall_exit_register+0x2a0/0x2a0
    [   64.107359]  ? __switch_to+0x351/0x640
    [   64.109285]  ? fsnotify+0x899/0x8f0
    [   64.111610]  ? fsnotify_unmount_inodes+0x170/0x170
    [   64.113876]  ? __fsnotify_update_child_dentry_flags+0x30/0x30
    [   64.115813]  ? ring_buffer_record_is_on+0xd/0x20
    [   64.117824]  ? __fget+0xa8/0xf0
    [   64.119869]  vfs_write+0xf7/0x280
    [   64.122001]  SyS_write+0xa1/0x120
    [   64.124213]  ? SyS_read+0x120/0x120
    [   64.126644]  ? SyS_read+0x120/0x120
    [   64.128563]  do_syscall_64+0xeb/0x250
    [   64.130732]  entry_SYSCALL_64_after_hwframe+0x21/0x86
    [   64.132984] RIP: 0033:0x7f5c994ade99
    [   64.135699] RSP: 002b:00007f5c99b97d98 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [   64.138740] RAX: ffffffffffffffda RBX: 00000000200001e4 RCX: 00007f5c994ade99
    [   64.141056] RDX: 00000000000000a0 RSI: 00000000200001c0 RDI: 0000000000000015
    [   64.143536] RBP: 00007f5c99b97ec0 R08: 0000000000000000 R09: 0000000000000000
    [   64.146017] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f5c99b97fc0
    [   64.148608] R13: 0000000000000000 R14: 00007fff660e1c40 R15: 00007f5c99b989c0
    [   64.151060]
    [   64.153703] Disabling lock debugging due to kernel taint
    [   64.156032] BUG: unable to handle kernel NULL pointer dereference at 00000000000000b0
    [   64.159066] IP: rdma_join_multicast+0x26e/0x12c0
    [   64.161451] PGD 80000001d0298067 P4D 80000001d0298067 PUD 1dea39067 PMD 0
    [   64.164442] Oops: 0000 [#1] SMP KASAN PTI
    [   64.166817] CPU: 1 PID: 691 Comm: join Tainted: G    B 4.16.0-rc1-00219-gb97853b65b93 #23
    [   64.170004] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.0-0-g63451fca13-prebuilt.qemu-proj4
    [   64.174985] RIP: 0010:rdma_join_multicast+0x26e/0x12c0
    [   64.177246] RSP: 0018:ffff8801c8207860 EFLAGS: 00010282
    [   64.179901] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff94789522
    [   64.183344] RDX: 1ffffffff2d50fa5 RSI: 0000000000000297 RDI: 0000000000000297
    [   64.186237] RBP: ffff8801c8207a50 R08: 0000000000000000 R09: ffffed0039040ea7
    [   64.189328] R10: 0000000000000001 R11: ffffed0039040ea6 R12: 0000000000000000
    [   64.192634] R13: 0000000000000000 R14: ffff8801e2022800 R15: ffff8801d4ac2400
    [   64.196105] FS:  00007f5c99b98700(0000) GS:ffff8801e5d00000(0000) knlGS:0000000000000000
    [   64.199211] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   64.202046] CR2: 00000000000000b0 CR3: 00000001d1c48004 CR4: 00000000003606a0
    [   64.205032] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   64.208221] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   64.211554] Call Trace:
    [   64.213464]  ? rdma_disconnect+0xf0/0xf0
    [   64.216124]  ? __radix_tree_replace+0xc3/0x110
    [   64.219337]  ? node_tag_clear+0x81/0xb0
    [   64.222140]  ? idr_alloc_u32+0x12e/0x1a0
    [   64.224422]  ? __fprop_inc_percpu_max+0x150/0x150
    [   64.226588]  ? tracing_record_taskinfo+0x10/0xc0
    [   64.229763]  ? idr_alloc+0x76/0xc0
    [   64.232186]  ? idr_alloc_u32+0x1a0/0x1a0
    [   64.234505]  ? ucma_process_join+0x23d/0x460
    [   64.237024]  ucma_process_join+0x23d/0x460
    [   64.240076]  ? ucma_migrate_id+0x440/0x440
    [   64.243284]  ? futex_wake+0x10b/0x2a0
    [   64.245302]  ucma_join_multicast+0x88/0xe0
    [   64.247783]  ? ucma_process_join+0x460/0x460
    [   64.250841]  ? _copy_from_user+0x5e/0x90
    [   64.253878]  ucma_write+0x174/0x1f0
    [   64.257008]  ? ucma_resolve_route+0xf0/0xf0
    [   64.259877]  ? rb_erase_cached+0x6c7/0x7f0
    [   64.262746]  __vfs_write+0xc4/0x350
    [   64.265537]  ? perf_syscall_enter+0xe4/0x5f0
    [   64.267792]  ? kernel_read+0xa0/0xa0
    [   64.270358]  ? perf_sched_cb_inc+0xc0/0xc0
    [   64.272575]  ? syscall_exit_register+0x2a0/0x2a0
    [   64.275367]  ? __switch_to+0x351/0x640
    [   64.277700]  ? fsnotify+0x899/0x8f0
    [   64.280530]  ? fsnotify_unmount_inodes+0x170/0x170
    [   64.283156]  ? __fsnotify_update_child_dentry_flags+0x30/0x30
    [   64.286182]  ? ring_buffer_record_is_on+0xd/0x20
    [   64.288749]  ? __fget+0xa8/0xf0
    [   64.291136]  vfs_write+0xf7/0x280
    [   64.292972]  SyS_write+0xa1/0x120
    [   64.294965]  ? SyS_read+0x120/0x120
    [   64.297474]  ? SyS_read+0x120/0x120
    [   64.299751]  do_syscall_64+0xeb/0x250
    [   64.301826]  entry_SYSCALL_64_after_hwframe+0x21/0x86
    [   64.304352] RIP: 0033:0x7f5c994ade99
    [   64.306711] RSP: 002b:00007f5c99b97d98 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [   64.309577] RAX: ffffffffffffffda RBX: 00000000200001e4 RCX: 00007f5c994ade99
    [   64.312334] RDX: 00000000000000a0 RSI: 00000000200001c0 RDI: 0000000000000015
    [   64.315783] RBP: 00007f5c99b97ec0 R08: 0000000000000000 R09: 0000000000000000
    [   64.318365] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f5c99b97fc0
    [   64.320980] R13: 0000000000000000 R14: 00007fff660e1c40 R15: 00007f5c99b989c0
    [   64.323515] Code: e8 e8 79 08 ff 4c 89 ff 45 0f b6 a7 b8 01 00 00 e8 68 7c 08 ff 49 8b 1f 4d 89 e5 49 c1 e4 04 48 8
    [   64.330753] RIP: rdma_join_multicast+0x26e/0x12c0 RSP: ffff8801c8207860
    [   64.332979] CR2: 00000000000000b0
    [   64.335550] ---[ end trace 0c00c17a408849c1 ]---
    
    Reported-by: <syzbot+e6aba77967bd72cbc9d6@syzkaller.appspotmail.com>
    Fixes: c8f6a362bf3e ("RDMA/cma: Add multicast communication support")
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Sean Hefty <sean.hefty@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 712b442c68c2406d72ed7ee603f04063b55a82c6
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Wed Feb 14 14:43:36 2018 +0100

    clk: migrate the count of orphaned clocks at init
    
    commit 99652a469df19086d594e8e89757d4081a812789 upstream.
    
    The orphan clocks reparents should migrate any existing count from the
    orphan clock to its new acestor clocks, otherwise we may have
    inconsistent counts in the tree and end-up with gated critical clocks
    
    Assuming we have two clocks, A and B.
    * Clock A has CLK_IS_CRITICAL flag set.
    * Clock B is an ancestor of A which can gate. Clock B gate is left
      enabled by the bootloader.
    
    Step 1: Clock A is registered. Since it is a critical clock, it is
    enabled. The clock being still an orphan, no parent are enabled.
    
    Step 2: Clock B is registered and reparented to clock A (potentially
    through several other clocks). We are now in situation where the enable
    count of clock A is 1 while the enable count of its ancestors is 0, which
    is not good.
    
    Step 3: in lateinit, clk_disable_unused() is called, the enable_count of
    clock B being 0, clock B is gated and and critical clock A actually gets
    disabled.
    
    This situation was found while adding fdiv_clk gates to the meson8b
    platform.  These clocks parent clk81 critical clock, which is the mother
    of all peripheral clocks in this system. Because of the issue described
    here, the system is crashing when clk_disable_unused() is called.
    
    The situation is solved by reverting
    commit f8f8f1d04494 ("clk: Don't touch hardware when reparenting during registration").
    To avoid breaking again the situation described in this commit
    description, enabling critical clock should be done before walking the
    orphan list. This way, a parent critical clock may not be accidentally
    disabled due to the CLK_OPS_PARENT_ENABLE mechanism.
    
    Fixes: f8f8f1d04494 ("clk: Don't touch hardware when reparenting during registration")
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Michael Turquette <mturquette@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02db484a058353a2513e00604f5b05e42d8d2384
Author: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Date:   Mon Mar 12 17:14:02 2018 -0500

    RDMA/core: Do not use invalid destination in determining port reuse
    
    commit 9dea9a2ff61c5efb4d4937ae23b14babd25a5547 upstream.
    
    cma_port_is_unique() allows local port reuse if the quad (source
    address and port, destination address and port) for this connection
    is unique. However, if the destination info is zero or unspecified, it
    can't make a correct decision but still allows port reuse. For example,
    sometimes rdma_bind_addr() is called with unspecified destination and
    reusing the port can lead to creating a connection with a duplicate quad,
    after the destination is resolved. The issue manifests when MPI scale-up
    tests hang after the duplicate quad is used.
    
    Set the destination address family and add checks for zero destination
    address and port to prevent source port reuse based on invalid destination.
    
    Fixes: 19b752a19dce ("IB/cma: Allow port reuse for rdma_id")
    Reviewed-by: Sean Hefty <sean.hefty@intel.com>
    Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b0c4a2e04f73643b91a99d03234482402f0e955
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Feb 2 20:39:13 2018 +0200

    serial: 8250_pci: Don't fail on multiport card class
    
    commit e7f3e99cb1a667d04d60d02957fbed58b50d4e5a upstream.
    
    Do not fail on multiport cards in serial_pci_is_class_communication().
    
    It restores behaviour for SUNIX multiport cards, that enumerated by
    class and have a custom board data.
    
    Moreover it allows users to reenumerate port-by-port from user space.
    
    Fixes: 7d8905d06405 ("serial: 8250_pci: Enable device after we check black list")
    Reported-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fb52a3828ddc3c576f84260df3a60716bb7343
Author: Boris Pismenny <borisp@mellanox.com>
Date:   Thu Mar 8 15:51:40 2018 +0200

    IB/mlx5: Fix out-of-bounds read in create_raw_packet_qp_rq
    
    commit 2c292dbb398ee46fc1343daf6c3cf9715a75688e upstream.
    
    Add a check for the length of the qpin structure to prevent out-of-bounds reads
    
    BUG: KASAN: slab-out-of-bounds in create_raw_packet_qp+0x114c/0x15e2
    Read of size 8192 at addr ffff880066b99290 by task syz-executor3/549
    
    CPU: 3 PID: 549 Comm: syz-executor3 Not tainted 4.15.0-rc2+ #27 Hardware
    name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
    Call Trace:
     dump_stack+0x8d/0xd4
     print_address_description+0x73/0x290
     kasan_report+0x25c/0x370
     ? create_raw_packet_qp+0x114c/0x15e2
     memcpy+0x1f/0x50
     create_raw_packet_qp+0x114c/0x15e2
     ? create_raw_packet_qp_tis.isra.28+0x13d/0x13d
     ? lock_acquire+0x370/0x370
     create_qp_common+0x2245/0x3b50
     ? destroy_qp_user.isra.47+0x100/0x100
     ? kasan_kmalloc+0x13d/0x170
     ? sched_clock_cpu+0x18/0x180
     ? fs_reclaim_acquire.part.15+0x5/0x30
     ? __lock_acquire+0xa11/0x1da0
     ? sched_clock_cpu+0x18/0x180
     ? kmem_cache_alloc_trace+0x17e/0x310
     ? mlx5_ib_create_qp+0x30e/0x17b0
     mlx5_ib_create_qp+0x33d/0x17b0
     ? sched_clock_cpu+0x18/0x180
     ? create_qp_common+0x3b50/0x3b50
     ? lock_acquire+0x370/0x370
     ? __radix_tree_lookup+0x180/0x220
     ? uverbs_try_lock_object+0x68/0xc0
     ? rdma_lookup_get_uobject+0x114/0x240
     create_qp.isra.5+0xce4/0x1e20
     ? ib_uverbs_ex_create_cq_cb+0xa0/0xa0
     ? copy_ah_attr_from_uverbs.isra.2+0xa00/0xa00
     ? ib_uverbs_cq_event_handler+0x160/0x160
     ? __might_fault+0x17c/0x1c0
     ib_uverbs_create_qp+0x21b/0x2a0
     ? ib_uverbs_destroy_cq+0x2e0/0x2e0
     ib_uverbs_write+0x55a/0xad0
     ? ib_uverbs_destroy_cq+0x2e0/0x2e0
     ? ib_uverbs_destroy_cq+0x2e0/0x2e0
     ? ib_uverbs_open+0x760/0x760
     ? futex_wake+0x147/0x410
     ? check_prev_add+0x1680/0x1680
     ? do_futex+0x3d3/0xa60
     ? sched_clock_cpu+0x18/0x180
     __vfs_write+0xf7/0x5c0
     ? ib_uverbs_open+0x760/0x760
     ? kernel_read+0x110/0x110
     ? lock_acquire+0x370/0x370
     ? __fget+0x264/0x3b0
     vfs_write+0x18a/0x460
     SyS_write+0xc7/0x1a0
     ? SyS_read+0x1a0/0x1a0
     ? trace_hardirqs_on_thunk+0x1a/0x1c
     entry_SYSCALL_64_fastpath+0x18/0x85
    RIP: 0033:0x4477b9
    RSP: 002b:00007f1822cadc18 EFLAGS: 00000292 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00000000004477b9
    RDX: 0000000000000070 RSI: 000000002000a000 RDI: 0000000000000005
    RBP: 0000000000708000 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000292 R12: 00000000ffffffff
    R13: 0000000000005d70 R14: 00000000006e6e30 R15: 0000000020010ff0
    
    Allocated by task 549:
     __kmalloc+0x15e/0x340
     kvmalloc_node+0xa1/0xd0
     create_user_qp.isra.46+0xd42/0x1610
     create_qp_common+0x2e63/0x3b50
     mlx5_ib_create_qp+0x33d/0x17b0
     create_qp.isra.5+0xce4/0x1e20
     ib_uverbs_create_qp+0x21b/0x2a0
     ib_uverbs_write+0x55a/0xad0
     __vfs_write+0xf7/0x5c0
     vfs_write+0x18a/0x460
     SyS_write+0xc7/0x1a0
     entry_SYSCALL_64_fastpath+0x18/0x85
    
    Freed by task 368:
     kfree+0xeb/0x2f0
     kernfs_fop_release+0x140/0x180
     __fput+0x266/0x700
     task_work_run+0x104/0x180
     exit_to_usermode_loop+0xf7/0x110
     syscall_return_slowpath+0x298/0x370
     entry_SYSCALL_64_fastpath+0x83/0x85
    
    The buggy address belongs to the object at ffff880066b99180  which
    belongs to the cache kmalloc-512 of size 512 The buggy address is
    located 272 bytes inside of  512-byte region [ffff880066b99180,
    ffff880066b99380) The buggy address belongs to the page:
    page:000000006040eedd count:1 mapcount:0 mapping:          (null)
    index:0x0 compound_mapcount: 0
    flags: 0x4000000000008100(slab|head)
    raw: 4000000000008100 0000000000000000 0000000000000000 0000000180190019
    raw: ffffea00019a7500 0000000b0000000b ffff88006c403080 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff880066b99180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff880066b99200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff880066b99280: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                             ^
     ffff880066b99300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff880066b99380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    
    Cc: syzkaller <syzkaller@googlegroups.com>
    Fixes: 0fb2ed66a14c ("IB/mlx5: Add create and destroy functionality for Raw Packet QP")
    Signed-off-by: Boris Pismenny <borisp@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf1eb16eef13f4693d6b6bf0fbb7d32a58dc5ca5
Author: Boris Pismenny <borisp@mellanox.com>
Date:   Thu Mar 8 15:51:41 2018 +0200

    IB/mlx5: Fix integer overflows in mlx5_ib_create_srq
    
    commit c2b37f76485f073f020e60b5954b6dc4e55f693c upstream.
    
    This patch validates user provided input to prevent integer overflow due
    to integer manipulation in the mlx5_ib_create_srq function.
    
    Cc: syzkaller <syzkaller@googlegroups.com>
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Boris Pismenny <borisp@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3748694f1b91b17f6e311fb10f1168f2ae8e4eca
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Fri Feb 16 20:39:58 2018 -0200

    scsi: mpt3sas: wait for and flush running commands on shutdown/unload
    
    commit c666d3be99c000bb889a33353e9be0fa5808d3de upstream.
    
    This patch finishes all outstanding SCSI IO commands (but not other commands,
    e.g., task management) in the shutdown and unload paths.
    
    It first waits for the commands to complete (this is done after setting
    'ioc->remove_host = 1 ', which prevents new commands to be queued) then it
    flushes commands that might still be running.
    
    This avoids triggering error handling (e.g., abort command) for all commands
    possibly completed by the adapter after interrupts disabled.
    
    [mauricfo: introduced something in commit message.]
    
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Tested-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [mauricfo: backport to linux-4.14.y (a few updates to context lines)]
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d72b2696e0af9cd7b651fb95bfe0060a4e02ac1
Author: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Date:   Fri Feb 16 20:39:57 2018 -0200

    scsi: mpt3sas: fix oops in error handlers after shutdown/unload
    
    commit 9ff549ffb4fb4cc9a4b24d1de9dc3e68287797c4 upstream.
    
    This patch adds checks for 'ioc->remove_host' in the SCSI error handlers, so
    not to access pointers/resources potentially freed in the PCI shutdown/module
    unload path.  The error handlers may be invoked after shutdown/unload,
    depending on other components.
    
    This problem was observed with kexec on a system with a mpt3sas based adapter
    and an infiniband adapter which takes long enough to shutdown:
    
    The mpt3sas driver finished shutting down / disabled interrupt handling, thus
    some commands have not finished and timed out.
    
    Since the system was still running (waiting for the infiniband adapter to
    shutdown), the scsi error handler for task abort of mpt3sas was invoked, and
    hit an oops -- either in scsih_abort() because 'ioc->scsi_lookup' was NULL
    without commit dbec4c9040ed ("scsi: mpt3sas: lockless command submission"), or
    later up in scsih_host_reset() (with or without that commit), because it
    eventually called mpt3sas_base_get_iocstate().
    
    After the above commit, the oops in scsih_abort() does not occur anymore
    (_scsih_scsi_lookup_find_by_scmd() is no longer called), but that commit is
    too big and out of the scope of linux-stable, where this patch might help, so
    still go for the changes.
    
    Also, this might help to prevent similar errors in the future, in case code
    changes and possibly tries to access freed stuff.
    
    Note the fix in scsih_host_reset() is still important anyway.
    
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Acked-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0493d72ee4d67ea52faa6f09a4d2e4a49f2fa6f5
Author: Vignesh R <vigneshr@ti.com>
Date:   Tue Dec 19 12:51:16 2017 +0200

    dmaengine: ti-dma-crossbar: Fix event mapping for TPCC_EVT_MUX_60_63
    
    
    [ Upstream commit d087f15786021a9605b20f4c678312510be4cac1 ]
    
    Register layout of a typical TPCC_EVT_MUX_M_N register is such that the
    lowest numbered event is at the lowest byte address and highest numbered
    event at highest byte address. But TPCC_EVT_MUX_60_63 register layout is
    different,  in that the lowest numbered event is at the highest address
    and highest numbered event is at the lowest address. Therefore, modify
    ti_am335x_xbar_write() to handle TPCC_EVT_MUX_60_63 register
    accordingly.
    
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e618ff1ac59c8c8c7bf7b71779ca99863a93cfa3
Author: Lars Persson <lars.persson@axis.com>
Date:   Tue Dec 12 12:40:22 2017 +0100

    crypto: artpec6 - set correct iv size for gcm(aes)
    
    
    [ Upstream commit 6d6e71feb183aa588c849e20e7baa47cb162928a ]
    
    The IV size should not include the 32 bit counter. Because we had the
    IV size set as 16 the transform only worked when the IV input was zero
    padded.
    
    Fixes: a21eb94fc4d3 ("crypto: axis - add ARTPEC-6/7 crypto accelerator driver")
    Signed-off-by: Lars Persson <larper@axis.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53555c8fc8a2d4adab78a286b68d1116ce71cfa6
Author: Sergej Sawazki <sergej@taudac.com>
Date:   Tue Jul 25 23:21:02 2017 +0200

    clk: si5351: Rename internal plls to avoid name collisions
    
    
    [ Upstream commit cdba9a4fb0b53703959ac861e415816cb61aded4 ]
    
    This drivers probe fails due to a clock name collision if a clock named
    'plla' or 'pllb' is already registered when registering this drivers
    internal plls.
    
    Fix it by renaming internal plls to avoid name collisions.
    
    Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
    Cc: Rabeeh Khoury <rabeeh@solid-run.com>
    Signed-off-by: Sergej Sawazki <sergej@taudac.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa97cdb4c71e80f8b484bc6c8c26ee127df4e296
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Tue Sep 5 11:32:40 2017 +0200

    clk: axi-clkgen: Correctly handle nocount bit in recalc_rate()
    
    
    [ Upstream commit 063578dc5f407f67d149133818efabe457daafda ]
    
    If the nocount bit is set the divider is bypassed and the settings for the
    divider count should be ignored and a divider value of 1 should be assumed.
    Handle this correctly in the driver recalc_rate() callback.
    
    While the driver sets up the part so that the read back dividers values
    yield the correct result the power-on reset settings of the part might not
    reflect this and hence calling e.g. clk_get_rate() without prior calls to
    clk_set_rate() will yield the wrong result.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9d9b1a3dbf98545c890a65e2f389e7e2962b3a
Author: Stephen Boyd <sboyd@codeaurora.org>
Date:   Thu Nov 2 00:36:09 2017 -0700

    clk: Don't touch hardware when reparenting during registration
    
    
    [ Upstream commit f8f8f1d04494d3a6546bee3f0618c4dba31d7b72 ]
    
    The orphan clocks reparent operation shouldn't touch the hardware
    if clocks are enabled, otherwise it may get a chance to disable a
    newly registered critical clock which triggers the warning below.
    
    Assuming we have two clocks: A and B, B is the parent of A.
    Clock A has flag: CLK_OPS_PARENT_ENABLE
    Clock B has flag: CLK_IS_CRITICAL
    
    Step 1:
    Clock A is registered, then it becomes orphan.
    
    Step 2:
    Clock B is registered. Before clock B reach the critical clock enable
    operation, orphan A will find the newly registered parent B and do
    reparent operation, then parent B will be finally disabled in
    __clk_set_parent_after() due to CLK_OPS_PARENT_ENABLE flag as there's
    still no users of B which will then trigger the following warning.
    
    WARNING: CPU: 0 PID: 0 at drivers/clk/clk.c:597 clk_core_disable+0xb4/0xe0
    Modules linked in:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.11.0-rc1-00056-gdff1f66-dirty #1373
    Hardware name: Generic DT based system
    Backtrace:
    [<c010c4bc>] (dump_backtrace) from [<c010c764>] (show_stack+0x18/0x1c)
     r6:600000d3 r5:00000000 r4:c0e26358 r3:00000000
    [<c010c74c>] (show_stack) from [<c040599c>] (dump_stack+0xb4/0xe8)
    [<c04058e8>] (dump_stack) from [<c0125c94>] (__warn+0xd8/0x104)
     r10:c0c21cd0 r9:c048aa78 r8:00000255 r7:00000009 r6:c0c1cd90 r5:00000000
     r4:00000000 r3:c0e01d34
    [<c0125bbc>] (__warn) from [<c0125d74>] (warn_slowpath_null+0x28/0x30)
     r9:00000000 r8:ef00bf80 r7:c165ac4c r6:ef00bf80 r5:ef00bf80 r4:ef00bf80
    [<c0125d4c>] (warn_slowpath_null) from [<c048aa78>] (clk_core_disable+0xb4/0xe0)
    [<c048a9c4>] (clk_core_disable) from [<c048be88>] (clk_core_disable_lock+0x20/0x2c)
     r4:000000d3 r3:c0e0af00
    [<c048be68>] (clk_core_disable_lock) from [<c048c224>] (clk_core_disable_unprepare+0x14/0x28)
     r5:00000000 r4:ef00bf80
    [<c048c210>] (clk_core_disable_unprepare) from [<c048c270>] (__clk_set_parent_after+0x38/0x54)
     r4:ef00bd80 r3:000010a0
    [<c048c238>] (__clk_set_parent_after) from [<c048daa8>] (clk_register+0x4d0/0x648)
     r6:ef00d500 r5:ef00bf80 r4:ef00bd80 r3:ef00bfd4
    [<c048d5d8>] (clk_register) from [<c048dc30>] (clk_hw_register+0x10/0x1c)
     r9:00000000 r8:00000003 r7:00000000 r6:00000824 r5:00000001 r4:ef00d500
    [<c048dc20>] (clk_hw_register) from [<c048e698>] (_register_divider+0xcc/0x120)
    [<c048e5cc>] (_register_divider) from [<c048e730>] (clk_register_divider+0x44/0x54)
     r10:00000004 r9:00000003 r8:00000001 r7:00000000 r6:00000003 r5:00000001
     r4:f0810030
    [<c048e6ec>] (clk_register_divider) from [<c0d3ff58>] (imx7ulp_clocks_init+0x558/0xe98)
     r7:c0e296f8 r6:c165c808 r5:00000000 r4:c165c808
    [<c0d3fa00>] (imx7ulp_clocks_init) from [<c0d24db0>] (of_clk_init+0x118/0x1e0)
     r10:00000001 r9:c0e01f68 r8:00000000 r7:c0e01f60 r6:ef7f8974 r5:ef0035c0
     r4:00000006
    [<c0d24c98>] (of_clk_init) from [<c0d04a50>] (time_init+0x2c/0x38)
     r10:efffed40 r9:c0d61a48 r8:c0e78000 r7:c0e07900 r6:ffffffff r5:c0e78000
     r4:00000000
    [<c0d04a24>] (time_init) from [<c0d00b8c>] (start_kernel+0x218/0x394)
    [<c0d00974>] (start_kernel) from [<6000807c>] (0x6000807c)
     r10:00000000 r9:410fc075 r8:6000406a r7:c0e0c930 r6:c0d61a44 r5:c0e07918
     r4:c0e78294
    
    We know that the clk isn't enabled with any sort of prepare_count
    here so we don't need to enable anything to prevent a race. And
    we're holding the prepare mutex so set_rate/set_parent can't race
    here either. Based on an earlier patch by Dong Aisheng.
    
    Fixes: fc8726a2c021 ("clk: core: support clocks which requires parents enable (part 2)")
    Cc: Michael Turquette <mturquette@baylibre.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Reported-by: Dong Aisheng <aisheng.dong@nxp.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24c92f975cb212547c473d544cc93ec189238241
Author: Romain Izard <romain.izard.pro@gmail.com>
Date:   Mon Dec 11 17:55:33 2017 +0100

    clk: at91: pmc: Wait for clocks when resuming
    
    
    [ Upstream commit 960e1c4d93be86d3b118fe22d4edc69e401b28b5 ]
    
    Wait for the syncronization of all clocks when resuming, not only the
    UPLL clock. Do not use regmap_read_poll_timeout, as it will call BUG()
    when interrupts are masked, which is the case in here.
    
    Signed-off-by: Romain Izard <romain.izard.pro@gmail.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14d920fc45797b6dc5bd0f3b7a0f994603b4d38c
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Tue Dec 19 09:35:25 2017 -0500

    nfsd4: permit layoutget of executable-only files
    
    
    [ Upstream commit 66282ec1cf004c09083c29cb5e49019037937bbd ]
    
    Clients must be able to read a file in order to execute it, and for pNFS
    that means the client needs to be able to perform a LAYOUTGET on the file.
    
    This behavior for executable-only files was added for OPEN in commit
    a043226bc140 "nfsd4: permit read opens of executable-only files".
    
    This fixes up xfstests generic/126 on block/scsi layouts.
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1de82078a0c097d2634efd034b17149e0d4f7984
Author: Joel Stanley <joel@jms.id.au>
Date:   Mon Dec 18 23:27:03 2017 +1030

    ARM: dts: aspeed-evb: Add unit name to memory node
    
    
    [ Upstream commit e40ed274489a5f516da120186578eb379b452ac6 ]
    
    Fixes a warning when building with W=1.
    
    All of the ASPEED device trees build without warnings now.
    
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e434a6eaed8c942495bbca4f714b04f5a146cdfc
Author: Anton Vasilyev <vasilyev@ispras.ru>
Date:   Tue Aug 8 18:56:37 2017 +0300

    RDMA/ocrdma: Fix permissions for OCRDMA_RESET_STATS
    
    
    [ Upstream commit 744820869166c8c78be891240cf5f66e8a333694 ]
    
    Debugfs file reset_stats is created with S_IRUSR permissions,
    but ocrdma_dbgfs_ops_read() doesn't support OCRDMA_RESET_STATS,
    whereas ocrdma_dbgfs_ops_write() supports only OCRDMA_RESET_STATS.
    
    The patch fixes misstype with permissions.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Acked-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b7e076f8cad849b69715738018fcc5745025168
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Dec 8 17:18:08 2017 -0800

    scsi: lpfc: Fix issues connecting with nvme initiator
    
    
    [ Upstream commit e06351a002214d152142906a546006e3446d1ef7 ]
    
    In the lpfc discovery engine, when as a nvme target, where the driver
    was performing mailbox io with the adapter for port login when a NVME
    PRLI is received from the host. Rather than queue and eventually get
    back to sending a response after the mailbox traffic, the driver
    rejected the io with an error response.
    
    Turns out this particular initiator didn't like the rejection values
    (unable to process command/command in progress) so it never attempted a
    retry of the PRLI. Thus the host never established nvme connectivity
    with the lpfc target.
    
    By changing the rejection values (to Logical Busy/nothing more), the
    initiator accepted the response and would retry the PRLI, resulting in
    nvme connectivity.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1626beb0b5d8675d6ff57da0fa98f9a988ddd5a6
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Dec 8 17:18:07 2017 -0800

    scsi: lpfc: Fix SCSI LUN discovery when SCSI and NVME enabled
    
    
    [ Upstream commit 9de416ac67b54d666327ba927a190f4b7259f4a0 ]
    
    When enabled for both SCSI and NVME support, and connected pt2pt to a
    SCSI only target, the driver nodelist entry for the remote port is left
    in PRLI_ISSUE state and no SCSI LUNs are discovered. Works fine if only
    configured for SCSI support.
    
    Error was due to some of the prli points still reflecting the need to
    send only 1 PRLI. On a lot of fabric configs, targets were NVME only,
    which meant the fabric-reported protocol attributes were only telling
    the driver one protocol or the other. Thus things worked fine. With
    pt2pt, the driver must send a PRLI for both protocols as there are no
    hints on what the target supports. Thus pt2pt targets were hitting the
    multiple PRLI issues.
    
    Complete the dual PRLI support. Track explicitly whether scsi (fcp) or
    nvme prli's have been sent. Accurately track protocol support detected
    on each node as reported by the fabric or probed by PRLI traffic.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4649f3bef8c3c4a8ad8b1048b8a59aaa46f88c
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Nov 15 12:07:24 2017 +0100

    soc: qcom: smsm: fix child-node lookup
    
    
    [ Upstream commit 8804517e9fc16c10081ff5e42e7d80704973a8e2 ]
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    Note that the original premature free of the parent node has already
    been fixed separately.
    
    Also note that this pattern of looking up the first child node with a
    given property is rare enough that a generic helper is probably not
    warranted.
    
    Fixes: c97c4090ff72 ("soc: qcom: smsm: Add driver for Qualcomm SMSM")
    Fixes: 3e8b55411468 ("soc: qcom: smsm: fix of_node refcnting problem")
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1f225794a417a39eba6601a22b920d3bbc8ed20
Author: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date:   Wed Dec 20 10:07:00 2017 +0800

    ip_gre: fix potential memory leak in erspan_rcv
    
    
    [ Upstream commit 50670b6ee9bc4ae8f9ce3112b437987adf273245 ]
    
    If md is NULL, tun_dst must be freed, otherwise it will cause memory
    leak.
    
    Fixes: 1a66a836da6 ("gre: add collect_md mode to ERSPAN tunnel")
    Cc: William Tu <u9012063@gmail.com>
    Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cd6c84e93779530e6b5ae2b6da0befe41ab3e54
Author: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date:   Wed Dec 20 10:21:46 2017 +0800

    ip_gre: fix error path when erspan_rcv failed
    
    
    [ Upstream commit dd8d5b8c5b22e31079b259b8bfb686f1fac1080a ]
    
    When erspan_rcv call return PACKET_REJECT, we shoudn't call ipgre_rcv to
    process packets again, instead send icmp unreachable message in error
    path.
    
    Fixes: 84e54fe0a5ea ("gre: introduce native tunnel support for ERSPAN")
    Acked-by: William Tu <u9012063@gmail.com>
    Cc: William Tu <u9012063@gmail.com>
    Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6cfc525163ea3375113a9dcc234c2cdd8dbf643
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Tue Dec 19 16:59:21 2017 +0300

    ip6_vti: adjust vti mtu according to mtu of lower device
    
    
    [ Upstream commit 53c81e95df1793933f87748d36070a721f6cb287 ]
    
    LTP/udp6_ipsec_vti tests fail when sending large UDP datagrams over
    ip6_vti that require fragmentation and the underlying device has an
    MTU smaller than 1500 plus some extra space for headers. This happens
    because ip6_vti, by default, sets MTU to ETH_DATA_LEN and not updating
    it depending on a destination address or link parameter. Further
    attempts to send UDP packets may succeed because pmtu gets updated on
    ICMPV6_PKT_TOOBIG in vti6_err().
    
    In case the lower device has larger MTU size, e.g. 9000, ip6_vti works
    but not using the possible maximum size, output packets have 1500 limit.
    
    The above cases require manual MTU setup after ip6_vti creation. However
    ip_vti already updates MTU based on lower device with ip_tunnel_bind_dev().
    
    Here is the example when the lower device MTU is set to 9000:
    
      # ip a sh ltp_ns_veth2
          ltp_ns_veth2@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 ...
            inet 10.0.0.2/24 scope global ltp_ns_veth2
            inet6 fd00::2/64 scope global
    
      # ip li add vti6 type vti6 local fd00::2 remote fd00::1
      # ip li show vti6
          vti6@NONE: <POINTOPOINT,NOARP> mtu 1500 ...
            link/tunnel6 fd00::2 peer fd00::1
    
    After the patch:
      # ip li add vti6 type vti6 local fd00::2 remote fd00::1
      # ip li show vti6
          vti6@NONE: <POINTOPOINT,NOARP> mtu 8832 ...
            link/tunnel6 fd00::2 peer fd00::1
    
    Reported-by: Petr Vorel <pvorel@suse.cz>
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2b32ce1ccef2ba5364361b9705acce180b3c607
Author: Jerry Snitselaar <jsnitsel@redhat.com>
Date:   Wed Dec 20 09:48:56 2017 -0700

    iommu/vt-d: clean up pr_irq if request_threaded_irq fails
    
    
    [ Upstream commit 72d548113881dd32bf7f0b221d031e6586468437 ]
    
    It is unlikely request_threaded_irq will fail, but if it does for some
    reason we should clear iommu->pr_irq in the error path. Also
    intel_svm_finish_prq shouldn't try to clean up the page request
    interrupt if pr_irq is 0. Without these, if request_threaded_irq were
    to fail the following occurs:
    
    fail with no fixes:
    
    [    0.683147] ------------[ cut here ]------------
    [    0.683148] NULL pointer, cannot free irq
    [    0.683158] WARNING: CPU: 1 PID: 1 at kernel/irq/irqdomain.c:1632 irq_domain_free_irqs+0x126/0x140
    [    0.683160] Modules linked in:
    [    0.683163] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc2 #3
    [    0.683165] Hardware name:                  /NUC7i3BNB, BIOS BNKBL357.86A.0036.2017.0105.1112 01/05/2017
    [    0.683168] RIP: 0010:irq_domain_free_irqs+0x126/0x140
    [    0.683169] RSP: 0000:ffffc90000037ce8 EFLAGS: 00010292
    [    0.683171] RAX: 000000000000001d RBX: ffff880276283c00 RCX: ffffffff81c5e5e8
    [    0.683172] RDX: 0000000000000001 RSI: 0000000000000096 RDI: 0000000000000246
    [    0.683174] RBP: ffff880276283c00 R08: 0000000000000000 R09: 000000000000023c
    [    0.683175] R10: 0000000000000007 R11: 0000000000000000 R12: 000000000000007a
    [    0.683176] R13: 0000000000000001 R14: 0000000000000000 R15: 0000010010000000
    [    0.683178] FS:  0000000000000000(0000) GS:ffff88027ec80000(0000) knlGS:0000000000000000
    [    0.683180] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    0.683181] CR2: 0000000000000000 CR3: 0000000001c09001 CR4: 00000000003606e0
    [    0.683182] Call Trace:
    [    0.683189]  intel_svm_finish_prq+0x3c/0x60
    [    0.683191]  free_dmar_iommu+0x1ac/0x1b0
    [    0.683195]  init_dmars+0xaaa/0xaea
    [    0.683200]  ? klist_next+0x19/0xc0
    [    0.683203]  ? pci_do_find_bus+0x50/0x50
    [    0.683205]  ? pci_get_dev_by_id+0x52/0x70
    [    0.683208]  intel_iommu_init+0x498/0x5c7
    [    0.683211]  pci_iommu_init+0x13/0x3c
    [    0.683214]  ? e820__memblock_setup+0x61/0x61
    [    0.683217]  do_one_initcall+0x4d/0x1a0
    [    0.683220]  kernel_init_freeable+0x186/0x20e
    [    0.683222]  ? set_debug_rodata+0x11/0x11
    [    0.683225]  ? rest_init+0xb0/0xb0
    [    0.683226]  kernel_init+0xa/0xff
    [    0.683229]  ret_from_fork+0x1f/0x30
    [    0.683259] Code: 89 ee 44 89 e7 e8 3b e8 ff ff 5b 5d 44 89 e7 44 89 ee 41 5c 41 5d 41 5e e9 a8 84 ff ff 48 c7 c7 a8 71 a7 81 31 c0 e8 6a d3 f9 ff <0f> ff 5b 5d 41 5c 41 5d 41 5
    e c3 0f 1f 44 00 00 66 2e 0f 1f 84
    [    0.683285] ---[ end trace f7650e42792627ca ]---
    
    with iommu->pr_irq = 0, but no check in intel_svm_finish_prq:
    
    [    0.669561] ------------[ cut here ]------------
    [    0.669563] Trying to free already-free IRQ 0
    [    0.669573] WARNING: CPU: 3 PID: 1 at kernel/irq/manage.c:1546 __free_irq+0xa4/0x2c0
    [    0.669574] Modules linked in:
    [    0.669577] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc2 #4
    [    0.669579] Hardware name:                  /NUC7i3BNB, BIOS BNKBL357.86A.0036.2017.0105.1112 01/05/2017
    [    0.669581] RIP: 0010:__free_irq+0xa4/0x2c0
    [    0.669582] RSP: 0000:ffffc90000037cc0 EFLAGS: 00010082
    [    0.669584] RAX: 0000000000000021 RBX: 0000000000000000 RCX: ffffffff81c5e5e8
    [    0.669585] RDX: 0000000000000001 RSI: 0000000000000086 RDI: 0000000000000046
    [    0.669587] RBP: 0000000000000000 R08: 0000000000000000 R09: 000000000000023c
    [    0.669588] R10: 0000000000000007 R11: 0000000000000000 R12: ffff880276253960
    [    0.669589] R13: ffff8802762538a4 R14: ffff880276253800 R15: ffff880276283600
    [    0.669593] FS:  0000000000000000(0000) GS:ffff88027ed80000(0000) knlGS:0000000000000000
    [    0.669594] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    0.669596] CR2: 0000000000000000 CR3: 0000000001c09001 CR4: 00000000003606e0
    [    0.669602] Call Trace:
    [    0.669616]  free_irq+0x30/0x60
    [    0.669620]  intel_svm_finish_prq+0x34/0x60
    [    0.669623]  free_dmar_iommu+0x1ac/0x1b0
    [    0.669627]  init_dmars+0xaaa/0xaea
    [    0.669631]  ? klist_next+0x19/0xc0
    [    0.669634]  ? pci_do_find_bus+0x50/0x50
    [    0.669637]  ? pci_get_dev_by_id+0x52/0x70
    [    0.669639]  intel_iommu_init+0x498/0x5c7
    [    0.669642]  pci_iommu_init+0x13/0x3c
    [    0.669645]  ? e820__memblock_setup+0x61/0x61
    [    0.669648]  do_one_initcall+0x4d/0x1a0
    [    0.669651]  kernel_init_freeable+0x186/0x20e
    [    0.669653]  ? set_debug_rodata+0x11/0x11
    [    0.669656]  ? rest_init+0xb0/0xb0
    [    0.669658]  kernel_init+0xa/0xff
    [    0.669661]  ret_from_fork+0x1f/0x30
    [    0.669662] Code: 7a 08 75 0e e9 c3 01 00 00 4c 39 7b 08 74 57 48 89 da 48 8b 5a 18 48 85 db 75 ee 89 ee 48 c7 c7 78 67 a7 81 31 c0 e8 4c 37 fa ff <0f> ff 48 8b 34 24 4c 89 ef e
    8 0e 4c 68 00 49 8b 46 40 48 8b 80
    [    0.669688] ---[ end trace 58a470248700f2fc ]---
    
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Reviewed-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 915bd53d68f675ff046672f54e3a3de3b8131981
Author: Brian Norris <briannorris@chromium.org>
Date:   Tue Dec 12 09:43:43 2017 -0800

    pinctrl: rockchip: enable clock when reading pin direction register
    
    
    [ Upstream commit 5c9d8c4f6b8168738a26bcf288516cc3a0886810 ]
    
    We generally leave the GPIO clock disabled, unless an interrupt is
    requested or we're accessing IO registers. We forgot to do this for the
    ->get_direction() callback, which means we can sometimes [1] get
    incorrect results [2] from, e.g., /sys/kernel/debug/gpio.
    
    Enable the clock, so we get the right results!
    
    [1] Sometimes, because many systems have 1 or mor interrupt requested on
    each GPIO bank, so they always leave their clock on.
    
    [2] Incorrect, meaning the register returns 0, and so we interpret that
    as "input".
    
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 130e535210ba861d46c43441e696aa73f2370a05
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Mar 1 10:32:57 2017 -0800

    pinctrl: Really force states during suspend/resume
    
    
    [ Upstream commit 981ed1bfbc6c4660b2ddaa8392893e20a6255048 ]
    
    In case a platform only defaults a "default" set of pins, but not a
    "sleep" set of pins, and this particular platform suspends and resumes
    in a way that the pin states are not preserved by the hardware, when we
    resume, we would call pinctrl_single_resume() -> pinctrl_force_default()
    -> pinctrl_select_state() and the first thing we do is check that the
    pins state is the same as before, and do nothing.
    
    In order to fix this, decouple the actual state change from
    pinctrl_select_state() and move it pinctrl_commit_state(), while keeping
    the p->state == state check in pinctrl_select_state() not to change the
    caller assumptions. pinctrl_force_sleep() and pinctrl_force_default()
    are updated to bypass the state check by calling pinctrl_commit_state().
    
    [Linus Walleij]
    The forced pin control states are currently only used in some pin
    controller drivers that grab their own reference to their own pins.
    This is equal to the pin control hogs: pins taken by pin control
    devices since there are no corresponding device in the Linux device
    hierarchy, such as memory controller lines or unused GPIO lines,
    or GPIO lines that are used orthogonally from the GPIO subsystem
    but pincontrol-wise managed as hogs (non-strict mode, allowing
    simultaneous use by GPIO and pin control). For this case forcing
    the state from the drivers' suspend()/resume() callbacks makes
    sense and should semantically match the name of the function.
    
    Fixes: 6e5e959dde0d ("pinctrl: API changes to support multiple states per device")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06299bd0cf733c9ab89ae2f8e1249445955027c9
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Wed Nov 1 17:05:49 2017 -0400

    media: davinci: fix a debug printk
    
    
    [ Upstream commit 4f6c11044f512356cb63d3df0f3b38db79dc6736 ]
    
    Two orthogonal changesets caused a breakage at a printk
    inside davinci. Commit a2d17962c9ca
    ("[media] davinci: Switch from V4L2 OF to V4L2 fwnode")
    made davinci to use struct fwnode_handle instead of
    struct device_node. Commit 68d9c47b1679
    ("media: Convert to using %pOF instead of full_name")
    changed the printk to not use ->full_name, but, instead,
    to rely on %pOF.
    
    With both patches applied, the Kernel will do the wrong
    thing, as warned by smatch:
            drivers/media/platform/davinci/vpif_capture.c:1399 vpif_async_bound() error: '%pOF' expects argument of type 'struct device_node*', argument 5 has type 'void*'
    
    So, change the logic to actually print the device name
    that was obtained before the print logic.
    
    Fixes: 68d9c47b1679 ("media: Convert to using %pOF instead of full_name")
    Fixes: a2d17962c9ca ("[media] davinci: Switch from V4L2 OF to V4L2 fwnode")
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fea718819c6922a0befde4b9f9a760c712c6fabd
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Thu Dec 7 11:15:20 2017 +0100

    PCI: rcar: Handle rcar_pcie_parse_request_of_pci_ranges() failures
    
    
    [ Upstream commit 83c75ddd816e979802bd244ad494139f28152921 ]
    
    rcar_pcie_parse_request_of_pci_ranges() can fail and return an error
    code, but this is not checked nor handled.
    
    Fix this by adding the missing error handling.
    
    Fixes: 5d2917d469faab72 ("PCI: rcar: Convert to DT resource parsing API")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1645629785b779ebc56e3a2035ace9b99bd50ab
Author: Niklas Cassel <niklas.cassel@axis.com>
Date:   Thu Dec 14 14:01:46 2017 +0100

    PCI: endpoint: Fix find_first_zero_bit() usage
    
    
    [ Upstream commit 35ad61921f495ee14915d185de79478c1737b4da ]
    
    find_first_zero_bit()'s parameter 'size' is defined in bits,
    not in bytes.
    
    Calling find_first_zero_bit() with the wrong size unit
    will lead to insidious bugs.
    
    Fix this by calling find_first_zero_bit() with size BITS_PER_LONG,
    rather than sizeof() and add missing find_first_zero_bit() return
    handling.
    
    Fixes: d74679911610 ("PCI: endpoint: Introduce configfs entry for configuring EP functions")
    Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 194b5ce11968127090e6a5fd4f09229a9e52d98c
Author: Kishon Vijay Abraham I <kishon@ti.com>
Date:   Tue Dec 19 15:25:41 2017 +0530

    PCI: designware-ep: Fix ->get_msi() to check MSI_EN bit
    
    
    [ Upstream commit a134a457ed985dca8cce7ac4ea66129ea70eba73 ]
    
    ->get_msi() now checks MSI_EN bit in the MSI CAPABILITY register to
    find whether the host supports MSI instead of using the
    MSI ADDRESS in the MSI CAPABILITY register.
    
    This fixes the issue with the following sequence
      'modprobe pci_endpoint_test' enables MSI
      'rmmod pci_endpoint_test' disables MSI but MSI address (in EP's
            capability register) has a valid value
      'modprobe pci_endpoint_test no_msi=1' - Since MSI address (in EP's
            capability register) has a valid value (set during the previous
            insertion of the module), EP thinks host supports MSI.
    
    Fixes: f8aed6ec624f ("PCI: dwc: designware: Add EP mode support")
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d67d7bf8f12d1b9dcbd4a6d6b9cd086e9d87059a
Author: Robert Walker <robert.walker@arm.com>
Date:   Mon Dec 18 11:05:44 2017 -0700

    coresight: Fix disabling of CoreSight TPIU
    
    
    [ Upstream commit 11595db8e17faaa05fadc25746c870e31276962f ]
    
    The CoreSight TPIU should be disabled when tracing to other sinks to allow
    them to operate at full bandwidth.
    
    This patch fixes tpiu_disable_hw() to correctly disable the TPIU by
    configuring the TPIU to stop on flush, initiating a manual flush, waiting
    for the flush to complete and then waits for the TPIU to indicate it has
    stopped.
    
    Signed-off-by: Robert Walker <robert.walker@arm.com>
    Tested-by: Mike Leach <mike.leach@linaro.org>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f16a65befe744c3c32bc76d817b34d9c368a136e
Author: Sahara <keun-o.park@darkmatter.ae>
Date:   Wed Dec 13 09:10:48 2017 +0400

    pty: cancel pty slave port buf's work in tty_release
    
    
    [ Upstream commit 2b022ab7542df60021ab57854b3faaaf42552eaf ]
    
    In case that CONFIG_SLUB_DEBUG is on and pty is used, races between
    release_one_tty and flush_to_ldisc work threads may happen and lead
    to use-after-free condition on tty->link->port. Because SLUB_DEBUG
    is turned on, freed tty->link->port is filled with POISON_FREE value.
    So far without SLUB_DEBUG, port was filled with zero and flush_to_ldisc
    could return without a problem by checking if tty is NULL.
    
    CPU 0                                 CPU 1
    -----                                 -----
    release_tty                           pty_write
       cancel_work_sync(tty)                 to = tty->link
       tty_kref_put(tty->link)               tty_schedule_flip(to->port)
          << workqueue >>                 ...
          release_one_tty                 ...
             pty_cleanup                  ...
                kfree(tty->link->port)       << workqueue >>
                                             flush_to_ldisc
                                                tty = READ_ONCE(port->itty)
                                                tty is 0x6b6b6b6b6b6b6b6b
                                                !!PANIC!! access tty->ldisc
    
     Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b6b93
     pgd = ffffffc0eb1c3000
     [6b6b6b6b6b6b6b93] *pgd=0000000000000000, *pud=0000000000000000
     ------------[ cut here ]------------
     Kernel BUG at ffffff800851154c [verbose debug info unavailable]
     Internal error: Oops - BUG: 96000004 [#1] PREEMPT SMP
     CPU: 3 PID: 265 Comm: kworker/u8:9 Tainted: G        W 3.18.31-g0a58eeb #1
     Hardware name: Qualcomm Technologies, Inc. MSM 8996pro v1.1 + PMI8996 Carbide (DT)
     Workqueue: events_unbound flush_to_ldisc
     task: ffffffc0ed610ec0 ti: ffffffc0ed624000 task.ti: ffffffc0ed624000
     PC is at ldsem_down_read_trylock+0x0/0x4c
     LR is at tty_ldisc_ref+0x24/0x4c
     pc : [<ffffff800851154c>] lr : [<ffffff800850f6c0>] pstate: 80400145
     sp : ffffffc0ed627cd0
     x29: ffffffc0ed627cd0 x28: 0000000000000000
     x27: ffffff8009e05000 x26: ffffffc0d382cfa0
     x25: 0000000000000000 x24: ffffff800a012f08
     x23: 0000000000000000 x22: ffffffc0703fbc88
     x21: 6b6b6b6b6b6b6b6b x20: 6b6b6b6b6b6b6b93
     x19: 0000000000000000 x18: 0000000000000001
     x17: 00e80000f80d6f53 x16: 0000000000000001
     x15: 0000007f7d826fff x14: 00000000000000a0
     x13: 0000000000000000 x12: 0000000000000109
     x11: 0000000000000000 x10: 0000000000000000
     x9 : ffffffc0ed624000 x8 : ffffffc0ed611580
     x7 : 0000000000000000 x6 : ffffff800a42e000
     x5 : 00000000000003fc x4 : 0000000003bd1201
     x3 : 0000000000000001 x2 : 0000000000000001
     x1 : ffffff800851004c x0 : 6b6b6b6b6b6b6b93
    
    Signed-off-by: Sahara <keun-o.park@darkmatter.ae>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 728e120d1786f837955a5836980ba03f21157683
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Sep 29 14:49:49 2017 +0300

    drm/omap: DMM: Check for DMM readiness after successful transaction commit
    
    
    [ Upstream commit b7ea6b286c4051e043f691781785e3c4672f014a ]
    
    Check the status of the DMM engine after it is reported that the
    transaction was completed as in rare cases the engine might not reached a
    working state.
    
    The wait_status() will print information in case the DMM is not reached the
    expected state and the dmm_txn_commit() will return with an error code to
    make sure that we are not continuing with a broken setup.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9967208b4f6c5a68b58a0cb65cb1f145fcf04dda
Author: Zhoujie Wu <zjwu@marvell.com>
Date:   Mon Dec 18 14:38:47 2017 -0800

    mmc: sdhci-xenon: wait 5ms after set 1.8V signal enable
    
    
    [ Upstream commit 8d876bf472dba73c015cea9feea80dcb80626a7c ]
    
    According to SD spec 3.00 3.6.1 signal voltage switch
    procedure step 6~8,
    (6) Set 1.8V Signal Enable in the Host Control 2 register.
    (7) Wait 5ms. 1.8V voltage regulator shall be stable within this period.
    (8) If 1.8V Signal Enable is cleared by Host Controller, go to step (12).
    Host should wait 5ms after set 1.8V signal enable bit in
    Host Control 2 register and check if 1.8V is stable or not.
    
    But current code checks this bit right after set it.
    On some platforms with xenon controller found the bit is
    cleared right away and host reports "1.8V regulator output
    did not became stable" and 5ms delay can help.
    
    Implement voltage_switch callback for xenon controller to add 5ms
    delay to make sure the 1.8V signal enable bit is set by controller.
    
    Signed-off-by: Zhoujie Wu <zjwu@marvell.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83a2960ff6d1a8fe7aaeba89d7011b1f7b4e2261
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Tue Nov 28 16:48:54 2017 +0100

    omapdrm: panel: fix compatible vendor string for td028ttec1
    
    
    [ Upstream commit c1b9d4c75cd549e08bd0596d7f9dcc20f7f6e8fa ]
    
    The vendor name was "toppoly" but other panels and the vendor list
    have defined it as "tpo". So let's fix it in driver and bindings.
    
    We keep the old definition in parallel to stay compatible with
    potential older DTB setup.
    
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7eda23c2990bc2107fdb01ceb2957b36b4bf5e2
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Fri Dec 1 11:06:39 2017 -0600

    vgacon: Set VGA struct resource types
    
    
    [ Upstream commit c82084117f79bcae085e40da526253736a247120 ]
    
    Set the resource type when we reserve VGA-related I/O port resources.
    
    The resource code doesn't actually look at the type, so it inserts
    resources without a type in the tree correctly even without this change.
    But if we ever print a resource without a type, it looks like this:
    
      vga+ [??? 0x000003c0-0x000003df flags 0x0]
    
    Setting the type means it will be printed correctly as:
    
      vga+ [io  0x000003c0-0x000003df]
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58668d153baf61cc859183dfd13f2ad5bb4c8c97
Author: Bharat Potnuri <bharat@chelsio.com>
Date:   Tue Nov 28 23:58:07 2017 +0530

    iser-target: avoid reinitializing rdma contexts for isert commands
    
    
    [ Upstream commit 66f53e6f5400578bae58db0c06d85a8820831f40 ]
    
    isert commands that failed during isert_rdma_rw_ctx_post() are queued to
    Queue-Full(QF) queue and are scheduled to be reposted during queue-full
    queue processing. During this reposting, the rdma contexts are initialised
    again in isert_rdma_rw_ctx_post(), which is leaking significant memory.
    
    unreferenced object 0xffff8830201d9640 (size 64):
      comm "kworker/0:2", pid 195, jiffies 4295374851 (age 4528.436s)
      hex dump (first 32 bytes):
        00 60 8b cb 2e 00 00 00 00 10 00 00 00 00 00 00  .`..............
        00 90 e3 cb 2e 00 00 00 00 10 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff8170711e>] kmemleak_alloc+0x4e/0xb0
        [<ffffffff811f8ba5>] __kmalloc+0x125/0x2b0
        [<ffffffffa046b24f>] rdma_rw_ctx_init+0x15f/0x6f0 [ib_core]
        [<ffffffffa07ab644>] isert_rdma_rw_ctx_post+0xc4/0x3c0 [ib_isert]
        [<ffffffffa07ad972>] isert_put_datain+0x112/0x1c0 [ib_isert]
        [<ffffffffa07dddce>] lio_queue_data_in+0x2e/0x30 [iscsi_target_mod]
        [<ffffffffa076c322>] target_qf_do_work+0x2b2/0x4b0 [target_core_mod]
        [<ffffffff81080c3b>] process_one_work+0x1db/0x5d0
        [<ffffffff8108107d>] worker_thread+0x4d/0x3e0
        [<ffffffff81088667>] kthread+0x117/0x150
        [<ffffffff81713fa7>] ret_from_fork+0x27/0x40
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    Here is patch to use the older rdma contexts while reposting
    the isert commands intead of reinitialising them.
    
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3e4b8fe64799d6a19f073b42860f4c3863eab06
Author: Artemy Kovalyov <artemyko@mellanox.com>
Date:   Tue Nov 14 14:51:59 2017 +0200

    IB/umem: Fix use of npages/nmap fields
    
    
    [ Upstream commit edf1a84fe37c51290e2c88154ecaf48dadff3d27 ]
    
    In ib_umem structure npages holds original number of sg entries, while
    nmap is number of DMA blocks returned by dma_map_sg.
    
    Fixes: c5d76f130b28 ('IB/core: Add umem function to read data from user-space')
    Signed-off-by: Artemy Kovalyov <artemyko@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 251695a39f0536d8b2c70f220b6c24c90f0b63fe
Author: Parav Pandit <parav@mellanox.com>
Date:   Tue Nov 14 14:51:55 2017 +0200

    RDMA/cma: Use correct size when writing netlink stats
    
    
    [ Upstream commit 7baaa49af3716fb31877c61f59b74d029ce15b75 ]
    
    The code was using the src size when formatting the dst. They are almost
    certainly the same value but it reads wrong.
    
    Fixes: ce117ffac2e9 ("RDMA/cma: Export AF_IB statistics")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4ac7cb593adbc29c31ad0b7e7b8d06168de831a
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Tue Nov 14 14:51:53 2017 +0200

    IB/ipoib: Avoid memory leak if the SA returns a different DGID
    
    
    [ Upstream commit 439000892ee17a9c92f1e4297818790ef8bb4ced ]
    
    The ipoib path database is organized around DGIDs from the LLADDR, but the
    SA is free to return a different GID when asked for path. This causes a
    bug because the SA's modified DGID is copied into the database key, even
    though it is no longer the correct lookup key, causing a memory leak and
    other malfunctions.
    
    Ensure the database key does not change after the SA query completes.
    
    Demonstration of the bug is as  follows
    ipoib wants to send to GID fe80:0000:0000:0000:0002:c903:00ef:5ee2, it
    creates new record in the DB with that gid as a key, and issues a new
    request to the SM.
    Now, the SM from some reason returns path-record with other SGID (for
    example, 2001:0000:0000:0000:0002:c903:00ef:5ee2 that contains the local
    subnet prefix) now ipoib will overwrite the current entry with the new
    one, and if new request to the original GID arrives ipoib  will not find
    it in the DB (was overwritten) and will create new record that in its
    turn will also be overwritten by the response from the SM, and so on
    till the driver eats all the device memory.
    
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9766562956fd25b76651e86e075a06f39de106e9
Author: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Date:   Mon Dec 4 14:58:33 2017 +0100

    rtc: ac100: Fix multiple race conditions
    
    
    [ Upstream commit 994ec64c0a193940be7a6fd074668b9446d3b6c3 ]
    
    The probe function is not allowed to fail after registering the RTC because
    the following may happen:
    
    CPU0:                                CPU1:
    sys_load_module()
     do_init_module()
      do_one_initcall()
       cmos_do_probe()
        rtc_device_register()
         __register_chrdev()
         cdev->owner = struct module*
                                         open("/dev/rtc0")
        rtc_device_unregister()
      module_put()
      free_module()
       module_free(mod->module_core)
       /* struct module *module is now
          freed */
                                          chrdev_open()
                                           spin_lock(cdev_lock)
                                           cdev_get()
                                            try_module_get()
                                             module_is_live()
                                             /* dereferences already
                                                freed struct module* */
    
    Also, the interrupt handler: ac100_rtc_irq() is dereferencing chip->rtc but
    this may still be NULL when it is called, resulting in:
    Unable to handle kernel NULL pointer dereference at virtual address 00000194
    pgd = (ptrval)
    [00000194] *pgd=00000000
    Internal error: Oops: 5 [#1] SMP ARM
    Modules linked in:
    CPU: 0 PID: 72 Comm: irq/71-ac100-rt Not tainted 4.15.0-rc1-next-20171201-dirty #120
    Hardware name: Allwinner sun8i Family
    task: (ptrval) task.stack: (ptrval)
    PC is at mutex_lock+0x14/0x3c
    LR is at ac100_rtc_irq+0x38/0xc8
    pc : [<c06543a4>]    lr : [<c04d9a2c>]    psr: 60000053
    sp : ee9c9f28  ip : 00000000  fp : ee9adfdc
    r10: 00000000  r9 : c0a04c48  r8 : c015ed18
    r7 : ee9bd600  r6 : ee9c9f28  r5 : ee9af590  r4 : c0a04c48
    r3 : ef3cb3c0  r2 : 00000000  r1 : ee9af590  r0 : 00000194
    Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none
    Control: 10c5387d  Table: 4000406a  DAC: 00000051
    Process irq/71-ac100-rt (pid: 72, stack limit = 0x(ptrval))
    Stack: (0xee9c9f28 to 0xee9ca000)
    9f20:                   00000000 7c2fd1be c015ed18 ee9adf40 ee9c0400 ee9c0400
    9f40: ee9adf40 c015ed34 ee9c8000 ee9adf64 ee9c0400 c015f040 ee9adf80 00000000
    9f60: c015ee24 7c2fd1be ee9adfc0 ee9adf80 00000000 ee9c8000 ee9adf40 c015eef4
    9f80: ef1eba34 c0138f14 ee9c8000 ee9adf80 c0138df4 00000000 00000000 00000000
    9fa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
    9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 ffffffff ffffffff
    [<c06543a4>] (mutex_lock) from [<c04d9a2c>] (ac100_rtc_irq+0x38/0xc8)
    [<c04d9a2c>] (ac100_rtc_irq) from [<c015ed34>] (irq_thread_fn+0x1c/0x54)
    [<c015ed34>] (irq_thread_fn) from [<c015f040>] (irq_thread+0x14c/0x214)
    [<c015f040>] (irq_thread) from [<c0138f14>] (kthread+0x120/0x150)
    [<c0138f14>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
    
    Solve both issues by moving to
    devm_rtc_allocate_device()/rtc_register_device()
    
    Reported-by: Quentin Schulz <quentin.schulz@free-electrons.com>
    Tested-by: Quentin Schulz <quentin.schulz@free-electrons.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit badf37254bc7906899915b464d0c203e645e48dc
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Fri Nov 3 22:01:58 2017 -0400

    media: s5p-mfc: Fix lock contention - request_firmware() once
    
    
    [ Upstream commit f45ce9877561044090010e0eb0fad644232ded04 ]
    
    Driver calls request_firmware() whenever the device is opened for the
    first time. As the device gets opened and closed, dev->num_inst == 1
    is true several times. This is not necessary since the firmware is saved
    in the fw_buf. s5p_mfc_load_firmware() copies the buffer returned by
    the request_firmware() to dev->fw_buf.
    
    fw_buf sticks around until it gets released from s5p_mfc_remove(), hence
    there is no need to keep requesting firmware and copying it to fw_buf.
    
    This might have been overlooked when changes are made to free fw_buf from
    the device release interface s5p_mfc_release().
    
    Fix s5p_mfc_load_firmware() to call request_firmware() once and keep state.
    Change _probe() to load firmware once fw_buf has been allocated.
    
    s5p_mfc_open() and it continues to call s5p_mfc_load_firmware() and init
    hardware which is the step where firmware is written to the device.
    
    This addresses the mfc_mutex contention due to repeated request_firmware()
    calls from open() in the following circular locking warning:
    
    [  552.194115] qtdemux0:sink/2710 is trying to acquire lock:
    [  552.199488]  (&dev->mfc_mutex){+.+.}, at: [<bf145544>] s5p_mfc_mmap+0x28/0xd4 [s5p_mfc]
    [  552.207459]
                   but task is already holding lock:
    [  552.213264]  (&mm->mmap_sem){++++}, at: [<c01df2e4>] vm_mmap_pgoff+0x44/0xb8
    [  552.220284]
                   which lock already depends on the new lock.
    
    [  552.228429]
                   the existing dependency chain (in reverse order) is:
    [  552.235881]
                   -> #2 (&mm->mmap_sem){++++}:
    [  552.241259]        __might_fault+0x80/0xb0
    [  552.245331]        filldir64+0xc0/0x2f8
    [  552.249144]        call_filldir+0xb0/0x14c
    [  552.253214]        ext4_readdir+0x768/0x90c
    [  552.257374]        iterate_dir+0x74/0x168
    [  552.261360]        SyS_getdents64+0x7c/0x1a0
    [  552.265608]        ret_fast_syscall+0x0/0x28
    [  552.269850]
                   -> #1 (&type->i_mutex_dir_key#2){++++}:
    [  552.276180]        down_read+0x48/0x90
    [  552.279904]        lookup_slow+0x74/0x178
    [  552.283889]        walk_component+0x1a4/0x2e4
    [  552.288222]        link_path_walk+0x174/0x4a0
    [  552.292555]        path_openat+0x68/0x944
    [  552.296541]        do_filp_open+0x60/0xc4
    [  552.300528]        file_open_name+0xe4/0x114
    [  552.304772]        filp_open+0x28/0x48
    [  552.308499]        kernel_read_file_from_path+0x30/0x78
    [  552.313700]        _request_firmware+0x3ec/0x78c
    [  552.318291]        request_firmware+0x3c/0x54
    [  552.322642]        s5p_mfc_load_firmware+0x54/0x150 [s5p_mfc]
    [  552.328358]        s5p_mfc_open+0x4e4/0x550 [s5p_mfc]
    [  552.333394]        v4l2_open+0xa0/0x104 [videodev]
    [  552.338137]        chrdev_open+0xa4/0x18c
    [  552.342121]        do_dentry_open+0x208/0x310
    [  552.346454]        path_openat+0x28c/0x944
    [  552.350526]        do_filp_open+0x60/0xc4
    [  552.354512]        do_sys_open+0x118/0x1c8
    [  552.358586]        ret_fast_syscall+0x0/0x28
    [  552.362830]
                   -> #0 (&dev->mfc_mutex){+.+.}:
                   -> #0 (&dev->mfc_mutex){+.+.}:
    [  552.368379]        lock_acquire+0x6c/0x88
    [  552.372364]        __mutex_lock+0x68/0xa34
    [  552.376437]        mutex_lock_interruptible_nested+0x1c/0x24
    [  552.382086]        s5p_mfc_mmap+0x28/0xd4 [s5p_mfc]
    [  552.386939]        v4l2_mmap+0x54/0x88 [videodev]
    [  552.391601]        mmap_region+0x3a8/0x638
    [  552.395673]        do_mmap+0x330/0x3a4
    [  552.399400]        vm_mmap_pgoff+0x90/0xb8
    [  552.403472]        SyS_mmap_pgoff+0x90/0xc0
    [  552.407632]        ret_fast_syscall+0x0/0x28
    [  552.411876]
                   other info that might help us debug this:
    
    [  552.419848] Chain exists of:
                     &dev->mfc_mutex --> &type->i_mutex_dir_key#2 --> &mm->mmap_sem
    
    [  552.431200]  Possible unsafe locking scenario:
    
    [  552.437092]        CPU0                    CPU1
    [  552.441598]        ----                    ----
    [  552.446104]   lock(&mm->mmap_sem);
    [  552.449484]                                lock(&type->i_mutex_dir_key#2);
    [  552.456329]                                lock(&mm->mmap_sem);
    [  552.462222]   lock(&dev->mfc_mutex);
    [  552.465775]
                    *** DEADLOCK ***
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 639dab36edbdb186dad9dad40750723a4f820873
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Dec 15 16:09:36 2017 +0000

    sfp: fix non-detection of PHY
    
    
    [ Upstream commit 20b56ed9f8adfb9a7fb1c878878c54aa4ed645c1 ]
    
    The detection of a PHY changed in commit e98a3aabf85f ("mdio_bus: don't
    return NULL from mdiobus_scan()") which now causes sfp to print an
    error message.  Update for this change.
    
    Fixes: 73970055450e ("sfp: add SFP module support")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a6610de8c1bf45b83f0e99ee01e604045c1e10b
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Dec 15 16:09:41 2017 +0000

    sfp: fix EEPROM reading in the case of non-SFF8472 SFPs
    
    
    [ Upstream commit 2794ffc441dde3109804085dc745e8014a4de224 ]
    
    The EEPROM reading was trying to read from the second EEPROM address
    if we requested the last byte from the SFF8079 EEPROM, which caused a
    failure when the second EEPROM is not present.  Discovered with a
    S-RJ01 SFP module.  Fix this.
    
    Fixes: 73970055450e ("sfp: add SFP module support")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b485793ce84093d6a1adb060e61d45b7bb61639
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Mon Dec 18 10:44:40 2017 +0100

    net: phy: meson-gxl: check phy_write return value
    
    
    [ Upstream commit 9042b46eda33ef5db3cdfc9e12b3c8cabb196141 ]
    
    Always check phy_write return values. Better to be safe than sorry
    
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea60e54b22aa9cba7efcc27dfc2e8319d10326de
Author: Kees Cook <keescook@chromium.org>
Date:   Fri Dec 1 13:19:39 2017 -0800

    /dev/mem: Add bounce buffer for copy-out
    
    
    [ Upstream commit 22ec1a2aea73b9dfe340dff7945bd85af4cc6280 ]
    
    As done for /proc/kcore in
    
      commit df04abfd181a ("fs/proc/kcore.c: Add bounce buffer for ktext data")
    
    this adds a bounce buffer when reading memory via /dev/mem. This
    is needed to allow kernel text memory to be read out when built with
    CONFIG_HARDENED_USERCOPY (which refuses to read out kernel text) and
    without CONFIG_STRICT_DEVMEM (which would have refused to read any RAM
    contents at all).
    
    Since this build configuration isn't common (most systems with
    CONFIG_HARDENED_USERCOPY also have CONFIG_STRICT_DEVMEM), this also tries
    to inform Kconfig about the recommended settings.
    
    This patch is modified from Brad Spengler/PaX Team's changes to /dev/mem
    code in the last public patch of grsecurity/PaX based on my understanding
    of the code. Changes or omissions from the original code are mine and
    don't reflect the original grsecurity/PaX code.
    
    Reported-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
    Fixes: f5509cc18daa ("mm: Hardened usercopy")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79a49fcc076882ea99ca52edb0a1569f1780a37c
Author: Liu, Changcheng <changcheng.liu@intel.com>
Date:   Sat Dec 16 23:15:45 2017 +0800

    mmc: block: fix logical error to avoid memory leak
    
    
    [ Upstream commit 0be55579a127916ebe39db2a74d906a2dfceed42 ]
    
    If the MMC_DRV_OP_GET_EXT_CSD request completes successfully, then
    ext_csd must be freed, but in one case it was not. Fix that.
    
    Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dd93e524955488300b8604ea3916881cee80977
Author: Daniel Drake <drake@endlessm.com>
Date:   Tue Dec 12 10:49:02 2017 +0000

    mmc: avoid removing non-removable hosts during suspend
    
    
    [ Upstream commit de8dcc3d2c0e08e5068ee1e26fc46415c15e3637 ]
    
    The Weibu F3C MiniPC has an onboard AP6255 module, presenting
    two SDIO functions on a single MMC host (Bluetooth/btsdio and
    WiFi/brcmfmac), and the mmc layer correctly detects this as
    non-removable.
    
    After suspend/resume, the wifi and bluetooth interfaces disappear
    and do not get probed again.
    
    The conditions here are:
    
     1. During suspend, we reach mmc_pm_notify()
    
     2. mmc_pm_notify() calls mmc_sdio_pre_suspend() to see if we can
        suspend the SDIO host. However, mmc_sdio_pre_suspend() returns
        -ENOSYS because btsdio_driver does not have a suspend method.
    
     3. mmc_pm_notify() proceeds to remove the card
    
     4. Upon resume, mmc_rescan() does nothing with this host, because of
        the rescan_entered check which aims to only scan a non-removable
        device a single time (i.e. during boot).
    
    Fix the loss of functionality by detecting that we are unable to
    suspend a non-removable host, so avoid the forced removal in that
    case. The comment above this function already indicates that this
    code was only intended for removable devices.
    
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1326c691f4d23bf01ed45ef9814c6f2c71f87c9
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Tue Dec 5 16:30:51 2017 -0700

    drm/tilcdc: ensure nonatomic iowrite64 is not used
    
    
    [ Upstream commit 4e5ca2d930aa8714400aedf4bf1dc959cb04280f ]
    
    Add a check to ensure iowrite64 is only used if it is atomic.
    
    It was decided in [1] that the tilcdc driver should not be using an
    atomic operation (so it was left out of this patchset). However, it turns
    out that through the drm code, a nonatomic header is actually included:
    
    include/linux/io-64-nonatomic-lo-hi.h
    is included from include/drm/drm_os_linux.h:9:0,
                from include/drm/drmP.h:74,
                from include/drm/drm_modeset_helper.h:26,
                from include/drm/drm_atomic_helper.h:33,
                from drivers/gpu/drm/tilcdc/tilcdc_crtc.c:19:
    
    And thus, without this change, this patchset would inadvertantly
    change the behaviour of the tilcdc driver.
    
    [1] lkml.kernel.org/r/CAK8P3a2HhO_zCnsTzq7hmWSz5La5Thu19FWZpun16iMnyyNreQ@mail.gmail.com
    
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Jyri Sarha <jsarha@ti.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: David Airlie <airlied@linux.ie>
    Signed-off-by: Jyri Sarha <jsarha@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2a6f2967f674e9ff73a0572c0c99229255a7fa0
Author: Kedareswara rao Appana <appana.durga.rao@xilinx.com>
Date:   Thu Dec 7 10:54:28 2017 +0530

    dmaengine: zynqmp_dma: Fix race condition in the probe
    
    
    [ Upstream commit 5ba080aada5e739165e0f38d5cc3b04c82b323c8 ]
    
    Incase of interrupt property is not present,
    Driver is trying to free an invalid irq,
    This patch fixes it by adding a check before freeing the irq.
    
    Signed-off-by: Kedareswara rao Appana <appanad@xilinx.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4a0f85594baa84dfddfa36ae857fccb8f2606df
Author: Shawn Nematbakhsh <shawnn@chromium.org>
Date:   Fri Sep 8 13:50:11 2017 -0700

    platform/chrome: Use proper protocol transfer function
    
    
    [ Upstream commit d48b8c58c57f6edbe2965f0a5f62c5cf9593ca96 ]
    
    pkt_xfer should be used for protocol v3, and cmd_xfer otherwise. We had
    one instance of these functions correct, but not the second, fall-back
    case. We use the fall-back only when the first command returns an
    IN_PROGRESS status, which is only used on some EC firmwares where we
    don't want to constantly poll the bus, but instead back off and
    sleep/retry for a little while.
    
    Fixes: 2c7589af3c4d ("mfd: cros_ec: add proto v3 skeleton")
    Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71233e2541a4f8fcbce05f76679a0a380b3159ad
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Sep 25 09:17:02 2017 -0700

    watchdog: Fix kref imbalance seen if handle_boot_enabled=0
    
    
    [ Upstream commit 914d65f3f013ba2556c7beec5d3baac7b3292504 ]
    
    If handle_boot_enabled is set to 0, the watchdog driver module use
    counter will not be increased and kref_get() will not be called when
    registering the watchdog. Subsequently, on open, this does not happen
    either because the code believes that it was already done because the
    hardware watchdog is marked as running.
    
    We could introduce a state variable to indicate this state, but let's
    just increase the module use counter and call kref_get() unconditionally
    if the hardware watchdog is running when a driver is registering itself
    to keep the code simple.
    
    Fixes: 2501b015313fe ("watchdog: core: add option to avoid early ...")
    Cc: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08b81090102015fb88572dda91934aab0de88893
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Sep 25 09:17:01 2017 -0700

    watchdog: Fix potential kref imbalance when opening watchdog
    
    
    [ Upstream commit 4bcd615fad6adddc68b058d498b30a9e0e0db77a ]
    
    If a watchdog driver's open function sets WDOG_HW_RUNNING with the
    expectation that the watchdog can not be stopped, but then stops the
    watchdog anyway in its stop function, kref_get() wil not be called in
    watchdog_open(). If the watchdog then stops on close, WDOG_HW_RUNNING
    will be cleared and kref_put() will be called, causing a kref imbalance.
    As result the character device data structure will be released, which in
    turn will cause the system to crash on the next call to watchdog_open().
    
    Fixes: ee142889e32f5 ("watchdog: Introduce WDOG_HW_RUNNING flag")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 008029510ac8c44a8421180d8d71b3e9c95c909f
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Dec 4 15:49:48 2017 +0100

    cros_ec: fix nul-termination for firmware build info
    
    
    [ Upstream commit 50a0d71a5d20e1d3eff1d974fdc8559ad6d74892 ]
    
    As gcc-8 reports, we zero out the wrong byte:
    
    drivers/platform/chrome/cros_ec_sysfs.c: In function 'show_ec_version':
    drivers/platform/chrome/cros_ec_sysfs.c:190:12: error: array subscript 4294967295 is above array bounds of 'uint8_t[]' [-Werror=array-bounds]
    
    This changes the code back to what it did before changing to a
    zero-length array structure.
    
    Fixes: a841178445bb ("mfd: cros_ec: Use a zero-length array for command data")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79c3f5cf466df5d04c2aa6d837f23cd91f48a776
Author: Stefan Potyra <Stefan.Potyra@elektrobit.com>
Date:   Wed Dec 6 16:46:12 2017 +0100

    serial: 8250_dw: Disable clock on error
    
    
    [ Upstream commit 8af016aa5a27c6a2505460eb4d83f1e70c38dc43 ]
    
    If there is no clock rate for uartclk defined, disable the previously
    enabled clock again.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: 23f5b3fdd04e serial: 8250_dw: only get the clock rate in one place
    Signed-off-by: Stefan Potyra <Stefan.Potyra@elektrobit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1be266203732104d6d754b1050d456e60d1046a
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Nov 30 09:16:31 2017 +0100

    tty: goldfish: Enable 'earlycon' only if built-in
    
    
    [ Upstream commit 6a28fd2bbc94bfca105632e5ef8a9dbe63ba0b39 ]
    
    Commit 3840ed9548f7 ("tty: goldfish: Implement support for kernel
    'earlycon' parameter") breaks an allmodconfig config on x86:
    |  LD      vmlinux.o
    |  MODPOST vmlinux.o
    |drivers/tty/serial/earlycon.o: In function `parse_options':
    |drivers/tty/serial/earlycon.c:97: undefined reference to `uart_parse_earlycon'
    |Makefile:1005: recipe for target 'vmlinux' failed
    
    earlycon.c::parse_options() invokes uart_parse_earlycon() from serial_core.c
    which is compiled=m because GOLDFISH_TTY itself (and most others) are =m.
    To avoid that, I'm adding the _CONSOLE config option which is selected if the
    GOLDFISH module itself is =y since it doesn't need the early bits for the =m
    case (other drivers do the same dance).
    The alternative would be to move uart_parse_earlycon() from
    serial_core.c to earlycon.c (we don't have that many users of that
    function).
    
    Fixes: 3840ed9548f7 ("tty: goldfish: Implement support for kernel
           'earlycon' parameter")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Miodrag Dinic <miodrag.dinic@mips.com>
    Acked-by: Miodrag Dinic <miodrag.dinic@mips.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ff0741646fd4aad0b9454c2eba5b20d8d82fc56
Author: Bjørn Mork <bjorn@mork.no>
Date:   Thu Dec 14 19:55:50 2017 +0100

    qmi_wwan: set FLAG_SEND_ZLP to avoid network initiated disconnect
    
    
    [ Upstream commit 245d21190aec547c0de64f70c0e6de871c185a24 ]
    
    It has been reported that the dummy byte we add to avoid
    ZLPs can be forwarded by the modem to the PGW/GGSN, and that
    some operators will drop the connection if this happens.
    
    In theory, QMI devices are based on CDC ECM and should as such
    both support ZLPs and silently ignore the dummy byte.  The latter
    assumption failed.  Let's test out the first.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9a14b17f72cab586572ad11e3c4c92988d54360
Author: Ron Economos <w6rz@comcast.net>
Date:   Mon Dec 11 19:51:53 2017 -0500

    media: [RESEND] media: dvb-frontends: Add delay to Si2168 restart
    
    
    [ Upstream commit 380a6c86457573aa42d27ae11e025eb25941a0b7 ]
    
    On faster CPUs a delay is required after the resume command and the restart command. Without the delay, the restart command often returns -EREMOTEIO and the Si2168 does not restart.
    
    Note that this patch fixes the same issue as https://patchwork.linuxtv.org/patch/44304/, but I believe my udelay() fix addresses the actual problem.
    
    Signed-off-by: Ron Economos <w6rz@comcast.net>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 057ee30417e55a9bf9263b32fff70394f1d4260c
Author: Balaji Pothunoori <bpothuno@qti.qualcomm.com>
Date:   Thu Dec 7 16:58:04 2017 +0200

    ath10k: handling qos at STA side based on AP WMM enable/disable
    
    
    [ Upstream commit 07ffb4497360ae8789f05555fec8171ee952304d ]
    
    Data packets are not sent by STA in case of STA joined to
    non QOS AP (WMM disabled AP). This is happening because of STA
    is sending data packets to firmware from host with qos enabled
    along with non qos queue value(TID = 16).
    Due to qos enabled, firmware is discarding the packet.
    
    This patch fixes this issue by updating the qos based on station
    WME capability field if WMM is disabled in AP.
    
    This patch is required by 10.4 family chipsets like
    QCA4019/QCA9888/QCA9884/QCA99X0.
    Firmware Versoin : 10.4-3.5.1-00018.
    
    For 10.2.4 family chipsets QCA988X/QCA9887 and QCA6174 this patch
    has no effect.
    
    Signed-off-by: Balaji Pothunoori <bpothuno@qti.qualcomm.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 824f8613ea62f296c18026ef6da300ba441228ce
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Sep 21 19:23:56 2017 -0400

    media: bt8xx: Fix err 'bt878_probe()'
    
    
    [ Upstream commit 45392ff6881dbe56d41ef0b17c2e576065f8ffa1 ]
    
    This is odd to call 'pci_disable_device()' in an error path before a
    coresponding successful 'pci_enable_device()'.
    
    Return directly instead.
    
    Fixes: 77e0be12100a ("V4L/DVB (4176): Bug-fix: Fix memory overflow")
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2159db50a57264f18416b3d20f110044a7f92dac
Author: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Date:   Sun Dec 10 20:51:59 2017 +0100

    rtlwifi: always initialize variables given to RT_TRACE()
    
    
    [ Upstream commit e4779162f7377baa9fb9a044555ecaae22c3f125 ]
    
    In rtl_rx_ampdu_apply(), when rtlpriv->cfg->ops->get_btc_status()
    returns false, RT_TRACE() is called with the values of variables
    reject_agg and agg_size, which have not been initialized.
    
    Always initialize these variables in order to prevent using
    uninitialized values.
    
    This issue has been found with clang. The compiler reported:
    
        drivers/net/wireless/realtek/rtlwifi/base.c:1665:6: error: variable
        'agg_size' is used uninitialized whenever 'if' condition is false
        [-Werror,-Wsometimes-uninitialized]
                if (rtlpriv->cfg->ops->get_btc_status())
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        drivers/net/wireless/realtek/rtlwifi/base.c:1671:31: note:
        uninitialized use occurs here
                         reject_agg, ctrl_agg_size, agg_size);
                                                    ^~~~~~~~
    
        drivers/net/wireless/realtek/rtlwifi/base.c:1665:6: error: variable
        'reject_agg' is used uninitialized whenever 'if' condition
              is false [-Werror,-Wsometimes-uninitialized]
                if (rtlpriv->cfg->ops->get_btc_status())
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        drivers/net/wireless/realtek/rtlwifi/base.c:1671:4: note:
        uninitialized use occurs here
                         reject_agg, ctrl_agg_size, agg_size);
                         ^~~~~~~~~~
    
    Fixes: 2635664e6e4a ("rtlwifi: Add rx ampdu cfg for btcoexist.")
    Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f180c6db58e3db418da262dac5c9017afde91fe
Author: Tsang-Shian Lin <thlin@realtek.com>
Date:   Sat Dec 9 11:37:10 2017 -0600

    rtlwifi: rtl_pci: Fix the bug when inactiveps is enabled.
    
    
    [ Upstream commit b7573a0a27bfa8270dea9b145448f6884b7cacc1 ]
    
    Reset the driver current tx read/write index to zero when inactiveps
    nic out of sync with HW state. Wrong driver tx read/write index will
    cause Tx fail.
    
    Signed-off-by: Tsang-Shian Lin <thlin@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
    Cc: Birming Chiu <birming@realtek.com>
    Cc: Shaofu <shaofu@realtek.com>
    Cc: Steven Ting <steventing@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9854881c225a1c757616f126fad952a3e0910925
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Dec 13 20:05:10 2017 +0100

    spi: sh-msiof: Avoid writing to registers from spi_master.setup()
    
    
    [ Upstream commit 7ff0b53c4051145d1cf992d2f60987e6447eed4f ]
    
    The spi_master.setup() callback must not change configuration registers,
    as that could corrupt I/O that is in progress for other SPI slaves.
    
    The only exception is the configuration of the native chip select
    polarity in SPI master mode, as a wrong chip select polarity will cause
    havoc during all future transfers to any other SPI slave.
    
    Hence stop writing to registers in sh_msiof_spi_setup(), unless it is
    the first call for a controller using a native chip select, or unless
    native chip select polarity has changed (note that you'll loose anyway
    if I/O is in progress).  Even then, only do what is strictly necessary,
    instead of calling sh_msiof_spi_set_pin_regs().
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6467b3e254470a130872d8bb3e938500358795d5
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Mon Dec 11 08:56:58 2017 -0800

    hv_netvsc: Fix the TX/RX buffer default sizes
    
    
    [ Upstream commit 41f61db2cd24d5ad802386719cccde1479aa82a6 ]
    
    The values were not computed correctly. There are no significant
    visible impact, though.
    
    The intended size of RX buffer is 16 MB, and the default slot size is 1728.
    So, NETVSC_DEFAULT_RX should be 16*1024*1024 / 1728 = 9709.
    
    The intended size of TX buffer is 1 MB, and the slot size is 6144.
    So, NETVSC_DEFAULT_TX should be 1024*1024 / 6144 = 170.
    
    The patch puts the formula directly into the macro, and moves them to
    hyperv_net.h, together with related macros.
    
    Fixes: 5023a6db73196 ("netvsc: increase default receive buffer size")
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dc11c413557cb9dd834ab655fb9bca6c61a4f4c
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Mon Dec 11 08:56:57 2017 -0800

    hv_netvsc: Fix the receive buffer size limit
    
    
    [ Upstream commit 11b2b653102571ac791885324371d9a1a17b900e ]
    
    The max should be 31 MB on host with NVSP version > 2.
    
    On legacy hosts (NVSP version <=2) only 15 MB receive buffer is allowed,
    otherwise the buffer request will be rejected by the host, resulting
    vNIC not coming up.
    
    The NVSP version is only available after negotiation. So, we add the
    limit checking for legacy hosts in netvsc_init_buf().
    
    Fixes: 5023a6db73196 ("netvsc: increase default receive buffer size")
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e53e85d5082cb208157b64b24812211d17801157
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Wed Nov 29 09:47:33 2017 +0100

    RDMA/iwpm: Fix uninitialized error code in iwpm_send_mapinfo()
    
    
    [ Upstream commit 302d6424e4a293a5761997e6c9fc3dfb1e4c355f ]
    
    With gcc-4.1.2:
    
        drivers/infiniband/core/iwpm_util.c: In function ‘iwpm_send_mapinfo’:
        drivers/infiniband/core/iwpm_util.c:647: warning: ‘ret’ may be used uninitialized in this function
    
    Indeed, if nl_client is not found in any of the scanned has buckets, ret
    will be used uninitialized.
    
    Preinitialize ret to -EINVAL to fix this.
    
    Fixes: 30dc5e63d6a5ad24 ("RDMA/core: Add support for iWARP Port Mapper user space service")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Reviewed-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4df82a41e819133194e015c14424ae4e96ca061f
Author: Prakash Kamliya <pkamliya@codeaurora.org>
Date:   Mon Dec 4 19:10:15 2017 +0530

    drm/msm: fix leak in failed get_pages
    
    
    [ Upstream commit 62e3a3e342af3c313ab38603811ecdb1fcc79edb ]
    
    get_pages doesn't keep a reference of the pages allocated
    when it fails later in the code path. This can lead to
    a memory leak. Keep reference of the allocated pages so
    that it can be freed when msm_gem_free_object gets called
    later during cleanup.
    
    Signed-off-by: Prakash Kamliya <pkamliya@codeaurora.org>
    Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3cff08483d06379bc608206374fb249a2199847
Author: Gustavo A. R. Silva <garsilva@embeddedor.com>
Date:   Mon Nov 20 09:00:55 2017 -0500

    media: c8sectpfe: fix potential NULL pointer dereference in c8sectpfe_timer_interrupt
    
    
    [ Upstream commit baed3c4bc4c13de93e0dba0a26d601411ebcb389 ]
    
    _channel_ is being dereferenced before it is null checked, hence there is a
    potential null pointer dereference. Fix this by moving the pointer dereference
    after _channel_ has been null checked.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: c5f5d0f99794 ("[media] c8sectpfe: STiH407/10 Linux DVB demux support")
    
    Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
    Acked-by: Patrice Chotard <patrice.chotard@st.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b453f9d8c55e72e9e84335ce654171b3fd5b2c4d
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Thu Dec 7 15:15:19 2017 +0530

    cpufreq: longhaul: Revert transition_delay_us to 200 ms
    
    
    [ Upstream commit 1d0d064307cbfd8546841f6e9d94d02c55e45e1e ]
    
    The commit e948bc8fbee0 ("cpufreq: Cap the default transition delay
    value to 10 ms") caused a regression on EPIA-M min-ITX computer where
    shutdown or reboot hangs occasionally with a print message like:
    
    longhaul: Warning: Timeout while waiting for idle PCI bus
    cpufreq: __target_index: Failed to change cpu frequency: -16
    
    This probably happens because the cpufreq governor tries to change the
    frequency of the CPU faster than allowed by the hardware.
    
    Before the above commit, the default transition delay was set to 200 ms
    for a transition_latency of 200000 ns. Lets revert back to that
    transition delay value to fix it. Note that several other transition
    delay values were tested like 20 ms and 30 ms and none of them have
    resolved system hang issue completely.
    
    Fixes: e948bc8fbee0 (cpufreq: Cap the default transition delay value to 10 ms)
    Reported-by: Meelis Roos <mroos@linux.ee>
    Suggested-by: Rafael J. Wysocki <rjw@rjwysocki.net>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e59e19dc4086ec79e259ac9841055863562baa20
Author: Loic Poulain <loic.poulain@linaro.org>
Date:   Wed Nov 22 15:03:17 2017 +0100

    Bluetooth: btqcomsmd: Fix skb double free corruption
    
    
    [ Upstream commit 67b8fbead4685b36d290a0ef91c6ddffc4920ec9 ]
    
    In case of hci send frame failure, skb is still owned
    by the caller (hci_core) and then should not be freed.
    
    This fixes crash on dragonboard-410c when sending SCO
    packet. skb is freed by both btqcomsmd and hci_core.
    
    Fixes: 1511cc750c3d ("Bluetooth: Introduce Qualcomm WCNSS SMD based HCI driver")
    Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b58533858e3f2d0b6d975d7725d8d04cb32b841
Author: Loic Poulain <loic.poulain@linaro.org>
Date:   Mon Nov 6 12:16:56 2017 +0100

    Bluetooth: hci_qca: Avoid setup failure on missing rampatch
    
    
    [ Upstream commit ba8f3597900291a93604643017fff66a14546015 ]
    
    Assuming that the original code idea was to enable in-band sleeping
    only if the setup_rome method returns succes and run in 'standard'
    mode otherwise, we should not return setup_rome return value which
    makes qca_setup fail if no rampatch/nvm file found.
    
    This fixes BT issue on the dragonboard-820C p4 which includes the
    following QCA controller:
    hci0: Product:0x00000008
    hci0: Patch  :0x00000111
    hci0: ROM    :0x00000302
    hci0: SOC    :0x00000044
    
    Since there is no rampatch for this controller revision, just make
    it work as is.
    
    Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23081c335df988f3ddcceae253aa7504c78c3094
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Wed Feb 28 14:59:22 2018 +0800

    staging: android: ashmem: Fix possible deadlock in ashmem_ioctl
    
    commit 740a5759bf222332fbb5eda42f89aa25ba38f9b2 upstream.
    
    ashmem_mutex may create a chain of dependencies like:
    
    CPU0                                    CPU1
     mmap syscall                           ioctl syscall
     -> mmap_sem (acquired)                 -> ashmem_ioctl
     -> ashmem_mmap                            -> ashmem_mutex (acquired)
        -> ashmem_mutex (try to acquire)       -> copy_from_user
                                                  -> mmap_sem (try to acquire)
    
    There is a lock odering problem between mmap_sem and ashmem_mutex causing
    a lockdep splat[1] during a syzcaller test. This patch fixes the problem
    by move copy_from_user out of ashmem_mutex.
    
    [1] https://www.spinics.net/lists/kernel/msg2733200.html
    
    Fixes: ce8a3a9e76d0 (staging: android: ashmem: Fix a race condition in pin ioctls)
    Reported-by: syzbot+d7a918a7a8e1c952bc36@syzkaller.appspotmail.com
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Cc: "Joel Fernandes (Google)" <joel.opensrc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23e73e2ab4d29b481eda0026ea3266b2360b1480
Author: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Date:   Wed Feb 14 00:10:52 2018 -0800

    scsi: megaraid_sas: Do not use 32-bit atomic request descriptor for Ventura controllers
    
    commit 9ff97fa8db94caeab59a3c5401e975df468b4d8e upstream.
    
    Problem Statement: Sending I/O through 32 bit descriptors to Ventura series of
    controller results in IO timeout on certain conditions.
    
    This error only occurs on systems with high I/O activity on Ventura series
    controllers.
    
    Changes in this patch will prevent driver from using 32 bit descriptor and use
    64 bit Descriptors.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
    Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>