commit 1a05924366694d17a36e6b086d5bba1a8d74b977
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jul 3 13:14:50 2019 +0200

    Linux 4.19.57

commit 3919d91f4d367de8c01a3e76373fb30c76ce916b
Author: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Date:   Fri May 24 13:52:19 2019 +0100

    arm64: insn: Fix ldadd instruction encoding
    
    commit c5e2edeb01ae9ffbdde95bdcdb6d3614ba1eb195 upstream.
    
    GCC 8.1.0 reports that the ldadd instruction encoding, recently added to
    insn.c, doesn't match the mask and couldn't possibly be identified:
    
     linux/arch/arm64/include/asm/insn.h: In function 'aarch64_insn_is_ldadd':
     linux/arch/arm64/include/asm/insn.h:280:257: warning: bitwise comparison always evaluates to false [-Wtautological-compare]
    
    Bits [31:30] normally encode the size of the instruction (1 to 8 bytes)
    and the current instruction value only encodes the 4- and 8-byte
    variants. At the moment only the BPF JIT needs this instruction, and
    doesn't require the 1- and 2-byte variants, but to be consistent with
    our other ldr and str instruction encodings, clear the size field in the
    insn value.
    
    Fixes: 34b8ab091f9ef57a ("bpf, arm64: use more scalable stadd over ldxr / stxr loop in xadd")
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Reported-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c423fd89a2b8624ca0a0eb2a1bd440ad0db8cf5
Author: Thinh Nguyen <thinh.nguyen@synopsys.com>
Date:   Tue Feb 12 19:39:27 2019 -0800

    usb: dwc3: Reset num_trbs after skipping
    
    commit c7152763f02e05567da27462b2277a554e507c89 upstream.
    
    Currently req->num_trbs is not reset after the TRBs are skipped and
    processed from the cancelled list. The gadget driver may reuse the
    request with an invalid req->num_trbs, and DWC3 will incorrectly skip
    trbs. To fix this, simply reset req->num_trbs to 0 after skipping
    through all of them.
    
    Fixes: c3acd5901414 ("usb: dwc3: gadget: use num_trbs when skipping TRBs on ->dequeue()")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bbb6b547fbe43cf6cbfdbb9e964c4ca51fed8eb
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jun 17 21:34:15 2019 +0800

    tipc: pass tunnel dev as NULL to udp_tunnel(6)_xmit_skb
    
    commit c3bcde026684c62d7a2b6f626dc7cf763833875c upstream.
    
    udp_tunnel(6)_xmit_skb() called by tipc_udp_xmit() expects a tunnel device
    to count packets on dev->tstats, a perpcu variable. However, TIPC is using
    udp tunnel with no tunnel device, and pass the lower dev, like veth device
    that only initializes dev->lstats(a perpcu variable) when creating it.
    
    Later iptunnel_xmit_stats() called by ip(6)tunnel_xmit() thinks the dev as
    a tunnel device, and uses dev->tstats instead of dev->lstats. tstats' each
    pointer points to a bigger struct than lstats, so when tstats->tx_bytes is
    increased, other percpu variable's members could be overwritten.
    
    syzbot has reported quite a few crashes due to fib_nh_common percpu member
    'nhc_pcpu_rth_output' overwritten, call traces are like:
    
      BUG: KASAN: slab-out-of-bounds in rt_cache_valid+0x158/0x190
      net/ipv4/route.c:1556
        rt_cache_valid+0x158/0x190 net/ipv4/route.c:1556
        __mkroute_output net/ipv4/route.c:2332 [inline]
        ip_route_output_key_hash_rcu+0x819/0x2d50 net/ipv4/route.c:2564
        ip_route_output_key_hash+0x1ef/0x360 net/ipv4/route.c:2393
        __ip_route_output_key include/net/route.h:125 [inline]
        ip_route_output_flow+0x28/0xc0 net/ipv4/route.c:2651
        ip_route_output_key include/net/route.h:135 [inline]
      ...
    
    or:
    
      kasan: GPF could be caused by NULL-ptr deref or user memory access
      RIP: 0010:dst_dev_put+0x24/0x290 net/core/dst.c:168
        <IRQ>
        rt_fibinfo_free_cpus net/ipv4/fib_semantics.c:200 [inline]
        free_fib_info_rcu+0x2e1/0x490 net/ipv4/fib_semantics.c:217
        __rcu_reclaim kernel/rcu/rcu.h:240 [inline]
        rcu_do_batch kernel/rcu/tree.c:2437 [inline]
        invoke_rcu_callbacks kernel/rcu/tree.c:2716 [inline]
        rcu_process_callbacks+0x100a/0x1ac0 kernel/rcu/tree.c:2697
      ...
    
    The issue exists since tunnel stats update is moved to iptunnel_xmit by
    Commit 039f50629b7f ("ip_tunnel: Move stats update to iptunnel_xmit()"),
    and here to fix it by passing a NULL tunnel dev to udp_tunnel(6)_xmit_skb
    so that the packets counting won't happen on dev->tstats.
    
    Reported-by: syzbot+9d4c12bfd45a58738d0a@syzkaller.appspotmail.com
    Reported-by: syzbot+a9e23ea2aa21044c2798@syzkaller.appspotmail.com
    Reported-by: syzbot+c4c4b2bb358bb936ad7e@syzkaller.appspotmail.com
    Reported-by: syzbot+0290d2290a607e035ba1@syzkaller.appspotmail.com
    Reported-by: syzbot+a43d8d4e7e8a7a9e149e@syzkaller.appspotmail.com
    Reported-by: syzbot+a47c5f4c6c00fc1ed16e@syzkaller.appspotmail.com
    Fixes: 039f50629b7f ("ip_tunnel: Move stats update to iptunnel_xmit()")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89c49e7b6b0a3d8073969af3f871572cd42820c8
Author: Jason Gunthorpe <jgg@mellanox.com>
Date:   Sun May 12 21:57:57 2019 -0300

    RDMA: Directly cast the sockaddr union to sockaddr
    
    commit 641114d2af312d39ca9bbc2369d18a5823da51c6 upstream.
    
    gcc 9 now does allocation size tracking and thinks that passing the member
    of a union and then accessing beyond that member's bounds is an overflow.
    
    Instead of using the union member, use the entire union with a cast to
    get to the sockaddr. gcc will now know that the memory extends the full
    size of the union.
    
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a319c8ff4f09cae9936385a9297b1b29165e2d8c
Author: Will Deacon <will.deacon@arm.com>
Date:   Wed Apr 10 11:51:54 2019 +0100

    futex: Update comments and docs about return values of arch futex code
    
    commit 427503519739e779c0db8afe876c1b33f3ac60ae upstream.
    
    The architecture implementations of 'arch_futex_atomic_op_inuser()' and
    'futex_atomic_cmpxchg_inatomic()' are permitted to return only -EFAULT,
    -EAGAIN or -ENOSYS in the case of failure.
    
    Update the comments in the asm-generic/ implementation and also a stray
    reference in the robust futex documentation.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4423a82cbde399ada728c5d027972f20d64ae4ae
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Apr 26 21:48:22 2019 +0200

    bpf, arm64: use more scalable stadd over ldxr / stxr loop in xadd
    
    commit 34b8ab091f9ef57a2bb3c8c8359a0a03a8abf2f9 upstream.
    
    Since ARMv8.1 supplement introduced LSE atomic instructions back in 2016,
    lets add support for STADD and use that in favor of LDXR / STXR loop for
    the XADD mapping if available. STADD is encoded as an alias for LDADD with
    XZR as the destination register, therefore add LDADD to the instruction
    encoder along with STADD as special case and use it in the JIT for CPUs
    that advertise LSE atomics in CPUID register. If immediate offset in the
    BPF XADD insn is 0, then use dst register directly instead of temporary
    one.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 436869e0cd6dd700a9d93c551d08401fd0a94d40
