commit 399849e4654ea496a6217ba4e5ee3d304c995ab4
Author: Sasha Levin <sashal@kernel.org>
Date:   Tue Jun 30 23:20:17 2020 -0400

    Linux 4.19.131
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b25ed4a1de23263d3f1b860eb74af442a5fa42ff
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue May 12 10:22:44 2020 +0200

    Revert "tty: hvc: Fix data abort due to race in hvc_open"
    
    commit cf9c94456ebafc6d75a834e58dfdc8ae71a3acbc upstream.
    
    This reverts commit e2bd1dcbe1aa34ff5570b3427c530e4332ecf0fe.
    
    In discussion on the mailing list, it has been determined that this is
    not the correct type of fix for this issue.  Revert it so that we can do
    this correctly.
    
    Reported-by: Jiri Slaby <jslaby@suse.cz>
    Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20200428032601.22127-1-rananta@codeaurora.org
    Cc: Raghavendra Rao Ananta <rananta@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 135eccd83909e75389a5754577b0336bbd0939ef
Author: Zheng Bin <zhengbin13@huawei.com>
Date:   Fri Feb 21 07:38:20 2020 -0800

    xfs: add agf freeblocks verify in xfs_agf_verify
    
    [ Upstream commit d0c7feaf87678371c2c09b3709400be416b2dc62 ]
    
    We recently used fuzz(hydra) to test XFS and automatically generate
    tmp.img(XFS v5 format, but some metadata is wrong)
    
    xfs_repair information(just one AG):
    agf_freeblks 0, counted 3224 in ag 0
    agf_longest 536874136, counted 3224 in ag 0
    sb_fdblocks 613, counted 3228
    
    Test as follows:
    mount tmp.img tmpdir
    cp file1M tmpdir
    sync
    
    In 4.19-stable, sync will stuck, the reason is:
    xfs_mountfs
      xfs_check_summary_counts
        if ((!xfs_sb_version_haslazysbcount(&mp->m_sb) ||
           XFS_LAST_UNMOUNT_WAS_CLEAN(mp)) &&
           !xfs_fs_has_sickness(mp, XFS_SICK_FS_COUNTERS))
            return 0;  -->just return, incore sb_fdblocks still be 613
        xfs_initialize_perag_data
    
    cp file1M tmpdir -->ok(write file to pagecache)
    sync -->stuck(write pagecache to disk)
    xfs_map_blocks
      xfs_iomap_write_allocate
        while (count_fsb != 0) {
          nimaps = 0;
          while (nimaps == 0) { --> endless loop
             nimaps = 1;
             xfs_bmapi_write(..., &nimaps) --> nimaps becomes 0 again
    xfs_bmapi_write
      xfs_bmap_alloc
        xfs_bmap_btalloc
          xfs_alloc_vextent
            xfs_alloc_fix_freelist
              xfs_alloc_space_available -->fail(agf_freeblks is 0)
    
    In linux-next, sync not stuck, cause commit c2b3164320b5 ("xfs:
    use the latest extent at writeback delalloc conversion time") remove
    the above while, dmesg is as follows:
    [   55.250114] XFS (loop0): page discard on page ffffea0008bc7380, inode 0x1b0c, offset 0.
    
    Users do not know why this page is discard, the better soultion is:
    1. Like xfs_repair, make sure sb_fdblocks is equal to counted
    (xfs_initialize_perag_data did this, who is not called at this mount)
    2. Add agf verify, if fail, will tell users to repair
    
    This patch use the second soultion.
    
    Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
    Signed-off-by: Ren Xudong <renxudong1@huawei.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6cd52ae3868b677052ef749a424a7d9ecdc2db08
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Jun 19 11:51:34 2020 -0400

    dm writecache: add cond_resched to loop in persistent_memory_claim()
    
    commit d35bd764e6899a7bea71958f08d16cea5bfa1919 upstream.
    
    Add cond_resched() to a loop that fills in the mapper memory area
    because the loop can be executed many times.
    
    Fixes: 48debafe4f2fe ("dm: add writecache target")
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a33e2d0aa4e265ae5ea06778516b863b17a7c737
Author: Huaisheng Ye <yehs1@lenovo.com>
Date:   Fri Jun 12 23:59:11 2020 +0800

    dm writecache: correct uncommitted_block when discarding uncommitted entry
    
    commit 39495b12ef1cf602e6abd350dce2ef4199906531 upstream.
    
    When uncommitted entry has been discarded, correct wc->uncommitted_block
    for getting the exact number.
    
    Fixes: 48debafe4f2fe ("dm: add writecache target")
    Cc: stable@vger.kernel.org
    Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
    Acked-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e66a37c80e8ca9457d5dbd71e7d34091b894cfa1
Author: Olga Kornievskaia <olga.kornievskaia@gmail.com>
Date:   Wed Jun 24 13:54:08 2020 -0400

    NFSv4 fix CLOSE not waiting for direct IO compeletion
    
    commit d03727b248d0dae6199569a8d7b629a681154633 upstream.
    
    Figuring out the root case for the REMOVE/CLOSE race and
    suggesting the solution was done by Neil Brown.
    
    Currently what happens is that direct IO calls hold a reference
    on the open context which is decremented as an asynchronous task
    in the nfs_direct_complete(). Before reference is decremented,
    control is returned to the application which is free to close the
    file. When close is being processed, it decrements its reference
    on the open_context but since directIO still holds one, it doesn't
    sent a close on the wire. It returns control to the application
    which is free to do other operations. For instance, it can delete a
    file. Direct IO is finally releasing its reference and triggering
    an asynchronous close. Which races with the REMOVE. On the server,
    REMOVE can be processed before the CLOSE, failing the REMOVE with
    EACCES as the file is still opened.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Suggested-by: Neil Brown <neilb@suse.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6efe9b152c5188cd2fcd817b7edf73c5dcccc20
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Jun 22 15:04:15 2020 -0400

    pNFS/flexfiles: Fix list corruption if the mirror count changes
    
    commit 8b04013737341442ed914b336cde866b902664ae upstream.
    
    If the mirror count changes in the new layout we pick up inside
    ff_layout_pg_init_write(), then we can end up adding the
    request to the wrong mirror and corrupting the mirror->pg_list.
    
    Fixes: d600ad1f2bdb ("NFS41: pop some layoutget errors to application")
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ebb986361f01bffd2b53d6e7ba89899753a3252
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Jun 25 11:32:34 2020 -0400

    SUNRPC: Properly set the @subbuf parameter of xdr_buf_subsegment()
    
    commit 89a3c9f5b9f0bcaa9aea3e8b2a616fcaea9aad78 upstream.
    
    @subbuf is an output parameter of xdr_buf_subsegment(). A survey of
    call sites shows that @subbuf is always uninitialized before
    xdr_buf_segment() is invoked by callers.
    
    There are some execution paths through xdr_buf_subsegment() that do
    not set all of the fields in @subbuf, leaving some pointer fields
    containing garbage addresses. Subsequent processing of that buffer
    then results in a page fault.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c2f9ef94dc38fcc8097ffc06dad94764b1e7ada
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Mon Jun 1 11:54:57 2020 +0300

    sunrpc: fixed rollback in rpc_gssd_dummy_populate()
    
    commit b7ade38165ca0001c5a3bd5314a314abbbfbb1b7 upstream.
    
    __rpc_depopulate(gssd_dentry) was lost on error path
    
    cc: stable@vger.kernel.org
    Fixes: commit 4b9a445e3eeb ("sunrpc: create a new dummy pipe for gssd to hold open")
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fe2a013bb77166c7c6fc1a06a2a82402b649324
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jun 3 13:19:58 2020 +0300

    Staging: rtl8723bs: prevent buffer overflow in update_sta_support_rate()
    
    commit b65a2d8c8614386f7e8d38ea150749f8a862f431 upstream.
    
    The "ie_len" variable is in the 0-255 range and it comes from the
    network.  If it's over NDIS_802_11_LENGTH_RATES_EX (16) then that will
    lead to memory corruption.
    
    Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200603101958.GA1845750@mwanda
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a083deda0b4179fb6780bc53d900794c4952339f
Author: Denis Efremov <efremov@linux.com>
Date:   Mon Jun 22 23:31:22 2020 +0300

    drm/radeon: fix fb_div check in ni_init_smc_spll_table()
    
    commit 35f760b44b1b9cb16a306bdcc7220fbbf78c4789 upstream.
    
    clk_s is checked twice in a row in ni_init_smc_spll_table().
    fb_div should be checked instead.
    
    Fixes: 69e0b57a91ad ("drm/radeon/kms: add dpm support for cayman (v5)")
    Cc: stable@vger.kernel.org
    Signed-off-by: Denis Efremov <efremov@linux.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71cf93ea0c78edeed61c63b36dceac9c74889536
Author: Daniel Gomez <dagmcr@gmail.com>
Date:   Mon May 18 22:16:46 2020 +0200

    drm: rcar-du: Fix build error
    
    commit 5f9af404eec82981c4345c9943be48422234e7ab upstream.
    
    Select DRM_KMS_HELPER dependency.
    
    Build error when DRM_KMS_HELPER is not selected:
    
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd48): undefined reference to `drm_atomic_helper_bridge_duplicate_state'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd50): undefined reference to `drm_atomic_helper_bridge_destroy_state'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xd70): undefined reference to `drm_atomic_helper_bridge_reset'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xdc8): undefined reference to `drm_atomic_helper_connector_reset'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xde0): undefined reference to `drm_helper_probe_single_connector_modes'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe08): undefined reference to `drm_atomic_helper_connector_duplicate_state'
    drivers/gpu/drm/rcar-du/rcar_lvds.o:(.rodata+0xe10): undefined reference to `drm_atomic_helper_connector_destroy_state'
    
    Fixes: c6a27fa41fab ("drm: rcar-du: Convert LVDS encoder code to bridge driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Daniel Gomez <dagmcr@gmail.com>
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1de4067516d1fbf20a08c0b68e8e8e70f39c3c8
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Mon Jun 22 15:18:15 2020 -0400

    ring-buffer: Zero out time extend if it is nested and not absolute
    
    commit 097350d1c6e1f5808cae142006f18a0bbc57018d upstream.
    
    Currently the ring buffer makes events that happen in interrupts that preempt
    another event have a delta of zero. (Hopefully we can change this soon). But
    this is to deal with the races of updating a global counter with lockless
    and nesting functions updating deltas.
    
    With the addition of absolute time stamps, the time extend didn't follow
    this rule. A time extend can happen if two events happen longer than 2^27
    nanoseconds appart, as the delta time field in each event is only 27 bits.
    If that happens, then a time extend is injected with 2^59 bits of
    nanoseconds to use (18 years). But if the 2^27 nanoseconds happen between
    two events, and as it is writing the event, an interrupt triggers, it will
    see the 2^27 difference as well and inject a time extend of its own. But a
    recent change made the time extend logic not take into account the nesting,
    and this can cause two time extend deltas to happen moving the time stamp
    much further ahead than the current time. This gets all reset when the ring
    buffer moves to the next page, but that can cause time to appear to go
    backwards.
    
    This was observed in a trace-cmd recording, and since the data is saved in a
    file, with trace-cmd report --debug, it was possible to see that this indeed
    did happen!
    
      bash-52501   110d... 81778.908247: sched_switch:         bash:52501 [120] S ==> swapper/110:0 [120] [12770284:0x2e8:64]
      <idle>-0     110d... 81778.908757: sched_switch:         swapper/110:0 [120] R ==> bash:52501 [120] [509947:0x32c:64]
     TIME EXTEND: delta:306454770 length:0
      bash-52501   110.... 81779.215212: sched_swap_numa:      src_pid=52501 src_tgid=52388 src_ngid=52501 src_cpu=110 src_nid=2 dst_pid=52509 dst_tgid=52388 dst_ngid=52501 dst_cpu=49 dst_nid=1 [0:0x378:48]
     TIME EXTEND: delta:306458165 length:0
      bash-52501   110dNh. 81779.521670: sched_wakeup:         migration/110:565 [0] success=1 CPU:110 [0:0x3b4:40]
    
    and at the next page, caused the time to go backwards:
    
      bash-52504   110d... 81779.685411: sched_switch:         bash:52504 [120] S ==> swapper/110:0 [120] [8347057:0xfb4:64]
    CPU:110 [SUBBUFFER START] [81779379165886:0x1320000]
      <idle>-0     110dN.. 81779.379166: sched_wakeup:         bash:52504 [120] success=1 CPU:110 [0:0x10:40]
      <idle>-0     110d... 81779.379167: sched_switch:         swapper/110:0 [120] R ==> bash:52504 [120] [1168:0x3c:64]
    
    Link: https://lkml.kernel.org/r/20200622151815.345d1bf5@oasis.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: dc4e2801d400b ("ring-buffer: Redefine the unimplemented RINGBUF_TYPE_TIME_STAMP")
    Reported-by: Julia Lawall <julia.lawall@inria.fr>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8f436c0f1c3bd7362d89e94dec8564cf2746ab3
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Jun 20 12:46:03 2020 +0900

    tracing: Fix event trigger to accept redundant spaces
    
    commit 6784beada631800f2c5afd567e5628c843362cee upstream.
    
    Fix the event trigger to accept redundant spaces in
    the trigger input.
    
    For example, these return -EINVAL
    
    echo " traceon" > events/ftrace/print/trigger
    echo "traceon  if common_pid == 0" > events/ftrace/print/trigger
    echo "disable_event:kmem:kmalloc " > events/ftrace/print/trigger
    
    But these are hard to find what is wrong.
    
    To fix this issue, use skip_spaces() to remove spaces
    in front of actual tokens, and set NULL if there is no
    token.
    
    Link: http://lkml.kernel.org/r/159262476352.185015.5261566783045364186.stgit@devnote2
    
    Cc: Tom Zanussi <zanussi@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 85f2b08268c0 ("tracing: Add basic event trigger framework")
    Reviewed-by: Tom Zanussi <zanussi@kernel.org>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77d09ad32d72b00c7b961864755694e3958628e1
Author: Jiping Ma <jiping.ma2@windriver.com>
Date:   Mon May 11 10:52:07 2020 +0800

    arm64: perf: Report the PC value in REGS_ABI_32 mode
    
    commit 8dfe804a4031ca6ba3a3efb2048534249b64f3a5 upstream.
    
    A 32-bit perf querying the registers of a compat task using REGS_ABI_32
    will receive zeroes from w15, when it expects to find the PC.
    
    Return the PC value for register dwarf register 15 when returning register
    values for a compat task to perf.
    
    Cc: <stable@vger.kernel.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
    Link: https://lore.kernel.org/r/1589165527-188401-1-git-send-email-jiping.ma2@windriver.com
    [will: Shuffled code and added a comment]
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6306edad05741c2371765dd9fcd8d69b391a95b7
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jun 25 20:29:37 2020 -0700

    ocfs2: fix panic on nfs server over ocfs2
    
    commit e5a15e17a78d58f933d17cafedfcf7486a29f5b4 upstream.
    
    The following kernel panic was captured when running nfs server over
    ocfs2, at that time ocfs2_test_inode_bit() was checking whether one
    inode locating at "blkno" 5 was valid, that is ocfs2 root inode, its
    "suballoc_slot" was OCFS2_INVALID_SLOT(65535) and it was allocted from
    //global_inode_alloc, but here it wrongly assumed that it was got from per
    slot inode alloctor which would cause array overflow and trigger kernel
    panic.
    
      BUG: unable to handle kernel paging request at 0000000000001088
      IP: [<ffffffff816f6898>] _raw_spin_lock+0x18/0xf0
      PGD 1e06ba067 PUD 1e9e7d067 PMD 0
      Oops: 0002 [#1] SMP
      CPU: 6 PID: 24873 Comm: nfsd Not tainted 4.1.12-124.36.1.el6uek.x86_64 #2
      Hardware name: Huawei CH121 V3/IT11SGCA1, BIOS 3.87 02/02/2018
      RIP: _raw_spin_lock+0x18/0xf0
      RSP: e02b:ffff88005ae97908  EFLAGS: 00010206
      RAX: ffff88005ae98000 RBX: 0000000000001088 RCX: 0000000000000000
      RDX: 0000000000020000 RSI: 0000000000000009 RDI: 0000000000001088
      RBP: ffff88005ae97928 R08: 0000000000000000 R09: ffff880212878e00
      R10: 0000000000007ff0 R11: 0000000000000000 R12: 0000000000001088
      R13: ffff8800063c0aa8 R14: ffff8800650c27d0 R15: 000000000000ffff
      FS:  0000000000000000(0000) GS:ffff880218180000(0000) knlGS:ffff880218180000
      CS:  e033 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000001088 CR3: 00000002033d0000 CR4: 0000000000042660
      Call Trace:
        igrab+0x1e/0x60
        ocfs2_get_system_file_inode+0x63/0x3a0 [ocfs2]
        ocfs2_test_inode_bit+0x328/0xa00 [ocfs2]
        ocfs2_get_parent+0xba/0x3e0 [ocfs2]
        reconnect_path+0xb5/0x300
        exportfs_decode_fh+0xf6/0x2b0
        fh_verify+0x350/0x660 [nfsd]
        nfsd4_putfh+0x4d/0x60 [nfsd]
        nfsd4_proc_compound+0x3d3/0x6f0 [nfsd]
        nfsd_dispatch+0xe0/0x290 [nfsd]
        svc_process_common+0x412/0x6a0 [sunrpc]
        svc_process+0x123/0x210 [sunrpc]
        nfsd+0xff/0x170 [nfsd]
        kthread+0xcb/0xf0
        ret_from_fork+0x61/0x90
      Code: 83 c2 02 0f b7 f2 e8 18 dc 91 ff 66 90 eb bf 0f 1f 40 00 55 48 89 e5 41 56 41 55 41 54 53 0f 1f 44 00 00 48 89 fb ba 00 00 02 00 <f0> 0f c1 17 89 d0 45 31 e4 45 31 ed c1 e8 10 66 39 d0 41 89 c6
      RIP   _raw_spin_lock+0x18/0xf0
      CR2: 0000000000001088
      ---[ end trace 7264463cd1aac8f9 ]---
      Kernel panic - not syncing: Fatal exception
    
    Link: http://lkml.kernel.org/r/20200616183829.87211-4-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.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 4d985f41d93631b2d43be352e236f1d6650f49ea
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jun 25 20:29:40 2020 -0700

    ocfs2: fix value of OCFS2_INVALID_SLOT
    
    commit 9277f8334ffc719fe922d776444d6e4e884dbf30 upstream.
    
    In the ocfs2 disk layout, slot number is 16 bits, but in ocfs2
    implementation, slot number is 32 bits.  Usually this will not cause any
    issue, because slot number is converted from u16 to u32, but
    OCFS2_INVALID_SLOT was defined as -1, when an invalid slot number from
    disk was obtained, its value was (u16)-1, and it was converted to u32.
    Then the following checking in get_local_system_inode will be always
    skipped:
    
     static struct inode **get_local_system_inode(struct ocfs2_super *osb,
                                                   int type,
                                                   u32 slot)
     {
            BUG_ON(slot == OCFS2_INVALID_SLOT);
            ...
     }
    
    Link: http://lkml.kernel.org/r/20200616183829.87211-5-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.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 0f4e2d6b65e265894342b10a1fd7a1f1a2c96381
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jun 25 20:29:33 2020 -0700

    ocfs2: load global_inode_alloc
    
    commit 7569d3c754e452769a5747eeeba488179e38a5da upstream.
    
    Set global_inode_alloc as OCFS2_FIRST_ONLINE_SYSTEM_INODE, that will
    make it load during mount.  It can be used to test whether some
    global/system inodes are valid.  One use case is that nfsd will test
    whether root inode is valid.
    
    Link: http://lkml.kernel.org/r/20200616183829.87211-3-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.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 1a06c538b6de62169f53b290ad3a5e88aadf3741
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jun 25 20:29:30 2020 -0700

    ocfs2: avoid inode removal while nfsd is accessing it
    
    commit 4cd9973f9ff69e37dd0ba2bd6e6423f8179c329a upstream.
    
    Patch series "ocfs2: fix nfsd over ocfs2 issues", v2.
    
    This is a series of patches to fix issues on nfsd over ocfs2.  patch 1
    is to avoid inode removed while nfsd access it patch 2 & 3 is to fix a
    panic issue.
    
    This patch (of 4):
    
    When nfsd is getting file dentry using handle or parent dentry of some
    dentry, one cluster lock is used to avoid inode removed from other node,
    but it still could be removed from local node, so use a rw lock to avoid
    this.
    
    Link: http://lkml.kernel.org/r/20200616183829.87211-1-junxiao.bi@oracle.com
    Link: http://lkml.kernel.org/r/20200616183829.87211-2-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.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 9ac47ed7c9090e0fd60b7a67f5611573b1410a95
Author: Waiman Long <longman@redhat.com>
Date:   Thu Jun 25 20:29:52 2020 -0700

    mm/slab: use memzero_explicit() in kzfree()
    
    commit 8982ae527fbef170ef298650c15d55a9ccd33973 upstream.
    
    The kzfree() function is normally used to clear some sensitive
    information, like encryption keys, in the buffer before freeing it back to
    the pool.  Memset() is currently used for buffer clearing.  However
    unlikely, there is still a non-zero probability that the compiler may
    choose to optimize away the memory clearing especially if LTO is being
    used in the future.
    
    To make sure that this optimization will never happen,
    memzero_explicit(), which is introduced in v3.18, is now used in
    kzfree() to future-proof it.
    
    Link: http://lkml.kernel.org/r/20200616154311.12314-2-longman@redhat.com
    Fixes: 3ef0e5ba4673 ("slab: introduce kzfree()")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Cc: James Morris <jmorris@namei.org>
    Cc: "Serge E. Hallyn" <serge@hallyn.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: "Jason A . Donenfeld" <Jason@zx2c4.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 e4b2fd3008058befb3fa8722a7dc2df4f54f40c2
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 15 18:48:58 2020 +0100

    btrfs: fix failure of RWF_NOWAIT write into prealloc extent beyond eof
    
    commit 4b1946284dd6641afdb9457101056d9e6ee6204c upstream.
    
    If we attempt to write to prealloc extent located after eof using a
    RWF_NOWAIT write, we always fail with -EAGAIN.
    
    We do actually check if we have an allocated extent for the write at
    the start of btrfs_file_write_iter() through a call to check_can_nocow(),
    but later when we go into the actual direct IO write path we simply
    return -EAGAIN if the write starts at or beyond EOF.
    
    Trivial to reproduce:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ touch /mnt/foo
      $ chattr +C /mnt/foo
    
      $ xfs_io -d -c "pwrite -S 0xab 0 64K" /mnt/foo
      wrote 65536/65536 bytes at offset 0
      64 KiB, 16 ops; 0.0004 sec (135.575 MiB/sec and 34707.1584 ops/sec)
    
      $ xfs_io -c "falloc -k 64K 1M" /mnt/foo
    
      $ xfs_io -d -c "pwrite -N -V 1 -S 0xfe -b 64K 64K 64K" /mnt/foo
      pwrite: Resource temporarily unavailable
    
    On xfs and ext4 the write succeeds, as expected.
    
    Fix this by removing the wrong check at btrfs_direct_IO().
    
    Fixes: edf064e7c6fec3 ("btrfs: nowait aio support")
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a092d4548a29d69c265c052a22dfb1a58c5a5976
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 8 13:32:55 2020 +0100

    btrfs: fix data block group relocation failure due to concurrent scrub
    
    commit 432cd2a10f1c10cead91fe706ff5dc52f06d642a upstream.
    
    When running relocation of a data block group while scrub is running in
    parallel, it is possible that the relocation will fail and abort the
    current transaction with an -EINVAL error:
    
       [134243.988595] BTRFS info (device sdc): found 14 extents, stage: move data extents
       [134243.999871] ------------[ cut here ]------------
       [134244.000741] BTRFS: Transaction aborted (error -22)
       [134244.001692] WARNING: CPU: 0 PID: 26954 at fs/btrfs/ctree.c:1071 __btrfs_cow_block+0x6a7/0x790 [btrfs]
       [134244.003380] Modules linked in: btrfs blake2b_generic xor raid6_pq (...)
       [134244.012577] CPU: 0 PID: 26954 Comm: btrfs Tainted: G        W         5.6.0-rc7-btrfs-next-58 #5
       [134244.014162] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
       [134244.016184] RIP: 0010:__btrfs_cow_block+0x6a7/0x790 [btrfs]
       [134244.017151] Code: 48 c7 c7 (...)
       [134244.020549] RSP: 0018:ffffa41607863888 EFLAGS: 00010286
       [134244.021515] RAX: 0000000000000000 RBX: ffff9614bdfe09c8 RCX: 0000000000000000
       [134244.022822] RDX: 0000000000000001 RSI: ffffffffb3d63980 RDI: 0000000000000001
       [134244.024124] RBP: ffff961589e8c000 R08: 0000000000000000 R09: 0000000000000001
       [134244.025424] R10: ffffffffc0ae5955 R11: 0000000000000000 R12: ffff9614bd530d08
       [134244.026725] R13: ffff9614ced41b88 R14: ffff9614bdfe2a48 R15: 0000000000000000
       [134244.028024] FS:  00007f29b63c08c0(0000) GS:ffff9615ba600000(0000) knlGS:0000000000000000
       [134244.029491] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       [134244.030560] CR2: 00007f4eb339b000 CR3: 0000000130d6e006 CR4: 00000000003606f0
       [134244.031997] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       [134244.033153] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       [134244.034484] Call Trace:
       [134244.034984]  btrfs_cow_block+0x12b/0x2b0 [btrfs]
       [134244.035859]  do_relocation+0x30b/0x790 [btrfs]
       [134244.036681]  ? do_raw_spin_unlock+0x49/0xc0
       [134244.037460]  ? _raw_spin_unlock+0x29/0x40
       [134244.038235]  relocate_tree_blocks+0x37b/0x730 [btrfs]
       [134244.039245]  relocate_block_group+0x388/0x770 [btrfs]
       [134244.040228]  btrfs_relocate_block_group+0x161/0x2e0 [btrfs]
       [134244.041323]  btrfs_relocate_chunk+0x36/0x110 [btrfs]
       [134244.041345]  btrfs_balance+0xc06/0x1860 [btrfs]
       [134244.043382]  ? btrfs_ioctl_balance+0x27c/0x310 [btrfs]
       [134244.045586]  btrfs_ioctl_balance+0x1ed/0x310 [btrfs]
       [134244.045611]  btrfs_ioctl+0x1880/0x3760 [btrfs]
       [134244.049043]  ? do_raw_spin_unlock+0x49/0xc0
       [134244.049838]  ? _raw_spin_unlock+0x29/0x40
       [134244.050587]  ? __handle_mm_fault+0x11b3/0x14b0
       [134244.051417]  ? ksys_ioctl+0x92/0xb0
       [134244.052070]  ksys_ioctl+0x92/0xb0
       [134244.052701]  ? trace_hardirqs_off_thunk+0x1a/0x1c
       [134244.053511]  __x64_sys_ioctl+0x16/0x20
       [134244.054206]  do_syscall_64+0x5c/0x280
       [134244.054891]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
       [134244.055819] RIP: 0033:0x7f29b51c9dd7
       [134244.056491] Code: 00 00 00 (...)
       [134244.059767] RSP: 002b:00007ffcccc1dd08 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
       [134244.061168] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f29b51c9dd7
       [134244.062474] RDX: 00007ffcccc1dda0 RSI: 00000000c4009420 RDI: 0000000000000003
       [134244.063771] RBP: 0000000000000003 R08: 00005565cea4b000 R09: 0000000000000000
       [134244.065032] R10: 0000000000000541 R11: 0000000000000202 R12: 00007ffcccc2060a
       [134244.066327] R13: 00007ffcccc1dda0 R14: 0000000000000002 R15: 00007ffcccc1dec0
       [134244.067626] irq event stamp: 0
       [134244.068202] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
       [134244.069351] hardirqs last disabled at (0): [<ffffffffb2abdedf>] copy_process+0x74f/0x2020
       [134244.070909] softirqs last  enabled at (0): [<ffffffffb2abdedf>] copy_process+0x74f/0x2020
       [134244.072392] softirqs last disabled at (0): [<0000000000000000>] 0x0
       [134244.073432] ---[ end trace bd7c03622e0b0a99 ]---
    
    The -EINVAL error comes from the following chain of function calls:
    
      __btrfs_cow_block() <-- aborts the transaction
        btrfs_reloc_cow_block()
          replace_file_extents()
            get_new_location() <-- returns -EINVAL
    
    When relocating a data block group, for each allocated extent of the block
    group, we preallocate another extent (at prealloc_file_extent_cluster()),
    associated with the data relocation inode, and then dirty all its pages.
    These preallocated extents have, and must have, the same size that extents
    from the data block group being relocated have.
    
    Later before we start the relocation stage that updates pointers (bytenr
    field of file extent items) to point to the the new extents, we trigger
    writeback for the data relocation inode. The expectation is that writeback
    will write the pages to the previously preallocated extents, that it
    follows the NOCOW path. That is generally the case, however, if a scrub
    is running it may have turned the block group that contains those extents
    into RO mode, in which case writeback falls back to the COW path.
    
    However in the COW path instead of allocating exactly one extent with the
    expected size, the allocator may end up allocating several smaller extents
    due to free space fragmentation - because we tell it at cow_file_range()
    that the minimum allocation size can match the filesystem's sector size.
    This later breaks the relocation's expectation that an extent associated
    to a file extent item in the data relocation inode has the same size as
    the respective extent pointed by a file extent item in another tree - in
    this case the extent to which the relocation inode poins to is smaller,
    causing relocation.c:get_new_location() to return -EINVAL.
    
    For example, if we are relocating a data block group X that has a logical
    address of X and the block group has an extent allocated at the logical
    address X + 128KiB with a size of 64KiB:
    
    1) At prealloc_file_extent_cluster() we allocate an extent for the data
       relocation inode with a size of 64KiB and associate it to the file
       offset 128KiB (X + 128KiB - X) of the data relocation inode. This
       preallocated extent was allocated at block group Z;
    
    2) A scrub running in parallel turns block group Z into RO mode and
       starts scrubing its extents;
    
    3) Relocation triggers writeback for the data relocation inode;
    
    4) When running delalloc (btrfs_run_delalloc_range()), we try first the
       NOCOW path because the data relocation inode has BTRFS_INODE_PREALLOC
       set in its flags. However, because block group Z is in RO mode, the
       NOCOW path (run_delalloc_nocow()) falls back into the COW path, by
       calling cow_file_range();
    
    5) At cow_file_range(), in the first iteration of the while loop we call
       btrfs_reserve_extent() to allocate a 64KiB extent and pass it a minimum
       allocation size of 4KiB (fs_info->sectorsize). Due to free space
       fragmentation, btrfs_reserve_extent() ends up allocating two extents
       of 32KiB each, each one on a different iteration of that while loop;
    
    6) Writeback of the data relocation inode completes;
    
    7) Relocation proceeds and ends up at relocation.c:replace_file_extents(),
       with a leaf which has a file extent item that points to the data extent
       from block group X, that has a logical address (bytenr) of X + 128KiB
       and a size of 64KiB. Then it calls get_new_location(), which does a
       lookup in the data relocation tree for a file extent item starting at
       offset 128KiB (X + 128KiB - X) and belonging to the data relocation
       inode. It finds a corresponding file extent item, however that item
       points to an extent that has a size of 32KiB, which doesn't match the
       expected size of 64KiB, resuling in -EINVAL being returned from this
       function and propagated up to __btrfs_cow_block(), which aborts the
       current transaction.
    
    To fix this make sure that at cow_file_range() when we call the allocator
    we pass it a minimum allocation size corresponding the desired extent size
    if the inode belongs to the data relocation tree, otherwise pass it the
    filesystem's sector size as the minimum allocation size.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50db905f00f07b21237360881980ee142eee8e56
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Thu Jun 18 11:20:02 2020 +0100

    x86/asm/64: Align start of __clear_user() loop to 16-bytes
    
    commit bb5570ad3b54e7930997aec76ab68256d5236d94 upstream.
    
    x86 CPUs can suffer severe performance drops if a tight loop, such as
    the ones in __clear_user(), straddles a 16-byte instruction fetch
    window, or worse, a 64-byte cacheline. This issues was discovered in the
    SUSE kernel with the following commit,
    
      1153933703d9 ("x86/asm/64: Micro-optimize __clear_user() - Use immediate constants")
    
    which increased the code object size from 10 bytes to 15 bytes and
    caused the 8-byte copy loop in __clear_user() to be split across a
    64-byte cacheline.
    
    Aligning the start of the loop to 16-bytes makes this fit neatly inside
    a single instruction fetch window again and restores the performance of
    __clear_user() which is used heavily when reading from /dev/zero.
    
    Here are some numbers from running libmicro's read_z* and pread_z*
    microbenchmarks which read from /dev/zero:
    
      Zen 1 (Naples)
    
      libmicro-file
                                            5.7.0-rc6              5.7.0-rc6              5.7.0-rc6
                                                        revert-1153933703d9+               align16+
      Time mean95-pread_z100k       9.9195 (   0.00%)      5.9856 (  39.66%)      5.9938 (  39.58%)
      Time mean95-pread_z10k        1.1378 (   0.00%)      0.7450 (  34.52%)      0.7467 (  34.38%)
      Time mean95-pread_z1k         0.2623 (   0.00%)      0.2251 (  14.18%)      0.2252 (  14.15%)
      Time mean95-pread_zw100k      9.9974 (   0.00%)      6.0648 (  39.34%)      6.0756 (  39.23%)
      Time mean95-read_z100k        9.8940 (   0.00%)      5.9885 (  39.47%)      5.9994 (  39.36%)
      Time mean95-read_z10k         1.1394 (   0.00%)      0.7483 (  34.33%)      0.7482 (  34.33%)
    
    Note that this doesn't affect Haswell or Broadwell microarchitectures
    which seem to avoid the alignment issue by executing the loop straight
    out of the Loop Stream Detector (verified using perf events).
    
    Fixes: 1153933703d9 ("x86/asm/64: Micro-optimize __clear_user() - Use immediate constants")
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org> # v4.19+
    Link: https://lkml.kernel.org/r/20200618102002.30034-1-matt@codeblueprint.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf6a8b2071802ad8786598667fcc650e6f46ade1
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Mon Jun 22 14:58:29 2020 -0700

    KVM: nVMX: Plumb L2 GPA through to PML emulation
    
    commit 2dbebf7ae1ed9a420d954305e2c9d5ed39ec57c3 upstream.
    
    Explicitly pass the L2 GPA to kvm_arch_write_log_dirty(), which for all
    intents and purposes is vmx_write_pml_buffer(), instead of having the
    latter pull the GPA from vmcs.GUEST_PHYSICAL_ADDRESS.  If the dirty bit
    update is the result of KVM emulation (rare for L2), then the GPA in the
    VMCS may be stale and/or hold a completely unrelated GPA.
    
    Fixes: c5f983f6e8455 ("nVMX: Implement emulated Page Modification Logging")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200622215832.22090-2-sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e7412293c4fd37048dfcd5c3356a3710d0b5e46
Author: Xiaoyao Li <xiaoyao.li@intel.com>
Date:   Tue Jun 16 15:33:07 2020 +0800

    KVM: X86: Fix MSR range of APIC registers in X2APIC mode
    
    commit bf10bd0be53282183f374af23577b18b5fbf7801 upstream.
    
    Only MSR address range 0x800 through 0x8ff is architecturally reserved
    and dedicated for accessing APIC registers in x2APIC mode.
    
    Fixes: 0105d1a52640 ("KVM: x2apic interface to lapic")
    Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-Id: <20200616073307.16440-1-xiaoyao.li@intel.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aaedcd7df6b14c7d5b9875fe4390e1841520fe51
Author: Gao Xiang <hsiangkao@redhat.com>
Date:   Fri Jun 19 07:43:49 2020 +0800

    erofs: fix partially uninitialized misuse in z_erofs_onlinepage_fixup
    
    commit 3c597282887fd55181578996dca52ce697d985a5 upstream.
    
    Hongyu reported "id != index" in z_erofs_onlinepage_fixup() with
    specific aarch64 environment easily, which wasn't shown before.
    
    After digging into that, I found that high 32 bits of page->private
    was set to 0xaaaaaaaa rather than 0 (due to z_erofs_onlinepage_init
    behavior with specific compiler options). Actually we only use low
    32 bits to keep the page information since page->private is only 4
    bytes on most 32-bit platforms. However z_erofs_onlinepage_fixup()
    uses the upper 32 bits by mistake.
    
    Let's fix it now.
    
    Reported-and-tested-by: Hongyu Jin <hongyu.jin@unisoc.com>
    Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression support")
    Cc: <stable@vger.kernel.org> # 4.19+
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Link: https://lore.kernel.org/r/20200618234349.22553-1-hsiangkao@aol.com
    Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c566f718fc23f00f5a08a187c936409470b7d99
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu Jun 11 21:51:50 2020 -0700

    ACPI: sysfs: Fix pm_profile_attr type
    
    commit e6d701dca9893990d999fd145e3e07223c002b06 upstream.
    
    When running a kernel with Clang's Control Flow Integrity implemented,
    there is a violation that happens when accessing
    /sys/firmware/acpi/pm_profile:
    
    $ cat /sys/firmware/acpi/pm_profile
    0
    
    $ dmesg
    ...
    [   17.352564] ------------[ cut here ]------------
    [   17.352568] CFI failure (target: acpi_show_profile+0x0/0x8):
    [   17.352572] WARNING: CPU: 3 PID: 497 at kernel/cfi.c:29 __cfi_check_fail+0x33/0x40
    [   17.352573] Modules linked in:
    [   17.352575] CPU: 3 PID: 497 Comm: cat Tainted: G        W         5.7.0-microsoft-standard+ #1
    [   17.352576] RIP: 0010:__cfi_check_fail+0x33/0x40
    [   17.352577] Code: 48 c7 c7 50 b3 85 84 48 c7 c6 50 0a 4e 84 e8 a4 d8 60 00 85 c0 75 02 5b c3 48 c7 c7 dc 5e 49 84 48 89 de 31 c0 e8 7d 06 eb ff <0f> 0b 5b c3 00 00 cc cc 00 00 cc cc 00 85 f6 74 25 41 b9 ea ff ff
    [   17.352577] RSP: 0018:ffffaa6dc3c53d30 EFLAGS: 00010246
    [   17.352578] RAX: 331267e0c06cee00 RBX: ffffffff83d85890 RCX: ffffffff8483a6f8
    [   17.352579] RDX: ffff9cceabbb37c0 RSI: 0000000000000082 RDI: ffffffff84bb9e1c
    [   17.352579] RBP: ffffffff845b2bc8 R08: 0000000000000001 R09: ffff9cceabbba200
    [   17.352579] R10: 000000000000019d R11: 0000000000000000 R12: ffff9cc947766f00
    [   17.352580] R13: ffffffff83d6bd50 R14: ffff9ccc6fa80000 R15: ffffffff845bd328
    [   17.352582] FS:  00007fdbc8d13580(0000) GS:ffff9cce91ac0000(0000) knlGS:0000000000000000
    [   17.352582] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   17.352583] CR2: 00007fdbc858e000 CR3: 00000005174d0000 CR4: 0000000000340ea0
    [   17.352584] Call Trace:
    [   17.352586]  ? rev_id_show+0x8/0x8
    [   17.352587]  ? __cfi_check+0x45bac/0x4b640
    [   17.352589]  ? kobj_attr_show+0x73/0x80
    [   17.352590]  ? sysfs_kf_seq_show+0xc1/0x140
    [   17.352592]  ? ext4_seq_options_show.cfi_jt+0x8/0x8
    [   17.352593]  ? seq_read+0x180/0x600
    [   17.352595]  ? sysfs_create_file_ns.cfi_jt+0x10/0x10
    [   17.352596]  ? tlbflush_read_file+0x8/0x8
    [   17.352597]  ? __vfs_read+0x6b/0x220
    [   17.352598]  ? handle_mm_fault+0xa23/0x11b0
    [   17.352599]  ? vfs_read+0xa2/0x130
    [   17.352599]  ? ksys_read+0x6a/0xd0
    [   17.352601]  ? __do_sys_getpgrp+0x8/0x8
    [   17.352602]  ? do_syscall_64+0x72/0x120
    [   17.352603]  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [   17.352604] ---[ end trace 7b1fa81dc897e419 ]---
    
    When /sys/firmware/acpi/pm_profile is read, sysfs_kf_seq_show is called,
    which in turn calls kobj_attr_show, which gets the ->show callback
    member by calling container_of on attr (casting it to struct
    kobj_attribute) then calls it.
    
    There is a CFI violation because pm_profile_attr is of type
    struct device_attribute but kobj_attr_show calls ->show expecting it
    to be from struct kobj_attribute. CFI checking ensures that function
    pointer types match when doing indirect calls. Fix pm_profile_attr to
    be defined in terms of kobj_attribute so there is no violation or
    mismatch.
    
    Fixes: 362b646062b2 ("ACPI: Export FADT pm_profile integer value to userspace")
    Link: https://github.com/ClangBuiltLinux/linux/issues/1051
    Reported-by: yuu ichii <byahu140@heisei.be>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: 3.10+ <stable@vger.kernel.org> # 3.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c5cb980b026782fc1672ba4d47c9709d77a4a62
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jun 16 15:21:50 2020 +0200

    ALSA: hda/realtek - Add quirk for MSI GE63 laptop
    
    commit a0b03952a797591d4b6d6fa7b9b7872e27783729 upstream.
    
    MSI GE63 laptop with ALC1220 codec requires the very same quirk
    (ALC1220_FIXUP_CLEVO_P950) as other MSI devices for the proper sound
    output.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=208057
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200616132150.8778-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94d5b41ac1031853ddc833926a52ff71ffea28de
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Thu Jun 11 11:08:45 2020 -0700

    ALSA: hda: Add NVIDIA codec IDs 9a & 9d through a0 to patch table
    
    commit adb36a8203831e40494a92095dacd566b2ad4a69 upstream.
    
    These IDs are for upcoming NVIDIA chips with audio functions that are largely
    similar to the existing ones.
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200611180845.39942-1-aplattner@nvidia.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db9138d06e441f8da6cd4ce684ebda7b5f03011b
Author: Yash Shah <yash.shah@sifive.com>
Date:   Tue Jun 16 19:33:06 2020 +0530

    RISC-V: Don't allow write+exec only page mapping request in mmap
    
    [ Upstream commit e0d17c842c0f824fd4df9f4688709fc6907201e1 ]
    
    As per the table 4.4 of version "20190608-Priv-MSU-Ratified" of the
    RISC-V instruction set manual[0], the PTE permission bit combination of
    "write+exec only" is reserved for future use. Hence, don't allow such
    mapping request in mmap call.
    
    An issue is been reported by David Abdurachmanov, that while running
    stress-ng with "sysbadaddr" argument, RCU stalls are observed on RISC-V
    specific kernel.
    
    This issue arises when the stress-sysbadaddr request for pages with
    "write+exec only" permission bits and then passes the address obtain
    from this mmap call to various system call. For the riscv kernel, the
    mmap call should fail for this particular combination of permission bits
    since it's not valid.
    
    [0]: http://dabbelt.com/~palmer/keep/riscv-isa-manual/riscv-privileged-20190608-1.pdf
    
    Signed-off-by: Yash Shah <yash.shah@sifive.com>
    Reported-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
    [Palmer: Refer to the latest ISA specification at the only link I could
    find, and update the terminology.]
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7b333600aac096d700b857eebed8269f08a1b4b
Author: Luis Chamberlain <mcgrof@kernel.org>
Date:   Fri Jun 5 16:58:36 2020 +0200

    blktrace: break out of blktrace setup on concurrent calls
    
    [ Upstream commit 1b0b283648163dae2a214ca28ed5a99f62a77319 ]
    
    We use one blktrace per request_queue, that means one per the entire
    disk.  So we cannot run one blktrace on say /dev/vda and then /dev/vda1,
    or just two calls on /dev/vda.
    
    We check for concurrent setup only at the very end of the blktrace setup though.
    
    If we try to run two concurrent blktraces on the same block device the
    second one will fail, and the first one seems to go on. However when
    one tries to kill the first one one will see things like this:
    
    The kernel will show these:
    
    ```
    debugfs: File 'dropped' in directory 'nvme1n1' already present!
    debugfs: File 'msg' in directory 'nvme1n1' already present!
    debugfs: File 'trace0' in directory 'nvme1n1' already present!
    ``
    
    And userspace just sees this error message for the second call:
    
    ```
    blktrace /dev/nvme1n1
    BLKTRACESETUP(2) /dev/nvme1n1 failed: 5/Input/output error
    ```
    
    The first userspace process #1 will also claim that the files
    were taken underneath their nose as well. The files are taken
    away form the first process given that when the second blktrace
    fails, it will follow up with a BLKTRACESTOP and BLKTRACETEARDOWN.
    This means that even if go-happy process #1 is waiting for blktrace
    data, we *have* been asked to take teardown the blktrace.
    
    This can easily be reproduced with break-blktrace [0] run_0005.sh test.
    
    Just break out early if we know we're already going to fail, this will
    prevent trying to create the files all over again, which we know still
    exist.
    
    [0] https://github.com/mcgrof/break-blktrace
    
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27e3fa7e9ccf31c4a21a257034cfa560cd189449
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Jun 14 23:43:40 2020 +0900

    kbuild: improve cc-option to clean up all temporary files
    
    [ Upstream commit f2f02ebd8f3833626642688b2d2c6a7b3c141fa9 ]
    
    When cc-option and friends evaluate compiler flags, the temporary file
    $$TMP is created as an output object, and automatically cleaned up.
    The actual file path of $$TMP is .<pid>.tmp, here <pid> is the process
    ID of $(shell ...) invoked from cc-option. (Please note $$$$ is the
    escape sequence of $$).
    
    Such garbage files are cleaned up in most cases, but some compiler flags
    create additional output files.
    
    For example, -gsplit-dwarf creates a .dwo file.
    
    When CONFIG_DEBUG_INFO_SPLIT=y, you will see a bunch of .<pid>.dwo files
    left in the top of build directories. You may not notice them unless you
    do 'ls -a', but the garbage files will increase every time you run 'make'.
    
    This commit changes the temporary object path to .tmp_<pid>/tmp, and
    removes .tmp_<pid> directory when exiting. Separate build artifacts such
    as *.dwo will be cleaned up all together because their file paths are
    usually determined based on the base name of the object.
    
    Another example is -ftest-coverage, which outputs the coverage data into
    <base-name-of-object>.gcno
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c0053203879bd4ebb4c9935977558cf70536d63
Author: Will Deacon <will@kernel.org>
Date:   Tue Jun 16 18:29:11 2020 +0100

    arm64: sve: Fix build failure when ARM64_SVE=y and SYSCTL=n
    
    [ Upstream commit e575fb9e76c8e33440fb859572a8b7d430f053d6 ]
    
    When I squashed the 'allnoconfig' compiler warning about the
    set_sve_default_vl() function being defined but not used in commit
    1e570f512cbd ("arm64/sve: Eliminate data races on sve_default_vl"), I
    accidentally broke the build for configs where ARM64_SVE is enabled, but
    SYSCTL is not.
    
    Fix this by only compiling the SVE sysctl support if both CONFIG_SVE=y
    and CONFIG_SYSCTL=y.
    
    Cc: Dave Martin <Dave.Martin@arm.com>
    Reported-by: Qian Cai <cai@lca.pw>
    Link: https://lore.kernel.org/r/20200616131808.GA1040@lca.pw
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9e97d64c351b778f8b41f2f1b54ac5524936f6b
Author: Vincenzo Frascino <vincenzo.frascino@arm.com>
Date:   Tue Mar 24 12:10:27 2020 +0000

    s390/vdso: fix vDSO clock_getres()
    
    [ Upstream commit 478237a595120a18e9b52fd2c57a6e8b7a01e411 ]
    
    clock_getres in the vDSO library has to preserve the same behaviour
    of posix_get_hrtimer_res().
    
    In particular, posix_get_hrtimer_res() does:
        sec = 0;
        ns = hrtimer_resolution;
    and hrtimer_resolution depends on the enablement of the high
    resolution timers that can happen either at compile or at run time.
    
    Fix the s390 vdso implementation of clock_getres keeping a copy of
    hrtimer_resolution in vdso data and using that directly.
    
    Link: https://lkml.kernel.org/r/20200324121027.21665-1-vincenzo.frascino@arm.com
    Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [heiko.carstens@de.ibm.com: use llgf for proper zero extension]
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 42cd50aaa169dc0ac407db1c7b3bc8a9a1404299
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Mon Mar 9 16:44:50 2020 +0100

    s390/ptrace: fix setting syscall number
    
    [ Upstream commit 873e5a763d604c32988c4a78913a8dab3862d2f9 ]
    
    When strace wants to update the syscall number, it sets GPR2
    to the desired number and updates the GPR via PTRACE_SETREGSET.
    It doesn't update regs->int_code which would cause the old syscall
    executed on syscall restart. As we cannot change the ptrace ABI and
    don't have a field for the interruption code, check whether the tracee
    is in a syscall and the last instruction was svc. In that case assume
    that the tracer wants to update the syscall number and copy the GPR2
    value to regs->int_code.
    
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8114ae273a366652eaf42eff4716e4f5a18c7988
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Mon Jun 15 11:50:29 2020 -0400

    net: alx: fix race condition in alx_remove
    
    [ Upstream commit e89df5c4322c1bf495f62d74745895b5fd2a4393 ]
    
    There is a race condition exist during termination. The path is
    alx_stop and then alx_remove. An alx_schedule_link_check could be called
    before alx_stop by interrupt handler and invoke alx_link_check later.
    Alx_stop frees the napis, and alx_remove cancels any pending works.
    If any of the work is scheduled before termination and invoked before
    alx_remove, a null-ptr-deref occurs because both expect alx->napis[i].
    
    This patch fix the race condition by moving cancel_work_sync functions
    before alx_free_napis inside alx_stop. Because interrupt handler can call
    alx_schedule_link_check again, alx_free_irq is moved before
    cancel_work_sync calls too.
    
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed1e2fcb187620947de899948439907f0df67faf
Author: Thomas Falcon <tlfalcon@linux.ibm.com>
Date:   Mon Jun 15 10:29:23 2020 -0500

    ibmvnic: Harden device login requests
    
    [ Upstream commit dff515a3e71dc8ab3b9dcc2e23a9b5fca88b3c18 ]
    
    The VNIC driver's "login" command sequence is the final step
    in the driver's initialization process with device firmware,
    confirming the available device queue resources to be utilized
    by the driver. Under high system load, firmware may not respond
    to the request in a timely manner or may abort the request. In
    such cases, the driver should reattempt the login command
    sequence. In case of a device error, the number of retries
    is bounded.
    
    Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f63c02277c76cc24d6acecdc3fb7b1575cbfbf7
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Thu May 28 15:21:04 2020 +0800

    hwrng: ks-sa - Fix runtime PM imbalance on error
    
    [ Upstream commit 95459261c99f1621d90bc628c2a48e60b7cf9a88 ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a24f9d6cf9bd65c1305344134e0182ed7bef76c8
Author: Nathan Huckleberry <nhuck@google.com>
Date:   Thu Jun 11 18:32:35 2020 +0000

    riscv/atomic: Fix sign extension for RV64I
    
    [ Upstream commit 6c58f25e6938c073198af8b1e1832f83f8f0df33 ]
    
    The argument passed to cmpxchg is not guaranteed to be sign
    extended, but lr.w sign extends on RV64I. This makes cmpxchg
    fail on clang built kernels when __old is negative.
    
    To fix this, we just cast __old to long which sign extends on
    RV64I. With this fix, clang built RISC-V kernels now boot.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/867
    Signed-off-by: Nathan Huckleberry <nhuck@google.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a39db51119aba468f3f2605edc289aa03a272b0
Author: Denis Efremov <efremov@linux.com>
Date:   Fri Jun 5 20:37:44 2020 +0300

    drm/amd/display: Use kfree() to free rgb_user in calculate_user_regamma_ramp()
    
    [ Upstream commit 43a562774fceba867e8eebba977d7d42f8a2eac7 ]
    
    Use kfree() instead of kvfree() to free rgb_user in
    calculate_user_regamma_ramp() because the memory is allocated with
    kcalloc().
    
    Signed-off-by: Denis Efremov <efremov@linux.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11e6b688936b43ca602d94fd2c395a47682e40ed
Author: Ye Bin <yebin10@huawei.com>
Date:   Fri Jun 5 09:41:49 2020 +0800

    ata/libata: Fix usage of page address by page_address in ata_scsi_mode_select_xlat function
    
    [ Upstream commit f650ef61e040bcb175dd8762164b00a5d627f20e ]
    
    BUG: KASAN: use-after-free in ata_scsi_mode_select_xlat+0x10bd/0x10f0
    drivers/ata/libata-scsi.c:4045
    Read of size 1 at addr ffff88803b8cd003 by task syz-executor.6/12621
    
    CPU: 1 PID: 12621 Comm: syz-executor.6 Not tainted 4.19.95 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.10.2-1ubuntu1 04/01/2014
    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0xac/0xee lib/dump_stack.c:118
    print_address_description+0x60/0x223 mm/kasan/report.c:253
    kasan_report_error mm/kasan/report.c:351 [inline]
    kasan_report mm/kasan/report.c:409 [inline]
    kasan_report.cold+0xae/0x2d8 mm/kasan/report.c:393
    ata_scsi_mode_select_xlat+0x10bd/0x10f0 drivers/ata/libata-scsi.c:4045
    ata_scsi_translate+0x2da/0x680 drivers/ata/libata-scsi.c:2035
    __ata_scsi_queuecmd drivers/ata/libata-scsi.c:4360 [inline]
    ata_scsi_queuecmd+0x2e4/0x790 drivers/ata/libata-scsi.c:4409
    scsi_dispatch_cmd+0x2ee/0x6c0 drivers/scsi/scsi_lib.c:1867
    scsi_queue_rq+0xfd7/0x1990 drivers/scsi/scsi_lib.c:2170
    blk_mq_dispatch_rq_list+0x1e1/0x19a0 block/blk-mq.c:1186
    blk_mq_do_dispatch_sched+0x147/0x3d0 block/blk-mq-sched.c:108
    blk_mq_sched_dispatch_requests+0x427/0x680 block/blk-mq-sched.c:204
    __blk_mq_run_hw_queue+0xbc/0x200 block/blk-mq.c:1308
    __blk_mq_delay_run_hw_queue+0x3c0/0x460 block/blk-mq.c:1376
    blk_mq_run_hw_queue+0x152/0x310 block/blk-mq.c:1413
    blk_mq_sched_insert_request+0x337/0x6c0 block/blk-mq-sched.c:397
    blk_execute_rq_nowait+0x124/0x320 block/blk-exec.c:64
    blk_execute_rq+0xc5/0x112 block/blk-exec.c:101
    sg_scsi_ioctl+0x3b0/0x6a0 block/scsi_ioctl.c:507
    sg_ioctl+0xd37/0x23f0 drivers/scsi/sg.c:1106
    vfs_ioctl fs/ioctl.c:46 [inline]
    file_ioctl fs/ioctl.c:501 [inline]
    do_vfs_ioctl+0xae6/0x1030 fs/ioctl.c:688
    ksys_ioctl+0x76/0xa0 fs/ioctl.c:705
    __do_sys_ioctl fs/ioctl.c:712 [inline]
    __se_sys_ioctl fs/ioctl.c:710 [inline]
    __x64_sys_ioctl+0x6f/0xb0 fs/ioctl.c:710
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45c479
    Code: ad b6 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 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fb0e9602c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007fb0e96036d4 RCX: 000000000045c479
    RDX: 0000000020000040 RSI: 0000000000000001 RDI: 0000000000000003
    RBP: 000000000076bfc0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 000000000000046d R14: 00000000004c6e1a R15: 000000000076bfcc
    
    Allocated by task 12577:
    set_track mm/kasan/kasan.c:460 [inline]
    kasan_kmalloc mm/kasan/kasan.c:553 [inline]
    kasan_kmalloc+0xbf/0xe0 mm/kasan/kasan.c:531
    __kmalloc+0xf3/0x1e0 mm/slub.c:3749
    kmalloc include/linux/slab.h:520 [inline]
    load_elf_phdrs+0x118/0x1b0 fs/binfmt_elf.c:441
    load_elf_binary+0x2de/0x4610 fs/binfmt_elf.c:737
    search_binary_handler fs/exec.c:1654 [inline]
    search_binary_handler+0x15c/0x4e0 fs/exec.c:1632
    exec_binprm fs/exec.c:1696 [inline]
    __do_execve_file.isra.0+0xf52/0x1a90 fs/exec.c:1820
    do_execveat_common fs/exec.c:1866 [inline]
    do_execve fs/exec.c:1883 [inline]
    __do_sys_execve fs/exec.c:1964 [inline]
    __se_sys_execve fs/exec.c:1959 [inline]
    __x64_sys_execve+0x8a/0xb0 fs/exec.c:1959
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 12577:
    set_track mm/kasan/kasan.c:460 [inline]
    __kasan_slab_free+0x129/0x170 mm/kasan/kasan.c:521
    slab_free_hook mm/slub.c:1370 [inline]
    slab_free_freelist_hook mm/slub.c:1397 [inline]
    slab_free mm/slub.c:2952 [inline]
    kfree+0x8b/0x1a0 mm/slub.c:3904
    load_elf_binary+0x1be7/0x4610 fs/binfmt_elf.c:1118
    search_binary_handler fs/exec.c:1654 [inline]
    search_binary_handler+0x15c/0x4e0 fs/exec.c:1632
    exec_binprm fs/exec.c:1696 [inline]
    __do_execve_file.isra.0+0xf52/0x1a90 fs/exec.c:1820
    do_execveat_common fs/exec.c:1866 [inline]
    do_execve fs/exec.c:1883 [inline]
    __do_sys_execve fs/exec.c:1964 [inline]
    __se_sys_execve fs/exec.c:1959 [inline]
    __x64_sys_execve+0x8a/0xb0 fs/exec.c:1959
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The buggy address belongs to the object at ffff88803b8ccf00
    which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 259 bytes inside of
    512-byte region [ffff88803b8ccf00, ffff88803b8cd100)
    The buggy address belongs to the page:
    page:ffffea0000ee3300 count:1 mapcount:0 mapping:ffff88806cc03080
    index:0xffff88803b8cc780 compound_mapcount: 0
    flags: 0x100000000008100(slab|head)
    raw: 0100000000008100 ffffea0001104080 0000000200000002 ffff88806cc03080
    raw: ffff88803b8cc780 00000000800c000b 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
    ffff88803b8ccf00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ffff88803b8ccf80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff88803b8cd000: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ^
    ffff88803b8cd080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ffff88803b8cd100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    
    You can refer to "https://www.lkml.org/lkml/2019/1/17/474" reproduce
    this error.
    
    The exception code is "bd_len = p[3];", "p" value is ffff88803b8cd000
    which belongs to the cache kmalloc-512 of size 512. The "page_address(sg_page(scsi_sglist(scmd)))"
    maybe from sg_scsi_ioctl function "buffer" which allocated by kzalloc, so "buffer"
    may not page aligned.
    This also looks completely buggy on highmem systems and really needs to use a
    kmap_atomic.      --Christoph Hellwig
    To address above bugs, Paolo Bonzini advise to simpler to just make a char array
    of size CACHE_MPAGE_LEN+8+8+4-2(or just 64 to make it easy), use sg_copy_to_buffer
    to copy from the sglist into the buffer, and workthere.
    
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0947f6f6254c434fc57d1a3f0358bb80967ceb01
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Thu Jun 4 22:06:43 2020 -0500

    sata_rcar: handle pm_runtime_get_sync failure cases
    
    [ Upstream commit eea1238867205b9e48a67c1a63219529a73c46fd ]
    
    Calling pm_runtime_get_sync increments the counter even in case of
    failure, causing incorrect ref count. Call pm_runtime_put if
    pm_runtime_get_sync fails.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e852bdcce9e41c26127e4b919210e3445590a1a4
Author: Juri Lelli <juri.lelli@redhat.com>
Date:   Mon Nov 19 16:32:01 2018 +0100

    sched/core: Fix PI boosting between RT and DEADLINE tasks
    
    [ Upstream commit 740797ce3a124b7dd22b7fb832d87bc8fba1cf6f ]
    
    syzbot reported the following warning:
    
     WARNING: CPU: 1 PID: 6351 at kernel/sched/deadline.c:628
     enqueue_task_dl+0x22da/0x38a0 kernel/sched/deadline.c:1504
    
    At deadline.c:628 we have:
    
     623 static inline void setup_new_dl_entity(struct sched_dl_entity *dl_se)
     624 {
     625    struct dl_rq *dl_rq = dl_rq_of_se(dl_se);
     626    struct rq *rq = rq_of_dl_rq(dl_rq);
     627
     628    WARN_ON(dl_se->dl_boosted);
     629    WARN_ON(dl_time_before(rq_clock(rq), dl_se->deadline));
            [...]
         }
    
    Which means that setup_new_dl_entity() has been called on a task
    currently boosted. This shouldn't happen though, as setup_new_dl_entity()
    is only called when the 'dynamic' deadline of the new entity
    is in the past w.r.t. rq_clock and boosted tasks shouldn't verify this
    condition.
    
    Digging through the PI code I noticed that what above might in fact happen
    if an RT tasks blocks on an rt_mutex hold by a DEADLINE task. In the
    first branch of boosting conditions we check only if a pi_task 'dynamic'
    deadline is earlier than mutex holder's and in this case we set mutex
    holder to be dl_boosted. However, since RT 'dynamic' deadlines are only
    initialized if such tasks get boosted at some point (or if they become
    DEADLINE of course), in general RT 'dynamic' deadlines are usually equal
    to 0 and this verifies the aforementioned condition.
    
    Fix it by checking that the potential donor task is actually (even if
    temporary because in turn boosted) running at DEADLINE priority before
    using its 'dynamic' deadline value.
    
    Fixes: 2d3d891d3344 ("sched/deadline: Add SCHED_DEADLINE inheritance logic")
    Reported-by: syzbot+119ba87189432ead09b4@syzkaller.appspotmail.com
    Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Daniel Bristot de Oliveira <bristot@redhat.com>
    Tested-by: Daniel Wagner <dwagner@suse.de>
    Link: https://lkml.kernel.org/r/20181119153201.GB2119@localhost.localdomain
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit edf55b5e3bde2fdba1a304b8e069154a4312f566
Author: Juri Lelli <juri.lelli@redhat.com>
Date:   Wed Jun 17 09:29:19 2020 +0200

    sched/deadline: Initialize ->dl_boosted
    
    [ Upstream commit ce9bc3b27f2a21a7969b41ffb04df8cf61bd1592 ]
    
    syzbot reported the following warning triggered via SYSC_sched_setattr():
    
      WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 setup_new_dl_entity /kernel/sched/deadline.c:594 [inline]
      WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 enqueue_dl_entity /kernel/sched/deadline.c:1370 [inline]
      WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 enqueue_task_dl+0x1c17/0x2ba0 /kernel/sched/deadline.c:1441
    
    This happens because the ->dl_boosted flag is currently not initialized by
    __dl_clear_params() (unlike the other flags) and setup_new_dl_entity()
    rightfully complains about it.
    
    Initialize dl_boosted to 0.
    
    Fixes: 2d3d891d3344 ("sched/deadline: Add SCHED_DEADLINE inheritance logic")
    Reported-by: syzbot+5ac8bac25f95e8b221e7@syzkaller.appspotmail.com
    Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Daniel Wagner <dwagner@suse.de>
    Link: https://lkml.kernel.org/r/20200617072919.818409-1-juri.lelli@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 250b26bb889220bb2bf671cb2e4890cdb6f12714
Author: Mans Rullgard <mans@mansr.com>
Date:   Sat Jun 13 11:41:09 2020 +0100

    i2c: core: check returned size of emulated smbus block read
    
    [ Upstream commit 40e05200593af06633f64ab0effff052eee6f076 ]
    
    If the i2c bus driver ignores the I2C_M_RECV_LEN flag (as some of
    them do), it is possible for an I2C_SMBUS_BLOCK_DATA read issued
    on some random device to return an arbitrary value in the first
    byte (and nothing else).  When this happens, i2c_smbus_xfer_emulated()
    will happily write past the end of the supplied data buffer, thus
    causing Bad Things to happen.  To prevent this, check the size
    before copying the data block and return an error if it is too large.
    
    Fixes: 209d27c3b167 ("i2c: Emulate SMBus block read over I2C")
    Signed-off-by: Mans Rullgard <mans@mansr.com>
    [wsa: use better errno]
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1cf0d9a73619252bb20cb45eabfd1c0a93dc8345
Author: Eddie James <eajames@linux.ibm.com>
Date:   Tue Jun 9 15:15:54 2020 -0500

    i2c: fsi: Fix the port number field in status register
    
    [ Upstream commit 502035e284cc7e9efef22b01771d822d49698ab9 ]
    
    The port number field in the status register was not correct, so fix it.
    
    Fixes: d6ffb6300116 ("i2c: Add FSI-attached I2C master algorithm")
    Signed-off-by: Eddie James <eajames@linux.ibm.com>
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0dac4ebc8616fa4f2be0794e1b12cf196fdb472
Author: Doug Berger <opendmb@gmail.com>
Date:   Wed Jun 24 18:14:55 2020 -0700

    net: bcmgenet: use hardware padding of runt frames
    
    [ Upstream commit 20d1f2d1b024f6be199a3bedf1578a1d21592bc5 ]
    
    When commit 474ea9cafc45 ("net: bcmgenet: correctly pad short
    packets") added the call to skb_padto() it should have been
    located before the nr_frags parameter was read since that value
    could be changed when padding packets with lengths between 55
    and 59 bytes (inclusive).
    
    The use of a stale nr_frags value can cause corruption of the
    pad data when tx-scatter-gather is enabled. This corruption of
    the pad can cause invalid checksum computation when hardware
    offload of tx-checksum is also enabled.
    
    Since the original reason for the padding was corrected by
    commit 7dd399130efb ("net: bcmgenet: fix skb_len in
    bcmgenet_xmit_single()") we can remove the software padding all
    together and make use of hardware padding of short frames as
    long as the hardware also always appends the FCS value to the
    frame.
    
    Fixes: 474ea9cafc45 ("net: bcmgenet: correctly pad short packets")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Acked-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 b34e578f36b9d70f487cc97b52ab44b0748d00d7
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Wed Jun 10 21:51:11 2020 +0100

    netfilter: ipset: fix unaligned atomic access
    
    [ Upstream commit 715028460082d07a7ec6fcd87b14b46784346a72 ]
    
    When using ip_set with counters and comment, traffic causes the kernel
    to panic on 32-bit ARM:
    
    Alignment trap: not handling instruction e1b82f9f at [<bf01b0dc>]
    Unhandled fault: alignment exception (0x221) at 0xea08133c
    PC is at ip_set_match_extensions+0xe0/0x224 [ip_set]
    
    The problem occurs when we try to update the 64-bit counters - the
    faulting address above is not 64-bit aligned.  The problem occurs
    due to the way elements are allocated, for example:
    
            set->dsize = ip_set_elem_len(set, tb, 0, 0);
            map = ip_set_alloc(sizeof(*map) + elements * set->dsize);
    
    If the element has a requirement for a member to be 64-bit aligned,
    and set->dsize is not a multiple of 8, but is a multiple of four,
    then every odd numbered elements will be misaligned - and hitting
    an atomic64_add() on that element will cause the kernel to panic.
    
    ip_set_elem_len() must return a size that is rounded to the maximum
    alignment of any extension field stored in the element.  This change
    ensures that is the case.
    
    Fixes: 95ad1f4a9358 ("netfilter: ipset: Fix extension alignment")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5034b1fdb0ca35c8c092db4457d4ca1c2f472626
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Jun 15 14:27:19 2020 +0300

    usb: gadget: udc: Potential Oops in error handling code
    
    [ Upstream commit e55f3c37cb8d31c7e301f46396b2ac6a19eb3a7c ]
    
    If this is in "transceiver" mode the the ->qwork isn't required and is
    a NULL pointer.  This can lead to a NULL dereference when we call
    destroy_workqueue(udc->qwork).
    
    Fixes: 3517c31a8ece ("usb: gadget: mv_udc: use devm_xxx for probe")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5e4ce482e22f0d5359a39880c155cc4ca2f4455
Author: yu kuai <yukuai3@huawei.com>
Date:   Thu Jun 4 20:42:06 2020 +0800

    ARM: imx5: add missing put_device() call in imx_suspend_alloc_ocram()
    
    [ Upstream commit 586745f1598ccf71b0a5a6df2222dee0a865954e ]
    
    if of_find_device_by_node() succeed, imx_suspend_alloc_ocram() doesn't
    have a corresponding put_device(). Thus add a jump target to fix the
    exception handling for this function implementation.
    
    Fixes: 1579c7b9fe01 ("ARM: imx53: Set DDR pins to high impedance when in suspend to RAM.")
    Signed-off-by: yu kuai <yukuai3@huawei.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10ecd2348fb5b4896a52283bdc06542b6342221d
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Wed Jun 24 01:51:31 2020 +0530

    cxgb4: move handling L2T ARP failures to caller
    
    [ Upstream commit 11d8cd5c9f3b46f397f889cefdb66795518aaebd ]
    
    Move code handling L2T ARP failures to the only caller.
    
    Fixes following sparse warning:
    skbuff.h:2091:29: warning: context imbalance in
    'handle_failed_resolution' - unexpected unlock
    
    Fixes: 749cb5fe48bb ("cxgb4: Replace arpq_head/arpq_tail with SKB double link-list code")
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34931cf6c9929a6a5513cb4baef0965ee70a1275
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:33 2020 +0300

    net: qed: fix excessive QM ILT lines consumption
    
    [ Upstream commit d434d02f7e7c24c721365fd594ed781acb18e0da ]
    
    This is likely a copy'n'paste mistake. The amount of ILT lines to
    reserve for a single VF was being multiplied by the total VFs count.
    This led to a huge redundancy in reservation and potential lines
    drainouts.
    
    Fixes: 1408cc1fa48c ("qed: Introduce VFs")
    Signed-off-by: Alexander Lobakin <alobakin@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6f02b445f7ccfeb0061a88ea0d38f369f869641
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:32 2020 +0300

    net: qed: fix NVMe login fails over VFs
    
    [ Upstream commit ccd7c7ce167a21dbf2b698ffcf00f11d96d44f9b ]
    
    25ms sleep cycles in waiting for PF response are excessive and may lead
    to different timeout failures.
    
    Start to wait with short udelays, and in most cases polling will end
    here. If the time was not sufficient, switch to msleeps.
    usleep_range() may go far beyond 100us depending on platform and tick
    configuration, hence atomic udelays for consistency.
    
    Also add explicit DMA barriers since 'done' always comes from a shared
    request-response DMA pool, and note that in the comment nearby.
    
    Fixes: 1408cc1fa48c ("qed: Introduce VFs")
    Signed-off-by: Alexander Lobakin <alobakin@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d10d0539c52e71f03f227c88a3225b052273dc0a
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:29 2020 +0300

    net: qed: fix left elements count calculation
    
    [ Upstream commit 97dd1abd026ae4e6a82fa68645928404ad483409 ]
    
    qed_chain_get_element_left{,_u32} returned 0 when the difference
    between producer and consumer page count was equal to the total
    page count.
    Fix this by conditional expanding of producer value (vs
    unconditional). This allowed to eliminate normalizaton against
    total page count, which was the cause of this bug.
    
    Misc: replace open-coded constants with common defines.
    
    Fixes: a91eb52abb50 ("qed: Revisit chain implementation")
    Signed-off-by: Alexander Lobakin <alobakin@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6d76e02802865ac710145f7b9f2ae6c0aa0415c
Author: Fan Guo <guofan5@huawei.com>
Date:   Fri Jun 12 14:38:24 2020 +0800

    RDMA/mad: Fix possible memory leak in ib_mad_post_receive_mads()
    
    [ Upstream commit a17f4bed811c60712d8131883cdba11a105d0161 ]
    
    If ib_dma_mapping_error() returns non-zero value,
    ib_mad_post_receive_mads() will jump out of loops and return -ENOMEM
    without freeing mad_priv. Fix this memory-leak problem by freeing mad_priv
    in this case.
    
    Fixes: 2c34e68f4261 ("IB/mad: Check and handle potential DMA mapping errors")
    Link: https://lore.kernel.org/r/20200612063824.180611-1-guofan5@huawei.com
    Signed-off-by: Fan Guo <guofan5@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df5888912859c26b9d7cb825eb26920f5e0f9c67
Author: Qiushi Wu <wu000273@umn.edu>
Date:   Sat Jun 13 15:51:58 2020 -0500

    ASoC: rockchip: Fix a reference count leak.
    
    [ Upstream commit f141a422159a199f4c8dedb7e0df55b3b2cf16cd ]
    
    Calling pm_runtime_get_sync increments the counter even in case of
    failure, causing incorrect ref count if pm_runtime_put is not called in
    error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails.
    
    Fixes: fc05a5b22253 ("ASoC: rockchip: add support for pdm controller")
    Signed-off-by: Qiushi Wu <wu000273@umn.edu>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20200613205158.27296-1-wu000273@umn.edu
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a62f833055c7adbb01d8765a92f7bdf218d86697
Author: Mark Zhang <markz@mellanox.com>
Date:   Tue Jun 16 13:43:04 2020 +0300

    RDMA/cma: Protect bind_list and listen_list while finding matching cm id
    
    [ Upstream commit 730c8912484186d4623d0c76509066d285c3a755 ]
    
    The bind_list and listen_list must be accessed under a lock, add the
    missing locking around the access in cm_ib_id_from_event()
    
    In addition add lockdep asserts to make it clearer what the locking
    semantic is here.
    
      general protection fault: 0000 [#1] SMP NOPTI
      CPU: 226 PID: 126135 Comm: kworker/226:1 Tainted: G OE 4.12.14-150.47-default #1 SLE15
      Hardware name: Cray Inc. Windom/Windom, BIOS 0.8.7 01-10-2020
      Workqueue: ib_cm cm_work_handler [ib_cm]
      task: ffff9c5a60a1d2c0 task.stack: ffffc1d91f554000
      RIP: 0010:cma_ib_req_handler+0x3f1/0x11b0 [rdma_cm]
      RSP: 0018:ffffc1d91f557b40 EFLAGS: 00010286
      RAX: deacffffffffff30 RBX: 0000000000000001 RCX: ffff9c2af5bb6000
      RDX: 00000000000000a9 RSI: ffff9c5aa4ed2f10 RDI: ffffc1d91f557b08
      RBP: ffffc1d91f557d90 R08: ffff9c340cc80000 R09: ffff9c2c0f901900
      R10: 0000000000000000 R11: 0000000000000001 R12: deacffffffffff30
      R13: ffff9c5a48aeec00 R14: ffffc1d91f557c30 R15: ffff9c5c2eea3688
      FS: 0000000000000000(0000) GS:ffff9c5c2fa80000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00002b5cc03fa320 CR3: 0000003f8500a000 CR4: 00000000003406e0
      Call Trace:
      ? rdma_addr_cancel+0xa0/0xa0 [ib_core]
      ? cm_process_work+0x28/0x140 [ib_cm]
      cm_process_work+0x28/0x140 [ib_cm]
      ? cm_get_bth_pkey.isra.44+0x34/0xa0 [ib_cm]
      cm_work_handler+0xa06/0x1a6f [ib_cm]
      ? __switch_to_asm+0x34/0x70
      ? __switch_to_asm+0x34/0x70
      ? __switch_to_asm+0x40/0x70
      ? __switch_to_asm+0x34/0x70
      ? __switch_to_asm+0x40/0x70
      ? __switch_to_asm+0x34/0x70
      ? __switch_to_asm+0x40/0x70
      ? __switch_to+0x7c/0x4b0
      ? __switch_to_asm+0x40/0x70
      ? __switch_to_asm+0x34/0x70
      process_one_work+0x1da/0x400
      worker_thread+0x2b/0x3f0
      ? process_one_work+0x400/0x400
      kthread+0x118/0x140
      ? kthread_create_on_node+0x40/0x40
      ret_from_fork+0x22/0x40
      Code: 00 66 83 f8 02 0f 84 ca 05 00 00 49 8b 84 24 d0 01 00 00 48 85 c0 0f 84 68 07 00 00 48 2d d0 01
      00 00 49 89 c4 0f 84 59 07 00 00 <41> 0f b7 44 24 20 49 8b 77 50 66 83 f8 0a 75 9e 49 8b 7c 24 28
    
    Fixes: 4c21b5bcef73 ("IB/cma: Add net_dev and private data checks to RDMA CM")
    Link: https://lore.kernel.org/r/20200616104304.2426081-1-leon@kernel.org
    Signed-off-by: Mark Zhang <markz@mellanox.com>
    Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 51a544f05b056d805cbd5a3bd5693fd1530b1ef6
Author: Michal Kalderon <michal.kalderon@marvell.com>
Date:   Tue Jun 16 12:34:08 2020 +0300

    RDMA/qedr: Fix KASAN: use-after-free in ucma_event_handler+0x532
    
    [ Upstream commit 0dfbd5ecf28cbcb81674c49d34ee97366db1be44 ]
    
    Private data passed to iwarp_cm_handler is copied for connection request /
    response, but ignored otherwise.  If junk is passed, it is stored in the
    event and used later in the event processing.
    
    The driver passes an old junk pointer during connection close which leads
    to a use-after-free on event processing.  Set private data to NULL for
    events that don 't have private data.
    
      BUG: KASAN: use-after-free in ucma_event_handler+0x532/0x560 [rdma_ucm]
      kernel: Read of size 4 at addr ffff8886caa71200 by task kworker/u128:1/5250
      kernel:
      kernel: Workqueue: iw_cm_wq cm_work_handler [iw_cm]
      kernel: Call Trace:
      kernel: dump_stack+0x8c/0xc0
      kernel: print_address_description.constprop.0+0x1b/0x210
      kernel: ? ucma_event_handler+0x532/0x560 [rdma_ucm]
      kernel: ? ucma_event_handler+0x532/0x560 [rdma_ucm]
      kernel: __kasan_report.cold+0x1a/0x33
      kernel: ? ucma_event_handler+0x532/0x560 [rdma_ucm]
      kernel: kasan_report+0xe/0x20
      kernel: check_memory_region+0x130/0x1a0
      kernel: memcpy+0x20/0x50
      kernel: ucma_event_handler+0x532/0x560 [rdma_ucm]
      kernel: ? __rpc_execute+0x608/0x620 [sunrpc]
      kernel: cma_iw_handler+0x212/0x330 [rdma_cm]
      kernel: ? iw_conn_req_handler+0x6e0/0x6e0 [rdma_cm]
      kernel: ? enqueue_timer+0x86/0x140
      kernel: ? _raw_write_lock_irq+0xd0/0xd0
      kernel: cm_work_handler+0xd3d/0x1070 [iw_cm]
    
    Fixes: e411e0587e0d ("RDMA/qedr: Add iWARP connection management functions")
    Link: https://lore.kernel.org/r/20200616093408.17827-1-michal.kalderon@marvell.com
    Signed-off-by: Ariel Elior <ariel.elior@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62745e57440e3dc3b60f2d67a0aa0ff83b7a2bcb
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jun 17 23:01:23 2020 +0100

    rxrpc: Fix handling of rwind from an ACK packet
    
    [ Upstream commit a2ad7c21ad8cf1ce4ad65e13df1c2a1c29b38ac5 ]
    
    The handling of the receive window size (rwind) from a received ACK packet
    is not correct.  The rxrpc_input_ackinfo() function currently checks the
    current Tx window size against the rwind from the ACK to see if it has
    changed, but then limits the rwind size before storing it in the tx_winsize
    member and, if it increased, wake up the transmitting process.  This means
    that if rwind > RXRPC_RXTX_BUFF_SIZE - 1, this path will always be
    followed.
    
    Fix this by limiting rwind before we compare it to tx_winsize.
    
    The effect of this can be seen by enabling the rxrpc_rx_rwind_change
    tracepoint.
    
    Fixes: 702f2ac87a9a ("rxrpc: Wake up the transmitter if Rx window size increases on the peer")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f29174030fa7beb532cf253c61cf961a59d5970
Author: Matthew Hagan <mnhagan88@gmail.com>
Date:   Sun Jun 14 15:19:00 2020 -0700

    ARM: dts: NSP: Correct FA2 mailbox node
    
    [ Upstream commit ac4e106d8934a5894811fc263f4b03fc8ed0fb7a ]
    
    The FA2 mailbox is specified at 0x18025000 but should actually be
    0x18025c00, length 0x400 according to socregs_nsp.h and board_bu.c. Also
    the interrupt was off by one and should be GIC SPI 151 instead of 150.
    
    Fixes: 17d517172300 ("ARM: dts: NSP: Add mailbox (PDC) to NSP")
    Signed-off-by: Matthew Hagan <mnhagan88@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef743e2786d154c766816ce2482c36c4fcdd7379
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Wed Jun 17 16:21:29 2020 +0100

    regmap: Fix memory leak from regmap_register_patch
    
    [ Upstream commit 95b2c3ec4cb1689db2389c251d39f64490ba641c ]
    
    When a register patch is registered the reg_sequence is copied but the
    memory allocated is never freed. Add a kfree in regmap_exit to clean it
    up.
    
    Fixes: 22f0d90a3482 ("regmap: Support register patch sets")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20200617152129.19655-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4cd86a098fb34331032dcb35f882fc8bc8dafd3
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jun 2 22:36:11 2020 +0300

    x86/resctrl: Fix a NULL vs IS_ERR() static checker warning in rdt_cdp_peer_get()
    
    [ Upstream commit cc5277fe66cf3ad68f41f1c539b2ef0d5e432974 ]
    
    The callers don't expect *d_cdp to be set to an error pointer, they only
    check for NULL.  This leads to a static checker warning:
    
      arch/x86/kernel/cpu/resctrl/rdtgroup.c:2648 __init_one_rdt_domain()
      warn: 'd_cdp' could be an error pointer
    
    This would not trigger a bug in this specific case because
    __init_one_rdt_domain() calls it with a valid domain that would not have
    a negative id and thus not trigger the return of the ERR_PTR(). If this
    was a negative domain id then the call to rdt_find_domain() in
    domain_add_cpu() would have returned the ERR_PTR() much earlier and the
    creation of the domain with an invalid id would have been prevented.
    
    Even though a bug is not triggered currently the right and safe thing to
    do is to set the pointer to NULL because that is what can be checked for
    when the caller is handling the CDP and non-CDP cases.
    
    Fixes: 52eb74339a62 ("x86/resctrl: Fix rdt_find_domain() return value and checks")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Reinette Chatre <reinette.chatre@intel.com>
    Acked-by: Fenghua Yu <fenghua.yu@intel.com>
    Link: https://lkml.kernel.org/r/20200602193611.GA190851@mwanda
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17f09d91f86a3c028fd37742bb1149ebcb39768b
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Jun 12 10:19:50 2020 -0700

    ARM: dts: Fix duovero smsc interrupt for suspend
    
    [ Upstream commit 9cf28e41f9f768791f54ee18333239fda6927ed8 ]
    
    While testing the recent suspend and resume regressions I noticed that
    duovero can still end up losing edge gpio interrupts on runtime
    suspend. This causes NFSroot easily stopping working after resume on
    duovero.
    
    Let's fix the issue by using gpio level interrupts for smsc as then
    the gpio interrupt state is seen by the gpio controller on resume.
    
    Fixes: 731b409878a3 ("ARM: dts: Configure duovero for to allow core retention during idle")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a799de674c1064f213b91febe2a4c1e22688e0b
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Tue Jun 16 10:53:48 2020 +0800

    ASoC: fsl_ssi: Fix bclk calculation for mono channel
    
    [ Upstream commit ed1220df6e666500ebf58c4f2fccc681941646fb ]
    
    For mono channel, SSI will switch to Normal mode.
    
    In Normal mode and Network mode, the Word Length Control bits
    control the word length divider in clock generator, which is
    different with I2S Master mode (the word length is fixed to
    32bit), it should be the value of params_width(hw_params).
    
    The condition "slots == 2" is not good for I2S Master mode,
    because for Network mode and Normal mode, the slots can also
    be 2. Then we need to use (ssi->i2s_net & SSI_SCR_I2S_MODE_MASK)
    to check if it is I2S Master mode.
    
    So we refine the formula for mono channel, otherwise there
    will be sound issue for S24_LE.
    
    Fixes: b0a7043d5c2c ("ASoC: fsl_ssi: Caculate bit clock rate using slot number and width")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Link: https://lore.kernel.org/r/034eff1435ff6ce300b6c781130cefd9db22ab9a.1592276147.git.shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7064f60157c8fc763fbf7e96a7ae89197ba45d4b
Author: Robin Gong <yibin.gong@nxp.com>
Date:   Mon Jun 15 05:54:08 2020 +0800

    regualtor: pfuze100: correct sw1a/sw2 on pfuze3000
    
    [ Upstream commit 6f1cf5257acc6e6242ddf2f52bc7912aed77b79f ]
    
    PFUZE100_SWB_REG is not proper for sw1a/sw2, because enable_mask/enable_reg
    is not correct. On PFUZE3000, sw1a/sw2 should be the same as sw1a/sw2 on
    pfuze100 except that voltages are not linear, so add new PFUZE3000_SW_REG
    and pfuze3000_sw_regulator_ops which like the non-linear PFUZE100_SW_REG
    and pfuze100_sw_regulator_ops.
    
    Fixes: 1dced996ee70 ("regulator: pfuze100: update voltage setting for pfuze3000 sw1a")
    Reported-by: Christophe Meynard <Christophe.Meynard@ign.fr>
    Signed-off-by: Robin Gong <yibin.gong@nxp.com>
    Link: https://lore.kernel.org/r/1592171648-8752-1-git-send-email-yibin.gong@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a717bbd11e3962e8144ef3e34a0533231dd2c409
Author: Qiushi Wu <wu000273@umn.edu>
Date:   Thu May 28 13:38:04 2020 -0500

    efi/esrt: Fix reference count leak in esre_create_sysfs_entry.
    
    [ Upstream commit 4ddf4739be6e375116c375f0a68bf3893ffcee21 ]
    
    kobject_init_and_add() takes reference even when it fails.
    If this function returns an error, kobject_put() must be called to
    properly clean up the memory associated with the object. Previous
    commit "b8eb718348b8" fixed a similar problem.
    
    Fixes: 0bb549052d33 ("efi: Add esrt support")
    Signed-off-by: Qiushi Wu <wu000273@umn.edu>
    Link: https://lore.kernel.org/r/20200528183804.4497-1-wu000273@umn.edu
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 932a580890e085970f212080503d35c44d4d982f
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Thu Jun 11 13:41:53 2020 +0100

    ASoC: q6asm: handle EOS correctly
    
    [ Upstream commit 6476b60f32866be49d05e2e0163f337374c55b06 ]
    
    Successful send of EOS command does not indicate that EOS is actually
    finished, correct event to wait EOS is finished is EOS_RENDERED event.
    EOS_RENDERED means that the DSP has finished processing all the buffers
    for that particular session and stream.
    
    This patch fixes EOS handling!
    
    Fixes: 68fd8480bb7b ("ASoC: qdsp6: q6asm: Add support to audio stream apis")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20200611124159.20742-3-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 855150a762385644a8cf6535e5ec40a08207d8e7
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Mon Jun 1 16:39:37 2020 -0500

    xfrm: Fix double ESP trailer insertion in IPsec crypto offload.
    
    [ Upstream commit 94579ac3f6d0820adc83b5dc5358ead0158101e9 ]
    
    During IPsec performance testing, we see bad ICMP checksum. The error packet
    has duplicated ESP trailer due to double validate_xmit_xfrm calls. The first call
    is from ip_output, but the packet cannot be sent because
    netif_xmit_frozen_or_stopped is true and the packet gets dev_requeue_skb. The second
    call is from NET_TX softirq. However after the first call, the packet already
    has the ESP trailer.
    
    Fix by marking the skb with XFRM_XMIT bit after the packet is handled by
    validate_xmit_xfrm to avoid duplicate ESP trailer insertion.
    
    Fixes: f6e27114a60a ("net: Add a xfrm validate function to validate_xmit_skb")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Boris Pismenny <borisp@mellanox.com>
    Reviewed-by: Raed Salem <raeds@mellanox.com>
    Reviewed-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 39dad73040572bf5437ea3abd469b906d6522bc0
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Tue Jun 23 07:31:54 2020 -0400

    cifs/smb3: Fix data inconsistent when zero file range
    
    [ Upstream commit 6b69040247e14b43419a520f841f2b3052833df9 ]
    
    CIFS implements the fallocate(FALLOC_FL_ZERO_RANGE) with send SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the
    remote file to zero, but local page cache not update, then the data
    inconsistent with server, which leads the xfstest generic/008 failed.
    
    So we need to remove the local page caches before send SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server. After next read, it will
    re-cache it.
    
    Fixes: 30175628bf7f5 ("[SMB3] Enable fallocate -z support for SMB3 mounts")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Cc: stable@vger.kernel.org # v3.17
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4c710c4a39b8e96a88c43d138f666462f589072
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Tue Jun 23 07:31:53 2020 -0400

    cifs/smb3: Fix data inconsistent when punch hole
    
    [ Upstream commit acc91c2d8de4ef46ed751c5f9df99ed9a109b100 ]
    
    When punch hole success, we also can read old data from file:
      # strace -e trace=pread64,fallocate xfs_io -f -c "pread 20 40" \
               -c "fpunch 20 40" -c"pread 20 40" file
      pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40
      fallocate(3, FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE, 20, 40) = 0
      pread64(3, " version 5.8.0-rc1+"..., 40, 20) = 40
    
    CIFS implements the fallocate(FALLOCATE_FL_PUNCH_HOLE) with send SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the
    remote file to zero, but local page caches not updated, then the
    local page caches inconsistent with server.
    
    Also can be found by xfstests generic/316.
    
    So, we need to remove the page caches before send the SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server.
    
    Fixes: 31742c5a33176 ("enable fallocate punch hole ("fallocate -p") for SMB3")
    Suggested-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Cc: stable@vger.kernel.org # v3.17
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c5bf9f88f96212c25e824821e99194297167d848
Author: Shay Drory <shayd@mellanox.com>
Date:   Sun Jun 21 13:47:35 2020 +0300

    IB/mad: Fix use after free when destroying MAD agent
    
    commit 116a1b9f1cb769b83e5adff323f977a62b1dcb2e upstream.
    
    Currently, when RMPP MADs are processed while the MAD agent is destroyed,
    it could result in use after free of rmpp_recv, as decribed below:
    
            cpu-0                                           cpu-1
            -----                                           -----
    ib_mad_recv_done()
     ib_mad_complete_recv()
      ib_process_rmpp_recv_wc()
                                                    unregister_mad_agent()
                                                     ib_cancel_rmpp_recvs()
                                                      cancel_delayed_work()
       process_rmpp_data()
        start_rmpp()
         queue_delayed_work(rmpp_recv->cleanup_work)
                                                      destroy_rmpp_recv()
                                                       free_rmpp_recv()
         cleanup_work()[1]
          spin_lock_irqsave(&rmpp_recv->agent->lock) <-- use after free
    
    [1] cleanup_work() == recv_cleanup_handler
    
    Fix it by waiting for the MAD agent reference count becoming zero before
    calling to ib_cancel_rmpp_recvs().
    
    Fixes: 9a41e38a467c ("IB/mad: Use IDR for agent IDs")
    Link: https://lore.kernel.org/r/20200621104738.54850-2-leon@kernel.org
    Signed-off-by: Shay Drory <shayd@mellanox.com>
    Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a388c0a88b7d676418b5861cfa40a159013cc6a6
Author: Zheng Bin <zhengbin13@huawei.com>
Date:   Thu Jun 18 12:21:37 2020 +0800

    loop: replace kill_bdev with invalidate_bdev
    
    commit f4bd34b139a3fa2808c4205f12714c65e1548c6c upstream.
    
    When a filesystem is mounted on a loop device and on a loop ioctl
    LOOP_SET_STATUS64, because of kill_bdev, buffer_head mappings are getting
    destroyed.
    kill_bdev
      truncate_inode_pages
        truncate_inode_pages_range
          do_invalidatepage
            block_invalidatepage
              discard_buffer  -->clear BH_Mapped flag
    
    sb_bread
      __bread_gfp
      bh = __getblk_gfp
      -->discard_buffer clear BH_Mapped flag
      __bread_slow
        submit_bh
          submit_bh_wbc
            BUG_ON(!buffer_mapped(bh))  --> hit this BUG_ON
    
    Fixes: 5db470e229e2 ("loop: drop caches if offset or block_size are changed")
    Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a313eeaf80b647aa7bb4b8c2003290ffa6fbdf26
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Fri Jun 5 12:54:18 2020 +0200

    cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip
    
    commit 03894573f2913181ee5aae0089f333b2131f2d4b upstream.
    
    USB_DEVICE(0x0424, 0x274e) can send data before cdc_acm is ready,
    causing garbage chars on the TTY causing stray input to the shell
    and/or login prompt.
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: stable@vger.kernel.org
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20200605105418.22263-1-joakim.tjernlund@infinera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a81f69d6ff96b88e23335f90ce53f4d1cfa8a817
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Jun 24 16:59:48 2020 +0300

    xhci: Return if xHCI doesn't support LPM
    
    commit f0c472a6da51f9fac15e80fe2fd9c83b68754cff upstream.
    
    Just return if xHCI is quirked to disable LPM. We can save some time
    from reading registers and doing spinlocks.
    
    Add stable tag as we want this patch together with the next one,
    "Poll for U0 after disabling USB2 LPM" which fixes a suspend issue
    for some USB2 LPM devices
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-5-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26a7aefb9a5fa51e65ea64d46538b58998f26b03
Author: Al Cooper <alcooperx@gmail.com>
Date:   Wed Jun 24 16:59:46 2020 +0300

    xhci: Fix enumeration issue when setting max packet size for FS devices.
    
    commit a73d9d9cfc3cfceabd91fb0b0c13e4062b6dbcd7 upstream.
    
    Unable to complete the enumeration of a USB TV Tuner device.
    
    Per XHCI spec (4.6.5), the EP state field of the input context shall
    be cleared for a set address command. In the special case of an FS
    device that has "MaxPacketSize0 = 8", the Linux XHCI driver does
    not do this before evaluating the context. With an XHCI controller
    that checks the EP state field for parameter context error this
    causes a problem in cases such as the device getting reset again
    after enumeration.
    
    When that field is cleared, the problem does not occur.
    
    This was found and fixed by Sasi Kumar.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Cooper <alcooperx@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7ed5fc0c1c6e9c22e35076e0e28a0fdf585aa5b
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Wed Jun 24 16:59:45 2020 +0300

    xhci: Fix incorrect EP_STATE_MASK
    
    commit dceea67058fe22075db3aed62d5cb62092be5053 upstream.
    
    EP_STATE_MASK should be 0x7 instead of 0xf
    
    xhci spec 6.2.3 shows that the EP state field in the endpoint context data
    structure consist of bits [2:0].
    The old value included a bit from the next field which fortunately is a
     RsvdZ region. So hopefully this hasn't caused too much harm
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2621f1579d167b2c4133d115d6eff9557991d06
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Tue Jun 23 16:02:42 2020 +0200

    scsi: zfcp: Fix panic on ERP timeout for previously dismissed ERP action
    
    commit 936e6b85da0476dd2edac7c51c68072da9fb4ba2 upstream.
    
    Suppose that, for unrelated reasons, FSF requests on behalf of recovery are
    very slow and can run into the ERP timeout.
    
    In the case at hand, we did adapter recovery to a large degree.  However
    due to the slowness a LUN open is pending so the corresponding fc_rport
    remains blocked.  After fast_io_fail_tmo we trigger close physical port
    recovery for the port under which the LUN should have been opened.  The new
    higher order port recovery dismisses the pending LUN open ERP action and
    dismisses the pending LUN open FSF request.  Such dismissal decouples the
    ERP action from the pending corresponding FSF request by setting
    zfcp_fsf_req->erp_action to NULL (among other things)
    [zfcp_erp_strategy_check_fsfreq()].
    
    If now the ERP timeout for the pending open LUN request runs out, we must
    not use zfcp_fsf_req->erp_action in the ERP timeout handler.  This is a
    problem since v4.15 commit 75492a51568b ("s390/scsi: Convert timers to use
    timer_setup()"). Before that we intentionally only passed zfcp_erp_action
    as context argument to zfcp_erp_timeout_handler().
    
    Note: The lifetime of the corresponding zfcp_fsf_req object continues until
    a (late) response or an (unrelated) adapter recovery.
    
    Just like the regular response path ignores dismissed requests
    [zfcp_fsf_req_complete() => zfcp_fsf_protstatus_eval() => return early] the
    ERP timeout handler now needs to ignore dismissed requests.  So simply
    return early in the ERP timeout handler if the FSF request is marked as
    dismissed in its status flags.  To protect against the race where
    zfcp_erp_strategy_check_fsfreq() dismisses and sets
    zfcp_fsf_req->erp_action to NULL after our previous status flag check,
    return early if zfcp_fsf_req->erp_action is NULL.  After all, the former
    ERP action does not need to be woken up as that was already done as part of
    the dismissal above [zfcp_erp_action_dismiss()].
    
    This fixes the following panic due to kernel page fault in IRQ context:
    
    Unable to handle kernel pointer dereference in virtual kernel address space
    Failing address: 0000000000000000 TEID: 0000000000000483
    Fault in home space mode while using kernel ASCE.
    AS:000009859238c00b R2:00000e3e7ffd000b R3:00000e3e7ffcc007 S:00000e3e7ffd7000 P:000000000000013d
    Oops: 0004 ilc:2 [#1] SMP
    Modules linked in: ...
    CPU: 82 PID: 311273 Comm: stress Kdump: loaded Tainted: G            E  X   ...
    Hardware name: IBM 8561 T01 701 (LPAR)
    Krnl PSW : 0404c00180000000 001fffff80549be0 (zfcp_erp_notify+0x40/0xc0 [zfcp])
               R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    Krnl GPRS: 0000000000000080 00000e3d00000000 00000000000000f0 0000000000030000
               000000010028e700 000000000400a39c 000000010028e700 00000e3e7cf87e02
               0000000010000000 0700098591cb67f0 0000000000000000 0000000000000000
               0000033840e9a000 0000000000000000 001fffe008d6bc18 001fffe008d6bbc8
    Krnl Code: 001fffff80549bd4: a7180000            lhi     %r1,0
               001fffff80549bd8: 4120a0f0            la      %r2,240(%r10)
              #001fffff80549bdc: a53e0003            llilh   %r3,3
              >001fffff80549be0: ba132000            cs      %r1,%r3,0(%r2)
               001fffff80549be4: a7740037            brc     7,1fffff80549c52
               001fffff80549be8: e320b0180004        lg      %r2,24(%r11)
               001fffff80549bee: e31020e00004        lg      %r1,224(%r2)
               001fffff80549bf4: 412020e0            la      %r2,224(%r2)
    Call Trace:
     [<001fffff80549be0>] zfcp_erp_notify+0x40/0xc0 [zfcp]
     [<00000985915e26f0>] call_timer_fn+0x38/0x190
     [<00000985915e2944>] expire_timers+0xfc/0x190
     [<00000985915e2ac4>] run_timer_softirq+0xec/0x218
     [<0000098591ca7c4c>] __do_softirq+0x144/0x398
     [<00000985915110aa>] do_softirq_own_stack+0x72/0x88
     [<0000098591551b58>] irq_exit+0xb0/0xb8
     [<0000098591510c6a>] do_IRQ+0x82/0xb0
     [<0000098591ca7140>] ext_int_handler+0x128/0x12c
     [<0000098591722d98>] clear_subpage.constprop.13+0x38/0x60
    ([<000009859172ae4c>] clear_huge_page+0xec/0x250)
     [<000009859177e7a2>] do_huge_pmd_anonymous_page+0x32a/0x768
     [<000009859172a712>] __handle_mm_fault+0x88a/0x900
     [<000009859172a860>] handle_mm_fault+0xd8/0x1b0
     [<0000098591529ef6>] do_dat_exception+0x136/0x3e8
     [<0000098591ca6d34>] pgm_check_handler+0x1c8/0x220
    Last Breaking-Event-Address:
     [<001fffff80549c88>] zfcp_erp_timeout_handler+0x10/0x18 [zfcp]
    Kernel panic - not syncing: Fatal exception in interrupt
    
    Link: https://lore.kernel.org/r/20200623140242.98864-1-maier@linux.ibm.com
    Fixes: 75492a51568b ("s390/scsi: Convert timers to use timer_setup()")
    Cc: <stable@vger.kernel.org> #4.15+
    Reviewed-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4e1c1016ca83e6c1deb301b27aa60135a248caf
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jun 24 14:23:40 2020 +0200

    ALSA: usb-audio: Fix OOB access of mixer element list
    
    commit 220345e98f1cdc768eeb6e3364a0fa7ab9647fe7 upstream.
    
    The USB-audio mixer code holds a linked list of usb_mixer_elem_list,
    and several operations are performed for each mixer element.  A few of
    them (snd_usb_mixer_notify_id() and snd_usb_mixer_interrupt_v2())
    assume each mixer element being a usb_mixer_elem_info object that is a
    subclass of usb_mixer_elem_list, cast via container_of() and access it
    members.  This may result in an out-of-bound access when a
    non-standard list element has been added, as spotted by syzkaller
    recently.
    
    This patch adds a new field, is_std_info, in usb_mixer_elem_list to
    indicate that the element is the usb_mixer_elem_info type or not, and
    skip the access to such an element if needed.
    
    Reported-by: syzbot+fb14314433463ad51625@syzkaller.appspotmail.com
    Reported-by: syzbot+2405ca3401e943c538b5@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200624122340.9615-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75208a11683a3d29b3bb93166cdac67d8cf2324b
Author: Macpaul Lin <macpaul.lin@mediatek.com>
Date:   Tue Jun 23 19:03:23 2020 +0800

    ALSA: usb-audio: add quirk for Samsung USBC Headset (AKG)
    
    commit a32a1fc99807244d920d274adc46ba04b538cc8a upstream.
    
    We've found Samsung USBC Headset (AKG) (VID: 0x04e8, PID: 0xa051)
    need a tiny delay after each class compliant request.
    Otherwise the device might not be able to be recognized each times.
    
    Signed-off-by: Chihhao Chen <chihhao.chen@mediatek.com>
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/1592910203-24035-1-git-send-email-macpaul.lin@mediatek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0237a33e8b6eb7236b316794ca2fd1890b7cebe4
Author: Yick W. Tse <y_w_tse@yahoo.com.hk>
Date:   Sat Jun 13 11:40:06 2020 +0000

    ALSA: usb-audio: add quirk for Denon DCD-1500RE
    
    commit c9808bbfed3cfc911ecb60fe8e80c0c27876c657 upstream.
    
    fix error "clock source 41 is not valid, cannot use"
    
    [] New USB device found, idVendor=154e, idProduct=1002, bcdDevice= 1.00
    [] New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [] Product: DCD-1500RE
    [] Manufacturer: D & M Holdings Inc.
    []
    [] clock source 41 is not valid, cannot use
    [] usbcore: registered new interface driver snd-usb-audio
    
    Signed-off-by: Yick W. Tse <y_w_tse@yahoo.com.hk>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1373857985.210365.1592048406997@mail.yahoo.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4309ab96ab744703871e35d829177dd9347bf643
Author: Li Jun <jun.li@nxp.com>
Date:   Thu Jun 4 19:21:18 2020 +0800

    usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs
    
    commit 302c570bf36e997d55ad0d60628a2feec76954a4 upstream.
    
    John reported screaming irq caused by rt1711h when system boot[1],
    this is because irq request is done before tcpci_register_port(),
    so the chip->tcpci has not been setup, irq handler is entered but
    can't do anything, this patch is to address this by moving the irq
    request after tcpci_register_port().
    
    [1] https://lore.kernel.org/linux-usb/20200530040157.31038-1-john.stultz@linaro.org
    
    Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
    Cc: stable <stable@vger.kernel.org> # v4.18+
    Cc: John Stultz <john.stultz@linaro.org>
    Reported-and-tested-by: John Stultz <john.stultz@linaro.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Link: https://lore.kernel.org/r/20200604112118.38062-1-jun.li@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbf360ace613e1f59cc3a13758b738672d96a54f
Author: Tang Bin <tangbin@cmss.chinamobile.com>
Date:   Tue Jun 2 19:47:08 2020 +0800

    usb: host: ehci-exynos: Fix error check in exynos_ehci_probe()
    
    commit 44ed240d62736ad29943ec01e41e194b96f7c5e9 upstream.
    
    If the function platform_get_irq() failed, the negative value
    returned will not be detected here. So fix error handling in
    exynos_ehci_probe(). And when get irq failed, the function
    platform_get_irq() logs an error message, so remove redundant
    message here.
    
    Fixes: 1bcc5aa87f04 ("USB: Add initial S5P EHCI driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
    Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20200602114708.28620-1-tangbin@cmss.chinamobile.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5e2b5087d32e0737a919bfb232c49ecd627420c
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Jun 24 16:59:49 2020 +0300

    xhci: Poll for U0 after disabling USB2 LPM
    
    commit b3d71abd135e6919ca0b6cab463738472653ddfb upstream.
    
    USB2 devices with LPM enabled may interrupt the system suspend:
    [  932.510475] usb 1-7: usb suspend, wakeup 0
    [  932.510549] hub 1-0:1.0: hub_suspend
    [  932.510581] usb usb1: bus suspend, wakeup 0
    [  932.510590] xhci_hcd 0000:00:14.0: port 9 not suspended
    [  932.510593] xhci_hcd 0000:00:14.0: port 8 not suspended
    ..
    [  932.520323] xhci_hcd 0000:00:14.0: Port change event, 1-7, id 7, portsc: 0x400e03
    ..
    [  932.591405] PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
    [  932.591414] PM: dpm_run_callback(): pci_pm_suspend+0x0/0x160 returns -16
    [  932.591418] PM: Device 0000:00:14.0 failed to suspend async: error -16
    
    During system suspend, USB core will let HC suspends the device if it
    doesn't have remote wakeup enabled and doesn't have any children.
    However, from the log above we can see that the usb 1-7 doesn't get bus
    suspended due to not in U0. After a while the port finished U2 -> U0
    transition, interrupts the suspend process.
    
    The observation is that after disabling LPM, port doesn't transit to U0
    immediately and can linger in U2. xHCI spec 4.23.5.2 states that the
    maximum exit latency for USB2 LPM should be BESL + 10us. The BESL for
    the affected device is advertised as 400us, which is still not enough
    based on my testing result.
    
    So let's use the maximum permitted latency, 10000, to poll for U0
    status to solve the issue.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-6-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdde366619c61520b628ce13a30b21cef0e5260b
Author: Macpaul Lin <macpaul.lin@mediatek.com>
Date:   Wed Jun 24 16:59:47 2020 +0300

    usb: host: xhci-mtk: avoid runtime suspend when removing hcd
    
    commit a24d5072e87457a14023ee1dd3fc8b1e76f899ef upstream.
    
    When runtime suspend was enabled, runtime suspend might happen
    when xhci is removing hcd. This might cause kernel panic when hcd
    has been freed but runtime pm suspend related handle need to
    reference it.
    
    Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
    Reviewed-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20200624135949.22611-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 290156ff4015f73b84625c0a581a4d83927f2f39
Author: Longfang Liu <liulongfang@huawei.com>
Date:   Mon Jun 8 11:46:59 2020 +0800

    USB: ehci: reopen solution for Synopsys HC bug
    
    commit 1ddcb71a3edf0e1682b6e056158e4c4b00325f66 upstream.
    
    A Synopsys USB2.0 core used in Huawei Kunpeng920 SoC has a bug which
    might cause the host controller not issuing ping.
    
    Bug description:
    After indicating an Interrupt on Async Advance, the software uses the
    doorbell mechanism to delete the Next Link queue head of the last
    executed queue head. At this time, the host controller still references
    the removed queue head(the queue head is NULL). NULL reference causes
    the host controller to lose the USB device.
    
    Solution:
    After deleting the Next Link queue head, when has_synopsys_hc_bug set
    to 1,the software can write one of the valid queue head addresses to
    the ASYNCLISTADDR register to allow the host controller to get
    the valid queue head. in order to solve that problem, this patch set
    the flag for Huawei Kunpeng920
    
    There are detailed instructions and solutions in this patch:
    commit 2f7ac6c19997 ("USB: ehci: add workaround for Synopsys HC bug")
    
    Signed-off-by: Longfang Liu <liulongfang@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/1591588019-44284-1-git-send-email-liulongfang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8736e585dc1565f4373109769b298e653158ceb2
Author: Tomasz Meresiński <tomasz@meresinski.eu>
Date:   Wed Jun 3 22:33:46 2020 +0200

    usb: add USB_QUIRK_DELAY_INIT for Logitech C922
    
    commit 5d8021923e8a8cc37a421a64e27c7221f0fee33c upstream.
    
    The Logitech C922, just like other Logitech webcams,
    needs the USB_QUIRK_DELAY_INIT or it will randomly
    not respond after device connection
    
    Signed-off-by: Tomasz Meresiński <tomasz@meresinski.eu>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200603203347.7792-1-tomasz@meresinski.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52404065c8300985bd920d55b4609cb189f3872b
Author: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Date:   Tue Jun 9 12:28:11 2020 +0400

    usb: dwc2: Postponed gadget registration to the udc class driver
    
    commit 207324a321a866401b098cadf19e4a2dd6584622 upstream.
    
    During dwc2 driver probe, after gadget registration to the udc class
    driver, if exist any builtin function driver it immediately bound to
    dwc2 and after init host side (dwc2_hcd_init()) stucked in host mode.
    Patch postpone gadget registration after host side initialization done.
    
    Fixes: 117777b2c3bb9 ("usb: dwc2: Move gadget probe function into platform code")
    Reported-by: kbuild test robot <lkp@intel.com>
    Tested-by: Marek Vasut <marex@denx.de>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
    Link: https://lore.kernel.org/r/f21cb38fecc72a230b86155d94c7e60c9cb66f58.1591690938.git.hminas@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9baada66bedabfd63cbaa8cf6aa6172bab922e1
Author: Chuhong Yuan <hslester96@gmail.com>
Date:   Wed Jun 10 10:48:44 2020 +0800

    USB: ohci-sm501: Add missed iounmap() in remove
    
    commit 07c112fb09c86c0231f6ff0061a000ffe91c8eb9 upstream.
    
    This driver misses calling iounmap() in remove to undo the ioremap()
    called in probe.
    Add the missed call to fix it.
    
    Fixes: f54aab6ebcec ("usb: ohci-sm501 driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20200610024844.3628408-1-hslester96@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b11d1c71912b1f3e4474e1b231a2d21d2b9e3a27
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Tue Jun 16 15:52:05 2020 +0000

    net: core: reduce recursion limit value
    
    [ Upstream commit fb7861d14c8d7edac65b2fcb6e8031cb138457b2 ]
    
    In the current code, ->ndo_start_xmit() can be executed recursively only
    10 times because of stack memory.
    But, in the case of the vxlan, 10 recursion limit value results in
    a stack overflow.
    In the current code, the nested interface is limited by 8 depth.
    There is no critical reason that the recursion limitation value should
    be 10.
    So, it would be good to be the same value with the limitation value of
    nesting interface depth.
    
    Test commands:
        ip link add vxlan10 type vxlan vni 10 dstport 4789 srcport 4789 4789
        ip link set vxlan10 up
        ip a a 192.168.10.1/24 dev vxlan10
        ip n a 192.168.10.2 dev vxlan10 lladdr fc:22:33:44:55:66 nud permanent
    
        for i in {9..0}
        do
            let A=$i+1
            ip link add vxlan$i type vxlan vni $i dstport 4789 srcport 4789 4789
            ip link set vxlan$i up
            ip a a 192.168.$i.1/24 dev vxlan$i
            ip n a 192.168.$i.2 dev vxlan$i lladdr fc:22:33:44:55:66 nud permanent
            bridge fdb add fc:22:33:44:55:66 dev vxlan$A dst 192.168.$i.2 self
        done
        hping3 192.168.10.2 -2 -d 60000
    
    Splat looks like:
    [  103.814237][ T1127] =============================================================================
    [  103.871955][ T1127] BUG kmalloc-2k (Tainted: G    B            ): Padding overwritten. 0x00000000897a2e4f-0x000
    [  103.873187][ T1127] -----------------------------------------------------------------------------
    [  103.873187][ T1127]
    [  103.874252][ T1127] INFO: Slab 0x000000005cccc724 objects=5 used=5 fp=0x0000000000000000 flags=0x10000000001020
    [  103.881323][ T1127] CPU: 3 PID: 1127 Comm: hping3 Tainted: G    B             5.7.0+ #575
    [  103.882131][ T1127] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [  103.883006][ T1127] Call Trace:
    [  103.883324][ T1127]  dump_stack+0x96/0xdb
    [  103.883716][ T1127]  slab_err+0xad/0xd0
    [  103.884106][ T1127]  ? _raw_spin_unlock+0x1f/0x30
    [  103.884620][ T1127]  ? get_partial_node.isra.78+0x140/0x360
    [  103.885214][ T1127]  slab_pad_check.part.53+0xf7/0x160
    [  103.885769][ T1127]  ? pskb_expand_head+0x110/0xe10
    [  103.886316][ T1127]  check_slab+0x97/0xb0
    [  103.886763][ T1127]  alloc_debug_processing+0x84/0x1a0
    [  103.887308][ T1127]  ___slab_alloc+0x5a5/0x630
    [  103.887765][ T1127]  ? pskb_expand_head+0x110/0xe10
    [  103.888265][ T1127]  ? lock_downgrade+0x730/0x730
    [  103.888762][ T1127]  ? pskb_expand_head+0x110/0xe10
    [  103.889244][ T1127]  ? __slab_alloc+0x3e/0x80
    [  103.889675][ T1127]  __slab_alloc+0x3e/0x80
    [  103.890108][ T1127]  __kmalloc_node_track_caller+0xc7/0x420
    [ ... ]
    
    Fixes: 11a766ce915f ("net: Increase xmit RECURSION_LIMIT to 10.")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5104916360636b374b229b5b9cfa477f23e9d859
Author: Tariq Toukan <tariqt@mellanox.com>
Date:   Mon Jun 22 23:26:04 2020 +0300

    net: Do not clear the sock TX queue in sk_set_socket()
    
    [ Upstream commit 41b14fb8724d5a4b382a63cb4a1a61880347ccb8 ]
    
    Clearing the sock TX queue in sk_set_socket() might cause unexpected
    out-of-order transmit when called from sock_orphan(), as outstanding
    packets can pick a different TX queue and bypass the ones already queued.
    
    This is undesired in general. More specifically, it breaks the in-order
    scheduling property guarantee for device-offloaded TLS sockets.
    
    Remove the call to sk_tx_queue_clear() in sk_set_socket(), and add it
    explicitly only where needed.
    
    Fixes: e022f0b4a03f ("net: Introduce sk_tx_queue_mapping")
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Reviewed-by: Boris Pismenny <borisp@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b821d05999e4a0d751fef950bf8b8701be382dec
Author: guodeqing <geffrey.guo@huawei.com>
Date:   Wed Jun 17 10:07:16 2020 +0800

    net: Fix the arp error in some cases
    
    [ Upstream commit 5eea3a63ff4aba6a26002e657a6d21934b7e2b96 ]
    
    ie.,
    $ ifconfig eth0 6.6.6.6 netmask 255.255.255.0
    
    $ ip rule add from 6.6.6.6 table 6666
    
    $ ip route add 9.9.9.9 via 6.6.6.6
    
    $ ping -I 6.6.6.6 9.9.9.9
    PING 9.9.9.9 (9.9.9.9) from 6.6.6.6 : 56(84) bytes of data.
    
    3 packets transmitted, 0 received, 100% packet loss, time 2079ms
    
    $ arp
    Address     HWtype  HWaddress           Flags Mask            Iface
    6.6.6.6             (incomplete)                              eth0
    
    The arp request address is error, this is because fib_table_lookup in
    fib_check_nh lookup the destnation 9.9.9.9 nexthop, the scope of
    the fib result is RT_SCOPE_LINK,the correct scope is RT_SCOPE_HOST.
    Here I add a check of whether this is RT_TABLE_MAIN to solve this problem.
    
    Fixes: 3bfd847203c6 ("net: Use passed in table for nexthop lookups")
    Signed-off-by: guodeqing <geffrey.guo@huawei.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90814e33ff3299bf9ee8f9c3c01b21b9310517b3
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Thu Jun 25 22:12:08 2020 +0200

    sch_cake: don't call diffserv parsing code when it is not needed
    
    [ Upstream commit 8c95eca0bb8c4bd2231a0d581f1ad0d50c90488c ]
    
    As a further optimisation of the diffserv parsing codepath, we can skip it
    entirely if CAKE is configured to neither use diffserv-based
    classification, nor to zero out the diffserv bits.
    
    Fixes: c87b4ecdbe8d ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98e4a3407566f8e7dbd89b1d522eb894b1fefaa3
Author: Neal Cardwell <ncardwell@google.com>
Date:   Wed Jun 24 12:42:02 2020 -0400

    tcp_cubic: fix spurious HYSTART_DELAY exit upon drop in min RTT
    
    [ Upstream commit b344579ca8478598937215f7005d6c7b84d28aee ]
    
    Mirja Kuehlewind reported a bug in Linux TCP CUBIC Hystart, where
    Hystart HYSTART_DELAY mechanism can exit Slow Start spuriously on an
    ACK when the minimum rtt of a connection goes down. From inspection it
    is clear from the existing code that this could happen in an example
    like the following:
    
    o The first 8 RTT samples in a round trip are 150ms, resulting in a
      curr_rtt of 150ms and a delay_min of 150ms.
    
    o The 9th RTT sample is 100ms. The curr_rtt does not change after the
      first 8 samples, so curr_rtt remains 150ms. But delay_min can be
      lowered at any time, so delay_min falls to 100ms. The code executes
      the HYSTART_DELAY comparison between curr_rtt of 150ms and delay_min
      of 100ms, and the curr_rtt is declared far enough above delay_min to
      force a (spurious) exit of Slow start.
    
    The fix here is simple: allow every RTT sample in a round trip to
    lower the curr_rtt.
    
    Fixes: ae27e98a5152 ("[TCP] CUBIC v2.3")
    Reported-by: Mirja Kuehlewind <mirja.kuehlewind@ericsson.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4184cc370ade15c9405833e630a878a01a56ec0c
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Thu Jun 25 22:12:09 2020 +0200

    sch_cake: fix a few style nits
    
    [ Upstream commit 3f608f0c41360b11b04c763f348b712f651c8bac ]
    
    I spotted a few nits when comparing the in-tree version of sch_cake with
    the out-of-tree one: A redundant error variable declaration shadowing an
    outer declaration, and an indentation alignment issue. Fix both of these.
    
    Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79b73b9f816fe758a423e0bca65452f80042e47e
Author: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
Date:   Thu Jun 25 22:12:07 2020 +0200

    sch_cake: don't try to reallocate or unshare skb unconditionally
    
    [ Upstream commit 9208d2863ac689a563b92f2161d8d1e7127d0add ]
    
    cake_handle_diffserv() tries to linearize mac and network header parts of
    skb and to make it writable unconditionally. In some cases it leads to full
    skb reallocation, which reduces throughput and increases CPU load. Some
    measurements of IPv4 forward + NAPT on MIPS router with 580 MHz single-core
    CPU was conducted. It appears that on kernel 4.9 skb_try_make_writable()
    reallocates skb, if skb was allocated in ethernet driver via so-called
    'build skb' method from page cache (it was discovered by strange increase
    of kmalloc-2048 slab at first).
    
    Obtain DSCP value via read-only skb_header_pointer() call, and leave
    linearization only for DSCP bleaching or ECN CE setting. And, as an
    additional optimisation, skip diffserv parsing entirely if it is not needed
    by the current configuration.
    
    Fixes: c87b4ecdbe8d ("sch_cake: Make sure we can write the IP header before changing DSCP bits")
    Signed-off-by: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
    [ fix a few style issues, reflow commit message ]
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ee1d44453d50b76c05a884623f940d1ad9e82e3
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Tue Jun 16 16:51:51 2020 +0000

    ip_tunnel: fix use-after-free in ip_tunnel_lookup()
    
    [ Upstream commit ba61539c6ae57f4146284a5cb4f7b7ed8d42bf45 ]
    
    In the datapath, the ip_tunnel_lookup() is used and it internally uses
    fallback tunnel device pointer, which is fb_tunnel_dev.
    This pointer variable should be set to NULL when a fb interface is deleted.
    But there is no routine to set fb_tunnel_dev pointer to NULL.
    So, this pointer will be still used after interface is deleted and
    it eventually results in the use-after-free problem.
    
    Test commands:
        ip netns add A
        ip netns add B
        ip link add eth0 type veth peer name eth1
        ip link set eth0 netns A
        ip link set eth1 netns B
    
        ip netns exec A ip link set lo up
        ip netns exec A ip link set eth0 up
        ip netns exec A ip link add gre1 type gre local 10.0.0.1 \
                remote 10.0.0.2
        ip netns exec A ip link set gre1 up
        ip netns exec A ip a a 10.0.100.1/24 dev gre1
        ip netns exec A ip a a 10.0.0.1/24 dev eth0
    
        ip netns exec B ip link set lo up
        ip netns exec B ip link set eth1 up
        ip netns exec B ip link add gre1 type gre local 10.0.0.2 \
                remote 10.0.0.1
        ip netns exec B ip link set gre1 up
        ip netns exec B ip a a 10.0.100.2/24 dev gre1
        ip netns exec B ip a a 10.0.0.2/24 dev eth1
        ip netns exec A hping3 10.0.100.2 -2 --flood -d 60000 &
        ip netns del B
    
    Splat looks like:
    [   77.793450][    C3] ==================================================================
    [   77.794702][    C3] BUG: KASAN: use-after-free in ip_tunnel_lookup+0xcc4/0xf30
    [   77.795573][    C3] Read of size 4 at addr ffff888060bd9c84 by task hping3/2905
    [   77.796398][    C3]
    [   77.796664][    C3] CPU: 3 PID: 2905 Comm: hping3 Not tainted 5.8.0-rc1+ #616
    [   77.797474][    C3] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [   77.798453][    C3] Call Trace:
    [   77.798815][    C3]  <IRQ>
    [   77.799142][    C3]  dump_stack+0x9d/0xdb
    [   77.799605][    C3]  print_address_description.constprop.7+0x2cc/0x450
    [   77.800365][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
    [   77.800908][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
    [   77.801517][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
    [   77.802145][    C3]  kasan_report+0x154/0x190
    [   77.802821][    C3]  ? ip_tunnel_lookup+0xcc4/0xf30
    [   77.803503][    C3]  ip_tunnel_lookup+0xcc4/0xf30
    [   77.804165][    C3]  __ipgre_rcv+0x1ab/0xaa0 [ip_gre]
    [   77.804862][    C3]  ? rcu_read_lock_sched_held+0xc0/0xc0
    [   77.805621][    C3]  gre_rcv+0x304/0x1910 [ip_gre]
    [   77.806293][    C3]  ? lock_acquire+0x1a9/0x870
    [   77.806925][    C3]  ? gre_rcv+0xfe/0x354 [gre]
    [   77.807559][    C3]  ? erspan_xmit+0x2e60/0x2e60 [ip_gre]
    [   77.808305][    C3]  ? rcu_read_lock_sched_held+0xc0/0xc0
    [   77.809032][    C3]  ? rcu_read_lock_held+0x90/0xa0
    [   77.809713][    C3]  gre_rcv+0x1b8/0x354 [gre]
    [ ... ]
    
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c5f764382ea2f8b8403d598ab52a49eb98a3fb1
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Jun 19 11:47:47 2020 -0700

    net: phy: Check harder for errors in get_phy_id()
    
    [ Upstream commit b2ffc75e2e990b09903f9d15ccd53bc5f3a4217c ]
    
    Commit 02a6efcab675 ("net: phy: allow scanning busses with missing
    phys") added a special condition to return -ENODEV in case -ENODEV or
    -EIO was returned from the first read of the MII_PHYSID1 register.
    
    In case the MDIO bus data line pull-up is not strong enough, the MDIO
    bus controller will not flag this as a read error. This can happen when
    a pluggable daughter card is not connected and weak internal pull-ups
    are used (since that is the only option, otherwise the pins are
    floating).
    
    The second read of MII_PHYSID2 will be correctly flagged an error
    though, but now we will return -EIO which will be treated as a hard
    error, thus preventing MDIO bus scanning loops to continue succesfully.
    
    Apply the same logic to both register reads, thus allowing the scanning
    logic to proceed.
    
    Fixes: 02a6efcab675 ("net: phy: allow scanning busses with missing phys")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a611d1a063b36cbbab3523eeb146e68b244538db
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Tue Jun 16 16:04:00 2020 +0000

    ip6_gre: fix use-after-free in ip6gre_tunnel_lookup()
    
    [ Upstream commit dafabb6590cb15f300b77c095d50312e2c7c8e0f ]
    
    In the datapath, the ip6gre_tunnel_lookup() is used and it internally uses
    fallback tunnel device pointer, which is fb_tunnel_dev.
    This pointer variable should be set to NULL when a fb interface is deleted.
    But there is no routine to set fb_tunnel_dev pointer to NULL.
    So, this pointer will be still used after interface is deleted and
    it eventually results in the use-after-free problem.
    
    Test commands:
        ip netns add A
        ip netns add B
        ip link add eth0 type veth peer name eth1
        ip link set eth0 netns A
        ip link set eth1 netns B
    
        ip netns exec A ip link set lo up
        ip netns exec A ip link set eth0 up
        ip netns exec A ip link add ip6gre1 type ip6gre local fc:0::1 \
                remote fc:0::2
        ip netns exec A ip -6 a a fc:100::1/64 dev ip6gre1
        ip netns exec A ip link set ip6gre1 up
        ip netns exec A ip -6 a a fc:0::1/64 dev eth0
        ip netns exec A ip link set ip6gre0 up
    
        ip netns exec B ip link set lo up
        ip netns exec B ip link set eth1 up
        ip netns exec B ip link add ip6gre1 type ip6gre local fc:0::2 \
                remote fc:0::1
        ip netns exec B ip -6 a a fc:100::2/64 dev ip6gre1
        ip netns exec B ip link set ip6gre1 up
        ip netns exec B ip -6 a a fc:0::2/64 dev eth1
        ip netns exec B ip link set ip6gre0 up
        ip netns exec A ping fc:100::2 -s 60000 &
        ip netns del B
    
    Splat looks like:
    [   73.087285][    C1] BUG: KASAN: use-after-free in ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.088361][    C1] Read of size 4 at addr ffff888040559218 by task ping/1429
    [   73.089317][    C1]
    [   73.089638][    C1] CPU: 1 PID: 1429 Comm: ping Not tainted 5.7.0+ #602
    [   73.090531][    C1] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [   73.091725][    C1] Call Trace:
    [   73.092160][    C1]  <IRQ>
    [   73.092556][    C1]  dump_stack+0x96/0xdb
    [   73.093122][    C1]  print_address_description.constprop.6+0x2cc/0x450
    [   73.094016][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.094894][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.095767][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.096619][    C1]  kasan_report+0x154/0x190
    [   73.097209][    C1]  ? ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.097989][    C1]  ip6gre_tunnel_lookup+0x1064/0x13f0 [ip6_gre]
    [   73.098750][    C1]  ? gre_del_protocol+0x60/0x60 [gre]
    [   73.099500][    C1]  gre_rcv+0x1c5/0x1450 [ip6_gre]
    [   73.100199][    C1]  ? ip6gre_header+0xf00/0xf00 [ip6_gre]
    [   73.100985][    C1]  ? rcu_read_lock_sched_held+0xc0/0xc0
    [   73.101830][    C1]  ? ip6_input_finish+0x5/0xf0
    [   73.102483][    C1]  ip6_protocol_deliver_rcu+0xcbb/0x1510
    [   73.103296][    C1]  ip6_input_finish+0x5b/0xf0
    [   73.103920][    C1]  ip6_input+0xcd/0x2c0
    [   73.104473][    C1]  ? ip6_input_finish+0xf0/0xf0
    [   73.105115][    C1]  ? rcu_read_lock_held+0x90/0xa0
    [   73.105783][    C1]  ? rcu_read_lock_sched_held+0xc0/0xc0
    [   73.106548][    C1]  ipv6_rcv+0x1f1/0x300
    [ ... ]
    
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 000904251905e2b5a85bba3effdae1de2ac93535
Author: David Christensen <drc@linux.vnet.ibm.com>
Date:   Wed Jun 17 11:51:17 2020 -0700

    tg3: driver sleeps indefinitely when EEH errors exceed eeh_max_freezes
    
    [ Upstream commit 3a2656a211caf35e56afc9425e6e518fa52f7fbc ]
    
    The driver function tg3_io_error_detected() calls napi_disable twice,
    without an intervening napi_enable, when the number of EEH errors exceeds
    eeh_max_freezes, resulting in an indefinite sleep while holding rtnl_lock.
    
    Add check for pcierr_recovery which skips code already executed for the
    "Frozen" state.
    
    Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcf95ac62cb51d5e24be2ccaeab5fbf64da7f582
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jun 15 20:37:07 2020 -0700

    tcp: grow window for OOO packets only for SACK flows
    
    [ Upstream commit 662051215c758ae8545451628816204ed6cd372d ]
    
    Back in 2013, we made a change that broke fast retransmit
    for non SACK flows.
    
    Indeed, for these flows, a sender needs to receive three duplicate
    ACK before starting fast retransmit. Sending ACK with different
    receive window do not count.
    
    Even if enabling SACK is strongly recommended these days,
    there still are some cases where it has to be disabled.
    
    Not increasing the window seems better than having to
    rely on RTO.
    
    After the fix, following packetdrill test gives :
    
    // Initialize connection
        0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
       +0 bind(3, ..., ...) = 0
       +0 listen(3, 1) = 0
    
       +0 < S 0:0(0) win 32792 <mss 1000,nop,wscale 7>
       +0 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 8>
       +0 < . 1:1(0) ack 1 win 514
    
       +0 accept(3, ..., ...) = 4
    
       +0 < . 1:1001(1000) ack 1 win 514
    // Quick ack
       +0 > . 1:1(0) ack 1001 win 264
    
       +0 < . 2001:3001(1000) ack 1 win 514
    // DUPACK : Normally we should not change the window
       +0 > . 1:1(0) ack 1001 win 264
    
       +0 < . 3001:4001(1000) ack 1 win 514
    // DUPACK : Normally we should not change the window
       +0 > . 1:1(0) ack 1001 win 264
    
       +0 < . 4001:5001(1000) ack 1 win 514
    // DUPACK : Normally we should not change the window
        +0 > . 1:1(0) ack 1001 win 264
    
       +0 < . 1001:2001(1000) ack 1 win 514
    // Hole is repaired.
       +0 > . 1:1(0) ack 5001 win 272
    
    Fixes: 4e4f1fc22681 ("tcp: properly increase rcv_ssthresh for ofo packets")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4f8b2682d5aee896b17ca617df8fbbdab9af38c
Author: Denis Kirjanov <kda@linux-powerpc.org>
Date:   Thu Jun 25 14:51:06 2020 +0300

    tcp: don't ignore ECN CWR on pure ACK
    
    [ Upstream commit 2570284060b48f3f79d8f1a2698792f36c385e9a ]
    
    there is a problem with the CWR flag set in an incoming ACK segment
    and it leads to the situation when the ECE flag is latched forever
    
    the following packetdrill script shows what happens:
    
    // Stack receives incoming segments with CE set
    +0.1 <[ect0]  . 11001:12001(1000) ack 1001 win 65535
    +0.0 <[ce]    . 12001:13001(1000) ack 1001 win 65535
    +0.0 <[ect0] P. 13001:14001(1000) ack 1001 win 65535
    
    // Stack repsonds with ECN ECHO
    +0.0 >[noecn]  . 1001:1001(0) ack 12001
    +0.0 >[noecn] E. 1001:1001(0) ack 13001
    +0.0 >[noecn] E. 1001:1001(0) ack 14001
    
    // Write a packet
    +0.1 write(3, ..., 1000) = 1000
    +0.0 >[ect0] PE. 1001:2001(1000) ack 14001
    
    // Pure ACK received
    +0.01 <[noecn] W. 14001:14001(0) ack 2001 win 65535
    
    // Since CWR was sent, this packet should NOT have ECE set
    
    +0.1 write(3, ..., 1000) = 1000
    +0.0 >[ect0]  P. 2001:3001(1000) ack 14001
    // but Linux will still keep ECE latched here, with packetdrill
    // flagging a missing ECE flag, expecting
    // >[ect0] PE. 2001:3001(1000) ack 14001
    // in the script
    
    In the situation above we will continue to send ECN ECHO packets
    and trigger the peer to reduce the congestion window. To avoid that
    we can check CWR on pure ACKs received.
    
    v3:
    - Add a sequence check to avoid sending an ACK to an ACK
    
    v2:
    - Adjusted the comment
    - move CWR check before checking for unacknowledged packets
    
    Signed-off-by: Denis Kirjanov <denis.kirjanov@suse.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a3839c7473037221f727634dcdfccf0d9099853
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Wed Jun 24 17:34:18 2020 -0300

    sctp: Don't advertise IPv4 addresses if ipv6only is set on the socket
    
    [ Upstream commit 471e39df96b9a4c4ba88a2da9e25a126624d7a9c ]
    
    If a socket is set ipv6only, it will still send IPv4 addresses in the
    INIT and INIT_ACK packets. This potentially misleads the peer into using
    them, which then would cause association termination.
    
    The fix is to not add IPv4 addresses to ipv6only sockets.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Tested-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3bc2b29389eb18835d1475c129a113220921ca6
Author: David Howells <dhowells@redhat.com>
Date:   Fri Jun 19 23:38:16 2020 +0100

    rxrpc: Fix notification call on completion of discarded calls
    
    [ Upstream commit 0041cd5a50442db6e456b145892a0eaf2dff061f ]
    
    When preallocated service calls are being discarded, they're passed to
    ->discard_new_call() to have the caller clean up any attached higher-layer
    preallocated pieces before being marked completed.  However, the act of
    marking them completed now invokes the call's notification function - which
    causes a problem because that function might assume that the previously
    freed pieces of memory are still there.
    
    Fix this by setting a dummy notification function on the socket after
    calling ->discard_new_call().
    
    This results in the following kasan message when the kafs module is
    removed.
    
    ==================================================================
    BUG: KASAN: use-after-free in afs_wake_up_async_call+0x6aa/0x770 fs/afs/rxrpc.c:707
    Write of size 1 at addr ffff8880946c39e4 by task kworker/u4:1/21
    
    CPU: 0 PID: 21 Comm: kworker/u4:1 Not tainted 5.8.0-rc1-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: netns cleanup_net
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x18f/0x20d lib/dump_stack.c:118
     print_address_description.constprop.0.cold+0xd3/0x413 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     afs_wake_up_async_call+0x6aa/0x770 fs/afs/rxrpc.c:707
     rxrpc_notify_socket+0x1db/0x5d0 net/rxrpc/recvmsg.c:40
     __rxrpc_set_call_completion.part.0+0x172/0x410 net/rxrpc/recvmsg.c:76
     __rxrpc_call_completed net/rxrpc/recvmsg.c:112 [inline]
     rxrpc_call_completed+0xca/0xf0 net/rxrpc/recvmsg.c:111
     rxrpc_discard_prealloc+0x781/0xab0 net/rxrpc/call_accept.c:233
     rxrpc_listen+0x147/0x360 net/rxrpc/af_rxrpc.c:245
     afs_close_socket+0x95/0x320 fs/afs/rxrpc.c:110
     afs_net_exit+0x1bc/0x310 fs/afs/main.c:155
     ops_exit_list.isra.0+0xa8/0x150 net/core/net_namespace.c:186
     cleanup_net+0x511/0xa50 net/core/net_namespace.c:603
     process_one_work+0x965/0x1690 kernel/workqueue.c:2269
     worker_thread+0x96/0xe10 kernel/workqueue.c:2415
     kthread+0x3b5/0x4a0 kernel/kthread.c:291
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
    
    Allocated by task 6820:
     save_stack+0x1b/0x40 mm/kasan/common.c:48
     set_track mm/kasan/common.c:56 [inline]
     __kasan_kmalloc mm/kasan/common.c:494 [inline]
     __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:467
     kmem_cache_alloc_trace+0x153/0x7d0 mm/slab.c:3551
     kmalloc include/linux/slab.h:555 [inline]
     kzalloc include/linux/slab.h:669 [inline]
     afs_alloc_call+0x55/0x630 fs/afs/rxrpc.c:141
     afs_charge_preallocation+0xe9/0x2d0 fs/afs/rxrpc.c:757
     afs_open_socket+0x292/0x360 fs/afs/rxrpc.c:92
     afs_net_init+0xa6c/0xe30 fs/afs/main.c:125
     ops_init+0xaf/0x420 net/core/net_namespace.c:151
     setup_net+0x2de/0x860 net/core/net_namespace.c:341
     copy_net_ns+0x293/0x590 net/core/net_namespace.c:482
     create_new_namespaces+0x3fb/0xb30 kernel/nsproxy.c:110
     unshare_nsproxy_namespaces+0xbd/0x1f0 kernel/nsproxy.c:231
     ksys_unshare+0x43d/0x8e0 kernel/fork.c:2983
     __do_sys_unshare kernel/fork.c:3051 [inline]
     __se_sys_unshare kernel/fork.c:3049 [inline]
     __x64_sys_unshare+0x2d/0x40 kernel/fork.c:3049
     do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:359
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 21:
     save_stack+0x1b/0x40 mm/kasan/common.c:48
     set_track mm/kasan/common.c:56 [inline]
     kasan_set_free_info mm/kasan/common.c:316 [inline]
     __kasan_slab_free+0xf7/0x140 mm/kasan/common.c:455
     __cache_free mm/slab.c:3426 [inline]
     kfree+0x109/0x2b0 mm/slab.c:3757
     afs_put_call+0x585/0xa40 fs/afs/rxrpc.c:190
     rxrpc_discard_prealloc+0x764/0xab0 net/rxrpc/call_accept.c:230
     rxrpc_listen+0x147/0x360 net/rxrpc/af_rxrpc.c:245
     afs_close_socket+0x95/0x320 fs/afs/rxrpc.c:110
     afs_net_exit+0x1bc/0x310 fs/afs/main.c:155
     ops_exit_list.isra.0+0xa8/0x150 net/core/net_namespace.c:186
     cleanup_net+0x511/0xa50 net/core/net_namespace.c:603
     process_one_work+0x965/0x1690 kernel/workqueue.c:2269
     worker_thread+0x96/0xe10 kernel/workqueue.c:2415
     kthread+0x3b5/0x4a0 kernel/kthread.c:291
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293
    
    The buggy address belongs to the object at ffff8880946c3800
     which belongs to the cache kmalloc-1k of size 1024
    The buggy address is located 484 bytes inside of
     1024-byte region [ffff8880946c3800, ffff8880946c3c00)
    The buggy address belongs to the page:
    page:ffffea000251b0c0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0
    flags: 0xfffe0000000200(slab)
    raw: 00fffe0000000200 ffffea0002546508 ffffea00024fa248 ffff8880aa000c40
    raw: 0000000000000000 ffff8880946c3000 0000000100000002 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8880946c3880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8880946c3900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8880946c3980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                           ^
     ffff8880946c3a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8880946c3a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    Reported-by: syzbot+d3eccef36ddbd02713e9@syzkaller.appspotmail.com
    Fixes: 5ac0d62226a0 ("rxrpc: Fix missing notification")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3de8d3851137a57015c82790cf98ce325443f884
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Fri Jun 12 15:27:55 2020 -0500

    rocker: fix incorrect error handling in dma_rings_init
    
    [ Upstream commit 58d0c864e1a759a15c9df78f50ea5a5c32b3989e ]
    
    In rocker_dma_rings_init, the goto blocks in case of errors
    caused by the functions rocker_dma_cmd_ring_waits_alloc() and
    rocker_dma_ring_create() are incorrect. The patch fixes the
    order consistent with cleanup in rocker_dma_rings_fini().
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c191f7cf369c0090fdbeff0b6782d5eaa3a179d2
Author: Jeremy Kerr <jk@ozlabs.org>
Date:   Mon Jun 15 10:54:56 2020 +0800

    net: usb: ax88179_178a: fix packet alignment padding
    
    [ Upstream commit e869e7a17798d85829fa7d4f9bbe1eebd4b2d3f6 ]
    
    Using a AX88179 device (0b95:1790), I see two bytes of appended data on
    every RX packet. For example, this 48-byte ping, using 0xff as a
    payload byte:
    
      04:20:22.528472 IP 192.168.1.1 > 192.168.1.2: ICMP echo request, id 2447, seq 1, length 64
            0x0000:  000a cd35 ea50 000a cd35 ea4f 0800 4500
            0x0010:  0054 c116 4000 4001 f63e c0a8 0101 c0a8
            0x0020:  0102 0800 b633 098f 0001 87ea cd5e 0000
            0x0030:  0000 dcf2 0600 0000 0000 ffff ffff ffff
            0x0040:  ffff ffff ffff ffff ffff ffff ffff ffff
            0x0050:  ffff ffff ffff ffff ffff ffff ffff ffff
            0x0060:  ffff 961f
    
    Those last two bytes - 96 1f - aren't part of the original packet.
    
    In the ax88179 RX path, the usbnet rx_fixup function trims a 2-byte
    'alignment pseudo header' from the start of the packet, and sets the
    length from a per-packet field populated by hardware. It looks like that
    length field *includes* the 2-byte header; the current driver assumes
    that it's excluded.
    
    This change trims the 2-byte alignment header after we've set the packet
    length, so the resulting packet length is correct. While we're moving
    the comment around, this also fixes the spelling of 'pseudo'.
    
    Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 220e80d93733969e2d836f37467175ea7277b8f3
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jun 17 22:23:25 2020 -0700

    net: increment xmit_recursion level in dev_direct_xmit()
    
    [ Upstream commit 0ad6f6e767ec2f613418cbc7ebe5ec4c35af540c ]
    
    Back in commit f60e5990d9c1 ("ipv6: protect skb->sk accesses
    from recursive dereference inside the stack") Hannes added code
    so that IPv6 stack would not trust skb->sk for typical cases
    where packet goes through 'standard' xmit path (__dev_queue_xmit())
    
    Alas af_packet had a dev_direct_xmit() path that was not
    dealing yet with xmit_recursion level.
    
    Also change sk_mc_loop() to dump a stack once only.
    
    Without this patch, syzbot was able to trigger :
    
    [1]
    [  153.567378] WARNING: CPU: 7 PID: 11273 at net/core/sock.c:721 sk_mc_loop+0x51/0x70
    [  153.567378] Modules linked in: nfnetlink ip6table_raw ip6table_filter iptable_raw iptable_nat nf_nat nf_conntrack nf_defrag_ipv4 nf_defrag_ipv6 iptable_filter macsec macvtap tap macvlan 8021q hsr wireguard libblake2s blake2s_x86_64 libblake2s_generic udp_tunnel ip6_udp_tunnel libchacha20poly1305 poly1305_x86_64 chacha_x86_64 libchacha curve25519_x86_64 libcurve25519_generic netdevsim batman_adv dummy team bridge stp llc w1_therm wire i2c_mux_pca954x i2c_mux cdc_acm ehci_pci ehci_hcd mlx4_en mlx4_ib ib_uverbs ib_core mlx4_core
    [  153.567386] CPU: 7 PID: 11273 Comm: b159172088 Not tainted 5.8.0-smp-DEV #273
    [  153.567387] RIP: 0010:sk_mc_loop+0x51/0x70
    [  153.567388] Code: 66 83 f8 0a 75 24 0f b6 4f 12 b8 01 00 00 00 31 d2 d3 e0 a9 bf ef ff ff 74 07 48 8b 97 f0 02 00 00 0f b6 42 3a 83 e0 01 5d c3 <0f> 0b b8 01 00 00 00 5d c3 0f b6 87 18 03 00 00 5d c0 e8 04 83 e0
    [  153.567388] RSP: 0018:ffff95c69bb93990 EFLAGS: 00010212
    [  153.567388] RAX: 0000000000000011 RBX: ffff95c6e0ee3e00 RCX: 0000000000000007
    [  153.567389] RDX: ffff95c69ae50000 RSI: ffff95c6c30c3000 RDI: ffff95c6c30c3000
    [  153.567389] RBP: ffff95c69bb93990 R08: ffff95c69a77f000 R09: 0000000000000008
    [  153.567389] R10: 0000000000000040 R11: 00003e0e00026128 R12: ffff95c6c30c3000
    [  153.567390] R13: ffff95c6cc4fd500 R14: ffff95c6f84500c0 R15: ffff95c69aa13c00
    [  153.567390] FS:  00007fdc3a283700(0000) GS:ffff95c6ff9c0000(0000) knlGS:0000000000000000
    [  153.567390] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  153.567391] CR2: 00007ffee758e890 CR3: 0000001f9ba20003 CR4: 00000000001606e0
    [  153.567391] Call Trace:
    [  153.567391]  ip6_finish_output2+0x34e/0x550
    [  153.567391]  __ip6_finish_output+0xe7/0x110
    [  153.567391]  ip6_finish_output+0x2d/0xb0
    [  153.567392]  ip6_output+0x77/0x120
    [  153.567392]  ? __ip6_finish_output+0x110/0x110
    [  153.567392]  ip6_local_out+0x3d/0x50
    [  153.567392]  ipvlan_queue_xmit+0x56c/0x5e0
    [  153.567393]  ? ksize+0x19/0x30
    [  153.567393]  ipvlan_start_xmit+0x18/0x50
    [  153.567393]  dev_direct_xmit+0xf3/0x1c0
    [  153.567393]  packet_direct_xmit+0x69/0xa0
    [  153.567394]  packet_sendmsg+0xbf0/0x19b0
    [  153.567394]  ? plist_del+0x62/0xb0
    [  153.567394]  sock_sendmsg+0x65/0x70
    [  153.567394]  sock_write_iter+0x93/0xf0
    [  153.567394]  new_sync_write+0x18e/0x1a0
    [  153.567395]  __vfs_write+0x29/0x40
    [  153.567395]  vfs_write+0xb9/0x1b0
    [  153.567395]  ksys_write+0xb1/0xe0
    [  153.567395]  __x64_sys_write+0x1a/0x20
    [  153.567395]  do_syscall_64+0x43/0x70
    [  153.567396]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [  153.567396] RIP: 0033:0x453549
    [  153.567396] Code: Bad RIP value.
    [  153.567396] RSP: 002b:00007fdc3a282cc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [  153.567397] RAX: ffffffffffffffda RBX: 00000000004d32d0 RCX: 0000000000453549
    [  153.567397] RDX: 0000000000000020 RSI: 0000000020000300 RDI: 0000000000000003
    [  153.567398] RBP: 00000000004d32d8 R08: 0000000000000000 R09: 0000000000000000
    [  153.567398] R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004d32dc
    [  153.567398] R13: 00007ffee742260f R14: 00007fdc3a282dc0 R15: 00007fdc3a283700
    [  153.567399] ---[ end trace c1d5ae2b1059ec62 ]---
    
    f60e5990d9c1 ("ipv6: protect skb->sk accesses from recursive dereference inside the stack")
    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 3a708efa69237c687ee1bd6a7014b2130db90776
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Apr 3 08:28:35 2019 +0200

    net: use correct this_cpu primitive in dev_recursion_level
    
    commit 28b05b92886871bdd8e6a9df73e3a15845fe8ef4 upstream.
    
    syzbot reports:
    BUG: using __this_cpu_read() in preemptible code:
    caller is dev_recursion_level include/linux/netdevice.h:3052 [inline]
     __this_cpu_preempt_check+0x246/0x270 lib/smp_processor_id.c:47
     dev_recursion_level include/linux/netdevice.h:3052 [inline]
     ip6_skb_dst_mtu include/net/ip6_route.h:245 [inline]
    
    I erronously downgraded a this_cpu_read to __this_cpu_read when
    moving dev_recursion_level() around.
    
    Reported-by: syzbot+51471b4aae195285a4a3@syzkaller.appspotmail.com
    Fixes: 97cdcf37b57e ("net: place xmit recursion in softnet data")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edbe653223915b1deee0c4df909d5da924650cec
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Apr 1 16:42:13 2019 +0200

    net: place xmit recursion in softnet data
    
    commit 97cdcf37b57e3f204be3000b9eab9686f38b4356 upstream.
    
    This fills a hole in softnet data, so no change in structure size.
    
    Also prepares for xmit_more placement in the same spot;
    skb->xmit_more will be removed in followup patch.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 061abde39541d563fbaa2154b83dc272b910b31d
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Jun 16 09:39:21 2020 +0000

    net: fix memleak in register_netdevice()
    
    [ Upstream commit 814152a89ed52c722ab92e9fbabcac3cb8a39245 ]
    
    I got a memleak report when doing some fuzz test:
    
    unreferenced object 0xffff888112584000 (size 13599):
      comm "ip", pid 3048, jiffies 4294911734 (age 343.491s)
      hex dump (first 32 bytes):
        74 61 70 30 00 00 00 00 00 00 00 00 00 00 00 00  tap0............
        00 ee d9 19 81 88 ff ff 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<000000002f60ba65>] __kmalloc_node+0x309/0x3a0
        [<0000000075b211ec>] kvmalloc_node+0x7f/0xc0
        [<00000000d3a97396>] alloc_netdev_mqs+0x76/0xfc0
        [<00000000609c3655>] __tun_chr_ioctl+0x1456/0x3d70
        [<000000001127ca24>] ksys_ioctl+0xe5/0x130
        [<00000000b7d5e66a>] __x64_sys_ioctl+0x6f/0xb0
        [<00000000e1023498>] do_syscall_64+0x56/0xa0
        [<000000009ec0eb12>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    unreferenced object 0xffff888111845cc0 (size 8):
      comm "ip", pid 3048, jiffies 4294911734 (age 343.491s)
      hex dump (first 8 bytes):
        74 61 70 30 00 88 ff ff                          tap0....
      backtrace:
        [<000000004c159777>] kstrdup+0x35/0x70
        [<00000000d8b496ad>] kstrdup_const+0x3d/0x50
        [<00000000494e884a>] kvasprintf_const+0xf1/0x180
        [<0000000097880a2b>] kobject_set_name_vargs+0x56/0x140
        [<000000008fbdfc7b>] dev_set_name+0xab/0xe0
        [<000000005b99e3b4>] netdev_register_kobject+0xc0/0x390
        [<00000000602704fe>] register_netdevice+0xb61/0x1250
        [<000000002b7ca244>] __tun_chr_ioctl+0x1cd1/0x3d70
        [<000000001127ca24>] ksys_ioctl+0xe5/0x130
        [<00000000b7d5e66a>] __x64_sys_ioctl+0x6f/0xb0
        [<00000000e1023498>] do_syscall_64+0x56/0xa0
        [<000000009ec0eb12>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    unreferenced object 0xffff88811886d800 (size 512):
      comm "ip", pid 3048, jiffies 4294911734 (age 343.491s)
      hex dump (first 32 bytes):
        00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
        ff ff ff ff ff ff ff ff c0 66 3d a3 ff ff ff ff  .........f=.....
      backtrace:
        [<0000000050315800>] device_add+0x61e/0x1950
        [<0000000021008dfb>] netdev_register_kobject+0x17e/0x390
        [<00000000602704fe>] register_netdevice+0xb61/0x1250
        [<000000002b7ca244>] __tun_chr_ioctl+0x1cd1/0x3d70
        [<000000001127ca24>] ksys_ioctl+0xe5/0x130
        [<00000000b7d5e66a>] __x64_sys_ioctl+0x6f/0xb0
        [<00000000e1023498>] do_syscall_64+0x56/0xa0
        [<000000009ec0eb12>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    If call_netdevice_notifiers() failed, then rollback_registered()
    calls netdev_unregister_kobject() which holds the kobject. The
    reference cannot be put because the netdev won't be add to todo
    list, so it will leads a memleak, we need put the reference to
    avoid memleak.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13378a1d5b8b5cb06ac8bad0fc127849350761fd
Author: Thomas Martitz <t.martitz@avm.de>
Date:   Thu Jun 25 14:26:03 2020 +0200

    net: bridge: enfore alignment for ethernet address
    
    [ Upstream commit db7202dec92e6caa2706c21d6fc359af318bde2e ]
    
    The eth_addr member is passed to ether_addr functions that require
    2-byte alignment, therefore the member must be properly aligned
    to avoid unaligned accesses.
    
    The problem is in place since the initial merge of multicast to unicast:
    commit 6db6f0eae6052b70885562e1733896647ec1d807 bridge: multicast to unicast
    
    Fixes: 6db6f0eae605 ("bridge: multicast to unicast")
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Felix Fietkau <nbd@nbd.name>
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Martitz <t.martitz@avm.de>
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf418c02c7dd82f34f324fced663dc5fe3283322
Author: Wang Hai <wanghai38@huawei.com>
Date:   Thu Jun 11 15:57:50 2020 +0800

    mld: fix memory leak in ipv6_mc_destroy_dev()
    
    [ Upstream commit ea2fce88d2fd678ed9d45354ff49b73f1d5615dd ]
    
    Commit a84d01647989 ("mld: fix memory leak in mld_del_delrec()") fixed
    the memory leak of MLD, but missing the ipv6_mc_destroy_dev() path, in
    which mca_sources are leaked after ma_put().
    
    Using ip6_mc_clear_src() to take care of the missing free.
    
    BUG: memory leak
    unreferenced object 0xffff8881113d3180 (size 64):
      comm "syz-executor071", pid 389, jiffies 4294887985 (age 17.943s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 ff 02 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<000000002cbc483c>] kmalloc include/linux/slab.h:555 [inline]
        [<000000002cbc483c>] kzalloc include/linux/slab.h:669 [inline]
        [<000000002cbc483c>] ip6_mc_add1_src net/ipv6/mcast.c:2237 [inline]
        [<000000002cbc483c>] ip6_mc_add_src+0x7f5/0xbb0 net/ipv6/mcast.c:2357
        [<0000000058b8b1ff>] ip6_mc_source+0xe0c/0x1530 net/ipv6/mcast.c:449
        [<000000000bfc4fb5>] do_ipv6_setsockopt.isra.12+0x1b2c/0x3b30 net/ipv6/ipv6_sockglue.c:754
        [<00000000e4e7a722>] ipv6_setsockopt+0xda/0x150 net/ipv6/ipv6_sockglue.c:950
        [<0000000029260d9a>] rawv6_setsockopt+0x45/0x100 net/ipv6/raw.c:1081
        [<000000005c1b46f9>] __sys_setsockopt+0x131/0x210 net/socket.c:2132
        [<000000008491f7db>] __do_sys_setsockopt net/socket.c:2148 [inline]
        [<000000008491f7db>] __se_sys_setsockopt net/socket.c:2145 [inline]
        [<000000008491f7db>] __x64_sys_setsockopt+0xba/0x150 net/socket.c:2145
        [<00000000c7bc11c5>] do_syscall_64+0xa1/0x530 arch/x86/entry/common.c:295
        [<000000005fb7a3f3>] entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    Fixes: 1666d49e1d41 ("mld: do not remove mld souce list info when set link down")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Acked-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a92f0021cf856fdd159e9b10c33152f6e37d7a5
Author: Thomas Falcon <tlfalcon@linux.ibm.com>
Date:   Thu Jun 18 10:43:46 2020 -0500

    ibmveth: Fix max MTU limit
    
    [ Upstream commit 5948378b26d89f8aa5eac37629dbd0616ce8d7a7 ]
    
    The max MTU limit defined for ibmveth is not accounting for
    virtual ethernet buffer overhead, which is twenty-two additional
    bytes set aside for the ethernet header and eight additional bytes
    of an opaque handle reserved for use by the hypervisor. Update the
    max MTU to reflect this overhead.
    
    Fixes: d894be57ca92 ("ethernet: use net core MTU range checking in more drivers")
    Fixes: 110447f8269a ("ethernet: fix min/max MTU typos")
    Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f9a54ce49147268c6f5be1c00fb08e9a08f01cc
Author: Jann Horn <jannh@google.com>
Date:   Sat Sep 29 03:49:26 2018 +0200

    apparmor: don't try to replace stale label in ptraceme check
    
    [ Upstream commit ca3fde5214e1d24f78269b337d3f22afd6bf445e ]
    
    begin_current_label_crit_section() must run in sleepable context because
    when label_is_stale() is true, aa_replace_current_label() runs, which uses
    prepare_creds(), which can sleep.
    
    Until now, the ptraceme access check (which runs with tasklist_lock held)
    violated this rule.
    
    Fixes: b2d09ae449ced ("apparmor: move ptrace checks to using labels")
    Reported-by: Cyrill Gorcunov <gorcunov@gmail.com>
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0255fb2f1a1248a81b7e65df4039a9b01b9345e9
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Thu Apr 30 16:32:52 2020 +0800

    ALSA: hda/realtek - Enable micmute LED on and HP system
    
    [ Upstream commit 3e0650ab26e2010ee312311612e40e076ed1feca ]
    
    Though the system uses DMIC, headset mic still uses the HDA, let's use
    GPIO 0x1 to control the micmute LED.
    
    The micmute LED GPIO has a different polarity to the mute LED GPIO, we
    can use the newly added micmute_led_polarity to indicate that.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Link: https://lore.kernel.org/r/20200430083255.5093-2-kai.heng.feng@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a3e71fa1654a2fc976720fd448520900ba26acb
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Mar 27 12:46:25 2020 +0800

    ALSA: hda/realtek: Enable mute LED on an HP system
    
    [ Upstream commit f5a88b0accc24c4a9021247d7a3124f90aa4c586 ]
    
    The system in question uses ALC285, and it uses GPIO 0x04 to control its
    mute LED.
    
    The mic mute LED can be controlled by GPIO 0x01, however the system uses
    DMIC so we should use that to control mic mute LED.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200327044626.29582-1-kai.heng.feng@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a5d041711f29c807fef0b133356bb74f5e8e9a2
Author: Sasha Levin <sashal@kernel.org>
Date:   Fri Jun 26 23:41:55 2020 -0400

    ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294
    
    [ Upstream commit 8b33a134a9cc2a501f8fc731d91caef39237d495 ]
    
    A headset on the laptop like ASUS B9450FA does not work, until quirk
    ALC294_FIXUP_ASUS_HPE is applied.
    
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200225072920.109199-1-jian-hong@endlessm.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7c68b649b37fa4e6135cc6dc4dc3545c5b7d018e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Jun 6 23:44:24 2020 -0400

    fix a braino in "sparc32: fix register window handling in genregs32_[gs]et()"
    
    [ Upstream commit 9d964e1b82d8182184153b70174f445ea616f053 ]
    
    lost npc in PTRACE_SETREGSET, breaking PTRACE_SETREGS as well
    
    Fixes: cf51e129b968 "sparc32: fix register window handling in genregs32_[gs]et()"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0479fd1de51fe2d3e948f02e6145be6c213ea79b
Author: Sowjanya Komatineni <skomatineni@nvidia.com>
Date:   Tue Jan 8 13:59:10 2019 -0800

    i2c: tegra: Fix Maximum transfer size
    
    [ Upstream commit b67d4530cdade7ebfafa2c6b46f2a0dad3e41bcb ]
    
    Tegra194 supports maximum 64K Bytes transfer per packet.
    Tegra186 and prior supports maximum 4K Bytes transfer per packet.
    
    This patch fixes this payload difference between Tegra194 and prior
    Tegra chipsets using separate i2c_adapter_quirks.
    
    Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5301f6fb85810871acdb22ea397029e8b1fedf75
Author: Thierry Reding <treding@nvidia.com>
Date:   Mon Dec 17 15:16:53 2018 +0100

    i2c: tegra: Add missing kerneldoc for some fields
    
    [ Upstream commit 0604ee4aefa20f493a32dc223599f922fb615367 ]
    
    Not all fields were properly documented. Add kerneldoc for the missing
    fields to prevent the build from flagging them.
    
    Reported-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4fb463566aab885a470bf05d80757893cec71d63
Author: Thierry Reding <treding@nvidia.com>
Date:   Mon Dec 17 15:16:52 2018 +0100

    i2c: tegra: Cleanup kerneldoc comments
    
    [ Upstream commit c990bbafdb11c608bba2d529f72ded9bdff88678 ]
    
    Some of the kerneldoc uses a strange spelling for abbreviations. Turn
    them into all-uppercase and clean up some whitespace issues while at it.
    
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 934a8dab049c0b1cd3b25c30f66898b825bd5296
Author: Yazen Ghannam <yazen.ghannam@amd.com>
Date:   Thu Feb 28 15:36:09 2019 +0000

    EDAC/amd64: Add Family 17h Model 30h PCI IDs
    
    [ Upstream commit 6e846239e5487cbb89ac8192d5f11437d010130e ]
    
    Add the new Family 17h Model 30h PCI IDs to the AMD64 EDAC module.
    
    This also fixes a probe failure that appeared when some other PCI IDs
    for Family 17h Model 30h were added to the AMD NB code.
    
    Fixes: be3518a16ef2 (x86/amd_nb: Add PCI device IDs for family 17h, model 30h)
    Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Kim Phillips <kim.phillips@amd.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20190228153558.127292-1-Yazen.Ghannam@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a182e9c5f82fddf68c05ab00f0025f7613a64d3
Author: Valentin Longchamp <valentin@longchamp.me>
Date:   Tue Jun 9 22:11:54 2020 +0200

    net: sched: export __netdev_watchdog_up()
    
    [ Upstream commit 1a3db27ad9a72d033235b9673653962c02e3486e ]
    
    Since the quiesce/activate rework, __netdev_watchdog_up() is directly
    called in the ucc_geth driver.
    
    Unfortunately, this function is not available for modules and thus
    ucc_geth cannot be built as a module anymore. Fix it by exporting
    __netdev_watchdog_up().
    
    Since the commit introducing the regression was backported to stable
    branches, this one should ideally be as well.
    
    Fixes: 79dde73cf9bc ("net/ethernet/freescale: rework quiesce/activate for ucc_geth")
    Signed-off-by: Valentin Longchamp <valentin@longchamp.me>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 290ba51c25d23418006426961566f9fe44a9c018
Author: Doug Berger <opendmb@gmail.com>
Date:   Tue Nov 20 15:17:01 2018 -0800

    net: bcmgenet: remove HFB_CTRL access
    
    [ Upstream commit 24d476db6dfb0f85130e348ca1bbd14afb73a8be ]
    
    Commit c5a54bbcecec ("net: bcmgenet: abort suspend on error")
    mistakenly introduced register accesses that should not occur
    in bcmgenet_wol_power_up_cfg().
    
    Fixes: c5a54bbcecec ("net: bcmgenet: abort suspend on error")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 944a95a97b81372924e6893dfd5dfab565da4521
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Fri Apr 24 18:44:56 2020 +0200

    mtd: rawnand: marvell: Fix the condition on a return code
    
    [ Upstream commit c27075772d1f1c8aaf276db9943b35adda8a8b65 ]
    
    In a previous fix, I changed the condition on which the timeout of an
    IRQ is reached from:
    
        if (!ret)
    
    into:
    
        if (ret && !pending)
    
    While having a non-zero return code is usual in the Linux kernel, here
    ret comes from a wait_for_completion_timeout() which returns 0 when
    the waiting period is too long.
    
    Hence, the revised condition should be:
    
        if (!ret && !pending)
    
    The faulty patch did not produce any error because of the !pending
    condition so this change is finally purely cosmetic and does not
    change the actual driver behavior.
    
    Fixes: cafb56dd741e ("mtd: rawnand: marvell: prevent timeouts on a loaded machine")
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://lore.kernel.org/linux-mtd/20200424164501.26719-2-miquel.raynal@bootlin.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62b4f338185a9b0831c16dcd2e579c24550d8a4f
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Sun May 24 10:24:41 2020 +0300

    fanotify: fix ignore mask logic for events on child and on dir
    
    commit 2f02fd3fa13e51713b630164f8a8e5b42de8283b upstream.
    
    The comments in fanotify_group_event_mask() say:
    
      "If the event is on dir/child and this mark doesn't care about
       events on dir/child, don't send it!"
    
    Specifically, mount and filesystem marks do not care about events
    on child, but they can still specify an ignore mask for those events.
    For example, a group that has:
    - A mount mark with mask 0 and ignore_mask FAN_OPEN
    - An inode mark on a directory with mask FAN_OPEN | FAN_OPEN_EXEC
      with flag FAN_EVENT_ON_CHILD
    
    A child file open for exec would be reported to group with the FAN_OPEN
    event despite the fact that FAN_OPEN is in ignore mask of mount mark,
    because the mark iteration loop skips over non-inode marks for events
    on child when calculating the ignore mask.
    
    Move ignore mask calculation to the top of the iteration loop block
    before excluding marks for events on dir/child.
    
    Link: https://lore.kernel.org/r/20200524072441.18258-1-amir73il@gmail.com
    Reported-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/linux-fsdevel/20200521162443.GA26052@quack2.suse.cz/
    Fixes: 55bf882c7f13 "fanotify: fix merging marks masks with FAN_ONDIR"
    Fixes: b469e7e47c8a "fanotify: fix handling of events on child..."
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81abe6ad4d99550deeeb4e6a058f213097659929
Author: yu kuai <yukuai3@huawei.com>
Date:   Mon Jun 1 20:38:56 2020 +0800

    block/bio-integrity: don't free 'buf' if bio_integrity_add_page() failed
    
    commit a75ca9303175d36af93c0937dd9b1a6422908b8d upstream.
    
    commit e7bf90e5afe3 ("block/bio-integrity: fix a memory leak bug") added
    a kfree() for 'buf' if bio_integrity_add_page() returns '0'. However,
    the object will be freed in bio_integrity_free() since 'bio->bi_opf' and
    'bio->bi_integrity' were set previousy in bio_integrity_alloc().
    
    Fixes: commit e7bf90e5afe3 ("block/bio-integrity: fix a memory leak bug")
    Signed-off-by: yu kuai <yukuai3@huawei.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Bob Liu <bob.liu@oracle.com>
    Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c83456601e65a6dd371ddf595510183d198e9b1
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 28 14:57:47 2020 -0700

    net: be more gentle about silly gso requests coming from user
    
    commit 7c6d2ecbda83150b2036a2b36b21381ad4667762 upstream.
    
    Recent change in virtio_net_hdr_to_skb() broke some packetdrill tests.
    
    When --mss=XXX option is set, packetdrill always provide gso_type & gso_size
    for its inbound packets, regardless of packet size.
    
            if (packet->tcp && packet->mss) {
                    if (packet->ipv4)
                            gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV4;
                    else
                            gso.gso_type = VIRTIO_NET_HDR_GSO_TCPV6;
                    gso.gso_size = packet->mss;
            }
    
    Since many other programs could do the same, relax virtio_net_hdr_to_skb()
    to no longer return an error, but instead ignore gso settings.
    
    This keeps Willem intent to make sure no malicious packet could
    reach gso stack.
    
    Note that TCP stack has a special logic in tcp_set_skb_tso_segs()
    to clear gso_size for small packets.
    
    Fixes: 6dd912f82680 ("net: check untrusted gso_size at kernel entry")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>