commit 63bbbcd8ed53c404649e0b4248c1e5d42c41ac97
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jun 22 08:15:22 2019 +0200

    Linux 4.19.54

commit e8e448b08450b05d54cf99eb4e3473b708c8fcc0
Author: Alexander Lochmann <alexander.lochmann@tu-dortmund.de>
Date:   Fri Dec 14 11:55:52 2018 +0100

    Abort file_remove_privs() for non-reg. files
    
    commit f69e749a49353d96af1a293f56b5b56de59c668a upstream.
    
    file_remove_privs() might be called for non-regular files, e.g.
    blkdev inode. There is no reason to do its job on things
    like blkdev inodes, pipes, or cdevs. Hence, abort if
    file does not refer to a regular inode.
    
    AV: more to the point, for devices there might be any number of
    inodes refering to given device.  Which one to strip the permissions
    from, even if that made any sense in the first place?  All of them
    will be observed with contents modified, after all.
    
    Found by LockDoc (Alexander Lochmann, Horst Schirmeier and Olaf
    Spinczyk)
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Alexander Lochmann <alexander.lochmann@tu-dortmund.de>
    Signed-off-by: Horst Schirmeier <horst.schirmeier@tu-dortmund.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 465ce9a50f8a4e2fcd257ce37e11db3104a83ebb
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Thu Jun 13 15:56:11 2019 -0700

    coredump: fix race condition between collapse_huge_page() and core dumping
    
    commit 59ea6d06cfa9247b586a695c21f94afa7183af74 upstream.
    
    When fixing the race conditions between the coredump and the mmap_sem
    holders outside the context of the process, we focused on
    mmget_not_zero()/get_task_mm() callers in 04f5866e41fb70 ("coredump: fix
    race condition between mmget_not_zero()/get_task_mm() and core
    dumping"), but those aren't the only cases where the mmap_sem can be
    taken outside of the context of the process as Michal Hocko noticed
    while backporting that commit to older -stable kernels.
    
    If mmgrab() is called in the context of the process, but then the
    mm_count reference is transferred outside the context of the process,
    that can also be a problem if the mmap_sem has to be taken for writing
    through that mm_count reference.
    
    khugepaged registration calls mmgrab() in the context of the process,
    but the mmap_sem for writing is taken later in the context of the
    khugepaged kernel thread.
    
    collapse_huge_page() after taking the mmap_sem for writing doesn't
    modify any vma, so it's not obvious that it could cause a problem to the
    coredump, but it happens to modify the pmd in a way that breaks an
    invariant that pmd_trans_huge_lock() relies upon.  collapse_huge_page()
    needs the mmap_sem for writing just to block concurrent page faults that
    call pmd_trans_huge_lock().
    
    Specifically the invariant that "!pmd_trans_huge()" cannot become a
    "pmd_trans_huge()" doesn't hold while collapse_huge_page() runs.
    
    The coredump will call __get_user_pages() without mmap_sem for reading,
    which eventually can invoke a lockless page fault which will need a
    functional pmd_trans_huge_lock().
    
    So collapse_huge_page() needs to use mmget_still_valid() to check it's
    not running concurrently with the coredump...  as long as the coredump
    can invoke page faults without holding the mmap_sem for reading.
    
    This has "Fixes: khugepaged" to facilitate backporting, but in my view
    it's more a bug in the coredump code that will eventually have to be
    rewritten to stop invoking page faults without the mmap_sem for reading.
    So the long term plan is still to drop all mmget_still_valid().
    
    Link: http://lkml.kernel.org/r/20190607161558.32104-1-aarcange@redhat.com
    Fixes: ba76149f47d8 ("thp: khugepaged")
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Reported-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Jason Gunthorpe <jgg@mellanox.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 c7fb6b75def2c2a4bf2902006099ae586fcdb234
Author: Tobin C. Harding <tobin@kernel.org>
Date:   Fri May 31 22:30:29 2019 -0700

    ocfs2: fix error path kobject memory leak
    
    [ Upstream commit b9fba67b3806e21b98bd5a98dc3921a8e9b42d61 ]
    
    If a call to kobject_init_and_add() fails we should call kobject_put()
    otherwise we leak memory.
    
    Add call to kobject_put() in the error path of call to
    kobject_init_and_add().  Please note, this has the side effect that the
    release method is called if kobject_init_and_add() fails.
    
    Link: http://lkml.kernel.org/r/20190513033458.2824-1-tobin@kernel.org
    Signed-off-by: Tobin C. Harding <tobin@kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-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 fedb1b9c9191687a7ceb117b8dc444d0d321692a
Author: Amit Cohen <amitc@mellanox.com>
Date:   Wed May 29 10:59:45 2019 +0300

    mlxsw: spectrum: Prevent force of 56G
    
    [ Upstream commit 275e928f19117d22f6d26dee94548baf4041b773 ]
    
    Force of 56G is not supported by hardware in Ethernet devices. This
    configuration fails with a bad parameter error from firmware.
    
    Add check of this case. Instead of trying to set 56G with autoneg off,
    return a meaningful error.
    
    Fixes: 56ade8fe3fe1 ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
    Signed-off-by: Amit Cohen <amitc@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 114e8135ae0031556ead1bcb67249ecb84b804de
Author: Jason Yan <yanaijie@huawei.com>
Date:   Tue May 14 10:42:39 2019 +0800

    scsi: libsas: delete sas port if expander discover failed
    
    [ Upstream commit 3b0541791453fbe7f42867e310e0c9eb6295364d ]
    
    The sas_port(phy->port) allocated in sas_ex_discover_expander() will not be
    deleted when the expander failed to discover. This will cause resource leak
    and a further issue of kernel BUG like below:
    
    [159785.843156]  port-2:17:29: trying to add phy phy-2:17:29 fails: it's
    already part of another port
    [159785.852144] ------------[ cut here  ]------------
    [159785.856833] kernel BUG at drivers/scsi/scsi_transport_sas.c:1086!
    [159785.863000] Internal error: Oops - BUG: 0 [#1] SMP
    [159785.867866] CPU: 39 PID: 16993 Comm: kworker/u96:2 Tainted: G
    W  OE     4.19.25-vhulk1901.1.0.h111.aarch64 #1
    [159785.878458] Hardware name: Huawei Technologies Co., Ltd.
    Hi1620EVBCS/Hi1620EVBCS, BIOS Hi1620 CS B070 1P TA 03/21/2019
    [159785.889231] Workqueue: 0000:74:02.0_disco_q sas_discover_domain
    [159785.895224] pstate: 40c00009 (nZcv daif +PAN +UAO)
    [159785.900094] pc : sas_port_add_phy+0x188/0x1b8
    [159785.904524] lr : sas_port_add_phy+0x188/0x1b8
    [159785.908952] sp : ffff0001120e3b80
    [159785.912341] x29: ffff0001120e3b80 x28: 0000000000000000
    [159785.917727] x27: ffff802ade8f5400 x26: ffff0000681b7560
    [159785.923111] x25: ffff802adf11a800 x24: ffff0000680e8000
    [159785.928496] x23: ffff802ade8f5728 x22: ffff802ade8f5708
    [159785.933880] x21: ffff802adea2db40 x20: ffff802ade8f5400
    [159785.939264] x19: ffff802adea2d800 x18: 0000000000000010
    [159785.944649] x17: 00000000821bf734 x16: ffff00006714faa0
    [159785.950033] x15: ffff0000e8ab4ecf x14: 7261702079646165
    [159785.955417] x13: 726c612073277469 x12: ffff00006887b830
    [159785.960802] x11: ffff00006773eaa0 x10: 7968702079687020
    [159785.966186] x9 : 0000000000002453 x8 : 726f702072656874
    [159785.971570] x7 : 6f6e6120666f2074 x6 : ffff802bcfb21290
    [159785.976955] x5 : ffff802bcfb21290 x4 : 0000000000000000
    [159785.982339] x3 : ffff802bcfb298c8 x2 : 337752b234c2ab00
    [159785.987723] x1 : 337752b234c2ab00 x0 : 0000000000000000
    [159785.993108] Process kworker/u96:2 (pid: 16993, stack limit =
    0x0000000072dae094)
    [159786.000576] Call trace:
    [159786.003097]  sas_port_add_phy+0x188/0x1b8
    [159786.007179]  sas_ex_get_linkrate.isra.5+0x134/0x140
    [159786.012130]  sas_ex_discover_expander+0x128/0x408
    [159786.016906]  sas_ex_discover_dev+0x218/0x4c8
    [159786.021249]  sas_ex_discover_devices+0x9c/0x1a8
    [159786.025852]  sas_discover_root_expander+0x134/0x160
    [159786.030802]  sas_discover_domain+0x1b8/0x1e8
    [159786.035148]  process_one_work+0x1b4/0x3f8
    [159786.039230]  worker_thread+0x54/0x470
    [159786.042967]  kthread+0x134/0x138
    [159786.046269]  ret_from_fork+0x10/0x18
    [159786.049918] Code: 91322300 f0004402 91178042 97fe4c9b (d4210000)
    [159786.056083] Modules linked in: hns3_enet_ut(OE) hclge(OE) hnae3(OE)
    hisi_sas_test_hw(OE) hisi_sas_test_main(OE) serdes(OE)
    [159786.067202] ---[ end trace 03622b9e2d99e196  ]---
    [159786.071893] Kernel panic - not syncing: Fatal exception
    [159786.077190] SMP: stopping secondary CPUs
    [159786.081192] Kernel Offset: disabled
    [159786.084753] CPU features: 0x2,a2a00a38
    
    Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
    Reported-by: Jian Luo <luojian5@huawei.com>
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89ede9d8b5b82a0e1ebaaf95d6b6fd99b461cb26
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Mon May 27 22:22:09 2019 +0800

    scsi: scsi_dh_alua: Fix possible null-ptr-deref
    
    [ Upstream commit 12e750bc62044de096ab9a95201213fd912b9994 ]
    
    If alloc_workqueue fails in alua_init, it should return -ENOMEM, otherwise
    it will trigger null-ptr-deref while unloading module which calls
    destroy_workqueue dereference
    wq->lock like this:
    
    BUG: KASAN: null-ptr-deref in __lock_acquire+0x6b4/0x1ee0
    Read of size 8 at addr 0000000000000080 by task syz-executor.0/7045
    
    CPU: 0 PID: 7045 Comm: syz-executor.0 Tainted: G         C        5.1.0+ #28
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1
    Call Trace:
     dump_stack+0xa9/0x10e
     __kasan_report+0x171/0x18d
     ? __lock_acquire+0x6b4/0x1ee0
     kasan_report+0xe/0x20
     __lock_acquire+0x6b4/0x1ee0
     lock_acquire+0xb4/0x1b0
     __mutex_lock+0xd8/0xb90
     drain_workqueue+0x25/0x290
     destroy_workqueue+0x1f/0x3f0
     __x64_sys_delete_module+0x244/0x330
     do_syscall_64+0x72/0x2a0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 03197b61c5ec ("scsi_dh_alua: Use workqueue for RTPG")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb7c6c33d3bbb75337058befd26cb0459460b2c5
Author: Lianbo Jiang <lijiang@redhat.com>
Date:   Mon May 27 08:59:34 2019 +0800

    scsi: smartpqi: properly set both the DMA mask and the coherent DMA mask
    
    [ Upstream commit 1d94f06e7f5df4064ef336b7b710f50143b64a53 ]
    
    When SME is enabled, the smartpqi driver won't work on the HP DL385 G10
    machine, which causes the failure of kernel boot because it fails to
    allocate pqi error buffer. Please refer to the kernel log:
    ....
    [    9.431749] usbcore: registered new interface driver uas
    [    9.441524] Microsemi PQI Driver (v1.1.4-130)
    [    9.442956] i40e 0000:04:00.0: fw 6.70.48768 api 1.7 nvm 10.2.5
    [    9.447237] smartpqi 0000:23:00.0: Microsemi Smart Family Controller found
             Starting dracut initqueue hook...
    [  OK  ] Started Show Plymouth Boot Scre[    9.471654] Broadcom NetXtreme-C/E driver bnxt_en v1.9.1
    en.
    [  OK  ] Started Forward Password Requests to Plymouth Directory Watch.
    [[0;[    9.487108] smartpqi 0000:23:00.0: failed to allocate PQI error buffer
    ....
    [  139.050544] dracut-initqueue[949]: Warning: dracut-initqueue timeout - starting timeout scripts
    [  139.589779] dracut-initqueue[949]: Warning: dracut-initqueue timeout - starting timeout scripts
    
    Basically, the fact that the coherent DMA mask value wasn't set caused the
    driver to fall back to SWIOTLB when SME is active.
    
    For correct operation, lets call the dma_set_mask_and_coherent() to
    properly set the mask for both streaming and coherent, in order to inform
    the kernel about the devices DMA addressing capabilities.
    
    Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
    Acked-by: Don Brace <don.brace@microsemi.com>
    Tested-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 214c5933ffcf703112656f5e3d98505fbfb97cb3
Author: Varun Prakash <varun@chelsio.com>
Date:   Wed May 22 20:10:55 2019 +0530

    scsi: libcxgbi: add a check for NULL pointer in cxgbi_check_route()
    
    [ Upstream commit cc555759117e8349088e0c5d19f2f2a500bafdbd ]
    
    ip_dev_find() can return NULL so add a check for NULL pointer.
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b9e10944f0dc82627321288a3012c2cf233f85d
Author: Max Uvarov <muvarov@gmail.com>
Date:   Tue May 28 13:00:52 2019 +0300

    net: phy: dp83867: Set up RGMII TX delay
    
    [ Upstream commit 2b892649254fec01678c64f16427622b41fa27f4 ]
    
    PHY_INTERFACE_MODE_RGMII_RXID is less then TXID
    so code to set tx delay is never called.
    
    Fixes: 2a10154abcb75 ("net: phy: dp83867: Add TI dp83867 phy")
    Signed-off-by: Max Uvarov <muvarov@gmail.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7698ad8c14c7ba8fc4364e6c9150c94203de7333
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue May 28 10:27:21 2019 +0100

    net: phylink: ensure consistent phy interface mode
    
    [ Upstream commit c678726305b9425454be7c8a7624290b602602fc ]
    
    Ensure that we supply the same phy interface mode to mac_link_down() as
    we did for the corresponding mac_link_up() call.  This ensures that MAC
    drivers that use the phy interface mode in these methods can depend on
    mac_link_down() always corresponding to a mac_link_up() call for the
    same interface mode.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8fb2c7969009b16c85fcb4d3a423cc4a4d435a6e
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Tue May 28 13:10:46 2019 +0900

    net: sh_eth: fix mdio access in sh_eth_close() for R-Car Gen2 and RZ/A1 SoCs
    
    [ Upstream commit 315ca92dd863fecbffc0bb52ae0ac11e0398726a ]
    
    The sh_eth_close() resets the MAC and then calls phy_stop()
    so that mdio read access result is incorrect without any error
    according to kernel trace like below:
    
    ifconfig-216   [003] .n..   109.133124: mdio_access: ee700000.ethernet-ffffffff read  phy:0x01 reg:0x00 val:0xffff
    
    According to the hardware manual, the RMII mode should be set to 1
    before operation the Ethernet MAC. However, the previous code was not
    set to 1 after the driver issued the soft_reset in sh_eth_dev_exit()
    so that the mdio read access result seemed incorrect. To fix the issue,
    this patch adds a condition and set the RMII mode register in
    sh_eth_dev_exit() for R-Car Gen2 and RZ/A1 SoCs.
    
    Note that when I have tried to move the sh_eth_dev_exit() calling
    after phy_stop() on sh_eth_close(), but it gets worse (kernel panic
    happened and it seems that a register is accessed while the clock is
    off).
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 467f902643f58052ee7613ac547eb5a95cf832a2
Author: Sami Tolvanen <samitolvanen@google.com>
Date:   Fri May 24 15:11:18 2019 -0700

    arm64: use the correct function type for __arm64_sys_ni_syscall
    
    [ Upstream commit 1e29ab3186e33c77dbb2d7566172a205b59fa390 ]
    
    Calling sys_ni_syscall through a syscall_fn_t pointer trips indirect
    call Control-Flow Integrity checking due to a function type
    mismatch. Use SYSCALL_DEFINE0 for __arm64_sys_ni_syscall instead and
    remove the now unnecessary casts.
    
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98fd62e0a15727a39dd62b41290b7bde8b41bcfe
Author: Sami Tolvanen <samitolvanen@google.com>
Date:   Fri May 24 15:11:17 2019 -0700

    arm64: use the correct function type in SYSCALL_DEFINE0
    
    [ Upstream commit 0e358bd7b7ebd27e491dabed938eae254c17fe3b ]
    
    Although a syscall defined using SYSCALL_DEFINE0 doesn't accept
    parameters, use the correct function type to avoid indirect call
    type mismatches with Control-Flow Integrity checking.
    
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c5fdfaedecc2382b1cb1bcfae790798d9ad14b85
Author: Sami Tolvanen <samitolvanen@google.com>
Date:   Fri May 24 15:11:16 2019 -0700

    arm64: fix syscall_fn_t type
    
    [ Upstream commit 8ef8f368ce72b5e17f7c1f1ef15c38dcfd0fef64 ]
    
    Syscall wrappers in <asm/syscall_wrapper.h> use const struct pt_regs *
    as the argument type. Use const in syscall_fn_t as well to fix indirect
    call type mismatches with Control-Flow Integrity checking.
    
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df6384e0f42ea8921a37b0e752502d01f59a93b2
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu May 23 16:36:32 2019 +1000

    KVM: PPC: Book3S HV: Don't take kvm->lock around kvm_for_each_vcpu
    
    [ Upstream commit 5a3f49364c3ffa1107bd88f8292406e98c5d206c ]
    
    Currently the HV KVM code takes the kvm->lock around calls to
    kvm_for_each_vcpu() and kvm_get_vcpu_by_id() (which can call
    kvm_for_each_vcpu() internally).  However, that leads to a lock
    order inversion problem, because these are called in contexts where
    the vcpu mutex is held, but the vcpu mutexes nest within kvm->lock
    according to Documentation/virtual/kvm/locking.txt.  Hence there
    is a possibility of deadlock.
    
    To fix this, we simply don't take the kvm->lock mutex around these
    calls.  This is safe because the implementations of kvm_for_each_vcpu()
    and kvm_get_vcpu_by_id() have been designed to be able to be called
    locklessly.
    
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Reviewed-by: Cédric Le Goater <clg@kaod.org>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b376683f6ab16e1dc57800f69a63978a05ddff1f
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Wed May 29 11:54:00 2019 +1000

    KVM: PPC: Book3S: Use new mutex to synchronize access to rtas token list
    
    [ Upstream commit 1659e27d2bc1ef47b6d031abe01b467f18cb72d9 ]
    
    Currently the Book 3S KVM code uses kvm->lock to synchronize access
    to the kvm->arch.rtas_tokens list.  Because this list is scanned
    inside kvmppc_rtas_hcall(), which is called with the vcpu mutex held,
    taking kvm->lock cause a lock inversion problem, which could lead to
    a deadlock.
    
    To fix this, we add a new mutex, kvm->arch.rtas_token_lock, which nests
    inside the vcpu mutexes, and use that instead of kvm->lock when
    accessing the rtas token list.
    
    This removes the lockdep_assert_held() in kvmppc_rtas_tokens_free().
    At this point we don't hold the new mutex, but that is OK because
    kvmppc_rtas_tokens_free() is only called when the whole VM is being
    destroyed, and at that point nothing can be looking up a token in
    the list.
    
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4acce744284ca813169d85773b21a677457ce416
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon May 13 14:56:35 2019 +0100

    xenbus: Avoid deadlock during suspend due to open transactions
    
    [ Upstream commit d10e0cc113c9e1b64b5c6e3db37b5c839794f3df ]
    
    During a suspend/resume, the xenwatch thread waits for all outstanding
    xenstore requests and transactions to complete. This does not work
    correctly for transactions started by userspace because it waits for
    them to complete after freezing userspace threads which means the
    transactions have no way of completing, resulting in a deadlock. This is
    trivial to reproduce by running this script and then suspending the VM:
    
        import pyxs, time
        c = pyxs.client.Client(xen_bus_path="/dev/xen/xenbus")
        c.connect()
        c.transaction()
        time.sleep(3600)
    
    Even if this deadlock were resolved, misbehaving userspace should not
    prevent a VM from being migrated. So, instead of waiting for these
    transactions to complete before suspending, store the current generation
    id for each transaction when it is started. The global generation id is
    incremented during resume. If the caller commits the transaction and the
    generation id does not match the current generation id, return EAGAIN so
    that they try again. If the transaction was instead discarded, return OK
    since no changes were made anyway.
    
    This only affects users of the xenbus file interface. In-kernel users of
    xenbus are assumed to be well-behaved and complete all transactions
    before freezing.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66f33b2bd2d86a75e10f401f3caeecd439257e17
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat May 25 22:21:51 2019 +0800

    xen/pvcalls: Remove set but not used variable
    
    [ Upstream commit 41349672e3cbc2e8349831f21253509c3415aa2b ]
    
    Fixes gcc '-Wunused-but-set-variable' warning:
    
    drivers/xen/pvcalls-front.c: In function pvcalls_front_sendmsg:
    drivers/xen/pvcalls-front.c:543:25: warning: variable bedata set but not used [-Wunused-but-set-variable]
    drivers/xen/pvcalls-front.c: In function pvcalls_front_recvmsg:
    drivers/xen/pvcalls-front.c:638:25: warning: variable bedata set but not used [-Wunused-but-set-variable]
    
    They are never used since introduction.
    
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d92ebe0c1d26292d3f104a3507662ff1b57291de
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue May 28 09:14:30 2019 -0700

    ia64: fix build errors by exporting paddr_to_nid()
    
    [ Upstream commit 9a626c4a6326da4433a0d4d4a8a7d1571caf1ed3 ]
    
    Fix build errors on ia64 when DISCONTIGMEM=y and NUMA=y by
    exporting paddr_to_nid().
    
    Fixes these build errors:
    
    ERROR: "paddr_to_nid" [sound/core/snd-pcm.ko] undefined!
    ERROR: "paddr_to_nid" [net/sunrpc/sunrpc.ko] undefined!
    ERROR: "paddr_to_nid" [fs/cifs/cifs.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/video/fbdev/core/fb.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/usb/mon/usbmon.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/usb/core/usbcore.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/md/raid1.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/md/dm-mod.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/md/dm-crypt.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/md/dm-bufio.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/ide/ide-core.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/ide/ide-cd_mod.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/gpu/drm/drm.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/char/agp/agpgart.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/block/nbd.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/block/loop.ko] undefined!
    ERROR: "paddr_to_nid" [drivers/block/brd.ko] undefined!
    ERROR: "paddr_to_nid" [crypto/ccm.ko] undefined!
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: linux-ia64@vger.kernel.org
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60a3e3b9e5ec5c9405780b9d1bc0b18df59c67de
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Wed May 22 16:46:01 2019 +0200

    perf record: Fix s390 missing module symbol and warning for non-root users
    
    [ Upstream commit 6738028dd57df064b969d8392c943ef3b3ae705d ]
    
    Command 'perf record' and 'perf report' on a system without kernel
    debuginfo packages uses /proc/kallsyms and /proc/modules to find
    addresses for kernel and module symbols. On x86 this works for root and
    non-root users.
    
    On s390, when invoked as non-root user, many of the following warnings
    are shown and module symbols are missing:
    
        proc/{kallsyms,modules} inconsistency while looking for
            "[sha1_s390]" module!
    
    Command 'perf record' creates a list of module start addresses by
    parsing the output of /proc/modules and creates a PERF_RECORD_MMAP
    record for the kernel and each module. The following function call
    sequence is executed:
    
      machine__create_kernel_maps
        machine__create_module
          modules__parse
            machine__create_module --> for each line in /proc/modules
              arch__fix_module_text_start
    
    Function arch__fix_module_text_start() is s390 specific. It opens
    file /sys/module/<name>/sections/.text to extract the module's .text
    section start address. On s390 the module loader prepends a header
    before the first section, whereas on x86 the module's text section
    address is identical the the module's load address.
    
    However module section files are root readable only. For non-root the
    read operation fails and machine__create_module() returns an error.
    Command perf record does not generate any PERF_RECORD_MMAP record
    for loaded modules. Later command perf report complains about missing
    module maps.
    
    To fix this function arch__fix_module_text_start() always returns
    success. For root users there is no change, for non-root users
    the module's load address is used as module's text start address
    (the prepended header then counts as part of the text section).
    
    This enable non-root users to use module symbols and avoid the
    warning when perf report is executed.
    
    Output before:
    
      [tmricht@m83lp54 perf]$ ./perf report -D | fgrep MMAP
      0 0x168 [0x50]: PERF_RECORD_MMAP ... x [kernel.kallsyms]_text
    
    Output after:
    
      [tmricht@m83lp54 perf]$ ./perf report -D | fgrep MMAP
      0 0x168 [0x50]: PERF_RECORD_MMAP ... x [kernel.kallsyms]_text
      0 0x1b8 [0x98]: PERF_RECORD_MMAP ... x /lib/modules/.../autofs4.ko.xz
      0 0x250 [0xa8]: PERF_RECORD_MMAP ... x /lib/modules/.../sha_common.ko.xz
      0 0x2f8 [0x98]: PERF_RECORD_MMAP ... x /lib/modules/.../des_generic.ko.xz
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Link: http://lkml.kernel.org/r/20190522144601.50763-4-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be0e62666da159dcbabe61c90e1056f2b964046f
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Wed May 22 14:32:48 2019 +0900

    perf namespace: Protect reading thread's namespace
    
    [ Upstream commit 6584140ba9e6762dd7ec73795243289b914f31f9 ]
    
    It seems that the current code lacks holding the namespace lock in
    thread__namespaces().  Otherwise it can see inconsistent results.
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Hari Bathini <hbathini@linux.vnet.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Krister Johansen <kjlx@templeofstupid.com>
    Link: http://lkml.kernel.org/r/20190522053250.207156-2-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d523e33f4b6fce626577075d188419081bef2b0
Author: Shawn Landden <shawn@git.icu>
Date:   Sat May 18 15:32:38 2019 -0300

    perf data: Fix 'strncat may truncate' build failure with recent gcc
    
    [ Upstream commit 97acec7df172cd1e450f81f5e293c0aa145a2797 ]
    
    This strncat() is safe because the buffer was allocated with zalloc(),
    however gcc doesn't know that. Since the string always has 4 non-null
    bytes, just use memcpy() here.
    
        CC       /home/shawn/linux/tools/perf/util/data-convert-bt.o
      In file included from /usr/include/string.h:494,
                       from /home/shawn/linux/tools/lib/traceevent/event-parse.h:27,
                       from util/data-convert-bt.c:22:
      In function ‘strncat’,
          inlined from ‘string_set_value’ at util/data-convert-bt.c:274:4:
      /usr/include/powerpc64le-linux-gnu/bits/string_fortified.h:136:10: error: ‘__builtin_strncat’ output may be truncated copying 4 bytes from a string of length 4 [-Werror=stringop-truncation]
        136 |   return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Shawn Landden <shawn@git.icu>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    LPU-Reference: 20190518183238.10954-1-shawn@git.icu
    Link: https://lkml.kernel.org/n/tip-289f1jice17ta7tr3tstm9jm@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9fcebe018226e0dc2af391ec291f1701d9b2ff1
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Thu Jan 3 16:48:15 2019 +0530

    configfs: Fix use-after-free when accessing sd->s_dentry
    
    [ Upstream commit f6122ed2a4f9c9c1c073ddf6308d1b2ac10e0781 ]
    
    In the vfs_statx() context, during path lookup, the dentry gets
    added to sd->s_dentry via configfs_attach_attr(). In the end,
    vfs_statx() kills the dentry by calling path_put(), which invokes
    configfs_d_iput(). Ideally, this dentry must be removed from
    sd->s_dentry but it doesn't if the sd->s_count >= 3. As a result,
    sd->s_dentry is holding reference to a stale dentry pointer whose
    memory is already freed up. This results in use-after-free issue,
    when this stale sd->s_dentry is accessed later in
    configfs_readdir() path.
    
    This issue can be easily reproduced, by running the LTP test case -
    sh fs_racer_file_list.sh /config
    (https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/fs/racer/fs_racer_file_list.sh)
    
    Fixes: 76ae281f6307 ('configfs: fix race between dentry put and lookup')
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab7a3d9accae250b335ea3cfe32ae0f47eb64407
Author: Bard Liao <yung-chuan.liao@linux.intel.com>
Date:   Mon May 27 00:58:32 2019 +0800

    ALSA: hda - Force polling mode on CNL for fixing codec communication
    
    [ Upstream commit fa763f1b2858752e6150ffff46886a1b7faffc82 ]
    
    We observed the same issue as reported by commit a8d7bde23e7130686b7662
    ("ALSA: hda - Force polling mode on CFL for fixing codec communication")
    We don't have a better solution. So apply the same workaround to CNL.
    
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7bea5618eaf9fbff3fa9a75989995042cf4cce21
Author: Yingjoe Chen <yingjoe.chen@mediatek.com>
Date:   Tue May 7 22:20:32 2019 +0800

    i2c: dev: fix potential memory leak in i2cdev_ioctl_rdwr
    
    [ Upstream commit a0692f0eef91354b62c2b4c94954536536be5425 ]
    
    If I2C_M_RECV_LEN check failed, msgs[i].buf allocated by memdup_user
    will not be freed. Pump index up so it will be freed.
    
    Fixes: 838bfa6049fb ("i2c-dev: Add support for I2C_M_RECV_LEN")
    Signed-off-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 197501af7ff30afc6362f0ed0be9a6bc248e74ca
Author: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Date:   Sat May 25 09:58:03 2019 +0000

    net: aquantia: fix LRO with FCS error
    
    [ Upstream commit eaeb3b7494ba9159323814a8ce8af06a9277d99b ]
    
    Driver stops producing skbs on ring if a packet with FCS error
    was coalesced into LRO session. Ring gets hang forever.
    
    Thats a logical error in driver processing descriptors:
    When rx_stat indicates MAC Error, next pointer and eop flags
    are not filled. This confuses driver so it waits for descriptor 0
    to be filled by HW.
    
    Solution is fill next pointer and eop flag even for packets with FCS error.
    
    Fixes: bab6de8fd180b ("net: ethernet: aquantia: Atlantic A0 and B0 specific functions.")
    Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
    Signed-off-by: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 388534d45f04058f19f6f673226b82413bb4c133
Author: Igor Russkikh <Igor.Russkikh@aquantia.com>
Date:   Sat May 25 09:57:59 2019 +0000

    net: aquantia: tx clean budget logic error
    
    [ Upstream commit 31bafc49a7736989e4c2d9f7280002c66536e590 ]
    
    In case no other traffic happening on the ring, full tx cleanup
    may not be completed. That may cause socket buffer to overflow
    and tx traffic to stuck until next activity on the ring happens.
    
    This is due to logic error in budget variable decrementor.
    Variable is compared with zero, and then post decremented,
    causing it to become MAX_INT. Solution is remove decrementor
    from the `for` statement and rewrite it in a clear way.
    
    Fixes: b647d3980948e ("net: aquantia: Add tx clean budget and valid budget handling logic")
    Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7ca3f331d5777f0a997e4d3b58ca9248a263705
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Tue May 21 14:53:40 2019 +0200

    drm/etnaviv: lock MMU while dumping core
    
    [ Upstream commit 1396500d673bd027683a0609ff84dca7eb6ea2e7 ]
    
    The devcoredump needs to operate on a stable state of the MMU while
    it is writing the MMU state to the coredump. The missing lock
    allowed both the userspace submit, as well as the GPU job finish
    paths to mutate the MMU state while a coredump is under way.
    
    Fixes: a8c21a5451d8 (drm/etnaviv: add initial etnaviv DRM driver)
    Reported-by: David Jander <david@protonic.nl>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Tested-by: David Jander <david@protonic.nl>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee61fb4de955dc798513abe988e3c8cb8cf4479a
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu May 16 12:42:20 2019 +0200

    ACPI/PCI: PM: Add missing wakeup.flags.valid checks
    
    [ Upstream commit 9a51c6b1f9e0239a9435db036b212498a2a3b75c ]
    
    Both acpi_pci_need_resume() and acpi_dev_needs_resume() check if the
    current ACPI wakeup configuration of the device matches what is
    expected as far as system wakeup from sleep states is concerned, as
    reflected by the device_may_wakeup() return value for the device.
    
    However, they only should do that if wakeup.flags.valid is set for
    the device's ACPI companion, because otherwise the wakeup.prepare_count
    value for it is meaningless.
    
    Add the missing wakeup.flags.valid checks to these functions.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc19b50b80ca166b2b62273e8f321fb339e015df
Author: Kees Cook <keescook@chromium.org>
Date:   Fri May 24 13:20:19 2019 -0700

    net: tulip: de4x5: Drop redundant MODULE_DEVICE_TABLE()
    
    [ Upstream commit 3e66b7cc50ef921121babc91487e1fb98af1ba6e ]
    
    Building with Clang reports the redundant use of MODULE_DEVICE_TABLE():
    
    drivers/net/ethernet/dec/tulip/de4x5.c:2110:1: error: redefinition of '__mod_eisa__de4x5_eisa_ids_device_table'
    MODULE_DEVICE_TABLE(eisa, de4x5_eisa_ids);
    ^
    ./include/linux/module.h:229:21: note: expanded from macro 'MODULE_DEVICE_TABLE'
    extern typeof(name) __mod_##type##__##name##_device_table               \
                        ^
    <scratch space>:90:1: note: expanded from here
    __mod_eisa__de4x5_eisa_ids_device_table
    ^
    drivers/net/ethernet/dec/tulip/de4x5.c:2100:1: note: previous definition is here
    MODULE_DEVICE_TABLE(eisa, de4x5_eisa_ids);
    ^
    ./include/linux/module.h:229:21: note: expanded from macro 'MODULE_DEVICE_TABLE'
    extern typeof(name) __mod_##type##__##name##_device_table               \
                        ^
    <scratch space>:85:1: note: expanded from here
    __mod_eisa__de4x5_eisa_ids_device_table
    ^
    
    This drops the one further from the table definition to match the common
    use of MODULE_DEVICE_TABLE().
    
    Fixes: 07563c711fbc ("EISA bus MODALIAS attributes support")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a3208b66cc1af8b1b7f54a8cbc9f758a682eb88
Author: Biao Huang <biao.huang@mediatek.com>
Date:   Fri May 24 14:26:07 2019 +0800

    net: stmmac: update rx tail pointer register to fix rx dma hang issue.
    
    [ Upstream commit 4523a5611526709ec9b4e2574f1bb7818212651e ]
    
    Currently we will not update the receive descriptor tail pointer in
    stmmac_rx_refill. Rx dma will think no available descriptors and stop
    once received packets exceed DMA_RX_SIZE, so that the rx only test will fail.
    
    Update the receive tail pointer in stmmac_rx_refill to add more descriptors
    to the rx channel, so packets can be received continually
    
    Fixes: 54139cf3bb33 ("net: stmmac: adding multiple buffers for rx")
    Signed-off-by: Biao Huang <biao.huang@mediatek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3fbcef3350ab6a3ad8503da2c7f5b1ac777dfe80
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Thu May 23 15:00:41 2019 -0700

    gpio: fix gpio-adp5588 build errors
    
    [ Upstream commit e9646f0f5bb62b7d43f0968f39d536cfe7123b53 ]
    
    The gpio-adp5588 driver uses interfaces that are provided by
    GPIOLIB_IRQCHIP, so select that symbol in its Kconfig entry.
    
    Fixes these build errors:
    
    ../drivers/gpio/gpio-adp5588.c: In function ‘adp5588_irq_handler’:
    ../drivers/gpio/gpio-adp5588.c:266:26: error: ‘struct gpio_chip’ has no member named ‘irq’
                dev->gpio_chip.irq.domain, gpio));
                              ^
    ../drivers/gpio/gpio-adp5588.c: In function ‘adp5588_irq_setup’:
    ../drivers/gpio/gpio-adp5588.c:298:2: error: implicit declaration of function ‘gpiochip_irqchip_add_nested’ [-Werror=implicit-function-declaration]
      ret = gpiochip_irqchip_add_nested(&dev->gpio_chip,
      ^
    ../drivers/gpio/gpio-adp5588.c:307:2: error: implicit declaration of function ‘gpiochip_set_nested_irqchip’ [-Werror=implicit-function-declaration]
      gpiochip_set_nested_irqchip(&dev->gpio_chip,
      ^
    
    Fixes: 459773ae8dbb ("gpio: adp5588-gpio: support interrupt controller")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: linux-gpio@vger.kernel.org
    Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 991ea848a5c944802263d97dfb5c57fd8a0ad0de
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri May 17 13:52:33 2019 +0200

    perf/ring-buffer: Always use {READ,WRITE}_ONCE() for rb->user_page data
    
    [ Upstream commit 4d839dd9e4356bbacf3eb0ab13a549b83b008c21 ]
    
    We must use {READ,WRITE}_ONCE() on rb->user_page data such that
    concurrent usage will see whole values. A few key sites were missing
    this.
    
    Suggested-by: Yabin Cui <yabinc@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: mark.rutland@arm.com
    Cc: namhyung@kernel.org
    Fixes: 7b732a750477 ("perf_counter: new output ABI - part 1")
    Link: http://lkml.kernel.org/r/20190517115418.394192145@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c133c9db233d12b83d405d285b9d95a60b747fa6
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri May 17 13:52:32 2019 +0200

    perf/ring_buffer: Add ordering to rb->nest increment
    
    [ Upstream commit 3f9fbe9bd86c534eba2faf5d840fd44c6049f50e ]
    
    Similar to how decrementing rb->next too early can cause data_head to
    (temporarily) be observed to go backward, so too can this happen when
    we increment too late.
    
    This barrier() ensures the rb->head load happens after the increment,
    both the one in the 'goto again' path, as the one from
    perf_output_get_handle() -- albeit very unlikely to matter for the
    latter.
    
    Suggested-by: Yabin Cui <yabinc@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: mark.rutland@arm.com
    Cc: namhyung@kernel.org
    Fixes: ef60777c9abd ("perf: Optimize the perf_output() path by removing IRQ-disables")
    Link: http://lkml.kernel.org/r/20190517115418.309516009@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cca19ab29a1a52ebd37e68923ad3e409a0001c07
Author: Yabin Cui <yabinc@google.com>
Date:   Fri May 17 13:52:31 2019 +0200

    perf/ring_buffer: Fix exposing a temporarily decreased data_head
    
    [ Upstream commit 1b038c6e05ff70a1e66e3e571c2e6106bdb75f53 ]
    
    In perf_output_put_handle(), an IRQ/NMI can happen in below location and
    write records to the same ring buffer:
    
            ...
            local_dec_and_test(&rb->nest)
            ...                          <-- an IRQ/NMI can happen here
            rb->user_page->data_head = head;
            ...
    
    In this case, a value A is written to data_head in the IRQ, then a value
    B is written to data_head after the IRQ. And A > B. As a result,
    data_head is temporarily decreased from A to B. And a reader may see
    data_head < data_tail if it read the buffer frequently enough, which
    creates unexpected behaviors.
    
    This can be fixed by moving dec(&rb->nest) to after updating data_head,
    which prevents the IRQ/NMI above from updating data_head.
    
    [ Split up by peterz. ]
    
    Signed-off-by: Yabin Cui <yabinc@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.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: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: mark.rutland@arm.com
    Fixes: ef60777c9abd ("perf: Optimize the perf_output() path by removing IRQ-disables")
    Link: http://lkml.kernel.org/r/20190517115418.224478157@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a35e78220a9f7983e91676036ce9a42c362b73a4
Author: Frank van der Linden <fllinden@amazon.com>
Date:   Wed May 22 22:17:45 2019 +0000

    x86/CPU/AMD: Don't force the CPB cap when running under a hypervisor
    
    [ Upstream commit 2ac44ab608705948564791ce1d15d43ba81a1e38 ]
    
    For F17h AMD CPUs, the CPB capability ('Core Performance Boost') is forcibly set,
    because some versions of that chip incorrectly report that they do not have it.
    
    However, a hypervisor may filter out the CPB capability, for good
    reasons. For example, KVM currently does not emulate setting the CPB
    bit in MSR_K7_HWCR, and unchecked MSR access errors will be thrown
    when trying to set it as a guest:
    
            unchecked MSR access error: WRMSR to 0xc0010015 (tried to write 0x0000000001000011) at rIP: 0xffffffff890638f4 (native_write_msr+0x4/0x20)
    
            Call Trace:
            boost_set_msr+0x50/0x80 [acpi_cpufreq]
            cpuhp_invoke_callback+0x86/0x560
            sort_range+0x20/0x20
            cpuhp_thread_fun+0xb0/0x110
            smpboot_thread_fn+0xef/0x160
            kthread+0x113/0x130
            kthread_create_worker_on_cpu+0x70/0x70
            ret_from_fork+0x35/0x40
    
    To avoid this issue, don't forcibly set the CPB capability for a CPU
    when running under a hypervisor.
    
    Signed-off-by: Frank van der Linden <fllinden@amazon.com>
    Acked-by: Borislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: jiaxun.yang@flygoat.com
    Fixes: 0237199186e7 ("x86/CPU/AMD: Set the CPB bit unconditionally on F17h")
    Link: http://lkml.kernel.org/r/20190522221745.GA15789@dev-dsk-fllinden-2c-c1893d73.us-west-2.amazon.com
    [ Minor edits to the changelog. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e5666cdb36b4d7ab427e537fc370b33ddd11714
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed May 22 11:45:13 2019 +0300

    mISDN: make sure device name is NUL terminated
    
    [ Upstream commit ccfb62f27beb295103e9392462b20a6ed807d0ea ]
    
    The user can change the device_name with the IMSETDEVNAME ioctl, but we
    need to ensure that the user's name is NUL terminated.  Otherwise it
    could result in a buffer overflow when we copy the name back to the user
    with IMGETDEVINFO ioctl.
    
    I also changed two strcpy() calls which handle the name to strscpy().
    Hopefully, there aren't any other ways to create a too long name, but
    it's nice to do this as a kernel hardening measure.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3885eecd2530cb731ea7e13fbb19aa99d10c32b
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Wed May 22 14:33:58 2019 +0300

    usb: xhci: Fix a potential null pointer dereference in xhci_debugfs_create_endpoint()
    
    [ Upstream commit 5bce256f0b528624a34fe907db385133bb7be33e ]
    
    In xhci_debugfs_create_slot(), kzalloc() can fail and
    dev->debugfs_private will be NULL.
    In xhci_debugfs_create_endpoint(), dev->debugfs_private is used without
    any null-pointer check, and can cause a null pointer dereference.
    
    To fix this bug, a null-pointer check is added in
    xhci_debugfs_create_endpoint().
    
    This bug is found by a runtime fuzzing tool named FIZZER written by us.
    
    [subjet line change change, add potential -Mathais]
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 930d31a6f34401ff47e11755e9e3ef55cbfcffe9
Author: Anju T Sudhakar <anju@linux.vnet.ibm.com>
Date:   Mon May 20 14:27:53 2019 +0530

    powerpc/powernv: Return for invalid IMC domain
    
    [ Upstream commit b59bd3527fe3c1939340df558d7f9d568fc9f882 ]
    
    Currently init_imc_pmu() can fail either because we try to register an
    IMC unit with an invalid domain (i.e an IMC node not supported by the
    kernel) or something went wrong while registering a valid IMC unit. In
    both the cases kernel provides a 'Register failed' error message.
    
    For example when trace-imc node is not supported by the kernel, but
    skiboot advertises a trace-imc node we print:
    
      IMC Unknown Device type
      IMC PMU (null) Register failed
    
    To avoid confusion just print the unknown device type message, before
    attempting PMU registration, so the second message isn't printed.
    
    Fixes: 8f95faaac56c ("powerpc/powernv: Detect and create IMC device")
    Reported-by: Pavaman Subramaniyam <pavsubra@in.ibm.com>
    Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
    Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    [mpe: Reword change log a bit]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00ed897d618ef0777ca126f8698dff6bf08f7979
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon May 6 14:08:54 2019 -0700

    clk: ti: clkctrl: Fix clkdm_clk handling
    
    [ Upstream commit 1cc54078d104f5b4d7e9f8d55362efa5a8daffdb ]
    
    We need to always call clkdm_clk_enable() and clkdm_clk_disable() even
    the clkctrl clock(s) enabled for the domain do not have any gate register
    bits. Otherwise clockdomains may never get enabled except when devices get
    probed with the legacy "ti,hwmods" devicetree property.
    
    Fixes: 88a172526c32 ("clk: ti: add support for clkctrl clocks")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef4ffa0f0b677e090a4176b19599922af20a43fa
Author: Jeffrin Jose T <jeffrin@rajagiritech.edu.in>
Date:   Wed May 15 12:14:04 2019 +0530

    selftests: netfilter: missing error check when setting up veth interface
    
    [ Upstream commit 82ce6eb1dd13fd12e449b2ee2c2ec051e6f52c43 ]
    
    A test for the basic NAT functionality uses ip command which needs veth
    device. There is a condition where the kernel support for veth is not
    compiled into the kernel and the test script breaks. This patch contains
    code for reasonable error display and correct code exit.
    
    Signed-off-by: Jeffrin Jose T <jeffrin@rajagiritech.edu.in>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61c83de6e622cb89c5c85721893c30a7c7cd6e76
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri May 17 22:31:49 2019 +0800

    ipvs: Fix use-after-free in ip_vs_in
    
    [ Upstream commit 719c7d563c17b150877cee03a4b812a424989dfa ]
    
    BUG: KASAN: use-after-free in ip_vs_in.part.29+0xe8/0xd20 [ip_vs]
    Read of size 4 at addr ffff8881e9b26e2c by task sshd/5603
    
    CPU: 0 PID: 5603 Comm: sshd Not tainted 4.19.39+ #30
    Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    Call Trace:
     dump_stack+0x71/0xab
     print_address_description+0x6a/0x270
     kasan_report+0x179/0x2c0
     ip_vs_in.part.29+0xe8/0xd20 [ip_vs]
     ip_vs_in+0xd8/0x170 [ip_vs]
     nf_hook_slow+0x5f/0xe0
     __ip_local_out+0x1d5/0x250
     ip_local_out+0x19/0x60
     __tcp_transmit_skb+0xba1/0x14f0
     tcp_write_xmit+0x41f/0x1ed0
     ? _copy_from_iter_full+0xca/0x340
     __tcp_push_pending_frames+0x52/0x140
     tcp_sendmsg_locked+0x787/0x1600
     ? tcp_sendpage+0x60/0x60
     ? inet_sk_set_state+0xb0/0xb0
     tcp_sendmsg+0x27/0x40
     sock_sendmsg+0x6d/0x80
     sock_write_iter+0x121/0x1c0
     ? sock_sendmsg+0x80/0x80
     __vfs_write+0x23e/0x370
     vfs_write+0xe7/0x230
     ksys_write+0xa1/0x120
     ? __ia32_sys_read+0x50/0x50
     ? __audit_syscall_exit+0x3ce/0x450
     do_syscall_64+0x73/0x200
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x7ff6f6147c60
    Code: 73 01 c3 48 8b 0d 28 12 2d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 5d 73 2d 00 00 75 10 b8 01 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83
    RSP: 002b:00007ffd772ead18 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000034 RCX: 00007ff6f6147c60
    RDX: 0000000000000034 RSI: 000055df30a31270 RDI: 0000000000000003
    RBP: 000055df30a31270 R08: 0000000000000000 R09: 0000000000000000
    R10: 00007ffd772ead70 R11: 0000000000000246 R12: 00007ffd772ead74
    R13: 00007ffd772eae20 R14: 00007ffd772eae24 R15: 000055df2f12ddc0
    
    Allocated by task 6052:
     kasan_kmalloc+0xa0/0xd0
     __kmalloc+0x10a/0x220
     ops_init+0x97/0x190
     register_pernet_operations+0x1ac/0x360
     register_pernet_subsys+0x24/0x40
     0xffffffffc0ea016d
     do_one_initcall+0x8b/0x253
     do_init_module+0xe3/0x335
     load_module+0x2fc0/0x3890
     __do_sys_finit_module+0x192/0x1c0
     do_syscall_64+0x73/0x200
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 6067:
     __kasan_slab_free+0x130/0x180
     kfree+0x90/0x1a0
     ops_free_list.part.7+0xa6/0xc0
     unregister_pernet_operations+0x18b/0x1f0
     unregister_pernet_subsys+0x1d/0x30
     ip_vs_cleanup+0x1d/0xd2f [ip_vs]
     __x64_sys_delete_module+0x20c/0x300
     do_syscall_64+0x73/0x200
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The buggy address belongs to the object at ffff8881e9b26600 which belongs to the cache kmalloc-4096 of size 4096
    The buggy address is located 2092 bytes inside of 4096-byte region [ffff8881e9b26600, ffff8881e9b27600)
    The buggy address belongs to the page:
    page:ffffea0007a6c800 count:1 mapcount:0 mapping:ffff888107c0e600 index:0x0 compound_mapcount: 0
    flags: 0x17ffffc0008100(slab|head)
    raw: 0017ffffc0008100 dead000000000100 dead000000000200 ffff888107c0e600
    raw: 0000000000000000 0000000080070007 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    while unregistering ipvs module, ops_free_list calls
    __ip_vs_cleanup, then nf_unregister_net_hooks be called to
    do remove nf hook entries. It need a RCU period to finish,
    however net->ipvs is set to NULL immediately, which will
    trigger NULL pointer dereference when a packet is hooked
    and handled by ip_vs_in where net->ipvs is dereferenced.
    
    Another scene is ops_free_list call ops_free to free the
    net_generic directly while __ip_vs_cleanup finished, then
    calling ip_vs_in will triggers use-after-free.
    
    This patch moves nf_unregister_net_hooks from __ip_vs_cleanup()
    to __ip_vs_dev_cleanup(),  where rcu_barrier() is called by
    unregister_pernet_device -> unregister_pernet_operations,
    that will do the needed grace period.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: efe41606184e ("ipvs: convert to use pernet nf_hook api")
    Suggested-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 883ce78cded53ead6bfda4340d5406726a6322fe
Author: Jagdish Motwani <jagdish.motwani@sophos.com>
Date:   Mon May 13 23:47:40 2019 +0530

    netfilter: nf_queue: fix reinject verdict handling
    
    [ Upstream commit 946c0d8e6ed43dae6527e878d0077c1e11015db0 ]
    
    This patch fixes netfilter hook traversal when there are more than 1 hooks
    returning NF_QUEUE verdict. When the first queue reinjects the packet,
    'nf_reinject' starts traversing hooks with a proper hook_index. However,
    if it again receives a NF_QUEUE verdict (by some other netfilter hook), it
    queues the packet with a wrong hook_index. So, when the second queue
    reinjects the packet, it re-executes hooks in between.
    
    Fixes: 960632ece694 ("netfilter: convert hook list to an array")
    Signed-off-by: Jagdish Motwani <jagdish.motwani@sophos.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a9c29cc21406cf782c31d7a59e61393ef704f47
Author: Stephane Eranian <eranian@google.com>
Date:   Mon May 20 17:52:46 2019 -0700

    perf/x86/intel/ds: Fix EVENT vs. UEVENT PEBS constraints
    
    [ Upstream commit 23e3983a466cd540ffdd2bbc6e0c51e31934f941 ]
    
    This patch fixes an bug revealed by the following commit:
    
      6b89d4c1ae85 ("perf/x86/intel: Fix INTEL_FLAGS_EVENT_CONSTRAINT* masking")
    
    That patch modified INTEL_FLAGS_EVENT_CONSTRAINT() to only look at the event code
    when matching a constraint. If code+umask were needed, then the
    INTEL_FLAGS_UEVENT_CONSTRAINT() macro was needed instead.
    This broke with some of the constraints for PEBS events.
    
    Several of them, including the one used for cycles:p, cycles:pp, cycles:ppp
    fell in that category and caused the event to be rejected in PEBS mode.
    In other words, on some platforms a cmdline such as:
    
      $ perf top -e cycles:pp
    
    would fail with -EINVAL.
    
    This patch fixes this bug by properly using INTEL_FLAGS_UEVENT_CONSTRAINT()
    when needed in the PEBS constraint tables.
    
    Reported-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: kan.liang@intel.com
    Link: http://lkml.kernel.org/r/20190521005246.423-1-eranian@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd9b6de79b67a125fe354af67ee938e1450b9c70
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon May 13 14:07:18 2019 +0300

    Staging: vc04_services: Fix a couple error codes
    
    [ Upstream commit ca4e4efbefbbdde0a7bb3023ea08d491f4daf9b9 ]
    
    These are accidentally returning positive EINVAL instead of negative
    -EINVAL.  Some of the callers treat positive values as success.
    
    Fixes: 7b3ad5abf027 ("staging: Import the BCM2835 MMAL-based V4L2 camera driver.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97605ba68790ff94358a50bc33f27b85431e5e67
Author: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date:   Tue Jun 11 11:51:43 2019 +0200

    net: mvpp2: prs: Use the correct helpers when removing all VID filters
    
    [ Upstream commit 6b7a3430c163455cf8a514d636bda52b04654972 ]
    
    When removing all VID filters, the mvpp2_prs_vid_entry_remove would be
    called with the TCAM id incorrectly used as a VID, causing the wrong
    TCAM entries to be invalidated.
    
    Fix this by directly invalidating entries in the VID range.
    
    Fixes: 56beda3db602 ("net: mvpp2: Add hardware offloading for VLAN filtering")
    Suggested-by: Yuri Chipchev <yuric@marvell.com>
    Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6a1eabf72a01228543462d3961fc3e298832318
Author: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date:   Tue Jun 11 11:51:42 2019 +0200

    net: mvpp2: prs: Fix parser range for VID filtering
    
    [ Upstream commit 46b0090a6636cf34c0e856f15dd03e15ba4cdda6 ]
    
    VID filtering is implemented in the Header Parser, with one range of 11
    vids being assigned for each no-loopback port.
    
    Make sure we use the per-port range when looking for existing entries in
    the Parser.
    
    Since we used a global range instead of a per-port one, this causes VIDs
    to be removed from the whitelist from all ports of the same PPv2
    instance.
    
    Fixes: 56beda3db602 ("net: mvpp2: Add hardware offloading for VLAN filtering")
    Suggested-by: Yuri Chipchev <yuric@marvell.com>
    Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4642a659ab96c4694eca37a080b9709a649cef36
Author: Alaa Hleihel <alaa@mellanox.com>
Date:   Sun May 19 11:11:49 2019 +0300

    net/mlx5: Avoid reloading already removed devices
    
    Prior to reloading a device we must first verify that it was not already
    removed. Otherwise, the attempt to remove the device will do nothing, and
    in that case we will end up proceeding with adding an new device that no
    one was expecting to remove, leaving behind used resources such as EQs that
    causes a failure to destroy comp EQs and syndrome (0x30f433).
    
    Fix that by making sure that we try to remove and add a device (based on a
    protocol) only if the device is already added.
    
    Fixes: c5447c70594b ("net/mlx5: E-Switch, Reload IB interface when switching devlink modes")
    Signed-off-by: Alaa Hleihel <alaa@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b201b63b6470ec86152ae554cfda33839220057
Author: Stephen Barber <smbarber@chromium.org>
Date:   Fri Jun 14 23:42:37 2019 -0700

    vsock/virtio: set SOCK_DONE on peer shutdown
    
    [ Upstream commit 42f5cda5eaf4396a939ae9bb43bb8d1d09c1b15c ]
    
    Set the SOCK_DONE flag to match the TCP_CLOSING state when a peer has
    shut down and there is nothing left to read.
    
    This fixes the following bug:
    1) Peer sends SHUTDOWN(RDWR).
    2) Socket enters TCP_CLOSING but SOCK_DONE is not set.
    3) read() returns -ENOTCONN until close() is called, then returns 0.
    
    Signed-off-by: Stephen Barber <smbarber@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b86a5ccda5c305dcbb75b7dcb2249b1234832466
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Jun 16 17:24:07 2019 +0800

    tipc: purge deferredq list for each grp member in tipc_group_delete
    
    [ Upstream commit 5cf02612b33f104fe1015b2dfaf1758ad3675588 ]
    
    Syzbot reported a memleak caused by grp members' deferredq list not
    purged when the grp is be deleted.
    
    The issue occurs when more(msg_grp_bc_seqno(hdr), m->bc_rcv_nxt) in
    tipc_group_filter_msg() and the skb will stay in deferredq.
    
    So fix it by calling __skb_queue_purge for each member's deferredq
    in tipc_group_delete() when a tipc sk leaves the grp.
    
    Fixes: b87a5ea31c93 ("tipc: guarantee group unicast doesn't bypass group broadcast")
    Reported-by: syzbot+78fbe679c8ca8d264a8d@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1b0c311b790dc5a89188014f915e6ad06e2e076
Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Date:   Tue Jun 11 17:38:37 2019 +0200

    sunhv: Fix device naming inconsistency between sunhv_console and sunhv_reg
    
    [ Upstream commit 07a6d63eb1b54b5fb38092780fe618dfe1d96e23 ]
    
    In d5a2aa24, the name in struct console sunhv_console was changed from "ttyS"
    to "ttyHV" while the name in struct uart_ops sunhv_pops remained unchanged.
    
    This results in the hypervisor console device to be listed as "ttyHV0" under
    /proc/consoles while the device node is still named "ttyS0":
    
    root@osaka:~# cat /proc/consoles
    ttyHV0               -W- (EC p  )    4:64
    tty0                 -WU (E     )    4:1
    root@osaka:~# readlink /sys/dev/char/4:64
    ../../devices/root/f02836f0/f0285690/tty/ttyS0
    root@osaka:~#
    
    This means that any userland code which tries to determine the name of the
    device file of the hypervisor console device can not rely on the information
    provided by /proc/consoles. In particular, booting current versions of debian-
    installer inside a SPARC LDOM will fail with the installer unable to determine
    the console device.
    
    After renaming the device in struct uart_ops sunhv_pops to "ttyHV" as well,
    the inconsistency is fixed and it is possible again to determine the name
    of the device file of the hypervisor console device by reading the contents
    of /proc/console:
    
    root@osaka:~# cat /proc/consoles
    ttyHV0               -W- (EC p  )    4:64
    tty0                 -WU (E     )    4:1
    root@osaka:~# readlink /sys/dev/char/4:64
    ../../devices/root/f02836f0/f0285690/tty/ttyHV0
    root@osaka:~#
    
    With this change, debian-installer works correctly when installing inside
    a SPARC LDOM.
    
    Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7fcb54ed2a94bc9eae14a1fa871e5a2bfdfbe3f
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Thu Jun 13 06:35:59 2019 -0400

    sctp: Free cookie before we memdup a new one
    
    [ Upstream commit ce950f1050cece5e406a5cde723c69bba60e1b26 ]
    
    Based on comments from Xin, even after fixes for our recent syzbot
    report of cookie memory leaks, its possible to get a resend of an INIT
    chunk which would lead to us leaking cookie memory.
    
    To ensure that we don't leak cookie memory, free any previously
    allocated cookie first.
    
    Change notes
    v1->v2
    update subsystem tag in subject (davem)
    repeat kfree check for peer_random and peer_hmacs (xin)
    
    v2->v3
    net->sctp
    also free peer_chunks
    
    v3->v4
    fix subject tags
    
    v4->v5
    remove cut line
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Reported-by: syzbot+f7e9153b037eac9b1df8@syzkaller.appspotmail.com
    CC: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    CC: Xin Long <lucien.xin@gmail.com>
    CC: "David S. Miller" <davem@davemloft.net>
    CC: netdev@vger.kernel.org
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb4ba362cc1ed3acb181a6d0b68c6de22be78e2
Author: Young Xiao <92siuyang@gmail.com>
Date:   Fri Jun 14 15:13:02 2019 +0800

    nfc: Ensure presence of required attributes in the deactivate_target handler
    
    [ Upstream commit 385097a3675749cbc9e97c085c0e5dfe4269ca51 ]
    
    Check that the NFC_ATTR_TARGET_INDEX attributes (in addition to
    NFC_ATTR_DEVICE_INDEX) are provided by the netlink client prior to
    accessing them. This prevents potential unhandled NULL pointer dereference
    exceptions which can be triggered by malicious user-mode programs,
    if they omit one or both of these attributes.
    
    Signed-off-by: Young Xiao <92siuyang@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7530c3f3d5b9035c445885f3f52b16533654e9dc
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Jun 9 23:26:21 2019 +0900

    net: openvswitch: do not free vport if register_netdevice() is failed.
    
    [ Upstream commit 309b66970ee2abf721ecd0876a48940fa0b99a35 ]
    
    In order to create an internal vport, internal_dev_create() is used and
    that calls register_netdevice() internally.
    If register_netdevice() fails, it calls dev->priv_destructor() to free
    private data of netdev. actually, a private data of this is a vport.
    
    Hence internal_dev_create() should not free and use a vport after failure
    of register_netdevice().
    
    Test command
        ovs-dpctl add-dp bonding_masters
    
    Splat looks like:
    [ 1035.667767] kasan: GPF could be caused by NULL-ptr deref or user memory access
    [ 1035.675958] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [ 1035.676916] CPU: 1 PID: 1028 Comm: ovs-vswitchd Tainted: G    B             5.2.0-rc3+ #240
    [ 1035.676916] RIP: 0010:internal_dev_create+0x2e5/0x4e0 [openvswitch]
    [ 1035.676916] Code: 48 c1 ea 03 80 3c 02 00 0f 85 9f 01 00 00 4c 8b 23 48 b8 00 00 00 00 00 fc ff df 49 8d bc 24 60 05 00 00 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 86 01 00 00 49 8b bc 24 60 05 00 00 e8 e4 68 f4
    [ 1035.713720] RSP: 0018:ffff88810dcb7578 EFLAGS: 00010206
    [ 1035.713720] RAX: dffffc0000000000 RBX: ffff88810d13fe08 RCX: ffffffff84297704
    [ 1035.713720] RDX: 00000000000000ac RSI: 0000000000000000 RDI: 0000000000000560
    [ 1035.713720] RBP: 00000000ffffffef R08: fffffbfff0d3b881 R09: fffffbfff0d3b881
    [ 1035.713720] R10: 0000000000000001 R11: fffffbfff0d3b880 R12: 0000000000000000
    [ 1035.768776] R13: 0000607ee460b900 R14: ffff88810dcb7690 R15: ffff88810dcb7698
    [ 1035.777709] FS:  00007f02095fc980(0000) GS:ffff88811b400000(0000) knlGS:0000000000000000
    [ 1035.777709] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1035.777709] CR2: 00007ffdf01d2f28 CR3: 0000000108258000 CR4: 00000000001006e0
    [ 1035.777709] Call Trace:
    [ 1035.777709]  ovs_vport_add+0x267/0x4f0 [openvswitch]
    [ 1035.777709]  new_vport+0x15/0x1e0 [openvswitch]
    [ 1035.777709]  ovs_vport_cmd_new+0x567/0xd10 [openvswitch]
    [ 1035.777709]  ? ovs_dp_cmd_dump+0x490/0x490 [openvswitch]
    [ 1035.777709]  ? __kmalloc+0x131/0x2e0
    [ 1035.777709]  ? genl_family_rcv_msg+0xa54/0x1030
    [ 1035.777709]  genl_family_rcv_msg+0x63a/0x1030
    [ 1035.777709]  ? genl_unregister_family+0x630/0x630
    [ 1035.841681]  ? debug_show_all_locks+0x2d0/0x2d0
    [ ... ]
    
    Fixes: cf124db566e6 ("net: Fix inconsistent teardown and release of private netdev state.")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Reviewed-by: Greg Rose <gvrose8192@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc762c999768aeda504c0a69795be5cd73dfee00
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Fri Jun 14 00:25:20 2019 +0200

    net: dsa: rtl8366: Fix up VLAN filtering
    
    [ Upstream commit 760c80b70bed2cd01630e8595d1bbde910339f31 ]
    
    We get this regression when using RTL8366RB as part of a bridge
    with OpenWrt:
    
    WARNING: CPU: 0 PID: 1347 at net/switchdev/switchdev.c:291
             switchdev_port_attr_set_now+0x80/0xa4
    lan0: Commit of attribute (id=7) failed.
    (...)
    realtek-smi switch lan0: failed to initialize vlan filtering on this port
    
    This is because it is trying to disable VLAN filtering
    on VLAN0, as we have forgot to add 1 to the port number
    to get the right VLAN in rtl8366_vlan_filtering(): when
    we initialize the VLAN we associate VLAN1 with port 0,
    VLAN2 with port 1 etc, so we need to add 1 to the port
    offset.
    
    Fixes: d8652956cf37 ("net: dsa: realtek-smi: Add Realtek SMI driver")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 103835df6821a57edf1ec5e0b33b379fa37dd35f
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Jun 15 16:28:48 2019 -0700

    neigh: fix use-after-free read in pneigh_get_next
    
    [ Upstream commit f3e92cb8e2eb8c27d109e6fd73d3a69a8c09e288 ]
    
    Nine years ago, I added RCU handling to neighbours, not pneighbours.
    (pneigh are not commonly used)
    
    Unfortunately I missed that /proc dump operations would use a
    common entry and exit point : neigh_seq_start() and neigh_seq_stop()
    
    We need to read_lock(tbl->lock) or risk use-after-free while
    iterating the pneigh structures.
    
    We might later convert pneigh to RCU and revert this patch.
    
    sysbot reported :
    
    BUG: KASAN: use-after-free in pneigh_get_next.isra.0+0x24b/0x280 net/core/neighbour.c:3158
    Read of size 8 at addr ffff888097f2a700 by task syz-executor.0/9825
    
    CPU: 1 PID: 9825 Comm: syz-executor.0 Not tainted 5.2.0-rc4+ #32
    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+0x172/0x1f0 lib/dump_stack.c:113
     print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188
     __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
     kasan_report+0x12/0x20 mm/kasan/common.c:614
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:132
     pneigh_get_next.isra.0+0x24b/0x280 net/core/neighbour.c:3158
     neigh_seq_next+0xdb/0x210 net/core/neighbour.c:3240
     seq_read+0x9cf/0x1110 fs/seq_file.c:258
     proc_reg_read+0x1fc/0x2c0 fs/proc/inode.c:221
     do_loop_readv_writev fs/read_write.c:714 [inline]
     do_loop_readv_writev fs/read_write.c:701 [inline]
     do_iter_read+0x4a4/0x660 fs/read_write.c:935
     vfs_readv+0xf0/0x160 fs/read_write.c:997
     kernel_readv fs/splice.c:359 [inline]
     default_file_splice_read+0x475/0x890 fs/splice.c:414
     do_splice_to+0x127/0x180 fs/splice.c:877
     splice_direct_to_actor+0x2d2/0x970 fs/splice.c:954
     do_splice_direct+0x1da/0x2a0 fs/splice.c:1063
     do_sendfile+0x597/0xd00 fs/read_write.c:1464
     __do_sys_sendfile64 fs/read_write.c:1525 [inline]
     __se_sys_sendfile64 fs/read_write.c:1511 [inline]
     __x64_sys_sendfile64+0x1dd/0x220 fs/read_write.c:1511
     do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x4592c9
    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:00007f4aab51dc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000028
    RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00000000004592c9
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000005
    RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000080000000 R11: 0000000000000246 R12: 00007f4aab51e6d4
    R13: 00000000004c689d R14: 00000000004db828 R15: 00000000ffffffff
    
    Allocated by task 9827:
     save_stack+0x23/0x90 mm/kasan/common.c:71
     set_track mm/kasan/common.c:79 [inline]
     __kasan_kmalloc mm/kasan/common.c:489 [inline]
     __kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:462
     kasan_kmalloc+0x9/0x10 mm/kasan/common.c:503
     __do_kmalloc mm/slab.c:3660 [inline]
     __kmalloc+0x15c/0x740 mm/slab.c:3669
     kmalloc include/linux/slab.h:552 [inline]
     pneigh_lookup+0x19c/0x4a0 net/core/neighbour.c:731
     arp_req_set_public net/ipv4/arp.c:1010 [inline]
     arp_req_set+0x613/0x720 net/ipv4/arp.c:1026
     arp_ioctl+0x652/0x7f0 net/ipv4/arp.c:1226
     inet_ioctl+0x2a0/0x340 net/ipv4/af_inet.c:926
     sock_do_ioctl+0xd8/0x2f0 net/socket.c:1043
     sock_ioctl+0x3ed/0x780 net/socket.c:1194
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:509 [inline]
     do_vfs_ioctl+0xd5f/0x1380 fs/ioctl.c:696
     ksys_ioctl+0xab/0xd0 fs/ioctl.c:713
     __do_sys_ioctl fs/ioctl.c:720 [inline]
     __se_sys_ioctl fs/ioctl.c:718 [inline]
     __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718
     do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 9824:
     save_stack+0x23/0x90 mm/kasan/common.c:71
     set_track mm/kasan/common.c:79 [inline]
     __kasan_slab_free+0x102/0x150 mm/kasan/common.c:451
     kasan_slab_free+0xe/0x10 mm/kasan/common.c:459
     __cache_free mm/slab.c:3432 [inline]
     kfree+0xcf/0x220 mm/slab.c:3755
     pneigh_ifdown_and_unlock net/core/neighbour.c:812 [inline]
     __neigh_ifdown+0x236/0x2f0 net/core/neighbour.c:356
     neigh_ifdown+0x20/0x30 net/core/neighbour.c:372
     arp_ifdown+0x1d/0x21 net/ipv4/arp.c:1274
     inetdev_destroy net/ipv4/devinet.c:319 [inline]
     inetdev_event+0xa14/0x11f0 net/ipv4/devinet.c:1544
     notifier_call_chain+0xc2/0x230 kernel/notifier.c:95
     __raw_notifier_call_chain kernel/notifier.c:396 [inline]
     raw_notifier_call_chain+0x2e/0x40 kernel/notifier.c:403
     call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1749
     call_netdevice_notifiers_extack net/core/dev.c:1761 [inline]
     call_netdevice_notifiers net/core/dev.c:1775 [inline]
     rollback_registered_many+0x9b9/0xfc0 net/core/dev.c:8178
     rollback_registered+0x109/0x1d0 net/core/dev.c:8220
     unregister_netdevice_queue net/core/dev.c:9267 [inline]
     unregister_netdevice_queue+0x1ee/0x2c0 net/core/dev.c:9260
     unregister_netdevice include/linux/netdevice.h:2631 [inline]
     __tun_detach+0xd8a/0x1040 drivers/net/tun.c:724
     tun_detach drivers/net/tun.c:741 [inline]
     tun_chr_close+0xe0/0x180 drivers/net/tun.c:3451
     __fput+0x2ff/0x890 fs/file_table.c:280
     ____fput+0x16/0x20 fs/file_table.c:313
     task_work_run+0x145/0x1c0 kernel/task_work.c:113
     tracehook_notify_resume include/linux/tracehook.h:185 [inline]
     exit_to_usermode_loop+0x273/0x2c0 arch/x86/entry/common.c:168
     prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline]
     syscall_return_slowpath arch/x86/entry/common.c:279 [inline]
     do_syscall_64+0x58e/0x680 arch/x86/entry/common.c:304
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The buggy address belongs to the object at ffff888097f2a700
     which belongs to the cache kmalloc-64 of size 64
    The buggy address is located 0 bytes inside of
     64-byte region [ffff888097f2a700, ffff888097f2a740)
    The buggy address belongs to the page:
    page:ffffea00025fca80 refcount:1 mapcount:0 mapping:ffff8880aa400340 index:0x0
    flags: 0x1fffc0000000200(slab)
    raw: 01fffc0000000200 ffffea000250d548 ffffea00025726c8 ffff8880aa400340
    raw: 0000000000000000 ffff888097f2a000 0000000100000020 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888097f2a600: 00 00 00 00 00 00 00 00 fc fc fc fc fc fc fc fc
     ffff888097f2a680: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    >ffff888097f2a700: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
                       ^
     ffff888097f2a780: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
     ffff888097f2a800: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    
    Fixes: 767e97e1e0db ("neigh: RCU conversion of struct neighbour")
    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 2980196db6c1fc48196cad0525ab27ece4e8d1ed
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Sun Jun 16 16:54:37 2019 +0100

    lapb: fixed leak of control-blocks.
    
    [ Upstream commit 6be8e297f9bcea666ea85ac7a6cd9d52d6deaf92 ]
    
    lapb_register calls lapb_create_cb, which initializes the control-
    block's ref-count to one, and __lapb_insert_cb, which increments it when
    adding the new block to the list of blocks.
    
    lapb_unregister calls __lapb_remove_cb, which decrements the ref-count
    when removing control-block from the list of blocks, and calls lapb_put
    itself to decrement the ref-count before returning.
    
    However, lapb_unregister also calls __lapb_devtostruct to look up the
    right control-block for the given net_device, and __lapb_devtostruct
    also bumps the ref-count, which means that when lapb_unregister returns
    the ref-count is still 1 and the control-block is leaked.
    
    Call lapb_put after __lapb_devtostruct to fix leak.
    
    Reported-by: syzbot+afb980676c836b4a0afa@syzkaller.appspotmail.com
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7eadfacd2be2c961348de7d6ce25635b409aeb72
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jun 6 14:32:34 2019 -0700

    ipv6: flowlabel: fl6_sock_lookup() must use atomic_inc_not_zero
    
    [ Upstream commit 65a3c497c0e965a552008db8bc2653f62bc925a1 ]
    
    Before taking a refcount, make sure the object is not already
    scheduled for deletion.
    
    Same fix is needed in ipv6_flowlabel_opt()
    
    Fixes: 18367681a10b ("ipv6 flowlabel: Convert np->ipv6_fl_list to RCU.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5ae5920426e9166af78658bb3e2a12b9fbf53e4
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Thu Jun 13 21:06:53 2019 +0000

    hv_netvsc: Set probe mode to sync
    
    [ Upstream commit 9a33629ba6b26caebd73e3c581ba1e6068c696a7 ]
    
    For better consistency of synthetic NIC names, we set the probe mode to
    PROBE_FORCE_SYNCHRONOUS. So the names can be aligned with the vmbus
    channel offer sequence.
    
    Fixes: af0a5646cb8d ("use the new async probing feature for the hyperv drivers")
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 674dc77bd3ecb93825a8c2393116979c7bad04c2
Author: Ivan Vecera <ivecera@redhat.com>
Date:   Fri Jun 14 17:48:36 2019 +0200

    be2net: Fix number of Rx queues used for flow hashing
    
    [ Upstream commit 718f4a2537089ea41903bf357071306163bc7c04 ]
    
    Number of Rx queues used for flow hashing returned by the driver is
    incorrect and this bug prevents user to use the last Rx queue in
    indirection table.
    
    Let's say we have a NIC with 6 combined queues:
    
    [root@sm-03 ~]# ethtool -l enp4s0f0
    Channel parameters for enp4s0f0:
    Pre-set maximums:
    RX:             5
    TX:             5
    Other:          0
    Combined:       6
    Current hardware settings:
    RX:             0
    TX:             0
    Other:          0
    Combined:       6
    
    Default indirection table maps all (6) queues equally but the driver
    reports only 5 rings available.
    
    [root@sm-03 ~]# ethtool -x enp4s0f0
    RX flow hash indirection table for enp4s0f0 with 5 RX ring(s):
        0:      0     1     2     3     4     5     0     1
        8:      2     3     4     5     0     1     2     3
       16:      4     5     0     1     2     3     4     5
       24:      0     1     2     3     4     5     0     1
    ...
    
    Now change indirection table somehow:
    
    [root@sm-03 ~]# ethtool -X enp4s0f0 weight 1 1
    [root@sm-03 ~]# ethtool -x enp4s0f0
    RX flow hash indirection table for enp4s0f0 with 6 RX ring(s):
        0:      0     0     0     0     0     0     0     0
    ...
       64:      1     1     1     1     1     1     1     1
    ...
    
    Now it is not possible to change mapping back to equal (default) state:
    
    [root@sm-03 ~]# ethtool -X enp4s0f0 equal 6
    Cannot set RX flow hash configuration: Invalid argument
    
    Fixes: 594ad54a2c3b ("be2net: Add support for setting and getting rx flow hash options")
    Reported-by: Tianhao <tizhao@redhat.com>
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10faaa359b41797ef86373ca6028b2c9049686b9
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Jun 15 16:40:52 2019 -0700

    ax25: fix inconsistent lock state in ax25_destroy_timer
    
    [ Upstream commit d4d5d8e83c9616aeef28a2869cea49cc3fb35526 ]
    
    Before thread in process context uses bh_lock_sock()
    we must disable bh.
    
    sysbot reported :
    
    WARNING: inconsistent lock state
    5.2.0-rc3+ #32 Not tainted
    
    inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
    blkid/26581 [HC0[0]:SC1[1]:HE1:SE0] takes:
    00000000e0da85ee (slock-AF_AX25){+.?.}, at: spin_lock include/linux/spinlock.h:338 [inline]
    00000000e0da85ee (slock-AF_AX25){+.?.}, at: ax25_destroy_timer+0x53/0xc0 net/ax25/af_ax25.c:275
    {SOFTIRQ-ON-W} state was registered at:
      lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:4303
      __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
      _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:151
      spin_lock include/linux/spinlock.h:338 [inline]
      ax25_rt_autobind+0x3ca/0x720 net/ax25/ax25_route.c:429
      ax25_connect.cold+0x30/0xa4 net/ax25/af_ax25.c:1221
      __sys_connect+0x264/0x330 net/socket.c:1834
      __do_sys_connect net/socket.c:1845 [inline]
      __se_sys_connect net/socket.c:1842 [inline]
      __x64_sys_connect+0x73/0xb0 net/socket.c:1842
      do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    irq event stamp: 2272
    hardirqs last  enabled at (2272): [<ffffffff810065f3>] trace_hardirqs_on_thunk+0x1a/0x1c
    hardirqs last disabled at (2271): [<ffffffff8100660f>] trace_hardirqs_off_thunk+0x1a/0x1c
    softirqs last  enabled at (1522): [<ffffffff87400654>] __do_softirq+0x654/0x94c kernel/softirq.c:320
    softirqs last disabled at (2267): [<ffffffff81449010>] invoke_softirq kernel/softirq.c:374 [inline]
    softirqs last disabled at (2267): [<ffffffff81449010>] irq_exit+0x180/0x1d0 kernel/softirq.c:414
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(slock-AF_AX25);
      <Interrupt>
        lock(slock-AF_AX25);
    
     *** DEADLOCK ***
    
    1 lock held by blkid/26581:
     #0: 0000000010fd154d ((&ax25->dtimer)){+.-.}, at: lockdep_copy_map include/linux/lockdep.h:175 [inline]
     #0: 0000000010fd154d ((&ax25->dtimer)){+.-.}, at: call_timer_fn+0xe0/0x720 kernel/time/timer.c:1312
    
    stack backtrace:
    CPU: 1 PID: 26581 Comm: blkid Not tainted 5.2.0-rc3+ #32
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x172/0x1f0 lib/dump_stack.c:113
     print_usage_bug.cold+0x393/0x4a2 kernel/locking/lockdep.c:2935
     valid_state kernel/locking/lockdep.c:2948 [inline]
     mark_lock_irq kernel/locking/lockdep.c:3138 [inline]
     mark_lock+0xd46/0x1370 kernel/locking/lockdep.c:3513
     mark_irqflags kernel/locking/lockdep.c:3391 [inline]
     __lock_acquire+0x159f/0x5490 kernel/locking/lockdep.c:3745
     lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:4303
     __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
     _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:151
     spin_lock include/linux/spinlock.h:338 [inline]
     ax25_destroy_timer+0x53/0xc0 net/ax25/af_ax25.c:275
     call_timer_fn+0x193/0x720 kernel/time/timer.c:1322
     expire_timers kernel/time/timer.c:1366 [inline]
     __run_timers kernel/time/timer.c:1685 [inline]
     __run_timers kernel/time/timer.c:1653 [inline]
     run_timer_softirq+0x66f/0x1740 kernel/time/timer.c:1698
     __do_softirq+0x25c/0x94c kernel/softirq.c:293
     invoke_softirq kernel/softirq.c:374 [inline]
     irq_exit+0x180/0x1d0 kernel/softirq.c:414
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     smp_apic_timer_interrupt+0x13b/0x550 arch/x86/kernel/apic/apic.c:1068
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:806
     </IRQ>
    RIP: 0033:0x7f858d5c3232
    Code: 8b 61 08 48 8b 84 24 d8 00 00 00 4c 89 44 24 28 48 8b ac 24 d0 00 00 00 4c 8b b4 24 e8 00 00 00 48 89 7c 24 68 48 89 4c 24 78 <48> 89 44 24 58 8b 84 24 e0 00 00 00 89 84 24 84 00 00 00 8b 84 24
    RSP: 002b:00007ffcaf0cf5c0 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff13
    RAX: 00007f858d7d27a8 RBX: 00007f858d7d8820 RCX: 00007f858d3940d8
    RDX: 00007ffcaf0cf798 RSI: 00000000f5e616f3 RDI: 00007f858d394fee
    RBP: 0000000000000000 R08: 00007ffcaf0cf780 R09: 00007f858d7db480
    R10: 0000000000000000 R11: 0000000009691a75 R12: 0000000000000005
    R13: 00000000f5e616f3 R14: 0000000000000000 R15: 00007ffcaf0cf798
    
    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>