Author: Will Deacon <will.deacon@arm.com>
Date:   Wed Apr 10 11:49:11 2019 +0100

    arm64: futex: Avoid copying out uninitialised stack in failed cmpxchg()
    
    commit 8e4e0ac02b449297b86498ac24db5786ddd9f647 upstream.
    
    Returning an error code from futex_atomic_cmpxchg_inatomic() indicates
    that the caller should not make any use of *uval, and should instead act
    upon on the value of the error code. Although this is implemented
    correctly in our futex code, we needlessly copy uninitialised stack to
    *uval in the error case, which can easily be avoided.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba6340a7297fdb36550fa7800500eadc8278c062
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Fri May 31 15:29:11 2019 -0700

    bpf: udp: ipv6: Avoid running reuseport's bpf_prog from __udp6_lib_err
    
    commit 4ac30c4b3659efac031818c418beb51e630d512d upstream.
    
    __udp6_lib_err() may be called when handling icmpv6 message. For example,
    the icmpv6 toobig(type=2).  __udp6_lib_lookup() is then called
    which may call reuseport_select_sock().  reuseport_select_sock() will
    call into a bpf_prog (if there is one).
    
    reuseport_select_sock() is expecting the skb->data pointing to the
    transport header (udphdr in this case).  For example, run_bpf_filter()
    is pulling the transport header.
    
    However, in the __udp6_lib_err() path, the skb->data is pointing to the
    ipv6hdr instead of the udphdr.
    
    One option is to pull and push the ipv6hdr in __udp6_lib_err().
    Instead of doing this, this patch follows how the original
    commit 538950a1b752 ("soreuseport: setsockopt SO_ATTACH_REUSEPORT_[CE]BPF")
    was done in IPv4, which has passed a NULL skb pointer to
    reuseport_select_sock().
    
    Fixes: 538950a1b752 ("soreuseport: setsockopt SO_ATTACH_REUSEPORT_[CE]BPF")
    Cc: Craig Gallek <kraig@google.com>
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Song Liu <songliubraving@fb.com>
    Acked-by: Craig Gallek <kraig@google.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79c6a8c0997829c2256b0c6fdd9055aa9f877390
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Fri May 31 15:29:13 2019 -0700

    bpf: udp: Avoid calling reuseport's bpf_prog from udp_gro
    
    commit 257a525fe2e49584842c504a92c27097407f778f upstream.
    
    When the commit a6024562ffd7 ("udp: Add GRO functions to UDP socket")
    added udp[46]_lib_lookup_skb to the udp_gro code path, it broke
    the reuseport_select_sock() assumption that skb->data is pointing
    to the transport header.
    
    This patch follows an earlier __udp6_lib_err() fix by
    passing a NULL skb to avoid calling the reuseport's bpf_prog.
    
    Fixes: a6024562ffd7 ("udp: Add GRO functions to UDP socket")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 613bc37f74c9b2249acbe1a5a80867547f13611a
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Jun 7 01:48:57 2019 +0200

    bpf: fix unconnected udp hooks
    
    commit 983695fa676568fc0fe5ddd995c7267aabc24632 upstream.
    
    Intention of cgroup bind/connect/sendmsg BPF hooks is to act transparently
    to applications as also stated in original motivation in 7828f20e3779 ("Merge
    branch 'bpf-cgroup-bind-connect'"). When recently integrating the latter
    two hooks into Cilium to enable host based load-balancing with Kubernetes,
    I ran into the issue that pods couldn't start up as DNS got broken. Kubernetes
    typically sets up DNS as a service and is thus subject to load-balancing.
    
    Upon further debugging, it turns out that the cgroupv2 sendmsg BPF hooks API
    is currently insufficient and thus not usable as-is for standard applications
    shipped with most distros. To break down the issue we ran into with a simple
    example:
    
      # cat /etc/resolv.conf
      nameserver 147.75.207.207
      nameserver 147.75.207.208
    
    For the purpose of a simple test, we set up above IPs as service IPs and
    transparently redirect traffic to a different DNS backend server for that
    node:
    
      # cilium service list
      ID   Frontend            Backend
      1    147.75.207.207:53   1 => 8.8.8.8:53
      2    147.75.207.208:53   1 => 8.8.8.8:53
    
    The attached BPF program is basically selecting one of the backends if the
    service IP/port matches on the cgroup hook. DNS breaks here, because the
    hooks are not transparent enough to applications which have built-in msg_name
    address checks:
    
      # nslookup 1.1.1.1
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.207#53
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.208#53
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.207#53
      [...]
      ;; connection timed out; no servers could be reached
    
      # dig 1.1.1.1
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.207#53
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.208#53
      ;; reply from unexpected source: 8.8.8.8#53, expected 147.75.207.207#53
      [...]
    
      ; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> 1.1.1.1
      ;; global options: +cmd
      ;; connection timed out; no servers could be reached
    
    For comparison, if none of the service IPs is used, and we tell nslookup
    to use 8.8.8.8 directly it works just fine, of course:
    
      # nslookup 1.1.1.1 8.8.8.8
      1.1.1.1.in-addr.arpa  name = one.one.one.one.
    
    In order to fix this and thus act more transparent to the application,
    this needs reverse translation on recvmsg() side. A minimal fix for this
    API is to add similar recvmsg() hooks behind the BPF cgroups static key
    such that the program can track state and replace the current sockaddr_in{,6}
    with the original service IP. From BPF side, this basically tracks the
    service tuple plus socket cookie in an LRU map where the reverse NAT can
    then be retrieved via map value as one example. Side-note: the BPF cgroups
    static key should be converted to a per-hook static key in future.
    
    Same example after this fix:
    
      # cilium service list
      ID   Frontend            Backend
      1    147.75.207.207:53   1 => 8.8.8.8:53
      2    147.75.207.208:53   1 => 8.8.8.8:53
    
    Lookups work fine now:
    
      # nslookup 1.1.1.1
      1.1.1.1.in-addr.arpa    name = one.one.one.one.
    
      Authoritative answers can be found from:
    
      # dig 1.1.1.1
    
      ; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> 1.1.1.1
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 51550
      ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
    
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 512
      ;; QUESTION SECTION:
      ;1.1.1.1.                       IN      A
    
      ;; AUTHORITY SECTION:
      .                       23426   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2019052001 1800 900 604800 86400
    
      ;; Query time: 17 msec
      ;; SERVER: 147.75.207.207#53(147.75.207.207)
      ;; WHEN: Tue May 21 12:59:38 UTC 2019
      ;; MSG SIZE  rcvd: 111
    
    And from an actual packet level it shows that we're using the back end
    server when talking via 147.75.207.20{7,8} front end:
    
      # tcpdump -i any udp
      [...]
      12:59:52.698732 IP foo.42011 > google-public-dns-a.google.com.domain: 18803+ PTR? 1.1.1.1.in-addr.arpa. (38)
      12:59:52.698735 IP foo.42011 > google-public-dns-a.google.com.domain: 18803+ PTR? 1.1.1.1.in-addr.arpa. (38)
      12:59:52.701208 IP google-public-dns-a.google.com.domain > foo.42011: 18803 1/0/0 PTR one.one.one.one. (67)
      12:59:52.701208 IP google-public-dns-a.google.com.domain > foo.42011: 18803 1/0/0 PTR one.one.one.one. (67)
      [...]
    
    In order to be flexible and to have same semantics as in sendmsg BPF
    programs, we only allow return codes in [1,1] range. In the sendmsg case
    the program is called if msg->msg_name is present which can be the case
    in both, connected and unconnected UDP.
    
    The former only relies on the sockaddr_in{,6} passed via connect(2) if
    passed msg->msg_name was NULL. Therefore, on recvmsg side, we act in similar
    way to call into the BPF program whenever a non-NULL msg->msg_name was
    passed independent of sk->sk_state being TCP_ESTABLISHED or not. Note
    that for TCP case, the msg->msg_name is ignored in the regular recvmsg
    path and therefore not relevant.
    
    For the case of ip{,v6}_recv_error() paths, picked up via MSG_ERRQUEUE,
    the hook is not called. This is intentional as it aligns with the same
    semantics as in case of TCP cgroup BPF hooks right now. This might be
    better addressed in future through a different bpf_attach_type such
    that this case can be distinguished from the regular recvmsg paths,
    for example.
    
    Fixes: 1cedee13d25a ("bpf: Hooks for sys_sendmsg")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Andrey Ignatov <rdna@fb.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Martynas Pumputis <m@lambda.lt>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7177b94aff4febe657fe31bb7e5ecdef72079f4
Author: Matt Mullins <mmullins@fb.com>
Date:   Tue Jun 11 14:53:04 2019 -0700

    bpf: fix nested bpf tracepoints with per-cpu data
    
    commit 9594dc3c7e71b9f52bee1d7852eb3d4e3aea9e99 upstream.
    
    BPF_PROG_TYPE_RAW_TRACEPOINTs can be executed nested on the same CPU, as
    they do not increment bpf_prog_active while executing.
    
    This enables three levels of nesting, to support
      - a kprobe or raw tp or perf event,
      - another one of the above that irq context happens to call, and
      - another one in nmi context
    (at most one of which may be a kprobe or perf event).
    
    Fixes: 20b9d7ac4852 ("bpf: avoid excessive stack usage for perf_sample_data")
    Signed-off-by: Matt Mullins <mmullins@fb.com>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4992d4af588156a1b90853d6f61918d3b7ab5278
Author: Jonathan Lemon <jonathan.lemon@gmail.com>
Date:   Sat Jun 8 12:54:19 2019 -0700

    bpf: lpm_trie: check left child of last leftmost node for NULL
    
    commit da2577fdd0932ea4eefe73903f1130ee366767d2 upstream.
    
    If the leftmost parent node of the tree has does not have a child
    on the left side, then trie_get_next_key (and bpftool map dump) will
    not look at the child on the right.  This leads to the traversal
    missing elements.
    
    Lookup is not affected.
    
    Update selftest to handle this case.
    
    Reproducer:
    
     bpftool map create /sys/fs/bpf/lpm type lpm_trie key 6 \
         value 1 entries 256 name test_lpm flags 1
     bpftool map update pinned /sys/fs/bpf/lpm key  8 0 0 0  0   0 value 1
     bpftool map update pinned /sys/fs/bpf/lpm key 16 0 0 0  0 128 value 2
     bpftool map dump   pinned /sys/fs/bpf/lpm
    
    Returns only 1 element. (2 expected)
    
    Fixes: b471f2f1de8b ("bpf: implement MAP_GET_NEXT_KEY command for LPM_TRIE")
    Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e558f9a6d7bc5dcdd33a0980777078894670fd5
Author: Martynas Pumputis <m@lambda.lt>
Date:   Wed Jun 12 18:05:40 2019 +0200

    bpf: simplify definition of BPF_FIB_LOOKUP related flags
    
    commit b1d6c15b9d824a58c5415673f374fac19e8eccdf upstream.
    
    Previously, the BPF_FIB_LOOKUP_{DIRECT,OUTPUT} flags in the BPF UAPI
    were defined with the help of BIT macro. This had the following issues:
    
    - In order to use any of the flags, a user was required to depend
      on <linux/bits.h>.
    - No other flag in bpf.h uses the macro, so it seems that an unwritten
      convention is to use (1 << (nr)) to define BPF-related flags.
    
    Fixes: 87f5fc7e48dd ("bpf: Provide helper to do forwarding lookups in kernel FIB table")
    Signed-off-by: Martynas Pumputis <m@lambda.lt>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d2c0ec20cb207caac46bc9857573e453792fbdd
Author: Fei Li <lifei.shirley@bytedance.com>
Date:   Mon Jun 17 21:26:36 2019 +0800

    tun: wake up waitqueues after IFF_UP is set
    
    [ Upstream commit 72b319dc08b4924a29f5e2560ef6d966fa54c429 ]
    
    Currently after setting tap0 link up, the tun code wakes tx/rx waited
    queues up in tun_net_open() when .ndo_open() is called, however the
    IFF_UP flag has not been set yet. If there's already a wait queue, it
    would fail to transmit when checking the IFF_UP flag in tun_sendmsg().
    Then the saving vhost_poll_start() will add the wq into wqh until it
    is waken up again. Although this works when IFF_UP flag has been set
    when tun_chr_poll detects; this is not true if IFF_UP flag has not
    been set at that time. Sadly the latter case is a fatal error, as
    the wq will never be waken up in future unless later manually
    setting link up on purpose.
    
    Fix this by moving the wakeup process into the NETDEV_UP event
    notifying process, this makes sure IFF_UP has been set before all
    waited queues been waken up.
    
    Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a08b915457d6d4d771a466d81e9da9c2acab7459
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Jun 25 00:28:19 2019 +0800

    tipc: check msg->req data len in tipc_nl_compat_bearer_disable
    
    [ Upstream commit 4f07b80c973348a99b5d2a32476a2e7877e94a05 ]
    
    This patch is to fix an uninit-value issue, reported by syzbot:
    
      BUG: KMSAN: uninit-value in memchr+0xce/0x110 lib/string.c:981
      Call Trace:
        __dump_stack lib/dump_stack.c:77 [inline]
        dump_stack+0x191/0x1f0 lib/dump_stack.c:113
        kmsan_report+0x130/0x2a0 mm/kmsan/kmsan.c:622
        __msan_warning+0x75/0xe0 mm/kmsan/kmsan_instr.c:310
        memchr+0xce/0x110 lib/string.c:981
        string_is_valid net/tipc/netlink_compat.c:176 [inline]
        tipc_nl_compat_bearer_disable+0x2a1/0x480 net/tipc/netlink_compat.c:449
        __tipc_nl_compat_doit net/tipc/netlink_compat.c:327 [inline]
        tipc_nl_compat_doit+0x3ac/0xb00 net/tipc/netlink_compat.c:360
        tipc_nl_compat_handle net/tipc/netlink_compat.c:1178 [inline]
        tipc_nl_compat_recv+0x1b1b/0x27b0 net/tipc/netlink_compat.c:1281
    
    TLV_GET_DATA_LEN() may return a negtive int value, which will be
    used as size_t (becoming a big unsigned long) passed into memchr,
    cause this issue.
    
    Similar to what it does in tipc_nl_compat_bearer_enable(), this
    fix is to return -EINVAL when TLV_GET_DATA_LEN() is negtive in
    tipc_nl_compat_bearer_disable(), as well as in
    tipc_nl_compat_link_stat_dump() and tipc_nl_compat_link_reset_stats().
    
    v1->v2:
      - add the missing Fixes tags per Eric's request.
    
    Fixes: 0762216c0ad2 ("tipc: fix uninit-value in tipc_nl_compat_bearer_enable")
    Fixes: 8b66fee7f8ee ("tipc: fix uninit-value in tipc_nl_compat_link_reset_stats")
    Reported-by: syzbot+30eaa8bf392f7fafffaf@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdf3e98e1fd9da1215c8c871c90b38d0d0503302
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Jun 20 18:39:28 2019 +0800

    tipc: change to use register_pernet_device
    
    [ Upstream commit c492d4c74dd3f87559883ffa0f94a8f1ae3fe5f5 ]
    
    This patch is to fix a dst defcnt leak, which can be reproduced by doing:
    
      # ip net a c; ip net a s; modprobe tipc
      # ip net e s ip l a n eth1 type veth peer n eth1 netns c
      # ip net e c ip l s lo up; ip net e c ip l s eth1 up
      # ip net e s ip l s lo up; ip net e s ip l s eth1 up
      # ip net e c ip a a 1.1.1.2/8 dev eth1
      # ip net e s ip a a 1.1.1.1/8 dev eth1
      # ip net e c tipc b e m udp n u1 localip 1.1.1.2
      # ip net e s tipc b e m udp n u1 localip 1.1.1.1
      # ip net d c; ip net d s; rmmod tipc
    
    and it will get stuck and keep logging the error:
    
      unregister_netdevice: waiting for lo to become free. Usage count = 1
    
    The cause is that a dst is held by the udp sock's sk_rx_dst set on udp rx
    path with udp_early_demux == 1, and this dst (eventually holding lo dev)
    can't be released as bearer's removal in tipc pernet .exit happens after
    lo dev's removal, default_device pernet .exit.
    
     "There are two distinct types of pernet_operations recognized: subsys and
      device.  At creation all subsys init functions are called before device
      init functions, and at destruction all device exit functions are called
      before subsys exit function."
    
    So by calling register_pernet_device instead to register tipc_net_ops, the
    pernet .exit() will be invoked earlier than loopback dev's removal when a
    netns is being destroyed, as fou/gue does.
    
    Note that vxlan and geneve udp tunnels don't have this issue, as the udp
    sock is released in their device ndo_stop().
    
    This fix is also necessary for tipc dst_cache, which will hold dsts on tx
    path and I will introduce in my next patch.
    
    Reported-by: Li Shuang <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32b711f57ce7b960b8a890d7ab846a95c0261616
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Jun 27 00:03:39 2019 +0800

    team: Always enable vlan tx offload
    
    [ Upstream commit ee4297420d56a0033a8593e80b33fcc93fda8509 ]
    
    We should rather have vlan_tci filled all the way down
    to the transmitting netdevice and let it do the hw/sw
    vlan implementation.
    
    Suggested-by: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eeb770d6ab778941be5f2925f6a7aec137a18935
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Jun 25 00:21:45 2019 +0800

    sctp: change to hold sk after auth shkey is created successfully
    
    [ Upstream commit 25bff6d5478b2a02368097015b7d8eb727c87e16 ]
    
    Now in sctp_endpoint_init(), it holds the sk then creates auth
    shkey. But when the creation fails, it doesn't release the sk,
    which causes a sk defcnf leak,
    
    Here to fix it by only holding the sk when auth shkey is created
    successfully.
    
    Fixes: a29a5bd4f5c3 ("[SCTP]: Implement SCTP-AUTH initializations.")
    Reported-by: syzbot+afabda3890cc2f765041@syzkaller.appspotmail.com
    Reported-by: syzbot+276ca1c77a19977c0130@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b7b0aab47508f5ee88c6475c2e1a3a39dff9c1c
Author: Roland Hii <roland.king.guan.hii@intel.com>
Date:   Wed Jun 19 22:41:48 2019 +0800

    net: stmmac: set IC bit when transmitting frames with HW timestamp
    
    [ Upstream commit d0bb82fd60183868f46c8ccc595a3d61c3334a18 ]
    
    When transmitting certain PTP frames, e.g. SYNC and DELAY_REQ, the
    PTP daemon, e.g. ptp4l, is polling the driver for the frame transmit
    hardware timestamp. The polling will most likely timeout if the tx
    coalesce is enabled due to the Interrupt-on-Completion (IC) bit is
    not set in tx descriptor for those frames.
    
    This patch will ignore the tx coalesce parameter and set the IC bit
    when transmitting PTP frames which need to report out the frame
    transmit hardware timestamp to user space.
    
    Fixes: f748be531d70 ("net: stmmac: Rework coalesce timer and fix multi-queue races")
    Signed-off-by: Roland Hii <roland.king.guan.hii@intel.com>
    Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
    Signed-off-by: Voon Weifeng <weifeng.voon@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a373bf728188377e8f64d5fd6209ab0c1d7d8f13
Author: Roland Hii <roland.king.guan.hii@intel.com>
Date:   Wed Jun 19 22:13:48 2019 +0800

    net: stmmac: fixed new system time seconds value calculation
    
    [ Upstream commit a1e5388b4d5fc78688e5e9ee6641f779721d6291 ]
    
    When ADDSUB bit is set, the system time seconds field is calculated as
    the complement of the seconds part of the update value.
    
    For example, if 3.000000001 seconds need to be subtracted from the
    system time, this field is calculated as
    2^32 - 3 = 4294967296 - 3 = 0x100000000 - 3 = 0xFFFFFFFD
    
    Previously, the 0x100000000 is mistakenly written as 100000000.
    
    This is further simplified from
      sec = (0x100000000ULL - sec);
    to
      sec = -sec;
    
    Fixes: ba1ffd74df74 ("stmmac: fix PTP support for GMAC4")
    Signed-off-by: Roland Hii <roland.king.guan.hii@intel.com>
    Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
    Signed-off-by: Voon Weifeng <weifeng.voon@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d76fc211609063cc22cb1cef2e3297630a31199
Author: JingYi Hou <houjingyi647@gmail.com>
Date:   Mon Jun 17 14:56:05 2019 +0800

    net: remove duplicate fetch in sock_getsockopt
    
    [ Upstream commit d0bae4a0e3d8c5690a885204d7eb2341a5b4884d ]
    
    In sock_getsockopt(), 'optlen' is fetched the first time from userspace.
    'len < 0' is then checked. Then in condition 'SO_MEMINFO', 'optlen' is
    fetched the second time from userspace.
    
    If change it between two fetches may cause security problems or unexpected
    behaivor, and there is no reason to fetch it a second time.
    
    To fix this, we need to remove the second fetch.
    
    Signed-off-by: JingYi Hou <houjingyi647@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05dceb60e5dd7a40fd9b6c565a62ce272ed4e6a2
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jun 24 02:38:20 2019 -0700

    net/packet: fix memory leak in packet_set_ring()
    
    [ Upstream commit 55655e3d1197fff16a7a05088fb0e5eba50eac55 ]
    
    syzbot found we can leak memory in packet_set_ring(), if user application
    provides buggy parameters.
    
    Fixes: 7f953ab2ba46 ("af_packet: TX_RING support for TPACKET_V3")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c92f3efbad04a8677ad75ddab9638c8006617c5
Author: Stephen Suryaputra <ssuryaextr@gmail.com>
Date:   Mon Jun 24 20:14:06 2019 -0400

    ipv4: Use return value of inet_iif() for __raw_v4_lookup in the while loop
    
    [ Upstream commit 38c73529de13e1e10914de7030b659a2f8b01c3b ]
    
    In commit 19e4e768064a8 ("ipv4: Fix raw socket lookup for local
    traffic"), the dif argument to __raw_v4_lookup() is coming from the
    returned value of inet_iif() but the change was done only for the first
    lookup. Subsequent lookups in the while loop still use skb->dev->ifIndex.
    
    Fixes: 19e4e768064a8 ("ipv4: Fix raw socket lookup for local traffic")
    Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f3451723ddc06fd23ce3bd0d972a317264c6560
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Jun 26 16:08:44 2019 +0800

    bonding: Always enable vlan tx offload
    
    [ Upstream commit 30d8177e8ac776d89d387fad547af6a0f599210e ]
    
    We build vlan on top of bonding interface, which vlan offload
    is off, bond mode is 802.3ad (LACP) and xmit_hash_policy is
    BOND_XMIT_POLICY_ENCAP34.
    
    Because vlan tx offload is off, vlan tci is cleared and skb push
    the vlan header in validate_xmit_vlan() while sending from vlan
    devices. Then in bond_xmit_hash, __skb_flow_dissect() fails to
    get information from protocol headers encapsulated within vlan,
    because 'nhoff' is points to IP header, so bond hashing is based
    on layer 2 info, which fails to distribute packets across slaves.
    
    This patch always enable bonding's vlan tx offload, pass the vlan
    packets to the slave devices with vlan tci, let them to handle
    vlan implementation.
    
    Fixes: 278339a42a1b ("bonding: propogate vlan_features to bonding master")
    Suggested-by: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4709127e5dd7b3bae9a53b5312d81ce52552a36
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Tue Jun 25 17:57:49 2019 -0400

    af_packet: Block execution of tasks waiting for transmit to complete in AF_PACKET
    
    [ Upstream commit 89ed5b519004a7706f50b70f611edbd3aaacff2c ]
    
    When an application is run that:
    a) Sets its scheduler to be SCHED_FIFO
    and
    b) Opens a memory mapped AF_PACKET socket, and sends frames with the
    MSG_DONTWAIT flag cleared, its possible for the application to hang
    forever in the kernel.  This occurs because when waiting, the code in
    tpacket_snd calls schedule, which under normal circumstances allows
    other tasks to run, including ksoftirqd, which in some cases is
    responsible for freeing the transmitted skb (which in AF_PACKET calls a
    destructor that flips the status bit of the transmitted frame back to
    available, allowing the transmitting task to complete).
    
    However, when the calling application is SCHED_FIFO, its priority is
    such that the schedule call immediately places the task back on the cpu,
    preventing ksoftirqd from freeing the skb, which in turn prevents the
    transmitting task from detecting that the transmission is complete.
    
    We can fix this by converting the schedule call to a completion
    mechanism.  By using a completion queue, we force the calling task, when
    it detects there are no more frames to send, to schedule itself off the
    cpu until such time as the last transmitted skb is freed, allowing
    forward progress to be made.
    
    Tested by myself and the reporter, with good results
    
    Change Notes:
    
    V1->V2:
            Enhance the sleep logic to support being interruptible and
    allowing for honoring to SK_SNDTIMEO (Willem de Bruijn)
    
    V2->V3:
            Rearrage the point at which we wait for the completion queue, to
    avoid needing to check for ph/skb being null at the end of the loop.
    Also move the complete call to the skb destructor to avoid needing to
    modify __packet_set_status.  Also gate calling complete on
    packet_read_pending returning zero to avoid multiple calls to complete.
    (Willem de Bruijn)
    
            Move timeo computation within loop, to re-fetch the socket
    timeout since we also use the timeo variable to record the return code
    from the wait_for_complete call (Neil Horman)
    
    V3->V4:
            Willem has requested that the control flow be restored to the
    previous state.  Doing so lets us eliminate the need for the
    po->wait_on_complete flag variable, and lets us get rid of the
    packet_next_frame function, but introduces another complexity.
    Specifically, but using the packet pending count, we can, if an
    applications calls sendmsg multiple times with MSG_DONTWAIT set, each
    set of transmitted frames, when complete, will cause
    tpacket_destruct_skb to issue a complete call, for which there will
    never be a wait_on_completion call.  This imbalance will lead to any
    future call to wait_for_completion here to return early, when the frames
    they sent may not have completed.  To correct this, we need to re-init
    the completion queue on every call to tpacket_snd before we enter the
    loop so as to ensure we wait properly for the frames we send in this
    iteration.
    
            Change the timeout and interrupted gotos to out_put rather than
    out_status so that we don't try to free a non-existant skb
            Clean up some extra newlines (Willem de Bruijn)
    
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Reported-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64032e2d9ba85819c79b22788d9d155a8320f452
Author: Wang Xin <xin.wang7@cn.bosch.com>
Date:   Thu Aug 16 19:45:34 2018 +0200

    eeprom: at24: fix unexpected timeout under high load
    
    commit 9a9e295e7c5c0409c020088b0ae017e6c2b7df6e upstream.
    
    Within at24_loop_until_timeout the timestamp used for timeout checking
    is recorded after the I2C transfer and sleep_range(). Under high CPU
    load either the execution time for I2C transfer or sleep_range() could
    actually be larger than the timeout value. Worst case the I2C transfer
    is only tried once because the loop will exit due to the timeout
    although the EEPROM is now ready.
    
    To fix this issue the timestamp is recorded at the beginning of each
    iteration. That is, before I2C transfer and sleep. Then the timeout
    is actually checked against the timestamp of the previous iteration.
    This makes sure that even if the timeout is reached, there is still one
    more chance to try the I2C transfer in case the EEPROM is ready.
    
    Example:
    
    If you have a system which combines high CPU load with repeated EEPROM
    writes you will run into the following scenario.
    
     - System makes a successful regmap_bulk_write() to EEPROM.
     - System wants to perform another write to EEPROM but EEPROM is still
       busy with the last write.
     - Because of high CPU load the usleep_range() will sleep more than
       25 ms (at24_write_timeout).
     - Within the over-long sleeping the EEPROM finished the previous write
       operation and is ready again.
     - at24_loop_until_timeout() will detect timeout and won't try to write.
    
    Signed-off-by: Wang Xin <xin.wang7@cn.bosch.com>
    Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c22cea5a21b236581dd6e43767bfabe533b9001a
