commit fb6c7905238010236cf0750b209ce9162222eb97
Author: Sasha Levin <sashal@kernel.org>
Date:   Tue Jun 30 16:21:22 2020 -0400

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

commit feb6c2d13de3ad161c867c7e01c85f40e8bf18e9
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 edb930b4eaa735d31d8b7b7d2497b9c51e451d5f
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 22551da148c98636fe91b66b8dba3a1d1e1e46cc
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 301cca2f313a0b6167e9b033bdd25a258c202693
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Mon Jun 15 09:21:13 2020 -0400

    xprtrdma: Fix handling of RDMA_ERROR replies
    
    commit 7b2182ec381f8ea15c7eb1266d6b5d7da620ad93 upstream.
    
    The RPC client currently doesn't handle ERR_CHUNK replies correctly.
    rpcrdma_complete_rqst() incorrectly passes a negative number to
    xprt_complete_rqst() as the number of bytes copied. Instead, set
    task->tk_status to the error value, and return zero bytes copied.
    
    In these cases, return -EIO rather than -EREMOTEIO. The RPC client's
    finite state machine doesn't know what to do with -EREMOTEIO.
    
    Additional clean ups:
    - Don't double-count RDMA_ERROR replies
    - Remove a stale comment
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: <stable@kernel.vger.org>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e2f2568552cee6344d886d29700691fbc72b842
Author: Borislav Petkov <bp@suse.de>
Date:   Thu Jun 18 20:25:25 2020 +0200

    EDAC/amd64: Read back the scrub rate PCI register on F15h
    
    commit ee470bb25d0dcdf126f586ec0ae6dca66cb340a4 upstream.
    
    Commit:
    
      da92110dfdfa ("EDAC, amd64_edac: Extend scrub rate support to F15hM60h")
    
    added support for F15h, model 0x60 CPUs but in doing so, missed to read
    back SCRCTRL PCI config register on F15h CPUs which are *not* model
    0x60. Add that read so that doing
    
      $ cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
    
    can show the previously set DRAM scrub rate.
    
    Fixes: da92110dfdfa ("EDAC, amd64_edac: Extend scrub rate support to F15hM60h")
    Reported-by: Anders Andersson <pipatron@gmail.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org> #v4.4..
    Link: https://lkml.kernel.org/r/CAKkunMbNWppx_i6xSdDHLseA2QQmGJqj_crY=NF-GZML5np4Vw@mail.gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f7f6661674f16f02cc7ac0a4a245a42cf8f52f1
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 0f1ce854d7cb2c8b4840449e5b1d63410c16d0aa
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 5c9ffc7750d8376db75a7c09634e1e1a590007ce
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 3011ff95812d8e208645e89f376312234e8f6988
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 9a40230a9312aede4822d72600dccebe10c6116d
Author: Arseny Solokha <asolokha@kb.kras.ru>
Date:   Sat Jun 13 23:28:01 2020 +0700

    powerpc/fsl_booke/32: Fix build with CONFIG_RANDOMIZE_BASE
    
    commit 7e4773f73dcfb92e7e33532162f722ec291e75a4 upstream.
    
    Building the current 5.8 kernel for an e500 machine with
    CONFIG_RANDOMIZE_BASE=y and CONFIG_BLOCK=n yields the following
    failure:
    
      arch/powerpc/mm/nohash/kaslr_booke.c: In function 'kaslr_early_init':
      arch/powerpc/mm/nohash/kaslr_booke.c:387:2: error: implicit
      declaration of function 'flush_icache_range'; did you mean 'flush_tlb_range'?
    
    Indeed, including asm/cacheflush.h into kaslr_booke.c fixes the build.
    
    Fixes: 2b0e86cc5de6 ("powerpc/fsl_booke/32: implement KASLR infrastructure")
    Cc: stable@vger.kernel.org # v5.5+
    Signed-off-by: Arseny Solokha <asolokha@kb.kras.ru>
    Reviewed-by: Jason Yan <yanaijie@huawei.com>
    Acked-by: Scott Wood <oss@buserror.net>
    [mpe: Tweak change log to mention CONFIG_BLOCK=n]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200613162801.1946619-1-asolokha@kb.kras.ru
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17b6bf582b4e45efa7d355e071f1b35f18469e21
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 c576799e843fb025455a1e9e17eb86474e566d0a
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Thu May 28 14:43:43 2020 +0000

    ARM: dts: imx6ul-kontron: Change WDOG_ANY signal from push-pull to open-drain
    
    commit d22a16cc92e04d053fd807ef3587e4f135e4206f upstream.
    
    The WDOG_ANY signal is connected to the RESET_IN signal of the SoM
    and baseboard. It is currently configured as push-pull, which means
    that if some external device like a programmer wants to assert the
    RESET_IN signal by pulling it to ground, it drives against the high
    level WDOG_ANY output of the SoC.
    
    To fix this we set the WDOG_ANY signal to open-drain configuration.
    That way we make sure that the RESET_IN can be asserted by the
    watchdog as well as by external devices.
    
    Fixes: 1ea4b76cdfde ("ARM: dts: imx6ul-kontron-n6310: Add Kontron i.MX6UL N6310 SoM and boards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c2430d2c1c0c85653bfab3a98d7166b70090e27
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Thu May 28 14:43:42 2020 +0000

    ARM: dts: imx6ul-kontron: Move watchdog from Kontron i.MX6UL/ULL board to SoM
    
    commit 04a2c05179b732a4c097f0a9c701ef4c9a37e1e3 upstream.
    
    The watchdog's WDOG_ANY signal is used to trigger a POR of the SoC,
    if a soft reset is issued. As the SoM hardware connects the WDOG_ANY
    and the POR signals, the watchdog node itself and the pin
    configuration should be part of the common SoM devicetree.
    Let's move it from the baseboard's devicetree to its proper place.
    
    Fixes: 1ea4b76cdfde ("ARM: dts: imx6ul-kontron-n6310: Add Kontron i.MX6UL N6310 SoM and boards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6c01f5b950d3cbbeb1c5a938adc20a9862bcd2f
Author: Adam Ford <aford173@gmail.com>
Date:   Mon Jun 15 08:19:34 2020 -0500

    drm/panel-simple: fix connector type for LogicPD Type28 Display
    
    commit efb94790852ae673b18efde1b171d284689ff333 upstream.
    
    The LogicPD Type28 display used by several Logic PD products has not
    worked since v5.6.
    
    The connector type for the LogicPD Type 28 display is missing and
    drm_panel_bridge_add() requires connector type to be set.
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Fixes: 0d35408afbeb ("drm/panel: simple: Add Logic PD Type 28 display support")
    Cc: Adam Ford <aford173@gmail.com>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Thierry Reding <thierry.reding@gmail.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v5.6+
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200615131934.12440-1-aford173@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2fd95483c44e828f475274625ba36a1d0a412e1
Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date:   Tue Jun 9 13:28:09 2020 +0300

    drm/panel-simple: fix connector type for newhaven_nhd_43_480272ef_atxl
    
    commit 8a4f5e1185db61bce6ce3a5dce6381a77bcf94e6 upstream.
    
    Add connector type for newhaven_nhd_43_480272ef_atxl, as
    drm_panel_bridge_add() requires connector type to be set.
    
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: stable@vger.kernel.org # v5.5+
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200609102809.753203-1-tomi.valkeinen@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b5d1b40a668add6275072a71d0e17fb9e15de67
Author: John van der Kamp <sjonny@suffe.me.uk>
Date:   Tue Jun 23 23:30:54 2020 +0200

    drm/amdgpu/display: Unlock mutex on error
    
    commit ee434a4f9f5ea15b0f84bddd8c012838cf9472c5 upstream.
    
    Make sure we pass through ret label to unlock the mutex.
    
    Signed-off-by: John van der Kamp <sjonny@suffe.me.uk>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfece0241468bc49d339c3c90ead98278063ae0f
Author: Wenhui Sheng <Wenhui.Sheng@amd.com>
Date:   Thu Jun 18 15:37:04 2020 +0800

    drm/amdgpu: add fw release for sdma v5_0
    
    commit edfaf6fa73f15568d4337f208b2333f647c35810 upstream.
    
    sdma fw isn't released when module exit
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Wenhui Sheng <Wenhui.Sheng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b6902118146835fa67b52f624576d30b1c9e09f
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Wed Jun 24 11:29:10 2020 +0200

    drm/fb-helper: Fix vt restore
    
    commit dc5bdb68b5b369d5bc7d1de96fa64cc1737a6320 upstream.
    
    In the past we had a pile of hacks to orchestrate access between fbdev
    emulation and native kms clients. We've tried to streamline this, by
    always preferring the kms side above fbdev calls when a drm master
    exists, because drm master controls access to the display resources.
    
    Unfortunately this breaks existing userspace, specifically Xorg. When
    exiting Xorg first restores the console to text mode using the KDSET
    ioctl on the vt. This does nothing, because a drm master is still
    around. Then it drops the drm master status, which again does nothing,
    because logind is keeping additional drm fd open to be able to
    orchestrate vt switches. In the past this is the point where fbdev was
    restored, as part of the ->lastclose hook on the drm side.
    
    Now to fix this regression we don't want to go back to letting fbdev
    restore things whenever it feels like, or to the pile of hacks we've
    had before. Instead try and go with a minimal exception to make the
    KDSET case work again, and nothing else.
    
    This means that if userspace does a KDSET call when switching between
    graphical compositors, there will be some flickering with fbcon
    showing up for a bit. But a) that's not a regression and b) userspace
    can fix it by improving the vt switching dance - logind should have
    all the information it needs.
    
    While pondering all this I'm also wondering wheter we should have a
    SWITCH_MASTER ioctl to allow race-free master status handover. But
    that's for another day.
    
    v2: Somehow forgot to cc all the fbdev people.
    
    v3: Fix typo Alex spotted.
    
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=208179
    Cc: shlomo@fastmail.com
    Reported-and-Tested-by: shlomo@fastmail.com
    Cc: Michel Dänzer <michel@daenzer.net>
    Fixes: 64914da24ea9 ("drm/fbdev-helper: don't force restores")
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: dri-devel@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v5.7+
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Qiujun Huang <hqjagain@gmail.com>
    Cc: Peter Rosin <peda@axentia.se>
    Cc: linux-fbdev@vger.kernel.org
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200624092910.3280448-1-daniel.vetter@ffwll.ch
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02e8880ca700a561947b0a136ddf749df6b8f9fa
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 33cf9a9eb0fd16507d6118815d97273726e9bbd1
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 27998cb2e9c678cb65698c1965a7d7b931e0a671
Author: Bernard Zhao <bernard@vivo.com>
Date:   Sat Jun 20 17:11:52 2020 +0800

    drm/amd: fix potential memleak in err branch
    
    commit b5b78a6c8d8cb9c307bc6b16a754603424459d6e upstream.
    
    The function kobject_init_and_add alloc memory like:
    kobject_init_and_add->kobject_add_varg->kobject_set_name_vargs
    ->kvasprintf_const->kstrdup_const->kstrdup->kmalloc_track_caller
    ->kmalloc_slab, in err branch this memory not free. If use
    kmemleak, this path maybe catched.
    These changes are to add kobject_put in kobject_init_and_add
    failed branch, fix potential memleak.
    
    Signed-off-by: Bernard Zhao <bernard@vivo.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 937007f09e254ee46a1cacc1d71be2381848f5a8
Author: Stylon Wang <stylon.wang@amd.com>
Date:   Mon Jun 1 16:12:09 2020 +0800

    drm/amd/display: Enable output_bpc property on all outputs
    
    commit 5ae9c378c3d88b40af72f8e8f961808e29f3e70b upstream.
    
    [Why]
    Connector property output_bpc is available on DP/eDP only. New IGT tests
    would benifit if this property works on HDMI.
    
    [How]
    Enable this read-only property on all types of connectors.
    
    Signed-off-by: Stylon Wang <stylon.wang@amd.com>
    Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f281b424b40a6c47b3ff17efbb56a8601cbcffa
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 4e900e335251faae100a155e32da6f4693771f51
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 fd600050bce631e15d4d44893558566135a3460d
Author: Sascha Ortmann <sascha.ortmann@stud.uni-hannover.de>
Date:   Thu Jun 18 18:33:01 2020 +0200

    tracing/boottime: Fix kprobe multiple events
    
    commit 20dc3847cc2fc886ee4eb9112e6e2fad9419b0c7 upstream.
    
    Fix boottime kprobe events to report and abort after each failure when
    adding probes.
    
    As an example, when we try to set multiprobe kprobe events in
    bootconfig like this:
    
    ftrace.event.kprobes.vfsevents {
            probes = "vfs_read $arg1 $arg2,,
                     !error! not reported;?", // leads to error
                     "vfs_write $arg1 $arg2"
    }
    
    This will not work as expected. After
    commit da0f1f4167e3af69e ("tracing/boottime: Fix kprobe event API usage"),
    the function trace_boot_add_kprobe_event will not produce any error
    message when adding a probe fails at kprobe_event_gen_cmd_start.
    Furthermore, we continue to add probes when kprobe_event_gen_cmd_end fails
    (and kprobe_event_gen_cmd_start did not fail). In this case the function
    even returns successfully when the last call to kprobe_event_gen_cmd_end
    is successful.
    
    The behaviour of reporting and aborting after failures is not
    consistent.
    
    The function trace_boot_add_kprobe_event now reports each failure and
    stops adding probes immediately.
    
    Link: https://lkml.kernel.org/r/20200618163301.25854-1-sascha.ortmann@stud.uni-hannover.de
    
    Cc: stable@vger.kernel.org
    Cc: linux-kernel@i4.cs.fau.de
    Co-developed-by: Maximilian Werner <maximilian.werner96@gmail.com>
    Fixes: da0f1f4167e3 ("tracing/boottime: Fix kprobe event API usage")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Maximilian Werner <maximilian.werner96@gmail.com>
    Signed-off-by: Sascha Ortmann <sascha.ortmann@stud.uni-hannover.de>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ed68843725c3074d284a1555e7731d910b15224
Author: Robin Gong <yibin.gong@nxp.com>
Date:   Fri May 22 18:44:51 2020 +0800

    arm64: dts: imx8mn-ddr4-evk: correct ldo1/ldo2 voltage range
    
    commit cfb12c8952f617df58d73d24161e539a035d82b0 upstream.
    
    Correct ldo1 voltage range from wrong high group(3.0V~3.3V) to low group
    (1.6V~1.9V) because the ldo1 should be 1.8V. Actually, two voltage groups
    have been supported at bd718x7-regulator driver, hence, just corrrect the
    voltage range to 1.6V~3.3V. For ldo2@0.8V, correct voltage range too.
    Otherwise, ldo1 would be kept @3.0V and ldo2@0.9V which violate i.mx8mn
    datasheet as the below warning log in kernel:
    
    [    0.995524] LDO1: Bringing 1800000uV into 3000000-3000000uV
    [    0.999196] LDO2: Bringing 800000uV into 900000-900000uV
    
    Fixes: 3e44dd09736d ("arm64: dts: imx8mn-ddr4-evk: Add rohm,bd71847 PMIC support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Robin Gong <yibin.gong@nxp.com>
    Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cc4c93ac409d923a745c40cc3f975196e99abf2
Author: Robin Gong <yibin.gong@nxp.com>
Date:   Fri May 22 18:44:50 2020 +0800

    arm64: dts: imx8mm-evk: correct ldo1/ldo2 voltage range
    
    commit 4fd6b5735c03c0955d93960d31f17d7144f5578f upstream.
    
    Correct ldo1 voltage range from wrong high group(3.0V~3.3V) to low group
    (1.6V~1.9V) because the ldo1 should be 1.8V. Actually, two voltage groups
    have been supported at bd718x7-regulator driver, hence, just corrrect the
    voltage range to 1.6V~3.3V. For ldo2@0.8V, correct voltage range too.
    Otherwise, ldo1 would be kept @3.0V and ldo2@0.9V which violate i.mx8mm
    datasheet as the below warning log in kernel:
    
    [    0.995524] LDO1: Bringing 1800000uV into 3000000-3000000uV
    [    0.999196] LDO2: Bringing 800000uV into 900000-900000uV
    
    Fixes: 78cc25fa265d ("arm64: dts: imx8mm-evk: Add BD71847 PMIC")
    Cc: stable@vger.kernel.org
    Signed-off-by: Robin Gong <yibin.gong@nxp.com>
    Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dd8d3f53e77e7e0c410da9edf78b56cf998b6ae
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 566ea141a7db1881c306ac98a52fd672661661c5
Author: Ben Widawsky <ben.widawsky@intel.com>
Date:   Thu Jun 25 20:30:51 2020 -0700

    mm/memory_hotplug.c: fix false softlockup during pfn range removal
    
    commit b7e3debdd0408c0dca5d4750371afa5003f792dc upstream.
    
    When working with very large nodes, poisoning the struct pages (for which
    there will be very many) can take a very long time.  If the system is
    using voluntary preemptions, the software watchdog will not be able to
    detect forward progress.  This patch addresses this issue by offering to
    give up time like __remove_pages() does.  This behavior was introduced in
    v5.6 with: commit d33695b16a9f ("mm/memory_hotplug: poison memmap in
    remove_pfn_range_from_zone()")
    
    Alternately, init_page_poison could do this cond_resched(), but it seems
    to me that the caller of init_page_poison() is what actually knows whether
    or not it should relax its own priority.
    
    Based on Dan's notes, I think this is perfectly safe: commit f931ab479dd2
    ("mm: fix devm_memremap_pages crash, use mem_hotplug_{begin, done}")
    
    Aside from fixing the lockup, it is also a friendlier thing to do on lower
    core systems that might wipe out large chunks of hotplug memory (probably
    not a very common case).
    
    Fixes this kind of splat:
    
      watchdog: BUG: soft lockup - CPU#46 stuck for 22s! [daxctl:9922]
      irq event stamp: 138450
      hardirqs last  enabled at (138449): [<ffffffffa1001f26>] trace_hardirqs_on_thunk+0x1a/0x1c
      hardirqs last disabled at (138450): [<ffffffffa1001f42>] trace_hardirqs_off_thunk+0x1a/0x1c
      softirqs last  enabled at (138448): [<ffffffffa1e00347>] __do_softirq+0x347/0x456
      softirqs last disabled at (138443): [<ffffffffa10c416d>] irq_exit+0x7d/0xb0
      CPU: 46 PID: 9922 Comm: daxctl Not tainted 5.7.0-BEN-14238-g373c6049b336 #30
      Hardware name: Intel Corporation PURLEY/PURLEY, BIOS PLYXCRB1.86B.0578.D07.1902280810 02/28/2019
      RIP: 0010:memset_erms+0x9/0x10
      Code: c1 e9 03 40 0f b6 f6 48 b8 01 01 01 01 01 01 01 01 48 0f af c6 f3 48 ab 89 d1 f3 aa 4c 89 c8 c3 90 49 89 f9 40 88 f0 48 89 d1 <f3> aa 4c 89 c8 c3 90 49 89 fa 40 0f b6 ce 48 b8 01 01 01 01 01 01
      Call Trace:
       remove_pfn_range_from_zone+0x3a/0x380
       memunmap_pages+0x17f/0x280
       release_nodes+0x22a/0x260
       __device_release_driver+0x172/0x220
       device_driver_detach+0x3e/0xa0
       unbind_store+0x113/0x130
       kernfs_fop_write+0xdc/0x1c0
       vfs_write+0xde/0x1d0
       ksys_write+0x58/0xd0
       do_syscall_64+0x5a/0x120
       entry_SYSCALL_64_after_hwframe+0x49/0xb3
      Built 2 zonelists, mobility grouping on.  Total pages: 49050381
      Policy zone: Normal
      Built 3 zonelists, mobility grouping on.  Total pages: 49312525
      Policy zone: Normal
    
    David said: "It really only is an issue for devmem.  Ordinary
    hotplugged system memory is not affected (onlined/offlined in memory
    block granularity)."
    
    Link: http://lkml.kernel.org/r/20200619231213.1160351-1-ben.widawsky@intel.com
    Fixes: commit d33695b16a9f ("mm/memory_hotplug: poison memmap in remove_pfn_range_from_zone()")
    Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
    Reported-by: "Scargall, Steve" <steve.scargall@intel.com>
    Reported-by: Ben Widawsky <ben.widawsky@intel.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Vishal Verma <vishal.l.verma@intel.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 bdfba3382c4416f0ae4c4df6e34604393493e115
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Thu Jun 25 20:30:19 2020 -0700

    mm/memcontrol.c: add missed css_put()
    
    commit 3a98990ae2150277ed34d3b248c60e68bf2244b2 upstream.
    
    We should put the css reference when memory allocation failed.
    
    Link: http://lkml.kernel.org/r/20200614122653.98829-1-songmuchun@bytedance.com
    Fixes: f0a3a24b532d ("mm: memcg/slab: rework non-root kmem_cache lifecycle management")
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Qian Cai <cai@lca.pw>
    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 2652d59d728d74c00ae4e546e56ba08e9e10f8cd
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Thu Jun 25 20:30:16 2020 -0700

    mm: memcontrol: handle div0 crash race condition in memory.low
    
    commit cd324edce598ebddde44162a2aa01321c1261b9e upstream.
    
    Tejun reports seeing rare div0 crashes in memory.low stress testing:
    
      RIP: 0010:mem_cgroup_calculate_protection+0xed/0x150
      Code: 0f 46 d1 4c 39 d8 72 57 f6 05 16 d6 42 01 40 74 1f 4c 39 d8 76 1a 4c 39 d1 76 15 4c 29 d1 4c 29 d8 4d 29 d9 31 d2 48 0f af c1 <49> f7 f1 49 01 c2 4c 89 96 38 01 00 00 5d c3 48 0f af c7 31 d2 49
      RSP: 0018:ffffa14e01d6fcd0 EFLAGS: 00010246
      RAX: 000000000243e384 RBX: 0000000000000000 RCX: 0000000000008f4b
      RDX: 0000000000000000 RSI: ffff8b89bee84000 RDI: 0000000000000000
      RBP: ffffa14e01d6fcd0 R08: ffff8b89ca7d40f8 R09: 0000000000000000
      R10: 0000000000000000 R11: 00000000006422f7 R12: 0000000000000000
      R13: ffff8b89d9617000 R14: ffff8b89bee84000 R15: ffffa14e01d6fdb8
      FS:  0000000000000000(0000) GS:ffff8b8a1f1c0000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f93b1fc175b CR3: 000000016100a000 CR4: 0000000000340ea0
      Call Trace:
        shrink_node+0x1e5/0x6c0
        balance_pgdat+0x32d/0x5f0
        kswapd+0x1d7/0x3d0
        kthread+0x11c/0x160
        ret_from_fork+0x1f/0x30
    
    This happens when parent_usage == siblings_protected.
    
    We check that usage is bigger than protected, which should imply
    parent_usage being bigger than siblings_protected.  However, we don't
    read (or even update) these values atomically, and they can be out of
    sync as the memory state changes under us.  A bit of fluctuation around
    the target protection isn't a big deal, but we need to handle the div0
    case.
    
    Check the parent state explicitly to make sure we have a reasonable
    positive value for the divisor.
    
    Link: http://lkml.kernel.org/r/20200615140658.601684-1-hannes@cmpxchg.org
    Fixes: 8a931f801340 ("mm: memcontrol: recursive memory.low protection")
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Reported-by: Tejun Heo <tj@kernel.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Chris Down <chris@chrisdown.name>
    Cc: Roman Gushchin <guro@fb.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 484417cc49419db36cfc34d82031b75d128ad743
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 f0ca53238770c75e2928b3210c9d54e850b8a272
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 4fad888adf776ed41241bec92246d06c6e4be405
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 4269af8baf7e57bfe08403ec950fe62880044fe2
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 b60dbf1275e14e1b7aa7721a922f0ef7090abb45
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 768e7c02f3d6e1842a4c45c40744a3dd4a25faf5
Author: Waiman Long <longman@redhat.com>
Date:   Thu Jun 25 20:29:49 2020 -0700

    mm, slab: fix sign conversion problem in memcg_uncharge_slab()
    
    commit d7670879c5c4aa443d518fb234a9e5f30931efa3 upstream.
    
    It was found that running the LTP test on a PowerPC system could produce
    erroneous values in /proc/meminfo, like:
    
      MemTotal:       531915072 kB
      MemFree:        507962176 kB
      MemAvailable:   1100020596352 kB
    
    Using bisection, the problem is tracked down to commit 9c315e4d7d8c ("mm:
    memcg/slab: cache page number in memcg_(un)charge_slab()").
    
    In memcg_uncharge_slab() with a "int order" argument:
    
      unsigned int nr_pages = 1 << order;
        :
      mod_lruvec_state(lruvec, cache_vmstat_idx(s), -nr_pages);
    
    The mod_lruvec_state() function will eventually call the
    __mod_zone_page_state() which accepts a long argument.  Depending on the
    compiler and how inlining is done, "-nr_pages" may be treated as a
    negative number or a very large positive number.  Apparently, it was
    treated as a large positive number in that PowerPC system leading to
    incorrect stat counts.  This problem hasn't been seen in x86-64 yet,
    perhaps the gcc compiler there has some slight difference in behavior.
    
    It is fixed by making nr_pages a signed value.  For consistency, a similar
    change is applied to memcg_charge_slab() as well.
    
    Link: http://lkml.kernel.org/r/20200620184719.10994-1-longman@redhat.com
    Fixes: 9c315e4d7d8c ("mm: memcg/slab: cache page number in memcg_(un)charge_slab()").
    Signed-off-by: Waiman Long <longman@redhat.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 196a44d3e04ee8f724672c15ae60d2a7bff96eb3
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Thu Jun 25 20:29:24 2020 -0700

    mm, compaction: make capture control handling safe wrt interrupts
    
    commit b9e20f0da1f5c9c68689450a8cb436c9486434c8 upstream.
    
    Hugh reports:
    
     "While stressing compaction, one run oopsed on NULL capc->cc in
      __free_one_page()'s task_capc(zone): compact_zone_order() had been
      interrupted, and a page was being freed in the return from interrupt.
    
      Though you would not expect it from the source, both gccs I was using
      (4.8.1 and 7.5.0) had chosen to compile compact_zone_order() with the
      ".cc = &cc" implemented by mov %rbx,-0xb0(%rbp) immediately before
      callq compact_zone - long after the "current->capture_control =
      &capc". An interrupt in between those finds capc->cc NULL (zeroed by
      an earlier rep stos).
    
      This could presumably be fixed by a barrier() before setting
      current->capture_control in compact_zone_order(); but would also need
      more care on return from compact_zone(), in order not to risk leaking
      a page captured by interrupt just before capture_control is reset.
    
      Maybe that is the preferable fix, but I felt safer for task_capc() to
      exclude the rather surprising possibility of capture at interrupt
      time"
    
    I have checked that gcc10 also behaves the same.
    
    The advantage of fix in compact_zone_order() is that we don't add
    another test in the page freeing hot path, and that it might prevent
    future problems if we stop exposing pointers to uninitialized structures
    in current task.
    
    So this patch implements the suggestion for compact_zone_order() with
    barrier() (and WRITE_ONCE() to prevent store tearing) for setting
    current->capture_control, and prevents page leaking with
    WRITE_ONCE/READ_ONCE in the proper order.
    
    Link: http://lkml.kernel.org/r/20200616082649.27173-1-vbabka@suse.cz
    Fixes: 5e1f0f098b46 ("mm, compaction: capture a page under direct compaction")
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Reported-by: Hugh Dickins <hughd@google.com>
    Suggested-by: Hugh Dickins <hughd@google.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Cc: Alex Shi <alex.shi@linux.alibaba.com>
    Cc: Li Wang <liwang@redhat.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: <stable@vger.kernel.org>    [5.1+]
    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 8c118799652e511ef3e083f9a4afb0b32f755dcf
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 15 18:49:13 2020 +0100

    btrfs: fix RWF_NOWAIT write not failling when we need to cow
    
    commit 260a63395f90f67d6ab89e4266af9e3dc34a77e9 upstream.
    
    If we attempt to do a RWF_NOWAIT write against a file range for which we
    can only do NOCOW for a part of it, due to the existence of holes or
    shared extents for example, we proceed with the write as if it were
    possible to NOCOW the whole range.
    
    Example:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ touch /mnt/sdj/bar
      $ chattr +C /mnt/sdj/bar
    
      $ xfs_io -d -c "pwrite -S 0xab -b 256K 0 256K" /mnt/bar
      wrote 262144/262144 bytes at offset 0
      256 KiB, 1 ops; 0.0003 sec (694.444 MiB/sec and 2777.7778 ops/sec)
    
      $ xfs_io -c "fpunch 64K 64K" /mnt/bar
      $ sync
    
      $ xfs_io -d -c "pwrite -N -V 1 -b 128K -S 0xfe 0 128K" /mnt/bar
      wrote 131072/131072 bytes at offset 0
      128 KiB, 1 ops; 0.0007 sec (160.051 MiB/sec and 1280.4097 ops/sec)
    
    This last write should fail with -EAGAIN since the file range from 64K to
    128K is a hole. On xfs it fails, as expected, but on ext4 it currently
    succeeds because apparently it is expensive to check if there are extents
    allocated for the whole range, but I'll check with the ext4 people.
    
    Fix the issue by checking if check_can_nocow() returns a number of
    NOCOW'able bytes smaller then the requested number of bytes, and if it
    does return -EAGAIN.
    
    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 a48e69ac370de14da825db6c597cc6abc73916f5
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 efc4aadc8640bd4fd3158e3c3cdbbdb879778041
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 15 18:46:01 2020 +0100

    btrfs: fix hang on snapshot creation after RWF_NOWAIT write
    
    commit f2cb2f39ccc30fa13d3ac078d461031a63960e5b upstream.
    
    If we do a successful RWF_NOWAIT write we end up locking the snapshot lock
    of the inode, through a call to check_can_nocow(), but we never unlock it.
    
    This means the next attempt to create a snapshot on the subvolume will
    hang forever.
    
    Trivial reproducer:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ touch /mnt/foobar
      $ chattr +C /mnt/foobar
      $ xfs_io -d -c "pwrite -S 0xab 0 64K" /mnt/foobar
      $ xfs_io -d -c "pwrite -N -V 1 -S 0xfe 0 64K" /mnt/foobar
    
      $ btrfs subvolume snapshot -r /mnt /mnt/snap
        --> hangs
    
    Fix this by unlocking the snapshot lock if check_can_nocow() returned
    success.
    
    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 0de6dbba25bbfe03e2380bd493c67564c76c3c2f
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 15 10:38:44 2020 +0100

    btrfs: check if a log root exists before locking the log_mutex on unlink
    
    commit e7a79811d0db136dc2d336b56d54cf1b774ce972 upstream.
    
    This brings back an optimization that commit e678934cbe5f02 ("btrfs:
    Remove unnecessary check from join_running_log_trans") removed, but in
    a different form. So it's almost equivalent to a revert.
    
    That commit removed an optimization where we avoid locking a root's
    log_mutex when there is no log tree created in the current transaction.
    The affected code path is triggered through unlink operations.
    
    That commit was based on the assumption that the optimization was not
    necessary because we used to have the following checks when the patch
    was authored:
    
      int btrfs_del_dir_entries_in_log(...)
      {
            (...)
            if (dir->logged_trans < trans->transid)
                return 0;
    
            ret = join_running_log_trans(root);
            (...)
       }
    
       int btrfs_del_inode_ref_in_log(...)
       {
            (...)
            if (inode->logged_trans < trans->transid)
                return 0;
    
            ret = join_running_log_trans(root);
            (...)
       }
    
    However before that patch was merged, another patch was merged first which
    replaced those checks because they were buggy.
    
    That other patch corresponds to commit 803f0f64d17769 ("Btrfs: fix fsync
    not persisting dentry deletions due to inode evictions"). The assumption
    that if the logged_trans field of an inode had a smaller value then the
    current transaction's generation (transid) meant that the inode was not
    logged in the current transaction was only correct if the inode was not
    evicted and reloaded in the current transaction. So the corresponding bug
    fix changed those checks and replaced them with the following helper
    function:
    
      static bool inode_logged(struct btrfs_trans_handle *trans,
                               struct btrfs_inode *inode)
      {
            if (inode->logged_trans == trans->transid)
                    return true;
    
            if (inode->last_trans == trans->transid &&
                test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &inode->runtime_flags) &&
                !test_bit(BTRFS_FS_LOG_RECOVERING, &trans->fs_info->flags))
                    return true;
    
            return false;
      }
    
    So if we have a subvolume without a log tree in the current transaction
    (because we had no fsyncs), every time we unlink an inode we can end up
    trying to lock the log_mutex of the root through join_running_log_trans()
    twice, once for the inode being unlinked (by btrfs_del_inode_ref_in_log())
    and once for the parent directory (with btrfs_del_dir_entries_in_log()).
    
    This means if we have several unlink operations happening in parallel for
    inodes in the same subvolume, and the those inodes and/or their parent
    inode were changed in the current transaction, we end up having a lot of
    contention on the log_mutex.
    
    The test robots from intel reported a -30.7% performance regression for
    a REAIM test after commit e678934cbe5f02 ("btrfs: Remove unnecessary check
    from join_running_log_trans").
    
    So just bring back the optimization to join_running_log_trans() where we
    check first if a log root exists before trying to lock the log_mutex. This
    is done by checking for a bit that is set on the root when a log tree is
    created and removed when a log tree is freed (at transaction commit time).
    
    Commit e678934cbe5f02 ("btrfs: Remove unnecessary check from
    join_running_log_trans") was merged in the 5.4 merge window while commit
    803f0f64d17769 ("Btrfs: fix fsync not persisting dentry deletions due to
    inode evictions") was merged in the 5.3 merge window. But the first
    commit was actually authored before the second commit (May 23 2019 vs
    June 19 2019).
    
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Link: https://lore.kernel.org/lkml/20200611090233.GL12456@shao2-debian/
    Fixes: e678934cbe5f02 ("btrfs: Remove unnecessary check from join_running_log_trans")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    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 a594e7199df83eed62e246020ec21aec37d8c8c2
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 b792c68e3d74ff260f3485f690976660564b6545
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 8 13:33:05 2020 +0100

    btrfs: fix bytes_may_use underflow when running balance and scrub in parallel
    
    commit 6bd335b469f945f75474c11e3f577f85409f39c3 upstream.
    
    When balance and scrub are running in parallel it is possible to end up
    with an underflow of the bytes_may_use counter of the data space_info
    object, which triggers a warning like the following:
    
       [134243.793196] BTRFS info (device sdc): relocating block group 1104150528 flags data
       [134243.806891] ------------[ cut here ]------------
       [134243.807561] WARNING: CPU: 1 PID: 26884 at fs/btrfs/space-info.h:125 btrfs_add_reserved_bytes+0x1da/0x280 [btrfs]
       [134243.808819] Modules linked in: btrfs blake2b_generic xor (...)
       [134243.815779] CPU: 1 PID: 26884 Comm: kworker/u8:8 Tainted: G        W         5.6.0-rc7-btrfs-next-58 #5
       [134243.816944] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
       [134243.818389] Workqueue: writeback wb_workfn (flush-btrfs-108483)
       [134243.819186] RIP: 0010:btrfs_add_reserved_bytes+0x1da/0x280 [btrfs]
       [134243.819963] Code: 0b f2 85 (...)
       [134243.822271] RSP: 0018:ffffa4160aae7510 EFLAGS: 00010287
       [134243.822929] RAX: 000000000000c000 RBX: ffff96159a8c1000 RCX: 0000000000000000
       [134243.823816] RDX: 0000000000008000 RSI: 0000000000000000 RDI: ffff96158067a810
       [134243.824742] RBP: ffff96158067a800 R08: 0000000000000001 R09: 0000000000000000
       [134243.825636] R10: ffff961501432a40 R11: 0000000000000000 R12: 000000000000c000
       [134243.826532] R13: 0000000000000001 R14: ffffffffffff4000 R15: ffff96158067a810
       [134243.827432] FS:  0000000000000000(0000) GS:ffff9615baa00000(0000) knlGS:0000000000000000
       [134243.828451] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       [134243.829184] CR2: 000055bd7e414000 CR3: 00000001077be004 CR4: 00000000003606e0
       [134243.830083] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       [134243.830975] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       [134243.831867] Call Trace:
       [134243.832211]  find_free_extent+0x4a0/0x16c0 [btrfs]
       [134243.832846]  btrfs_reserve_extent+0x91/0x180 [btrfs]
       [134243.833487]  cow_file_range+0x12d/0x490 [btrfs]
       [134243.834080]  fallback_to_cow+0x82/0x1b0 [btrfs]
       [134243.834689]  ? release_extent_buffer+0x121/0x170 [btrfs]
       [134243.835370]  run_delalloc_nocow+0x33f/0xa30 [btrfs]
       [134243.836032]  btrfs_run_delalloc_range+0x1ea/0x6d0 [btrfs]
       [134243.836725]  ? find_lock_delalloc_range+0x221/0x250 [btrfs]
       [134243.837450]  writepage_delalloc+0xe8/0x150 [btrfs]
       [134243.838059]  __extent_writepage+0xe8/0x4c0 [btrfs]
       [134243.838674]  extent_write_cache_pages+0x237/0x530 [btrfs]
       [134243.839364]  extent_writepages+0x44/0xa0 [btrfs]
       [134243.839946]  do_writepages+0x23/0x80
       [134243.840401]  __writeback_single_inode+0x59/0x700
       [134243.841006]  writeback_sb_inodes+0x267/0x5f0
       [134243.841548]  __writeback_inodes_wb+0x87/0xe0
       [134243.842091]  wb_writeback+0x382/0x590
       [134243.842574]  ? wb_workfn+0x4a2/0x6c0
       [134243.843030]  wb_workfn+0x4a2/0x6c0
       [134243.843468]  process_one_work+0x26d/0x6a0
       [134243.843978]  worker_thread+0x4f/0x3e0
       [134243.844452]  ? process_one_work+0x6a0/0x6a0
       [134243.844981]  kthread+0x103/0x140
       [134243.845400]  ? kthread_create_worker_on_cpu+0x70/0x70
       [134243.846030]  ret_from_fork+0x3a/0x50
       [134243.846494] irq event stamp: 0
       [134243.846892] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
       [134243.847682] hardirqs last disabled at (0): [<ffffffffb2abdedf>] copy_process+0x74f/0x2020
       [134243.848687] softirqs last  enabled at (0): [<ffffffffb2abdedf>] copy_process+0x74f/0x2020
       [134243.849913] softirqs last disabled at (0): [<0000000000000000>] 0x0
       [134243.850698] ---[ end trace bd7c03622e0b0a96 ]---
       [134243.851335] ------------[ cut here ]------------
    
    When relocating a data block group, for each extent allocated in the
    block group we preallocate another extent with the same size for the
    data relocation inode (we do it at prealloc_file_extent_cluster()).
    We reserve space by calling btrfs_check_data_free_space(), which ends
    up incrementing the data space_info's bytes_may_use counter, and
    then call btrfs_prealloc_file_range() to allocate the extent, which
    always decrements the bytes_may_use counter by the same amount.
    
    The expectation is that writeback of the data relocation inode always
    follows a NOCOW path, by writing into the preallocated extents. However,
    when starting writeback we might end up falling back into the COW path,
    because the block group that contains the preallocated extent was turned
    into RO mode by a scrub running in parallel. The COW path then calls the
    extent allocator which ends up calling btrfs_add_reserved_bytes(), and
    this function decrements the bytes_may_use counter of the data space_info
    object by an amount corresponding to the size of the allocated extent,
    despite we haven't previously incremented it. When the counter currently
    has a value smaller then the allocated extent we reset the counter to 0
    and emit a warning, otherwise we just decrement it and slowly mess up
    with this counter which is crucial for space reservation, the end result
    can be granting reserved space to tasks when there isn't really enough
    free space, and having the tasks fail later in critical places where
    error handling consists of a transaction abort or hitting a BUG_ON().
    
    Fix this by making sure that if we fallback to the COW path for a data
    relocation inode, we increment the bytes_may_use counter of the data
    space_info object. The COW path will then decrement it at
    btrfs_add_reserved_bytes() on success or through its error handling part
    by a call to extent_clear_unlock_delalloc() (which ends up calling
    btrfs_clear_delalloc_extent() that does the decrement operation) in case
    of an error.
    
    Test case btrfs/061 from fstests could sporadically trigger this.
    
    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 6864afb39cb984081744ceba1271483d27545d19
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 8a19394fb0c59fe589555db79e6664ea41cf8f34
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Mon Jun 8 10:41:34 2020 -0700

    x86/cpu: Reinitialize IA32_FEAT_CTL MSR on BSP during wakeup
    
    commit 5d5103595e9e53048bb7e70ee2673c897ab38300 upstream.
    
    Reinitialize IA32_FEAT_CTL on the BSP during wakeup to handle the case
    where firmware doesn't initialize or save/restore across S3.  This fixes
    a bug where IA32_FEAT_CTL is left uninitialized and results in VMXON
    taking a #GP due to VMX not being fully enabled, i.e. breaks KVM.
    
    Use init_ia32_feat_ctl() to "restore" IA32_FEAT_CTL as it already deals
    with the case where the MSR is locked, and because APs already redo
    init_ia32_feat_ctl() during suspend by virtue of the SMP boot flow being
    used to reinitialize APs upon wakeup.  Do the call in the early wakeup
    flow to avoid dependencies in the syscore_ops chain, e.g. simply adding
    a resume hook is not guaranteed to work, as KVM does VMXON in its own
    resume hook, kvm_resume(), when KVM has active guests.
    
    Fixes: 21bd3467a58e ("KVM: VMX: Drop initialization of IA32_FEAT_CTL MSR")
    Reported-by: Brad Campbell <lists2009@fnarfbargle.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Tested-by: Brad Campbell <lists2009@fnarfbargle.com>
    Cc: stable@vger.kernel.org # v5.6
    Link: https://lkml.kernel.org/r/20200608174134.11157-1-sean.j.christopherson@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e61226455883133eeeb2d91c95fe6f84569f665
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Jun 8 20:15:09 2020 -0700

    x86/cpu: Use pinning mask for CR4 bits needing to be 0
    
    commit a13b9d0b97211579ea63b96c606de79b963c0f47 upstream.
    
    The X86_CR4_FSGSBASE bit of CR4 should not change after boot[1]. Older
    kernels should enforce this bit to zero, and newer kernels need to
    enforce it depending on boot-time configuration (e.g. "nofsgsbase").
    To support a pinned bit being either 1 or 0, use an explicit mask in
    combination with the expected pinned bit values.
    
    [1] https://lore.kernel.org/lkml/20200527103147.GI325280@hirez.programming.kicks-ass.net
    
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/202006082013.71E29A42@keescook
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94e9aa029b81327467bc191dae9f30954cf19d5c
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Mon Jun 22 17:51:35 2020 -0700

    KVM: VMX: Stop context switching MSR_IA32_UMWAIT_CONTROL
    
    commit bf09fb6cba4f7099620cc9ed32d94c27c4af992e upstream.
    
    Remove support for context switching between the guest's and host's
    desired UMWAIT_CONTROL.  Propagating the guest's value to hardware isn't
    required for correct functionality, e.g. KVM intercepts reads and writes
    to the MSR, and the latency effects of the settings controlled by the
    MSR are not architecturally visible.
    
    As a general rule, KVM should not allow the guest to control power
    management settings unless explicitly enabled by userspace, e.g. see
    KVM_CAP_X86_DISABLE_EXITS.  E.g. Intel's SDM explicitly states that C0.2
    can improve the performance of SMT siblings.  A devious guest could
    disable C0.2 so as to improve the performance of their workloads at the
    detriment to workloads running in the host or on other VMs.
    
    Wholesale removal of UMWAIT_CONTROL context switching also fixes a race
    condition where updates from the host may cause KVM to enter the guest
    with the incorrect value.  Because updates are are propagated to all
    CPUs via IPI (SMP function callback), the value in hardware may be
    stale with respect to the cached value and KVM could enter the guest
    with the wrong value in hardware.  As above, the guest can't observe the
    bad value, but it's a weird and confusing wart in the implementation.
    
    Removal also fixes the unnecessary usage of VMX's atomic load/store MSR
    lists.  Using the lists is only necessary for MSRs that are required for
    correct functionality immediately upon VM-Enter/VM-Exit, e.g. EFER on
    old hardware, or for MSRs that need to-the-uop precision, e.g. perf
    related MSRs.  For UMWAIT_CONTROL, the effects are only visible in the
    kernel via TPAUSE/delay(), and KVM doesn't do any form of delay in
    vcpu_vmx_run().  Using the atomic lists is undesirable as they are more
    expensive than direct RDMSR/WRMSR.
    
    Furthermore, even if giving the guest control of the MSR is legitimate,
    e.g. in pass-through scenarios, it's not clear that the benefits would
    outweigh the overhead.  E.g. saving and restoring an MSR across a VMX
    roundtrip costs ~250 cycles, and if the guest diverged from the host
    that cost would be paid on every run of the guest.  In other words, if
    there is a legitimate use case then it should be enabled by a new
    per-VM capability.
    
    Note, KVM still needs to emulate MSR_IA32_UMWAIT_CONTROL so that it can
    correctly expose other WAITPKG features to the guest, e.g. TPAUSE,
    UMWAIT and UMONITOR.
    
    Fixes: 6e3ba4abcea56 ("KVM: vmx: Emulate MSR IA32_UMWAIT_CONTROL")
    Cc: stable@vger.kernel.org
    Cc: Jingqi Liu <jingqi.liu@intel.com>
    Cc: Tao Xu <tao3.xu@intel.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200623005135.10414-1-sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b9f22865ea095f5096f5a864efd5e0d1a744759
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 a8f00b7993eecfa41993a5cedaf94d0529e427e0
Author: Igor Mammedov <imammedo@redhat.com>
Date:   Mon Jun 22 12:08:30 2020 -0400

    kvm: lapic: fix broken vcpu hotplug
    
    commit af28dfacbe00d53df5dec2bf50640df33138b1fe upstream.
    
    Guest fails to online hotplugged CPU with error
      smpboot: do_boot_cpu failed(-1) to wakeup CPU#4
    
    It's caused by the fact that kvm_apic_set_state(), which used to call
    recalculate_apic_map() unconditionally and pulled hotplugged CPU into
    apic map, is updating map conditionally on state changes.  In this case
    the APIC map is not considered dirty and the is not updated.
    
    Fix the issue by forcing unconditional update from kvm_apic_set_state(),
    like it used to be.
    
    Fixes: 4abaffce4d25a ("KVM: LAPIC: Recalculate apic map in batch")
    Cc: stable@vger.kernel.org
    Signed-off-by: Igor Mammedov <imammedo@redhat.com>
    Message-Id: <20200622160830.426022-1-imammedo@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa7bc949a45efff00ae7493f943c3bacd8931a05
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 82114bbcc9e558bd0bbb1382b3e2268539e12eff
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 63897052acc5a97e6cd0ffecda0a8d05aab6f85b
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Mon Jun 15 04:43:32 2020 -0600

    ACPI: configfs: Disallow loading ACPI tables when locked down
    
    commit 75b0cea7bf307f362057cc778efe89af4c615354 upstream.
    
    Like other vectors already patched, this one here allows the root
    user to load ACPI tables, which enables arbitrary physical address
    writes, which in turn makes it possible to disable lockdown.
    
    Prevents this by checking the lockdown status before allowing a new
    ACPI table to be installed. The link in the trailer shows a PoC of
    how this might be used.
    
    Link: https://git.zx2c4.com/american-unsigned-language/tree/american-unsigned-language-2.sh
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01b8089bfcafac9f69d8eec609b09a6fca03c3ac
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 b9d521ef77d2a5a5f5a055e3f315894a9959659b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Jun 17 18:29:02 2020 +0800

    ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems
    
    commit b2c22910fe5aae10b7e17b0721e63a3edf0c9553 upstream.
    
    There are two more HP systems control mute LED from HDA codec and need
    to expose micmute led class so SoF can control micmute LED.
    
    Add quirks to support them.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200617102906.16156-2-kai.heng.feng@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ed8c67ee5c170cf707f58e9f28d87def1268ee2
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 5426b400cf5847b2e0678b171b86b91350f41261
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 20329827a81a40d7c07ee26bab233f6268f3cb0f
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Jun 10 13:48:51 2020 +0200

    syscalls: Fix offset type of ksys_ftruncate()
    
    commit 8e742aa79780b13cd300a42198c1a4cea9c89905 upstream.
    
    After the commit below, truncate() on x86 32bit uses ksys_ftruncate(). But
    ksys_ftruncate() truncates the offset to unsigned long.
    
    Switch the type of offset to loff_t which is what do_sys_ftruncate()
    expects.
    
    Fixes: 121b32a58a3a (x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments)
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Brian Gerst <brgerst@gmail.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200610114851.28549-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c1549e363a1386c9a66f394dfda2cbeefbe3dfc
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 f6f7d573f8a18174c0c8c90d7e778f12846cd97d
Author: Weiping Zhang <zhangweiping@didiglobal.com>
Date:   Wed Jun 17 14:18:37 2020 +0800

    block: update hctx map when use multiple maps
    
    [ Upstream commit fe35ec58f0d339221643287bbb7cee15c93a5389 ]
    
    There is an issue when tune the number for read and write queues,
    if the total queue count was not changed. The hctx->type cannot
    be updated, since __blk_mq_update_nr_hw_queues will return directly
    if the total queue count has not been changed.
    
    Reproduce:
    
    dmesg | grep "default/read/poll"
    [    2.607459] nvme nvme0: 48/0/0 default/read/poll queues
    cat /sys/kernel/debug/block/nvme0n1/hctx*/type | sort | uniq -c
         48 default
    
    tune the write queues to 24:
    echo 24 > /sys/module/nvme/parameters/write_queues
    echo 1 > /sys/block/nvme0n1/device/reset_controller
    
    dmesg | grep "default/read/poll"
    [  433.547235] nvme nvme0: 24/24/0 default/read/poll queues
    
    cat /sys/kernel/debug/block/nvme0n1/hctx*/type | sort | uniq -c
         48 default
    
    The driver's hardware queue mapping is not same as block layer.
    
    Signed-off-by: Weiping Zhang <zhangweiping@didiglobal.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4fa18ce8258029710c23a18ed079a930f1f0263a
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Wed May 20 16:50:26 2020 -0600

    nvdimm/region: always show the 'align' attribute
    
    [ Upstream commit 543094e19c82b5d171e139d09a1a3ea0a7361117 ]
    
    It is possible that a platform that is capable of 'namespace labels'
    comes up without the labels properly initialized. In this case, the
    region's 'align' attribute is hidden. Howerver, once the user does
    initialize he labels, the 'align' attribute still stays hidden, which is
    unexpected.
    
    The sysfs_update_group() API is meant to address this, and could be
    called during region probe, but it has entanglements with the device
    'lockdep_mutex'. Therefore, simply make the 'align' attribute always
    visible. It doesn't matter what it says for label-less namespaces, since
    it is not possible to change their allocation anyway.
    
    Suggested-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Link: https://lore.kernel.org/r/20200520225026.29426-1-vishal.l.verma@intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c76f94859585ec1f6425f9797c3d50908dd45d95
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 0281a5e32586d09757b8b3f3d9121f1ad687e2f0
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue May 12 17:02:33 2020 +0900

    kprobes: Suppress the suspicious RCU warning on kprobes
    
    [ Upstream commit 6743ad432ec92e680cd0d9db86cb17b949cf5a43 ]
    
    Anders reported that the lockdep warns that suspicious
    RCU list usage in register_kprobe() (detected by
    CONFIG_PROVE_RCU_LIST.) This is because get_kprobe()
    access kprobe_table[] by hlist_for_each_entry_rcu()
    without rcu_read_lock.
    
    If we call get_kprobe() from the breakpoint handler context,
    it is run with preempt disabled, so this is not a problem.
    But in other cases, instead of rcu_read_lock(), we locks
    kprobe_mutex so that the kprobe_table[] is not updated.
    So, current code is safe, but still not good from the view
    point of RCU.
    
    Joel suggested that we can silent that warning by passing
    lockdep_is_held() to the last argument of
    hlist_for_each_entry_rcu().
    
    Add lockdep_is_held(&kprobe_mutex) at the end of the
    hlist_for_each_entry_rcu() to suppress the warning.
    
    Link: http://lkml.kernel.org/r/158927055350.27680.10261450713467997503.stgit@devnote2
    
    Reported-by: Anders Roxell <anders.roxell@linaro.org>
    Suggested-by: Joel Fernandes <joel@joelfernandes.org>
    Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 496ad2cbb8d106ba7ceba5f98aff85232d31202b
Author: Sami Tolvanen <samitolvanen@google.com>
Date:   Fri Apr 24 12:30:46 2020 -0700

    recordmcount: support >64k sections
    
    [ Upstream commit 4ef57b21d6fb49d2b25c47e4cff467a0c2c8b6b7 ]
    
    When compiling a kernel with Clang and LTO, we need to run
    recordmcount on vmlinux.o with a large number of sections, which
    currently fails as the program doesn't understand extended
    section indexes. This change adds support for processing binaries
    with >64k sections.
    
    Link: https://lkml.kernel.org/r/20200424193046.160744-1-samitolvanen@google.com
    Link: https://lore.kernel.org/lkml/CAK7LNARbZhoaA=Nnuw0=gBrkuKbr_4Ng_Ei57uafujZf7Xazgw@mail.gmail.com/
    
    Cc: Kees Cook <keescook@chromium.org>
    Reviewed-by: Matt Helsley <mhelsley@vmware.com>
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea2e9013144a1eda1c4297a2e0f532677fb6269b
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 75c2747bfd224c1b13e5b0e7bd1719acd50b4dea
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 40b3e9c14a173859238f930f4696d6c12d9a2a6e
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 b671ec06830b79bd75a63d8051489a0c76269846
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Jun 2 12:25:24 2020 -0700

    s390/vdso: Use $(LD) instead of $(CC) to link vDSO
    
    [ Upstream commit 2b2a25845d534ac6d55086e35c033961fdd83a26 ]
    
    Currently, the VDSO is being linked through $(CC). This does not match
    how the rest of the kernel links objects, which is through the $(LD)
    variable.
    
    When clang is built in a default configuration, it first attempts to use
    the target triple's default linker, which is just ld. However, the user
    can override this through the CLANG_DEFAULT_LINKER cmake define so that
    clang uses another linker by default, such as LLVM's own linker, ld.lld.
    This can be useful to get more optimized links across various different
    projects.
    
    However, this is problematic for the s390 vDSO because ld.lld does not
    have any s390 emulatiom support:
    
    https://github.com/llvm/llvm-project/blob/llvmorg-10.0.1-rc1/lld/ELF/Driver.cpp#L132-L150
    
    Thus, if a user is using a toolchain with ld.lld as the default, they
    will see an error, even if they have specified ld.bfd through the LD
    make variable:
    
    $ make -j"$(nproc)" -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- LLVM=1 \
                           LD=s390x-linux-gnu-ld \
                           defconfig arch/s390/kernel/vdso64/
    ld.lld: error: unknown emulation: elf64_s390
    clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
    
    Normally, '-fuse-ld=bfd' could be used to get around this; however, this
    can be fragile, depending on paths and variable naming. The cleaner
    solution for the kernel is to take advantage of the fact that $(LD) can
    be invoked directly, which bypasses the heuristics of $(CC) and respects
    the user's choice. Similar changes have been done for ARM, ARM64, and
    MIPS.
    
    Link: https://lkml.kernel.org/r/20200602192523.32758-1-natechancellor@gmail.com
    Link: https://github.com/ClangBuiltLinux/linux/issues/1041
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    [heiko.carstens@de.ibm.com: add --build-id flag]
    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 8797e1ca7dac6dd5b7ebcff608e6467e36a5562e
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 2b0111cf8ce035f9e292aeb31ec89cd6a3d88f4c
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Fri Mar 6 13:19:34 2020 +0100

    s390/ptrace: pass invalid syscall numbers to tracing
    
    [ Upstream commit 00332c16b1604242a56289ff2b26e283dbad0812 ]
    
    tracing expects to see invalid syscalls, so pass it through.
    The syscall path in entry.S checks the syscall number before
    looking up the handler, so it is still safe.
    
    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 285d495c94e62d4afffad2452e726b05912355b2
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Fri Mar 6 13:18:31 2020 +0100

    s390/ptrace: return -ENOSYS when invalid syscall is supplied
    
    [ Upstream commit cd29fa798001075a554b978df3a64e6656c25794 ]
    
    The current code returns the syscall number which an invalid
    syscall number is supplied and tracing is enabled. This makes
    the strace testsuite fail.
    
    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 9045786c3ecf889236538b736d8e2961b7d8aa3b
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Wed Mar 4 16:07:34 2020 +0100

    s390/seccomp: pass syscall arguments via seccomp_data
    
    [ Upstream commit 664f5f8de825648d1d31f6f5652e3cd117c77b50 ]
    
    Use __secure_computing() and pass the register data via
    seccomp_data so secure computing doesn't have to fetch it
    again.
    
    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 b3ad72fb24bf11aad35697100af2e1ee66d0bd4d
Author: Vidya Sagar <vidyas@nvidia.com>
Date:   Thu Jun 4 23:19:35 2020 +0530

    pinctrl: tegra: Use noirq suspend/resume callbacks
    
    [ Upstream commit 782b6b69847f34dda330530493ea62b7de3fd06a ]
    
    Use noirq suspend/resume callbacks as other drivers which implement
    noirq suspend/resume callbacks (Ex:- PCIe) depend on pinctrl driver to
    configure the signals used by their respective devices in the noirq phase.
    
    Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Link: https://lore.kernel.org/r/20200604174935.26560-1-vidyas@nvidia.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a951f8527c250971fd9dac2d3383494d75e11ef
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Jun 4 03:28:17 2020 +0300

    pinctrl: qcom: spmi-gpio: fix warning about irq chip reusage
    
    [ Upstream commit 5e50311556c9f409a85740e3cb4c4511e7e27da0 ]
    
    Fix the following warnings caused by reusage of the same irq_chip
    instance for all spmi-gpio gpio_irq_chip instances. Instead embed
    irq_chip into pmic_gpio_state struct.
    
    gpio gpiochip2: (c440000.qcom,spmi:pmic@2:gpio@c000): detected irqchip that is shared with multiple gpiochips: please fix the driver.
    gpio gpiochip3: (c440000.qcom,spmi:pmic@4:gpio@c000): detected irqchip that is shared with multiple gpiochips: please fix the driver.
    gpio gpiochip4: (c440000.qcom,spmi:pmic@a:gpio@c000): detected irqchip that is shared with multiple gpiochips: please fix the driver.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Link: https://lore.kernel.org/r/20200604002817.667160-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 796100872499d7a1581ff3b6fc0f55bab2e46bc5
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Fri Jun 12 15:01:54 2020 -0500

    test_objagg: Fix potential memory leak in error handling
    
    [ Upstream commit a6379f0ad6375a707e915518ecd5c2270afcd395 ]
    
    In case of failure of check_expect_hints_stats(), the resources
    allocated by objagg_hints_get should be freed. The patch fixes
    this issue.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a81106f526afbfce8d2cbc86a5f9b764bc21b557
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 ff1a59dc9de754fa24a747b8cc08b72d304cb9ab
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 280f1cfd3eb3d9ab0ebea4c36268a44de987a9d1
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 e9df29ac2c3441be5a16e0fa22ae5fb0cb8de2bf
Author: Mauricio Faria de Oliveira <mfo@canonical.com>
Date:   Mon Jun 15 00:53:31 2020 +0800

    bcache: check and adjust logical block size for backing devices
    
    [ Upstream commit dcacbc1242c71e18fa9d2eadc5647e115c9c627d ]
    
    It's possible for a block driver to set logical block size to
    a value greater than page size incorrectly; e.g. bcache takes
    the value from the superblock, set by the user w/ make-bcache.
    
    This causes a BUG/NULL pointer dereference in the path:
    
      __blkdev_get()
      -> set_init_blocksize() // set i_blkbits based on ...
         -> bdev_logical_block_size()
            -> queue_logical_block_size() // ... this value
      -> bdev_disk_changed()
         ...
         -> blkdev_readpage()
            -> block_read_full_page()
               -> create_page_buffers() // size = 1 << i_blkbits
                  -> create_empty_buffers() // give size/take pointer
                     -> alloc_page_buffers() // return NULL
                     .. BUG!
    
    Because alloc_page_buffers() is called with size > PAGE_SIZE,
    thus it initializes head = NULL, skips the loop, return head;
    then create_empty_buffers() gets (and uses) the NULL pointer.
    
    This has been around longer than commit ad6bf88a6c19 ("block:
    fix an integer overflow in logical block size"); however, it
    increased the range of values that can trigger the issue.
    
    Previously only 8k/16k/32k (on x86/4k page size) would do it,
    as greater values overflow unsigned short to zero, and queue_
    logical_block_size() would then use the default of 512.
    
    Now the range with unsigned int is much larger, and users w/
    the 512k value, which happened to be zero'ed previously and
    work fine, started to hit this issue -- as the zero is gone,
    and queue_logical_block_size() does return 512k (>PAGE_SIZE.)
    
    Fix this by checking the bcache device's logical block size,
    and if it's greater than page size, fallback to the backing/
    cached device's logical page size.
    
    This doesn't affect cache devices as those are still checked
    for block/page size in read_super(); only the backing/cached
    devices are not.
    
    Apparently it's a regression from commit 2903381fce71 ("bcache:
    Take data offset from the bdev superblock."), moving the check
    into BCACHE_SB_VERSION_CDEV only. Now that we have superblocks
    of backing devices out there with this larger value, we cannot
    refuse to load them (i.e., have a similar check in _BDEV.)
    
    Ideally perhaps bcache should use all values from the backing
    device (physical/logical/io_min block size)? But for now just
    fix the problematic case.
    
    Test-case:
    
        # IMG=/root/disk.img
        # dd if=/dev/zero of=$IMG bs=1 count=0 seek=1G
        # DEV=$(losetup --find --show $IMG)
        # make-bcache --bdev $DEV --block 8k
          < see dmesg >
    
    Before:
    
        # uname -r
        5.7.0-rc7
    
        [   55.944046] BUG: kernel NULL pointer dereference, address: 0000000000000000
        ...
        [   55.949742] CPU: 3 PID: 610 Comm: bcache-register Not tainted 5.7.0-rc7 #4
        ...
        [   55.952281] RIP: 0010:create_empty_buffers+0x1a/0x100
        ...
        [   55.966434] Call Trace:
        [   55.967021]  create_page_buffers+0x48/0x50
        [   55.967834]  block_read_full_page+0x49/0x380
        [   55.972181]  do_read_cache_page+0x494/0x610
        [   55.974780]  read_part_sector+0x2d/0xaa
        [   55.975558]  read_lba+0x10e/0x1e0
        [   55.977904]  efi_partition+0x120/0x5a6
        [   55.980227]  blk_add_partitions+0x161/0x390
        [   55.982177]  bdev_disk_changed+0x61/0xd0
        [   55.982961]  __blkdev_get+0x350/0x490
        [   55.983715]  __device_add_disk+0x318/0x480
        [   55.984539]  bch_cached_dev_run+0xc5/0x270
        [   55.986010]  register_bcache.cold+0x122/0x179
        [   55.987628]  kernfs_fop_write+0xbc/0x1a0
        [   55.988416]  vfs_write+0xb1/0x1a0
        [   55.989134]  ksys_write+0x5a/0xd0
        [   55.989825]  do_syscall_64+0x43/0x140
        [   55.990563]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
        [   55.991519] RIP: 0033:0x7f7d60ba3154
        ...
    
    After:
    
        # uname -r
        5.7.0.bcachelbspgsz
    
        [   31.672460] bcache: bcache_device_init() bcache0: sb/logical block size (8192) greater than page size (4096) falling back to device logical block size (512)
        [   31.675133] bcache: register_bdev() registered backing device loop0
    
        # grep ^ /sys/block/bcache0/queue/*_block_size
        /sys/block/bcache0/queue/logical_block_size:512
        /sys/block/bcache0/queue/physical_block_size:8192
    
    Reported-by: Ryan Finnie <ryan@finnie.org>
    Reported-by: Sebastian Marsching <sebastian@marsching.com>
    Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0974f9670e535cb9e66f3653c45d73607392b334
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 7f5ee8efd85ec10914b324e4f2722dc4d22b12da
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 aef31ca02caf4c2cb8e8d6c31d721f442fbb922b
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 b4d6fec45e490a5597318f68d45674d1a9f11811
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 f3f0e114c088da075998e9dcf1d5ce6ee6a754ee
Author: Vincent Guittot <vincent.guittot@linaro.org>
Date:   Wed Jun 24 17:44:22 2020 +0200

    sched/cfs: change initial value of runnable_avg
    
    [ Upstream commit e21cf43406a190adfcc4bfe592768066fb3aaa9b ]
    
    Some performance regression on reaim benchmark have been raised with
      commit 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group")
    
    The problem comes from the init value of runnable_avg which is initialized
    with max value. This can be a problem if the newly forked task is finally
    a short task because the group of CPUs is wrongly set to overloaded and
    tasks are pulled less agressively.
    
    Set initial value of runnable_avg equals to util_avg to reflect that there
    is no waiting time so far.
    
    Fixes: 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group")
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200624154422.29166-1-vincent.guittot@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3fa41459aa64de784d68cb87ea6a6d3a3e38e5e3
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 fda6110fed3e37af1a434ffe975ccacf24395c81
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 53ca39914c1cda0bebfabf36c2c50137947342a3
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jun 24 17:00:24 2020 +0100

    afs: Fix storage of cell names
    
    [ Upstream commit 719fdd32921fb7e3208db8832d32ae1c2d68900f ]
    
    The cell name stored in the afs_cell struct is a 64-char + NUL buffer -
    when it needs to be able to handle up to AFS_MAXCELLNAME (256 chars) + NUL.
    
    Fix this by changing the array to a pointer and allocating the string.
    
    Found using Coverity.
    
    Fixes: 989782dcdc91 ("afs: Overhaul cell database management")
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c275f248df02ea3e8aab4a144467cc28682eaae5
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 868b4c2b33a54f68117e34823172fddc75dfb8dc
Author: Harish <harish@linux.ibm.com>
Date:   Thu Jun 25 22:27:21 2020 +0530

    selftests/powerpc: Fix build failure in ebb tests
    
    [ Upstream commit 896066aa0685af3434637998b76218c2045142a8 ]
    
    We use OUTPUT directory as TMPOUT for checking no-pie option.
    
    Since commit f2f02ebd8f38 ("kbuild: improve cc-option to clean up all
    temporary files") when building powerpc/ from selftests directory, the
    OUTPUT directory points to powerpc/pmu/ebb/ and gets removed when
    checking for -no-pie option in try-run routine, subsequently build
    fails with the following:
    
      $ make -C powerpc
      ...
      TARGET=ebb; BUILD_TARGET=$OUTPUT/$TARGET; mkdir -p $BUILD_TARGET; make OUTPUT=$BUILD_TARGET -k -C $TARGET all
      make[2]: Entering directory '/home/linux-master/tools/testing/selftests/powerpc/pmu/ebb'
      make[2]: *** No rule to make target 'Makefile'.
      make[2]: Failed to remake makefile 'Makefile'.
      make[2]: *** No rule to make target 'ebb.c', needed by '/home/linux-master/tools/testing/selftests/powerpc/pmu/ebb/reg_access_test'.
      make[2]: *** No rule to make target 'ebb_handler.S', needed by '/home/linux-master/tools/testing/selftests/powerpc/pmu/ebb/reg_access_test'.
      make[2]: *** No rule to make target 'trace.c', needed by '/home/linux-master/tools/testing/selftests/powerpc/pmu/ebb/reg_access_test'.
      make[2]: *** No rule to make target 'busy_loop.S', needed by '/home/linux-master/tools/testing/selftests/powerpc/pmu/ebb/reg_access_test'.
      make[2]: Target 'all' not remade because of errors.
    
    Fix this by adding a suffix to the OUTPUT directory so that the
    failure is avoided.
    
    Fixes: 9686813f6e9d ("selftests/powerpc: Fix try-run when source tree is not writable")
    Signed-off-by: Harish <harish@linux.ibm.com>
    [mpe: Mention that commit that triggered the breakage]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200625165721.264904-1-harish@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2637a3e6d8893e849769e7adce341aca310f038
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Jun 24 16:06:06 2020 -0600

    wil6210: account for napi_gro_receive never returning GRO_DROP
    
    [ Upstream commit 045790b7bc66a75070c112a61558c639cef2263e ]
    
    The napi_gro_receive function no longer returns GRO_DROP ever, making
    handling GRO_DROP dead code. This commit removes that dead code.
    Further, it's not even clear that device drivers have any business in
    taking action after passing off received packets; that's arguably out of
    their hands. In this case, too, the non-gro path didn't bother checking
    the return value. Plus, this had some clunky debugging functions that
    duplicated code from elsewhere and was generally pretty messy. So, this
    commit cleans that all up too.
    
    Fixes: 6570bc79c0df ("net: core: use listified Rx for GRO_NORMAL in napi_gro_receive()")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 690d185d922f3270b45da09db4a5e7c679269561
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Jun 24 16:06:04 2020 -0600

    socionext: account for napi_gro_receive never returning GRO_DROP
    
    [ Upstream commit e5e7d8052f6140985c03bd49ebaa0af9c2944bc6 ]
    
    The napi_gro_receive function no longer returns GRO_DROP ever, making
    handling GRO_DROP dead code. This commit removes that dead code.
    Further, it's not even clear that device drivers have any business in
    taking action after passing off received packets; that's arguably out of
    their hands.
    
    Fixes: 6570bc79c0df ("net: core: use listified Rx for GRO_NORMAL in napi_gro_receive()")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70f7dd2aaed966d8fb2d0cd86be577a4e48804b2
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Jun 24 16:06:03 2020 -0600

    wireguard: receive: account for napi_gro_receive never returning GRO_DROP
    
    [ Upstream commit df08126e3833e9dca19e2407db5f5860a7c194fb ]
    
    The napi_gro_receive function no longer returns GRO_DROP ever, making
    handling GRO_DROP dead code. This commit removes that dead code.
    Further, it's not even clear that device drivers have any business in
    taking action after passing off received packets; that's arguably out of
    their hands.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Fixes: 6570bc79c0df ("net: core: use listified Rx for GRO_NORMAL in napi_gro_receive()")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 370269fb28e08f7e84a2e10d725bd4885d2aeca7
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Wed Jun 24 13:08:18 2020 +0300

    net: macb: free resources on failure path of at91ether_open()
    
    [ Upstream commit 33fdef24c9ac20c68b71b363e423fbf9ad2bfc1e ]
    
    DMA buffers were not freed on failure path of at91ether_open().
    Along with changes for freeing the DMA buffers the enable/disable
    interrupt instructions were moved to at91ether_start()/at91ether_stop()
    functions and the operations on at91ether_stop() were done in
    their reverse order (compared with how is done in at91ether_start()):
    before this patch the operation order on interface open path
    was as follows:
    1/ alloc DMA buffers
    2/ enable tx, rx
    3/ enable interrupts
    and the order on interface close path was as follows:
    1/ disable tx, rx
    2/ disable interrupts
    3/ free dma buffers.
    
    Fixes: 7897b071ac3b ("net: macb: convert to phylink")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0e5d357e0fae4a18776167f7d08c91e6f2799da2
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 373050b14021c4a250fdac54213bf94616f8e4e3
Author: Vincent Chen <vincent.chen@sifive.com>
Date:   Tue Jun 23 09:24:17 2020 +0800

    clk: sifive: allocate sufficient memory for struct __prci_data
    
    [ Upstream commit d0a5fdf4cc83dabcdea668f971b8a2e916437711 ]
    
    The (struct __prci_data).hw_clks.hws is an array with dynamic elements.
    Using struct_size(pd, hw_clks.hws, ARRAY_SIZE(__prci_init_clocks))
    instead of sizeof(*pd) to get the correct memory size of
    struct __prci_data for sifive/fu540-prci. After applying this
    modifications, the kernel runs smoothly with CONFIG_SLAB_FREELIST_RANDOM
    enabled on the HiFive unleashed board.
    
    Fixes: 30b8e27e3b58 ("clk: sifive: add a driver for the SiFive FU540 PRCI IP block")
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01067255aaeb656fa5320f0ddf2761bc1f912a21
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Thu Jun 25 12:37:10 2020 +0300

    io_uring: fix hanging iopoll in case of -EAGAIN
    
    [ Upstream commit cd664b0e35cb1202f40c259a1a5ea791d18c879d ]
    
    io_do_iopoll() won't do anything with a request unless
    req->iopoll_completed is set. So io_complete_rw_iopoll() has to set
    it, otherwise io_do_iopoll() will poll a file again and again even
    though the request of interest was completed long time ago.
    
    Also, remove -EAGAIN check from io_issue_sqe() as it races with
    the changed lines. The request will take the long way and be
    resubmitted from io_iopoll*().
    
    io_kiocb's result and iopoll_completed")
    
    Fixes: bbde017a32b3 ("io_uring: add memory barrier to synchronize
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 330e1f55ac1d83eef10f4c55b42abb4c440da04b
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 e18c7bb2066220d59ccc4976f275f9748c7190e1
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 570c0336099bc09dc38b6b5a1fb547886d389efc
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Jun 24 11:13:02 2020 +0100

    qed: add missing error test for DBG_STATUS_NO_MATCHING_FRAMING_MODE
    
    [ Upstream commit a51243860893615b457b149da1ef5df0a4f1ffc2 ]
    
    The error DBG_STATUS_NO_MATCHING_FRAMING_MODE was added to the enum
    enum dbg_status however there is a missing corresponding entry for
    this in the array s_status_str. This causes an out-of-bounds read when
    indexing into the last entry of s_status_str.  Fix this by adding in
    the missing entry.
    
    Addresses-Coverity: ("Out-of-bounds read").
    Fixes: 2d22bc8354b1 ("qed: FW 8.42.2.0 debug features")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 93fb25d170c9a82296215947879bb02417d5b6fb
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Wed Jun 24 01:53:10 2020 -0700

    nvme: don't protect ns mutation with ns->head->lock
    
    [ Upstream commit e164471dcf19308d154adb69e7760d8ba426a77f ]
    
    Right now ns->head->lock is protecting namespace mutation
    which is wrong and unneeded. Move it to only protect
    against head mutations. While we're at it, remove unnecessary
    ns->head reference as we already have head pointer.
    
    The problem with this is that the head->lock spans
    mpath disk node I/O that may block under some conditions (if
    for example the controller is disconnecting or the path
    became inaccessible), The locking scheme does not allow any
    other path to enable itself, preventing blocked I/O to complete
    and forward-progress from there.
    
    This is a preparation patch for the fix in a subsequent patch
    where the disk I/O will also be done outside the head->lock.
    
    Fixes: 0d0b660f214d ("nvme: add ANA support")
    Signed-off-by: Anton Eidelman <anton@lightbitslabs.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d35f94256522f71869b8f54344aaa2c0200a7963
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Jun 18 21:11:17 2020 +0900

    usb: renesas_usbhs: getting residue from callback_result
    
    [ Upstream commit ea0efd687b01355cd799c8643d0c636ba4859ffc ]
    
    This driver assumed that dmaengine_tx_status() could return
    the residue even if the transfer was completed. However,
    this was not correct usage [1] and this caused to break getting
    the residue after the commit 24461d9792c2 ("dmaengine:
    virt-dma: Fix access after free in vchan_complete()") actually.
    So, this is possible to get wrong received size if the usb
    controller gets a short packet. For example, g_zero driver
    causes "bad OUT byte" errors.
    
    The usb-dmac driver will support the callback_result, so this
    driver can use it to get residue correctly. Note that even if
    the usb-dmac driver has not supported the callback_result yet,
    this patch doesn't cause any side-effects.
    
    [1]
    https://lore.kernel.org/dmaengine/20200616165550.GP2324254@vkoul-mobl/
    
    Reported-by: Hien Dang <hien.dang.eb@renesas.com>
    Fixes: 24461d9792c2 ("dmaengine: virt-dma: Fix access after free in vchan_complete()")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/1592482277-19563-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 615ac3bcd5c45a84532abe576e8d31cc9a5ef9a7
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 ca68e645ec5388b81ea39928f49e7f575ccee424
Author: SeongJae Park <sjpark@amazon.de>
Date:   Tue Jun 23 10:41:22 2020 +0200

    scsi: lpfc: Avoid another null dereference in lpfc_sli4_hba_unset()
    
    [ Upstream commit 46da547e21d6cefceec3fb3dba5ebbca056627fc ]
    
    Commit cdb42becdd40 ("scsi: lpfc: Replace io_channels for nvme and fcp with
    general hdw_queues per cpu") has introduced static checker warnings for
    potential null dereferences in 'lpfc_sli4_hba_unset()' and commit 1ffdd2c0440d
    ("scsi: lpfc: resolve static checker warning in lpfc_sli4_hba_unset") has
    tried to fix it.  However, yet another potential null dereference is
    remaining.  This commit fixes it.
    
    This bug was discovered and resolved using Coverity Static Analysis
    Security Testing (SAST) by Synopsys, Inc.
    
    Link: https://lore.kernel.org/r/20200623084122.30633-1-sjpark@amazon.com
    Fixes: 1ffdd2c0440d ("scsi: lpfc: resolve static checker warning inlpfc_sli4_hba_unset")
    Fixes: cdb42becdd40 ("scsi: lpfc: Replace io_channels for nvme and fcp with general hdw_queues per cpu")
    Reviewed-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: SeongJae Park <sjpark@amazon.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 624ae74d5182ab86a553dbedb47c135cbe1501d4
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 431c7bff7f2cf25ac03442a6d2bec1fddfe61739
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Wed Jun 24 01:51:32 2020 +0530

    cxgb4: move PTP lock and unlock to caller in Tx path
    
    [ Upstream commit 030c98824deaba205787af501a074b3d7f46e32e ]
    
    Check for whether PTP is enabled or not at the caller and perform
    locking/unlocking at the caller.
    
    Fixes following sparse warning:
    sge.c:1641:26: warning: context imbalance in 'cxgb4_eth_xmit' -
    different lock contexts for basic block
    
    Fixes: a456950445a0 ("cxgb4: time stamping interface for PTP")
    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 ecd5e867dc6f2a82ed38a328b87b1017aa4fc6eb
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 8e85d3ba917211c3b610f69370124312c5b4e339
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:36 2020 +0300

    net: qed: reset ILT block sizes before recomputing to fix crashes
    
    [ Upstream commit c221dd1831732449f844e03631a34fd21c2b9429 ]
    
    Sizes of all ILT blocks must be reset before ILT recomputing when
    disabling clients, or memory allocation may exceed ILT shadow array
    and provoke system crashes.
    
    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 5b84cb4ba8b165170159b3dff81709414af0f1ee
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:35 2020 +0300

    net: qede: fix use-after-free on recovery and AER handling
    
    [ Upstream commit ec6c80590bde6b5dfa4970fffa3572f1acd313ca ]
    
    Set edev->cdev pointer to NULL after calling remove() callback to avoid
    using of already freed object.
    
    Fixes: ccc67ef50b90 ("qede: Error recovery process")
    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 d24a3a66b88319ff7d00d8587f3dddf0eb75c0fd
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:34 2020 +0300

    net: qede: fix PTP initialization on recovery
    
    [ Upstream commit 1c85f394c2206ea3835f43534d5675f0574e1b70 ]
    
    Currently PTP cyclecounter and timecounter are initialized only on
    the first probing and are cleaned up during removal. This means that
    PTP becomes non-functional after device recovery.
    Fix this by unconditional PTP initialization on probing and clearing
    Tx pending bit on exiting.
    
    Fixes: ccc67ef50b90 ("qede: Error recovery process")
    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 e90e235cb238f8096b442f4dc99cdda46210e6a3
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 c31ae0b557c384afeceb7079664479b8965c81f2
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 0285c18b1c4920d75ff012430d84f0b187669674
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:31 2020 +0300

    net: qede: stop adding events on an already destroyed workqueue
    
    [ Upstream commit 4079c7f7a2a00ab403c177ce723b560de59139c3 ]
    
    Set rdma_wq pointer to NULL after destroying the workqueue and check
    for it when adding new events to fix crashes on driver unload.
    
    Fixes: cee9fbd8e2e9 ("qede: Add qedr framework")
    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 9d9fdd4965c803bc92da97015d8f49e7fa9a9626
Author: Alexander Lobakin <alobakin@marvell.com>
Date:   Tue Jun 23 16:51:30 2020 +0300

    net: qed: fix async event callbacks unregistering
    
    [ Upstream commit 31333c1a2521ff4b4ceb0c29de492549cd4a8de3 ]
    
    qed_spq_unregister_async_cb() should be called before
    qed_rdma_info_free() to avoid crash-spawning uses-after-free.
    Instead of calling it from each subsystem exit code, do it in one place
    on PF down.
    
    Fixes: 291d57f67d24 ("qed: Fix rdma_info structure allocation")
    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 13b0712225f43c5b6224d1da5a8c3776d46ab807
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 b8417eb0acaf790286b2f763f468259efd73aae0
Author: David Rientjes <rientjes@google.com>
Date:   Thu Jun 11 12:20:32 2020 -0700

    dma-direct: add missing set_memory_decrypted() for coherent mapping
    
    [ Upstream commit 1a2b3357e860d890f8045367b179c7e7e802cd71 ]
    
    When a coherent mapping is created in dma_direct_alloc_pages(), it needs
    to be decrypted if the device requires unencrypted DMA before returning.
    
    Fixes: 3acac065508f ("dma-mapping: merge the generic remapping helpers into dma-direct")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3648cc788f3052101feb585885fa8d1fe576b51
Author: Anson Huang <Anson.Huang@nxp.com>
Date:   Wed Jun 10 18:03:02 2020 +0800

    soc: imx8m: Correct i.MX8MP UID fuse offset
    
    [ Upstream commit c95c9693b112f312b59c5d100fd09a1349970fab ]
    
    Correct i.MX8MP UID fuse offset according to fuse map:
    
    UID_LOW: 0x420
    UID_HIGH: 0x430
    
    Fixes: fc40200ebf82 ("soc: imx: increase build coverage for imx8m soc driver")
    Fixes: 18f662a73862 ("soc: imx: Add i.MX8MP SoC driver support")
    Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
    Reviewed-by: Iuliana Prodan <iuliana.prodan@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e00cfddfe9e5d64de3ebc7c7821f5abc44ab909a
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Jun 23 07:13:44 2020 +0800

    iommu/vt-d: Update scalable mode paging structure coherency
    
    [ Upstream commit 04c00956ee3cd138fd38560a91452a804a8c5550 ]
    
    The Scalable-mode Page-walk Coherency (SMPWC) field in the VT-d extended
    capability register indicates the hardware coherency behavior on paging
    structures accessed through the pasid table entry. This is ignored in
    current code and using ECAP.C instead which is only valid in legacy mode.
    Fix this so that paging structure updates could be manually flushed from
    the cache line if hardware page walking is not snooped.
    
    Fixes: 765b6a98c1de3 ("iommu/vt-d: Enumerate the scalable mode capability")
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Cc: Kevin Tian <kevin.tian@intel.com>
    Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Link: https://lore.kernel.org/r/20200622231345.29722-6-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15f5762afc7f6253b6612233444db3dc87696727
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Jun 23 07:13:43 2020 +0800

    iommu/vt-d: Enable PCI ACS for platform opt in hint
    
    [ Upstream commit 50310600ebda74b9988467e2e6128711c7ba56fc ]
    
    PCI ACS is disabled if Intel IOMMU is off by default or intel_iommu=off
    is used in command line. Unfortunately, Intel IOMMU will be forced on if
    there're devices sitting on an external facing PCI port that is marked
    as untrusted (for example, thunderbolt peripherals). That means, PCI ACS
    is disabled while Intel IOMMU is forced on to isolate those devices. As
    the result, the devices of an MFD will be grouped by a single group even
    the ACS is supported on device.
    
    [    0.691263] pci 0000:00:07.1: Adding to iommu group 3
    [    0.691277] pci 0000:00:07.2: Adding to iommu group 3
    [    0.691292] pci 0000:00:07.3: Adding to iommu group 3
    
    Fix it by requesting PCI ACS when Intel IOMMU is detected with platform
    opt in hint.
    
    Fixes: 89a6079df791a ("iommu/vt-d: Force IOMMU on for platform opt in hint")
    Co-developed-by: Lalithambika Krishnakumar <lalithambika.krishnakumar@intel.com>
    Signed-off-by: Lalithambika Krishnakumar <lalithambika.krishnakumar@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Link: https://lore.kernel.org/r/20200622231345.29722-5-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f13fbf931ad822392bac8f7031b16f35ae3a73bf
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Jun 23 07:13:41 2020 +0800

    iommu/vt-d: Set U/S bit in first level page table by default
    
    [ Upstream commit 16ecf10e815d70d11d2300243f4a3b4c7c5acac7 ]
    
    When using first-level translation for IOVA, currently the U/S bit in the
    page table is cleared which implies DMA requests with user privilege are
    blocked. As the result, following error messages might be observed when
    passing through a device to user level:
    
    DMAR: DRHD: handling fault status reg 3
    DMAR: [DMA Read] Request device [41:00.0] PASID 1 fault addr 7ecdcd000
            [fault reason 129] SM: U/S set 0 for first-level translation
            with user privilege
    
    This fixes it by setting U/S bit in the first level page table and makes
    IOVA over first level compatible with previous second-level translation.
    
    Fixes: b802d070a52a1 ("iommu/vt-d: Use iova over first level")
    Reported-by: Xin Zeng <xin.zeng@intel.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20200622231345.29722-3-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90a8d72dffe1c75cc6b458e6eca877023f40b0ff
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Jun 19 11:40:46 2020 +0200

    Revert "KVM: VMX: Micro-optimize vmexit time when not exposing PMU"
    
    [ Upstream commit 49097762fa405cdc16f8f597f6d27c078d4a31e9 ]
    
    Guest crashes are observed on a Cascade Lake system when 'perf top' is
    launched on the host, e.g.
    
     BUG: unable to handle kernel paging request at fffffe0000073038
     PGD 7ffa7067 P4D 7ffa7067 PUD 7ffa6067 PMD 7ffa5067 PTE ffffffffff120
     Oops: 0000 [#1] SMP PTI
     CPU: 1 PID: 1 Comm: systemd Not tainted 4.18.0+ #380
    ...
     Call Trace:
      serial8250_console_write+0xfe/0x1f0
      call_console_drivers.constprop.0+0x9d/0x120
      console_unlock+0x1ea/0x460
    
    Call traces are different but the crash is imminent. The problem was
    blindly bisected to the commit 041bc42ce2d0 ("KVM: VMX: Micro-optimize
    vmexit time when not exposing PMU"). It was also confirmed that the
    issue goes away if PMU is exposed to the guest.
    
    With some instrumentation of the guest we can see what is being switched
    (when we do atomic_switch_perf_msrs()):
    
     vmx_vcpu_run: switching 2 msrs
     vmx_vcpu_run: switching MSR38f guest: 70000000d host: 70000000f
     vmx_vcpu_run: switching MSR3f1 guest: 0 host: 2
    
    The current guess is that PEBS (MSR_IA32_PEBS_ENABLE, 0x3f1) is to blame.
    Regardless of whether PMU is exposed to the guest or not, PEBS needs to
    be disabled upon switch.
    
    This reverts commit 041bc42ce2d0efac3b85bbb81dea8c74b81f4ef9.
    
    Reported-by: Maxime Coquelin <maxime.coquelin@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20200619094046.654019-1-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a0dc2c6faa7ea431ae600f568915d135e74d7a3
Author: Shannon Nelson <snelson@pensando.io>
Date:   Thu Jun 18 10:29:04 2020 -0700

    ionic: tame the watchdog timer on reconfig
    
    [ Upstream commit b59eabd23ee53e8c3492602722e1697f9a2f63ad ]
    
    Even with moving netif_tx_disable() to an earlier point when
    taking down the queues for a reconfiguration, we still end
    up with the occasional netdev watchdog Tx Timeout complaint.
    The old method of using netif_trans_update() works fine for
    queue 0, but has no effect on the remaining queues.  Using
    netif_device_detach() allows us to signal to the watchdog to
    ignore us for the moment.
    
    Fixes: beead698b173 ("ionic: Add the basic NDO callbacks for netdev support")
    Signed-off-by: Shannon Nelson <snelson@pensando.io>
    Acked-by: Jonathan Toppins <jtoppins@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09f2c0dd87e29397242d5ae08cb2bfef172fa379
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Jun 18 12:40:43 2020 -0400

    selftests/net: report etf errors correctly
    
    [ Upstream commit ca8826095e4d4afc0ccaead27bba6e4b623a12ae ]
    
    The ETF qdisc can queue skbs that it could not pace on the errqueue.
    
    Address a few issues in the selftest
    
    - recv buffer size was too small, and incorrectly calculated
    - compared errno to ee_code instead of ee_errno
    - missed invalid request error type
    
    v2:
      - fix a few checkpatch --strict indentation warnings
    
    Fixes: ea6a547669b3 ("selftests/net: make so_txtime more robust to timer variance")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27ae58a74eb0421849b7f665be20bd1077a876fc
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 773cc915439107218dee74599fcaebb6b8762aad
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Wed Jun 17 16:54:52 2020 +0200

    s390/qeth: fix error handling for isolation mode cmds
    
    [ Upstream commit e2dfcfba00ba4a414617ef4c5a8501fe21567eb3 ]
    
    Current(?) OSA devices also store their cmd-specific return codes for
    SET_ACCESS_CONTROL cmds into the top-level cmd->hdr.return_code.
    So once we added stricter checking for the top-level field a while ago,
    none of the error logic that rolls back the user's configuration to its
    old state is applied any longer.
    
    For this specific cmd, go back to the old model where we peek into the
    cmd structure even though the top-level field indicated an error.
    
    Fixes: 686c97ee29c8 ("s390/qeth: fix error handling in adapter command callbacks")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 799b135d649f652fbb927c3c56423c7b9ab505eb
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 523f68f5fa7fc7f11f84d88b622712875b74a48e
Author: Leon Romanovsky <leon@kernel.org>
Date:   Wed Jun 17 09:18:26 2020 +0300

    RDMA/core: Check that type_attrs is not NULL prior access
    
    [ Upstream commit 4121fb0db68ed4de574f9bdc630b75fcc99b4835 ]
    
    In disassociate flow, the type_attrs is set to be NULL, which is in an
    implicit way is checked in alloc_uobj() by "if (!attrs->context)".
    
    Change the logic to rely on that check, to be consistent with other
    alloc_uobj() places that will fix the following kernel splat.
    
     BUG: kernel NULL pointer dereference, address: 0000000000000018
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: 0000 [#1] SMP PTI
     CPU: 3 PID: 2743 Comm: python3 Not tainted 5.7.0-rc6-for-upstream-perf-2020-05-23_19-04-38-5 #1
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
     RIP: 0010:alloc_begin_fd_uobject+0x18/0xf0 [ib_uverbs]
     Code: 89 43 48 eb 97 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 55 49 89 f5 41 54 55 48 89 fd 53 48 83 ec 08 48 8b 1f <48> 8b 43 18 48 8b 80 80 00 00 00 48 3d 20 10 33 a0 74 1c 48 3d 30
     RSP: 0018:ffffc90001127b70 EFLAGS: 00010282
     RAX: ffffffffa0339fe0 RBX: 0000000000000000 RCX: 8000000000000007
     RDX: fffffffffffffffb RSI: ffffc90001127d28 RDI: ffff88843fe1f600
     RBP: ffff88843fe1f600 R08: ffff888461eb06d8 R09: ffff888461eb06f8
     R10: ffff888461eb0700 R11: 0000000000000000 R12: ffff88846a5f6450
     R13: ffffc90001127d28 R14: ffff88845d7d6ea0 R15: ffffc90001127cb8
     FS: 00007f469bff1540(0000) GS:ffff88846f980000(0000) knlGS:0000000000000000
     CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000018 CR3: 0000000450018003 CR4: 0000000000760ee0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     PKRU: 55555554
     Call Trace:
     ? xa_store+0x28/0x40
     rdma_alloc_begin_uobject+0x4f/0x90 [ib_uverbs]
     ib_uverbs_create_comp_channel+0x87/0xf0 [ib_uverbs]
     ib_uverbs_handler_UVERBS_METHOD_INVOKE_WRITE+0xb1/0xf0 [ib_uverbs]
     ib_uverbs_cmd_verbs.isra.8+0x96d/0xae0 [ib_uverbs]
     ? get_page_from_freelist+0x3bb/0xf70
     ? _copy_to_user+0x22/0x30
     ? uverbs_disassociate_api+0xd0/0xd0 [ib_uverbs]
     ? __wake_up_common_lock+0x87/0xc0
     ib_uverbs_ioctl+0xbc/0x130 [ib_uverbs]
     ksys_ioctl+0x83/0xc0
     ? ksys_write+0x55/0xd0
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x48/0x130
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
     RIP: 0033:0x7f469ac43267
    
    Fixes: 849e149063bd ("RDMA/core: Do not allow alloc_commit to fail")
    Link: https://lore.kernel.org/r/20200617061826.2625359-1-leon@kernel.org
    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 6721be4c8fcc70383c9b9afde15f6d60146a8101
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 c6e0bca33fa8a01e038d3de648dd848d2d286002
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 0976ab1db3af2d2f255914ddfd8b3a27aa0709a3
Author: Gal Pressman <galpress@amazon.com>
Date:   Sun Jun 14 13:35:34 2020 +0300

    RDMA/efa: Set maximum pkeys device attribute
    
    [ Upstream commit 0133654d8eb8607eacc96badfe49bf992155f4cb ]
    
    The max_pkeys device attribute was not set in query device verb, set it to
    one in order to account for the default pkey (0xffff). This information is
    exposed to userspace and can cause malfunction
    
    Fixes: 40909f664d27 ("RDMA/efa: Add EFA verbs implementation")
    Link: https://lore.kernel.org/r/20200614103534.88060-1-galpress@amazon.com
    Reviewed-by: Firas JahJah <firasj@amazon.com>
    Reviewed-by: Yossi Leybovich <sleybo@amazon.com>
    Signed-off-by: Gal Pressman <galpress@amazon.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0bdc76dd983a7c67cfb3b14b205d821cff75141
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Sat Jun 13 23:11:48 2020 -0500

    RDMA/rvt: Fix potential memory leak caused by rvt_alloc_rq
    
    [ Upstream commit 90a239ee25fa3a483facec3de7c144361a3d3a51 ]
    
    In case of failure of alloc_ud_wq_attr(), the memory allocated by
    rvt_alloc_rq() is not freed. Fix it by calling rvt_free_rq() using the
    existing clean-up code.
    
    Fixes: d310c4bf8aea ("IB/{rdmavt, hfi1, qib}: Remove AH refcount for UD QPs")
    Link: https://lore.kernel.org/r/20200614041148.131983-1-pakki001@umn.edu
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Acked-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f80e0d0e7740b8f1b8d22c07c03e3e2d1e0f86a3
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 eec945889f7a4fa567972eda191e544899873257
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 fb63225de50476ad5d928cb3a69c303724d29901
Author: Stanislav Fomichev <sdf@google.com>
Date:   Tue Jun 16 18:04:14 2020 -0700

    bpf: Don't return EINVAL from {get,set}sockopt when optlen > PAGE_SIZE
    
    [ Upstream commit d8fe449a9c51a37d844ab607e14e2f5c657d3cf2 ]
    
    Attaching to these hooks can break iptables because its optval is
    usually quite big, or at least bigger than the current PAGE_SIZE limit.
    David also mentioned some SCTP options can be big (around 256k).
    
    For such optvals we expose only the first PAGE_SIZE bytes to
    the BPF program. BPF program has two options:
    1. Set ctx->optlen to 0 to indicate that the BPF's optval
       should be ignored and the kernel should use original userspace
       value.
    2. Set ctx->optlen to something that's smaller than the PAGE_SIZE.
    
    v5:
    * use ctx->optlen == 0 with trimmed buffer (Alexei Starovoitov)
    * update the docs accordingly
    
    v4:
    * use temporary buffer to avoid optval == optval_end == NULL;
      this removes the corner case in the verifier that might assume
      non-zero PTR_TO_PACKET/PTR_TO_PACKET_END.
    
    v3:
    * don't increase the limit, bypass the argument
    
    v2:
    * proper comments formatting (Jakub Kicinski)
    
    Fixes: 0d01da6afc54 ("bpf: implement getsockopt and setsockopt hooks")
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Link: https://lore.kernel.org/bpf/20200617010416.93086-1-sdf@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc2dd9e108f3f7a3bad4d0872d24992f56d8c074
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Tue Jun 16 16:28:29 2020 +0200

    devmap: Use bpf_map_area_alloc() for allocating hash buckets
    
    [ Upstream commit 99c51064fb06146b3d494b745c947e438a10aaa7 ]
    
    Syzkaller discovered that creating a hash of type devmap_hash with a large
    number of entries can hit the memory allocator limit for allocating
    contiguous memory regions. There's really no reason to use kmalloc_array()
    directly in the devmap code, so just switch it to the existing
    bpf_map_area_alloc() function that is used elsewhere.
    
    Fixes: 6f9d451ab1a3 ("xdp: Add devmap_hash map type for looking up devices by hashed index")
    Reported-by: Xiumei Mu <xmu@redhat.com>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20200616142829.114173-1-toke@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce83b120a64738e6479feb75e262dfd3949bf5bc
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 3669b9600dce61a9c08bf5e2ea074bee298a5ceb
Author: Arvind Sankar <nivedita@alum.mit.edu>
Date:   Wed Jun 17 09:19:57 2020 -0400

    efi/x86: Setup stack correctly for efi_pe_entry
    
    [ Upstream commit 41d90b0c1108d1e46c48cf79964636c553844f4c ]
    
    Commit
    
      17054f492dfd ("efi/x86: Implement mixed mode boot without the handover protocol")
    
    introduced a new entry point for the EFI stub to be booted in mixed mode
    on 32-bit firmware.
    
    When entered via efi32_pe_entry, control is first transferred to
    startup_32 to setup for the switch to long mode, and then the EFI stub
    proper is entered via efi_pe_entry. efi_pe_entry is an MS ABI function,
    and the ABI requires 32 bytes of shadow stack space to be allocated by
    the caller, as well as the stack being aligned to 8 mod 16 on entry.
    
    Allocate 40 bytes on the stack before switching to 64-bit mode when
    calling efi_pe_entry to account for this.
    
    For robustness, explicitly align boot_stack_end to 16 bytes. It is
    currently implicitly aligned since .bss is cacheline-size aligned,
    head_64.o is the first object file with a .bss section, and the heap and
    boot sizes are aligned.
    
    Fixes: 17054f492dfd ("efi/x86: Implement mixed mode boot without the handover protocol")
    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Link: https://lore.kernel.org/r/20200617131957.2507632-1-nivedita@alum.mit.edu
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 883043a6c4a1b0575d66c4e4114fc2a75efd805c
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 91c7b0407ca6a62c095d265f76926b67bf66c026
Author: David Rientjes <rientjes@google.com>
Date:   Thu Jun 11 12:20:30 2020 -0700

    dma-direct: check return value when encrypting or decrypting memory
    
    [ Upstream commit 56fccf21d1961a06e2a0c96ce446ebf036651062 ]
    
    __change_page_attr() can fail which will cause set_memory_encrypted() and
    set_memory_decrypted() to return non-zero.
    
    If the device requires unencrypted DMA memory and decryption fails, simply
    free the memory and fail.
    
    If attempting to re-encrypt in the failure path and that encryption fails,
    there is no alternative other than to leak the memory.
    
    Fixes: c10f07aa27da ("dma/direct: Handle force decryption for DMA coherent buffers in common code")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af00c3908ccc9d5036e79ae068f76a10f650210a
Author: David Rientjes <rientjes@google.com>
Date:   Thu Jun 11 12:20:29 2020 -0700

    dma-direct: re-encrypt memory if dma_direct_alloc_pages() fails
    
    [ Upstream commit 96a539fa3bb71f443ae08e57b9f63d6e5bb2207c ]
    
    If arch_dma_set_uncached() fails after memory has been decrypted, it needs
    to be re-encrypted before freeing.
    
    Fixes: fa7e2247c572 ("dma-direct: make uncached_kernel_address more general")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4df94590015cade04320661a35b766155e494ed7
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 6930edd4645772db5bcff6a9c0e9bb0cb9ce86a3
Author: Drew Fustini <drew@beagleboard.org>
Date:   Tue Jun 9 23:45:21 2020 +0200

    ARM: dts: am335x-pocketbeagle: Fix mmc0 Write Protect
    
    [ Upstream commit d7af722344e6dc52d87649100516515263e15c75 ]
    
    AM3358 pin mcasp0_aclkr (ZCZ ball B13) [0] is routed to P1.31 header [1]
    Mode 4 of this pin is mmc0_sdwp (SD Write Protect).  A signal connected
    to P1.31 may accidentally trigger mmc0 write protection.  To avoid this
    situation, do not put mcasp0_aclkr in mode 4 (mmc0_sdwp) by default.
    
    [0] http://www.ti.com/lit/ds/symlink/am3358.pdf
    [1] https://github.com/beagleboard/pocketbeagle/wiki/System-Reference-Manual#531_Expansion_Headers
    
    Fixes: 047905376a16 (ARM: dts: Add am335x-pocketbeagle)
    Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
    Signed-off-by: Drew Fustini <drew@beagleboard.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c446f13ffd24be09843ae4f2f3757c68b87a32e
Author: Gaurav Singh <gaurav1086@gmail.com>
Date:   Fri Jun 12 14:53:27 2020 -0400

    bpf, xdp, samples: Fix null pointer dereference in *_user code
    
    [ Upstream commit 6903cdae9f9f08d61e49c16cbef11c293e33a615 ]
    
    Memset on the pointer right after malloc can cause a NULL pointer
    deference if it failed to allocate memory. A simple fix is to
    replace malloc()/memset() pair with a simple call to calloc().
    
    Fixes: 0fca931a6f21 ("samples/bpf: program demonstrating access to xdp_rxq_info")
    Signed-off-by: Gaurav Singh <gaurav1086@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4af5b6b255b9b887e192a3eaeeb17093d38abc5c
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Tue May 12 18:30:40 2020 +0200

    samples/bpf: xdp_redirect_cpu: Set MAX_CPUS according to NR_CPUS
    
    [ Upstream commit 6a09815428547657f3ffd2f5c31ac2a191e7fdf3 ]
    
    xdp_redirect_cpu is currently failing in bpf_prog_load_xattr()
    allocating cpu_map map if CONFIG_NR_CPUS is less than 64 since
    cpu_map_alloc() requires max_entries to be less than NR_CPUS.
    Set cpu_map max_entries according to NR_CPUS in xdp_redirect_cpu_kern.c
    and get currently running cpus in xdp_redirect_cpu_user.c
    
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/374472755001c260158c4e4b22f193bdd3c56fb7.1589300442.git.lorenzo@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit efa7a91bd0ca1d2ee21c892565841c6d051f62bb
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 61f291db4c4d4112b8fa608e1e4d7adba6d4395a
Author: Matthew Hagan <mnhagan88@gmail.com>
Date:   Tue Jun 9 17:58:29 2020 +0100

    ARM: dts: NSP: Disable PL330 by default, add dma-coherent property
    
    [ Upstream commit b9dbe0101e344e8339406a11b7a91d4a0c50ad13 ]
    
    Currently the PL330 is enabled by default. However if left in IDM reset, as is
    the case with the Meraki and Synology NSP devices, the system will hang when
    probing for the PL330's AMBA peripheral ID. We therefore should be able to
    disable it in these cases.
    
    The PL330 is also included among of the list of peripherals put into coherent
    mode, so "dma-coherent" has been added here as well.
    
    Fixes: 5fa1026a3e4d ("ARM: dts: NSP: Add PL330 support")
    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 752d7e8bcbac08f45b4def50c3a91f12765487ff
Author: Tom Seewald <tseewald@gmail.com>
Date:   Wed Jun 10 12:47:17 2020 -0500

    RDMA/siw: Fix pointer-to-int-cast warning in siw_rx_pbl()
    
    [ Upstream commit 6769b275a313c76ddcd7d94c632032326db5f759 ]
    
    The variable buf_addr is type dma_addr_t, which may not be the same size
    as a pointer.  To ensure it is the correct size, cast to a uintptr_t.
    
    Fixes: c536277e0db1 ("RDMA/siw: Fix 64/32bit pointer inconsistency")
    Link: https://lore.kernel.org/r/20200610174717.15932-1-tseewald@gmail.com
    Signed-off-by: Tom Seewald <tseewald@gmail.com>
    Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8da30b89184a386e447aefb16c1b3083068860bc
Author: Philipp Fent <fent@in.tum.de>
Date:   Mon Jun 15 13:51:09 2020 +0200

    efi/libstub: Fix path separator regression
    
    [ Upstream commit 7a88a6227dc7f2e723bba11ece05e57bd8dce8e4 ]
    
    Commit 9302c1bb8e47 ("efi/libstub: Rewrite file I/O routine") introduced a
    regression that made a couple of (badly configured) systems fail to
    boot [1]: Until 5.6, we silently accepted Unix-style file separators in
    EFI paths, which might violate the EFI standard, but are an easy to make
    mistake. This fix restores the pre-5.7 behaviour.
    
    [1] https://bbs.archlinux.org/viewtopic.php?id=256273
    
    Fixes: 9302c1bb8e47 ("efi/libstub: Rewrite file I/O routine")
    Signed-off-by: Philipp Fent <fent@in.tum.de>
    Link: https://lore.kernel.org/r/20200615115109.7823-1-fent@in.tum.de
    [ardb: rewrite as chained if/else statements]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75b62ce4acfa503b76b946908196b3c85435f196
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 ee37bc04a269987b3b2cc4f47c4faf4745e59c2d
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Fri Jun 12 13:37:11 2020 +0100

    ASoC: qcom: common: set correct directions for dailinks
    
    [ Upstream commit a2120089251f1fe221305e88df99af16f940e236 ]
    
    Currently both FE and BE dai-links are configured bi-directional,
    However the DSP BE dais are only single directional,
    so set the directions as supported by the BE dais.
    
    Fixes: c25e295cd77b (ASoC: qcom: Add support to parse common audio device nodes)
    Reported-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/20200612123711.29130-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1437ec6b30a8be2cdc6536fbd3bb01e35236b749
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Fri Jun 12 13:37:10 2020 +0100

    ASoc: q6afe: add support to get port direction
    
    [ Upstream commit 4a95737440d426e93441d49d11abf4c6526d4666 ]
    
    This patch adds support to q6afe_is_rx_port() to get direction
    of DSP BE dai port, this is useful for setting dailink
    directions correctly.
    
    Fixes: c25e295cd77b (ASoC: qcom: Add support to parse common audio device nodes)
    Reported-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/20200612123711.29130-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 902f6ba905cead3ed9fe5e51c21bd927f40f6102
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Fri Jun 12 15:35:07 2020 -0500

    ASoC: soc-pcm: fix checks for multi-cpu FE dailinks
    
    [ Upstream commit 96bf62f018f40cb5d4e4bed95e50fd990a2354af ]
    
    soc_dpcm_fe_runtime_update() is called for all dailinks, and we want
    to first discard all back-ends, then deal with front-ends.
    
    The existing code first reports an error with multi-cpu front-ends,
    and that check needs to be moved after we know that we are dealing
    with a front-end.
    
    Fixes: 6e1276a5e613d ('ASoC: Return error if the function does not support multi-cpu')
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    BugLink: https://github.com/thesofproject/linux/issues/1970
    Link: https://lore.kernel.org/r/20200612203507.25621-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b621ca56ac0bffe1bc693913b55dbb958ebe8407
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 ea3cdcaa43b08c9a747639f545b0ed5cca47f87e
Author: Fabian Vogt <fvogt@suse.de>
Date:   Mon Jun 15 09:16:36 2020 +0200

    efi/tpm: Verify event log header before parsing
    
    [ Upstream commit 7dfc06a0f25b593a9f51992f540c0f80a57f3629 ]
    
    It is possible that the first event in the event log is not actually a
    log header at all, but rather a normal event. This leads to the cast in
    __calc_tpm2_event_size being an invalid conversion, which means that
    the values read are effectively garbage. Depending on the first event's
    contents, this leads either to apparently normal behaviour, a crash or
    a freeze.
    
    While this behaviour of the firmware is not in accordance with the
    TCG Client EFI Specification, this happens on a Dell Precision 5510
    with the TPM enabled but hidden from the OS ("TPM On" disabled, state
    otherwise untouched). The EFI firmware claims that the TPM is present
    and active and that it supports the TCG 2.0 event log format.
    
    Fortunately, this can be worked around by simply checking the header
    of the first event and the event log header signature itself.
    
    Commit b4f1874c6216 ("tpm: check event log version before reading final
    events") addressed a similar issue also found on Dell models.
    
    Fixes: 6b0326190205 ("efi: Attempt to get the TCG2 event log in the boot stub")
    Signed-off-by: Fabian Vogt <fvogt@suse.de>
    Link: https://lore.kernel.org/r/1927248.evlx2EsYKh@linux-e202.suse.de
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1165773
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2a4372774b3fcae47a76626cc66e3c15ddf7b7d
Author: Babu Moger <babu.moger@amd.com>
Date:   Thu Jun 4 14:45:16 2020 -0500

    x86/resctrl: Fix memory bandwidth counter width for AMD
    
    [ Upstream commit 2c18bd525c47f882f033b0a813ecd09c93e1ecdf ]
    
    Memory bandwidth is calculated reading the monitoring counter
    at two intervals and calculating the delta. It is the software’s
    responsibility to read the count often enough to avoid having
    the count roll over _twice_ between reads.
    
    The current code hardcodes the bandwidth monitoring counter's width
    to 24 bits for AMD. This is due to default base counter width which
    is 24. Currently, AMD does not implement the CPUID 0xF.[ECX=1]:EAX
    to adjust the counter width. But, the AMD hardware supports much
    wider bandwidth counter with the default width of 44 bits.
    
    Kernel reads these monitoring counters every 1 second and adjusts the
    counter value for overflow. With 24 bits and scale value of 64 for AMD,
    it can only measure up to 1GB/s without overflowing. For the rates
    above 1GB/s this will fail to measure the bandwidth.
    
    Fix the issue setting the default width to 44 bits by adjusting the
    offset.
    
    AMD future products will implement CPUID 0xF.[ECX=1]:EAX.
    
     [ bp: Let the line stick out and drop {}-brackets around a single
       statement. ]
    
    Fixes: 4d05bf71f157 ("x86/resctrl: Introduce AMD QOS feature")
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/159129975546.62538.5656031125604254041.stgit@naples-babu.amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e71b24bc2d34ee861558dbe2437d0a4e1a6e92f
Author: Reinette Chatre <reinette.chatre@intel.com>
Date:   Tue May 5 15:36:17 2020 -0700

    x86/resctrl: Support CPUID enumeration of MBM counter width
    
    [ Upstream commit f3d44f18b0662327c42128b9d3604489bdb6e36f ]
    
    The original Memory Bandwidth Monitoring (MBM) architectural
    definition defines counters of up to 62 bits in the
    IA32_QM_CTR MSR while the first-generation MBM implementation
    uses statically defined 24 bit counters.
    
    Expand the MBM CPUID enumeration properties to include the MBM
    counter width. The previously undefined EAX output register contains,
    in bits [7:0], the MBM counter width encoded as an offset from
    24 bits. Enumerating this property is only specified for Intel
    CPUs.
    
    Suggested-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/afa3af2f753f6bc301fb743bc8944e749cb24afa.1588715690.git.reinette.chatre@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da233f83eb8ff9a265e4d7d35da08fe1e74813d7
Author: Reinette Chatre <reinette.chatre@intel.com>
Date:   Tue May 5 15:36:13 2020 -0700

    x86/cpu: Move resctrl CPUID code to resctrl/
    
    [ Upstream commit 0118ad82c2a64ebcf15d7565ed35361407efadfa ]
    
    The function determining a platform's support and properties of cache
    occupancy and memory bandwidth monitoring (properties of
    X86_FEATURE_CQM_LLC) can be found among the common CPU code. After
    the feature's properties is populated in the per-CPU data the resctrl
    subsystem is the only consumer (via boot_cpu_data).
    
    Move the function that obtains the CPU information used by resctrl to
    the resctrl subsystem and rename it from init_cqm() to
    resctrl_cpu_detect(). The function continues to be called from the
    common CPU code. This move is done in preparation of the addition of some
    vendor specific code.
    
    No functional change.
    
    Suggested-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/38433b99f9d16c8f4ee796f8cc42b871531fa203.1588715690.git.reinette.chatre@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9426cab17a2e2f0a4e37e4727c60f3b684f5438f
Author: Matthew Hagan <mnhagan88@gmail.com>
Date:   Tue Jun 9 17:58:31 2020 +0100

    ARM: bcm: Select ARM_TIMER_SP804 for ARCH_BCM_NSP
    
    [ Upstream commit 0386e9ce5877ee73e07675529d5ae594d00f0900 ]
    
    The NSP SoC includes an SP804 timer so should be enabled here.
    
    Fixes: a0efb0d28b77 ("ARM: dts: NSP: Add SP804 Support to DT")
    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 45c1f068101932e06cbf18b87160c2489e643b5c
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Mon Jun 8 18:33:41 2020 +0200

    ARM: dts: BCM5301X: Add missing memory "device_type" for Luxul XWC-2000
    
    [ Upstream commit de1f6d9304c38e414552c3565d36286609ced0c1 ]
    
    This property is needed since commit abe60a3a7afb ("ARM: dts: Kill off
    skeleton{64}.dtsi"). Without it booting silently hangs at:
    [    0.000000] Memory policy: Data cache writealloc
    
    Fixes: 984829e2d39b ("ARM: dts: BCM5301X: Add DT for Luxul XWC-2000")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92fa1e9bce41d4662eb0d39b37e8998fee2ce2cd
Author: Martin Fuzzey <martin.fuzzey@flowbird.group>
Date:   Fri Jun 12 12:50:33 2020 +0200

    regulator: da9063: fix LDO9 suspend and warning.
    
    [ Upstream commit d7442ba13d62de9afc4e57344a676f9f4623dcaa ]
    
    Commit 99f75ce66619 ("regulator: da9063: fix suspend") converted
    the regulators to use a common (corrected) suspend bit setting but
    one of regulators (LDO9) slipped through the crack.
    
    This means that the original problem was not fixed for LDO9 and
    also leads to a warning found by the test robot.
            da9063-regulator.c:515:3: warning: initialized field overwritten
    
    Fix this by converting that regulator too like the others.
    
    Fixes: 99f75ce66619 ("regulator: da9063: fix suspend")
    Reported-by: kernel test robot <lkp@intel.com>
    
    Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
    Link: https://lore.kernel.org/r/1591959073-16792-1-git-send-email-martin.fuzzey@flowbird.group
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 133f0da0e98e1bdcd0de6887b02f647524343a30
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 b49688ef8bc897a48ce318d49ccdfb636ca9feec
Author: Oskar Holmlund <oskar@ohdata.se>
Date:   Fri Jun 5 19:51:09 2020 +0200

    ARM: dts: Fix am33xx.dtsi ti,sysc-mask wrong softreset flag
    
    [ Upstream commit 9f872f924545324a06fa216ad38132804c20f2db ]
    
    AM335x TRM: Figure 16-23 define sysconfig register and soft_reset
    are in first position corresponding to SYSC_OMAP4_SOFTRESET defined
    in ti-sysc.h.
    
    Fixes: 0782e8572ce4 ("ARM: dts: Probe am335x musb with ti-sysc")
    Signed-off-by: Oskar Holmlund <oskar@ohdata.se>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e32940c93b5e0512da8ad0d93ba5c90b002be35
Author: Oskar Holmlund <oskar@ohdata.se>
Date:   Fri Jun 5 19:49:23 2020 +0200

    ARM: dts: Fix am33xx.dtsi USB ranges length
    
    [ Upstream commit 3f311e8993ed18fb7325373ec0f82a7f8e8be82e ]
    
    AM335x TRM: Table 2-1 defines USBSS - USB Queue Manager in memory region
    0x4740 0000 to 0x4740 7FFF.
    
    Looks like the older TRM revisions list the range from 0x5000 to 0x8000
    as reserved.
    
    Fixes: 0782e8572ce4 ("ARM: dts: Probe am335x musb with ti-sysc")
    Signed-off-by: Oskar Holmlund <oskar@ohdata.se>
    [tony@atomide.com: updated comments]
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f1f811496c48900a0880c7cd49fedb04b844160d
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 825a4a61492754b066d1d10b6ce1776e1a7e65f1
Author: Tony Lindgren <tony@atomide.com>
Date:   Wed May 27 16:32:06 2020 -0700

    ARM: OMAP2+: Fix legacy mode dss_reset
    
    [ Upstream commit 77cad9dbc957f23a73169e8a8971186744296614 ]
    
    We must check for "dss_core" instead of "dss" to avoid also matching
    also "dss_dispc". This only matters for the mixed case of data
    configured in device tree but with legacy booting ti,hwmods property
    still enabled.
    
    Fixes: 8b30919a4e3c ("ARM: OMAP2+: Handle reset quirks for dynamically allocated modules")
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d3c6de1e8b4b3949eef4b1cc0a2d8535b17fde67
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun May 31 12:37:54 2020 -0700

    bus: ti-sysc: Fix uninitialized framedonetv_irq
    
    [ Upstream commit 085bc0e576a4bf53b67a917c54908f299a2fb949 ]
    
    We are currently only setting the framedonetv_irq disabled for the SoCs
    that don't have it. But we are never setting it enabled for the SoCs that
    have it. Let's initialized it to true by default.
    
    Fixes: 7324a7a0d5e2 ("bus: ti-sysc: Implement display subsystem reset quirk")
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef2ab15e04a97347047d357a5a143c5561954a7c
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun May 31 12:37:54 2020 -0700

    bus: ti-sysc: Ignore clockactivity unless specified as a quirk
    
    [ Upstream commit 08b91dd6e547467fad61a7c201ff71080d7ad65a ]
    
    We must ignore the clockactivity bit for most modules and not set it
    unless specified for the module with SYSC_QUIRK_USE_CLOCKACT. Otherwise
    the interface clock can be automatically gated constantly causing
    unexpected performance issues.
    
    Fixes: ae9ae12e9daa ("bus: ti-sysc: Handle clockactivity for enable and disable")
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8799d2456d5ca8be9dcece627cbbd1bcd34e4ff
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun May 31 12:37:54 2020 -0700

    bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit
    
    [ Upstream commit d46f9fbec71997420e4fb83c04d9affdf423f879 ]
    
    Some modules reset automatically when idled, and when re-enabled, we must
    wait for the automatic OCP softreset to complete. And if optional clocks
    are configured, we need to keep the clocks on while waiting for the reset
    to complete.
    
    Let's fix the issue by moving the OCP softreset code to a separate
    function sysc_wait_softreset(), and call it also from sysc_enable_module()
    with the optional clocks enabled.
    
    This is based on what we're already doing for legacy platform data booting
    in _enable_sysc().
    
    Fixes: 7324a7a0d5e2 ("bus: ti-sysc: Implement display subsystem reset quirk")
    Reported-by: Faiz Abbas <faiz_abbas@ti.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f3cfd0aab94a67b9a0655d49bca5fda642340c2
Author: Tony Lindgren <tony@atomide.com>
Date:   Wed May 27 06:49:29 2020 -0700

    bus: ti-sysc: Flush posted write on enable and disable
    
    [ Upstream commit 5ce8aee81be6c8bc19051d7c7b0d3cbb7ac5fc3f ]
    
    Looks like we're missing flush of posted write after module enable and
    disable. I've seen occasional errors accessing various modules, and it
    is suspected that the lack of posted writes can also cause random reboots.
    
    The errors we can see are similar to the one below from spi for example:
    
    44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4CFG (Read): Data Access
    in User mode during Functional access
    ...
    mcspi_wait_for_reg_bit
    omap2_mcspi_transfer_one
    spi_transfer_one_message
    ...
    
    We also want to also flush posted write for disable. The clkctrl clock
    disable happens after module disable, and we don't want to have the
    module potentially stay active while we're trying to disable the clock.
    
    Fixes: d59b60564cbf ("bus: ti-sysc: Add generic enable/disable functions")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fcdefed1d04c2660a8876a9435257ac144e2e6ea
Author: Dennis Dalessandro <dennis.dalessandro@intel.com>
Date:   Tue Jun 23 16:32:30 2020 -0400

    IB/hfi1: Fix module use count flaw due to leftover module put calls
    
    commit 822fbd37410639acdae368ea55477ddd3498651d upstream.
    
    When the try_module_get calls were removed from opening and closing of the
    i2c debugfs file, the corresponding module_put calls were missed.  This
    results in an inaccurate module use count that requires a power cycle to
    fix.
    
    Fixes: 09fbca8e6240 ("IB/hfi1: No need to use try_module_get for debugfs")
    Link: https://lore.kernel.org/r/20200623203230.106975.76240.stgit@awfm-01.aw.intel.com
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Kaike Wan <kaike.wan@intel.com>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b24f86ddff066bf914caa61468b8ae5c9be3661e
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 b905136593dac107a2835dd5cc769e76204ee303
Author: Zheng Bin <zhengbin13@huawei.com>
Date:   Thu Jun 18 12:21:37 2020 +0800

    loop: replace kill_bdev with invalidate_bdev
    
    [ Upstream commit f4bd34b139a3fa2808c4205f12714c65e1548c6c ]
    
    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: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e22ed7a287e29642be1e69d6e88ca171f6a2ef03
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 0a8ed90e7afb8780f13be5e57c8b10a2131f4c74
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 536dd97c6952492c74dfaf2a5ad15855bb18bd04
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 65dca17991de4582cc8a9179736f67d14429d945
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 688f6a6f2aef6a0b7aa32b7542f4b3716538fec0
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Tue Jun 23 07:31:54 2020 -0400

    cifs/smb3: Fix data inconsistent when zero file range
    
    commit 6b69040247e14b43419a520f841f2b3052833df9 upstream.
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    cifs/smb3: Fix data inconsistent when punch hole
    
    commit acc91c2d8de4ef46ed751c5f9df99ed9a109b100 upstream.
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcfd40023a4005123635d27ab0ed8db42e9f163b
Author: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Date:   Sat Jun 13 20:27:09 2020 +0800

    cifs: Fix cached_fid refcnt leak in open_shroot
    
    commit 77577de64167aa0643d47ffbaacf3642632b321b upstream.
    
    open_shroot() invokes kref_get(), which increases the refcount of the
    "tcon->crfid" object. When open_shroot() returns not zero, it means the
    open operation failed and close_shroot() will not be called to decrement
    the refcount of the "tcon->crfid".
    
    The reference counting issue happens in one normal path of
    open_shroot(). When the cached root have been opened successfully in a
    concurrent process, the function increases the refcount and jump to
    "oshr_free" to return. However the current return value "rc" may not
    equal to 0, thus the increased refcount will not be balanced outside the
    function, causing a refcnt leak.
    
    Fix this issue by setting the value of "rc" to 0 before jumping to
    "oshr_free" label.
    
    Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80ca606486a74ec8af45d0acc5ca109e5aae3b0e
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 21b4dc3a9060a6ac899e257bc5be03b56b9495df
Author: Roman Bolshakov <r.bolshakov@yadro.com>
Date:   Fri Jun 5 17:44:37 2020 +0300

    scsi: qla2xxx: Keep initiator ports after RSCN
    
    commit 632f24f09d5b7c8a2f94932c3391ca957ae76cc4 upstream.
    
    The driver performs SCR (state change registration) in all modes including
    pure target mode.
    
    For each RSCN, scan_needed flag is set in qla2x00_handle_rscn() for the
    port mentioned in the RSCN and fabric rescan is scheduled. During the
    rescan, GNN_FT handler, qla24xx_async_gnnft_done() deletes session of the
    port that caused the RSCN.
    
    In target mode, the session deletion has an impact on ATIO handler,
    qlt_24xx_atio_pkt(). Target responds with SAM STATUS BUSY to I/O incoming
    from the deleted session. qlt_handle_cmd_for_atio() and
    qlt_handle_task_mgmt() return -EFAULT if they are not able to find session
    of the command/TMF, and that results in invocation of qlt_send_busy():
    
      qlt_24xx_atio_pkt_all_vps: qla_target(0): type 6 ox_id 0014
      qla_target(0): Unable to send command to target, sending BUSY status
    
    Such response causes command timeout on the initiator. Error handler thread
    on the initiator will be spawned to abort the commands:
    
      scsi 23:0:0:0: tag#0 abort scheduled
      scsi 23:0:0:0: tag#0 aborting command
      qla2xxx [0000:af:00.0]-188c:23: Entered qla24xx_abort_command.
      qla2xxx [0000:af:00.0]-801c:23: Abort command issued nexus=23:0:0 -- 0 2003.
    
    Command abort is rejected by target and fails (2003), error handler then
    tries to perform DEVICE RESET and TARGET RESET but they're also doomed to
    fail because TMFs are ignored for the deleted sessions.
    
    Then initiator makes BUS RESET that resets the link via
    qla2x00_full_login_lip(). BUS RESET succeeds and brings initiator port up,
    SAN switch detects that and sends RSCN to the target port and it fails
    again the same way as described above. It never goes out of the loop.
    
    The change breaks the RSCN loop by keeping initiator sessions mentioned in
    RSCN payload in all modes, including dual and pure target mode.
    
    Link: https://lore.kernel.org/r/20200605144435.27023-1-r.bolshakov@yadro.com
    Fixes: 2037ce49d30a ("scsi: qla2xxx: Fix stale session")
    Cc: Quinn Tran <qutran@marvell.com>
    Cc: Arun Easi <aeasi@marvell.com>
    Cc: Nilesh Javali <njavali@marvell.com>
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: Daniel Wagner <dwagner@suse.de>
    Cc: Himanshu Madhani <himanshu.madhani@oracle.com>
    Cc: Martin Wilck <mwilck@suse.com>
    Cc: stable@vger.kernel.org # v5.4+
    Reviewed-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Shyam Sundar <ssundar@marvell.com>
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8928861ffc5f57358dfaeb07d0a4165c6e9ed5c
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Jun 23 11:09:18 2020 +0800

    usb: cdns3: ep0: add spinlock for cdns3_check_new_setup
    
    commit 2587a029fa2a877d0a8dda955ef1b24c94b4bd0e upstream.
    
    The other thread may access other endpoints when the cdns3_check_new_setup
    is handling, add spinlock to protect it.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Pawel Laszczak <pawell@cadence.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f0b4437ec28ae3e90e2df61da893c341c904ff6
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Jun 23 11:09:16 2020 +0800

    usb: cdns3: ep0: fix the test mode set incorrectly
    
    commit b51e1cf64f93acebb6d8afbacd648a6ecefc39b4 upstream.
    
    The 'tmode' is ctrl->wIndex, changing it as the real test
    mode value for register assignment.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Jun Li <jun.li@nxp.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72482b1a6fd64ed275309a93dc9627b568cdfbec
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Jun 23 11:09:17 2020 +0800

    usb: cdns3: trace: using correct dir value
    
    commit ba3a80fe0fb67d8790f62b7bc60df97406d89871 upstream.
    
    It should use the correct direction value from register, not depends
    on previous software setting. It fixed the EP number wrong issue at
    trace when the TRBERR interrupt occurs for EP0IN.
    
    When the EP0IN IOC has finished, software prepares the setup packet
    request, the expected direction is OUT, but at that time, the TRBERR
    for EP0IN may occur since it is DMULT mode, the DMA does not stop
    until TRBERR has met.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Pawel Laszczak <pawell@cadence.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b000b797f1b87a053927f7243a794413f60d6367
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 ebc23b3bf3452772f13ad5ff44ca43bef32be554
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 fccf66fef4849428583f38345a80a727d97e1340
Author: Christoffer Nielsen <cn@obviux.dk>
Date:   Fri Jun 19 13:48:22 2020 +0200

    ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Flight S
    
    commit 73094608b8e214952444fb104651704c98a37aeb upstream.
    
    Similar to the Kingston HyperX AMP, the Kingston HyperX Cloud
    Alpha S (0951:0x16ea) uses two interfaces, but only the second
    interface contains the capture stream. This patch delays the
    registration until the second interface appears.
    
    Signed-off-by: Christoffer Nielsen <cn@obviux.dk>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/CAOtG2YHOM3zy+ed9KS-J4HkZo_QGzcUG9MigSp4e4_-13r6B=Q@mail.gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7336348aced8d17e83fdfca9601ba8b598ccdd11
Author: Christopher Swenson <swenson@swenson.io>
Date:   Sun Jun 14 17:11:47 2020 -0700

    ALSA: usb-audio: Set 48 kHz rate for Rodecaster
    
    commit 8abf41dcd1bcdda0d09905fb59d18f45c035c752 upstream.
    
    Like the Line6 devices, the Rode Rodecaster Pro does not support
    UAC2_CS_RANGE and only supports a sample rate of 48 kHz.
    
    Tested against a Rode Rodecaster Pro.
    
    Tested-by: Christopher Swenson <swenson@swenson.io>
    Signed-off-by: Christopher Swenson <swenson@swenson.io>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/ebdb9e72-9649-0b5e-b9b9-d757dbf26927@swenson.io
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 506f9c0cb1f081c69c46dc9c5d1889269cfa8240
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 193fc710a6b56cb44be74596e4d31eb456a504f9
Author: Laurence Tratt <laurie@tratt.net>
Date:   Fri Jun 12 12:18:07 2020 +0100

    ALSA: usb-audio: Add implicit feedback quirk for SSL2+.
    
    commit e7585db1b0b5b4e4eb1967bb1472df308f7ffcbf upstream.
    
    This uses the same quirk as the Motu M2 and M4 to ensure the driver uses the
    audio interface's clock. Tested on an SSL2+.
    
    Signed-off-by: Laurence Tratt <laurie@tratt.net>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200612111807.dgnig6rwhmsl2bod@overdrive.tratt.net
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f5cbe989afa641f2dca4eef2dbdb6b652cb8ffa
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Fri May 29 16:17:53 2020 +0300

    usb: typec: mux: intel_pmc_mux: Fix DP alternate mode entry
    
    commit 130206a88683d859f63ed6d4a56ab5c2b4930c8e upstream.
    
    The PMC needs to be notified separately about HPD (hotplug
    detected) signal being high after mode entry. There is a bit
    "HPD High" in the Alternate Mode Request that the driver
    already sets, but that bit is only valid when the
    DisplayPort Alternate Mode is directly entered from
    disconnected state.
    
    Fixes: 5c4edcdbcd97 ("usb: typec: mux: intel: Fix DP_HPD_LVL bit field")
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Tested-by: Prashant Malani <pmalani@chromium.org>
    Link: https://lore.kernel.org/r/20200529131753.15587-1-heikki.krogerus@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 745dcedb896a740825160228f98dbb5725a49f85
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 06c2e9d6cd8c3dacdeceebb140b6b14bc7c35265
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 cc32d9df84143ea2e58697e7e31dd70d3e64d32a
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 34ac2decb9b4a44d1aa3f39d2dfbcb209b58f1aa
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 a2d275b85cf417696da898ff4b215c252f3541ac
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 5356d052ab6d1222c6be5fd0857801dcf6734a6f
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 9d8be1ee49b0900fa829e21dc831ccd4fcc70b6d
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 8270988817111909a21e13e509dbb4c10bb72d9e
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 630565464c7b75a72951f583a3c062fe8945308b
Author: Anand Moon <linux.amoon@gmail.com>
Date:   Tue Jun 23 07:46:37 2020 +0000

    Revert "usb: dwc3: exynos: Add support for Exynos5422 suspend clk"
    
    commit ad38beb373a14e082f4e64b68c0b6e6b09764680 upstream.
    
    This reverts commit 07f6842341abe978e6375078f84506ec3280ece5.
    
    Since SCLK_SCLK_USBD300 suspend clock need to be configured
    for phy module, I wrongly mapped this clock to DWC3 code.
    
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Anand Moon <linux.amoon@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Fixes: 07f6842341ab ("usb: dwc3: exynos: Add support for Exynos5422 suspend clk")
    Link: https://lore.kernel.org/r/20200623074637.756-1-linux.amoon@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0a71bc3a08d79187fedafd87f45e9b6ff3d98da
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Fri Jun 19 19:51:21 2020 +0300

    mei: me: add tiger lake point device ids for H platforms.
    
    commit 8c289ea064165237891a7b4be77b74d5cba8fa99 upstream.
    
    Add Tiger Lake device ids H for HECI1.
    TGH_H is also used in Tatlow SPS platform we need to
    disable the mei interface there.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20200619165121.2145330-7-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b93bde621aa3accd322532b4abfa8b395519efa
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Fri Jun 19 19:51:15 2020 +0300

    mei: me: disable mei interface on Mehlow server platforms
    
    commit f76d77f50b343bc7f7d01e4c2771d43fb074f617 upstream.
    
    For SPS firmware versions 5.0 and newer the way detection has changed.
    The detection is done now via PCI_CFG_HFS_3 register.
    To prevent conflict the previous method will get sps_4 suffix
    Disable both CNP_H and CNP_H_3 interfaces. CNP_H_3 requires
    a separate configuration as it doesn't support DMA.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20200619165121.2145330-1-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 959f1780dd5ba2591da060731b8fa7e5926f5bcc
Author: Todd Kjos <tkjos@google.com>
Date:   Mon Jun 22 13:07:15 2020 -0700

    binder: fix null deref of proc->context
    
    commit d35d3660e065b69fdb8bf512f3d899f350afce52 upstream.
    
    The binder driver makes the assumption proc->context pointer is invariant after
    initialization (as documented in the kerneldoc header for struct proc).
    However, in commit f0fe2c0f050d ("binder: prevent UAF for binderfs devices II")
    proc->context is set to NULL during binder_deferred_release().
    
    Another proc was in the middle of setting up a transaction to the dying
    process and crashed on a NULL pointer deref on "context" which is a local
    set to &proc->context:
    
        new_ref->data.desc = (node == context->binder_context_mgr_node) ? 0 : 1;
    
    Here's the stack:
    
    [ 5237.855435] Call trace:
    [ 5237.855441] binder_get_ref_for_node_olocked+0x100/0x2ec
    [ 5237.855446] binder_inc_ref_for_node+0x140/0x280
    [ 5237.855451] binder_translate_binder+0x1d0/0x388
    [ 5237.855456] binder_transaction+0x2228/0x3730
    [ 5237.855461] binder_thread_write+0x640/0x25bc
    [ 5237.855466] binder_ioctl_write_read+0xb0/0x464
    [ 5237.855471] binder_ioctl+0x30c/0x96c
    [ 5237.855477] do_vfs_ioctl+0x3e0/0x700
    [ 5237.855482] __arm64_sys_ioctl+0x78/0xa4
    [ 5237.855488] el0_svc_common+0xb4/0x194
    [ 5237.855493] el0_svc_handler+0x74/0x98
    [ 5237.855497] el0_svc+0x8/0xc
    
    The fix is to move the kfree of the binder_device to binder_free_proc()
    so the binder_device is freed when we know there are no references
    remaining on the binder_proc.
    
    Fixes: f0fe2c0f050d ("binder: prevent UAF for binderfs devices II")
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200622200715.114382-1-tkjos@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1e9c08354572bebcb4db34d453348508f538d7e
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 1 19:12:06 2020 +0100

    btrfs: fix a block group ref counter leak after failure to remove block group
    
    [ Upstream commit 9fecd13202f520f3f25d5b1c313adb740fe19773 ]
    
    When removing a block group, if we fail to delete the block group's item
    from the extent tree, we jump to the 'out' label and end up decrementing
    the block group's reference count once only (by 1), resulting in a counter
    leak because the block group at that point was already removed from the
    block group cache rbtree - so we have to decrement the reference count
    twice, once for the rbtree and once for our lookup at the start of the
    function.
    
    There is a second bug where if removing the free space tree entries (the
    call to remove_block_group_free_space()) fails we end up jumping to the
    'out_put_group' label but end up decrementing the reference count only
    once, when we should have done it twice, since we have already removed
    the block group from the block group cache rbtree. This happens because
    the reference count decrement for the rbtree reference happens after
    attempting to remove the free space tree entries, which is far away from
    the place where we remove the block group from the rbtree.
    
    To make things less error prone, decrement the reference count for the
    rbtree immediately after removing the block group from it. This also
    eleminates the need for two different exit labels on error, renaming
    'out_put_label' to just 'out' and removing the old 'out'.
    
    Fixes: f6033c5e333238 ("btrfs: fix block group leak when removing fails")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    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: Sasha Levin <sashal@kernel.org>

commit 0fe7cc36358946efaae015cce0a5a6647c11f774
Author: Thierry Reding <treding@nvidia.com>
Date:   Thu Apr 30 13:31:58 2020 +0200

    Revert "i2c: tegra: Fix suspending in active runtime PM state"
    
    [ Upstream commit 78ad73421831247e46c31899a7bead02740e4bef ]
    
    This reverts commit 9f42de8d4ec2304f10bbc51dc0484f3503d61196.
    
    It's not safe to use pm_runtime_force_{suspend,resume}(), especially
    during the noirq phase of suspend. See also the guidance provided in
    commit 1e2ef05bb8cf ("PM: Limit race conditions between runtime PM
    and system sleep (v2)").
    
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3847ac5f2309d9e72f6c7c2fa8f3b6e1ffa2d7c3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jun 16 14:09:21 2020 +0200

    ALSA: usb-audio: Fix potential use-after-free of streams
    
    [ Upstream commit ff58bbc7b9704a5869204176f804eff57307fef0 ]
    
    With the recent full-duplex support of implicit feedback streams, an
    endpoint can be still running after closing the capture stream as long
    as the playback stream with the sync-endpoint is running.  In such a
    state, the URBs are still be handled and they may call retire_data_urb
    callback, which tries to transfer the data from the PCM buffer.  Since
    the PCM stream gets closed, this may lead to use-after-free.
    
    This patch adds the proper clearance of the callback at stopping the
    capture stream for addressing the possible UAF above.
    
    Fixes: 10ce77e4817f ("ALSA: usb-audio: Add duplex sound support for USB devices using implicit feedback")
    Link: https://lore.kernel.org/r/20200616120921.12249-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4de97ddf51cc9a2e490eb4a0e6d90f7b0bac9316
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 ba59384d966e3ab17b95e02af317160e4734650f
Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date:   Tue Jun 9 16:55:14 2020 -0700

    nvmet: fail outstanding host posted AEN req
    
    [ Upstream commit 819f7b88b48fd2bce932cfe3a38bf8fcefbcabe7 ]
    
    In function nvmet_async_event_process() we only process AENs iff
    there is an open slot on the ctrl->async_event_cmds[] && aen
    event list posted by the target is not empty. This keeps host
    posted AEN outstanding if target generated AEN list is empty.
    We do cleanup the target generated entries from the aen list in
    nvmet_ctrl_free()-> nvmet_async_events_free() but we don't
    process AEN posted by the host. This leads to following problem :-
    
    When processing admin sq at the time of nvmet_sq_destroy() holds
    an extra percpu reference(atomic value = 1), so in the following code
    path after switching to atomic rcu, release function (nvmet_sq_free())
    is not getting called which blocks the sq->free_done in
    nvmet_sq_destroy() :-
    
    nvmet_sq_destroy()
     percpu_ref_kill_and_confirm()
     - __percpu_ref_switch_mode()
     --  __percpu_ref_switch_to_atomic()
     ---   call_rcu() -> percpu_ref_switch_to_atomic_rcu()
     ----     /* calls switch callback */
     - percpu_ref_put()
     -- percpu_ref_put_many(ref, 1)
     --- else if (unlikely(atomic_long_sub_and_test(nr, &ref->count)))
     ----   ref->release(ref); <---- Not called.
    
    This results in indefinite hang:-
    
      void nvmet_sq_destroy(struct nvmet_sq *sq)
    ...
              if (ctrl && ctrl->sqs && ctrl->sqs[0] == sq) {
                      nvmet_async_events_process(ctrl, status);
                      percpu_ref_put(&sq->ref);
              }
              percpu_ref_kill_and_confirm(&sq->ref, nvmet_confirm_sq);
              wait_for_completion(&sq->confirm_done);
              wait_for_completion(&sq->free_done); <-- Hang here
    
    Which breaks the further disconnect sequence. This problem seems to be
    introduced after commit 64f5e9cdd711b ("nvmet: fix memory leak when
    removing namespaces and controllers concurrently").
    
    This patch processes ctrl->async_event_cmds[] in the admin sq destroy()
    context irrespetive of aen_list. Also we get rid of the controller's
    aen_list processing in the nvmet_sq_destroy() context and just ignore
    ctrl->aen_list.
    
    This results in nvmet_async_events_process() being called from workqueue
    context so we adjust the code accordingly.
    
    Fixes: 64f5e9cdd711 ("nvmet: fix memory leak when removing namespaces and controllers concurrently ")
    Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c91f052a8fb7d533c7f0be32b3f33f247cd898d2
Author: David Milburn <dmilburn@redhat.com>
Date:   Mon May 18 13:59:55 2020 -0500

    nvmet: cleanups the loop in nvmet_async_events_process
    
    [ Upstream commit 1cdf9f7670a7d74e27177d5c390c2f8b3b9ba338 ]
    
    Based-on-a-patch-by: Christoph Hellwig <hch@infradead.org>
    Tested-by: Yi Zhang <yi.zhang@redhat.com>
    Signed-off-by: David Milburn <dmilburn@redhat.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3c568840445bc4fcec7dd194b564b0d1dc4c50c
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Jun 12 00:16:55 2020 -0700

    genetlink: clean up family attributes allocations
    
    [ Upstream commit b65ce380b754e77fbfdcfc83fd6e29c8ceedf431 ]
    
    genl_family_rcv_msg_attrs_parse() and genl_family_rcv_msg_attrs_free()
    take a boolean parameter to determine whether allocate/free the family
    attrs. This is unnecessary as we can just check family->parallel_ops.
    More importantly, callers would not need to worry about pairing these
    parameters correctly after this patch.
    
    And this fixes a memory leak, as after commit c36f05559104
    ("genetlink: fix memory leaks in genl_family_rcv_msg_dumpit()")
    we call genl_family_rcv_msg_attrs_parse() for both parallel and
    non-parallel cases.
    
    Fixes: c36f05559104 ("genetlink: fix memory leaks in genl_family_rcv_msg_dumpit()")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Tested-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ccc3001d46939271e44cdd1b09baf8e03471ae6a
Author: Dejin Zheng <zhengdejin5@gmail.com>
Date:   Sat Jun 20 22:55:34 2020 +0800

    net: phy: smsc: fix printing too many logs
    
    [ Upstream commit 6d61f483f148b856d47a6c96d5d84054d5a9f849 ]
    
    Commit 7ae7ad2f11ef47 ("net: phy: smsc: use phy_read_poll_timeout()
    to simplify the code") will print a lot of logs as follows when Ethernet
    cable is not connected:
    
    [    4.473105] SMSC LAN8710/LAN8720 2188000.ethernet-1:00: lan87xx_read_status failed: -110
    
    When wait 640 ms for check ENERGYON bit, the timeout should not be
    regarded as an actual error and an error message also should not be
    printed. due to a hardware bug in LAN87XX device, it leads to unstable
    detection of plugging in Ethernet cable when LAN87xx is in Energy Detect
    Power-Down mode. the workaround for it involves, when the link is down,
    and at each read_status() call:
    
    - disable EDPD mode, forcing the PHY out of low-power mode
    - waiting 640ms to see if we have any energy detected from the media
    - re-enable entry to EDPD mode
    
    This is presumably enough to allow the PHY to notice that a cable is
    connected, and resume normal operations to negotiate with the partner.
    The problem is that when no media is detected, the 640ms wait times
    out and this commit was modified to prints an error message. it is an
    inappropriate conversion by used phy_read_poll_timeout() to introduce
    this bug. so fix this issue by use read_poll_timeout() to replace
    phy_read_poll_timeout().
    
    Fixes: 7ae7ad2f11ef47 ("net: phy: smsc: use phy_read_poll_timeout() to simplify the code")
    Reported-by: Kevin Groeneveld <kgroeneveld@gmail.com>
    Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 640c3162836d46a1350af8e6d58c82c08e1ba19f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Jun 17 20:42:44 2020 -0700

    net: dsa: bcm_sf2: Fix node reference count
    
    [ Upstream commit 8dbe4c5d5e40fe140221024f7b16bec9f310bf70 ]
    
    of_find_node_by_name() will do an of_node_put() on the "from" argument.
    With CONFIG_OF_DYNAMIC enabled which checks for device_node reference
    counts, we would be getting a warning like this:
    
    [    6.347230] refcount_t: increment on 0; use-after-free.
    [    6.352498] WARNING: CPU: 3 PID: 77 at lib/refcount.c:156
    refcount_inc_checked+0x38/0x44
    [    6.360601] Modules linked in:
    [    6.363661] CPU: 3 PID: 77 Comm: kworker/3:1 Tainted: G        W
    5.4.46-gb78b3e9956e6 #13
    [    6.372546] Hardware name: BCM97278SV (DT)
    [    6.376649] Workqueue: events deferred_probe_work_func
    [    6.381796] pstate: 60000005 (nZCv daif -PAN -UAO)
    [    6.386595] pc : refcount_inc_checked+0x38/0x44
    [    6.391133] lr : refcount_inc_checked+0x38/0x44
    ...
    [    6.478791] Call trace:
    [    6.481243]  refcount_inc_checked+0x38/0x44
    [    6.485433]  kobject_get+0x3c/0x4c
    [    6.488840]  of_node_get+0x24/0x34
    [    6.492247]  of_irq_find_parent+0x3c/0xe0
    [    6.496263]  of_irq_parse_one+0xe4/0x1d0
    [    6.500191]  irq_of_parse_and_map+0x44/0x84
    [    6.504381]  bcm_sf2_sw_probe+0x22c/0x844
    [    6.508397]  platform_drv_probe+0x58/0xa8
    [    6.512413]  really_probe+0x238/0x3fc
    [    6.516081]  driver_probe_device+0x11c/0x12c
    [    6.520358]  __device_attach_driver+0xa8/0x100
    [    6.524808]  bus_for_each_drv+0xb4/0xd0
    [    6.528650]  __device_attach+0xd0/0x164
    [    6.532493]  device_initial_probe+0x24/0x30
    [    6.536682]  bus_probe_device+0x38/0x98
    [    6.540524]  deferred_probe_work_func+0xa8/0xd4
    [    6.545061]  process_one_work+0x178/0x288
    [    6.549078]  process_scheduled_works+0x44/0x48
    [    6.553529]  worker_thread+0x218/0x270
    [    6.557285]  kthread+0xdc/0xe4
    [    6.560344]  ret_from_fork+0x10/0x18
    [    6.563925] ---[ end trace 68f65caf69bb152a ]---
    
    Fix this by adding a of_node_get() to increment the reference count
    prior to the call.
    
    Fixes: afa3b592953b ("net: dsa: bcm_sf2: Ensure correct sub-node is parsed")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdbc4b54815864924560bceed157abebbe44a681
Author: Shannon Nelson <snelson@pensando.io>
Date:   Thu Jun 25 22:58:37 2020 -0700

    ionic: update the queue count on open
    
    [ Upstream commit fa48494cce5f6360b0f8683cdf258fb45c666287 ]
    
    Let the network stack know the real number of queues that
    we are using.
    
    v2: added error checking
    
    Fixes: 49d3b493673a ("ionic: disable the queues on link down")
    Signed-off-by: Shannon Nelson <snelson@pensando.io>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1846c400ea16ec65a525aded4c7afd7ddf35c3e9
Author: Martin <martin.varghese@nokia.com>
Date:   Wed Jun 17 22:30:23 2020 +0530

    bareudp: Fixed multiproto mode configuration
    
    [ Upstream commit 4c98045c9b74feab837be58986c0517d3cc661f1 ]
    
    Code to handle multiproto configuration is missing.
    
    Fixes: 4b5f67232d95 ("net: Special handling for IP & MPLS")
    Signed-off-by: Martin <martin.varghese@nokia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 363cc6efdbb54bb06cd5034a69b41aae974a736f
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Tue Jun 23 03:59:45 2020 -0600

    wireguard: device: avoid circular netns references
    
    [ Upstream commit 900575aa33a3eaaef802b31de187a85c4a4b4bd0 ]
    
    Before, we took a reference to the creating netns if the new netns was
    different. This caused issues with circular references, with two
    wireguard interfaces swapping namespaces. The solution is to rather not
    take any extra references at all, but instead simply invalidate the
    creating netns pointer when that netns is deleted.
    
    In order to prevent this from happening again, this commit improves the
    rough object leak tracking by allowing it to account for created and
    destroyed interfaces, aside from just peers and keys. That then makes it
    possible to check for the object leak when having two interfaces take a
    reference to each others' namespaces.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    of: of_mdio: Correct loop scanning logic
    
    [ Upstream commit 5a8d7f126c97d04d893f5e5be2b286437a0d01b0 ]
    
    Commit 209c65b61d94 ("drivers/of/of_mdio.c:fix of_mdiobus_register()")
    introduced a break of the loop on the premise that a successful
    registration should exit the loop. The premise is correct but not to
    code, because rc && rc != -ENODEV is just a special error condition,
    that means we would exit the loop even with rc == -ENODEV which is
    absolutely not correct since this is the error code to indicate to the
    MDIO bus layer that scanning should continue.
    
    Fix this by explicitly checking for rc = 0 as the only valid condition
    to break out of the loop.
    
    Fixes: 209c65b61d94 ("drivers/of/of_mdio.c:fix of_mdiobus_register()")
    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 cbafda5989308b1e63ebbe6dbcce05edefccfd5a
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Thu Jun 25 09:18:16 2020 +0200

    net: phy: mscc: avoid skcipher API for single block AES encryption
    
    [ Upstream commit 8acd2edbe0e8e36261d98d89ce91b810dd7f4b0d ]
    
    The skcipher API dynamically instantiates the transformation object
    on request that implements the requested algorithm optimally on the
    given platform. This notion of optimality only matters for cases like
    bulk network or disk encryption, where performance can be a bottleneck,
    or in cases where the algorithm itself is not known at compile time.
    
    In the mscc case, we are dealing with AES encryption of a single
    block, and so neither concern applies, and we are better off using
    the AES library interface, which is lightweight and safe for this
    kind of use.
    
    Note that the scatterlist API does not permit references to buffers
    that are located on the stack, so the existing code is incorrect in
    any case, but avoiding the skcipher and scatterlist APIs entirely is
    the most straight-forward approach to fixing this.
    
    Cc: Antoine Tenart <antoine.tenart@bootlin.com>
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Heiner Kallweit <hkallweit1@gmail.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: <stable@vger.kernel.org>
    Fixes: 28c5107aa904e ("net: phy: mscc: macsec support")
    Reviewed-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Tested-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 746ba27001de3fa4304e7c4f535c7fcb8954db73
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Wed Jun 24 13:08:17 2020 +0300

    net: macb: call pm_runtime_put_sync on failure path
    
    [ Upstream commit 0eaf228d574bd82a9aed73e3953bfb81721f4227 ]
    
    Call pm_runtime_put_sync() on failure path of at91ether_open.
    
    Fixes: e6a41c23df0d ("net: macb: ensure interface is not suspended on at91rm9200")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c7148efd04fb945b3223d13d264bbcf7d901335
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Wed Jun 17 20:42:47 2020 +0000

    net: ethtool: add missing NETIF_F_GSO_FRAGLIST feature string
    
    [ Upstream commit eddbf5d0204e550ee59de02bdc19fe90d4203dd6 ]
    
    Commit 3b33583265ed ("net: Add fraglist GRO/GSO feature flags") missed
    an entry for NETIF_F_GSO_FRAGLIST in netdev_features_strings array. As
    a result, fraglist GSO feature is not shown in 'ethtool -k' output and
    can't be toggled on/off.
    The fix is trivial.
    
    Fixes: 3b33583265ed ("net: Add fraglist GRO/GSO feature flags")
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37d54c7e6e283da7c7b4cf36b776131b39e8b6e7
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Jun 15 09:35:22 2020 +0800

    mptcp: fix memory leak in mptcp_subflow_create_socket()
    
    [ Upstream commit b8ad540dd4e40566c520dff491fc06c71ae6b989 ]
    
    socket malloced  by sock_create_kern() should be release before return
    in the error handling, otherwise it cause memory leak.
    
    unreferenced object 0xffff88810910c000 (size 1216):
      comm "00000003_test_m", pid 12238, jiffies 4295050289 (age 54.237s)
      hex dump (first 32 bytes):
        01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 2f 30 0a 81 88 ff ff  ........./0.....
      backtrace:
        [<00000000e877f89f>] sock_alloc_inode+0x18/0x1c0
        [<0000000093d1dd51>] alloc_inode+0x63/0x1d0
        [<000000005673fec6>] new_inode_pseudo+0x14/0xe0
        [<00000000b5db6be8>] sock_alloc+0x3c/0x260
        [<00000000e7e3cbb2>] __sock_create+0x89/0x620
        [<0000000023e48593>] mptcp_subflow_create_socket+0xc0/0x5e0
        [<00000000419795e4>] __mptcp_socket_create+0x1ad/0x3f0
        [<00000000b2f942e8>] mptcp_stream_connect+0x281/0x4f0
        [<00000000c80cd5cc>] __sys_connect_file+0x14d/0x190
        [<00000000dc761f11>] __sys_connect+0x128/0x160
        [<000000008b14e764>] __x64_sys_connect+0x6f/0xb0
        [<000000007b4f93bd>] do_syscall_64+0xa1/0x530
        [<00000000d3e770b6>] entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    Fixes: 2303f994b3e1 ("mptcp: Associate MPTCP context with TCP socket")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb827e452f20de1f8fe78580e9d2dcf183d98fc8
Author: Geliang Tang <geliangtang@gmail.com>
Date:   Mon Jun 22 19:45:58 2020 +0800

    mptcp: drop sndr_key in mptcp_syn_options
    
    [ Upstream commit b562f58bbc12444219b74a5d6524977a3d87a022 ]
    
    In RFC 8684, we don't need to send sndr_key in SYN package anymore, so drop
    it.
    
    Fixes: cc7972ea1932 ("mptcp: parse and emit MP_CAPABLE option according to v1 spec")
    Signed-off-by: Geliang Tang <geliangtang@gmail.com>
    Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b3440eb560d96cf465145b94d90ff54b7997192
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Jun 18 23:25:50 2020 +0200

    r8169: fix firmware not resetting tp->ocp_base
    
    [ Upstream commit 89fbd26cca7ec9e82ec4787a4b6e95939b57d073 ]
    
    Typically the firmware takes care that tp->ocp_base is reset to its
    default value. That's not the case (at least) for RTL8117.
    As a result subsequent PHY access reads/writes the wrong page and
    the link is broken. Fix this be resetting tp->ocp_base explicitly.
    
    Fixes: 229c1e0dfd3d ("r8169: load firmware for RTL8168fp/RTL8117")
    Reported-by: Aaron Ma <mapengyu@gmail.com>
    Tested-by: Aaron Ma <mapengyu@gmail.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce9321ac4dbee43ffb587909ad2347d027882e38
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Thu Jun 18 11:37:40 2020 +0300

    net: macb: undo operations in case of failure
    
    [ Upstream commit faa620876b01d6744f1599e279042bb8149247ab ]
    
    Undo previously done operation in case macb_phylink_connect()
    fails. Since macb_reset_hw() is the 1st undo operation the
    napi_exit label was renamed to reset_hw.
    
    Fixes: 7897b071ac3b ("net: macb: convert to phylink")
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75cbd58101db3f850caf5637357067b174117a37
Author: Neal Cardwell <ncardwell@google.com>
Date:   Wed Jun 24 12:42:03 2020 -0400

    bpf: tcp: bpf_cubic: fix spurious HYSTART_DELAY exit upon drop in min RTT
    
    [ Upstream commit 7d21d54d624777358ab6c7be7ff778808fef70ba ]
    
    Apply the fix from:
     "tcp_cubic: fix spurious HYSTART_DELAY exit upon drop in min RTT"
    to the BPF implementation of TCP CUBIC congestion control.
    
    Repeating the commit description here for completeness:
    
    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: 6de4a9c430b5 ("bpf: tcp: Add bpf_cubic example")
    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 f9a5edab00b2280585e300c20ea4c28e83cbc921
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 b8023c7225b50be61bc44c83e5fff82a3f2aa432
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 673b7fff8e1bca71502c76a8f860e5a2f366bf24
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 5ac1c42ef25ed18382b7e9f9f00fe6a3e24ff0fd
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 5031deadae8c03f9032bf07a92fac3fe81db4c15
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Jun 23 17:47:29 2020 +0100

    net: phylink: ensure manual pause mode configuration takes effect
    
    [ Upstream commit 2e919bc446faee429ac862a6cdb5e40017051f6b ]
    
    We have been relying on link events and mac_config() when the manual
    pause modes are changed.  With recent developments, such as moving
    the programming of link state to mac_link_up(), this no longer works.
    
    To ensure that we update the MAC, we must generate a link-down followed
    by a link-up event; we can do that by setting mac_link_dropped and
    triggering a resolve.
    
    Fixes: 91a208f2185a ("net: phylink: propagate resolved link config via mac_link_up()")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18c1152b802ce34bf200af82734ad155c4d3c76f
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Jun 23 17:47:23 2020 +0100

    net: phylink: fix ethtool -A with attached PHYs
    
    [ Upstream commit c718af2d00a37587b09e5958d142da7569f3d55b ]
    
    Fix a phylink's ethtool set_pauseparam support deadlock caused by phylib
    interacting with phylink: we must not hold the state lock while calling
    phylib functions that may call into phylink_phy_change().
    
    Fixes: f904f15ea9b5 ("net: phylink: allow ethtool -A to change flow control advertisement")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65a90202b948efd54ad4914d0b0f6d16f37b76ea
Author: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Date:   Tue Jun 23 19:01:38 2020 -0400

    bnxt_en: Read VPD info only for PFs
    
    [ Upstream commit c55e28a8b43fcd7dc71868bd165705bc7741a7ca ]
    
    Virtual functions does not have VPD information. This patch modifies
    calling bnxt_read_vpd_info() only for PFs and avoids an unnecessary
    error log.
    
    Fixes: a0d0fd70fed5 ("bnxt_en: Read partno and serialno of the board from VPD")
    Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-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 eff5b3ee5dc982ca38f1dc6388abe1f7f4b1ac63
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Tue Jun 23 19:01:37 2020 -0400

    bnxt_en: Fix statistics counters issue during ifdown with older firmware.
    
    [ Upstream commit c2dec363feb41544a76c8083aca2378990e17166 ]
    
    On older firmware, the hardware statistics are not cleared when the
    driver frees the hardware stats contexts during ifdown.  The driver
    expects these stats to be cleared and saves a copy before freeing
    the stats contexts.  During the next ifup, the driver will likely
    allocate the same hardware stats contexts and this will cause a big
    increase in the counters as the old counters are added back to the
    saved counters.
    
    We fix it by making an additional firmware call to clear the counters
    before freeing the hw stats contexts when the firmware is the older
    20.x firmware.
    
    Fixes: b8875ca356f1 ("bnxt_en: Save ring statistics before reset.")
    Reported-by: Jakub Kicinski <kicinski@fb.com>
    Reviewed-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Tested-by: Jakub Kicinski <kicinski@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b657a6ca5b257ebada8821b31cd05f7e124620d0
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Tue Jun 23 19:01:36 2020 -0400

    bnxt_en: Do not enable legacy TX push on older firmware.
    
    [ Upstream commit fed7edd18143c68c63ea049999a7e861123de6de ]
    
    Older firmware may not support legacy TX push properly and may not
    be disabling it.  So we check certain firmware versions that may
    have this problem and disable legacy TX push unconditionally.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-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 1430c901ad9ed8ac959b08da0f8454a5091d003e
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Tue Jun 23 19:01:35 2020 -0400

    bnxt_en: Store the running firmware version code.
    
    [ Upstream commit d0ad2ea2bc185835f8a749302ad07b70528d2a09 ]
    
    We currently only store the firmware version as a string for ethtool
    and devlink info.  Store it also as a version code.  The next 2
    patches will need to check the firmware major version to determine
    some workarounds.
    
    We also use the 16-bit firmware version fields if the firmware is newer
    and provides the 16-bit fields.
    
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-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 58b1dabf1ae9e27f0fd9f9528b0a366c96e33b38
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 13d9f074662d7cebf9e9c67efd5215ddd4083494
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 1ea4909aad55bc8547a378f8880b1985f1d362a4
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 dbda438186daa07c36bed4ee4ce57a753eb0e7f8
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 bf780119617797b5690e999e59a64ad79a572374
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 4df64b5a5ea7674012bc0ac6c8921398a23bc7f0
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 676b7599bc6a4c9bbc52923c5d23bb7bdf51776b
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 3754f0bc572638413ed5c2c46520823004a22277
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 127a2db8c653e7326f1285e7d0878273b375d66e
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 53eabab487c8232c2041c42377848781137d3bc0
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Tue Jun 23 18:33:15 2020 +0200

    openvswitch: take into account de-fragmentation/gso_size in execute_check_pkt_len
    
    [ Upstream commit 17843655708e1941c0653af3cd61be6948e36f43 ]
    
    ovs connection tracking module performs de-fragmentation on incoming
    fragmented traffic. Take info account if traffic has been de-fragmented
    in execute_check_pkt_len action otherwise we will perform the wrong
    nested action considering the original packet size. This issue typically
    occurs if ovs-vswitchd adds a rule in the pipeline that requires connection
    tracking (e.g. OVN stateful ACLs) before execute_check_pkt_len action.
    Moreover take into account GSO fragment size for GSO packet in
    execute_check_pkt_len routine
    
    Fixes: 4d5ec89fc8d14 ("net: openvswitch: Add a new action check_pkt_len")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7715da4def491f7f928b2b3ccc1c2b23913255ab
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 e6bfedce66c83f477080d560967c1a780b3b0565
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 cb7a26b82d728921fcf079c0d7a8f2e868e731d3
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 eba034f577b49b6552e8037f4091cb6f6b9092cc
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 dfd225caeaed1c06e8e16ef89cab6b09e815ddd0
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Tue Jun 23 10:43:48 2020 +0000

    net: ethtool: add missing string for NETIF_F_GSO_TUNNEL_REMCSUM
    
    [ Upstream commit b4730ae6a443afe611afb4fb651c885c51003c15 ]
    
    Commit e585f2363637 ("udp: Changes to udp_offload to support remote
    checksum offload") added new GSO type and a corresponding netdev
    feature, but missed Ethtool's 'netdev_features_strings' table.
    Give it a name so it will be exposed to userspace and become available
    for manual configuration.
    
    v3:
     - decouple from "netdev_features_strings[] cleanup" series;
     - no functional changes.
    
    v2:
     - don't split the "Fixes:" tag across lines;
     - no functional changes.
    
    Fixes: e585f2363637 ("udp: Changes to udp_offload to support remote checksum offload")
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68357ebb88cf1bcdd00f154cf01e1ca1820b653d
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 6d0527f5121a773af743664c62e7772318af02c1
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 7e93645ba919b6203b82bd9f9977401862298aab
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 18ba7f3d24779a3a52cd95b4bf16cf873c7deb09
Author: Sven Auhagen <sven.auhagen@voleatech.de>
Date:   Sun Jun 14 09:19:17 2020 +0200

    mvpp2: ethtool rxtx stats fix
    
    [ Upstream commit cc970925feb9a38c2f0d34305518e00a3084ce85 ]
    
    The ethtool rx and tx queue statistics are reporting wrong values.
    Fix reading out the correct ones.
    
    Signed-off-by: Sven Auhagen <sven.auhagen@voleatech.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b41392699ce9c97773326733174a473bf5b8549b
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Sun Jun 21 11:29:17 2020 +0300

    mlxsw: spectrum: Do not rely on machine endianness
    
    [ Upstream commit f3fe412b0a634286a6a3753c3f9ff201e6bec716 ]
    
    The second commit cited below performed a cast of 'u32 buffsize' to
    '(u16 *)' when calling mlxsw_sp_port_headroom_8x_adjust():
    
    mlxsw_sp_port_headroom_8x_adjust(mlxsw_sp_port, (u16 *) &buffsize);
    
    Colin noted that this will behave differently on big endian
    architectures compared to little endian architectures.
    
    Fix this by following Colin's suggestion and have the function accept
    and return 'u32' instead of passing the current size by reference.
    
    Fixes: da382875c616 ("mlxsw: spectrum: Extend to support Spectrum-3 ASIC")
    Fixes: 60833d54d56c ("mlxsw: spectrum: Adjust headroom buffers for 8x ports")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Suggested-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6895c74826632cf3e4f6002aa41889265f93949
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 53511aab8b88adb4d0fc3bb4d905c98e7fe5601f
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 ab1d13dd1284ef606cfd9cf94f29544f2d4e4a03
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Thu Jun 18 12:13:22 2020 +0200

    geneve: allow changing DF behavior after creation
    
    [ Upstream commit 56c09de347e40804fc8dad155272fb9609e0a97b ]
    
    Currently, trying to change the DF parameter of a geneve device does
    nothing:
    
        # ip -d link show geneve1
        14: geneve1: <snip>
            link/ether <snip>
            geneve id 1 remote 10.0.0.1 ttl auto df set dstport 6081 <snip>
        # ip link set geneve1 type geneve id 1 df unset
        # ip -d link show geneve1
        14: geneve1: <snip>
            link/ether <snip>
            geneve id 1 remote 10.0.0.1 ttl auto df set dstport 6081 <snip>
    
    We just need to update the value in geneve_changelink.
    
    Fixes: a025fb5f49ad ("geneve: Allow configuration of DF behaviour")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 705be9c94989a525c805aaf4a4a0e811fa5dfe4b
Author: Gaurav Singh <gaurav1086@gmail.com>
Date:   Sun Jun 21 11:30:17 2020 -0400

    ethtool: Fix check in ethtool_rx_flow_rule_create
    
    [ Upstream commit 21a739c64d3e9871186483a0cc3e7b52638c3d59 ]
    
    Fix check in ethtool_rx_flow_rule_create
    
    Fixes: eca4205f9ec3 ("ethtool: add ethtool_rx_flow_spec to flow_rule structure translator")
    Signed-off-by: Gaurav Singh <gaurav1086@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34931d963eb8c58936c797d87df364666abb2d79
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Fri Jun 26 19:17:29 2020 +0300

    enetc: Fix tx rings bitmap iteration range, irq handling
    
    [ Upstream commit 0574e2000fc3103cbc69ba82ec1175ce171fdf5e ]
    
    The rings bitmap of an interrupt vector encodes
    which of the device's rings were assigned to that
    interrupt vector.
    Hence the iteration range of the tx rings bitmap
    (for_each_set_bit()) should be the total number of
    Tx rings of that netdevice instead of the number of
    rings assigned to the interrupt vector.
    Since there are 2 cores, and one interrupt vector for
    each core, the number of rings asigned to an interrupt
    vector is half the number of available rings.
    The impact of this error is that the upper half of the
    tx rings could still generate interrupts during napi
    polling.
    
    Fixes: d4fd0404c1c9 ("enetc: Introduce basic PF and VF ENETC ethernet drivers")
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75afdbf6aa42bf65d53372f97e49b887f2e6d9a1
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 def317161617e817d27662f1726c2fec1c60c5f3
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Wed Jun 10 17:41:57 2020 +0200

    spi: spi-fsl-dspi: Free DMA memory with matching function
    
    commit 03fe7aaf0c3d40ef7feff2bdc7180c146989586a upstream.
    
    Driver allocates DMA memory with dma_alloc_coherent() but frees it with
    dma_unmap_single().
    
    This causes DMA warning during system shutdown (with DMA debugging) on
    Toradex Colibri VF50 module:
    
        WARNING: CPU: 0 PID: 1 at ../kernel/dma/debug.c:1036 check_unmap+0x3fc/0xb04
        DMA-API: fsl-edma 40098000.dma-controller: device driver frees DMA memory with wrong function
          [device address=0x0000000087040000] [size=8 bytes] [mapped as coherent] [unmapped as single]
        Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
          (unwind_backtrace) from [<8010bb34>] (show_stack+0x10/0x14)
          (show_stack) from [<8011ced8>] (__warn+0xf0/0x108)
          (__warn) from [<8011cf64>] (warn_slowpath_fmt+0x74/0xb8)
          (warn_slowpath_fmt) from [<8017d170>] (check_unmap+0x3fc/0xb04)
          (check_unmap) from [<8017d900>] (debug_dma_unmap_page+0x88/0x90)
          (debug_dma_unmap_page) from [<80601d68>] (dspi_release_dma+0x88/0x110)
          (dspi_release_dma) from [<80601e4c>] (dspi_shutdown+0x5c/0x80)
          (dspi_shutdown) from [<805845f8>] (device_shutdown+0x17c/0x220)
          (device_shutdown) from [<80143ef8>] (kernel_restart+0xc/0x50)
          (kernel_restart) from [<801441cc>] (__do_sys_reboot+0x18c/0x210)
          (__do_sys_reboot) from [<80100060>] (ret_fast_syscall+0x0/0x28)
        DMA-API: Mapped at:
         dma_alloc_attrs+0xa4/0x130
         dspi_probe+0x568/0x7b4
         platform_drv_probe+0x6c/0xa4
         really_probe+0x208/0x348
         driver_probe_device+0x5c/0xb4
    
    Fixes: 90ba37033cb9 ("spi: spi-fsl-dspi: Add DMA support for Vybrid")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1591803717-11218-1-git-send-email-krzk@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>