commit b001adea66f0e0a7803adfbf9128a2d7969daa4e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Oct 13 09:11:36 2018 +0200

    Linux 4.4.161

commit 3a07d58f20c8e0efd9e5d43ee929c3f5c5f35874
Author: Gao Feng <gfree.wind@vip.163.com>
Date:   Tue May 16 09:30:18 2017 +0800

    ebtables: arpreply: Add the standard target sanity check
    
    commit c953d63548207a085abcb12a15fefc8a11ffdf0a upstream.
    
    The info->target comes from userspace and it would be used directly.
    So we need to add the sanity check to make sure it is a valid standard
    target, although the ebtables tool has already checked it. Kernel needs
    to validate anything coming from userspace.
    
    If the target is set as an evil value, it would break the ebtables
    and cause a panic. Because the non-standard target is treated as one
    offset.
    
    Now add one helper function ebt_invalid_target, and we would replace
    the macro INVALID_TARGET later.
    
    Signed-off-by: Gao Feng <gfree.wind@vip.163.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Loic <hackurx@opensec.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 367222df917632b354d193cc861ba0d7e622654f
Author: Zhi Chen <zhichen@codeaurora.org>
Date:   Mon Jun 18 17:00:39 2018 +0300

    ath10k: fix scan crash due to incorrect length calculation
    
    commit c8291988806407e02a01b4b15b4504eafbcc04e0 upstream.
    
    Length of WMI scan message was not calculated correctly. The allocated
    buffer was smaller than what we expected. So WMI message corrupted
    skb_info, which is at the end of skb->data. This fix takes TLV header
    into account even if the element is zero-length.
    
    Crash log:
      [49.629986] Unhandled kernel unaligned access[#1]:
      [49.634932] CPU: 0 PID: 1176 Comm: logd Not tainted 4.4.60 #180
      [49.641040] task: 83051460 ti: 8329c000 task.ti: 8329c000
      [49.646608] $ 0   : 00000000 00000001 80984a80 00000000
      [49.652038] $ 4   : 45259e89 8046d484 8046df30 8024ba70
      [49.657468] $ 8   : 00000000 804cc4c0 00000001 20306320
      [49.662898] $12   : 33322037 000110f2 00000000 31203930
      [49.668327] $16   : 82792b40 80984a80 00000001 804207fc
      [49.673757] $20   : 00000000 0000012c 00000040 80470000
      [49.679186] $24   : 00000000 8024af7c
      [49.684617] $28   : 8329c000 8329db88 00000001 802c58d0
      [49.690046] Hi    : 00000000
      [49.693022] Lo    : 453c0000
      [49.696013] epc   : 800efae4 put_page+0x0/0x58
      [49.700615] ra    : 802c58d0 skb_release_data+0x148/0x1d4
      [49.706184] Status: 1000fc03 KERNEL EXL IE
      [49.710531] Cause : 00800010 (ExcCode 04)
      [49.714669] BadVA : 45259e89
      [49.717644] PrId  : 00019374 (MIPS 24Kc)
    
    Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eee1af4e268e10fecb76bce42a8d7343aeb2a5e6
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 14 16:24:10 2018 +0800

    tcp: add tcp_ooo_try_coalesce() helper
    
    [ Upstream commit 58152ecbbcc6a0ce7fddd5bf5f6ee535834ece0c ]
    
    In case skb in out_or_order_queue is the result of
    multiple skbs coalescing, we would like to get a proper gso_segs
    counter tracking, so that future tcp_drop() can report an accurate
    number.
    
    I chose to not implement this tracking for skbs in receive queue,
    since they are not dropped, unless socket is disconnected.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be288481479ca8c1beba02a7e779ffeaa11f1597
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 14 16:24:09 2018 +0800

    tcp: call tcp_drop() from tcp_data_queue_ofo()
    
    [ Upstream commit 8541b21e781a22dce52a74fef0b9bed00404a1cd ]
    
    In order to be able to give better diagnostics and detect
    malicious traffic, we need to have better sk->sk_drops tracking.
    
    Fixes: 9f5afeae5152 ("tcp: use an RB tree for ooo receive queue")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 352b66932a23fb11f0a7c316361220648bca3c79
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 14 16:24:08 2018 +0800

    tcp: free batches of packets in tcp_prune_ofo_queue()
    
    [ Upstream commit 72cd43ba64fc172a443410ce01645895850844c8 ]
    
    Juha-Matti Tilli reported that malicious peers could inject tiny
    packets in out_of_order_queue, forcing very expensive calls
    to tcp_collapse_ofo_queue() and tcp_prune_ofo_queue() for
    every incoming packet. out_of_order_queue rb-tree can contain
    thousands of nodes, iterating over all of them is not nice.
    
    Before linux-4.9, we would have pruned all packets in ofo_queue
    in one go, every XXXX packets. XXXX depends on sk_rcvbuf and skbs
    truesize, but is about 7000 packets with tcp_rmem[2] default of 6 MB.
    
    Since we plan to increase tcp_rmem[2] in the future to cope with
    modern BDP, can not revert to the old behavior, without great pain.
    
    Strategy taken in this patch is to purge ~12.5 % of the queue capacity.
    
    Fixes: 36a6503fedda ("tcp: refine tcp_prune_ofo_queue() to not drop all packets")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Juha-Matti Tilli <juha-matti.tilli@iki.fi>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e747775172a2d4dc4dae794f248f9687ba793f54
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 14 16:24:07 2018 +0800

    tcp: fix a stale ooo_last_skb after a replace
    
    [ Upstream commit 76f0dcbb5ae1a7c3dbeec13dd98233b8e6b0b32a ]
    
    When skb replaces another one in ooo queue, I forgot to also
    update tp->ooo_last_skb as well, if the replaced skb was the last one
    in the queue.
    
    To fix this, we simply can re-use the code that runs after an insertion,
    trying to merge skbs at the right of current skb.
    
    This not only fixes the bug, but also remove all small skbs that might
    be a subset of the new one.
    
    Example:
    
    We receive segments 2001:3001,  4001:5001
    
    Then we receive 2001:8001 : We should replace 2001:3001 with the big
    skb, but also remove 4001:50001 from the queue to save space.
    
    packetdrill test demonstrating the bug
    
    0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    +0 bind(3, ..., ...) = 0
    +0 listen(3, 1) = 0
    
    +0 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
    +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 7>
    +0.100 < . 1:1(0) ack 1 win 1024
    +0 accept(3, ..., ...) = 4
    
    +0.01 < . 1001:2001(1000) ack 1 win 1024
    +0    > . 1:1(0) ack 1 <nop,nop, sack 1001:2001>
    
    +0.01 < . 1001:3001(2000) ack 1 win 1024
    +0    > . 1:1(0) ack 1 <nop,nop, sack 1001:2001 1001:3001>
    
    Fixes: 9f5afeae5152 ("tcp: use an RB tree for ooo receive queue")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Yuchung Cheng <ycheng@google.com>
    Cc: Yaogong Wang <wygivan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4666b6e2b27d91e05a5b8459e40e4a05dbc1c7b0
Author: Yaogong Wang <wygivan@google.com>
Date:   Fri Sep 14 16:24:06 2018 +0800

    tcp: use an RB tree for ooo receive queue
    
    [ Upstream commit 9f5afeae51526b3ad7b7cb21ee8b145ce6ea7a7a ]
    
    Over the years, TCP BDP has increased by several orders of magnitude,
    and some people are considering to reach the 2 Gbytes limit.
    
    Even with current window scale limit of 14, ~1 Gbytes maps to ~740,000
    MSS.
    
    In presence of packet losses (or reorders), TCP stores incoming packets
    into an out of order queue, and number of skbs sitting there waiting for
    the missing packets to be received can be in the 10^5 range.
    
    Most packets are appended to the tail of this queue, and when
    packets can finally be transferred to receive queue, we scan the queue
    from its head.
    
    However, in presence of heavy losses, we might have to find an arbitrary
    point in this queue, involving a linear scan for every incoming packet,
    throwing away cpu caches.
    
    This patch converts it to a RB tree, to get bounded latencies.
    
    Yaogong wrote a preliminary patch about 2 years ago.
    Eric did the rebase, added ofo_last_skb cache, polishing and tests.
    
    Tested with network dropping between 1 and 10 % packets, with good
    success (about 30 % increase of throughput in stress tests)
    
    Next step would be to also use an RB tree for the write queue at sender
    side ;)
    
    Signed-off-by: Yaogong Wang <wygivan@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Acked-By: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec7055c62714326c56dabcf7757069ac7f276bda
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 14 16:24:05 2018 +0800

    tcp: increment sk_drops for dropped rx packets
    
    [ Upstream commit 532182cd610782db8c18230c2747626562032205 ]
    
    Now ss can report sk_drops, we can instruct TCP to increment
    this per socket counter when it drops an incoming frame, to refine
    monitoring and debugging.
    
    Following patch takes care of listeners drops.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4c84454902516b7648a18d5173304da7dffa9d6
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Sep 3 23:06:23 2018 +0200

    ubifs: Check for name being NULL while mounting
    
    commit 37f31b6ca4311b94d985fb398a72e5399ad57925 upstream.
    
    The requested device name can be NULL or an empty string.
    Check for that and refuse to continue. UBIFS has to do this manually
    since we cannot use mount_bdev(), which checks for this condition.
    
    Fixes: 1e51764a3c2ac ("UBIFS: add new flash file system")
    Reported-by: syzbot+38bd0f7865e5c6379280@syzkaller.appspotmail.com
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38ea605f919c61fc0c3ca65abeaa87ca83f2110e
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Wed Sep 12 16:27:44 2018 -0700

    ucma: fix a use-after-free in ucma_resolve_ip()
    
    commit 5fe23f262e0548ca7f19fb79f89059a60d087d22 upstream.
    
    There is a race condition between ucma_close() and ucma_resolve_ip():
    
    CPU0                            CPU1
    ucma_resolve_ip():              ucma_close():
    
    ctx = ucma_get_ctx(file, cmd.id);
    
            list_for_each_entry_safe(ctx, tmp, &file->ctx_list, list) {
                    mutex_lock(&mut);
                    idr_remove(&ctx_idr, ctx->id);
                    mutex_unlock(&mut);
                    ...
                    mutex_lock(&mut);
                    if (!ctx->closing) {
                            mutex_unlock(&mut);
                            rdma_destroy_id(ctx->cm_id);
                    ...
                    ucma_free_ctx(ctx);
    
    ret = rdma_resolve_addr();
    ucma_put_ctx(ctx);
    
    Before idr_remove(), ucma_get_ctx() could still find the ctx
    and after rdma_destroy_id(), rdma_resolve_addr() may still
    access id_priv pointer. Also, ucma_put_ctx() may use ctx after
    ucma_free_ctx() too.
    
    ucma_close() should call ucma_put_ctx() too which tests the
    refcnt and waits for the last one releasing it. The similar
    pattern is already used by ucma_destroy_id().
    
    Reported-and-tested-by: syzbot+da2591e115d57a9cbb8b@syzkaller.appspotmail.com
    Reported-by: syzbot+cfe3c1e8ef634ba8964b@syzkaller.appspotmail.com
    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Doug Ledford <dledford@redhat.com>
    Cc: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4dd80c33338df403868222045d6427295ff54e5
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Fri Oct 5 12:48:48 2018 -0700

    ARC: clone syscall to setp r25 as thread pointer
    
    commit c58a584f05e35d1d4342923cd7aac07d9c3d3d16 upstream.
    
    Per ARC TLS ABI, r25 is designated TP (thread pointer register).
    However so far kernel didn't do any special treatment, like setting up
    usermode r25, even for CLONE_SETTLS. We instead relied on libc runtime
    to do this, in say clone libc wrapper [1]. This was deliberate to keep
    kernel ABI agnostic (userspace could potentially change TP, specially
    for different ARC ISA say ARCompact vs. ARCv2 with different spare
    registers etc)
    
    However userspace setting up r25, after clone syscall opens a race, if
    child is not scheduled and gets a signal instead. It starts off in
    userspace not in clone but in a signal handler and anything TP sepcific
    there such as pthread_self() fails which showed up with uClibc
    testsuite nptl/tst-kill6 [2]
    
    Fix this by having kernel populate r25 to TP value. So this locks in
    ABI, but it was not going to change anyways, and fwiw is same for both
    ARCompact (arc700 core) and ARCvs (HS3x cores)
    
    [1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/libc/sysdeps/linux/arc/clone.S
    [2] https://github.com/wbx-github/uclibc-ng-test/blob/master/test/nptl/tst-kill6.c
    
    Fixes: ARC STAR 9001378481
    Cc: stable@vger.kernel.org
    Reported-by: Nikita Sobolev <sobolev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cbf366a69887b623108f0a20f8850331a7ffac8
Author: Michal Suchanek <msuchanek@suse.de>
Date:   Sat May 27 17:46:15 2017 +0200

    powerpc/fadump: Return error when fadump registration fails
    
    commit 98b8cd7f75643e0a442d7a4c1cef2c9d53b7e92b upstream.
    
     - log an error message when registration fails and no error code listed
       in the switch is returned
     - translate the hv error code to posix error code and return it from
       fw_register
     - return the posix error code from fw_register to the process writing
       to sysfs
     - return EEXIST on re-registration
     - return success on deregistration when fadump is not registered
     - return ENODEV when no memory is reserved for fadump
    
    Signed-off-by: Michal Suchanek <msuchanek@suse.de>
    Tested-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
    [mpe: Use pr_err() to shrink the error print]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 023fdb64ee8d171f691a97bffa1d168bef750c7f
Author: Carl Huang <cjhuang@codeaurora.org>
Date:   Mon Mar 5 14:44:02 2018 +0800

    ath10k: fix use-after-free in ath10k_wmi_cmd_send_nowait
    
    commit 9ef0f58ed7b4a55da4a64641d538e0d9e46579ac upstream.
    
    The skb may be freed in tx completion context before
    trace_ath10k_wmi_cmd is called. This can be easily captured when
    KASAN(Kernel Address Sanitizer) is enabled. The fix is to move
    trace_ath10k_wmi_cmd before the send operation. As the ret has no
    meaning in trace_ath10k_wmi_cmd then, so remove this parameter too.
    
    Signed-off-by: Carl Huang <cjhuang@codeaurora.org>
    Tested-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75fe5488b22f10844334c0960b12b2cf5c606028
Author: Prateek Sood <prsood@codeaurora.org>
Date:   Tue Dec 19 12:56:57 2017 +0530

    cgroup: Fix deadlock in cpu hotplug path
    
    commit 116d2f7496c51b2e02e8e4ecdd2bdf5fb9d5a641 upstream.
    
    Deadlock during cgroup migration from cpu hotplug path when a task T is
    being moved from source to destination cgroup.
    
    kworker/0:0
    cpuset_hotplug_workfn()
       cpuset_hotplug_update_tasks()
          hotplug_update_tasks_legacy()
            remove_tasks_in_empty_cpuset()
              cgroup_transfer_tasks() // stuck in iterator loop
                cgroup_migrate()
                  cgroup_migrate_add_task()
    
    In cgroup_migrate_add_task() it checks for PF_EXITING flag of task T.
    Task T will not migrate to destination cgroup. css_task_iter_start()
    will keep pointing to task T in loop waiting for task T cg_list node
    to be removed.
    
    Task T
    do_exit()
      exit_signals() // sets PF_EXITING
      exit_task_namespaces()
        switch_task_namespaces()
          free_nsproxy()
            put_mnt_ns()
              drop_collected_mounts()
                namespace_unlock()
                  synchronize_rcu()
                    _synchronize_rcu_expedited()
                      schedule_work() // on cpu0 low priority worker pool
                      wait_event() // waiting for work item to execute
    
    Task T inserted a work item in the worklist of cpu0 low priority
    worker pool. It is waiting for expedited grace period work item
    to execute. This work item will only be executed once kworker/0:0
    complete execution of cpuset_hotplug_workfn().
    
    kworker/0:0 ==> Task T ==>kworker/0:0
    
    In case of PF_EXITING task being migrated from source to destination
    cgroup, migrate next available task in source cgroup.
    
    Signed-off-by: Prateek Sood <prsood@codeaurora.org>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [AmitP: Upstream commit cherry-pick failed, so I picked the
            backported changes from CAF/msm-4.9 tree instead:
            https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=49b74f1696417b270c89cd893ca9f37088928078]
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb751efb29d037ee051f326b6f622881ca0b9a14
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Jun 13 00:51:28 2018 -0400

    ext4: always verify the magic number in xattr blocks
    
    commit 513f86d73855ce556ea9522b6bfd79f87356dc3a upstream.
    
    If there an inode points to a block which is also some other type of
    metadata block (such as a block allocation bitmap), the
    buffer_verified flag can be set when it was validated as that other
    metadata block type; however, it would make a really terrible external
    attribute block.  The reason why we use the verified flag is to avoid
    constantly reverifying the block.  However, it doesn't take much
    overhead to make sure the magic number of the xattr block is correct,
    and this will avoid potential crashes.
    
    This addresses CVE-2018-10879.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=200001
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    [Backported to 4.4: adjust context]
    Signed-off-by: Daniel Rosenberg <drosen@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26f9ef6cebbe7af1893efc7720d3270e0139b9cf
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Sep 25 21:06:24 2018 -0700

    of: unittest: Disable interrupt node tests for old world MAC systems
    
    commit 8894891446c9380709451b99ab45c5c53adfd2fc upstream.
    
    On systems with OF_IMAP_OLDWORLD_MAC set in of_irq_workarounds, the
    devicetree interrupt parsing code is different, causing unit tests of
    devicetree interrupt nodes to fail. Due to a bug in unittest code, which
    tries to dereference an uninitialized pointer, this results in a crash.
    
    OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property
    Unable to handle kernel paging request for data at address 0x00bc616e
    Faulting instruction address: 0xc08e9468
    Oops: Kernel access of bad area, sig: 11 [#1]
    BE PREEMPT PowerMac
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.72-rc1-yocto-standard+ #1
    task: cf8e0000 task.stack: cf8da000
    NIP:  c08e9468 LR: c08ea5bc CTR: c08ea5ac
    REGS: cf8dbb50 TRAP: 0300   Not tainted  (4.14.72-rc1-yocto-standard+)
    MSR:  00001032 <ME,IR,DR,RI>  CR: 82004044  XER: 00000000
    DAR: 00bc616e DSISR: 40000000
    GPR00: c08ea5bc cf8dbc00 cf8e0000 c13ca517 c13ca517 c13ca8a0 00000066 00000002
    GPR08: 00000063 00bc614e c0b05865 000affff 82004048 00000000 c00047f0 00000000
    GPR16: c0a80000 c0a9cc34 c13ca517 c0ad1134 05ffffff 000affff c0b05860 c0abeef8
    GPR24: cecec278 cecec278 c0a8c4d0 c0a885e0 c13ca8a0 05ffffff c13ca8a0 c13ca517
    
    NIP [c08e9468] device_node_gen_full_name+0x30/0x15c
    LR [c08ea5bc] device_node_string+0x190/0x3c8
    Call Trace:
    [cf8dbc00] [c007f670] trace_hardirqs_on_caller+0x118/0x1fc (unreliable)
    [cf8dbc40] [c08ea5bc] device_node_string+0x190/0x3c8
    [cf8dbcb0] [c08eb794] pointer+0x25c/0x4d0
    [cf8dbd00] [c08ebcbc] vsnprintf+0x2b4/0x5ec
    [cf8dbd60] [c08ec00c] vscnprintf+0x18/0x48
    [cf8dbd70] [c008e268] vprintk_store+0x4c/0x22c
    [cf8dbda0] [c008ecac] vprintk_emit+0x94/0x130
    [cf8dbdd0] [c008ff54] printk+0x5c/0x6c
    [cf8dbe10] [c0b8ddd4] of_unittest+0x2220/0x26f8
    [cf8dbea0] [c0004434] do_one_initcall+0x4c/0x184
    [cf8dbf00] [c0b4534c] kernel_init_freeable+0x13c/0x1d8
    [cf8dbf30] [c0004814] kernel_init+0x24/0x118
    [cf8dbf40] [c0013398] ret_from_kernel_thread+0x5c/0x64
    
    The problem was observed when running a qemu test for the g3beige machine
    with devicetree unittests enabled.
    
    Disable interrupt node tests on affected systems to avoid both false
    unittest failures and the crash.
    
    With this patch in place, unittest on the affected system passes with
    the following message.
    
            dt-test ### end of unittest - 144 passed, 0 failed
    
    Fixes: 53a42093d96ef ("of: Add device tree selftests")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d70a6783f730d83709ca8173558483dba0741b88
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Sep 24 15:28:10 2018 +0200

    USB: serial: simple: add Motorola Tetra MTP6550 id
    
    commit f5fad711c06e652f90f581fc7c2caee327c33d31 upstream.
    
    Add device-id for the Motorola Tetra radio MTP6550.
    
    Bus 001 Device 004: ID 0cad:9012 Motorola CGISS
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0cad Motorola CGISS
      idProduct          0x9012
      bcdDevice           24.16
      iManufacturer           1 Motorola Solutions, Inc.
      iProduct                2 TETRA PEI interface
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           55
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          3 Generic Serial config
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              500mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
    Device Qualifier (for other device speed):
      bLength                10
      bDescriptorType         6
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      bNumConfigurations      1
    Device Status:     0x0000
      (Bus Powered)
    
    Reported-by: Hans Hult <hanshult35@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed8649a4691b52228bbbeca87780e284f2c62456
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Oct 1 18:36:07 2018 +0300

    xhci: Add missing CAS workaround for Intel Sunrise Point xHCI
    
    commit ffe84e01bb1b38c7eb9c6b6da127a6c136d251df upstream.
    
    The workaround for missing CAS bit is also needed for xHC on Intel
    sunrisepoint PCH. For more details see:
    
    Intel 100/c230 series PCH specification update Doc #332692-006 Errata #8
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dce708809daaced8d63eda3447b59951186f3f1a
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Tue Sep 25 20:56:02 2018 -0400

    dm cache: fix resize crash if user doesn't reload cache table
    
    commit 5d07384a666d4b2f781dc056bfeec2c27fbdf383 upstream.
    
    A reload of the cache's DM table is needed during resize because
    otherwise a crash will occur when attempting to access smq policy
    entries associated with the portion of the cache that was recently
    extended.
    
    The reason is cache-size based data structures in the policy will not be
    resized, the only way to safely extend the cache is to allow for a
    proper cache policy initialization that occurs when the cache table is
    loaded.  For example the smq policy's space_init(), init_allocator(),
    calc_hotspot_params() must be sized based on the extended cache size.
    
    The fix for this is to disallow cache resizes of this pattern:
    1) suspend "cache" target's device
    2) resize the fast device used for the cache
    3) resume "cache" target's device
    
    Instead, the last step must be a full reload of the cache's DM table.
    
    Fixes: 66a636356 ("dm cache: add stochastic-multi-queue (smq) policy")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1516d9fa636f1e6276bf37086d06f9847c25bc59
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Oct 4 11:08:12 2018 +0200

    PM / core: Clear the direct_complete flag on errors
    
    commit 69e445ab8b66a9f30519842ef18be555d3ee9b51 upstream.
    
    If __device_suspend() runs asynchronously (in which case the device
    passed to it is in dpm_suspended_list at that point) and it returns
    early on an error or pending wakeup, and the power.direct_complete
    flag has been set for the device already, the subsequent
    device_resume() will be confused by that and it will call
    pm_runtime_enable() incorrectly, as runtime PM has not been
    disabled for the device by __device_suspend().
    
    To avoid that, clear power.direct_complete if __device_suspend()
    is not going to disable runtime PM for the device before returning.
    
    Fixes: aae4518b3124 (PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily)
    Reported-by: Al Cooper <alcooperx@gmail.com>
    Tested-by: Al Cooper <alcooperx@gmail.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: 3.16+ <stable@vger.kernel.org> # 3.16+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24479b9d2d03c1fde26dae957b18da8164caf3b0
Author: Felix Fietkau <nbd@nbd.name>
Date:   Sat Sep 29 16:01:58 2018 +0200

    mac80211: fix setting IEEE80211_KEY_FLAG_RX_MGMT for AP mode keys
    
    commit 211710ca74adf790b46ab3867fcce8047b573cd1 upstream.
    
    key->sta is only valid after ieee80211_key_link, which is called later
    in this function. Because of that, the IEEE80211_KEY_FLAG_RX_MGMT is
    never set when management frame protection is enabled.
    
    Fixes: e548c49e6dc6b ("mac80211: add key flag for management keys")
    Cc: stable@vger.kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5527ae62617e69400435aa2f8b95656ad41626a2
Author: Daniel Drake <drake@endlessm.com>
Date:   Thu Sep 27 15:47:33 2018 -0500

    PCI: Reprogram bridge prefetch registers on resume
    
    commit 083874549fdfefa629dfa752785e20427dde1511 upstream.
    
    On 38+ Intel-based ASUS products, the NVIDIA GPU becomes unusable after S3
    suspend/resume.  The affected products include multiple generations of
    NVIDIA GPUs and Intel SoCs.  After resume, nouveau logs many errors such
    as:
    
      fifo: fault 00 [READ] at 0000005555555000 engine 00 [GR] client 04
            [HUB/FE] reason 4a [] on channel -1 [007fa91000 unknown]
      DRM: failed to idle channel 0 [DRM]
    
    Similarly, the NVIDIA proprietary driver also fails after resume (black
    screen, 100% CPU usage in Xorg process).  We shipped a sample to NVIDIA for
    diagnosis, and their response indicated that it's a problem with the parent
    PCI bridge (on the Intel SoC), not the GPU.
    
    Runtime suspend/resume works fine, only S3 suspend is affected.
    
    We found a workaround: on resume, rewrite the Intel PCI bridge
    'Prefetchable Base Upper 32 Bits' register (PCI_PREF_BASE_UPPER32).  In the
    cases that I checked, this register has value 0 and we just have to rewrite
    that value.
    
    Linux already saves and restores PCI config space during suspend/resume,
    but this register was being skipped because upon resume, it already has
    value 0 (the correct, pre-suspend value).
    
    Intel appear to have previously acknowledged this behaviour and the
    requirement to rewrite this register:
    https://bugzilla.kernel.org/show_bug.cgi?id=116851#c23
    
    Based on that, rewrite the prefetch register values even when that appears
    unnecessary.
    
    We have confirmed this solution on all the affected models we have in-hands
    (X542UQ, UX533FD, X530UN, V272UN).
    
    Additionally, this solves an issue where r8169 MSI-X interrupts were broken
    after S3 suspend/resume on ASUS X441UAR.  This issue was recently worked
    around in commit 7bb05b85bc2d ("r8169: don't use MSI-X on RTL8106e").  It
    also fixes the same issue on RTL6186evl/8111evl on an Aimfor-tech laptop
    that we had not yet patched.  I suspect it will also fix the issue that was
    worked around in commit 7c53a722459c ("r8169: don't use MSI-X on
    RTL8168g").
    
    Thomas Martitz reports that this change also solves an issue where the AMD
    Radeon Polaris 10 GPU on the HP Zbook 14u G5 is unresponsive after S3
    suspend/resume.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=201069
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-By: Peter Wu <peter@lekensteyn.nl>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8dc08a109cb0ceb84bd0f5b9e7f13f054f7fba5
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Oct 3 16:23:49 2018 -0700

    x86/vdso: Fix vDSO syscall fallback asm constraint regression
    
    commit 02e425668f5c9deb42787d10001a3b605993ad15 upstream.
    
    When I added the missing memory outputs, I failed to update the
    index of the first argument (ebx) on 32-bit builds, which broke the
    fallbacks.  Somehow I must have screwed up my testing or gotten
    lucky.
    
    Add another test to cover gettimeofday() as well.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: 715bd9d12f84 ("x86/vdso: Fix asm constraints on vDSO syscall fallbacks")
    Link: http://lkml.kernel.org/r/21bd45ab04b6d838278fa5bebfa9163eceffa13c.1538608971.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5961c3d0064fdc4326d5390b30ceb50ae5d1459e
Author: Andy Lutomirski <luto@kernel.org>
Date:   Mon Oct 1 12:52:15 2018 -0700

    x86/vdso: Fix asm constraints on vDSO syscall fallbacks
    
    commit 715bd9d12f84d8f5cc8ad21d888f9bc304a8eb0b upstream.
    
    The syscall fallbacks in the vDSO have incorrect asm constraints.
    They are not marked as writing to their outputs -- instead, they are
    marked as clobbering "memory", which is useless.  In particular, gcc
    is smart enough to know that the timespec parameter hasn't escaped,
    so a memory clobber doesn't clobber it.  And passing a pointer as an
    asm *input* does not tell gcc that the pointed-to value is changed.
    
    Add in the fact that the asm instructions weren't volatile, and gcc
    was free to omit them entirely unless their sole output (the return
    value) is used.  Which it is (phew!), but that stops happening with
    some upcoming patches.
    
    As a trivial example, the following code:
    
    void test_fallback(struct timespec *ts)
    {
            vdso_fallback_gettime(CLOCK_MONOTONIC, ts);
    }
    
    compiles to:
    
    00000000000000c0 <test_fallback>:
      c0:   c3                      retq
    
    To add insult to injury, the RCX and R11 clobbers on 64-bit
    builds were missing.
    
    The "memory" clobber is also unnecessary -- no ordering with respect to
    other memory operations is needed, but that's going to be fixed in a
    separate not-for-stable patch.
    
    Fixes: 2aae950b21e4 ("x86_64: Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu")
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/2c0231690551989d2fafa60ed0e7b5cc8b403908.1538422295.git.luto@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 937b51457b5fd9560a2ddb300b5dfbec87082919
Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date:   Wed Sep 26 18:11:22 2018 +0200

    fbdev/omapfb: fix omapfb_memory_read infoleak
    
    commit 1bafcbf59fed92af58955024452f45430d3898c5 upstream.
    
    OMAPFB_MEMORY_READ ioctl reads pixels from the LCD's memory and copies
    them to a userspace buffer. The code has two issues:
    
    - The user provided width and height could be large enough to overflow
      the calculations
    - The copy_to_user() can copy uninitialized memory to the userspace,
      which might contain sensitive kernel information.
    
    Fix these by limiting the width & height parameters, and only copying
    the amount of data that we actually received from the LCD.
    
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Reported-by: Jann Horn <jannh@google.com>
    Cc: stable@vger.kernel.org
    Cc: security@kernel.org
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6f1725b9cbd208c469142ebfc5bff476352cc08
Author: Jann Horn <jannh@google.com>
Date:   Fri Oct 5 15:52:07 2018 -0700

    mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly
    
    commit 58bc4c34d249bf1bc50730a9a209139347cfacfe upstream.
    
    5dd0b16cdaff ("mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even
    on UP") made the availability of the NR_TLB_REMOTE_FLUSH* counters inside
    the kernel unconditional to reduce #ifdef soup, but (either to avoid
    showing dummy zero counters to userspace, or because that code was missed)
    didn't update the vmstat_array, meaning that all following counters would
    be shown with incorrect values.
    
    This only affects kernel builds with
    CONFIG_VM_EVENT_COUNTERS=y && CONFIG_DEBUG_TLBFLUSH=y && CONFIG_SMP=n.
    
    Link: http://lkml.kernel.org/r/20181001143138.95119-2-jannh@google.com
    Fixes: 5dd0b16cdaff ("mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP")
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Christoph Lameter <clameter@sgi.com>
    Cc: Kemi Wang <kemi.wang@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>