Author: Paul Burton <paul.burton@mips.com>
Date:   Wed Jun 5 09:34:10 2019 +0100

    irqchip/mips-gic: Use the correct local interrupt map registers
    
    commit 6d4d367d0e9ffab4d64a3436256a6a052dc1195d upstream.
    
    The MIPS GIC contains a block of registers used to map local interrupts
    to a particular CPU interrupt pin. Since these registers are found at a
    consecutive range of addresses we access them using an index, via the
    (read|write)_gic_v[lo]_map accessor functions. We currently use values
    from enum mips_gic_local_interrupt as those indices.
    
    Unfortunately whilst enum mips_gic_local_interrupt provides the correct
    offsets for bits in the pending & mask registers, the ordering of the
    map registers is subtly different... Compared with the ordering of
    pending & mask bits, the map registers move the FDC from the end of the
    list to index 3 after the timer interrupt. As a result the performance
    counter & software interrupts are therefore at indices 4-6 rather than
    indices 3-5.
    
    Notably this causes problems with performance counter interrupts being
    incorrectly mapped on some systems, and presumably will also cause
    problems for FDC interrupts.
    
    Introduce a function to map from enum mips_gic_local_interrupt to the
    index of the corresponding map register, and use it to ensure we access
    the map registers for the correct interrupts.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Fixes: a0dc5cb5e31b ("irqchip: mips-gic: Simplify gic_local_irq_domain_map()")
    Fixes: da61fcf9d62a ("irqchip: mips-gic: Use irq_cpu_online to (un)mask all-VP(E) IRQs")
    Reported-and-tested-by: Archer Yan <ayan@wavecomp.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd9f2fb59e0134b5759857d24d223ee1e1ef3d1a
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Aug 22 14:24:16 2018 -0400

    SUNRPC: Clean up initialisation of the struct rpc_rqst
    
    commit 9dc6edcf676fe188430e8b119f91280bbf285163 upstream.
    
    Move the initialisation back into xprt.c.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Cc: Yihao Wu <wuyihao@linux.alibaba.com>
    Cc: Caspar Zhang <caspar@linux.alibaba.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b78ad2169282ae469eebfb35bfba9615f0d9c6cc
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Thu May 16 09:09:35 2019 +0200

    cpu/speculation: Warn on unsupported mitigations= parameter
    
    commit 1bf72720281770162c87990697eae1ba2f1d917a upstream.
    
    Currently, if the user specifies an unsupported mitigation strategy on the
    kernel command line, it will be ignored silently.  The code will fall back
    to the default strategy, possibly leaving the system more vulnerable than
    expected.
    
    This may happen due to e.g. a simple typo, or, for a stable kernel release,
    because not all mitigation strategies have been backported.
    
    Inform the user by printing a message.
    
    Fixes: 98af8452945c5565 ("cpu/speculation: Add 'mitigations=' cmdline option")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190516070935.22546-1-geert@linux-m68k.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27380331755f1b17a49cb3d2c7db43d10ec8749a
