commit 228e87c35b6c083be778d24b64c02ad05015f3d2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Aug 25 10:51:53 2019 +0200

    Linux 4.9.190

commit eab1f2dd7d68704e9eff24f97138cd954406e5be
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Aug 7 10:19:59 2019 +0800

    bonding: Add vlan tx offload to hw_enc_features
    
    [ Upstream commit d595b03de2cb0bdf9bcdf35ff27840cc3a37158f ]
    
    As commit 30d8177e8ac7 ("bonding: Always enable vlan tx offload")
    said, we should always enable bonding's vlan tx offload, pass the
    vlan packets to the slave devices with vlan tci, let them to handle
    vlan implementation.
    
    Now if encapsulation protocols like VXLAN is used, skb->encapsulation
    may be set, then the packet is passed to vlan device which based on
    bonding device. However in netif_skb_features(), the check of
    hw_enc_features:
    
             if (skb->encapsulation)
                     features &= dev->hw_enc_features;
    
    clears NETIF_F_HW_VLAN_CTAG_TX/NETIF_F_HW_VLAN_STAG_TX. This results
    in same issue in commit 30d8177e8ac7 like this:
    
    vlan_dev_hard_start_xmit
      -->dev_queue_xmit
        -->validate_xmit_skb
          -->netif_skb_features //NETIF_F_HW_VLAN_CTAG_TX is cleared
          -->validate_xmit_vlan
            -->__vlan_hwaccel_push_inside //skb->tci is cleared
    ...
     --> bond_start_xmit
       --> bond_xmit_hash //BOND_XMIT_POLICY_ENCAP34
         --> __skb_flow_dissect // nhoff point to IP header
            -->  case htons(ETH_P_8021Q)
                 // skb_vlan_tag_present is false, so
                 vlan = __skb_header_pointer(skb, nhoff, sizeof(_vlan),
                 //vlan point to ip header wrongly
    
    Fixes: b2a103e6d0af ("bonding: convert to ndo_fix_features")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4cb8ca3e951a24e850f7074d93305f39f67464e
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Aug 8 14:22:47 2019 +0800

    team: Add vlan tx offload to hw_enc_features
    
    [ Upstream commit 227f2f030e28d8783c3d10ce70ff4ba79cad653f ]
    
    We should also enable team's vlan tx offload in hw_enc_features,
    pass the vlan packets to the slave devices with vlan tci, let the
    slave handle vlan tunneling offload implementation.
    
    Fixes: 3268e5cb494d ("team: Advertise tunneling offload features")
    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 4aa2734ced922da3ffa5f4a93473a21c98466c1b
Author: Maxim Mikityanskiy <maximmi@mellanox.com>
Date:   Fri Jul 5 17:59:28 2019 +0300

    net/mlx5e: Use flow keys dissector to parse packets for ARFS
    
    [ Upstream commit 405b93eb764367a670e729da18e54dc42db32620 ]
    
    The current ARFS code relies on certain fields to be set in the SKB
    (e.g. transport_header) and extracts IP addresses and ports by custom
    code that parses the packet. The necessary SKB fields, however, are not
    always set at that point, which leads to an out-of-bounds access. Use
    skb_flow_dissect_flow_keys() to get the necessary information reliably,
    fix the out-of-bounds access and reuse the code.
    
    Fixes: 18c908e477dc ("net/mlx5e: Add accelerated RFS support")
    Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2d8229bba1bc6f61d5bca1a97dedf4da947e312
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Thu Aug 1 11:10:19 2019 -0500

    net/mlx5e: Only support tx/rx pause setting for port owner
    
    [ Upstream commit 466df6eb4a9e813b3cfc674363316450c57a89c5 ]
    
    Only support changing tx/rx pause frame setting if the net device
    is the vport group manager.
    
    Fixes: 3c2d18ef22df ("net/mlx5e: Support ethtool get/set_pauseparam")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47fd4df0c2731cec115d1bee0eb28030355e84ea
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon Aug 5 16:34:34 2019 +0100

    xen/netback: Reset nr_frags before freeing skb
    
    [ Upstream commit 3a0233ddec554b886298de2428edb5c50a20e694 ]
    
    At this point nr_frags has been incremented but the frag does not yet
    have a page assigned so freeing the skb results in a crash. Reset
    nr_frags before freeing the skb to prevent this.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f85c2f3ab4a074a23946a480b7c0755637a04f93
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Aug 12 20:49:12 2019 +0800

    sctp: fix the transport error_count check
    
    [ Upstream commit a1794de8b92ea6bc2037f445b296814ac826693e ]
    
    As the annotation says in sctp_do_8_2_transport_strike():
    
      "If the transport error count is greater than the pf_retrans
       threshold, and less than pathmaxrtx ..."
    
    It should be transport->error_count checked with pathmaxrxt,
    instead of asoc->pf_retrans.
    
    Fixes: 5aa93bcf66f4 ("sctp: Implement quick failover draft from tsvwg")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7876df0500d23e353803318297d5b42944a2e369
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 14 02:11:57 2019 -0700

    net/packet: fix race in tpacket_snd()
    
    [ Upstream commit 32d3182cd2cd29b2e7e04df7b0db350fbe11289f ]
    
    packet_sendmsg() checks tx_ring.pg_vec to decide
    if it must call tpacket_snd().
    
    Problem is that the check is lockless, meaning another thread
    can issue a concurrent setsockopt(PACKET_TX_RING ) to flip
    tx_ring.pg_vec back to NULL.
    
    Given that tpacket_snd() grabs pg_vec_lock mutex, we can
    perform the check again to solve the race.
    
    syzbot reported :
    
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    CPU: 1 PID: 11429 Comm: syz-executor394 Not tainted 5.3.0-rc4+ #101
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:packet_lookup_frame+0x8d/0x270 net/packet/af_packet.c:474
    Code: c1 ee 03 f7 73 0c 80 3c 0e 00 0f 85 cb 01 00 00 48 8b 0b 89 c0 4c 8d 24 c1 48 b8 00 00 00 00 00 fc ff df 4c 89 e1 48 c1 e9 03 <80> 3c 01 00 0f 85 94 01 00 00 48 8d 7b 10 4d 8b 3c 24 48 b8 00 00
    RSP: 0018:ffff88809f82f7b8 EFLAGS: 00010246
    RAX: dffffc0000000000 RBX: ffff8880a45c7030 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 1ffff110148b8e06 RDI: ffff8880a45c703c
    RBP: ffff88809f82f7e8 R08: ffff888087aea200 R09: fffffbfff134ae50
    R10: fffffbfff134ae4f R11: ffffffff89a5727f R12: 0000000000000000
    R13: 0000000000000001 R14: ffff8880a45c6ac0 R15: 0000000000000000
    FS:  00007fa04716f700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fa04716edb8 CR3: 0000000091eb4000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     packet_current_frame net/packet/af_packet.c:487 [inline]
     tpacket_snd net/packet/af_packet.c:2667 [inline]
     packet_sendmsg+0x590/0x6250 net/packet/af_packet.c:2975
     sock_sendmsg_nosec net/socket.c:637 [inline]
     sock_sendmsg+0xd7/0x130 net/socket.c:657
     ___sys_sendmsg+0x3e2/0x920 net/socket.c:2311
     __sys_sendmmsg+0x1bf/0x4d0 net/socket.c:2413
     __do_sys_sendmmsg net/socket.c:2442 [inline]
     __se_sys_sendmmsg net/socket.c:2439 [inline]
     __x64_sys_sendmmsg+0x9d/0x100 net/socket.c:2439
     do_syscall_64+0xfd/0x6a0 arch/x86/entry/common.c:296
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 69e3c75f4d54 ("net: TX_RING and packet mmap")
    Signed-off-by: Eric Dumazet <edumazet@google.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 f7be89699a42ba99015ddaafaadd1d7e3d1496fa
Author: Manish Chopra <manishc@marvell.com>
Date:   Sun Aug 18 07:25:48 2019 -0700

    bnx2x: Fix VF's VLAN reconfiguration in reload.
    
    [ Upstream commit 4a4d2d372fb9b9229327e2ed01d5d9572eddf4de ]
    
    Commit 04f05230c5c13 ("bnx2x: Remove configured vlans as
    part of unload sequence."), introduced a regression in driver
    that as a part of VF's reload flow, VLANs created on the VF
    doesn't get re-configured in hardware as vlan metadata/info
    was not getting cleared for the VFs which causes vlan PING to stop.
    
    This patch clears the vlan metadata/info so that VLANs gets
    re-configured back in the hardware in VF's reload flow and
    PING/traffic continues for VLANs created over the VFs.
    
    Fixes: 04f05230c5c13 ("bnx2x: Remove configured vlans as part of unload sequence.")
    Signed-off-by: Manish Chopra <manishc@marvell.com>
    Signed-off-by: Sudarsana Kalluru <skalluru@marvell.com>
    Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f35f44a3700e8946a40b4541044b5a2fbc874b5
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Oct 5 12:32:46 2018 +0200

    iommu/amd: Move iommu_init_pci() to .init section
    
    commit 24d2c521749d8547765b555b7a85cca179bb2275 upstream.
    
    The function is only called from another __init function, so
    it should be moved to .init too.
    
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79ab4c1ffc3f43681493d003a0abd45c593c07c0
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue Jul 16 20:17:20 2019 +0200

    Input: psmouse - fix build error of multiple definition
    
    commit 49e6979e7e92cf496105b5636f1df0ac17c159c0 upstream.
    
    trackpoint_detect() should be static inline while
    CONFIG_MOUSE_PS2_TRACKPOINT is not set, otherwise, we build fails:
    
    drivers/input/mouse/alps.o: In function `trackpoint_detect':
    alps.c:(.text+0x8e00): multiple definition of `trackpoint_detect'
    drivers/input/mouse/psmouse-base.o:psmouse-base.c:(.text+0x1b50): first defined here
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 55e3d9224b60 ("Input: psmouse - allow disabing certain protocol extensions")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62b0863eae921c09b8ae41154a2ae81a2deb515e
Author: Dirk Morris <dmorris@metaloft.com>
Date:   Thu Aug 8 13:57:51 2019 -0700

    netfilter: conntrack: Use consistent ct id hash calculation
    
    commit 656c8e9cc1badbc18eefe6ba01d33ebbcae61b9a upstream.
    
    Change ct id hash calculation to only use invariants.
    
    Currently the ct id hash calculation is based on some fields that can
    change in the lifetime on a conntrack entry in some corner cases. The
    current hash uses the whole tuple which contains an hlist pointer which
    will change when the conntrack is placed on the dying list resulting in
    a ct id change.
    
    This patch also removes the reply-side tuple and extension pointer from
    the hash calculation so that the ct id will will not change from
    initialization until confirmation.
    
    Fixes: 3c79107631db1f7 ("netfilter: ctnetlink: don't use conntrack/expect object addresses as id")
    Signed-off-by: Dirk Morris <dmorris@metaloft.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a953b4419f45a2f1496eb345c050baeb2936d0cc
Author: Will Deacon <will@kernel.org>
Date:   Mon Jul 29 11:06:17 2019 +0100

    arm64: compat: Allow single-byte watchpoints on all addresses
    
    commit 849adec41203ac5837c40c2d7e08490ffdef3c2c upstream.
    
    Commit d968d2b801d8 ("ARM: 7497/1: hw_breakpoint: allow single-byte
    watchpoints on all addresses") changed the validation requirements for
    hardware watchpoints on arch/arm/. Update our compat layer to implement
    the same relaxation.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c1dc8f96b54ad9e63ef3becac73750a588abe6e
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Dec 11 12:14:12 2018 +0100

    bpf: fix bpf_jit_limit knob for PAGE_SIZE >= 64K
    
    [ Upstream commit fdadd04931c2d7cd294dc5b2b342863f94be53a3 ]
    
    Michael and Sandipan report:
    
      Commit ede95a63b5 introduced a bpf_jit_limit tuneable to limit BPF
      JIT allocations. At compile time it defaults to PAGE_SIZE * 40000,
      and is adjusted again at init time if MODULES_VADDR is defined.
    
      For ppc64 kernels, MODULES_VADDR isn't defined, so we're stuck with
      the compile-time default at boot-time, which is 0x9c400000 when
      using 64K page size. This overflows the signed 32-bit bpf_jit_limit
      value:
    
      root@ubuntu:/tmp# cat /proc/sys/net/core/bpf_jit_limit
      -1673527296
    
      and can cause various unexpected failures throughout the network
      stack. In one case `strace dhclient eth0` reported:
    
      setsockopt(5, SOL_SOCKET, SO_ATTACH_FILTER, {len=11, filter=0x105dd27f8},
                 16) = -1 ENOTSUPP (Unknown error 524)
    
      and similar failures can be seen with tools like tcpdump. This doesn't
      always reproduce however, and I'm not sure why. The more consistent
      failure I've seen is an Ubuntu 18.04 KVM guest booted on a POWER9
      host would time out on systemd/netplan configuring a virtio-net NIC
      with no noticeable errors in the logs.
    
    Given this and also given that in near future some architectures like
    arm64 will have a custom area for BPF JIT image allocations we should
    get rid of the BPF_JIT_LIMIT_DEFAULT fallback / default entirely. For
    4.21, we have an overridable bpf_jit_alloc_exec(), bpf_jit_free_exec()
    so therefore add another overridable bpf_jit_alloc_exec_limit() helper
    function which returns the possible size of the memory area for deriving
    the default heuristic in bpf_jit_charge_init().
    
    Like bpf_jit_alloc_exec() and bpf_jit_free_exec(), the new
    bpf_jit_alloc_exec_limit() assumes that module_alloc() is the default
    JIT memory provider, and therefore in case archs implement their custom
    module_alloc() we use MODULES_{END,_VADDR} for limits and otherwise for
    vmalloc_exec() cases like on ppc64 we use VMALLOC_{END,_START}.
    
    Additionally, for archs supporting large page sizes, we should change
    the sysctl to be handled as long to not run into sysctl restrictions
    in future.
    
    Fixes: ede95a63b5e8 ("bpf: add bpf_jit_limit knob to restrict unpriv allocations")
    Reported-by: Sandipan Das <sandipan@linux.ibm.com>
    Reported-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 912420e5252c6867d3c3c3ad7a69ca59e5fc48c8
Author: Qian Cai <cai@lca.pw>
Date:   Fri Aug 2 21:49:19 2019 -0700

    asm-generic: fix -Wtype-limits compiler warnings
    
    [ Upstream commit cbedfe11347fe418621bd188d58a206beb676218 ]
    
    Commit d66acc39c7ce ("bitops: Optimise get_order()") introduced a
    compilation warning because "rx_frag_size" is an "ushort" while
    PAGE_SHIFT here is 16.
    
    The commit changed the get_order() to be a multi-line macro where
    compilers insist to check all statements in the macro even when
    __builtin_constant_p(rx_frag_size) will return false as "rx_frag_size"
    is a module parameter.
    
    In file included from ./arch/powerpc/include/asm/page_64.h:107,
                     from ./arch/powerpc/include/asm/page.h:242,
                     from ./arch/powerpc/include/asm/mmu.h:132,
                     from ./arch/powerpc/include/asm/lppaca.h:47,
                     from ./arch/powerpc/include/asm/paca.h:17,
                     from ./arch/powerpc/include/asm/current.h:13,
                     from ./include/linux/thread_info.h:21,
                     from ./arch/powerpc/include/asm/processor.h:39,
                     from ./include/linux/prefetch.h:15,
                     from drivers/net/ethernet/emulex/benet/be_main.c:14:
    drivers/net/ethernet/emulex/benet/be_main.c: In function 'be_rx_cqs_create':
    ./include/asm-generic/getorder.h:54:9: warning: comparison is always
    true due to limited range of data type [-Wtype-limits]
       (((n) < (1UL << PAGE_SHIFT)) ? 0 :  \
             ^
    drivers/net/ethernet/emulex/benet/be_main.c:3138:33: note: in expansion
    of macro 'get_order'
      adapter->big_page_size = (1 << get_order(rx_frag_size)) * PAGE_SIZE;
                                     ^~~~~~~~~
    
    Fix it by moving all of this multi-line macro into a proper function,
    and killing __get_order() off.
    
    [akpm@linux-foundation.org: remove __get_order() altogether]
    [cai@lca.pw: v2]
      Link: http://lkml.kernel.org/r/1564000166-31428-1-git-send-email-cai@lca.pw
    Link: http://lkml.kernel.org/r/1563914986-26502-1-git-send-email-cai@lca.pw
    Fixes: d66acc39c7ce ("bitops: Optimise get_order()")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Jakub Jelinek <jakub@redhat.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Bill Wendling <morbo@google.com>
    Cc: James Y Knight <jyknight@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 765d9fe3c4f3e832092cf07ebeb2473202edcf17
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Aug 15 01:26:02 2019 -0700

    USB: serial: option: Add Motorola modem UARTs
    
    commit 6caf0be40a707689e8ff8824fdb96ef77685b1ba upstream.
    
    On Motorola Mapphone devices such as Droid 4 there are five USB ports
    that do not use the same layout as Gobi 1K/2K/etc devices listed in
    qcserial.c. So we should use qcaux.c or option.c as noted by
    Dan Williams <dan.j.williams@intel.com>.
    
    As the Motorola USB serial ports have an interrupt endpoint as shown
    with lsusb -v, we should use option.c instead of qcaux.c as pointed out
    by Johan Hovold <johan@kernel.org>.
    
    The ff/ff/ff interfaces seem to always be UARTs on Motorola devices.
    For the other interfaces, class 0x0a (CDC Data) should not in general
    be added as they are typically part of a multi-interface function as
    noted earlier by Bjørn Mork <bjorn@mork.no>.
    
    However, looking at the Motorola mapphone kernel code, the mdm6600 0x0a
    class is only used for flashing the modem firmware, and there are no
    other interfaces. So I've added that too with more details below as it
    works just fine.
    
    The ttyUSB ports on Droid 4 are:
    
    ttyUSB0 DIAG, CQDM-capable
    ttyUSB1 MUX or NMEA, no response
    ttyUSB2 MUX or NMEA, no response
    ttyUSB3 TCMD
    ttyUSB4 AT-capable
    
    The ttyUSB0 is detected as QCDM capable by ModemManager. I think
    it's only used for debugging with ModemManager --debug for sending
    custom AT commands though. ModemManager already can manage data
    connection using the USB QMI ports that are already handled by the
    qmi_wwan.c driver.
    
    To enable the MUX or NMEA ports, it seems that something needs to be
    done additionally to enable them, maybe via the DIAG or TCMD port.
    It might be just a NVRAM setting somewhere, but I have no idea what
    NVRAM settings may need changing for that.
    
    The TCMD port seems to be a Motorola custom protocol for testing
    the modem and to configure it's NVRAM and seems to work just fine
    based on a quick test with a minimal tcmdrw tool I wrote.
    
    The voice modem AT-capable port seems to provide only partial
    support, and no PM support compared to the TS 27.010 based UART
    wired directly to the modem.
    
    The UARTs added with this change are the same product IDs as the
    Motorola Mapphone Android Linux kernel mdm6600_id_table. I don't
    have any mdm9600 based devices, so I have only tested these on
    mdm6600 based droid 4.
    
    Then for the class 0x0a (CDC Data) mode, the Motorola Mapphone Android
    Linux kernel driver moto_flashqsc.c just seems to change the
    port->bulk_out_size to 8K from the default. And is only used for
    flashing the modem firmware it seems.
    
    I've verified that flashing the modem with signed firmware works just
    fine with the option driver after manually toggling the GPIO pins, so
    I've added droid 4 modem flashing mode to the option driver. I've not
    added the other devices listed in moto_flashqsc.c in case they really
    need different port->bulk_out_size. Those can be added as they get
    tested to work for flashing the modem.
    
    After this patch the output of /sys/kernel/debug/usb/devices has
    the following for normal 22b8:2a70 mode including the related qmi_wwan
    interfaces:
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22b8 ProdID=2a70 Rev= 0.00
    S:  Manufacturer=Motorola, Incorporated
    S:  Product=Flash MZ600
    C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fb Prot=ff Driver=qmi_wwan
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fb Prot=ff Driver=qmi_wwan
    E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
    E:  Ad=8a(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=07(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fb Prot=ff Driver=qmi_wwan
    E:  Ad=8b(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
    E:  Ad=8c(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=08(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fb Prot=ff Driver=qmi_wwan
    E:  Ad=8d(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=09(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    In 22b8:900e "qc_dload" mode the device shows up as:
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22b8 ProdID=900e Rev= 0.00
    S:  Manufacturer=Motorola, Incorporated
    S:  Product=Flash MZ600
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    And in 22b8:4281 "ram_downloader" mode the device shows up as:
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22b8 ProdID=4281 Rev= 0.00
    S:  Manufacturer=Motorola, Incorporated
    S:  Product=Flash MZ600
    C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=fc Driver=option
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    
    Cc: Bjørn Mork <bjorn@mork.no>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Lars Melin <larsm17@gmail.com>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Michael Scott <hashcode0f@gmail.com>
    Cc: NeKit <nekit1000@gmail.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Tested-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35a85bf8d826e1f2f99fd93609c6cbd2f3241741
Author: Bob Ham <bob.ham@puri.sm>
Date:   Wed Jul 24 07:52:26 2019 -0700

    USB: serial: option: add the BroadMobi BM818 card
    
    commit e5d8badf37e6b547842f2fcde10361b29e08bd36 upstream.
    
    Add a VID:PID for the BroadMobi BM818 M.2 card
    
    T:  Bus=01 Lev=03 Prnt=40 Port=03 Cnt=01 Dev#= 44 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2020 ProdID=2060 Rev=00.00
    S:  Manufacturer=Qualcomm, Incorporated
    S:  Product=Qualcomm CDMA Technologies MSM
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    
    Signed-off-by: Bob Ham <bob.ham@puri.sm>
    Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
    Cc: stable <stable@vger.kernel.org>
    [ johan: use USB_DEVICE_INTERFACE_CLASS() ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89049143d4421b7c57b2278ee37554613e8ac98a
Author: Yoshiaki Okamoto <yokamoto@allied-telesis.co.jp>
Date:   Sat Jul 20 22:23:18 2019 +0900

    USB: serial: option: Add support for ZTE MF871A
    
    commit 7e7ae38bf928c5cfa6dd6e9a2cf8b42c84a27c92 upstream.
    
    This patch adds support for MF871A USB modem (aka Speed USB STICK U03)
    to option driver. This modem is manufactured by ZTE corporation, and
    sold by KDDI.
    
    Interface layout:
    0: AT
    1: MODEM
    
    usb-devices output:
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  9 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=1481 Rev=52.87
    S:  Manufacturer=ZTE,Incorporated
    S:  Product=ZTE Technologies MSM
    S:  SerialNumber=1234567890ABCDEF
    C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    
    Co-developed-by: Hiroyuki Yamamoto <hyamamo@allied-telesis.co.jp>
    Signed-off-by: Hiroyuki Yamamoto <hyamamo@allied-telesis.co.jp>
    Signed-off-by: Yoshiaki Okamoto <yokamoto@allied-telesis.co.jp>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bec06e446143d95847d45a7183adb3cdbc8c6459
Author: Rogan Dawes <rogan@dawes.za.net>
Date:   Wed Jul 17 11:11:34 2019 +0200

    USB: serial: option: add D-Link DWM-222 device ID
    
    commit 552573e42aab5f75aff9bab855a9677979d9a7d5 upstream.
    
    Add device id for D-Link DWM-222 A2.
    
    MI_00 D-Link HS-USB Diagnostics
    MI_01 D-Link HS-USB Modem
    MI_02 D-Link HS-USB AT Port
    MI_03 D-Link HS-USB NMEA
    MI_04 D-Link HS-USB WWAN Adapter (qmi_wwan)
    MI_05 USB Mass Storage Device
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Rogan Dawes <rogan@dawes.za.net>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 911a8ca7697b26e95b7ec30b94cd5910bee546ff
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Aug 13 11:35:41 2019 +0200

    USB: CDC: fix sanity checks in CDC union parser
    
    commit 54364278fb3cabdea51d6398b07c87415065b3fc upstream.
    
    A few checks checked for the size of the pointer to a structure
    instead of the structure itself. Copy & paste issue presumably.
    
    Fixes: e4c6fb7794982 ("usbnet: move the CDC parser into USB core")
    Cc: stable <stable@vger.kernel.org>
    Reported-by: syzbot+45a53506b65321c1fe91@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20190813093541.18889-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fccd6134d5addf2be1407e3250efdc854b5c5d8a
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Aug 8 16:21:19 2019 +0200

    usb: cdc-acm: make sure a refcount is taken early enough
    
    commit c52873e5a1ef72f845526d9f6a50704433f9c625 upstream.
    
    destroy() will decrement the refcount on the interface, so that
    it needs to be taken so early that it never undercounts.
    
    Fixes: 7fb57a019f94e ("USB: cdc-acm: Fix potential deadlock (lockdep warning)")
    Cc: stable <stable@vger.kernel.org>
    Reported-and-tested-by: syzbot+1b2449b7b5dc240d107a@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20190808142119.7998-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 741b832658b98463d619fe4c320f8ab11b2ad4ee
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Aug 12 16:11:07 2019 -0400

    USB: core: Fix races in character device registration and deregistraion
    
    commit 303911cfc5b95d33687d9046133ff184cf5043ff upstream.
    
    The syzbot fuzzer has found two (!) races in the USB character device
    registration and deregistration routines.  This patch fixes the races.
    
    The first race results from the fact that usb_deregister_dev() sets
    usb_minors[intf->minor] to NULL before calling device_destroy() on the
    class device.  This leaves a window during which another thread can
    allocate the same minor number but will encounter a duplicate name
    error when it tries to register its own class device.  A typical error
    message in the system log would look like:
    
        sysfs: cannot create duplicate filename '/class/usbmisc/ldusb0'
    
    The patch fixes this race by destroying the class device first.
    
    The second race is in usb_register_dev().  When that routine runs, it
    first allocates a minor number, then drops minor_rwsem, and then
    creates the class device.  If the device creation fails, the minor
    number is deallocated and the whole routine returns an error.  But
    during the time while minor_rwsem was dropped, there is a window in
    which the minor number is allocated and so another thread can
    successfully open the device file.  Typically this results in
    use-after-free errors or invalid accesses when the other thread closes
    its open file reference, because the kernel then tries to release
    resources that were already deallocated when usb_register_dev()
    failed.  The patch fixes this race by keeping minor_rwsem locked
    throughout the entire routine.
    
    Reported-and-tested-by: syzbot+30cf45ebfe0b0c4847a1@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.1908121607590.1659-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d49423187a6e4639948f1db23ed76e64165a92a0
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Aug 12 13:08:14 2019 +0100

    staging: comedi: dt3000: Fix rounding up of timer divisor
    
    commit 8e2a589a3fc36ce858d42e767c3bcd8fc62a512b upstream.
    
    `dt3k_ns_to_timer()` determines the prescaler and divisor to use to
    produce a desired timing period.  It is influenced by a rounding mode
    and can round the divisor up, down, or to the nearest value.  However,
    the code for rounding up currently does the same as rounding down!  Fix
    ir by using the `DIV_ROUND_UP()` macro to calculate the divisor when
    rounding up.
    
    Also, change the types of the `divider`, `base` and `prescale` variables
    from `int` to `unsigned int` to avoid mixing signed and unsigned types
    in the calculations.
    
    Also fix a typo in a nearby comment: "improvment" => "improvement".
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190812120814.21188-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a9fc5c5fcd822f8885047ea90cd9a59aef7bc0
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Aug 12 12:15:17 2019 +0100

    staging: comedi: dt3000: Fix signed integer overflow 'divider * base'
    
    commit b4d98bc3fc93ec3a58459948a2c0e0c9b501cd88 upstream.
    
    In `dt3k_ns_to_timer()` the following lines near the end of the function
    result in a signed integer overflow:
    
            prescale = 15;
            base = timer_base * (1 << prescale);
            divider = 65535;
            *nanosec = divider * base;
    
    (`divider`, `base` and `prescale` are type `int`, `timer_base` and
    `*nanosec` are type `unsigned int`.  The value of `timer_base` will be
    either 50 or 100.)
    
    The main reason for the overflow is that the calculation for `base` is
    completely wrong.  It should be:
    
            base = timer_base * (prescale + 1);
    
    which matches an earlier instance of this calculation in the same
    function.
    
    Reported-by: David Binderman <dcb314@hotmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Link: https://lore.kernel.org/r/20190812111517.26803-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bed38ded6642d01b428ecdd48c972c79fde0e26
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri Aug 2 21:48:40 2019 -0700

    ocfs2: remove set but not used variable 'last_hash'
    
    [ Upstream commit 7bc36e3ce91471b6377c8eadc0a2f220a2280083 ]
    
    Fixes gcc '-Wunused-but-set-variable' warning:
    
      fs/ocfs2/xattr.c: In function ocfs2_xattr_bucket_find:
      fs/ocfs2/xattr.c:3828:6: warning: variable last_hash set but not used [-Wunused-but-set-variable]
    
    It's never used and can be removed.
    
    Link: http://lkml.kernel.org/r/20190716132110.34836-1-yuehaibing@huawei.com
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c8198236a983fb955a9e28d30d37f0b8527fe59
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Thu Aug 1 15:14:49 2019 +0300

    IB/mad: Fix use-after-free in ib mad completion handling
    
    [ Upstream commit 770b7d96cfff6a8bf6c9f261ba6f135dc9edf484 ]
    
    We encountered a use-after-free bug when unloading the driver:
    
    [ 3562.116059] BUG: KASAN: use-after-free in ib_mad_post_receive_mads+0xddc/0xed0 [ib_core]
    [ 3562.117233] Read of size 4 at addr ffff8882ca5aa868 by task kworker/u13:2/23862
    [ 3562.118385]
    [ 3562.119519] CPU: 2 PID: 23862 Comm: kworker/u13:2 Tainted: G           OE     5.1.0-for-upstream-dbg-2019-05-19_16-44-30-13 #1
    [ 3562.121806] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu2 04/01/2014
    [ 3562.123075] Workqueue: ib-comp-unb-wq ib_cq_poll_work [ib_core]
    [ 3562.124383] Call Trace:
    [ 3562.125640]  dump_stack+0x9a/0xeb
    [ 3562.126911]  print_address_description+0xe3/0x2e0
    [ 3562.128223]  ? ib_mad_post_receive_mads+0xddc/0xed0 [ib_core]
    [ 3562.129545]  __kasan_report+0x15c/0x1df
    [ 3562.130866]  ? ib_mad_post_receive_mads+0xddc/0xed0 [ib_core]
    [ 3562.132174]  kasan_report+0xe/0x20
    [ 3562.133514]  ib_mad_post_receive_mads+0xddc/0xed0 [ib_core]
    [ 3562.134835]  ? find_mad_agent+0xa00/0xa00 [ib_core]
    [ 3562.136158]  ? qlist_free_all+0x51/0xb0
    [ 3562.137498]  ? mlx4_ib_sqp_comp_worker+0x1970/0x1970 [mlx4_ib]
    [ 3562.138833]  ? quarantine_reduce+0x1fa/0x270
    [ 3562.140171]  ? kasan_unpoison_shadow+0x30/0x40
    [ 3562.141522]  ib_mad_recv_done+0xdf6/0x3000 [ib_core]
    [ 3562.142880]  ? _raw_spin_unlock_irqrestore+0x46/0x70
    [ 3562.144277]  ? ib_mad_send_done+0x1810/0x1810 [ib_core]
    [ 3562.145649]  ? mlx4_ib_destroy_cq+0x2a0/0x2a0 [mlx4_ib]
    [ 3562.147008]  ? _raw_spin_unlock_irqrestore+0x46/0x70
    [ 3562.148380]  ? debug_object_deactivate+0x2b9/0x4a0
    [ 3562.149814]  __ib_process_cq+0xe2/0x1d0 [ib_core]
    [ 3562.151195]  ib_cq_poll_work+0x45/0xf0 [ib_core]
    [ 3562.152577]  process_one_work+0x90c/0x1860
    [ 3562.153959]  ? pwq_dec_nr_in_flight+0x320/0x320
    [ 3562.155320]  worker_thread+0x87/0xbb0
    [ 3562.156687]  ? __kthread_parkme+0xb6/0x180
    [ 3562.158058]  ? process_one_work+0x1860/0x1860
    [ 3562.159429]  kthread+0x320/0x3e0
    [ 3562.161391]  ? kthread_park+0x120/0x120
    [ 3562.162744]  ret_from_fork+0x24/0x30
    ...
    [ 3562.187615] Freed by task 31682:
    [ 3562.188602]  save_stack+0x19/0x80
    [ 3562.189586]  __kasan_slab_free+0x11d/0x160
    [ 3562.190571]  kfree+0xf5/0x2f0
    [ 3562.191552]  ib_mad_port_close+0x200/0x380 [ib_core]
    [ 3562.192538]  ib_mad_remove_device+0xf0/0x230 [ib_core]
    [ 3562.193538]  remove_client_context+0xa6/0xe0 [ib_core]
    [ 3562.194514]  disable_device+0x14e/0x260 [ib_core]
    [ 3562.195488]  __ib_unregister_device+0x79/0x150 [ib_core]
    [ 3562.196462]  ib_unregister_device+0x21/0x30 [ib_core]
    [ 3562.197439]  mlx4_ib_remove+0x162/0x690 [mlx4_ib]
    [ 3562.198408]  mlx4_remove_device+0x204/0x2c0 [mlx4_core]
    [ 3562.199381]  mlx4_unregister_interface+0x49/0x1d0 [mlx4_core]
    [ 3562.200356]  mlx4_ib_cleanup+0xc/0x1d [mlx4_ib]
    [ 3562.201329]  __x64_sys_delete_module+0x2d2/0x400
    [ 3562.202288]  do_syscall_64+0x95/0x470
    [ 3562.203277]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The problem was that the MAD PD was deallocated before the MAD CQ.
    There was completion work pending for the CQ when the PD got deallocated.
    When the mad completion handling reached procedure
    ib_mad_post_receive_mads(), we got a use-after-free bug in the following
    line of code in that procedure:
       sg_list.lkey = qp_info->port_priv->pd->local_dma_lkey;
    (the pd pointer in the above line is no longer valid, because the
    pd has been deallocated).
    
    We fix this by allocating the PD before the CQ in procedure
    ib_mad_port_open(), and deallocating the PD after freeing the CQ
    in procedure ib_mad_port_close().
    
    Since the CQ completion work queue is flushed during ib_free_cq(),
    no completions will be pending for that CQ when the PD is later
    deallocated.
    
    Note that freeing the CQ before deallocating the PD is the practice
    in the ULPs.
    
    Fixes: 4be90bc60df4 ("IB/mad: Remove ib_get_dma_mr calls")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Link: https://lore.kernel.org/r/20190801121449.24973-1-leon@kernel.org
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65585fab2a28f1e4a2df14d6fffd5f39deda328c
Author: Luck, Tony <tony.luck@intel.com>
Date:   Tue Jul 30 21:39:57 2019 -0700

    IB/core: Add mitigation for Spectre V1
    
    [ Upstream commit 61f259821dd3306e49b7d42a3f90fb5a4ff3351b ]
    
    Some processors may mispredict an array bounds check and
    speculatively access memory that they should not. With
    a user supplied array index we like to play things safe
    by masking the value with the array size before it is
    used as an index.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/r/20190731043957.GA1600@agluck-desk2.amr.corp.intel.com
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07a6a92898b53e1914a3c23d053deb3608c25a1c
Author: Qian Cai <cai@lca.pw>
Date:   Wed Jul 31 16:05:45 2019 -0400

    arm64/mm: fix variable 'pud' set but not used
    
    [ Upstream commit 7d4e2dcf311d3b98421d1f119efe5964cafa32fc ]
    
    GCC throws a warning,
    
    arch/arm64/mm/mmu.c: In function 'pud_free_pmd_page':
    arch/arm64/mm/mmu.c:1033:8: warning: variable 'pud' set but not used
    [-Wunused-but-set-variable]
      pud_t pud;
            ^~~
    
    because pud_table() is a macro and compiled away. Fix it by making it a
    static inline function and for pud_sect() as well.
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7796efd65eb333d3ae266910c8094145509b5694
Author: Qian Cai <cai@lca.pw>
Date:   Tue Jul 30 17:23:48 2019 -0400

    arm64/efi: fix variable 'si' set but not used
    
    [ Upstream commit f1d4836201543e88ebe70237e67938168d5fab19 ]
    
    GCC throws out this warning on arm64.
    
    drivers/firmware/efi/libstub/arm-stub.c: In function 'efi_entry':
    drivers/firmware/efi/libstub/arm-stub.c:132:22: warning: variable 'si'
    set but not used [-Wunused-but-set-variable]
    
    Fix it by making free_screen_info() a static inline function.
    
    Acked-by: Will Deacon <will@kernel.org>
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c335cd18ced56dfe9470375c34199635da9dd9c
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Wed Jul 31 00:59:00 2019 +0900

    kbuild: modpost: handle KBUILD_EXTRA_SYMBOLS only for external modules
    
    [ Upstream commit cb4819934a7f9b87876f11ed05b8624c0114551b ]
    
    KBUILD_EXTRA_SYMBOLS makes sense only when building external modules.
    Moreover, the modpost sets 'external_module' if the -e option is given.
    
    I replaced $(patsubst %, -e %,...) with simpler $(addprefix -e,...)
    while I was here.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f62e065a5c628d8e8bad58f3f5245dfe7f504dd
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Wed Jul 31 14:26:51 2019 +0200

    ata: libahci: do not complain in case of deferred probe
    
    [ Upstream commit 090bb803708198e5ab6b0046398c7ed9f4d12d6b ]
    
    Retrieving PHYs can defer the probe, do not spawn an error when
    -EPROBE_DEFER is returned, it is normal behavior.
    
    Fixes: b1a9edbda040 ("ata: libahci: allow to use multiple PHYs")
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 033d8392e5f3169cace4d41477f8ca2ca8407ce5
Author: Don Brace <don.brace@microsemi.com>
Date:   Wed Jul 24 17:08:06 2019 -0500

    scsi: hpsa: correct scsi command status issue after reset
    
    [ Upstream commit eeebce1862970653cdf5c01e98bc669edd8f529a ]
    
    Reviewed-by: Bader Ali - Saleh <bader.alisaleh@microsemi.com>
    Reviewed-by: Scott Teel <scott.teel@microsemi.com>
    Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
    Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
    Signed-off-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0623446f37d1b3f99642de7e6c4dae263da44648
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Jul 29 14:47:22 2019 -0700

    libata: zpodd: Fix small read overflow in zpodd_get_mech_type()
    
    [ Upstream commit 71d6c505b4d9e6f76586350450e785e3d452b346 ]
    
    Jeffrin reported a KASAN issue:
    
      BUG: KASAN: global-out-of-bounds in ata_exec_internal_sg+0x50f/0xc70
      Read of size 16 at addr ffffffff91f41f80 by task scsi_eh_1/149
      ...
      The buggy address belongs to the variable:
        cdb.48319+0x0/0x40
    
    Much like commit 18c9a99bce2a ("libata: zpodd: small read overflow in
    eject_tray()"), this fixes a cdb[] buffer length, this time in
    zpodd_get_mech_type():
    
    We read from the cdb[] buffer in ata_exec_internal_sg(). It has to be
    ATAPI_CDB_LEN (16) bytes long, but this buffer is only 12 bytes.
    
    Reported-by: Jeffrin Jose T <jeffrin@rajagiritech.edu.in>
    Fixes: afe759511808c ("libata: identify and init ZPODD devices")
    Link: https://lore.kernel.org/lkml/201907181423.E808958@keescook/
    Tested-by: Jeffrin Jose T <jeffrin@rajagiritech.edu.in>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 219db72f73477e6cf73c48b586447b7514dc6752
Author: Numfor Mbiziwo-Tiapo <nums@google.com>
Date:   Wed Jul 24 16:44:58 2019 -0700

    perf header: Fix use of unitialized value warning
    
    [ Upstream commit 20f9781f491360e7459c589705a2e4b1f136bee9 ]
    
    When building our local version of perf with MSAN (Memory Sanitizer) and
    running the perf record command, MSAN throws a use of uninitialized
    value warning in "tools/perf/util/util.c:333:6".
    
    This warning stems from the "buf" variable being passed into "write".
    It originated as the variable "ev" with the type union perf_event*
    defined in the "perf_event__synthesize_attr" function in
    "tools/perf/util/header.c".
    
    In the "perf_event__synthesize_attr" function they allocate space with a malloc
    call using ev, then go on to only assign some of the member variables before
    passing "ev" on as a parameter to the "process" function therefore "ev"
    contains uninitialized memory. Changing the malloc call to zalloc to initialize
    all the members of "ev" which gets rid of the warning.
    
    To reproduce this warning, build perf by running:
    make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory\
     -fsanitize-memory-track-origins"
    
    (Additionally, llvm might have to be installed and clang might have to
    be specified as the compiler - export CC=/usr/bin/clang)
    
    then running:
    tools/perf/perf record -o - ls / | tools/perf/perf --no-pager annotate\
     -i - --stdio
    
    Please see the cover letter for why false positive warnings may be
    generated.
    
    Signed-off-by: Numfor Mbiziwo-Tiapo <nums@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Drayton <mbd@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/20190724234500.253358-2-nums@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b9310f34ae79a7727b3b43451559f819ee4caf2
Author: Vince Weaver <vincent.weaver@maine.edu>
Date:   Tue Jul 23 11:06:01 2019 -0400

    perf header: Fix divide by zero error if f_header.attr_size==0
    
    [ Upstream commit 7622236ceb167aa3857395f9bdaf871442aa467e ]
    
    So I have been having lots of trouble with hand-crafted perf.data files
    causing segfaults and the like, so I have started fuzzing the perf tool.
    
    First issue found:
    
    If f_header.attr_size is 0 in the perf.data file, then perf will crash
    with a divide-by-zero error.
    
    Committer note:
    
    Added a pr_err() to tell the user why the command failed.
    
    Signed-off-by: Vince Weaver <vincent.weaver@maine.edu>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1907231100440.14532@macbook-air
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 632d97a33ff1d37df2fe6294f47071dc38392054
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Jul 12 15:29:05 2019 +0200

    irqchip/irq-imx-gpcv2: Forward irq type to parent
    
    [ Upstream commit 9a446ef08f3bfc0c3deb9c6be840af2528ef8cf8 ]
    
    The GPCv2 is a stacked IRQ controller below the ARM GIC. It doesn't
    care about the IRQ type itself, but needs to forward the type to the
    parent IRQ controller, so this one can be configured correctly.
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1f57bedec52544fee59434d29a2b84d365cda89
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Jul 24 22:08:50 2019 +0800

    xen/pciback: remove set but not used variable 'old_state'
    
    [ Upstream commit 09e088a4903bd0dd911b4f1732b250130cdaffed ]
    
    Fixes gcc '-Wunused-but-set-variable' warning:
    
    drivers/xen/xen-pciback/conf_space_capability.c: In function pm_ctrl_write:
    drivers/xen/xen-pciback/conf_space_capability.c:119:25: warning:
     variable old_state set but not used [-Wunused-but-set-variable]
    
    It is never used so can be removed.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58c33d479defa1ad1a1d0e26910964e98ee5caa1
Author: Denis Kirjanov <kda@linux-powerpc.org>
Date:   Tue Jul 30 15:13:57 2019 +0200

    net: usb: pegasus: fix improper read if get_registers() fail
    
    commit 224c04973db1125fcebefffd86115f99f50f8277 upstream.
    
    get_registers() may fail with -ENOMEM and in this
    case we can read a garbage from the status variable tmp.
    
    Reported-by: syzbot+3499a83b2d062ae409d4@syzkaller.appspotmail.com
    Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8cab0b87c0195620f825f567f40ffe135f58af8
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Aug 6 09:05:55 2019 -0700

    Input: iforce - add sanity checks
    
    commit 849f5ae3a513c550cad741c68dd3d7eb2bcc2a2c upstream.
    
    The endpoint type should also be checked before a device
    is accepted.
    
    Reported-by: syzbot+5efc10c005014d061a74@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ab5ae53eeb5beb61f66dd7c6eb9da653def97d2
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Aug 1 09:44:25 2019 -0700

    Input: kbtab - sanity check for endpoint type
    
    commit c88090dfc84254fa149174eb3e6a8458de1912c4 upstream.
    
    The driver should check whether the endpoint it uses has the correct
    type.
    
    Reported-by: syzbot+c7df50363aaff50aa363@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 963a14fb9c43f0a6b38fbe3da0b894a147c71388
Author: Hillf Danton <hdanton@sina.com>
Date:   Tue Aug 6 16:40:15 2019 +0800

    HID: hiddev: do cleanup in failure of opening a device
    
    commit 6d4472d7bec39917b54e4e80245784ea5d60ce49 upstream.
    
    Undo what we did for opening before releasing the memory slice.
    
    Reported-by: syzbot <syzbot+62a1e04fd3ec2abf099e@syzkaller.appspotmail.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52aaeae5f22247659238a06c36973775f57189f3
Author: Hillf Danton <hdanton@sina.com>
Date:   Tue Aug 6 16:38:58 2019 +0800

    HID: hiddev: avoid opening a disconnected device
    
    commit 9c09b214f30e3c11f9b0b03f89442df03643794d upstream.
    
    syzbot found the following crash on:
    
    HEAD commit:    e96407b4 usb-fuzzer: main usb gadget fuzzer driver
    git tree:       https://github.com/google/kasan.git usb-fuzzer
    console output: https://syzkaller.appspot.com/x/log.txt?x=147ac20c600000
    kernel config:  https://syzkaller.appspot.com/x/.config?x=792eb47789f57810
    dashboard link: https://syzkaller.appspot.com/bug?extid=62a1e04fd3ec2abf099e
    compiler:       gcc (GCC) 9.0.0 20181231 (experimental)
    
    ==================================================================
    BUG: KASAN: use-after-free in __lock_acquire+0x302a/0x3b50
    kernel/locking/lockdep.c:3753
    Read of size 8 at addr ffff8881cf591a08 by task syz-executor.1/26260
    
    CPU: 1 PID: 26260 Comm: syz-executor.1 Not tainted 5.3.0-rc2+ #24
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0xca/0x13e lib/dump_stack.c:113
      print_address_description+0x6a/0x32c mm/kasan/report.c:351
      __kasan_report.cold+0x1a/0x33 mm/kasan/report.c:482
      kasan_report+0xe/0x12 mm/kasan/common.c:612
      __lock_acquire+0x302a/0x3b50 kernel/locking/lockdep.c:3753
      lock_acquire+0x127/0x320 kernel/locking/lockdep.c:4412
      __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
      _raw_spin_lock_irqsave+0x32/0x50 kernel/locking/spinlock.c:159
      hiddev_release+0x82/0x520 drivers/hid/usbhid/hiddev.c:221
      __fput+0x2d7/0x840 fs/file_table.c:280
      task_work_run+0x13f/0x1c0 kernel/task_work.c:113
      exit_task_work include/linux/task_work.h:22 [inline]
      do_exit+0x8ef/0x2c50 kernel/exit.c:878
      do_group_exit+0x125/0x340 kernel/exit.c:982
      get_signal+0x466/0x23d0 kernel/signal.c:2728
      do_signal+0x88/0x14e0 arch/x86/kernel/signal.c:815
      exit_to_usermode_loop+0x1a2/0x200 arch/x86/entry/common.c:159
      prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
      syscall_return_slowpath arch/x86/entry/common.c:274 [inline]
      do_syscall_64+0x45f/0x580 arch/x86/entry/common.c:299
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x459829
    Code: fd b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7
    48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
    ff 0f 83 cb b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f75b2a6ccf8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
    RAX: fffffffffffffe00 RBX: 000000000075c078 RCX: 0000000000459829
    RDX: 0000000000000000 RSI: 0000000000000080 RDI: 000000000075c078
    RBP: 000000000075c070 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 000000000075c07c
    R13: 00007ffcdfe1023f R14: 00007f75b2a6d9c0 R15: 000000000075c07c
    
    Allocated by task 104:
      save_stack+0x1b/0x80 mm/kasan/common.c:69
      set_track mm/kasan/common.c:77 [inline]
      __kasan_kmalloc mm/kasan/common.c:487 [inline]
      __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:460
      kmalloc include/linux/slab.h:552 [inline]
      kzalloc include/linux/slab.h:748 [inline]
      hiddev_connect+0x242/0x5b0 drivers/hid/usbhid/hiddev.c:900
      hid_connect+0x239/0xbb0 drivers/hid/hid-core.c:1882
      hid_hw_start drivers/hid/hid-core.c:1981 [inline]
      hid_hw_start+0xa2/0x130 drivers/hid/hid-core.c:1972
      appleir_probe+0x13e/0x1a0 drivers/hid/hid-appleir.c:308
      hid_device_probe+0x2be/0x3f0 drivers/hid/hid-core.c:2209
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      hid_add_device+0x33c/0x990 drivers/hid/hid-core.c:2365
      usbhid_probe+0xa81/0xfa0 drivers/hid/usbhid/hid-core.c:1386
      usb_probe_interface+0x305/0x7a0 drivers/usb/core/driver.c:361
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      usb_set_configuration+0xdf6/0x1670 drivers/usb/core/message.c:2023
      generic_probe+0x9d/0xd5 drivers/usb/core/generic.c:210
      usb_probe_device+0x99/0x100 drivers/usb/core/driver.c:266
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      usb_new_device.cold+0x6a4/0xe79 drivers/usb/core/hub.c:2536
      hub_port_connect drivers/usb/core/hub.c:5098 [inline]
      hub_port_connect_change drivers/usb/core/hub.c:5213 [inline]
      port_event drivers/usb/core/hub.c:5359 [inline]
      hub_event+0x1b5c/0x3640 drivers/usb/core/hub.c:5441
      process_one_work+0x92b/0x1530 kernel/workqueue.c:2269
      worker_thread+0x96/0xe20 kernel/workqueue.c:2415
      kthread+0x318/0x420 kernel/kthread.c:255
      ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352
    
    Freed by task 104:
      save_stack+0x1b/0x80 mm/kasan/common.c:69
      set_track mm/kasan/common.c:77 [inline]
      __kasan_slab_free+0x130/0x180 mm/kasan/common.c:449
      slab_free_hook mm/slub.c:1423 [inline]
      slab_free_freelist_hook mm/slub.c:1470 [inline]
      slab_free mm/slub.c:3012 [inline]
      kfree+0xe4/0x2f0 mm/slub.c:3953
      hiddev_connect.cold+0x45/0x5c drivers/hid/usbhid/hiddev.c:914
      hid_connect+0x239/0xbb0 drivers/hid/hid-core.c:1882
      hid_hw_start drivers/hid/hid-core.c:1981 [inline]
      hid_hw_start+0xa2/0x130 drivers/hid/hid-core.c:1972
      appleir_probe+0x13e/0x1a0 drivers/hid/hid-appleir.c:308
      hid_device_probe+0x2be/0x3f0 drivers/hid/hid-core.c:2209
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      hid_add_device+0x33c/0x990 drivers/hid/hid-core.c:2365
      usbhid_probe+0xa81/0xfa0 drivers/hid/usbhid/hid-core.c:1386
      usb_probe_interface+0x305/0x7a0 drivers/usb/core/driver.c:361
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      usb_set_configuration+0xdf6/0x1670 drivers/usb/core/message.c:2023
      generic_probe+0x9d/0xd5 drivers/usb/core/generic.c:210
      usb_probe_device+0x99/0x100 drivers/usb/core/driver.c:266
      really_probe+0x281/0x650 drivers/base/dd.c:548
      driver_probe_device+0x101/0x1b0 drivers/base/dd.c:709
      __device_attach_driver+0x1c2/0x220 drivers/base/dd.c:816
      bus_for_each_drv+0x15c/0x1e0 drivers/base/bus.c:454
      __device_attach+0x217/0x360 drivers/base/dd.c:882
      bus_probe_device+0x1e4/0x290 drivers/base/bus.c:514
      device_add+0xae6/0x16f0 drivers/base/core.c:2114
      usb_new_device.cold+0x6a4/0xe79 drivers/usb/core/hub.c:2536
      hub_port_connect drivers/usb/core/hub.c:5098 [inline]
      hub_port_connect_change drivers/usb/core/hub.c:5213 [inline]
      port_event drivers/usb/core/hub.c:5359 [inline]
      hub_event+0x1b5c/0x3640 drivers/usb/core/hub.c:5441
      process_one_work+0x92b/0x1530 kernel/workqueue.c:2269
      worker_thread+0x96/0xe20 kernel/workqueue.c:2415
      kthread+0x318/0x420 kernel/kthread.c:255
      ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352
    
    The buggy address belongs to the object at ffff8881cf591900
      which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 264 bytes inside of
      512-byte region [ffff8881cf591900, ffff8881cf591b00)
    The buggy address belongs to the page:
    page:ffffea00073d6400 refcount:1 mapcount:0 mapping:ffff8881da002500
    index:0x0 compound_mapcount: 0
    flags: 0x200000000010200(slab|head)
    raw: 0200000000010200 0000000000000000 0000000100000001 ffff8881da002500
    raw: 0000000000000000 00000000000c000c 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
      ffff8881cf591900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8881cf591980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    > ffff8881cf591a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                           ^
      ffff8881cf591a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8881cf591b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    In order to avoid opening a disconnected device, we need to check exist
    again after acquiring the existance lock, and bail out if necessary.
    
    Reported-by: syzbot <syzbot+62a1e04fd3ec2abf099e@syzkaller.appspotmail.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbbaeba7074ba4d4e00ea91c6f8476a0d2fc055f
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Jul 25 15:13:33 2019 +0200

    HID: holtek: test for sanity of intfdata
    
    commit 01ec0a5f19c8c82960a07f6c7410fc9e01d7fb51 upstream.
    
    The ioctl handler uses the intfdata of a second interface,
    which may not be present in a broken or malicious device, hence
    the intfdata needs to be checked for NULL.
    
    [jkosina@suse.cz: fix newly added spurious space]
    Reported-by: syzbot+965152643a75a56737be@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8053ac6e02e522106b4a92b085f4af991de6048
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Aug 14 12:09:07 2019 +0800

    ALSA: hda - Let all conexant codec enter D3 when rebooting
    
    commit 401714d9534aad8c24196b32600da683116bbe09 upstream.
    
    We have 3 new lenovo laptops which have conexant codec 0x14f11f86,
    these 3 laptops also have the noise issue when rebooting, after
    letting the codec enter D3 before rebooting or poweroff, the noise
    disappers.
    
    Instead of adding a new ID again in the reboot_notify(), let us make
    this function apply to all conexant codec. In theory make codec enter
    D3 before rebooting or poweroff is harmless, and I tested this change
    on a couple of other Lenovo laptops which have different conexant
    codecs, there is no side effect so far.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3f82e1041c4017ebadcb6f0f5dfc55ac3efcc48
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Aug 14 12:09:08 2019 +0800

    ALSA: hda - Add a generic reboot_notify
    
    commit 871b9066027702e6e6589da0e1edd3b7dede7205 upstream.
    
    Make codec enter D3 before rebooting or poweroff can fix the noise
    issue on some laptops. And in theory it is harmless for all codecs
    to enter D3 before rebooting or poweroff, let us add a generic
    reboot_notify, then realtek and conexant drivers can call this
    function.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3248c0892da13ffd05275c86edd2a3287b931962
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Fri Aug 9 23:29:48 2019 -0500

    ALSA: hda - Fix a memory leak bug
    
    commit cfef67f016e4c00a2f423256fc678a6967a9fc09 upstream.
    
    In snd_hda_parse_generic_codec(), 'spec' is allocated through kzalloc().
    Then, the pin widgets in 'codec' are parsed. However, if the parsing
    process fails, 'spec' is not deallocated, leading to a memory leak.
    
    To fix the above issue, free 'spec' before returning the error.
    
    Fixes: 352f7f914ebb ("ALSA: hda - Merge Realtek parser code to generic parser")
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6a46c615274da0cfb4090140ceea0427ae13e22
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Mon Aug 12 15:01:30 2019 -0700

    xtensa: add missing isync to the cpu_reset TLB code
    
    commit cd8869f4cb257f22b89495ca40f5281e58ba359c upstream.
    
    ITLB entry modifications must be followed by the isync instruction
    before the new entries are possibly used. cpu_reset lacks one isync
    between ITLB way 6 initialization and jump to the identity mapping.
    Add missing isync to xtensa cpu_reset.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1922476beeeea46bebbe577215078736dd4231dc
Author: Florian Westphal <fw@strlen.de>
Date:   Sat Aug 17 00:01:34 2019 +0100

    netfilter: ctnetlink: don't use conntrack/expect object addresses as id
    
    commit 3c79107631db1f7fd32cf3f7368e4672004a3010 upstream.
    
    else, we leak the addresses to userspace via ctnetlink events
    and dumps.
    
    Compute an ID on demand based on the immutable parts of nf_conn struct.
    
    Another advantage compared to using an address is that there is no
    immediate re-use of the same ID in case the conntrack entry is freed and
    reallocated again immediately.
    
    Fixes: 3583240249ef ("[NETFILTER]: nf_conntrack_expect: kill unique ID")
    Fixes: 7f85f914721f ("[NETFILTER]: nf_conntrack: kill unique ID")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b97a2f3d58f439d11ececb2faa21dac775d63c5c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Aug 17 00:01:27 2019 +0100

    inet: switch IP ID generator to siphash
    
    commit df453700e8d81b1bdafdf684365ee2b9431fb702 upstream.
    
    According to Amit Klein and Benny Pinkas, IP ID generation is too weak
    and might be used by attackers.
    
    Even with recent net_hash_mix() fix (netns: provide pure entropy for net_hash_mix())
    having 64bit key and Jenkins hash is risky.
    
    It is time to switch to siphash and its 128bit keys.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Amit Klein <aksecurity@gmail.com>
    Reported-by: Benny Pinkas <benny@pinkas.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.9: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 175a407ce432088d827b822b8a47afd8360a8dbe
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Aug 17 00:01:19 2019 +0100

    siphash: implement HalfSipHash1-3 for hash tables
    
    commit 1ae2324f732c9c4e2fa4ebd885fa1001b70d52e1 upstream.
    
    HalfSipHash, or hsiphash, is a shortened version of SipHash, which
    generates 32-bit outputs using a weaker 64-bit key. It has *much* lower
    security margins, and shouldn't be used for anything too sensitive, but
    it could be used as a hashtable key function replacement, if the output
    is never exposed, and if the security requirement is not too high.
    
    The goal is to make this something that performance-critical jhash users
    would be willing to use.
    
    On 64-bit machines, HalfSipHash1-3 is slower than SipHash1-3, so we alias
    SipHash1-3 to HalfSipHash1-3 on those systems.
    
    64-bit x86_64:
    [    0.509409] test_siphash:     SipHash2-4 cycles: 4049181
    [    0.510650] test_siphash:     SipHash1-3 cycles: 2512884
    [    0.512205] test_siphash: HalfSipHash1-3 cycles: 3429920
    [    0.512904] test_siphash:    JenkinsHash cycles:  978267
    So, we map hsiphash() -> SipHash1-3
    
    32-bit x86:
    [    0.509868] test_siphash:     SipHash2-4 cycles: 14812892
    [    0.513601] test_siphash:     SipHash1-3 cycles:  9510710
    [    0.515263] test_siphash: HalfSipHash1-3 cycles:  3856157
    [    0.515952] test_siphash:    JenkinsHash cycles:  1148567
    So, we map hsiphash() -> HalfSipHash1-3
    
    hsiphash() is roughly 3 times slower than jhash(), but comes with a
    considerable security improvement.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.9 to avoid regression for WireGuard with only half
     the siphash API present]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53e054b3cd1bd3dde2212c3e279ab4a3eefac6bb
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Sat Aug 17 00:01:12 2019 +0100

    siphash: add cryptographically secure PRF
    
    commit 2c956a60778cbb6a27e0c7a8a52a91378c90e1d1 upstream.
    
    SipHash is a 64-bit keyed hash function that is actually a
    cryptographically secure PRF, like HMAC. Except SipHash is super fast,
    and is meant to be used as a hashtable keyed lookup function, or as a
    general PRF for short input use cases, such as sequence numbers or RNG
    chaining.
    
    For the first usage:
    
    There are a variety of attacks known as "hashtable poisoning" in which an
    attacker forms some data such that the hash of that data will be the
    same, and then preceeds to fill up all entries of a hashbucket. This is
    a realistic and well-known denial-of-service vector. Currently
    hashtables use jhash, which is fast but not secure, and some kind of
    rotating key scheme (or none at all, which isn't good). SipHash is meant
    as a replacement for jhash in these cases.
    
    There are a modicum of places in the kernel that are vulnerable to
    hashtable poisoning attacks, either via userspace vectors or network
    vectors, and there's not a reliable mechanism inside the kernel at the
    moment to fix it. The first step toward fixing these issues is actually
    getting a secure primitive into the kernel for developers to use. Then
    we can, bit by bit, port things over to it as deemed appropriate.
    
    While SipHash is extremely fast for a cryptographically secure function,
    it is likely a bit slower than the insecure jhash, and so replacements
    will be evaluated on a case-by-case basis based on whether or not the
    difference in speed is negligible and whether or not the current jhash usage
    poses a real security risk.
    
    For the second usage:
    
    A few places in the kernel are using MD5 or SHA1 for creating secure
    sequence numbers, syn cookies, port numbers, or fast random numbers.
    SipHash is a faster and more fitting, and more secure replacement for MD5
    in those situations. Replacing MD5 and SHA1 with SipHash for these uses is
    obvious and straight-forward, and so is submitted along with this patch
    series. There shouldn't be much of a debate over its efficacy.
    
    Dozens of languages are already using this internally for their hash
    tables and PRFs. Some of the BSDs already use this in their kernels.
    SipHash is a widely known high-speed solution to a widely known set of
    problems, and it's time we catch-up.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Eric Biggers <ebiggers3@gmail.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.9 as dependency of commits df453700e8d8 "inet: switch
     IP ID generator to siphash" and 3c79107631db "netfilter: ctnetlink: don't
     use conntrack/expect object addresses as id"]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02b40edda9fd2e42abae40f5dd85122f13dbe7b8
Author: Jason Wang <jasowang@redhat.com>
Date:   Sat Aug 17 00:01:01 2019 +0100

    vhost: scsi: add weight support
    
    commit c1ea02f15ab5efb3e93fc3144d895410bf79fcf2 upstream.
    
    This patch will check the weight and exit the loop if we exceeds the
    weight. This is useful for preventing scsi kthread from hogging cpu
    which is guest triggerable.
    
    This addresses CVE-2019-3900.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Fixes: 057cbf49a1f0 ("tcm_vhost: Initial merge for vhost level target fabric driver")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    [bwh: Backported to 4.9:
     - Drop changes in vhost_scsi_ctl_handle_vq()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b586288578a3a2aa4efb969feed86f2d760f082
Author: Jason Wang <jasowang@redhat.com>
Date:   Sat Aug 17 00:00:53 2019 +0100

    vhost_net: fix possible infinite loop
    
    commit e2412c07f8f3040593dfb88207865a3cd58680c0 upstream.
    
    When the rx buffer is too small for a packet, we will discard the vq
    descriptor and retry it for the next packet:
    
    while ((sock_len = vhost_net_rx_peek_head_len(net, sock->sk,
                                                  &busyloop_intr))) {
    ...
            /* On overrun, truncate and discard */
            if (unlikely(headcount > UIO_MAXIOV)) {
                    iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1);
                    err = sock->ops->recvmsg(sock, &msg,
                                             1, MSG_DONTWAIT | MSG_TRUNC);
                    pr_debug("Discarded rx packet: len %zd\n", sock_len);
                    continue;
            }
    ...
    }
    
    This makes it possible to trigger a infinite while..continue loop
    through the co-opreation of two VMs like:
    
    1) Malicious VM1 allocate 1 byte rx buffer and try to slow down the
       vhost process as much as possible e.g using indirect descriptors or
       other.
    2) Malicious VM2 generate packets to VM1 as fast as possible
    
    Fixing this by checking against weight at the end of RX and TX
    loop. This also eliminate other similar cases when:
    
    - userspace is consuming the packets in the meanwhile
    - theoretical TOCTOU attack if guest moving avail index back and forth
      to hit the continue after vhost find guest just add new buffers
    
    This addresses CVE-2019-3900.
    
    Fixes: d8316f3991d20 ("vhost: fix total length when packets are too short")
    Fixes: 3a4d5c94e9593 ("vhost_net: a kernel-level virtio server")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [bwh: Backported to 4.9:
     - Both Tx modes are handled in one loop in handle_tx()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66c8d9d53e657d5068d9f234bc4ec1d703107a48
Author: Jason Wang <jasowang@redhat.com>
Date:   Sat Aug 17 00:00:44 2019 +0100

    vhost: introduce vhost_exceeds_weight()
    
    commit e82b9b0727ff6d665fff2d326162b460dded554d upstream.
    
    We used to have vhost_exceeds_weight() for vhost-net to:
    
    - prevent vhost kthread from hogging the cpu
    - balance the time spent between TX and RX
    
    This function could be useful for vsock and scsi as well. So move it
    to vhost.c. Device must specify a weight which counts the number of
    requests, or it can also specific a byte_weight which counts the
    number of bytes that has been processed.
    
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [bwh: Backported to 4.9:
     - In vhost_net, both Tx modes are handled in one loop in handle_tx()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6214511f226c684d0da4a6cd1f24175d255ff061
Author: Jason Wang <jasowang@redhat.com>
Date:   Sat Aug 17 00:00:36 2019 +0100

    vhost_net: introduce vhost_exceeds_weight()
    
    commit 272f35cba53d088085e5952fd81d7a133ab90789 upstream.
    
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.9: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73f768b7684cf2e3ff99e74bc99c9ff253aa979f
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Sat Aug 17 00:00:28 2019 +0100

    vhost_net: use packet weight for rx handler, too
    
    commit db688c24eada63b1efe6d0d7d835e5c3bdd71fd3 upstream.
    
    Similar to commit a2ac99905f1e ("vhost-net: set packet weight of
    tx polling to 2 * vq size"), we need a packet-based limit for
    handler_rx, too - elsewhere, under rx flood with small packets,
    tx can be delayed for a very long time, even without busypolling.
    
    The pkt limit applied to handle_rx must be the same applied by
    handle_tx, or we will get unfair scheduling between rx and tx.
    Tying such limit to the queue length makes it less effective for
    large queue length values and can introduce large process
    scheduler latencies, so a constant valued is used - likewise
    the existing bytes limit.
    
    The selected limit has been validated with PVP[1] performance
    test with different queue sizes:
    
    queue size              256     512     1024
    
    baseline                366     354     362
    weight 128              715     723     670
    weight 256              740     745     733
    weight 512              600     460     583
    weight 1024             423     427     418
    
    A packet weight of 256 gives peek performances in under all the
    tested scenarios.
    
    No measurable regression in unidirectional performance tests has
    been detected.
    
    [1] https://developers.redhat.com/blog/2017/06/05/measuring-and-comparing-open-vswitch-performance/
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43f7e9b81a81e4aae273d4199b5c59d581d1d83f
Author: haibinzhang(张海斌) <haibinzhang@tencent.com>
Date:   Sat Aug 17 00:00:19 2019 +0100

    vhost-net: set packet weight of tx polling to 2 * vq size
    
    commit a2ac99905f1ea8b15997a6ec39af69aa28a3653b upstream.
    
    handle_tx will delay rx for tens or even hundreds of milliseconds when tx busy
    polling udp packets with small length(e.g. 1byte udp payload), because setting
    VHOST_NET_WEIGHT takes into account only sent-bytes but no single packet length.
    
    Ping-Latencies shown below were tested between two Virtual Machines using
    netperf (UDP_STREAM, len=1), and then another machine pinged the client:
    
    vq size=256
    Packet-Weight   Ping-Latencies(millisecond)
                       min      avg       max
    Origin           3.319   18.489    57.303
    64               1.643    2.021     2.552
    128              1.825    2.600     3.224
    256              1.997    2.710     4.295
    512              1.860    3.171     4.631
    1024             2.002    4.173     9.056
    2048             2.257    5.650     9.688
    4096             2.093    8.508    15.943
    
    vq size=512
    Packet-Weight   Ping-Latencies(millisecond)
                       min      avg       max
    Origin           6.537   29.177    66.245
    64               2.798    3.614     4.403
    128              2.861    3.820     4.775
    256              3.008    4.018     4.807
    512              3.254    4.523     5.824
    1024             3.079    5.335     7.747
    2048             3.944    8.201    12.762
    4096             4.158   11.057    19.985
    
    Seems pretty consistent, a small dip at 2 VQ sizes.
    Ring size is a hint from device about a burst size it can tolerate. Based on
    benchmarks, set the weight to 2 * vq size.
    
    To evaluate this change, another tests were done using netperf(RR, TX) between
    two machines with Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz, and vq size was
    tweaked through qemu. Results shown below does not show obvious changes.
    
    vq size=256 TCP_RR                vq size=512 TCP_RR
    size/sessions/+thu%/+normalize%   size/sessions/+thu%/+normalize%
       1/       1/  -7%/        -2%      1/       1/   0%/        -2%
       1/       4/  +1%/         0%      1/       4/  +1%/         0%
       1/       8/  +1%/        -2%      1/       8/   0%/        +1%
      64/       1/  -6%/         0%     64/       1/  +7%/        +3%
      64/       4/   0%/        +2%     64/       4/  -1%/        +1%
      64/       8/   0%/         0%     64/       8/  -1%/        -2%
     256/       1/  -3%/        -4%    256/       1/  -4%/        -2%
     256/       4/  +3%/        +4%    256/       4/  +1%/        +2%
     256/       8/  +2%/         0%    256/       8/  +1%/        -1%
    
    vq size=256 UDP_RR                vq size=512 UDP_RR
    size/sessions/+thu%/+normalize%   size/sessions/+thu%/+normalize%
       1/       1/  -5%/        +1%      1/       1/  -3%/        -2%
       1/       4/  +4%/        +1%      1/       4/  -2%/        +2%
       1/       8/  -1%/        -1%      1/       8/  -1%/         0%
      64/       1/  -2%/        -3%     64/       1/  +1%/        +1%
      64/       4/  -5%/        -1%     64/       4/  +2%/         0%
      64/       8/   0%/        -1%     64/       8/  -2%/        +1%
     256/       1/  +7%/        +1%    256/       1/  -7%/         0%
     256/       4/  +1%/        +1%    256/       4/  -3%/        -4%
     256/       8/  +2%/        +2%    256/       8/  +1%/        +1%
    
    vq size=256 TCP_STREAM            vq size=512 TCP_STREAM
    size/sessions/+thu%/+normalize%   size/sessions/+thu%/+normalize%
      64/       1/   0%/        -3%     64/       1/   0%/         0%
      64/       4/  +3%/        -1%     64/       4/  -2%/        +4%
      64/       8/  +9%/        -4%     64/       8/  -1%/        +2%
     256/       1/  +1%/        -4%    256/       1/  +1%/        +1%
     256/       4/  -1%/        -1%    256/       4/  -3%/         0%
     256/       8/  +7%/        +5%    256/       8/  -3%/         0%
     512/       1/  +1%/         0%    512/       1/  -1%/        -1%
     512/       4/  +1%/        -1%    512/       4/   0%/         0%
     512/       8/  +7%/        -5%    512/       8/  +6%/        -1%
    1024/       1/   0%/        -1%   1024/       1/   0%/        +1%
    1024/       4/  +3%/         0%   1024/       4/  +1%/         0%
    1024/       8/  +8%/        +5%   1024/       8/  -1%/         0%
    2048/       1/  +2%/        +2%   2048/       1/  -1%/         0%
    2048/       4/  +1%/         0%   2048/       4/   0%/        -1%
    2048/       8/  -2%/         0%   2048/       8/   5%/        -1%
    4096/       1/  -2%/         0%   4096/       1/  -2%/         0%
    4096/       4/  +2%/         0%   4096/       4/   0%/         0%
    4096/       8/  +9%/        -2%   4096/       8/  -5%/        -1%
    
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Haibin Zhang <haibinzhang@tencent.com>
    Signed-off-by: Yunfang Tai <yunfangtai@tencent.com>
    Signed-off-by: Lidong Chen <lidongchen@tencent.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c98446e1bab6253ddce7144cc2a91c400a323839
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Sat Aug 17 00:00:08 2019 +0100

    bpf: add bpf_jit_limit knob to restrict unpriv allocations
    
    commit ede95a63b5e84ddeea6b0c473b36ab8bfd8c6ce3 upstream.
    
    Rick reported that the BPF JIT could potentially fill the entire module
    space with BPF programs from unprivileged users which would prevent later
    attempts to load normal kernel modules or privileged BPF programs, for
    example. If JIT was enabled but unsuccessful to generate the image, then
    before commit 290af86629b2 ("bpf: introduce BPF_JIT_ALWAYS_ON config")
    we would always fall back to the BPF interpreter. Nowadays in the case
    where the CONFIG_BPF_JIT_ALWAYS_ON could be set, then the load will abort
    with a failure since the BPF interpreter was compiled out.
    
    Add a global limit and enforce it for unprivileged users such that in case
    of BPF interpreter compiled out we fail once the limit has been reached
    or we fall back to BPF interpreter earlier w/o using module mem if latter
    was compiled in. In a next step, fair share among unprivileged users can
    be resolved in particular for the case where we would fail hard once limit
    is reached.
    
    Fixes: 290af86629b2 ("bpf: introduce BPF_JIT_ALWAYS_ON config")
    Fixes: 0a14842f5a3c ("net: filter: Just In Time compiler for x86-64")
    Co-Developed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: LKML <linux-kernel@vger.kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [bwh: Backported to 4.9: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d0475705481f2d2c74d49aba241d2b07a900d8f
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Aug 16 23:59:56 2019 +0100

    bpf: restrict access to core bpf sysctls
    
    commit 2e4a30983b0f9b19b59e38bbf7427d7fdd480d98 upstream.
    
    Given BPF reaches far beyond just networking these days, it was
    never intended to allow setting and in some cases reading those
    knobs out of a user namespace root running without CAP_SYS_ADMIN,
    thus tighten such access.
    
    Also the bpf_jit_enable = 2 debugging mode should only be allowed
    if kptr_restrict is not set since it otherwise can leak addresses
    to the kernel log. Dump a note to the kernel log that this is for
    debugging JITs only when enabled.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [bwh: Backported to 4.9:
     - We don't have bpf_dump_raw_ok(), so drop the condition based on it. This
       condition only made it a bit harder for a privileged user to do something
       silly.
     - Drop change to bpf_jit_kallsyms]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5124abda3060e2eab506fb14a27acadee3c3e396
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Aug 16 23:59:20 2019 +0100

    bpf: get rid of pure_initcall dependency to enable jits
    
    commit fa9dd599b4dae841924b022768354cfde9affecb upstream.
    
    Having a pure_initcall() callback just to permanently enable BPF
    JITs under CONFIG_BPF_JIT_ALWAYS_ON is unnecessary and could leave
    a small race window in future where JIT is still disabled on boot.
    Since we know about the setting at compilation time anyway, just
    initialize it properly there. Also consolidate all the individual
    bpf_jit_enable variables into a single one and move them under one
    location. Moreover, don't allow for setting unspecified garbage
    values on them.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [bwh: Backported to 4.9 as dependency of commit 2e4a30983b0f
     "bpf: restrict access to core bpf sysctls":
     - Drop change in arch/mips/net/ebpf_jit.c
     - Drop change to bpf_jit_kallsyms
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43729e6fea58fe2c4fcc1e83547018ede540839d
Author: Miles Chen <miles.chen@mediatek.com>
Date:   Tue Aug 13 15:37:28 2019 -0700

    mm/memcontrol.c: fix use after free in mem_cgroup_iter()
    
    commit 54a83d6bcbf8f4700013766b974bf9190d40b689 upstream.
    
    This patch is sent to report an use after free in mem_cgroup_iter()
    after merging commit be2657752e9e ("mm: memcg: fix use after free in
    mem_cgroup_iter()").
    
    I work with android kernel tree (4.9 & 4.14), and commit be2657752e9e
    ("mm: memcg: fix use after free in mem_cgroup_iter()") has been merged
    to the trees.  However, I can still observe use after free issues
    addressed in the commit be2657752e9e.  (on low-end devices, a few times
    this month)
    
    backtrace:
            css_tryget <- crash here
            mem_cgroup_iter
            shrink_node
            shrink_zones
            do_try_to_free_pages
            try_to_free_pages
            __perform_reclaim
            __alloc_pages_direct_reclaim
            __alloc_pages_slowpath
            __alloc_pages_nodemask
    
    To debug, I poisoned mem_cgroup before freeing it:
    
      static void __mem_cgroup_free(struct mem_cgroup *memcg)
            for_each_node(node)
            free_mem_cgroup_per_node_info(memcg, node);
            free_percpu(memcg->stat);
      +     /* poison memcg before freeing it */
      +     memset(memcg, 0x78, sizeof(struct mem_cgroup));
            kfree(memcg);
      }
    
    The coredump shows the position=0xdbbc2a00 is freed.
    
      (gdb) p/x ((struct mem_cgroup_per_node *)0xe5009e00)->iter[8]
      $13 = {position = 0xdbbc2a00, generation = 0x2efd}
    
      0xdbbc2a00:     0xdbbc2e00      0x00000000      0xdbbc2800      0x00000100
      0xdbbc2a10:     0x00000200      0x78787878      0x00026218      0x00000000
      0xdbbc2a20:     0xdcad6000      0x00000001      0x78787800      0x00000000
      0xdbbc2a30:     0x78780000      0x00000000      0x0068fb84      0x78787878
      0xdbbc2a40:     0x78787878      0x78787878      0x78787878      0xe3fa5cc0
      0xdbbc2a50:     0x78787878      0x78787878      0x00000000      0x00000000
      0xdbbc2a60:     0x00000000      0x00000000      0x00000000      0x00000000
      0xdbbc2a70:     0x00000000      0x00000000      0x00000000      0x00000000
      0xdbbc2a80:     0x00000000      0x00000000      0x00000000      0x00000000
      0xdbbc2a90:     0x00000001      0x00000000      0x00000000      0x00100000
      0xdbbc2aa0:     0x00000001      0xdbbc2ac8      0x00000000      0x00000000
      0xdbbc2ab0:     0x00000000      0x00000000      0x00000000      0x00000000
      0xdbbc2ac0:     0x00000000      0x00000000      0xe5b02618      0x00001000
      0xdbbc2ad0:     0x00000000      0x78787878      0x78787878      0x78787878
      0xdbbc2ae0:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2af0:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b00:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b10:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b20:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b30:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b40:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b50:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b60:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b70:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2b80:     0x78787878      0x78787878      0x00000000      0x78787878
      0xdbbc2b90:     0x78787878      0x78787878      0x78787878      0x78787878
      0xdbbc2ba0:     0x78787878      0x78787878      0x78787878      0x78787878
    
    In the reclaim path, try_to_free_pages() does not setup
    sc.target_mem_cgroup and sc is passed to do_try_to_free_pages(), ...,
    shrink_node().
    
    In mem_cgroup_iter(), root is set to root_mem_cgroup because
    sc->target_mem_cgroup is NULL.  It is possible to assign a memcg to
    root_mem_cgroup.nodeinfo.iter in mem_cgroup_iter().
    
            try_to_free_pages
                    struct scan_control sc = {...}, target_mem_cgroup is 0x0;
            do_try_to_free_pages
            shrink_zones
            shrink_node
                     mem_cgroup *root = sc->target_mem_cgroup;
                     memcg = mem_cgroup_iter(root, NULL, &reclaim);
            mem_cgroup_iter()
                    if (!root)
                            root = root_mem_cgroup;
                    ...
    
                    css = css_next_descendant_pre(css, &root->css);
                    memcg = mem_cgroup_from_css(css);
                    cmpxchg(&iter->position, pos, memcg);
    
    My device uses memcg non-hierarchical mode.  When we release a memcg:
    invalidate_reclaim_iterators() reaches only dead_memcg and its parents.
    If non-hierarchical mode is used, invalidate_reclaim_iterators() never
    reaches root_mem_cgroup.
    
      static void invalidate_reclaim_iterators(struct mem_cgroup *dead_memcg)
      {
            struct mem_cgroup *memcg = dead_memcg;
    
            for (; memcg; memcg = parent_mem_cgroup(memcg)
            ...
      }
    
    So the use after free scenario looks like:
    
      CPU1                                          CPU2
    
      try_to_free_pages
      do_try_to_free_pages
      shrink_zones
      shrink_node
      mem_cgroup_iter()
          if (!root)
            root = root_mem_cgroup;
          ...
          css = css_next_descendant_pre(css, &root->css);
          memcg = mem_cgroup_from_css(css);
          cmpxchg(&iter->position, pos, memcg);
    
                                            invalidate_reclaim_iterators(memcg);
                                            ...
                                            __mem_cgroup_free()
                                                    kfree(memcg);
    
      try_to_free_pages
      do_try_to_free_pages
      shrink_zones
      shrink_node
      mem_cgroup_iter()
          if (!root)
            root = root_mem_cgroup;
          ...
          mz = mem_cgroup_nodeinfo(root, reclaim->pgdat->node_id);
          iter = &mz->iter[reclaim->priority];
          pos = READ_ONCE(iter->position);
          css_tryget(&pos->css) <- use after free
    
    To avoid this, we should also invalidate root_mem_cgroup.nodeinfo.iter
    in invalidate_reclaim_iterators().
    
    [cai@lca.pw: fix -Wparentheses compilation warning]
      Link: http://lkml.kernel.org/r/1564580753-17531-1-git-send-email-cai@lca.pw
    Link: http://lkml.kernel.org/r/20190730015729.4406-1-miles.chen@mediatek.com
    Fixes: 5ac8fb31ad2e ("mm: memcontrol: convert reclaim iterator to simple css refcounting")
    Signed-off-by: Miles Chen <miles.chen@mediatek.com>
    Signed-off-by: Qian Cai <cai@lca.pw>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.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 faf6760c93af392f2ef115367d5711dab068f50f
Author: Isaac J. Manjarres <isaacm@codeaurora.org>
Date:   Tue Aug 13 15:37:37 2019 -0700

    mm/usercopy: use memory range to be accessed for wraparound check
    
    commit 951531691c4bcaa59f56a316e018bc2ff1ddf855 upstream.
    
    Currently, when checking to see if accessing n bytes starting at address
    "ptr" will cause a wraparound in the memory addresses, the check in
    check_bogus_address() adds an extra byte, which is incorrect, as the
    range of addresses that will be accessed is [ptr, ptr + (n - 1)].
    
    This can lead to incorrectly detecting a wraparound in the memory
    address, when trying to read 4 KB from memory that is mapped to the the
    last possible page in the virtual address space, when in fact, accessing
    that range of memory would not cause a wraparound to occur.
    
    Use the memory range that will actually be accessed when considering if
    accessing a certain amount of bytes will cause the memory address to
    wrap around.
    
    Link: http://lkml.kernel.org/r/1564509253-23287-1-git-send-email-isaacm@codeaurora.org
    Fixes: f5509cc18daa ("mm: Hardened usercopy")
    Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
    Co-developed-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Reviewed-by: William Kucharski <william.kucharski@oracle.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Trilok Soni <tsoni@codeaurora.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [kees: backport to v4.9]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 694457ee8cb1b327bbb9ab8157cea220fd866227
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Fri Aug 9 23:43:56 2019 -0500

    sh: kernel: hw_breakpoint: Fix missing break in switch statement
    
    commit 1ee1119d184bb06af921b48c3021d921bbd85bac upstream.
    
    Add missing break statement in order to prevent the code from falling
    through to case SH_BREAKPOINT_WRITE.
    
    Fixes: 09a072947791 ("sh: hw-breakpoints: Add preliminary support for SH-4A UBC.")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 718ce1eb744d677393869244eec640daab064136
Author: Suganath Prabu <suganath-prabu.subramani@broadcom.com>
Date:   Tue Jul 30 03:43:57 2019 -0400

    scsi: mpt3sas: Use 63-bit DMA addressing on SAS35 HBA
    
    commit df9a606184bfdb5ae3ca9d226184e9489f5c24f7 upstream.
    
    Although SAS3 & SAS3.5 IT HBA controllers support 64-bit DMA addressing, as
    per hardware design, if DMA-able range contains all 64-bits
    set (0xFFFFFFFF-FFFFFFFF) then it results in a firmware fault.
    
    E.g. SGE's start address is 0xFFFFFFFF-FFFF000 and data length is 0x1000
    bytes. when HBA tries to DMA the data at 0xFFFFFFFF-FFFFFFFF location then
    HBA will fault the firmware.
    
    Driver will set 63-bit DMA mask to ensure the above address will not be
    used.
    
    Cc: <stable@vger.kernel.org> # 5.1.20+
    Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d7ed7f42907aae3093c49c76d465d16810313a0
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Sun Jul 21 14:02:27 2019 +0300

    iwlwifi: don't unmap as page memory that was mapped as single
    
    commit 87e7e25aee6b59fef740856f4e86d4b60496c9e1 upstream.
    
    In order to remember how to unmap a memory (as single or
    as page), we maintain a bit per Transmit Buffer (TBs) in
    the meta data (structure iwl_cmd_meta).
    We maintain a bitmap: 1 bit per TB.
    If the TB is set, we will free the memory as a page.
    This bitmap was never cleared. Fix this.
    
    Cc: stable@vger.kernel.org
    Fixes: 3cd1980b0cdf ("iwlwifi: pcie: introduce new tfd and tb formats")
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fefc9e101542326385e7d9c7760bf9ea4fcd11b6
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Jul 24 12:46:34 2019 -0700

    mwifiex: fix 802.11n/WPA detection
    
    commit df612421fe2566654047769c6852ffae1a31df16 upstream.
    
    Commit 63d7ef36103d ("mwifiex: Don't abort on small, spec-compliant
    vendor IEs") adjusted the ieee_types_vendor_header struct, which
    inadvertently messed up the offsets used in
    mwifiex_is_wpa_oui_present(). Add that offset back in, mirroring
    mwifiex_is_rsn_oui_present().
    
    As it stands, commit 63d7ef36103d breaks compatibility with WPA (not
    WPA2) 802.11n networks, since we hit the "info: Disable 11n if AES is
    not supported by AP" case in mwifiex_is_network_compatible().
    
    Fixes: 63d7ef36103d ("mwifiex: Don't abort on small, spec-compliant vendor IEs")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92225e41001d4381b7785eeb56e528df6bb32e96
Author: Steve French <stfrench@microsoft.com>
Date:   Thu Jul 25 18:13:10 2019 -0500

    smb3: send CAP_DFS capability during session setup
    
    commit 8d33096a460d5b9bd13300f01615df5bb454db10 upstream.
    
    We had a report of a server which did not do a DFS referral
    because the session setup Capabilities field was set to 0
    (unlike negotiate protocol where we set CAP_DFS).  Better to
    send it session setup in the capabilities as well (this also
    more closely matches Windows client behavior).
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84bdf5e2584a671bd40d78854b6bbb007a9eff09
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Mon Jul 22 11:34:59 2019 -0700

    SMB3: Fix deadlock in validate negotiate hits reconnect
    
    commit e99c63e4d86d3a94818693147b469fa70de6f945 upstream.
    
    Currently we skip SMB2_TREE_CONNECT command when checking during
    reconnect because Tree Connect happens when establishing
    an SMB session. For SMB 3.0 protocol version the code also calls
    validate negotiate which results in SMB2_IOCL command being sent
    over the wire. This may deadlock on trying to acquire a mutex when
    checking for reconnect. Fix this by skipping SMB2_IOCL command
    when doing the reconnect check.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7b1a1e984805825ef1de08e778633de86d82521
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Jul 26 15:47:58 2019 -0700

    mac80211: don't WARN on short WMM parameters from AP
    
    commit 05aaa5c97dce4c10a9e7eae2f1569a684e0c5ced upstream.
    
    In a very similar spirit to commit c470bdc1aaf3 ("mac80211: don't WARN
    on bad WMM parameters from buggy APs"), an AP may not transmit a
    fully-formed WMM IE. For example, it may miss or repeat an Access
    Category. The above loop won't catch that and will instead leave one of
    the four ACs zeroed out. This triggers the following warning in
    drv_conf_tx()
    
      wlan0: invalid CW_min/CW_max: 0/0
    
    and it may leave one of the hardware queues unconfigured. If we detect
    such a case, let's just print a warning and fall back to the defaults.
    
    Tested with a hacked version of hostapd, intentionally corrupting the
    IEs in hostapd_eid_wmm().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Link: https://lore.kernel.org/r/20190726224758.210953-1-briannorris@chromium.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 542233bd738e18de4d5a5a2ccbf57f363e06a08b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 6 14:03:56 2019 +0200

    ALSA: hda - Don't override global PCM hw info flag
    
    commit c1c6c877b0c79fd7e05c931435aa42211eaeebaf upstream.
    
    The commit bfcba288b97f ("ALSA - hda: Add support for link audio time
    reporting") introduced the conditional PCM hw info setup, but it
    overwrites the global azx_pcm_hw object.  This will cause a problem if
    any other HD-audio controller, as it'll inherit the same bit flag
    although another controller doesn't support that feature.
    
    Fix the bug by setting the PCM hw info flag locally.
    
    Fixes: bfcba288b97f ("ALSA - hda: Add support for link audio time reporting")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbb4f2d59f392634019e0ff91280fc67434cf9da
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Thu Aug 8 00:50:58 2019 -0500

    ALSA: firewire: fix a memory leak bug
    
    commit 1be3c1fae6c1e1f5bb982b255d2034034454527a upstream.
    
    In iso_packets_buffer_init(), 'b->packets' is allocated through
    kmalloc_array(). Then, the aligned packet size is checked. If it is
    larger than PAGE_SIZE, -EINVAL will be returned to indicate the error.
    However, the allocated 'b->packets' is not deallocated on this path,
    leading to a memory leak.
    
    To fix the above issue, free 'b->packets' before returning the error code.
    
    Fixes: 31ef9134eb52 ("ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver")
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Cc: <stable@vger.kernel.org> # v2.6.39+
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3d1b67ffdd76eb118290e6d2f9733798816c67f
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Jul 26 08:00:49 2019 -0700

    hwmon: (nct7802) Fix wrong detection of in4 presence
    
    commit 38ada2f406a9b81fb1249c5c9227fa657e7d5671 upstream.
    
    The code to detect if in4 is present is wrong; if in4 is not present,
    the in4_input sysfs attribute is still present.
    
    In detail:
    
    - Ihen RTD3_MD=11 (VSEN3 present), everything is as expected (no bug).
    - If we have RTD3_MD!=11 (no VSEN3), we unexpectedly have a in4_input
      file under /sys and the "sensors" command displays in4_input.
      But as expected, we have no in4_min, in4_max, in4_alarm, in4_beep.
    
    Fix is_visible function to detect and report in4_input visibility
    as expected.
    
    Reported-by: Gilles Buloz <Gilles.Buloz@kontron.com>
    Cc: Gilles Buloz <Gilles.Buloz@kontron.com>
    Cc: stable@vger.kernel.org
    Fixes: 3434f37835804 ("hwmon: Driver for Nuvoton NCT7802Y")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 127ab64c38e21c55adf8781ca92f7dc9d1a9903e
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Wed Jul 31 10:54:47 2019 -0400

    can: peak_usb: pcan_usb_fd: Fix info-leaks to USB devices
    
    commit 30a8beeb3042f49d0537b7050fd21b490166a3d9 upstream.
    
    Uninitialized Kernel memory can leak to USB devices.
    
    Fix by using kzalloc() instead of kmalloc() on the affected buffers.
    
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+513e4d0985298538bf9b@syzkaller.appspotmail.com
    Fixes: 0a25e1f4f185 ("can: peak_usb: add support for PEAK new CANFD USB adapters")
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cad79bfb5aa596b9449fe66b0edf69a8344326c
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Wed Jul 31 10:54:47 2019 -0400

    can: peak_usb: pcan_usb_pro: Fix info-leaks to USB devices
    
    commit ead16e53c2f0ed946d82d4037c630e2f60f4ab69 upstream.
    
    Uninitialized Kernel memory can leak to USB devices.
    
    Fix by using kzalloc() instead of kmalloc() on the affected buffers.
    
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+d6a5a1a3657b596ef132@syzkaller.appspotmail.com
    Fixes: f14e22435a27 ("net: can: peak_usb: Do not do dma on the stack")
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac370f1ea518c49068baf6c485c8d86303750225
Author: Leonard Crestez <leonard.crestez@nxp.com>
Date:   Wed Jul 24 15:53:24 2019 +0300

    perf/core: Fix creating kernel counters for PMUs that override event->cpu
    
    [ Upstream commit 4ce54af8b33d3e21ca935fc1b89b58cbba956051 ]
    
    Some hardware PMU drivers will override perf_event.cpu inside their
    event_init callback. This causes a lockdep splat when initialized through
    the kernel API:
    
     WARNING: CPU: 0 PID: 250 at kernel/events/core.c:2917 ctx_sched_out+0x78/0x208
     pc : ctx_sched_out+0x78/0x208
     Call trace:
      ctx_sched_out+0x78/0x208
      __perf_install_in_context+0x160/0x248
      remote_function+0x58/0x68
      generic_exec_single+0x100/0x180
      smp_call_function_single+0x174/0x1b8
      perf_install_in_context+0x178/0x188
      perf_event_create_kernel_counter+0x118/0x160
    
    Fix this by calling perf_install_in_context with event->cpu, just like
    perf_event_open
    
    Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Frank Li <Frank.li@nxp.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lkml.kernel.org/r/c4ebe0503623066896d7046def4d6b1e06e0eb2e.1563972056.git.leonard.crestez@nxp.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a59873b5fe37eac75f0a1e5febde88106f9d8020
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jul 18 15:03:15 2019 +0200

    tty/ldsem, locking/rwsem: Add missing ACQUIRE to read_failed sleep loop
    
    [ Upstream commit 952041a8639a7a3a73a2b6573cb8aa8518bc39f8 ]
    
    While reviewing rwsem down_slowpath, Will noticed ldsem had a copy of
    a bug we just found for rwsem.
    
      X = 0;
    
      CPU0                  CPU1
    
      rwsem_down_read()
        for (;;) {
          set_current_state(TASK_UNINTERRUPTIBLE);
    
                            X = 1;
                            rwsem_up_write();
                              rwsem_mark_wake()
                                atomic_long_add(adjustment, &sem->count);
                                smp_store_release(&waiter->task, NULL);
    
          if (!waiter.task)
            break;
    
          ...
        }
    
      r = X;
    
    Allows 'r == 0'.
    
    Reported-by: Will Deacon <will@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Will Deacon <will@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 4898e640caf0 ("tty: Add timed, writer-prioritized rw semaphore")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5bf03ad9c4c77e25eaebe4f02266f9757f71f6ff
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Jul 12 08:53:47 2019 +0200

    scsi: scsi_dh_alua: always use a 2 second delay before retrying RTPG
    
    [ Upstream commit 20122994e38aef0ae50555884d287adde6641c94 ]
    
    Retrying immediately after we've received a 'transitioning' sense code is
    pretty much pointless, we should always use a delay before retrying.  So
    ensure the default delay is applied before retrying.
    
    Signed-off-by: Hannes Reinecke <hare@suse.com>
    Tested-by: Zhangguanghui <zhang.guanghui@h3c.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3a0c297e6e636d5b87bf5bb5cfa441a84d944c9
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Wed Jul 17 14:48:27 2019 -0500

    scsi: ibmvfc: fix WARN_ON during event pool release
    
    [ Upstream commit 5578257ca0e21056821e6481bd534ba267b84e58 ]
    
    While removing an ibmvfc client adapter a WARN_ON like the following
    WARN_ON is seen in the kernel log:
    
    WARNING: CPU: 6 PID: 5421 at ./include/linux/dma-mapping.h:541
    ibmvfc_free_event_pool+0x12c/0x1f0 [ibmvfc]
    CPU: 6 PID: 5421 Comm: rmmod Tainted: G            E     4.17.0-rc1-next-20180419-autotest #1
    NIP:  d00000000290328c LR: d00000000290325c CTR: c00000000036ee20
    REGS: c000000288d1b7e0 TRAP: 0700   Tainted: G            E      (4.17.0-rc1-next-20180419-autotest)
    MSR:  800000010282b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>  CR: 44008828  XER: 20000000
    CFAR: c00000000036e408 SOFTE: 1
    GPR00: d00000000290325c c000000288d1ba60 d000000002917900 c000000289d75448
    GPR04: 0000000000000071 c0000000ff870000 0000000018040000 0000000000000001
    GPR08: 0000000000000000 c00000000156e838 0000000000000001 d00000000290c640
    GPR12: c00000000036ee20 c00000001ec4dc00 0000000000000000 0000000000000000
    GPR16: 0000000000000000 0000000000000000 00000100276901e0 0000000010020598
    GPR20: 0000000010020550 0000000010020538 0000000010020578 00000000100205b0
    GPR24: 0000000000000000 0000000000000000 0000000010020590 5deadbeef0000100
    GPR28: 5deadbeef0000200 d000000002910b00 0000000000000071 c0000002822f87d8
    NIP [d00000000290328c] ibmvfc_free_event_pool+0x12c/0x1f0 [ibmvfc]
    LR [d00000000290325c] ibmvfc_free_event_pool+0xfc/0x1f0 [ibmvfc]
    Call Trace:
    [c000000288d1ba60] [d00000000290325c] ibmvfc_free_event_pool+0xfc/0x1f0 [ibmvfc] (unreliable)
    [c000000288d1baf0] [d000000002909390] ibmvfc_abort_task_set+0x7b0/0x8b0 [ibmvfc]
    [c000000288d1bb70] [c0000000000d8c68] vio_bus_remove+0x68/0x100
    [c000000288d1bbb0] [c0000000007da7c4] device_release_driver_internal+0x1f4/0x2d0
    [c000000288d1bc00] [c0000000007da95c] driver_detach+0x7c/0x100
    [c000000288d1bc40] [c0000000007d8af4] bus_remove_driver+0x84/0x140
    [c000000288d1bcb0] [c0000000007db6ac] driver_unregister+0x4c/0xa0
    [c000000288d1bd20] [c0000000000d6e7c] vio_unregister_driver+0x2c/0x50
    [c000000288d1bd50] [d00000000290ba0c] cleanup_module+0x24/0x15e0 [ibmvfc]
    [c000000288d1bd70] [c0000000001dadb0] sys_delete_module+0x220/0x2d0
    [c000000288d1be30] [c00000000000b284] system_call+0x58/0x6c
    Instruction dump:
    e8410018 e87f0068 809f0078 e8bf0080 e8df0088 2fa30000 419e008c e9230200
    2fa90000 419e0080 894d098a 794a07e0 <0b0a0000> e9290008 2fa90000 419e0028
    
    This is tripped as a result of irqs being disabled during the call to
    dma_free_coherent() by ibmvfc_free_event_pool(). At this point in the code path
    we have quiesced the adapter and its overly paranoid anyways to be holding the
    host lock.
    
    Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d80a03c747230b7cc4c715e7733c6c10d335a961
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Mon Jul 22 09:15:24 2019 -0700

    scsi: megaraid_sas: fix panic on loading firmware crashdump
    
    [ Upstream commit 3b5f307ef3cb5022bfe3c8ca5b8f2114d5bf6c29 ]
    
    While loading fw crashdump in function fw_crash_buffer_show(), left bytes
    in one dma chunk was not checked, if copying size over it, overflow access
    will cause kernel panic.
    
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67b14bd258e166ee346c035a9197b4fce4957fa7
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jul 22 16:51:50 2019 +0200

    ARM: davinci: fix sleep.S build error on ARMv4
    
    [ Upstream commit d64b212ea960db4276a1d8372bd98cb861dfcbb0 ]
    
    When building a multiplatform kernel that includes armv4 support,
    the default target CPU does not support the blx instruction,
    which leads to a build failure:
    
    arch/arm/mach-davinci/sleep.S: Assembler messages:
    arch/arm/mach-davinci/sleep.S:56: Error: selected processor does not support `blx ip' in ARM mode
    
    Add a .arch statement in the sources to make this file build.
    
    Link: https://lore.kernel.org/r/20190722145211.1154785-1-arnd@arndb.de
    Acked-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab1ab88e93bea156af5e3fb0a3ce20f8ee3e0600
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Mon Jul 22 17:25:48 2019 +0100

    ACPI/IORT: Fix off-by-one check in iort_dev_find_its_id()
    
    [ Upstream commit 5a46d3f71d5e5a9f82eabc682f996f1281705ac7 ]
    
    Static analysis identified that index comparison against ITS entries in
    iort_dev_find_its_id() is off by one.
    
    Update the comparison condition and clarify the resulting error
    message.
    
    Fixes: 4bf2efd26d76 ("ACPI: Add new IORT functions to support MSI domain handling")
    Link: https://lore.kernel.org/linux-arm-kernel/20190613065410.GB16334@mwanda/
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Hanjun Guo <guohanjun@huawei.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dfaf368e67c3371f71220dbb7400aed6f5d59c1a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jul 22 14:26:34 2019 +0200

    drbd: dynamically allocate shash descriptor
    
    [ Upstream commit 77ce56e2bfaa64127ae5e23ef136c0168b818777 ]
    
    Building with clang and KASAN, we get a warning about an overly large
    stack frame on 32-bit architectures:
    
    drivers/block/drbd/drbd_receiver.c:921:31: error: stack frame size of 1280 bytes in function 'conn_connect'
          [-Werror,-Wframe-larger-than=]
    
    We already allocate other data dynamically in this function, so
    just do the same for the shash descriptor, which makes up most of
    this memory.
    
    Link: https://lore.kernel.org/lkml/20190617132440.2721536-1-arnd@arndb.de/
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Roland Kammerer <roland.kammerer@linbit.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 217c52217e8af93288448c01f18cf09910df11f0
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Jul 18 11:28:37 2019 -0300

    perf probe: Avoid calling freeing routine multiple times for same pointer
    
    [ Upstream commit d95daf5accf4a72005daa13fbb1d1bd8709f2861 ]
    
    When perf_add_probe_events() we call cleanup_perf_probe_events() for the
    pev pointer it receives, then, as part of handling this failure the main
    'perf probe' goes on and calls cleanup_params() and that will again call
    cleanup_perf_probe_events()for the same pointer, so just set nevents to
    zero when handling the failure of perf_add_probe_events() to avoid the
    double free.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-x8qgma4g813z96dvtw9w219q@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13810c478b5721bc100a1044bf7b9adddcd57aa6
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jul 22 10:24:36 2019 +0100

    ALSA: compress: Be more restrictive about when a drain is allowed
    
    [ Upstream commit 3b8179944cb0dd53e5223996966746cdc8a60657 ]
    
    Draining makes little sense in the situation of hardware overrun, as the
    hardware will have consumed all its available samples. Additionally,
    draining whilst the stream is paused would presumably get stuck as no
    data is being consumed on the DSP side.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Acked-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbc76c3b9d42ce1720e57cdb8026e2e218fb2eea
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jul 22 10:24:35 2019 +0100

    ALSA: compress: Don't allow paritial drain operations on capture streams
    
    [ Upstream commit a70ab8a8645083f3700814e757f2940a88b7ef88 ]
    
    Partial drain and next track are intended for gapless playback and
    don't really have an obvious interpretation for a capture stream, so
    makes sense to not allow those operations on capture streams.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Acked-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d25080f4d84654929a7eca15cb2eddbd6337bfc
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jul 22 10:24:34 2019 +0100

    ALSA: compress: Prevent bypasses of set_params
    
    [ Upstream commit 26c3f1542f5064310ad26794c09321780d00c57d ]
    
    Currently, whilst in SNDRV_PCM_STATE_OPEN it is possible to call
    snd_compr_stop, snd_compr_drain and snd_compr_partial_drain, which
    allow a transition to SNDRV_PCM_STATE_SETUP. The stream should
    only be able to move to the setup state once it has received a
    SNDRV_COMPRESS_SET_PARAMS ioctl. Fix this issue by not allowing
    those ioctls whilst in the open state.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Acked-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit daa60696bdf4e59fcb304b3601b1e3f8cdb4f412
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jul 22 10:24:33 2019 +0100

    ALSA: compress: Fix regression on compressed capture streams
    
    [ Upstream commit 4475f8c4ab7b248991a60d9c02808dbb813d6be8 ]
    
    A previous fix to the stop handling on compressed capture streams causes
    some knock on issues. The previous fix updated snd_compr_drain_notify to
    set the state back to PREPARED for capture streams. This causes some
    issues however as the handling for snd_compr_poll differs between the
    two states and some user-space applications were relying on the poll
    failing after the stream had been stopped.
    
    To correct this regression whilst still fixing the original problem the
    patch was addressing, update the capture handling to skip the PREPARED
    state rather than skipping the SETUP state as it has done until now.
    
    Fixes: 4f2ab5e1d13d ("ALSA: compress: Fix stop handling on compressed capture streams")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Acked-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 657c648a19eb9b92ee74220af0ed07c6a45db380
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Thu Jul 11 18:17:36 2019 +0200

    s390/qdio: add sanity checks to the fast-requeue path
    
    [ Upstream commit a6ec414a4dd529eeac5c3ea51c661daba3397108 ]
    
    If the device driver were to send out a full queue's worth of SBALs,
    current code would end up discovering the last of those SBALs as PRIMED
    and erroneously skip the SIGA-w. This immediately stalls the queue.
    
    Add a check to not attempt fast-requeue in this case. While at it also
    make sure that the state of the previous SBAL was successfully extracted
    before inspecting it.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 260718adc61479571869b3baf9bc85d55daa243b
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Wed Jul 17 11:55:04 2019 +0800

    cpufreq/pasemi: fix use-after-free in pas_cpufreq_cpu_init()
    
    [ Upstream commit e0a12445d1cb186d875410d093a00d215bec6a89 ]
    
    The cpu variable is still being used in the of_get_property() call
    after the of_node_put() call, which may result in use-after-free.
    
    Fixes: a9acc26b75f6 ("cpufreq/pasemi: fix possible object reference leak")
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71faaeb11df9378aa317c76e59e37f34c0851fc6
Author: Björn Gerhart <gerhart@posteo.de>
Date:   Mon Jul 15 18:33:55 2019 +0200

    hwmon: (nct6775) Fix register address and added missed tolerance for nct6106
    
    [ Upstream commit f3d43e2e45fd9d44ba52d20debd12cd4ee9c89bf ]
    
    Fixed address of third NCT6106_REG_WEIGHT_DUTY_STEP, and
    added missed NCT6106_REG_TOLERANCE_H.
    
    Fixes: 6c009501ff200 ("hwmon: (nct6775) Add support for NCT6102D/6106D")
    Signed-off-by: Bjoern Gerhart <gerhart@posteo.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 760b12a7262b0b32e2da4b2f5b21dce52053846b
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Jul 17 18:57:12 2019 -0700

    mac80211: don't warn about CW params when not using them
    
    [ Upstream commit d2b3fe42bc629c2d4002f652b3abdfb2e72991c7 ]
    
    ieee80211_set_wmm_default() normally sets up the initial CW min/max for
    each queue, except that it skips doing this if the driver doesn't
    support ->conf_tx. We still end up calling drv_conf_tx() in some cases
    (e.g., ieee80211_reconfig()), which also still won't do anything
    useful...except it complains here about the invalid CW parameters.
    
    Let's just skip the WARN if we weren't going to do anything useful with
    the parameters.
    
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Link: https://lore.kernel.org/r/20190718015712.197499-1-briannorris@chromium.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b9ac213b632b3f275728eb68a9a9e1c160aabf8
Author: Thomas Tai <thomas.tai@oracle.com>
Date:   Thu Jul 18 18:37:34 2019 +0000

    iscsi_ibft: make ISCSI_IBFT dependson ACPI instead of ISCSI_IBFT_FIND
    
    [ Upstream commit 94bccc34071094c165c79b515d21b63c78f7e968 ]
    
    iscsi_ibft can use ACPI to find the iBFT entry during bootup,
    currently, ISCSI_IBFT depends on ISCSI_IBFT_FIND which is
    a X86 legacy way to find the iBFT by searching through the
    low memory. This patch changes the dependency so that other
    arch like ARM64 can use ISCSI_IBFT as long as the arch supports
    ACPI.
    
    ibft_init() needs to use the global variable ibft_addr declared
    in iscsi_ibft_find.c. A #ifndef CONFIG_ISCSI_IBFT_FIND is needed
    to declare the variable if CONFIG_ISCSI_IBFT_FIND is not selected.
    Moving ibft_addr into the iscsi_ibft.c does not work because if
    ISCSI_IBFT is selected as a module, the arch/x86/kernel/setup.c won't
    be able to find the variable at compile time.
    
    Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43e4ea5b3ab8b99fa89741e43d6a6e2c158fba80
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Jul 2 21:41:40 2019 +0200

    netfilter: nfnetlink: avoid deadlock due to synchronous request_module
    
    [ Upstream commit 1b0890cd60829bd51455dc5ad689ed58c4408227 ]
    
    Thomas and Juliana report a deadlock when running:
    
    (rmmod nf_conntrack_netlink/xfrm_user)
    
      conntrack -e NEW -E &
      modprobe -v xfrm_user
    
    They provided following analysis:
    
    conntrack -e NEW -E
        netlink_bind()
            netlink_lock_table() -> increases "nl_table_users"
                nfnetlink_bind()
                # does not unlock the table as it's locked by netlink_bind()
                    __request_module()
                        call_usermodehelper_exec()
    
    This triggers "modprobe nf_conntrack_netlink" from kernel, netlink_bind()
    won't return until modprobe process is done.
    
    "modprobe xfrm_user":
        xfrm_user_init()
            register_pernet_subsys()
                -> grab pernet_ops_rwsem
                    ..
                    netlink_table_grab()
                        calls schedule() as "nl_table_users" is non-zero
    
    so modprobe is blocked because netlink_bind() increased
    nl_table_users while also holding pernet_ops_rwsem.
    
    "modprobe nf_conntrack_netlink" runs and inits nf_conntrack_netlink:
        ctnetlink_init()
            register_pernet_subsys()
                -> blocks on "pernet_ops_rwsem" thanks to xfrm_user module
    
    both modprobe processes wait on one another -- neither can make
    progress.
    
    Switch netlink_bind() to "nowait" modprobe -- this releases the netlink
    table lock, which then allows both modprobe instances to complete.
    
    Reported-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
    Reported-by: Juliana Rodrigueiro <juliana.rodrigueiro@intra2net.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13350c2269a6e6c3145a9998ecdcf1036ac8c034
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Fri Jul 5 15:32:16 2019 +0200

    can: peak_usb: fix potential double kfree_skb()
    
    commit fee6a8923ae0d318a7f7950c6c6c28a96cea099b upstream.
    
    When closing the CAN device while tx skbs are inflight, echo skb could
    be released twice. By calling close_candev() before unlinking all
    pending tx urbs, then the internal echo_skb[] array is fully and
    correctly cleared before the USB write callback and, therefore,
    can_get_echo_skb() are called, for each aborted URB.
    
    Fixes: bb4785551f64 ("can: usb: PEAK-System Technik USB adapters driver core")
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e253114f73134cf6f29b453176fb537441e12371
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Mon Aug 5 12:15:28 2019 +0100

    usb: yurex: Fix use-after-free in yurex_delete
    
    commit fc05481b2fcabaaeccf63e32ac1baab54e5b6963 upstream.
    
    syzbot reported the following crash [0]:
    
    BUG: KASAN: use-after-free in usb_free_coherent+0x79/0x80
    drivers/usb/core/usb.c:928
    Read of size 8 at addr ffff8881b18599c8 by task syz-executor.4/16007
    
    CPU: 0 PID: 16007 Comm: syz-executor.4 Not tainted 5.3.0-rc2+ #23
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0xca/0x13e lib/dump_stack.c:113
      print_address_description+0x6a/0x32c mm/kasan/report.c:351
      __kasan_report.cold+0x1a/0x33 mm/kasan/report.c:482
      kasan_report+0xe/0x12 mm/kasan/common.c:612
      usb_free_coherent+0x79/0x80 drivers/usb/core/usb.c:928
      yurex_delete+0x138/0x330 drivers/usb/misc/yurex.c:100
      kref_put include/linux/kref.h:65 [inline]
      yurex_release+0x66/0x90 drivers/usb/misc/yurex.c:392
      __fput+0x2d7/0x840 fs/file_table.c:280
      task_work_run+0x13f/0x1c0 kernel/task_work.c:113
      tracehook_notify_resume include/linux/tracehook.h:188 [inline]
      exit_to_usermode_loop+0x1d2/0x200 arch/x86/entry/common.c:163
      prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
      syscall_return_slowpath arch/x86/entry/common.c:274 [inline]
      do_syscall_64+0x45f/0x580 arch/x86/entry/common.c:299
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x413511
    Code: 75 14 b8 03 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 04 1b 00 00 c3 48
    83 ec 08 e8 0a fc ff ff 48 89 04 24 b8 03 00 00 00 0f 05 <48> 8b 3c 24 48
    89 c2 e8 53 fc ff ff 48 89 d0 48 83 c4 08 48 3d 01
    RSP: 002b:00007ffc424ea2e0 EFLAGS: 00000293 ORIG_RAX: 0000000000000003
    RAX: 0000000000000000 RBX: 0000000000000007 RCX: 0000000000413511
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000006
    RBP: 0000000000000001 R08: 0000000029a2fc22 R09: 0000000029a2fc26
    R10: 00007ffc424ea3c0 R11: 0000000000000293 R12: 000000000075c9a0
    R13: 000000000075c9a0 R14: 0000000000761938 R15: ffffffffffffffff
    
    Allocated by task 2776:
      save_stack+0x1b/0x80 mm/kasan/common.c:69
      set_track mm/kasan/common.c:77 [inline]
      __kasan_kmalloc mm/kasan/common.c:487 [inline]
      __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:460
      kmalloc include/linux/slab.h:552 [inline]
      kzalloc include/linux/slab.h:748 [inline]
      usb_alloc_dev+0x51/0xf95 drivers/usb/core/usb.c:583
      hub_port_connect drivers/usb/core/hub.c:5004 [inline]
      hub_port_connect_change drivers/usb/core/hub.c:5213 [inline]
      port_event drivers/usb/core/hub.c:5359 [inline]
      hub_event+0x15c0/0x3640 drivers/usb/core/hub.c:5441
      process_one_work+0x92b/0x1530 kernel/workqueue.c:2269
      worker_thread+0x96/0xe20 kernel/workqueue.c:2415
      kthread+0x318/0x420 kernel/kthread.c:255
      ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352
    
    Freed by task 16007:
      save_stack+0x1b/0x80 mm/kasan/common.c:69
      set_track mm/kasan/common.c:77 [inline]
      __kasan_slab_free+0x130/0x180 mm/kasan/common.c:449
      slab_free_hook mm/slub.c:1423 [inline]
      slab_free_freelist_hook mm/slub.c:1470 [inline]
      slab_free mm/slub.c:3012 [inline]
      kfree+0xe4/0x2f0 mm/slub.c:3953
      device_release+0x71/0x200 drivers/base/core.c:1064
      kobject_cleanup lib/kobject.c:693 [inline]
      kobject_release lib/kobject.c:722 [inline]
      kref_put include/linux/kref.h:65 [inline]
      kobject_put+0x171/0x280 lib/kobject.c:739
      put_device+0x1b/0x30 drivers/base/core.c:2213
      usb_put_dev+0x1f/0x30 drivers/usb/core/usb.c:725
      yurex_delete+0x40/0x330 drivers/usb/misc/yurex.c:95
      kref_put include/linux/kref.h:65 [inline]
      yurex_release+0x66/0x90 drivers/usb/misc/yurex.c:392
      __fput+0x2d7/0x840 fs/file_table.c:280
      task_work_run+0x13f/0x1c0 kernel/task_work.c:113
      tracehook_notify_resume include/linux/tracehook.h:188 [inline]
      exit_to_usermode_loop+0x1d2/0x200 arch/x86/entry/common.c:163
      prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
      syscall_return_slowpath arch/x86/entry/common.c:274 [inline]
      do_syscall_64+0x45f/0x580 arch/x86/entry/common.c:299
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The buggy address belongs to the object at ffff8881b1859980
      which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 72 bytes inside of
      2048-byte region [ffff8881b1859980, ffff8881b185a180)
    The buggy address belongs to the page:
    page:ffffea0006c61600 refcount:1 mapcount:0 mapping:ffff8881da00c000
    index:0x0 compound_mapcount: 0
    flags: 0x200000000010200(slab|head)
    raw: 0200000000010200 0000000000000000 0000000100000001 ffff8881da00c000
    raw: 0000000000000000 00000000000f000f 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
      ffff8881b1859880: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      ffff8881b1859900: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    > ffff8881b1859980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                   ^
      ffff8881b1859a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8881b1859a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    A quick look at the yurex_delete() shows that we drop the reference
    to the usb_device before releasing any buffers associated with the
    device. Delay the reference drop until we have finished the cleanup.
    
    [0] https://lore.kernel.org/lkml/0000000000003f86d8058f0bd671@google.com/
    
    Fixes: 6bc235a2e24a5e ("USB: add driver for Meywa-Denki & Kayac YUREX")
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Tomoki Sekiyama <tomoki.sekiyama@gmail.com>
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: andreyknvl@google.com
    Cc: gregkh@linuxfoundation.org
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: syzkaller-bugs@googlegroups.com
    Cc: dtor@chromium.org
    Reported-by: syzbot+d1fedb1c1fdb07fca507@syzkaller.appspotmail.com
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190805111528.6758-1-suzuki.poulose@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d7f710286c1e9d2de4fdda638f9f9ef6c412080
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Wed Jul 24 14:27:02 2019 +0200

    perf record: Fix module size on s390
    
    commit 12a6d2940b5f02b4b9f71ce098e3bb02bc24a9ea upstream.
    
    On s390 the modules loaded in memory have the text segment located after
    the GOT and Relocation table. This can be seen with this output:
    
      [root@m35lp76 perf]# fgrep qeth /proc/modules
      qeth 151552 1 qeth_l2, Live 0x000003ff800b2000
      ...
      [root@m35lp76 perf]# cat /sys/module/qeth/sections/.text
      0x000003ff800b3990
      [root@m35lp76 perf]#
    
    There is an offset of 0x1990 bytes. The size of the qeth module is
    151552 bytes (0x25000 in hex).
    
    The location of the GOT/relocation table at the beginning of a module is
    unique to s390.
    
    commit 203d8a4aa6ed ("perf s390: Fix 'start' address of module's map")
    adjusts the start address of a module in the map structures, but does
    not adjust the size of the modules. This leads to overlapping of module
    maps as this example shows:
    
    [root@m35lp76 perf] # ./perf report -D
         0 0 0xfb0 [0xa0]: PERF_RECORD_MMAP -1/0: [0x3ff800b3990(0x25000)
              @ 0]:  x /lib/modules/.../qeth.ko.xz
         0 0 0x1050 [0xb0]: PERF_RECORD_MMAP -1/0: [0x3ff800d85a0(0x8000)
              @ 0]:  x /lib/modules/.../ip6_tables.ko.xz
    
    The module qeth.ko has an adjusted start address modified to b3990, but
    its size is unchanged and the module ends at 0x3ff800d8990.  This end
    address overlaps with the next modules start address of 0x3ff800d85a0.
    
    When the size of the leading GOT/Relocation table stored in the
    beginning of the text segment (0x1990 bytes) is subtracted from module
    qeth end address, there are no overlaps anymore:
    
       0x3ff800d8990 - 0x1990 = 0x0x3ff800d7000
    
    which is the same as
    
       0x3ff800b2000 + 0x25000 = 0x0x3ff800d7000.
    
    To fix this issue, also adjust the modules size in function
    arch__fix_module_text_start(). Add another function parameter named size
    and reduce the size of the module when the text segment start address is
    changed.
    
    Output after:
         0 0 0xfb0 [0xa0]: PERF_RECORD_MMAP -1/0: [0x3ff800b3990(0x23670)
              @ 0]:  x /lib/modules/.../qeth.ko.xz
         0 0 0x1050 [0xb0]: PERF_RECORD_MMAP -1/0: [0x3ff800d85a0(0x7a60)
              @ 0]:  x /lib/modules/.../ip6_tables.ko.xz
    
    Reported-by: Stefan Liebler <stli@linux.ibm.com>
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: stable@vger.kernel.org
    Fixes: 203d8a4aa6ed ("perf s390: Fix 'start' address of module's map")
    Link: http://lkml.kernel.org/r/20190724122703.3996-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 708eac3bdb554e854ae3554a9c9953f79f834ee9
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Aug 8 09:48:23 2019 +0300

    perf db-export: Fix thread__exec_comm()
    
    commit 3de7ae0b2a1d86dbb23d0cb135150534fdb2e836 upstream.
    
    Threads synthesized from /proc have comms with a start time of zero, and
    not marked as "exec". Currently, there can be 2 such comms. The first is
    created by processing a synthesized fork event and is set to the
    parent's comm string, and the second by processing a synthesized comm
    event set to the thread's current comm string.
    
    In the absence of an "exec" comm, thread__exec_comm() picks the last
    (oldest) comm, which, in the case above, is the parent's comm string.
    For a main thread, that is very probably wrong. Use the second-to-last
    in that case.
    
    This affects only db-export because it is the only user of
    thread__exec_comm().
    
    Example:
    
      $ sudo perf record -a -o pt-a-sleep-1 -e intel_pt//u -- sleep 1
      $ sudo chown ahunter pt-a-sleep-1
    
    Before:
    
      $ perf script -i pt-a-sleep-1 --itrace=bep -s tools/perf/scripts/python/export-to-sqlite.py pt-a-sleep-1.db branches calls
      $ sqlite3 -header -column pt-a-sleep-1.db 'select * from comm_threads_view'
      comm_id     command     thread_id   pid         tid
      ----------  ----------  ----------  ----------  ----------
      1           swapper     1           0           0
      2           rcu_sched   2           10          10
      3           kthreadd    3           78          78
      5           sudo        4           15180       15180
      5           sudo        5           15180       15182
      7           kworker/4:  6           10335       10335
      8           kthreadd    7           55          55
      10          systemd     8           865         865
      10          systemd     9           865         875
      13          perf        10          15181       15181
      15          sleep       10          15181       15181
      16          kworker/3:  11          14179       14179
      17          kthreadd    12          29376       29376
      19          systemd     13          746         746
      21          systemd     14          401         401
      23          systemd     15          879         879
      23          systemd     16          879         945
      25          kthreadd    17          556         556
      27          kworker/u1  18          14136       14136
      28          kworker/u1  19          15021       15021
      29          kthreadd    20          509         509
      31          systemd     21          836         836
      31          systemd     22          836         967
      33          systemd     23          1148        1148
      33          systemd     24          1148        1163
      35          kworker/2:  25          17988       17988
      36          kworker/0:  26          13478       13478
    
    After:
    
      $ perf script -i pt-a-sleep-1 --itrace=bep -s tools/perf/scripts/python/export-to-sqlite.py pt-a-sleep-1b.db branches calls
      $ sqlite3 -header -column pt-a-sleep-1b.db 'select * from comm_threads_view'
      comm_id     command     thread_id   pid         tid
      ----------  ----------  ----------  ----------  ----------
      1           swapper     1           0           0
      2           rcu_sched   2           10          10
      3           kswapd0     3           78          78
      4           perf        4           15180       15180
      4           perf        5           15180       15182
      6           kworker/4:  6           10335       10335
      7           kcompactd0  7           55          55
      8           accounts-d  8           865         865
      8           accounts-d  9           865         875
      10          perf        10          15181       15181
      12          sleep       10          15181       15181
      13          kworker/3:  11          14179       14179
      14          kworker/1:  12          29376       29376
      15          haveged     13          746         746
      16          systemd-jo  14          401         401
      17          NetworkMan  15          879         879
      17          NetworkMan  16          879         945
      19          irq/131-iw  17          556         556
      20          kworker/u1  18          14136       14136
      21          kworker/u1  19          15021       15021
      22          kworker/u1  20          509         509
      23          thermald    21          836         836
      23          thermald    22          836         967
      25          unity-sett  23          1148        1148
      25          unity-sett  24          1148        1163
      27          kworker/2:  25          17988       17988
      28          kworker/0:  26          13478       13478
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 65de51f93ebf ("perf tools: Identify which comms are from exec")
    Link: http://lkml.kernel.org/r/20190808064823.14846-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 624c2b3696baa621a724e7772284a4f5a48d3002
Author: Thomas Richter <tmricht@linux.vnet.ibm.com>
Date:   Thu Aug 3 15:49:02 2017 +0200

    perf record: Fix wrong size in perf_record_mmap for last kernel module
    
    commit 9ad4652b66f19a60f07e63b942b80b5c2d7465bf upstream.
    
    During work on perf report for s390 I ran into the following issue:
    
    0 0x318 [0x78]: PERF_RECORD_MMAP -1/0:
            [0x3ff804d6990(0xfffffc007fb2966f) @ 0]:
            x /lib/modules/4.12.0perf1+/kernel/drivers/s390/net/qeth_l2.ko
    
    This is a PERF_RECORD_MMAP entry of the perf.data file with an invalid
    module size for qeth_l2.ko (the s390 ethernet device driver).
    
    Even a mainframe does not have 0xfffffc007fb2966f bytes of main memory.
    
    It turned out that this wrong size is created by the perf record
    command.  What happens is this function call sequence from
    __cmd_record():
    
      perf_session__new():
        perf_session__create_kernel_maps():
          machine__create_kernel_maps():
            machine__create_modules():   Creates map for all loaded kernel modules.
              modules__parse():   Reads /proc/modules and extracts module name and
                                  load address (1st and last column)
                machine__create_module():   Called for every module found in /proc/modules.
                                  Creates a new map for every module found and enters
                                  module name and start address into the map. Since the
                                  module end address is unknown it is set to zero.
    
    This ends up with a kernel module map list sorted by module start
    addresses.  All module end addresses are zero.
    
    Last machine__create_kernel_maps() calls function map_groups__fixup_end().
    This function iterates through the maps and assigns each map entry's
    end address the successor map entry start address. The last entry of the
    map group has no successor, so ~0 is used as end to consume the remaining
    memory.
    
    Later __cmd_record calls function record__synthesize() which in turn calls
    perf_event__synthesize_kernel_mmap() and perf_event__synthesize_modules()
    to create PERF_REPORT_MMAP entries into the perf.data file.
    
    On s390 this results in the last module qeth_l2.ko
    (which has highest start address, see module table:
            [root@s8360047 perf]# cat /proc/modules
            qeth_l2 86016 1 - Live 0x000003ff804d6000
            qeth 266240 1 qeth_l2, Live 0x000003ff80296000
            ccwgroup 24576 1 qeth, Live 0x000003ff80218000
            vmur 36864 0 - Live 0x000003ff80182000
            qdio 143360 2 qeth_l2,qeth, Live 0x000003ff80002000
            [root@s8360047 perf]# )
    to be the last entry and its map has an end address of ~0.
    
    When the PERF_RECORD_MMAP entry is created for kernel module qeth_l2.ko
    its start address and length is written. The length is calculated in line:
        event->mmap.len   = pos->end - pos->start;
    and results in 0xffffffffffffffff - 0x3ff804d6990(*) = 0xfffffc007fb2966f
    
    (*) On s390 the module start address is actually determined by a __weak function
    named arch__fix_module_text_start() in machine__create_module().
    
    I think this improvable. We can use the module size (2nd column of /proc/modules)
    to get each loaded kernel module size and calculate its end address.
    Only for map entries which do not have a valid end address (end is still zero)
    we can use the heuristic we have now, that is use successor start address or ~0.
    
    Signed-off-by: Thomas-Mich Richter <tmricht@linux.vnet.ibm.com>
    Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Thomas-Mich Richter <tmricht@linux.vnet.ibm.com>
    Cc: Zvonko Kosic <zvonko.kosic@de.ibm.com>
    LPU-Reference: 20170803134902.47207-2-tmricht@linux.vnet.ibm.com
    Link: http://lkml.kernel.org/n/tip-nmoqij5b5vxx7rq2ckwu8iaj@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Daniel Daz <daniel.diaz@linaro.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c8f40d2c2724d61bdcbc528cdad1ee0d763012e
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Jul 19 20:46:52 2019 +0200

    mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy()
    
    commit 3f8fd02b1bf1d7ba964485a56f2f4b53ae88c167 upstream.
    
    On x86-32 with PTI enabled, parts of the kernel page-tables are not shared
    between processes. This can cause mappings in the vmalloc/ioremap area to
    persist in some page-tables after the region is unmapped and released.
    
    When the region is re-used the processes with the old mappings do not fault
    in the new mappings but still access the old ones.
    
    This causes undefined behavior, in reality often data corruption, kernel
    oopses and panics and even spontaneous reboots.
    
    Fix this problem by activly syncing unmaps in the vmalloc/ioremap area to
    all page-tables in the system before the regions can be re-used.
    
    References: https://bugzilla.suse.com/show_bug.cgi?id=1118689
    Fixes: 5d72b4fba40ef ('x86, mm: support huge I/O mapping capability I/F')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
    Link: https://lkml.kernel.org/r/20190719184652.11391-4-joro@8bytes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffd85e35d6354ebf85ac7db6388254b8ebf57bd4
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Jul 19 20:46:51 2019 +0200

    x86/mm: Sync also unmappings in vmalloc_sync_all()
    
    commit 8e998fc24de47c55b47a887f6c95ab91acd4a720 upstream.
    
    With huge-page ioremap areas the unmappings also need to be synced between
    all page-tables. Otherwise it can cause data corruption when a region is
    unmapped and later re-used.
    
    Make the vmalloc_sync_one() function ready to sync unmappings and make sure
    vmalloc_sync_all() iterates over all page-tables even when an unmapped PMD
    is found.
    
    Fixes: 5d72b4fba40ef ('x86, mm: support huge I/O mapping capability I/F')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
    Link: https://lkml.kernel.org/r/20190719184652.11391-3-joro@8bytes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6932b4b97baea5f96ea857271612c6ed37a26a2
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Jul 19 20:46:50 2019 +0200

    x86/mm: Check for pfn instead of page in vmalloc_sync_one()
    
    commit 51b75b5b563a2637f9d8dc5bd02a31b2ff9e5ea0 upstream.
    
    Do not require a struct page for the mapped memory location because it
    might not exist. This can happen when an ioremapped region is mapped with
    2MB pages.
    
    Fixes: 5d72b4fba40ef ('x86, mm: support huge I/O mapping capability I/F')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
    Link: https://lkml.kernel.org/r/20190719184652.11391-2-joro@8bytes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 808dff56c326ebab0a4848d501ebe60b612e3815
Author: Wenwen Wang <wenwen@cs.uga.edu>
Date:   Thu Aug 8 00:15:21 2019 -0500

    sound: fix a memory leak bug
    
    commit c7cd7c748a3250ca33509f9235efab9c803aca09 upstream.
    
    In sound_insert_unit(), the controlling structure 's' is allocated through
    kmalloc(). Then it is added to the sound driver list by invoking
    __sound_insert_unit(). Later on, if __register_chrdev() fails, 's' is
    removed from the list through __sound_remove_unit(). If 'index' is not less
    than 0, -EBUSY is returned to indicate the error. However, 's' is not
    deallocated on this execution path, leading to a memory leak bug.
    
    To fix the above issue, free 's' before -EBUSY is returned.
    
    Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f34431096132f2865dd8ca02448a0b112fa52d52
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Aug 8 11:27:28 2019 +0200

    usb: iowarrior: fix deadlock on disconnect
    
    commit c468a8aa790e0dfe0a7f8a39db282d39c2c00b46 upstream.
    
    We have to drop the mutex before we close() upon disconnect()
    as close() needs the lock. This is safe to do by dropping the
    mutex as intfdata is already set to NULL, so open() will fail.
    
    Fixes: 03f36e885fc26 ("USB: open disconnect race in iowarrior")
    Reported-by: syzbot+a64a382964bf6c71a9c0@syzkaller.appspotmail.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20190808092728.23417-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb7124b0cca13de746719238eceba21537e8b396
Author: Gavin Li <git@thegavinli.com>
Date:   Sun Aug 4 16:50:44 2019 -0700

    usb: usbfs: fix double-free of usb memory upon submiturb error
    
    commit c43f28dfdc4654e738aa6d3fd08a105b2bee758d upstream.
    
    Upon an error within proc_do_submiturb(), dec_usb_memory_use_count()
    gets called once by the error handling tail and again by free_async().
    Remove the first call.
    
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190804235044.22327-1-gavinli@thegavinli.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>