This is the start of the stable review cycle for the 4.19.115 release.
There are 54 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Mon, 13 Apr 2020 11:51:28 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.115-r…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.19.115-rc1
Hans Verkuil <hans.verkuil(a)cisco.com>
drm_dp_mst_topology: fix broken drm_dp_sideband_parse_remote_dpcd_read()
Roger Quadros <rogerq(a)ti.com>
usb: dwc3: don't set gadget->is_otg flag
Chris Lew <clew(a)codeaurora.org>
rpmsg: glink: Remove chunk size word align warning
Arun KS <arunks(a)codeaurora.org>
arm64: Fix size of __early_cpu_boot_status
Rob Clark <robdclark(a)chromium.org>
drm/msm: stop abusing dma_map/unmap for cache
Taniya Das <tdas(a)codeaurora.org>
clk: qcom: rcg: Return failure for RCG update
Qiujun Huang <hqjagain(a)gmail.com>
fbcon: fix null-ptr-deref in fbcon_switch
Avihai Horon <avihaih(a)mellanox.com>
RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow
Qiujun Huang <hqjagain(a)gmail.com>
Bluetooth: RFCOMM: fix ODEBUG bug in rfcomm_dev_ioctl
Jason Gunthorpe <jgg(a)ziepe.ca>
RDMA/cma: Teach lockdep about the order of rtnl and lock
Jason Gunthorpe <jgg(a)ziepe.ca>
RDMA/ucma: Put a lock around every call to the rdma_cm layer
Ilya Dryomov <idryomov(a)gmail.com>
ceph: canonicalize server path in place
Xiubo Li <xiubli(a)redhat.com>
ceph: remove the extra slashes in the server path
Kaike Wan <kaike.wan(a)intel.com>
IB/hfi1: Fix memory leaks in sysfs registration and unregistration
Kaike Wan <kaike.wan(a)intel.com>
IB/hfi1: Call kobject_put() when kobject_init_and_add() fails
Paul Cercueil <paul(a)crapouillou.net>
ASoC: jz4740-i2s: Fix divider written at incorrect offset in register
Martin Kaiser <martin(a)kaiser.cx>
hwrng: imx-rngc - fix an error path
David Ahern <dsahern(a)kernel.org>
tools/accounting/getdelays.c: fix netlink attribute length
Thinh Nguyen <Thinh.Nguyen(a)synopsys.com>
usb: dwc3: gadget: Wrap around when skip TRBs
Jason A. Donenfeld <Jason(a)zx2c4.com>
random: always use batched entropy for get_random_u{32,64}
Petr Machata <petrm(a)mellanox.com>
mlxsw: spectrum_flower: Do not stop at FLOW_ACTION_VLAN_MANGLE
Richard Palethorpe <rpalethorpe(a)suse.com>
slcan: Don't transmit uninitialized stack data in padding
Jisheng Zhang <Jisheng.Zhang(a)synaptics.com>
net: stmmac: dwmac1000: fix out-of-bounds mac address reg setting
Oleksij Rempel <o.rempel(a)pengutronix.de>
net: phy: micrel: kszphy_resume(): add delay after genphy_resume() before accessing PHY registers
Florian Fainelli <f.fainelli(a)gmail.com>
net: dsa: bcm_sf2: Ensure correct sub-node is parsed
Florian Fainelli <f.fainelli(a)gmail.com>
net: dsa: bcm_sf2: Do not register slave MDIO bus with OF
Jarod Wilson <jarod(a)redhat.com>
ipv6: don't auto-add link-local address to lag ports
Randy Dunlap <rdunlap(a)infradead.org>
mm: mempolicy: require at least one nodeid for MPOL_PREFERRED
Sam Protsenko <semen.protsenko(a)linaro.org>
include/linux/notifier.h: SRCU: fix ctags
Miklos Szeredi <mszeredi(a)redhat.com>
bitops: protect variables in set_mask_bits() macro
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: always acquire cpu_hotplug_lock before pinst->lock
Amritha Nambiar <amritha.nambiar(a)intel.com>
net: Fix Tx hash bound checking
David Howells <dhowells(a)redhat.com>
rxrpc: Fix sendmsg(MSG_WAITALL) handling
Geoffrey Allott <geoffrey(a)allott.email>
ALSA: hda/ca0132 - Add Recon3Di quirk to handle integrated sound on EVGA X99 Classified motherboard
Hans de Goede <hdegoede(a)redhat.com>
power: supply: axp288_charger: Add special handling for HP Pavilion x2 10
Hans de Goede <hdegoede(a)redhat.com>
extcon: axp288: Add wakeup support
Alexander Usyskin <alexander.usyskin(a)intel.com>
mei: me: add cedar fork device ids
Eugene Syromiatnikov <esyr(a)redhat.com>
coresight: do not use the BIT() macro in the UAPI header
Kishon Vijay Abraham I <kishon(a)ti.com>
misc: pci_endpoint_test: Avoid using module parameter to determine irqtype
Kishon Vijay Abraham I <kishon(a)ti.com>
misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
YueHaibing <yuehaibing(a)huawei.com>
misc: rtsx: set correct pcr_ops for rts522A
Sean Young <sean(a)mess.org>
media: rc: IR signal for Panasonic air conditioner too long
Lucas Stach <l.stach(a)pengutronix.de>
drm/etnaviv: replace MMU flush marker with flush sequence
Len Brown <len.brown(a)intel.com>
tools/power turbostat: Fix missing SYS_LPI counter on some Chromebooks
Len Brown <len.brown(a)intel.com>
tools/power turbostat: Fix gcc build warnings
James Zhu <James.Zhu(a)amd.com>
drm/amdgpu: fix typo for vcn1 idle check
Eugeniy Paltsev <Eugeniy.Paltsev(a)synopsys.com>
initramfs: restore default compression behavior
Gerd Hoffmann <kraxel(a)redhat.com>
drm/bochs: downgrade pci_request_region failure from error to warning
Mario Kleiner <mario.kleiner.de(a)gmail.com>
drm/amd/display: Add link_rate quirk for Apple 15" MBP 2017
Prabhath Sajeepa <psajeepa(a)purestorage.com>
nvme-rdma: Avoid double freeing of async event data
Marcelo Ricardo Leitner <marcelo.leitner(a)gmail.com>
sctp: fix possibly using a bad saddr with a given dst
Qiujun Huang <hqjagain(a)gmail.com>
sctp: fix refcount bug in sctp_wfree
William Dauchy <w.dauchy(a)criteo.com>
net, ip_tunnel: fix interface lookup with no key
Qian Cai <cai(a)lca.pw>
ipv4: fix a RCU-list lock in fib_triestat_seq_show
-------------
Diffstat:
Makefile | 4 +-
arch/arm64/kernel/head.S | 2 +-
drivers/char/hw_random/imx-rngc.c | 4 +-
drivers/char/random.c | 20 ++------
drivers/clk/qcom/clk-rcg2.c | 2 +-
drivers/extcon/extcon-axp288.c | 32 ++++++++++++
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 2 +-
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 11 +++++
drivers/gpu/drm/bochs/bochs_hw.c | 6 +--
drivers/gpu/drm/drm_dp_mst_topology.c | 1 +
drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 10 ++--
drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 1 +
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +--
drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 2 +-
drivers/gpu/drm/msm/msm_gem.c | 4 +-
drivers/infiniband/core/cma.c | 14 ++++++
drivers/infiniband/core/ucma.c | 49 ++++++++++++++++++-
drivers/infiniband/hw/hfi1/sysfs.c | 26 +++++++---
drivers/media/rc/lirc_dev.c | 2 +-
drivers/misc/cardreader/rts5227.c | 1 +
drivers/misc/mei/hw-me-regs.h | 2 +
drivers/misc/mei/pci-me.c | 2 +
drivers/misc/pci_endpoint_test.c | 14 ++++--
drivers/net/can/slcan.c | 4 +-
drivers/net/dsa/bcm_sf2.c | 9 +++-
.../net/ethernet/mellanox/mlxsw/spectrum_flower.c | 8 +--
.../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 2 +-
drivers/net/phy/micrel.c | 7 +++
drivers/nvme/host/rdma.c | 8 +--
drivers/power/supply/axp288_charger.c | 57 +++++++++++++++++++++-
drivers/rpmsg/qcom_glink_native.c | 3 --
drivers/usb/dwc3/gadget.c | 3 +-
drivers/video/fbdev/core/fbcon.c | 3 ++
fs/ceph/super.c | 56 +++++++++++++--------
fs/ceph/super.h | 2 +-
include/linux/bitops.h | 14 +++---
include/linux/notifier.h | 3 +-
include/uapi/linux/coresight-stm.h | 6 ++-
kernel/padata.c | 4 +-
mm/mempolicy.c | 6 ++-
net/bluetooth/rfcomm/tty.c | 4 +-
net/core/dev.c | 2 +
net/ipv4/fib_trie.c | 3 ++
net/ipv4/ip_tunnel.c | 6 +--
net/ipv6/addrconf.c | 4 ++
net/rxrpc/sendmsg.c | 4 +-
net/sctp/ipv6.c | 20 +++++---
net/sctp/protocol.c | 28 +++++++----
net/sctp/socket.c | 31 +++++++++---
sound/pci/hda/patch_ca0132.c | 1 +
sound/soc/jz4740/jz4740-i2s.c | 2 +-
tools/accounting/getdelays.c | 2 +-
tools/power/x86/turbostat/turbostat.c | 27 +++++-----
usr/Kconfig | 22 ++++-----
54 files changed, 409 insertions(+), 159 deletions(-)
clang and gas seem to interpret the symbols in memmove.S and
memset.S differently, such that clang does not make them
'weak' as expected, which leads to a linker error, with both
ld.bfd and ld.lld:
ld.lld: error: duplicate symbol: memmove
>>> defined at common.c
>>> kasan/common.o:(memmove) in archive mm/built-in.a
>>> defined at memmove.o:(__memmove) in archive arch/arm64/lib/lib.a
ld.lld: error: duplicate symbol: memset
>>> defined at common.c
>>> kasan/common.o:(memset) in archive mm/built-in.a
>>> defined at memset.o:(__memset) in archive arch/arm64/lib/lib.a
Copy the exact way these are written in memcpy_64.S, which does
not have the same problem.
I don't know why this makes a difference, and it would be good
to have someone with a better understanding of assembler internals
review it.
It might be either a bug in the kernel or a bug in the assembler,
no idea which one. My patch makes it work with all versions of
clang and gcc, which is probably helpful even if it's a workaround
for a clang bug.
Cc: stable(a)vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
---
---
arch/arm64/lib/memcpy.S | 3 +--
arch/arm64/lib/memmove.S | 3 +--
arch/arm64/lib/memset.S | 3 +--
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/lib/memcpy.S b/arch/arm64/lib/memcpy.S
index e0bf83d556f2..dc8d2a216a6e 100644
--- a/arch/arm64/lib/memcpy.S
+++ b/arch/arm64/lib/memcpy.S
@@ -56,9 +56,8 @@
stp \reg1, \reg2, [\ptr], \val
.endm
- .weak memcpy
SYM_FUNC_START_ALIAS(__memcpy)
-SYM_FUNC_START_PI(memcpy)
+SYM_FUNC_START_WEAK_PI(memcpy)
#include "copy_template.S"
ret
SYM_FUNC_END_PI(memcpy)
diff --git a/arch/arm64/lib/memmove.S b/arch/arm64/lib/memmove.S
index 02cda2e33bde..1035dce4bdaf 100644
--- a/arch/arm64/lib/memmove.S
+++ b/arch/arm64/lib/memmove.S
@@ -45,9 +45,8 @@ C_h .req x12
D_l .req x13
D_h .req x14
- .weak memmove
SYM_FUNC_START_ALIAS(__memmove)
-SYM_FUNC_START_PI(memmove)
+SYM_FUNC_START_WEAK_PI(memmove)
cmp dstin, src
b.lo __memcpy
add tmp1, src, count
diff --git a/arch/arm64/lib/memset.S b/arch/arm64/lib/memset.S
index 77c3c7ba0084..a9c1c9a01ea9 100644
--- a/arch/arm64/lib/memset.S
+++ b/arch/arm64/lib/memset.S
@@ -42,9 +42,8 @@ dst .req x8
tmp3w .req w9
tmp3 .req x9
- .weak memset
SYM_FUNC_START_ALIAS(__memset)
-SYM_FUNC_START_PI(memset)
+SYM_FUNC_START_WEAK_PI(memset)
mov dst, dstin /* Preserve return value. */
and A_lw, val, #255
orr A_lw, A_lw, A_lw, lsl #8
--
2.26.2
clang and gas seem to interpret the symbols in memmove_64.S and
memset_64.S differently, such that clang does not make them
'weak' as expected, which leads to a linker error, with both
ld.bfd and ld.lld:
ld.lld: error: duplicate symbol: memmove
>>> defined at common.c
>>> kasan/common.o:(memmove) in archive mm/built-in.a
>>> defined at memmove.o:(__memmove) in archive arch/arm64/lib/lib.a
ld.lld: error: duplicate symbol: memset
>>> defined at common.c
>>> kasan/common.o:(memset) in archive mm/built-in.a
>>> defined at memset.o:(__memset) in archive arch/arm64/lib/lib.a
Copy the exact way these are written in memcpy_64.S, which does
not have the same problem.
I don't know why this makes a difference, and it would be good
to have someone with a better understanding of assembler internals
review it.
It might be either a bug in the kernel or a bug in the assembler,
no idea which one. My patch makes it work with all versions of
clang and gcc, which is probably helpful even if it's a workaround
for a clang bug.
Cc: stable(a)vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
---
arch/x86/lib/memmove_64.S | 4 ++--
arch/x86/lib/memset_64.S | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
index 7ff00ea64e4f..dcca01434be8 100644
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -26,8 +26,8 @@
*/
.weak memmove
-SYM_FUNC_START_ALIAS(memmove)
-SYM_FUNC_START(__memmove)
+SYM_FUNC_START_ALIAS(__memmove)
+SYM_FUNC_START_LOCAL(memmove)
mov %rdi, %rax
diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
index 9ff15ee404a4..a97f2ea4e0b2 100644
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -19,8 +19,8 @@
*
* rax original destination
*/
-SYM_FUNC_START_ALIAS(memset)
-SYM_FUNC_START(__memset)
+SYM_FUNC_START_ALIAS(__memset)
+SYM_FUNC_START_LOCAL(memset)
/*
* Some CPUs support enhanced REP MOVSB/STOSB feature. It is recommended
* to use it when possible. If not available, use fast string instructions.
--
2.26.2
Changes since v3 [1]:
- Drop extern for new function declarations (Michael)
- Rename memcpy_mcsafe_64.S to copy_mc_64.S instead of copy_mc.S and
related fixups (Michael)
- Add a new symlink
(tools/testing/selftests/powerpc/copyloops/copy_mc_64.S) to the new
copy_mc_64.S to fix selftest build breakage (Michael)
- Drop one instance of copy_safe() that survived from v2 of the patchset
(Vivek)
- Fix 32-bit x86 build breakage (kbuild robot)
- Kill off rather than rename tools/arch/x86/include/asm/mcsafe_test.h
since perf is no longer burden with dealing with the copy_mc_generic()
implementation.
- Build success notification received for revised set (kbuild robot)
[1]: http://lore.kernel.org/r/158992635164.403910.2616621400995359522.stgit@dwil…
---
The primary motivation to go touch memcpy_mcsafe() is that the existing
benefit of doing slow "handle with care" copies is obviated on newer
CPUs. With that concern lifted it also obviates the need to continue to
update the MCA-recovery capability detection code currently gated by
"mcsafe_key". Now the old "mcsafe_key" opt-in to perform the copy with
concerns for recovery fragility can instead be made an opt-out from the
default fast copy implementation (enable_copy_mc_fragile()).
The discussion with Linus on the first iteration of this patch
identified that memcpy_mcsafe() was misnamed relative to its usage. The
new names copy_mc_to_user() and copy_mc_to_kernel() clearly indicate the
intended use case and lets the architecture organize the implementation
accordingly.
For both powerpc and x86 a copy_mc_generic() implementation is added as
the backend for these interfaces.
Patches are relative to tip/master.
---
Dan Williams (2):
x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user,kernel}()
x86/copy_mc: Introduce copy_mc_generic()
arch/powerpc/Kconfig | 2
arch/powerpc/include/asm/string.h | 2
arch/powerpc/include/asm/uaccess.h | 40 +++--
arch/powerpc/lib/Makefile | 2
arch/powerpc/lib/copy_mc_64.S | 4
arch/x86/Kconfig | 2
arch/x86/Kconfig.debug | 2
arch/x86/include/asm/copy_mc_test.h | 75 +++++++++
arch/x86/include/asm/mcsafe_test.h | 75 ---------
arch/x86/include/asm/string_64.h | 32 ----
arch/x86/include/asm/uaccess.h | 21 +++
arch/x86/include/asm/uaccess_64.h | 20 --
arch/x86/kernel/cpu/mce/core.c | 8 -
arch/x86/kernel/quirks.c | 9 -
arch/x86/lib/Makefile | 1
arch/x86/lib/copy_mc.c | 64 ++++++++
arch/x86/lib/copy_mc_64.S | 165 ++++++++++++++++++++
arch/x86/lib/memcpy_64.S | 115 --------------
arch/x86/lib/usercopy_64.c | 21 ---
drivers/md/dm-writecache.c | 15 +-
drivers/nvdimm/claim.c | 2
drivers/nvdimm/pmem.c | 6 -
include/linux/string.h | 9 -
include/linux/uaccess.h | 9 +
include/linux/uio.h | 10 +
lib/Kconfig | 7 +
lib/iov_iter.c | 43 +++--
tools/arch/x86/include/asm/mcsafe_test.h | 13 --
tools/arch/x86/lib/memcpy_64.S | 115 --------------
tools/objtool/check.c | 5 -
tools/perf/bench/Build | 1
tools/perf/bench/mem-memcpy-x86-64-lib.c | 24 ---
tools/testing/nvdimm/test/nfit.c | 48 +++---
.../testing/selftests/powerpc/copyloops/.gitignore | 2
tools/testing/selftests/powerpc/copyloops/Makefile | 6 -
.../selftests/powerpc/copyloops/copy_mc_64.S | 1
.../selftests/powerpc/copyloops/memcpy_mcsafe_64.S | 1
37 files changed, 451 insertions(+), 526 deletions(-)
rename arch/powerpc/lib/{memcpy_mcsafe_64.S => copy_mc_64.S} (98%)
create mode 100644 arch/x86/include/asm/copy_mc_test.h
delete mode 100644 arch/x86/include/asm/mcsafe_test.h
create mode 100644 arch/x86/lib/copy_mc.c
create mode 100644 arch/x86/lib/copy_mc_64.S
delete mode 100644 tools/arch/x86/include/asm/mcsafe_test.h
delete mode 100644 tools/perf/bench/mem-memcpy-x86-64-lib.c
create mode 120000 tools/testing/selftests/powerpc/copyloops/copy_mc_64.S
delete mode 120000 tools/testing/selftests/powerpc/copyloops/memcpy_mcsafe_64.S
base-commit: bba413deb1065f1291cb1f366247513f11215520
This is the start of the stable review cycle for the 4.4.225 release.
There are 65 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 28 May 2020 18:36:22 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.225-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.4.225-rc1
R. Parameswaran <parameswaran.r7(a)gmail.com>
l2tp: device MTU setup, tunnel socket needs a lock
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
iio: sca3000: Remove an erroneous 'get_device()'
Alexander Usyskin <alexander.usyskin(a)intel.com>
mei: release me_cl object reference
Dragos Bogdan <dragos.bogdan(a)analog.com>
staging: iio: ad2s1210: Fix SPI reading
Bob Peterson <rpeterso(a)redhat.com>
Revert "gfs2: Don't demote a glock until its revokes are written"
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise PPP sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: protect sock pointer of struct pppol2tp_session with RCU
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise l2tp_eth sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: don't register sessions in l2tp_session_create()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: fix l2tp_eth module loading
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: pass tunnel pointer to ->session_create()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: prevent creation of sessions on terminated tunnels
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel used while creating sessions with netlink
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while handling genl TUNNEL_GET commands
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while handling genl tunnel updates
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while processing genl delete command
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while looking up sessions in l2tp_netlink
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise session's refcount before making it reachable
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: define parameters of l2tp_tunnel_find*() as "const"
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: define parameters of l2tp_session_get*() as "const"
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: remove l2tp_session_find()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: remove useless duplicate session detection in l2tp_netlink
R. Parameswaran <parameswaran.r7(a)gmail.com>
L2TP:Adjust intf MTU, add underlay L3, L2 hdrs.
R. Parameswaran <parameswaran.r7(a)gmail.com>
New kernel function to get IP overhead on a socket.
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: ppp: change PPPOL2TP_MSG_* => L2TP_MSG_*
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_*
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: export debug flags to UAPI
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: don't use l2tp_tunnel_find() in l2tp_ip and l2tp_ip6
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: take a reference on sessions used in genetlink handlers
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold session while sending creation notifications
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: fix racy socket lookup in l2tp_ip and l2tp_ip6 bind()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: lock socket before checking flags in connect()
Vishal Verma <vishal.l.verma(a)intel.com>
libnvdimm/btt: Remove unnecessary code in btt_freelist_init
Colin Ian King <colin.king(a)canonical.com>
platform/x86: alienware-wmi: fix kfree on potentially uninitialized pointer
Theodore Ts'o <tytso(a)mit.edu>
ext4: lock the xattr block before checksuming it
Brent Lu <brent.lu(a)intel.com>
ALSA: pcm: fix incorrect hw_base increase
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: purge get_cpu and reorder_via_wq from padata_do_serial
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: initialize pd->cpu with effective cpumask
Herbert Xu <herbert(a)gondor.apana.org.au>
padata: Replace delayed timer with immediate workqueue in padata_reorder
Peter Zijlstra <peterz(a)infradead.org>
sched/fair, cpumask: Export for_each_cpu_wrap()
Mathias Krause <minipli(a)googlemail.com>
padata: set cpu_index of unused CPUs to -1
Kevin Hao <haokexin(a)gmail.com>
i2c: dev: Fix the race between the release of i2c_dev and cdev
viresh kumar <viresh.kumar(a)linaro.org>
i2c-dev: don't get i2c adapter via i2c_dev
Dan Carpenter <dan.carpenter(a)oracle.com>
i2c: dev: use after free in detach
Wolfram Sang <wsa(a)the-dreams.de>
i2c: dev: don't start function name with 'return'
Erico Nunes <erico.nunes(a)datacom.ind.br>
i2c: dev: switch from register_chrdev to cdev API
Shuah Khan <shuahkh(a)osg.samsung.com>
media: fix media devnode ioctl/syscall and unregister race
Shuah Khan <shuahkh(a)osg.samsung.com>
media: fix use-after-free in cdev_put() when app exits after driver unbind
Mauro Carvalho Chehab <mchehab(a)osg.samsung.com>
media-device: dynamically allocate struct media_devnode
Mauro Carvalho Chehab <mchehab(a)osg.samsung.com>
media-devnode: fix namespace mess
Max Kellermann <max(a)duempel.org>
media-devnode: add missing mutex lock in error handler
Max Kellermann <max(a)duempel.org>
drivers/media/media-devnode: clear private_data before put_device()
Shuah Khan <shuahkh(a)osg.samsung.com>
media: Fix media_open() to clear filp->private_data in error leg
Thomas Gleixner <tglx(a)linutronix.de>
ARM: futex: Address build warning
Hans de Goede <hdegoede(a)redhat.com>
platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA
Alan Stern <stern(a)rowland.harvard.edu>
USB: core: Fix misleading driver bug report
Wu Bo <wubo40(a)huawei.com>
ceph: fix double unlock in handle_cap_export()
Sebastian Reichel <sebastian.reichel(a)collabora.com>
HID: multitouch: add eGalaxTouch P80H84 support
Al Viro <viro(a)zeniv.linux.org.uk>
fix multiplication overflow in copy_fdtable()
Roberto Sassu <roberto.sassu(a)huawei.com>
evm: Check also if *tfm is an error pointer in init_desc()
Mathias Krause <minipli(a)googlemail.com>
padata: ensure padata_do_serial() runs on the correct CPU
Mathias Krause <minipli(a)googlemail.com>
padata: ensure the reorder timer callback runs on the correct CPU
Jason A. Donenfeld <Jason(a)zx2c4.com>
padata: get_next is never NULL
Tobias Klauser <tklauser(a)distanz.ch>
padata: Remove unused but set variables
Cao jin <caoj.fnst(a)cn.fujitsu.com>
igb: use igb_adapter->io_addr instead of e1000_hw->hw_addr
-------------
Diffstat:
Documentation/networking/l2tp.txt | 8 +-
Makefile | 4 +-
arch/arm/include/asm/futex.h | 9 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 3 +
drivers/i2c/i2c-dev.c | 60 +++---
drivers/media/media-device.c | 43 +++--
drivers/media/media-devnode.c | 168 +++++++++-------
drivers/media/usb/uvc/uvc_driver.c | 2 +-
drivers/misc/mei/client.c | 2 +
drivers/net/ethernet/intel/igb/igb_main.c | 4 +-
drivers/nvdimm/btt.c | 8 +-
drivers/platform/x86/alienware-wmi.c | 17 +-
drivers/platform/x86/asus-nb-wmi.c | 24 +++
drivers/staging/iio/accel/sca3000_ring.c | 2 +-
drivers/staging/iio/resolver/ad2s1210.c | 17 +-
drivers/usb/core/message.c | 4 +-
fs/ceph/caps.c | 1 +
fs/ext4/xattr.c | 66 ++++---
fs/file.c | 2 +-
fs/gfs2/glock.c | 3 -
include/linux/cpumask.h | 17 ++
include/linux/net.h | 3 +
include/linux/padata.h | 13 +-
include/media/media-device.h | 5 +-
include/media/media-devnode.h | 32 +++-
include/net/ipv6.h | 2 +
include/uapi/linux/if_pppol2tp.h | 13 +-
include/uapi/linux/l2tp.h | 17 +-
kernel/padata.c | 88 ++++-----
lib/cpumask.c | 32 ++++
net/ipv6/datagram.c | 4 +-
net/l2tp/l2tp_core.c | 181 ++++++-----------
net/l2tp/l2tp_core.h | 47 +++--
net/l2tp/l2tp_eth.c | 216 +++++++++++++--------
net/l2tp/l2tp_ip.c | 68 ++++---
net/l2tp/l2tp_ip6.c | 82 ++++----
net/l2tp/l2tp_netlink.c | 124 +++++++-----
net/l2tp/l2tp_ppp.c | 309 ++++++++++++++++++------------
net/socket.c | 46 +++++
security/integrity/evm/evm_crypto.c | 2 +-
sound/core/pcm_lib.c | 1 +
42 files changed, 1014 insertions(+), 736 deletions(-)
Since the driver was first introduced into the kernel, it has only
handled the ciphers associated with WEP, WPA, and WPA2. It fails with
WPA3 even though mac80211 can handle those additional ciphers in software,
b43legacy did not report that it could handle them. By setting MFP_CAPABLE using
ieee80211_set_hw(), the problem is fixed.
With this change, b43legacy will handle the ciohers it knows in hardare,
and let mac80211 handle the others in software. It is not necessary to
use the module parameter NOHWCRYPT to turn hardware encryption off.
Although this change essentially eliminates that module parameter,
I am choosing to keep it for cases where the hardware is broken,
and software encryption is required for all ciphers.
This patch fixes a problem that has been in b43legacy since commit
75388acd0cd8 ("[B43LEGACY]: add mac80211-based driver for legacy BCM43xx
devices").
Fixes: 75388acd0cd8 ("[B43LEGACY]: add mac80211-based driver for legacy BCM43xx devices")
Signed-off-by: Larry Finger <Larry.Finger(a)lwfinger.net>
Cc: Stable <stable(a)vger.kernel.org>
---
drivers/net/wireless/broadcom/b43legacy/main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/broadcom/b43legacy/main.c b/drivers/net/wireless/broadcom/b43legacy/main.c
index 8b6b657c4b85..5208a39fd6f7 100644
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
@@ -3801,6 +3801,7 @@ static int b43legacy_wireless_init(struct ssb_device *dev)
/* fill hw info */
ieee80211_hw_set(hw, RX_INCLUDES_FCS);
ieee80211_hw_set(hw, SIGNAL_DBM);
+ ieee80211_hw_set(hw, MFP_CAPABLE); /* Allow WPA3 in software */
hw->wiphy->interface_modes =
BIT(NL80211_IFTYPE_AP) |
--
2.26.2
This is the start of the stable review cycle for the 4.9.225 release.
There are 64 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 28 May 2020 18:36:22 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.9.225-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.9.225-rc1
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
iio: sca3000: Remove an erroneous 'get_device()'
John Hubbard <jhubbard(a)nvidia.com>
rapidio: fix an error in get_user_pages_fast() error handling
Alexander Usyskin <alexander.usyskin(a)intel.com>
mei: release me_cl object reference
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
iio: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
Oscar Carter <oscar.carter(a)gmx.com>
staging: greybus: Fix uninitialized scalar variable
Dragos Bogdan <dragos.bogdan(a)analog.com>
staging: iio: ad2s1210: Fix SPI reading
Bob Peterson <rpeterso(a)redhat.com>
Revert "gfs2: Don't demote a glock until its revokes are written"
Arjun Vynipadath <arjun(a)chelsio.com>
cxgb4/cxgb4vf: Fix mac_hlist initialization and free
Arjun Vynipadath <arjun(a)chelsio.com>
cxgb4: free mac_hlist properly
Vishal Verma <vishal.l.verma(a)intel.com>
libnvdimm/btt: Remove unnecessary code in btt_freelist_init
Colin Ian King <colin.king(a)canonical.com>
platform/x86: alienware-wmi: fix kfree on potentially uninitialized pointer
Arnd Bergmann <arnd(a)arndb.de>
ubsan: build ubsan.c more conservatively
Peter Zijlstra <peterz(a)infradead.org>
x86/uaccess, ubsan: Fix UBSAN vs. SMAP
R. Parameswaran <parameswaran.r7(a)gmail.com>
l2tp: device MTU setup, tunnel socket needs a lock
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
dmaengine: tegra210-adma: Fix an error handling path in 'tegra_adma_probe()'
Brent Lu <brent.lu(a)intel.com>
ALSA: pcm: fix incorrect hw_base increase
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise PPP sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: protect sock pointer of struct pppol2tp_session with RCU
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise l2tp_eth sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: don't register sessions in l2tp_session_create()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: fix l2tp_eth module loading
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: pass tunnel pointer to ->session_create()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: prevent creation of sessions on terminated tunnels
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel used while creating sessions with netlink
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while handling genl TUNNEL_GET commands
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while handling genl tunnel updates
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while processing genl delete command
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: hold tunnel while looking up sessions in l2tp_netlink
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise session's refcount before making it reachable
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: define parameters of l2tp_tunnel_find*() as "const"
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: define parameters of l2tp_session_get*() as "const"
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: remove l2tp_session_find()
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: remove useless duplicate session detection in l2tp_netlink
R. Parameswaran <parameswaran.r7(a)gmail.com>
L2TP:Adjust intf MTU, add underlay L3, L2 hdrs.
R. Parameswaran <parameswaran.r7(a)gmail.com>
New kernel function to get IP overhead on a socket.
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: ppp: change PPPOL2TP_MSG_* => L2TP_MSG_*
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_*
Asbjørn Sloth Tønnesen <asbjorn(a)asbjorn.st>
net: l2tp: export debug flags to UAPI
Kevin Hao <haokexin(a)gmail.com>
watchdog: Fix the race between the release of watchdog_core_data and cdev
Christoph Hellwig <hch(a)lst.de>
arm64: fix the flush_icache_range arguments in machine_kexec
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: purge get_cpu and reorder_via_wq from padata_do_serial
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: initialize pd->cpu with effective cpumask
Herbert Xu <herbert(a)gondor.apana.org.au>
padata: Replace delayed timer with immediate workqueue in padata_reorder
Mathias Krause <minipli(a)googlemail.com>
padata: set cpu_index of unused CPUs to -1
Kevin Hao <haokexin(a)gmail.com>
i2c: dev: Fix the race between the release of i2c_dev and cdev
Thomas Gleixner <tglx(a)linutronix.de>
ARM: futex: Address build warning
Hans de Goede <hdegoede(a)redhat.com>
platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA
Alan Stern <stern(a)rowland.harvard.edu>
USB: core: Fix misleading driver bug report
Wu Bo <wubo40(a)huawei.com>
ceph: fix double unlock in handle_cap_export()
Yoshiyuki Kurauchi <ahochauwaaaaa(a)gmail.com>
gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
James Hilliard <james.hilliard1(a)gmail.com>
component: Silence bind error on -EPROBE_DEFER
Xiyu Yang <xiyuyang19(a)fudan.edu.cn>
configfs: fix config_item refcnt leak in configfs_rmdir()
Sebastian Reichel <sebastian.reichel(a)collabora.com>
HID: multitouch: add eGalaxTouch P80H84 support
Frédéric Pierret (fepitre) <frederic.pierret(a)qubes-os.org>
gcc-common.h: Update for GCC 10
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()'
Alexander Monakov <amonakov(a)ispras.ru>
iommu/amd: Fix over-read of ACPI UID from IVRS table
Al Viro <viro(a)zeniv.linux.org.uk>
fix multiplication overflow in copy_fdtable()
Roberto Sassu <roberto.sassu(a)huawei.com>
ima: Fix return value of ima_write_policy()
Roberto Sassu <roberto.sassu(a)huawei.com>
evm: Check also if *tfm is an error pointer in init_desc()
Mathias Krause <minipli(a)googlemail.com>
padata: ensure padata_do_serial() runs on the correct CPU
Mathias Krause <minipli(a)googlemail.com>
padata: ensure the reorder timer callback runs on the correct CPU
Jason A. Donenfeld <Jason(a)zx2c4.com>
padata: get_next is never NULL
Tobias Klauser <tklauser(a)distanz.ch>
padata: Remove unused but set variables
Cao jin <caoj.fnst(a)cn.fujitsu.com>
igb: use igb_adapter->io_addr instead of e1000_hw->hw_addr
-------------
Diffstat:
Documentation/networking/l2tp.txt | 8 +-
Makefile | 4 +-
arch/arm/include/asm/futex.h | 9 +-
arch/arm64/kernel/machine_kexec.c | 3 +-
drivers/base/component.c | 8 +-
drivers/dma/tegra210-adma.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 3 +
drivers/i2c/i2c-dev.c | 48 ++--
drivers/i2c/muxes/i2c-demux-pinctrl.c | 1 +
drivers/iio/dac/vf610_dac.c | 1 +
drivers/iommu/amd_iommu_init.c | 9 +-
drivers/misc/mei/client.c | 2 +
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 13 +-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 6 +-
drivers/net/ethernet/intel/igb/igb_main.c | 4 +-
drivers/net/gtp.c | 9 +-
drivers/nvdimm/btt.c | 8 +-
drivers/platform/x86/alienware-wmi.c | 17 +-
drivers/platform/x86/asus-nb-wmi.c | 24 ++
drivers/rapidio/devices/rio_mport_cdev.c | 5 +
drivers/staging/greybus/uart.c | 4 +-
drivers/staging/iio/accel/sca3000_ring.c | 2 +-
drivers/staging/iio/resolver/ad2s1210.c | 17 +-
drivers/usb/core/message.c | 4 +-
drivers/watchdog/watchdog_dev.c | 67 ++---
fs/ceph/caps.c | 1 +
fs/configfs/dir.c | 1 +
fs/file.c | 2 +-
fs/gfs2/glock.c | 3 -
include/linux/net.h | 3 +
include/linux/padata.h | 13 +-
include/uapi/linux/if_pppol2tp.h | 13 +-
include/uapi/linux/l2tp.h | 17 +-
kernel/padata.c | 88 +++---
lib/Makefile | 2 +
net/l2tp/l2tp_core.c | 174 ++++--------
net/l2tp/l2tp_core.h | 46 +--
net/l2tp/l2tp_eth.c | 216 ++++++++------
net/l2tp/l2tp_netlink.c | 79 +++---
net/l2tp/l2tp_ppp.c | 309 ++++++++++++---------
net/socket.c | 46 +++
scripts/gcc-plugins/Makefile | 1 +
scripts/gcc-plugins/gcc-common.h | 4 +
security/integrity/evm/evm_crypto.c | 2 +-
security/integrity/ima/ima_fs.c | 3 +-
sound/core/pcm_lib.c | 1 +
47 files changed, 734 insertions(+), 569 deletions(-)
This is the start of the stable review cycle for the 4.14.182 release.
There are 59 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 28 May 2020 18:36:22 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.182-r…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.14.182-rc1
Fabrice Gasnier <fabrice.gasnier(a)st.com>
iio: adc: stm32-adc: fix device used to request dma
Peter Ujfalusi <peter.ujfalusi(a)ti.com>
iio: adc: stm32-adc: Use dma_request_chan() instead dma_request_slave_channel()
Josh Poimboeuf <jpoimboe(a)redhat.com>
x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks
Qiushi Wu <wu000273(a)umn.edu>
rxrpc: Fix a memory leak in rxkad_verify_response()
John Hubbard <jhubbard(a)nvidia.com>
rapidio: fix an error in get_user_pages_fast() error handling
Alexander Usyskin <alexander.usyskin(a)intel.com>
mei: release me_cl object reference
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
iio: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
iio: sca3000: Remove an erroneous 'get_device()'
Oscar Carter <oscar.carter(a)gmx.com>
staging: greybus: Fix uninitialized scalar variable
Dragos Bogdan <dragos.bogdan(a)analog.com>
staging: iio: ad2s1210: Fix SPI reading
Bob Peterson <rpeterso(a)redhat.com>
Revert "gfs2: Don't demote a glock until its revokes are written"
Arjun Vynipadath <arjun(a)chelsio.com>
cxgb4/cxgb4vf: Fix mac_hlist initialization and free
Arjun Vynipadath <arjun(a)chelsio.com>
cxgb4: free mac_hlist properly
Geert Uytterhoeven <geert+renesas(a)glider.be>
media: fdp1: Fix R-Car M3-N naming in debug message
Vishal Verma <vishal.l.verma(a)intel.com>
libnvdimm/btt: Fix LBA masking during 'free list' population
Vishal Verma <vishal.l.verma(a)intel.com>
libnvdimm/btt: Remove unnecessary code in btt_freelist_init
Arnd Bergmann <arnd(a)arndb.de>
ubsan: build ubsan.c more conservatively
Peter Zijlstra <peterz(a)infradead.org>
x86/uaccess, ubsan: Fix UBSAN vs. SMAP
Michael Ellerman <mpe(a)ellerman.id.au>
powerpc/64s: Disable STRICT_KERNEL_RWX
Russell Currey <ruscur(a)russell.cc>
powerpc: Remove STRICT_KERNEL_RWX incompatibility with RELOCATABLE
Christophe Leroy <christophe.leroy(a)c-s.fr>
powerpc: restore alphabetic order in Kconfig
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
dmaengine: tegra210-adma: Fix an error handling path in 'tegra_adma_probe()'
Xiyu Yang <xiyuyang19(a)fudan.edu.cn>
apparmor: Fix aa_label refcnt leak in policy_update
Brent Lu <brent.lu(a)intel.com>
ALSA: pcm: fix incorrect hw_base increase
Scott Bahling <sbahling(a)suse.com>
ALSA: iec1712: Initialize STDSP24 properly when using the model=staudio option
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise PPP sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: protect sock pointer of struct pppol2tp_session with RCU
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: initialise l2tp_eth sessions before registering them
Guillaume Nault <g.nault(a)alphalink.fr>
l2tp: don't register sessions in l2tp_session_create()
Christoph Hellwig <hch(a)lst.de>
arm64: fix the flush_icache_range arguments in machine_kexec
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: purge get_cpu and reorder_via_wq from padata_do_serial
Daniel Jordan <daniel.m.jordan(a)oracle.com>
padata: initialize pd->cpu with effective cpumask
Herbert Xu <herbert(a)gondor.apana.org.au>
padata: Replace delayed timer with immediate workqueue in padata_reorder
Mathias Krause <minipli(a)googlemail.com>
padata: set cpu_index of unused CPUs to -1
Thomas Gleixner <tglx(a)linutronix.de>
ARM: futex: Address build warning
Hans de Goede <hdegoede(a)redhat.com>
platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA
Alan Stern <stern(a)rowland.harvard.edu>
USB: core: Fix misleading driver bug report
Wu Bo <wubo40(a)huawei.com>
ceph: fix double unlock in handle_cap_export()
Yoshiyuki Kurauchi <ahochauwaaaaa(a)gmail.com>
gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
Thomas Gleixner <tglx(a)linutronix.de>
x86/apic: Move TSC deadline timer debug printk
Tyrel Datwyler <tyreld(a)linux.ibm.com>
scsi: ibmvscsi: Fix WARN_ON during event pool release
James Hilliard <james.hilliard1(a)gmail.com>
component: Silence bind error on -EPROBE_DEFER
Stefano Garzarella <sgarzare(a)redhat.com>
vhost/vsock: fix packet delivery order to monitoring devices
Xiyu Yang <xiyuyang19(a)fudan.edu.cn>
configfs: fix config_item refcnt leak in configfs_rmdir()
Arun Easi <aeasi(a)marvell.com>
scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV
Sebastian Reichel <sebastian.reichel(a)collabora.com>
HID: multitouch: add eGalaxTouch P80H84 support
Frédéric Pierret (fepitre) <frederic.pierret(a)qubes-os.org>
gcc-common.h: Update for GCC 10
Richard Weinberger <richard(a)nod.at>
ubi: Fix seq_file usage in detailed_erase_block_info debugfs file
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()'
Alexander Monakov <amonakov(a)ispras.ru>
iommu/amd: Fix over-read of ACPI UID from IVRS table
Al Viro <viro(a)zeniv.linux.org.uk>
fix multiplication overflow in copy_fdtable()
Roberto Sassu <roberto.sassu(a)huawei.com>
ima: Fix return value of ima_write_policy()
Roberto Sassu <roberto.sassu(a)huawei.com>
evm: Check also if *tfm is an error pointer in init_desc()
Roberto Sassu <roberto.sassu(a)huawei.com>
ima: Set file->f_mode instead of file->f_flags in ima_calc_file_hash()
Mathias Krause <minipli(a)googlemail.com>
padata: ensure padata_do_serial() runs on the correct CPU
Mathias Krause <minipli(a)googlemail.com>
padata: ensure the reorder timer callback runs on the correct CPU
Kevin Hao <haokexin(a)gmail.com>
i2c: dev: Fix the race between the release of i2c_dev and cdev
Kevin Hao <haokexin(a)gmail.com>
watchdog: Fix the race between the release of watchdog_core_data and cdev
Shijie Luo <luoshijie1(a)huawei.com>
ext4: add cond_resched() to ext4_protect_reserved_inode
-------------
Diffstat:
Makefile | 4 +-
arch/arm/include/asm/futex.h | 9 +-
arch/arm64/kernel/machine_kexec.c | 3 +-
arch/powerpc/Kconfig | 4 +-
arch/x86/kernel/apic/apic.c | 27 +--
arch/x86/kernel/unwind_orc.c | 7 +
drivers/base/component.c | 8 +-
drivers/dma/tegra210-adma.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 3 +
drivers/i2c/i2c-dev.c | 48 +++--
drivers/i2c/muxes/i2c-demux-pinctrl.c | 1 +
drivers/iio/accel/sca3000.c | 2 +-
drivers/iio/adc/stm32-adc.c | 20 +-
drivers/iio/dac/vf610_dac.c | 1 +
drivers/iommu/amd_iommu_init.c | 9 +-
drivers/media/platform/rcar_fdp1.c | 2 +-
drivers/misc/mei/client.c | 2 +
drivers/mtd/ubi/debug.c | 12 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 13 +-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 6 +-
drivers/net/gtp.c | 9 +-
drivers/nvdimm/btt.c | 33 +--
drivers/nvdimm/btt.h | 2 +
drivers/nvdimm/btt_devs.c | 8 +
drivers/platform/x86/asus-nb-wmi.c | 24 +++
drivers/rapidio/devices/rio_mport_cdev.c | 5 +
drivers/scsi/ibmvscsi/ibmvscsi.c | 4 -
drivers/scsi/qla2xxx/qla_mbx.c | 2 +-
drivers/staging/greybus/uart.c | 4 +-
drivers/staging/iio/resolver/ad2s1210.c | 17 +-
drivers/usb/core/message.c | 4 +-
drivers/vhost/vsock.c | 10 +-
drivers/watchdog/watchdog_dev.c | 67 +++---
fs/ceph/caps.c | 1 +
fs/configfs/dir.c | 1 +
fs/ext4/block_validity.c | 1 +
fs/file.c | 2 +-
fs/gfs2/glock.c | 3 -
include/linux/padata.h | 13 +-
kernel/padata.c | 71 +++---
lib/Makefile | 2 +
net/l2tp/l2tp_core.c | 21 +-
net/l2tp/l2tp_core.h | 3 +
net/l2tp/l2tp_eth.c | 99 +++++++--
net/l2tp/l2tp_ppp.c | 238 +++++++++++++--------
net/rxrpc/rxkad.c | 3 +-
scripts/gcc-plugins/Makefile | 1 +
scripts/gcc-plugins/gcc-common.h | 4 +
security/apparmor/apparmorfs.c | 3 +-
security/integrity/evm/evm_crypto.c | 2 +-
security/integrity/ima/ima_crypto.c | 12 +-
security/integrity/ima/ima_fs.c | 3 +-
sound/core/pcm_lib.c | 1 +
sound/pci/ice1712/ice1712.c | 3 +-
55 files changed, 529 insertions(+), 331 deletions(-)
Since
commit 27d13da8782a ("w1: omap-hdq: Simplify driver with PM runtime autosuspend")
was applied,
I did see timeouts and wrong values when reading a bq27000 connected
to hdq of the omap3. This occurred mainly after boot but remained and
only sometimes settled down after several reads.
root@letux:~# time cat /sys/class/power_supply/bq27000-battery/uevent
POWER_SUPPLY_NAME=bq27000-battery
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_VOLTAGE_NOW=0
POWER_SUPPLY_CURRENT_NOW=0
POWER_SUPPLY_CAPACITY=0
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_TEMP=-2731
POWER_SUPPLY_TIME_TO_EMPTY_NOW=0
POWER_SUPPLY_TIME_TO_EMPTY_AVG=0
POWER_SUPPLY_TIME_TO_FULL_NOW=0
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CHARGE_FULL=0
POWER_SUPPLY_CHARGE_NOW=0
POWER_SUPPLY_CHARGE_FULL_DESIGN=0
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_ENERGY_NOW=0
POWER_SUPPLY_POWER_AVG=0
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_MANUFACTURER=Texas Instruments
real 0m15.761s
user 0m0.001s
sys 0m0.025s
root@letux:~#
Sometimes the effect did disappear after accessing
the device multiple times, speed went up and results
became correct.
All this indicates that some interrupts from the hdq
controller are lost by the driver.
Enabling debugging revealed that there were spurious tx
and rx timeouts, i.e. the driver does not always recognise
interrupts. The main problem is that rx and tx interrupts
share a single variable which was sometimes reset to
0 wiping out other interrupts. And it was overwritten
by a second interrupt, independent of whether the
previous interrupt was already processed or not.
This patch improves interrupt handling to avoid such
races and loss of interrupt flags.
The ideas are:
* only the hdq_isr() sets bits in hdq_status
* it does not reset any bits
* it does wake_up() if any interrupt is pending
* bits are only reset by the read/write/break functions
if they were waited for
* this makes sure that no interrupts can be lost
* rx/tx/timeout bits are completely decoupled from each
other (and not reset all after waiting for any of them)
* which bits to reset is now specified by a new parameter
to hdq_reset_irqstatus()
* hdq_reset_irqstatus() also returns the state before
resetting so that we can encapsulate the spinlock
* this should now handle the case that the write and read
are both already finished quickly before the hdq_write_byte()
ends.
* Or that two interrupts occur in succession before
they are processed by the driver.
Old code may have reset all status bits making the next
hdq_read_byte() timeout.
* the spinlock now always protects changing of bits in function
hdq_reset_irqstatus() which could become a read-write-modify
problem if the interrupt handler tries to read-modify-write
exactly at the same moment
* we add mutex protection also for hdq_write_byte() just to
be safe to not to disturb a hdq_read_byte() triggered by
some other thread/process.
This patch was tested on a GTA04 and results in no
boot problems any more. And first read after boot is now ok:
root@letux:~# time cat /sys/class/power_supply/bq27000-battery/uevent
POWER_SUPPLY_NAME=bq27000-battery
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_VOLTAGE_NOW=3970000
POWER_SUPPLY_CURRENT_NOW=354144
POWER_SUPPLY_CAPACITY=82
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_TEMP=266
POWER_SUPPLY_TIME_TO_EMPTY_NOW=7680
POWER_SUPPLY_TIME_TO_EMPTY_AVG=7380
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CHARGE_FULL=934856
POWER_SUPPLY_CHARGE_NOW=763976
POWER_SUPPLY_CHARGE_FULL_DESIGN=1233792
POWER_SUPPLY_CYCLE_COUNT=82
POWER_SUPPLY_ENERGY_NOW=2852840
POWER_SUPPLY_POWER_AVG=1392840
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_MANUFACTURER=Texas Instruments
real 0m0.233s
user 0m0.000s
sys 0m0.025s
root@letux:~#
It was also tested with dev_dbg enabled and more
printk that all activities behave correctly, especially
hdq_write_byte(), hdq_read_byte(), omap_hdq_break().
Not tested is omap_w1_triplet().
Fixes: 27d13da8782a ("w1: omap-hdq: Simplify driver with PM runtime autosuspend")
Cc: stable(a)vger.kernel.org # v5.6+
Signed-off-by: H. Nikolaus Schaller <hns(a)goldelico.com>
---
drivers/w1/masters/omap_hdq.c | 62 ++++++++++++++++++++++++-----------
1 file changed, 42 insertions(+), 20 deletions(-)
diff --git a/drivers/w1/masters/omap_hdq.c b/drivers/w1/masters/omap_hdq.c
index 9f9ec108b189e2..a6484700f3b388 100644
--- a/drivers/w1/masters/omap_hdq.c
+++ b/drivers/w1/masters/omap_hdq.c
@@ -54,10 +54,10 @@ MODULE_PARM_DESC(w1_id, "1-wire id for the slave detection in HDQ mode");
struct hdq_data {
struct device *dev;
void __iomem *hdq_base;
- /* lock status update */
+ /* lock read/write/break operations */
struct mutex hdq_mutex;
+ /* interrupt status and a lock for it */
u8 hdq_irqstatus;
- /* device lock */
spinlock_t hdq_spinlock;
/* mode: 0-HDQ 1-W1 */
int mode;
@@ -120,13 +120,18 @@ static int hdq_wait_for_flag(struct hdq_data *hdq_data, u32 offset,
}
/* Clear saved irqstatus after using an interrupt */
-static void hdq_reset_irqstatus(struct hdq_data *hdq_data)
+static u8 hdq_reset_irqstatus(struct hdq_data *hdq_data, u8 bits)
{
unsigned long irqflags;
+ u8 status;
spin_lock_irqsave(&hdq_data->hdq_spinlock, irqflags);
- hdq_data->hdq_irqstatus = 0;
+ status = hdq_data->hdq_irqstatus;
+ /* this is a read-modify-write */
+ hdq_data->hdq_irqstatus &= ~bits;
spin_unlock_irqrestore(&hdq_data->hdq_spinlock, irqflags);
+
+ return status;
}
/* write out a byte and fill *status with HDQ_INT_STATUS */
@@ -135,6 +140,12 @@ static int hdq_write_byte(struct hdq_data *hdq_data, u8 val, u8 *status)
int ret;
u8 tmp_status;
+ ret = mutex_lock_interruptible(&hdq_data->hdq_mutex);
+ if (ret < 0) {
+ ret = -EINTR;
+ goto rtn;
+ }
+
*status = 0;
hdq_reg_out(hdq_data, OMAP_HDQ_TX_DATA, val);
@@ -144,14 +155,15 @@ static int hdq_write_byte(struct hdq_data *hdq_data, u8 val, u8 *status)
OMAP_HDQ_CTRL_STATUS_DIR | OMAP_HDQ_CTRL_STATUS_GO);
/* wait for the TXCOMPLETE bit */
ret = wait_event_timeout(hdq_wait_queue,
- hdq_data->hdq_irqstatus, OMAP_HDQ_TIMEOUT);
+ (hdq_data->hdq_irqstatus & OMAP_HDQ_INT_STATUS_TXCOMPLETE),
+ OMAP_HDQ_TIMEOUT);
+ *status = hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_TXCOMPLETE);
if (ret == 0) {
dev_dbg(hdq_data->dev, "TX wait elapsed\n");
ret = -ETIMEDOUT;
goto out;
}
- *status = hdq_data->hdq_irqstatus;
/* check irqstatus */
if (!(*status & OMAP_HDQ_INT_STATUS_TXCOMPLETE)) {
dev_dbg(hdq_data->dev, "timeout waiting for"
@@ -170,7 +182,8 @@ static int hdq_write_byte(struct hdq_data *hdq_data, u8 val, u8 *status)
}
out:
- hdq_reset_irqstatus(hdq_data);
+ mutex_unlock(&hdq_data->hdq_mutex);
+rtn:
return ret;
}
@@ -181,7 +194,7 @@ static irqreturn_t hdq_isr(int irq, void *_hdq)
unsigned long irqflags;
spin_lock_irqsave(&hdq_data->hdq_spinlock, irqflags);
- hdq_data->hdq_irqstatus = hdq_reg_in(hdq_data, OMAP_HDQ_INT_STATUS);
+ hdq_data->hdq_irqstatus |= hdq_reg_in(hdq_data, OMAP_HDQ_INT_STATUS);
spin_unlock_irqrestore(&hdq_data->hdq_spinlock, irqflags);
dev_dbg(hdq_data->dev, "hdq_isr: %x\n", hdq_data->hdq_irqstatus);
@@ -238,18 +251,19 @@ static int omap_hdq_break(struct hdq_data *hdq_data)
/* wait for the TIMEOUT bit */
ret = wait_event_timeout(hdq_wait_queue,
- hdq_data->hdq_irqstatus, OMAP_HDQ_TIMEOUT);
+ (hdq_data->hdq_irqstatus & OMAP_HDQ_INT_STATUS_TIMEOUT),
+ OMAP_HDQ_TIMEOUT);
+ tmp_status = hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_TIMEOUT);
if (ret == 0) {
dev_dbg(hdq_data->dev, "break wait elapsed\n");
ret = -EINTR;
goto out;
}
- tmp_status = hdq_data->hdq_irqstatus;
/* check irqstatus */
if (!(tmp_status & OMAP_HDQ_INT_STATUS_TIMEOUT)) {
dev_dbg(hdq_data->dev, "timeout waiting for TIMEOUT, %x\n",
- tmp_status);
+ tmp_status);
ret = -ETIMEDOUT;
goto out;
}
@@ -278,7 +292,6 @@ static int omap_hdq_break(struct hdq_data *hdq_data)
" return to zero, %x\n", tmp_status);
out:
- hdq_reset_irqstatus(hdq_data);
mutex_unlock(&hdq_data->hdq_mutex);
rtn:
return ret;
@@ -309,12 +322,15 @@ static int hdq_read_byte(struct hdq_data *hdq_data, u8 *val)
*/
wait_event_timeout(hdq_wait_queue,
(hdq_data->hdq_irqstatus
- & OMAP_HDQ_INT_STATUS_RXCOMPLETE),
+ & (OMAP_HDQ_INT_STATUS_RXCOMPLETE |
+ OMAP_HDQ_INT_STATUS_TIMEOUT)),
OMAP_HDQ_TIMEOUT);
-
+ status = hdq_reset_irqstatus(hdq_data,
+ OMAP_HDQ_INT_STATUS_RXCOMPLETE |
+ OMAP_HDQ_INT_STATUS_TIMEOUT);
hdq_reg_merge(hdq_data, OMAP_HDQ_CTRL_STATUS, 0,
OMAP_HDQ_CTRL_STATUS_DIR);
- status = hdq_data->hdq_irqstatus;
+
/* check irqstatus */
if (!(status & OMAP_HDQ_INT_STATUS_RXCOMPLETE)) {
dev_dbg(hdq_data->dev, "timeout waiting for"
@@ -322,11 +338,12 @@ static int hdq_read_byte(struct hdq_data *hdq_data, u8 *val)
ret = -ETIMEDOUT;
goto out;
}
+ } else { /* interrupt had occurred before hdq_read_byte was called */
+ hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_RXCOMPLETE);
}
/* the data is ready. Read it in! */
*val = hdq_reg_in(hdq_data, OMAP_HDQ_RX_DATA);
out:
- hdq_reset_irqstatus(hdq_data);
mutex_unlock(&hdq_data->hdq_mutex);
rtn:
return ret;
@@ -367,15 +384,15 @@ static u8 omap_w1_triplet(void *_hdq, u8 bdir)
(hdq_data->hdq_irqstatus
& OMAP_HDQ_INT_STATUS_RXCOMPLETE),
OMAP_HDQ_TIMEOUT);
+ /* Must clear irqstatus for another RXCOMPLETE interrupt */
+ hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_RXCOMPLETE);
+
if (err == 0) {
dev_dbg(hdq_data->dev, "RX wait elapsed\n");
goto out;
}
id_bit = (hdq_reg_in(_hdq, OMAP_HDQ_RX_DATA) & 0x01);
- /* Must clear irqstatus for another RXCOMPLETE interrupt */
- hdq_reset_irqstatus(hdq_data);
-
/* read comp_bit */
hdq_reg_merge(_hdq, OMAP_HDQ_CTRL_STATUS,
ctrl | OMAP_HDQ_CTRL_STATUS_DIR, mask);
@@ -383,6 +400,9 @@ static u8 omap_w1_triplet(void *_hdq, u8 bdir)
(hdq_data->hdq_irqstatus
& OMAP_HDQ_INT_STATUS_RXCOMPLETE),
OMAP_HDQ_TIMEOUT);
+ /* Must clear irqstatus for another RXCOMPLETE interrupt */
+ hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_RXCOMPLETE);
+
if (err == 0) {
dev_dbg(hdq_data->dev, "RX wait elapsed\n");
goto out;
@@ -409,6 +429,9 @@ static u8 omap_w1_triplet(void *_hdq, u8 bdir)
(hdq_data->hdq_irqstatus
& OMAP_HDQ_INT_STATUS_TXCOMPLETE),
OMAP_HDQ_TIMEOUT);
+ /* Must clear irqstatus for another TXCOMPLETE interrupt */
+ hdq_reset_irqstatus(hdq_data, OMAP_HDQ_INT_STATUS_TXCOMPLETE);
+
if (err == 0) {
dev_dbg(hdq_data->dev, "TX wait elapsed\n");
goto out;
@@ -418,7 +441,6 @@ static u8 omap_w1_triplet(void *_hdq, u8 bdir)
OMAP_HDQ_CTRL_STATUS_SINGLE);
out:
- hdq_reset_irqstatus(hdq_data);
mutex_unlock(&hdq_data->hdq_mutex);
rtn:
pm_runtime_mark_last_busy(hdq_data->dev);
--
2.26.2