Author: Trond Myklebust <trondmy@gmail.com>
Date:   Tue Jun 25 16:41:16 2019 -0400

    NFS/flexfiles: Use the correct TCP timeout for flexfiles I/O
    
    commit 68f461593f76bd5f17e87cdd0bea28f4278c7268 upstream.
    
    Fix a typo where we're confusing the default TCP retrans value
    (NFS_DEF_TCP_RETRANS) for the default TCP timeout value.
    
    Fixes: 15d03055cf39f ("pNFS/flexfiles: Set reasonable default ...")
    Cc: stable@vger.kernel.org # 4.8+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01a02a98ab1c503298864f565d7cab1af5561497
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Thu Jun 13 10:22:23 2019 -0700

    KVM: x86/mmu: Allocate PAE root array when using SVM's 32-bit NPT
    
    commit b6b80c78af838bef17501416d5d383fedab0010a upstream.
    
    SVM's Nested Page Tables (NPT) reuses x86 paging for the host-controlled
    page walk.  For 32-bit KVM, this means PAE paging is used even when TDP
    is enabled, i.e. the PAE root array needs to be allocated.
    
    Fixes: ee6268ba3a68 ("KVM: x86: Skip pae_root shadow allocation if tdp enabled")
    Cc: stable@vger.kernel.org
    Reported-by: Jiri Palecek <jpalecek@web.de>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Jiri Palecek <jpalecek@web.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 327460322c7c5ebfd9b3272d906e887f8a46ca94
Author: Reinette Chatre <reinette.chatre@intel.com>
Date:   Wed Jun 19 13:27:16 2019 -0700

    x86/resctrl: Prevent possible overrun during bitmap operations
    
    commit 32f010deab575199df4ebe7b6aec20c17bb7eccd upstream.
    
    While the DOC at the beginning of lib/bitmap.c explicitly states that
    "The number of valid bits in a given bitmap does _not_ need to be an
    exact multiple of BITS_PER_LONG.", some of the bitmap operations do
    indeed access BITS_PER_LONG portions of the provided bitmap no matter
    the size of the provided bitmap.
    
    For example, if find_first_bit() is provided with an 8 bit bitmap the
    operation will access BITS_PER_LONG bits from the provided bitmap. While
    the operation ensures that these extra bits do not affect the result,
    the memory is still accessed.
    
    The capacity bitmasks (CBMs) are typically stored in u32 since they
    can never exceed 32 bits. A few instances exist where a bitmap_*
    operation is performed on a CBM by simply pointing the bitmap operation
    to the stored u32 value.
    
    The consequence of this pattern is that some bitmap_* operations will
    access out-of-bounds memory when interacting with the provided CBM.
    
    This same issue has previously been addressed with commit 49e00eee0061
    ("x86/intel_rdt: Fix out-of-bounds memory access in CBM tests")
    but at that time not all instances of the issue were fixed.
    
    Fix this by using an unsigned long to store the capacity bitmask data
    that is passed to bitmap functions.
    
    Fixes: e651901187ab ("x86/intel_rdt: Introduce "bit_usage" to display cache allocations details")
    Fixes: f4e80d67a527 ("x86/intel_rdt: Resctrl files reflect pseudo-locked information")
    Fixes: 95f0b77efa57 ("x86/intel_rdt: Initialize new resource group with sane defaults")
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable <stable@vger.kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/58c9b6081fd9bf599af0dfc01a6fdd335768efef.1560975645.git.reinette.chatre@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1746dc52910481af79df3382789e56073017ab29
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jun 18 22:31:40 2019 +0200

    x86/microcode: Fix the microcode load on CPU hotplug for real
    
    commit 5423f5ce5ca410b3646f355279e4e937d452e622 upstream.
    
    A recent change moved the microcode loader hotplug callback into the early
    startup phase which is running with interrupts disabled. It missed that
    the callbacks invoke sysfs functions which might sleep causing nice 'might
    sleep' splats with proper debugging enabled.
    
    Split the callbacks and only load the microcode in the early startup phase
    and move the sysfs handling back into the later threaded and preemptible
    bringup phase where it was before.
    
    Fixes: 78f4e932f776 ("x86/microcode, cpuhotplug: Add a microcode loader CPU hotplug callback")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1906182228350.1766@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 690049eddb0cbc93bb37f7805379d4e2a2531284
Author: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
Date:   Mon Jun 10 13:20:10 2019 -0400

    x86/speculation: Allow guests to use SSBD even if host does not
    
    commit c1f7fec1eb6a2c86d01bc22afce772c743451d88 upstream.
    
    The bits set in x86_spec_ctrl_mask are used to calculate the guest's value
    of SPEC_CTRL that is written to the MSR before VMENTRY, and control which
    mitigations the guest can enable.  In the case of SSBD, unless the host has
    enabled SSBD always on mode (by passing "spec_store_bypass_disable=on" in
    the kernel parameters), the SSBD bit is not set in the mask and the guest
    can not properly enable the SSBD always on mitigation mode.
    
    This has been confirmed by running the SSBD PoC on a guest using the SSBD
    always on mitigation mode (booted with kernel parameter
    "spec_store_bypass_disable=on"), and verifying that the guest is vulnerable
    unless the host is also using SSBD always on mode. In addition, the guest
    OS incorrectly reports the SSB vulnerability as mitigated.
    
    Always set the SSBD bit in x86_spec_ctrl_mask when the host CPU supports
    it, allowing the guest to use SSBD whether or not the host has chosen to
    enable the mitigation in any of its modes.
    
    Fixes: be6fcb5478e9 ("x86/bugs: Rework spec_ctrl base and mask logic")
    Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
    Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: bp@alien8.de
    Cc: rkrcmar@redhat.com
    Cc: kvm@vger.kernel.org
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1560187210-11054-1-git-send-email-alejandro.j.jimenez@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee71e97285c29075dc32af16fbdf3472f113aa57
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jun 19 09:05:41 2019 +0200

    scsi: vmw_pscsi: Fix use-after-free in pvscsi_queue_lck()
    
    commit 240b4cc8fd5db138b675297d4226ec46594d9b3b upstream.
    
    Once we unlock adapter->hw_lock in pvscsi_queue_lck() nothing prevents just
    queued scsi_cmnd from completing and freeing the request. Thus cmd->cmnd[0]
    dereference can dereference already freed request leading to kernel crashes
    or other issues (which one of our customers observed). Store cmd->cmnd[0]
    in a local variable before unlocking adapter->hw_lock to fix the issue.
    
    CC: <stable@vger.kernel.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ba0a5009607b524ea619cca62ed9d696d010f01
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Wed Jun 5 21:27:08 2019 +0800

    dm log writes: make sure super sector log updates are written in order
    
    commit 211ad4b733037f66f9be0a79eade3da7ab11cbb8 upstream.
    
    Currently, although we submit super bios in order (and super.nr_entries
    is incremented by each logged entry), submit_bio() is async so each
    super sector may not be written to log device in order and then the
    final nr_entries may be smaller than it should be.
    
    This problem can be reproduced by the xfstests generic/455 with ext4:
    
      QA output created by 455
     -Silence is golden
     +mark 'end' does not exist
    
    Fix this by serializing submission of super sectors to make sure each
    is written to the log disk in order.
    
    Fixes: 0e9cebe724597 ("dm: add log writes target")
    Cc: stable@vger.kernel.org
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    Suggested-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87cf811ab6fb84116931fd70b3a9e5d52207797d
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri Jun 28 12:07:05 2019 -0700

    mm/page_idle.c: fix oops because end_pfn is larger than max_pfn
    
    commit 7298e3b0a149c91323b3205d325e942c3b3b9ef6 upstream.
    
    Currently the calcuation of end_pfn can round up the pfn number to more
    than the actual maximum number of pfns, causing an Oops.  Fix this by
    ensuring end_pfn is never more than max_pfn.
    
    This can be easily triggered when on systems where the end_pfn gets
    rounded up to more than max_pfn using the idle-page stress-ng stress test:
    
    sudo stress-ng --idle-page 0
    
      BUG: unable to handle kernel paging request at 00000000000020d8
      #PF error: [normal kernel read fault]
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP PTI
      CPU: 1 PID: 11039 Comm: stress-ng-idle- Not tainted 5.0.0-5-generic #6-Ubuntu
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
      RIP: 0010:page_idle_get_page+0xc8/0x1a0
      Code: 0f b1 0a 75 7d 48 8b 03 48 89 c2 48 c1 e8 33 83 e0 07 48 c1 ea 36 48 8d 0c 40 4c 8d 24 88 49 c1 e4 07 4c 03 24 d5 00 89 c3 be <49> 8b 44 24 58 48 8d b8 80 a1 02 00 e8 07 d5 77 00 48 8b 53 08 48
      RSP: 0018:ffffafd7c672fde8 EFLAGS: 00010202
      RAX: 0000000000000005 RBX: ffffe36341fff700 RCX: 000000000000000f
      RDX: 0000000000000284 RSI: 0000000000000275 RDI: 0000000001fff700
      RBP: ffffafd7c672fe00 R08: ffffa0bc34056410 R09: 0000000000000276
      R10: ffffa0bc754e9b40 R11: ffffa0bc330f6400 R12: 0000000000002080
      R13: ffffe36341fff700 R14: 0000000000080000 R15: ffffa0bc330f6400
      FS: 00007f0ec1ea5740(0000) GS:ffffa0bc7db00000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000000020d8 CR3: 0000000077d68000 CR4: 00000000000006e0
      Call Trace:
        page_idle_bitmap_write+0x8c/0x140
        sysfs_kf_bin_write+0x5c/0x70
        kernfs_fop_write+0x12e/0x1b0
        __vfs_write+0x1b/0x40
        vfs_write+0xab/0x1b0
        ksys_write+0x55/0xc0
        __x64_sys_write+0x1a/0x20
        do_syscall_64+0x5a/0x110
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Link: http://lkml.kernel.org/r/20190618124352.28307-1-colin.king@canonical.com
    Fixes: 33c3fc71c8cf ("mm: introduce idle page tracking")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1192fb703d095097a2d974cf122b77e364412564
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Fri Jun 28 12:06:56 2019 -0700

    mm: hugetlb: soft-offline: dissolve_free_huge_page() return zero on !PageHuge
    
    commit faf53def3b143df11062d87c12afe6afeb6f8cc7 upstream.
    
    madvise(MADV_SOFT_OFFLINE) often returns -EBUSY when calling soft offline
    for hugepages with overcommitting enabled.  That was caused by the
    suboptimal code in current soft-offline code.  See the following part:
    
        ret = migrate_pages(&pagelist, new_page, NULL, MPOL_MF_MOVE_ALL,
                                MIGRATE_SYNC, MR_MEMORY_FAILURE);
        if (ret) {
                ...
        } else {
                /*
                 * We set PG_hwpoison only when the migration source hugepage
                 * was successfully dissolved, because otherwise hwpoisoned
                 * hugepage remains on free hugepage list, then userspace will
                 * find it as SIGBUS by allocation failure. That's not expected
                 * in soft-offlining.
                 */
                ret = dissolve_free_huge_page(page);
                if (!ret) {
                        if (set_hwpoison_free_buddy_page(page))
                                num_poisoned_pages_inc();
                }
        }
        return ret;
    
    Here dissolve_free_huge_page() returns -EBUSY if the migration source page
    was freed into buddy in migrate_pages(), but even in that case we actually
    has a chance that set_hwpoison_free_buddy_page() succeeds.  So that means
    current code gives up offlining too early now.
    
    dissolve_free_huge_page() checks that a given hugepage is suitable for
    dissolving, where we should return success for !PageHuge() case because
    the given hugepage is considered as already dissolved.
    
    This change also affects other callers of dissolve_free_huge_page(), which
    are cleaned up together.
    
    [n-horiguchi@ah.jp.nec.com: v3]
      Link: http://lkml.kernel.org/r/1560761476-4651-3-git-send-email-n-horiguchi@ah.jp.nec.comLink: http://lkml.kernel.org/r/1560154686-18497-3-git-send-email-n-horiguchi@ah.jp.nec.com
    Fixes: 6bc9b56433b76 ("mm: fix race on soft-offlining")
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reported-by: Chen, Jerry T <jerry.t.chen@intel.com>
    Tested-by: Chen, Jerry T <jerry.t.chen@intel.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Xishi Qiu <xishi.qiuxishi@alibaba-inc.com>
    Cc: "Chen, Jerry T" <jerry.t.chen@intel.com>
    Cc: "Zhuo, Qiuxu" <qiuxu.zhuo@intel.com>
    Cc: <stable@vger.kernel.org>    [4.19+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aab629188848b6b7af2e41374dfe0b4e61cc8add
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Fri Jun 28 12:06:53 2019 -0700

    mm: soft-offline: return -EBUSY if set_hwpoison_free_buddy_page() fails
    
    commit b38e5962f8ed0d2a2b28a887fc2221f7f41db119 upstream.
    
    The pass/fail of soft offline should be judged by checking whether the
    raw error page was finally contained or not (i.e.  the result of
    set_hwpoison_free_buddy_page()), but current code do not work like
    that.  It might lead us to misjudge the test result when
    set_hwpoison_free_buddy_page() fails.
    
    Without this fix, there are cases where madvise(MADV_SOFT_OFFLINE) may
    not offline the original page and will not return an error.
    
    Link: http://lkml.kernel.org/r/1560154686-18497-2-git-send-email-n-horiguchi@ah.jp.nec.com
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Fixes: 6bc9b56433b76 ("mm: fix race on soft-offlining")
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Xishi Qiu <xishi.qiuxishi@alibaba-inc.com>
    Cc: "Chen, Jerry T" <jerry.t.chen@intel.com>
    Cc: "Zhuo, Qiuxu" <qiuxu.zhuo@intel.com>
    Cc: <stable@vger.kernel.org>    [4.19+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcfed145e5832f4f82c6a9feb08477421ed1117b
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Fri Jun 7 10:12:46 2019 -0500

    clk: socfpga: stratix10: fix divider entry for the emac clocks
    
    commit 74684cce5ebd567b01e9bc0e9a1945c70a32f32f upstream.
    
    The fixed dividers for the emac clocks should be 2 not 4.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75f5d78d9fbe704e6d2b7190d2ed053ba5e68103
Author: Jann Horn <jannh@google.com>
Date:   Fri Jun 28 12:06:46 2019 -0700

    fs/binfmt_flat.c: make load_flat_shared_library() work
    
    commit 867bfa4a5fcee66f2b25639acae718e8b28b25a5 upstream.
    
    load_flat_shared_library() is broken: It only calls load_flat_file() if
    prepare_binprm() returns zero, but prepare_binprm() returns the number of
    bytes read - so this only happens if the file is empty.
    
    Instead, call into load_flat_file() if the number of bytes read is
    non-negative. (Even if the number of bytes is zero - in that case,
    load_flat_file() will see nullbytes and return a nice -ENOEXEC.)
    
    In addition, remove the code related to bprm creds and stop using
    prepare_binprm() - this code is loading a library, not a main executable,
    and it only actually uses the members "buf", "file" and "filename" of the
    linux_binprm struct. Instead, call kernel_read() directly.
    
    Link: http://lkml.kernel.org/r/20190524201817.16509-1-jannh@google.com
    Fixes: 287980e49ffc ("remove lots of IS_ERR_VALUE abuses")
    Signed-off-by: Jann Horn <jannh@google.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Greg Ungerer <gerg@linux-m68k.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49e9b499a34d8e6f655621ae0b4028e80fccbc4f
Author: zhong jiang <zhongjiang@huawei.com>
Date:   Fri Jun 28 12:06:43 2019 -0700

    mm/mempolicy.c: fix an incorrect rebind node in mpol_rebind_nodemask
    
    commit 29b190fa774dd1b72a1a6f19687d55dc72ea83be upstream.
    
    mpol_rebind_nodemask() is called for MPOL_BIND and MPOL_INTERLEAVE
    mempoclicies when the tasks's cpuset's mems_allowed changes.  For
    policies created without MPOL_F_STATIC_NODES or MPOL_F_RELATIVE_NODES,
    it works by remapping the policy's allowed nodes (stored in v.nodes)
    using the previous value of mems_allowed (stored in
    w.cpuset_mems_allowed) as the domain of map and the new mems_allowed
    (passed as nodes) as the range of the map (see the comment of
    bitmap_remap() for details).
    
    The result of remapping is stored back as policy's nodemask in v.nodes,
    and the new value of mems_allowed should be stored in
    w.cpuset_mems_allowed to facilitate the next rebind, if it happens.
    
    However, 213980c0f23b ("mm, mempolicy: simplify rebinding mempolicies
    when updating cpusets") introduced a bug where the result of remapping
    is stored in w.cpuset_mems_allowed instead.  Thus, a mempolicy's
    allowed nodes can evolve in an unexpected way after a series of
    rebinding due to cpuset mems_allowed changes, possibly binding to a
    wrong node or a smaller number of nodes which may e.g.  overload them.
    This patch fixes the bug so rebinding again works as intended.
    
    [vbabka@suse.cz: new changlog]
      Link: http://lkml.kernel.org/r/ef6a69c6-c052-b067-8f2c-9d615c619bb9@suse.cz
    Link: http://lkml.kernel.org/r/1558768043-23184-1-git-send-email-zhongjiang@huawei.com
    Fixes: 213980c0f23b ("mm, mempolicy: simplify rebinding mempolicies when updating cpusets")
    Signed-off-by: zhong jiang <zhongjiang@huawei.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a811c0991861900dd519321e08cf13c13379d66
Author: John Ogness <john.ogness@linutronix.de>
Date:   Fri Jun 28 12:06:40 2019 -0700

    fs/proc/array.c: allow reporting eip/esp for all coredumping threads
    
    commit cb8f381f1613cafe3aec30809991cd56e7135d92 upstream.
    
    0a1eb2d474ed ("fs/proc: Stop reporting eip and esp in /proc/PID/stat")
    stopped reporting eip/esp and fd7d56270b52 ("fs/proc: Report eip/esp in
    /prod/PID/stat for coredumping") reintroduced the feature to fix a
    regression with userspace core dump handlers (such as minicoredumper).
    
    Because PF_DUMPCORE is only set for the primary thread, this didn't fix
    the original problem for secondary threads.  Allow reporting the eip/esp
    for all threads by checking for PF_EXITING as well.  This is set for all
    the other threads when they are killed.  coredump_wait() waits for all the
    tasks to become inactive before proceeding to invoke a core dumper.
    
    Link: http://lkml.kernel.org/r/87y32p7i7a.fsf@linutronix.de
    Link: http://lkml.kernel.org/r/20190522161614.628-1-jlu@pengutronix.de
    Fixes: fd7d56270b526ca3 ("fs/proc: Report eip/esp in /prod/PID/stat for coredumping")
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reported-by: Jan Luebbe <jlu@pengutronix.de>
    Tested-by: Jan Luebbe <jlu@pengutronix.de>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 385cacd953b9958aa4a1ba905b1a0ca9e4c91540
Author: Jack Pham <jackp@codeaurora.org>
Date:   Fri Jun 28 18:24:13 2019 +0000

    usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup
    
    commit bd6742249b9ca918565e4e3abaa06665e587f4b5 upstream
    
    OUT endpoint requests may somtimes have this flag set when
    preparing to be submitted to HW indicating that there is an
    additional TRB chained to the request for alignment purposes.
    If that request is removed before the controller can execute the
    transfer (e.g. ep_dequeue/ep_disable), the request will not go
    through the dwc3_gadget_ep_cleanup_completed_request() handler
    and will not have its needs_extra_trb flag cleared when
    dwc3_gadget_giveback() is called.  This same request could be
    later requeued for a new transfer that does not require an
    extra TRB and if it is successfully completed, the cleanup
    and TRB reclamation will incorrectly process the additional TRB
    which belongs to the next request, and incorrectly advances the
    TRB dequeue pointer, thereby messing up calculation of the next
    requeust's actual/remaining count when it completes.
    
    The right thing to do here is to ensure that the flag is cleared
    before it is given back to the function driver.  A good place
    to do that is in dwc3_gadget_del_and_unmap_request().
    
    Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize")
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit bd6742249b9ca918565e4e3abaa06665e587f4b5)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6edcdd0e6d8f1ae8fd8ec0c9eec60ac854d774e5
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:12 2019 +0000

    usb: dwc3: gadget: remove wait_end_transfer
    
    commit fec9095bdef4e7c988adb603d0d4f92ee735d4a1 upstream
    
    Now that we have a list of cancelled requests, we can skip over TRBs
    when END_TRANSFER command completes.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit fec9095bdef4e7c988adb603d0d4f92ee735d4a1)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7ff2e3ff0e09d57b43014fe26b13bb3c9677254
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:11 2019 +0000

    usb: dwc3: gadget: move requests to cancelled_list
    
    commit d4f1afe5e896c18ae01099a85dab5e1a198bd2a8 upstream
    
    Whenever we have a request in flight, we can move it to the cancelled
    list and later simply iterate over that list and skip over any TRBs we
    find.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit d4f1afe5e896c18ae01099a85dab5e1a198bd2a8)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bba5f9878f67edd2b411cbd5150bbbd253ee20fe
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:10 2019 +0000

    usb: dwc3: gadget: introduce cancelled_list
    
    commit d5443bbf5fc8f8389cce146b1fc2987cdd229d12 upstream
    
    This list will host cancelled requests who still have TRBs being
    processed.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit d5443bbf5fc8f8389cce146b1fc2987cdd229d12)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65e1f34031083cd0cb3997695cc6a579b6051180
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:09 2019 +0000

    usb: dwc3: gadget: extract dwc3_gadget_ep_skip_trbs()
    
    commit 7746a8dfb3f9c91b3a0b63a1d5c2664410e6498d upstream
    
    Extract the logic for skipping over TRBs to its own function. This
    makes the code slightly more readable and makes it easier to move this
    call to its final resting place as a following patch.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit 7746a8dfb3f9c91b3a0b63a1d5c2664410e6498d)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56092bd50eb9769b86c338e006cf66be9c9f29e5
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:08 2019 +0000

    usb: dwc3: gadget: use num_trbs when skipping TRBs on ->dequeue()
    
    commit c3acd59014148470dc58519870fbc779785b4bf7 upstream
    
    Now that we track how many TRBs a request uses, it's easier to skip
    over them in case of a call to usb_ep_dequeue(). Let's do so and
    simplify the code a bit.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit c3acd59014148470dc58519870fbc779785b4bf7)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a2b1c4dc5105532d852ff22a2f405fcddc7f7d7
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:07 2019 +0000

    usb: dwc3: gadget: track number of TRBs per request
    
    commit 09fe1f8d7e2f461275b1cdd832f2cfa5e9be346d upstream
    
    This will help us remove the wait_event() from our ->dequeue().
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit 09fe1f8d7e2f461275b1cdd832f2cfa5e9be346d)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 420b1237c79fd4f09f3110657933fb97f2b4f23d
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jun 28 18:24:06 2019 +0000

    usb: dwc3: gadget: combine unaligned and zero flags
    
    commit 1a22ec643580626f439c8583edafdcc73798f2fb upstream
    
    Both flags are used for the same purpose in dwc3: appending an extra
    TRB at the end to deal with controller requirements. By combining both
    flags into one, we make it clear that the situation is the same and
    that they should be treated equally.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    (cherry picked from commit 1a22ec643580626f439c8583edafdcc73798f2fb)
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62805d31969b41469f0c68651647d7a368163cde
Author: John Stultz <john.stultz@linaro.org>
Date:   Fri Jun 28 18:24:05 2019 +0000

    Revert "usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup"
    
    This reverts commit 25ad17d692ad54c3c33b2a31e5ce2a82e38de14e,
    as we will be cherry-picking a number of changes from upstream
    that allows us to later cherry-pick the same fix from upstream
    rather than using this modified backported version.
    
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: linux-usb@vger.kernel.org
    Cc: stable@vger.kernel.org # 4.19.y
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3726d8d0b60f1e55067e907635bc16012e5b5810
Author: Bjørn Mork <bjorn@mork.no>
Date:   Mon Jun 24 18:45:11 2019 +0200

    qmi_wwan: Fix out-of-bounds read
    
    [ Upstream commit 904d88d743b0c94092c5117955eab695df8109e8 ]
    
    The syzbot reported
    
     Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0xca/0x13e lib/dump_stack.c:113
      print_address_description+0x67/0x231 mm/kasan/report.c:188
      __kasan_report.cold+0x1a/0x32 mm/kasan/report.c:317
      kasan_report+0xe/0x20 mm/kasan/common.c:614
      qmi_wwan_probe+0x342/0x360 drivers/net/usb/qmi_wwan.c:1417
      usb_probe_interface+0x305/0x7a0 drivers/usb/core/driver.c:361
      really_probe+0x281/0x660 drivers/base/dd.c:509
      driver_probe_device+0x104/0x210 drivers/base/dd.c:670
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:777
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
    
    Caused by too many confusing indirections and casts.
    id->driver_info is a pointer stored in a long.  We want the
    pointer here, not the address of it.
    
    Thanks-to: Hillf Danton <hdanton@sina.com>
    Reported-by: syzbot+b68605d7fadd21510de1@syzkaller.appspotmail.com
    Cc: Kristian Evensen <kristian.evensen@gmail.com>
    Fixes: e4bf63482c30 ("qmi_wwan: Add quirk for Quectel dynamic config")
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cfbe930c7142dd5bba2068a87f66fd3d3cdb3a69
Author: Adeodato Simó <dato@net.com.org.es>
Date:   Tue Nov 13 03:28:53 2018 -0300

    net/9p: include trans_common.h to fix missing prototype warning.
    
    [ Upstream commit 52ad259eaac0454c1ac7123e7148cf8d6e6f5301 ]
    
    This silences -Wmissing-prototypes when defining p9_release_pages.
    
    Link: http://lkml.kernel.org/r/b1c4df8f21689b10d451c28fe38e860722d20e71.1542089696.git.dato@net.com.org.es
    Signed-off-by: Adeodato Simó <dato@net.com.org.es>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6518b4126b3fdfbad4d220a5b7f906a38109aa0e
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Tue Oct 9 11:38:00 2018 +0900

    9p/trans_fd: put worker reqs on destroy
    
    [ Upstream commit fb488fc1f2b4c5128540b032892ddec91edaf8d9 ]
    
    p9_read_work/p9_write_work might still hold references to a req after
    having been cancelled; make sure we put any of these to avoid potential
    request leak on disconnect.
    
    Fixes: 728356dedeff8 ("9p: Add refcount to p9_req_t")
    Link: http://lkml.kernel.org/r/1539057956-23741-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Reviewed-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6fad469c84fcd3617a27afa61908d1c02a8bacd8
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Tue Oct 9 11:18:52 2018 +0900

    9p/trans_fd: abort p9_read_work if req status changed
    
    [ Upstream commit e4ca13f7d075e551dc158df6af18fb412a1dba0a ]
    
    p9_read_work would try to handle an errored req even if it got put to
    error state by another thread between the lookup (that worked) and the
    time it had been fully read.
    The request itself is safe to use because we hold a ref to it from the
    lookup (for m->rreq, so it was safe to read into the request data buffer
    until this point), but the req_list has been deleted at the same time
    status changed, and client_cb already has been called as well, so we
    should not do either.
    
    Link: http://lkml.kernel.org/r/1539057956-23741-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Reported-by: syzbot+2222c34dc40b515f30dc@syzkaller.appspotmail.com
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39bf142ae0cac7904e4a60b95bb0bdc1f696387a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Sep 26 13:39:34 2018 +0300

    9p: potential NULL dereference
    
    [ Upstream commit 72ea0321088df2c41eca8cc6160c24bcceb56ac7 ]
    
    p9_tag_alloc() is supposed to return error pointers, but we accidentally
    return a NULL here.  It would cause a NULL dereference in the caller.
    
    Link: http://lkml.kernel.org/m/20180926103934.GA14535@mwanda
    Fixes: 996d5b4db4b1 ("9p: Use a slab for allocating requests")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6490cdf9d29db37628b73004d11844269a9f31ab
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Sat Sep 8 00:36:08 2018 +0900

    9p: p9dirent_read: check network-provided name length
    
    [ Upstream commit ef5305f1f72eb1cfcda25c382bb0368509c0385b ]
    
    strcpy to dirent->d_name could overflow the buffer, use strscpy to check
    the provided string length and error out if the size was too big.
    
    While we are here, make the function return an error when the pdu
    parsing failed, instead of returning the pdu offset as if it had been a
    success...
    
    Link: http://lkml.kernel.org/r/1536339057-21974-4-git-send-email-asmadeus@codewreck.org
    Addresses-Coverity-ID: 139133 ("Copy into fixed size buffer")
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e48e7e27e4dfd00c81e0381e7cee610cce021452
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Sat Sep 8 00:26:50 2018 +0900

    9p/rdma: remove useless check in cm_event_handler
    
    [ Upstream commit 473c7dd1d7b59ff8f88a5154737e3eac78a96e5b ]
    
    the client c is always dereferenced to get the rdma struct, so c has to
    be a valid pointer at this point.
    Gcc would optimize that away but let's make coverity happy...
    
    Link: http://lkml.kernel.org/r/1536339057-21974-3-git-send-email-asmadeus@codewreck.org
    Addresses-Coverity-ID: 102778 ("Dereference before null check")
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb0cbbd8dec74b3249424b58d7c9dd5a6c88b543
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Sat Sep 8 00:10:57 2018 +0900

    9p: acl: fix uninitialized iattr access
    
    [ Upstream commit e02a53d92e197706cad1627bd84705d4aa20a145 ]
    
    iattr is passed to v9fs_vfs_setattr_dotl which does send various
    values from iattr over the wire, even if it tells the server to
    only look at iattr.ia_valid fields this could leak some stack data.
    
    Link: http://lkml.kernel.org/r/1536339057-21974-2-git-send-email-asmadeus@codewreck.org
    Addresses-Coverity-ID: 1195601 ("Uninitalized scalar variable")
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3dc511c9ccb979f852939fcfd0a5e3d31a29b8ca
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Mon Sep 3 18:03:21 2018 +0200

    9p: Rename req to rreq in trans_fd
    
    [ Upstream commit 6d35190f395316916c8bb4aabd35a182890bf856 ]
    
    In struct p9_conn, rename req to rreq as it is used by the read routine.
    
    Link: http://lkml.kernel.org/r/20180903160321.2181-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Suggested-by: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04ee7e7b479512dc789ddc915975006c5da27863
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Thu Aug 30 19:29:36 2018 +0900

    9p/rdma: do not disconnect on down_interruptible EAGAIN
    
    [ Upstream commit 8b894adb2b7e1d1e64b8954569c761eaf3d51ab5 ]
    
    9p/rdma would sometimes drop the connection and display errors in
    recv_done when the user does ^C.
    The errors were caused by recv buffers that were posted at the time
    of disconnect, and we just do not want to disconnect when
    down_interruptible is... interrupted.
    
    Link: http://lkml.kernel.org/r/1535625307-18019-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3665a4d9dca1bd06bc34afb72e637fe01b2776ee
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Tue Aug 14 19:43:42 2018 +0200

    9p: Add refcount to p9_req_t
    
    [ Upstream commit 728356dedeff8ef999cb436c71333ef4ac51a81c ]
    
    To avoid use-after-free(s), use a refcount to keep track of the
    usable references to any instantiated struct p9_req_t.
    
    This commit adds p9_req_put(), p9_req_get() and p9_req_try_get() as
    wrappers to kref_put(), kref_get() and kref_get_unless_zero().
    These are used by the client and the transports to keep track of
    valid requests' references.
    
    p9_free_req() is added back and used as callback by kref_put().
    
    Add SLAB_TYPESAFE_BY_RCU as it ensures that the memory freed by
    kmem_cache_free() will not be reused for another type until the rcu
    synchronisation period is over, so an address gotten under rcu read
    lock is safe to inc_ref() without corrupting random memory while
    the lock is held.
    
    Link: http://lkml.kernel.org/r/1535626341-20693-1-git-send-email-asmadeus@codewreck.org
    Co-developed-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+467050c1ce275af2a5b8@syzkaller.appspotmail.com
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa3625794f1a77335480234f59503905bff2a6d2
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Sat Aug 11 16:42:53 2018 +0200

    9p: rename p9_free_req() function
    
    [ Upstream commit 43cbcbee9938b17f77cf34f1bc12d302f456810f ]
    
    In sight of the next patch to add a refcount in p9_req_t, rename
    the p9_free_req() function in p9_release_req().
    
    In the next patch the actual kfree will be moved to another function.
    
    Link: http://lkml.kernel.org/r/20180811144254.23665-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be87f21e6b25e3b09eb913dd4f8e416a2a81a3a0
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Mon Jul 30 15:14:37 2018 +0900

    9p: add a per-client fcall kmem_cache
    
    [ Upstream commit 91a76be37ff89795526c452a6799576b03bec501 ]
    
    Having a specific cache for the fcall allocations helps speed up
    end-to-end latency.
    
    The caches will automatically be merged if there are multiple caches
    of items with the same size so we do not need to try to share a cache
    between different clients of the same size.
    
    Since the msize is negotiated with the server, only allocate the cache
    after that negotiation has happened - previous allocations or
    allocations of different sizes (e.g. zero-copy fcall) are made with
    kmalloc directly.
    
    Some figures on two beefy VMs with Connect-IB (sriov) / trans=rdma,
    with ior running 32 processes in parallel doing small 32 bytes IOs:
     - no alloc (4.18-rc7 request cache): 65.4k req/s
     - non-power of two alloc, no patch: 61.6k req/s
     - power of two alloc, no patch: 62.2k req/s
     - non-power of two alloc, with patch: 64.7k req/s
     - power of two alloc, with patch: 65.1k req/s
    
    Link: http://lkml.kernel.org/r/1532943263-24378-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Greg Kurz <groug@kaod.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1555583b63b344c634bbaaf6d966923d3fe96d44
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Mon Jul 30 05:55:19 2018 +0000

    9p: embed fcall in req to round down buffer allocs
    
    [ Upstream commit 523adb6cc10b48655c0abe556505240741425b49 ]
    
    'msize' is often a power of two, or at least page-aligned, so avoiding
    an overhead of two dozen bytes for each allocation will help the
    allocator do its work and reduce memory fragmentation.
    
    Link: http://lkml.kernel.org/r/1533825236-22896-1-git-send-email-asmadeus@codewreck.org
    Suggested-by: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Reviewed-by: Greg Kurz <groug@kaod.org>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ea4cf4223239f97ebab3e914ec44224537d1826
Author: Matthew Wilcox <willy@infradead.org>
Date:   Wed Jul 11 14:02:24 2018 -0700

    9p: Use a slab for allocating requests
    
    [ Upstream commit 996d5b4db4b191f2676cf8775565cab8a5e2753b ]
    
    Replace the custom batch allocation with a slab.  Use an IDR to store
    pointers to the active requests instead of an array.  We don't try to
    handle P9_NOTAG specially; the IDR will happily shrink all the way back
    once the TVERSION call has completed.
    
    Link: http://lkml.kernel.org/r/20180711210225.19730-6-willy@infradead.org
    Signed-off-by: Matthew Wilcox <willy@infradead.org>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Ron Minnich <rminnich@sandia.gov>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8bc5f1a3aba64c25f5194897b32b6eed7df18a7
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date:   Tue Aug 14 02:43:48 2018 +0000

    9p/xen: fix check for xenbus_read error in front_probe
    
    [ Upstream commit 2f9ad0ac947ccbe3ffe7c6229c9330f2a7755f64 ]
    
    If the xen bus exists but does not expose the proper interface, it is
    possible to get a non-zero length but still some error, leading to
    strcmp failing trying to load invalid memory addresses e.g.
    fffffffffffffffe.
    
    There is then no need to check length when there is no error, as the
    xenbus driver guarantees that the string is nul-terminated.
    
    Link: http://lkml.kernel.org/r/1534236007-10170-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8782ce0268721780fa4b6a4c433faf5b0a903a6
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Mon Jun 24 16:19:43 2019 -0400

    IB/hfi1: Close PSM sdma_progress sleep window
    
    commit da9de5f8527f4b9efc82f967d29a583318c034c7 upstream.
    
    The call to sdma_progress() is called outside the wait lock.
    
    In this case, there is a race condition where sdma_progress() can return
    false and the sdma_engine can idle.  If that happens, there will be no
    more sdma interrupts to cause the wakeup and the user_sdma xmit will hang.
    
    Fix by moving the lock to enclose the sdma_progress() call.
    
    Also, delete busycount. The need for this was removed by:
    commit bcad29137a97 ("IB/hfi1: Serve the most starved iowait entry first")
    
    Ported to linux-4.19.y.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7724105686e7 ("IB/hfi1: add driver files")
    Reviewed-by: Gary Leshner <Gary.S.Leshner@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fec1a13bdfa9507ac6b478f6b8ba3d4252412938
Author: Sasha Levin <sashal@kernel.org>
Date:   Tue Jun 25 07:36:40 2019 -0400

    Revert "x86/uaccess, ftrace: Fix ftrace_likely_update() vs. SMAP"
    
    This reverts commit 1a3188d737ceb922166d8fe78a5fc4f89907e31b, which was
    upstream commit 4a6c91fbdef846ec7250b82f2eeeb87ac5f18cf9.
    
    On Tue, Jun 25, 2019 at 09:39:45AM +0200, Sebastian Andrzej Siewior wrote:
    >Please backport commit e74deb11931ff682b59d5b9d387f7115f689698e to
    >stable _or_ revert the backport of commit 4a6c91fbdef84 ("x86/uaccess,
    >ftrace: Fix ftrace_likely_update() vs. SMAP"). It uses
    >user_access_{save|restore}() which has been introduced in the following
    >commit.
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85a3b1ef969beb8d6e7c0f8d7bc95ec370319f2e
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Jun 11 10:19:32 2019 -0700

    arm64: Don't unconditionally add -Wno-psabi to KBUILD_CFLAGS
    
    commit fa63da2ab046b885a7f70291aafc4e8ce015429b upstream.
    
    This is a GCC only option, which warns about ABI changes within GCC, so
    unconditionally adding it breaks Clang with tons of:
    
    warning: unknown warning option '-Wno-psabi' [-Wunknown-warning-option]
    
    and link time failures:
    
    ld.lld: error: undefined symbol: __efistub___stack_chk_guard
    >>> referenced by arm-stub.c:73
    (/home/nathan/cbl/linux/drivers/firmware/efi/libstub/arm-stub.c:73)
    >>>               arm-stub.stub.o:(__efistub_install_memreserve_table)
    in archive ./drivers/firmware/efi/libstub/lib.a
    
    These failures come from the lack of -fno-stack-protector, which is
    added via cc-option in drivers/firmware/efi/libstub/Makefile. When an
    unknown flag is added to KBUILD_CFLAGS, clang will noisily warn that it
    is ignoring the option like above, unlike gcc, who will just error.
    
    $ echo "int main() { return 0; }" > tmp.c
    
    $ clang -Wno-psabi tmp.c; echo $?
    warning: unknown warning option '-Wno-psabi' [-Wunknown-warning-option]
    1 warning generated.
    0
    
    $ gcc -Wsometimes-uninitialized tmp.c; echo $?
    gcc: error: unrecognized command line option
    ‘-Wsometimes-uninitialized’; did you mean ‘-Wmaybe-uninitialized’?
    1
    
    For cc-option to work properly with clang and behave like gcc, -Werror
    is needed, which was done in commit c3f0d0bc5b01 ("kbuild, LLVMLinux:
    Add -Werror to cc-option to support clang").
    
    $ clang -Werror -Wno-psabi tmp.c; echo $?
    error: unknown warning option '-Wno-psabi'
    [-Werror,-Wunknown-warning-option]
    1
    
    As a consequence of this, when an unknown flag is unconditionally added
    to KBUILD_CFLAGS, it will cause cc-option to always fail and those flags
    will never get added:
    
    $ clang -Werror -Wno-psabi -fno-stack-protector tmp.c; echo $?
    error: unknown warning option '-Wno-psabi'
    [-Werror,-Wunknown-warning-option]
    1
    
    This can be seen when compiling the whole kernel as some warnings that
    are normally disabled (see below) show up. The full list of flags
    missing from drivers/firmware/efi/libstub are the following (gathered
    from diffing .arm64-stub.o.cmd):
    
    -fno-delete-null-pointer-checks
    -Wno-address-of-packed-member
    -Wframe-larger-than=2048
    -Wno-unused-const-variable
    -fno-strict-overflow
    -fno-merge-all-constants
    -fno-stack-check
    -Werror=date-time
    -Werror=incompatible-pointer-types
    -ffreestanding
    -fno-stack-protector
    
    Use cc-disable-warning so that it gets disabled for GCC and does nothing
    for Clang.
    
    Fixes: ebcc5928c5d9 ("arm64: Silence gcc warnings about arch ABI drift")
    Link: https://github.com/ClangBuiltLinux/linux/issues/511
    Reported-by: Qian Cai <cai@lca.pw>
    Acked-by: Dave Martin <Dave.Martin@arm.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6461a4543b348d9d2693a3b8de00504f1d517842
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Dec 6 11:09:46 2018 -0300

    perf header: Fix unchecked usage of strncpy()
    
    commit 5192bde7d98c99f2cd80225649e3c2e7493722f7 upstream.
    
    The strncpy() function may leave the destination string buffer
    unterminated, better use strlcpy() that we have a __weak fallback
    implementation for systems without it.
    
    This fixes this warning on an Alpine Linux Edge system with gcc 8.2:
    
      util/header.c: In function 'perf_event__synthesize_event_update_name':
      util/header.c:3625:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
        strncpy(ev->data, evsel->name, len);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      util/header.c:3618:15: note: length computed here
        size_t len = strlen(evsel->name);
                     ^~~~~~~~~~~~~~~~~~~
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: a6e5281780d1 ("perf tools: Add event_update event unit type")
    Link: https://lkml.kernel.org/n/tip-wycz66iy8dl2z3yifgqf894p@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bf5d53b53c814c25f64e7a07a4be30fecc76109
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Dec 6 11:20:21 2018 -0300

    perf help: Remove needless use of strncpy()
    
    commit b6313899f4ed2e76b8375cf8069556f5b94fbff0 upstream.
    
    Since we make sure the destination buffer has at least strlen(orig) + 1,
    no need to do a strncpy(dest, orig, strlen(orig)), just use strcpy(dest,
    orig).
    
    This silences this gcc 8.2 warning on Alpine Linux:
    
      In function 'add_man_viewer',
          inlined from 'perf_help_config' at builtin-help.c:284:3:
      builtin-help.c:192:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
        strncpy((*p)->name, name, len);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      builtin-help.c: In function 'perf_help_config':
      builtin-help.c:187:15: note: length computed here
        size_t len = strlen(name);
                     ^~~~~~~~~~~~
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: 078006012401 ("perf_counter tools: add in basic glue from Git")
    Link: https://lkml.kernel.org/n/tip-2f69l7drca427ob4km8i7kvo@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e75d9272c92b36d01b64941ceb5576e758acf0b
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Dec 6 11:41:03 2018 -0300

    perf ui helpline: Use strlcpy() as a shorter form of strncpy() + explicit set nul
    
    commit 4d0f16d059ddb91424480d88473f7392f24aebdc upstream.
    
    The strncpy() function may leave the destination string buffer
    unterminated, better use strlcpy() that we have a __weak fallback
    implementation for systems without it.
    
    In this case we are actually setting the null byte at the right place,
    but since we pass the buffer size as the limit to strncpy() and not
    it minus one, gcc ends up warning us about that, see below. So, lets
    just switch to the shorter form provided by strlcpy().
    
    This fixes this warning on an Alpine Linux Edge system with gcc 8.2:
    
      ui/tui/helpline.c: In function 'tui_helpline__push':
      ui/tui/helpline.c:27:2: error: 'strncpy' specified bound 512 equals destination size [-Werror=stringop-truncation]
        strncpy(ui_helpline__current, msg, sz)[sz - 1] = '\0';
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: e6e904687949 ("perf ui: Introduce struct ui_helpline")
    Link: https://lkml.kernel.org/n/tip-d1wz0hjjsh19xbalw69qpytj@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>