Linux 5.15.58
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.58 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/sysctl/vm.rst | 2 Makefile | 2 arch/alpha/kernel/srmcons.c | 2 arch/riscv/Makefile | 1 arch/um/drivers/virtio_uml.c | 81 +- arch/x86/entry/entry_32.S | 35 arch/x86/include/asm/asm.h | 85 +- arch/x86/include/asm/cpufeatures.h | 1 arch/x86/include/asm/extable.h | 44 - arch/x86/include/asm/extable_fixup_types.h | 58 + arch/x86/include/asm/fpu/internal.h | 4 arch/x86/include/asm/futex.h | 28 arch/x86/include/asm/insn-eval.h | 2 arch/x86/include/asm/mshyperv.h | 7 arch/x86/include/asm/msr.h | 30 arch/x86/include/asm/nospec-branch.h | 2 arch/x86/include/asm/segment.h | 2 arch/x86/include/asm/uaccess.h | 142 +++ arch/x86/kernel/alternative.c | 4 arch/x86/kernel/cpu/bugs.c | 14 arch/x86/kernel/cpu/mce/core.c | 40 - arch/x86/kernel/cpu/mce/internal.h | 10 arch/x86/kernel/cpu/mce/severity.c | 23 arch/x86/kvm/x86.c | 35 arch/x86/lib/insn-eval.c | 71 + arch/x86/mm/extable.c | 193 ++--- arch/x86/net/bpf_jit_comp.c | 11 drivers/accessibility/speakup/spk_ttyio.c | 4 drivers/bus/mhi/pci_generic.c | 79 ++ drivers/crypto/qat/qat_4xxx/adf_drv.c | 7 drivers/crypto/qat/qat_common/Makefile | 1 drivers/crypto/qat/qat_common/adf_transport.c | 11 drivers/crypto/qat/qat_common/adf_transport.h | 1 drivers/crypto/qat/qat_common/adf_transport_internal.h | 1 drivers/crypto/qat/qat_common/qat_algs.c | 138 ++- drivers/crypto/qat/qat_common/qat_algs_send.c | 86 ++ drivers/crypto/qat/qat_common/qat_algs_send.h | 11 drivers/crypto/qat/qat_common/qat_asym_algs.c | 304 ++++---- drivers/crypto/qat/qat_common/qat_crypto.c | 10 drivers/crypto/qat/qat_common/qat_crypto.h | 39 + drivers/gpio/gpio-pca953x.c | 22 drivers/gpio/gpio-xilinx.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 446 ++++++++++-- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 97 ++ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 17 drivers/gpu/drm/amd/display/dc/core/dc.c | 24 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 89 +- drivers/gpu/drm/amd/display/dc/dc_link.h | 9 drivers/gpu/drm/drm_gem_ttm_helper.c | 9 drivers/gpu/drm/imx/dcss/dcss-dev.c | 3 drivers/i2c/busses/i2c-cadence.c | 30 drivers/i2c/busses/i2c-mlxcpld.c | 2 drivers/infiniband/hw/irdma/cm.c | 50 - drivers/infiniband/hw/irdma/i40iw_hw.c | 1 drivers/infiniband/hw/irdma/icrdma_hw.c | 1 drivers/infiniband/hw/irdma/irdma.h | 1 drivers/infiniband/hw/irdma/verbs.c | 4 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 28 drivers/net/dsa/microchip/ksz_common.c | 5 drivers/net/dsa/sja1105/sja1105_main.c | 16 drivers/net/dsa/vitesse-vsc73xx-spi.c | 10 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c | 8 drivers/net/ethernet/emulex/benet/be_cmds.c | 10 drivers/net/ethernet/emulex/benet/be_cmds.h | 2 drivers/net/ethernet/emulex/benet/be_ethtool.c | 31 drivers/net/ethernet/intel/e1000e/hw.h | 1 drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 drivers/net/ethernet/intel/e1000e/ich8lan.h | 1 drivers/net/ethernet/intel/e1000e/netdev.c | 30 drivers/net/ethernet/intel/i40e/i40e_main.c | 13 drivers/net/ethernet/intel/iavf/iavf_txrx.c | 5 drivers/net/ethernet/intel/igc/igc_main.c | 3 drivers/net/ethernet/intel/igc/igc_regs.h | 5 drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 6 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 9 drivers/net/ethernet/netronome/nfp/flower/action.c | 2 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 3 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 22 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 drivers/net/tun.c | 5 drivers/net/usb/ax88179_178a.c | 20 drivers/net/usb/r8152.c | 16 drivers/net/wireless/intel/iwlwifi/fw/uefi.h | 5 drivers/net/wireless/mediatek/mt76/mac80211.c | 2 drivers/net/wireless/mediatek/mt76/mt76.h | 2 drivers/net/wireless/mediatek/mt76/mt7603/main.c | 2 drivers/net/wireless/mediatek/mt76/mt7615/main.c | 2 drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 4 drivers/net/wireless/mediatek/mt76/mt7915/main.c | 2 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 2 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 30 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h | 1 drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 30 drivers/net/wireless/mediatek/mt76/mt7921/regs.h | 22 drivers/net/wireless/mediatek/mt76/tx.c | 9 drivers/nvme/host/core.c | 19 drivers/pci/controller/pci-hyperv.c | 106 ++ drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 97 +- drivers/pinctrl/ralink/Kconfig | 16 drivers/pinctrl/ralink/Makefile | 2 drivers/pinctrl/ralink/pinctrl-mt7620.c | 252 +++--- drivers/pinctrl/ralink/pinctrl-mt7621.c | 30 drivers/pinctrl/ralink/pinctrl-ralink.c | 351 +++++++++ drivers/pinctrl/ralink/pinctrl-ralink.h | 53 + drivers/pinctrl/ralink/pinctrl-rt2880.c | 349 --------- drivers/pinctrl/ralink/pinctrl-rt288x.c | 20 drivers/pinctrl/ralink/pinctrl-rt305x.c | 44 - drivers/pinctrl/ralink/pinctrl-rt3883.c | 28 drivers/pinctrl/ralink/pinmux.h | 53 - drivers/pinctrl/stm32/pinctrl-stm32.c | 18 drivers/power/reset/arm-versatile-reboot.c | 1 drivers/s390/char/keyboard.h | 4 drivers/scsi/megaraid/megaraid_sas_base.c | 3 drivers/scsi/ufs/ufshcd.c | 2 drivers/spi/spi-bcm2835.c | 12 drivers/tty/goldfish.c | 2 drivers/tty/moxa.c | 4 drivers/tty/pty.c | 14 drivers/tty/serial/lpc32xx_hs.c | 2 drivers/tty/serial/mvebu-uart.c | 25 drivers/tty/tty.h | 3 drivers/tty/tty_buffer.c | 66 + drivers/tty/vt/keyboard.c | 6 drivers/tty/vt/vt.c | 2 drivers/usb/host/xhci-dbgcap.c | 135 +-- drivers/usb/host/xhci-dbgcap.h | 13 drivers/usb/host/xhci-dbgtty.c | 22 drivers/usb/host/xhci.c | 6 fs/dlm/lock.c | 3 fs/exfat/namei.c | 31 fs/proc/proc_sysctl.c | 2 fs/xfs/libxfs/xfs_ag.h | 36 fs/xfs/libxfs/xfs_btree_staging.c | 4 fs/xfs/xfs_ioctl.c | 2 fs/xfs/xfs_ioctl.h | 5 include/linux/bitfield.h | 19 include/linux/skbuff.h | 47 + include/linux/sysctl.h | 13 include/linux/tty_flip.h | 1 include/net/bluetooth/bluetooth.h | 65 + include/net/inet_hashtables.h | 2 include/net/inet_sock.h | 12 include/net/ip.h | 6 include/net/netns/ipv4.h | 1 include/net/route.h | 2 include/net/tcp.h | 18 include/net/udp.h | 2 include/trace/events/skb.h | 48 + kernel/bpf/core.c | 8 kernel/events/core.c | 45 - kernel/sched/deadline.c | 5 kernel/sysctl.c | 44 - kernel/trace/Makefile | 1 kernel/trace/ftrace.c | 6 kernel/trace/pid_list.c | 160 ++++ kernel/trace/pid_list.h | 13 kernel/trace/trace.c | 84 -- kernel/trace/trace.h | 14 kernel/trace/trace_events.c | 13 kernel/watch_queue.c | 53 - mm/mempolicy.c | 2 net/batman-adv/bridge_loop_avoidance.c | 2 net/bluetooth/rfcomm/core.c | 50 + net/bluetooth/rfcomm/sock.c | 46 - net/bluetooth/sco.c | 30 net/core/dev.c | 3 net/core/drop_monitor.c | 10 net/core/filter.c | 4 net/core/secure_seq.c | 4 net/core/skbuff.c | 12 net/core/sock_reuseport.c | 4 net/ipv4/af_inet.c | 4 net/ipv4/fib_semantics.c | 2 net/ipv4/icmp.c | 2 net/ipv4/igmp.c | 25 net/ipv4/inet_connection_sock.c | 5 net/ipv4/ip_forward.c | 2 net/ipv4/ip_input.c | 26 net/ipv4/ip_sockglue.c | 8 net/ipv4/netfilter/nf_reject_ipv4.c | 4 net/ipv4/proc.c | 2 net/ipv4/route.c | 10 net/ipv4/syncookies.c | 11 net/ipv4/sysctl_net_ipv4.c | 8 net/ipv4/tcp.c | 13 net/ipv4/tcp_fastopen.c | 9 net/ipv4/tcp_input.c | 53 - net/ipv4/tcp_ipv4.c | 77 +- net/ipv4/tcp_metrics.c | 3 net/ipv4/tcp_minisocks.c | 4 net/ipv4/tcp_output.c | 31 net/ipv4/tcp_recovery.c | 6 net/ipv4/tcp_timer.c | 30 net/ipv4/udp.c | 10 net/ipv6/af_inet6.c | 2 net/ipv6/syncookies.c | 3 net/netfilter/core.c | 3 net/netfilter/nf_synproxy_core.c | 2 net/sctp/protocol.c | 2 net/smc/smc_llc.c | 2 net/tls/tls_device.c | 8 net/xfrm/xfrm_policy.c | 5 net/xfrm/xfrm_state.c | 2 scripts/sorttable.c | 4 security/integrity/ima/ima_policy.c | 4 tools/perf/tests/perf-time-to-tsc.c | 18 tools/testing/selftests/kvm/rseq_test.c | 8 tools/testing/selftests/vm/mremap_test.c | 53 - virt/kvm/kvm_main.c | 5 212 files changed, 3729 insertions(+), 2245 deletions(-)
Adrian Hunter (1):
perf tests: Fix Convert perf time to TSC test for hybrid
Alex Deucher (1):
drm/amdgpu/display: add quirk handling for stutter mode
Alexander Aring (1):
dlm: fix pending remove if msg allocation fails
Alexey Kardashevskiy (1):
KVM: Don't null dereference ops->destroy
Andy Shevchenko (3):
pinctrl: armada-37xx: Use temporary variable for struct device
pinctrl: armada-37xx: Make use of the devm_platform_ioremap_resource()
pinctrl: armada-37xx: Convert to use dev_err_probe()
Arınç ÜNAL (2):
pinctrl: ralink: rename MT7628(an) functions to MT76X8
pinctrl: ralink: rename pinctrl-rt2880 to pinctrl-ralink
Ben Dooks (1):
riscv: add as-options for modules with assembly compontents
Biao Huang (2):
net: stmmac: fix pm runtime issue in stmmac_dvr_remove()
net: stmmac: fix unbalanced ptp clock issue in suspend/resume flow
Bjorn Andersson (1):
scsi: ufs: core: Drop loglevel of WriteBoost message
Brian Foster (4):
xfs: fold perag loop iteration logic into helper function
xfs: rename the next_agno perag iteration variable
xfs: terminate perag iteration reliably on agcount
xfs: fix perag reference leak on iteration race with growfs
Christian König (1):
drm/ttm: fix locking in vmap/vunmap TTM GEM helpers
Christoph Hellwig (1):
nvme: check for duplicate identifiers earlier
Christophe JAILLET (1):
mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
Dan Carpenter (2):
xfs: prevent a WARN_ONCE() in xfs_ioc_attr_list() drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq()
Daniele Palmas (2):
bus: mhi: host: pci_generic: add Telit FN980 v1 hardware revision
bus: mhi: host: pci_generic: add Telit FN990
Dario Binacchi (1):
mtd: rawnand: gpmi: validate controller clock rate
Darrick J. Wong (1):
xfs: fix maxlevels comparisons in the btree staging code
Dawid Lukwinski (1):
i40e: Fix erroneous adapter reinitialization during recovery process
Dongli Zhang (1):
net: tun: split run_ebpf_filter() and pskb_trim() into different "if statement"
Eric Dumazet (3):
ipv4/tcp: do not use per netns ctl sockets
tcp: sk->sk_bound_dev_if once in inet_request_bound_dev_if()
bpf: Make sure mac_header was set before using it
Eric Snowberg (1):
lockdown: Fix kexec lockdown bypass with ima policy
Fabien Dessenne (1):
pinctrl: stm32: fix optional IRQ support to gpios
Fangzhi Zuo (1):
drm/amd/display: Ignore First MST Sideband Message Return Error
Felix Fietkau (1):
mt76: fix use-after-free by removing a non-RCU wcid pointer
Gavin Shan (1):
KVM: selftests: Fix target thread to be migrated in rseq_test
Giovanni Cabiddu (10):
crypto: qat - set to zero DH parameters before free
crypto: qat - use pre-allocated buffers in datapath
crypto: qat - refactor submission logic
crypto: qat - add backlog mechanism
crypto: qat - fix memory leak in RSA
crypto: qat - remove dma_free_coherent() for RSA
crypto: qat - remove dma_free_coherent() for DH
crypto: qat - add param check for RSA
crypto: qat - add param check for DH
crypto: qat - re-enable registration of algorithms
Greg Kroah-Hartman (1):
Linux 5.15.58
Haibo Chen (3):
gpio: pca953x: only use single read/write for No AI mode
gpio: pca953x: use the correct range when do regmap sync
gpio: pca953x: use the correct register address when regcache sync during init
Hangyu Hua (1):
xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup()
Hayden Goodfellow (1):
drm/amd/display: Fix wrong format specifier in amdgpu_dm.c
Hayes Wang (1):
r8152: fix a WOL issue
Hristo Venev (1):
be2net: Fix buffer overflow in be_get_module_eeprom
Ido Schimmel (1):
mlxsw: spectrum_router: Fix IPv4 nexthop gateway indication
Israel Rukshin (1):
nvme: fix block device naming collision
Jan Beulich (1):
x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm()
Jeffrey Hugo (4):
PCI: hv: Fix multi-MSI to allow more than one MSI vector
PCI: hv: Fix hv_arch_irq_unmask() for multi-MSI
PCI: hv: Reuse existing IRTE allocation in compose_msi_msg()
PCI: hv: Fix interrupt mapping for multi-MSI
Jiri Slaby (5):
tty: drivers/tty/, stop using tty_schedule_flip()
tty: the rest, stop using tty_schedule_flip()
tty: drop tty_schedule_flip()
tty: extract tty_flip_buffer_commit() from tty_flip_buffer_push()
tty: use new tty_insert_flip_string_and_push_buffer() in pty_write()
Johannes Berg (2):
iwlwifi: fw: uefi: add missing include guards
um: virtio_uml: Fix broken device handling in time-travel
Jose Alonso (1):
net: usb: ax88179_178a needs FLAG_SEND_ZLP
José Expósito (1):
drm/amd/display: invalid parameter check in dmub_hpd_callback
Jude Shih (1):
drm/amd/display: Support for DMUB HPD interrupt handling
Junxiao Chang (1):
net: stmmac: fix dma queue left shift overflow issue
Juri Lelli (1):
sched/deadline: Fix BUG_ON condition for deboosted tasks
Kees Cook (1):
x86/alternative: Report missing return thunk details
Kishon Vijay Abraham I (1):
xhci: Set HCD flag to defer primary roothub registration
Kuniyuki Iwashima (45):
ip: Fix data-races around sysctl_ip_default_ttl.
tcp: Fix data-races around sysctl_tcp_ecn.
ip: Fix data-races around sysctl_ip_no_pmtu_disc.
ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
ip: Fix data-races around sysctl_ip_fwd_update_priority.
ip: Fix data-races around sysctl_ip_nonlocal_bind.
ip: Fix a data-race around sysctl_ip_autobind_reuse.
ip: Fix a data-race around sysctl_fwmark_reflect. tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept.
tcp: Fix data-races around sysctl_tcp_l3mdev_accept.
tcp: Fix data-races around sysctl_tcp_mtu_probing.
tcp: Fix data-races around sysctl_tcp_base_mss.
tcp: Fix data-races around sysctl_tcp_min_snd_mss.
tcp: Fix a data-race around sysctl_tcp_mtu_probe_floor.
tcp: Fix a data-race around sysctl_tcp_probe_threshold.
tcp: Fix a data-race around sysctl_tcp_probe_interval.
igmp: Fix data-races around sysctl_igmp_llm_reports.
igmp: Fix a data-race around sysctl_igmp_max_memberships.
igmp: Fix data-races around sysctl_igmp_max_msf.
tcp: Fix data-races around keepalive sysctl knobs.
tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries.
tcp: Fix data-races around sysctl_tcp_syncookies.
tcp: Fix data-races around sysctl_tcp_migrate_req.
tcp: Fix data-races around sysctl_tcp_reordering.
tcp: Fix data-races around some timeout sysctl knobs.
tcp: Fix a data-race around sysctl_tcp_notsent_lowat.
tcp: Fix a data-race around sysctl_tcp_tw_reuse.
tcp: Fix data-races around sysctl_max_syn_backlog.
tcp: Fix data-races around sysctl_tcp_fastopen.
tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout.
ipv4: Fix a data-race around sysctl_fib_multipath_use_neigh.
ipv4: Fix data-races around sysctl_fib_multipath_hash_policy.
ipv4: Fix data-races around sysctl_fib_multipath_hash_fields.
ip: Fix data-races around sysctl_ip_prot_sock.
udp: Fix a data-race around sysctl_udp_l3mdev_accept.
tcp: Fix data-races around sysctl knobs related to SYN option.
tcp: Fix a data-race around sysctl_tcp_early_retrans.
tcp: Fix data-races around sysctl_tcp_recovery.
tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts.
tcp: Fix data-races around sysctl_tcp_slow_start_after_idle.
tcp: Fix a data-race around sysctl_tcp_retrans_collapse.
tcp: Fix a data-race around sysctl_tcp_stdurg.
tcp: Fix a data-race around sysctl_tcp_rfc1337.
tcp: Fix a data-race around sysctl_tcp_abort_on_overflow.
tcp: Fix data-races around sysctl_tcp_max_reordering.
Lennert Buytenhek (1):
igc: Reinstate IGC_REMOVED logic and implement it properly
Liang He (2):
net: dsa: microchip: ksz_common: Fix refcount leak bug drm/imx/dcss: Add missing of_node_put() in fail path
Linus Torvalds (2):
watchqueue: make sure to serialize 'wqueue->defunct' properly
watch-queue: remove spurious double semicolon
Luiz Augusto von Dentz (7):
Bluetooth: Add bt_skb_sendmsg helper
Bluetooth: Add bt_skb_sendmmsg helper
Bluetooth: SCO: Replace use of memcpy_from_msg with bt_skb_sendmsg
Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg
Bluetooth: Fix passing NULL to PTR_ERR
Bluetooth: SCO: Fix sco_send_frame returning skb->len
Bluetooth: Fix bt_skb_sendmmsg not allocating partial chunks
Marc Kleine-Budde (1):
spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA transfers
Mathias Nyman (3):
xhci: dbc: refactor xhci_dbc_init()
xhci: dbc: create and remove dbc structure in dbgtty driver.
xhci: dbc: Rename xhci_dbc_init and xhci_dbc_exit
Maxim Levitsky (1):
KVM: x86: fix typo in __try_cmpxchg_user causing non-atomicness
Menglong Dong (8):
net: skb: introduce kfree_skb_reason()
net: skb: use kfree_skb_reason() in tcp_v4_rcv()
net: skb: use kfree_skb_reason() in __udp4_lib_rcv()
net: socket: rename SKB_DROP_REASON_SOCKET_FILTER
net: skb_drop_reason: add document for drop reasons
net: netfilter: use kfree_drop_reason() for NF_DROP
net: ipv4: use kfree_skb_reason() in ip_rcv_core()
net: ipv4: use kfree_skb_reason() in ip_rcv_finish_core()
Miaoqian Lin (1):
power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe
Ming Lei (1):
scsi: megaraid: Clear READ queue map's nr_queues
Mustafa Ismail (2):
RDMA/irdma: Do not advertise 1GB page size for x722 RDMA/irdma: Fix sleep from invalid context BUG
Nicholas Kazlauskas (4):
drm/amd/display: Reset DMCUB before HW init drm/amd/display: Optimize bandwidth on following fast update drm/amd/display: Fix surface optimization regression on Carrizo drm/amd/display: Don't lock connection_mutex for DMUB HPD
Nick Desaulniers (1):
x86/extable: Prefer local labels in .set directives
Oleksandr Tymoshenko (2):
Revert "selftest/vm: verify remap destination address in mremap_test" Revert "selftest/vm: verify mmap addr in mremap_test"
Oleksij Rempel (2):
net: dsa: sja1105: silent spi_device_id warnings
net: dsa: vitesse-vsc73xx: silent spi_device_id warnings
Pali Rohár (1):
serial: mvebu-uart: correctly report configured baudrate value
Pawan Gupta (1):
x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts
Peter Zijlstra (9):
perf/core: Fix data race between perf_event_set_output() and perf_mmap_close() x86/uaccess: Implement macros for CMPXCHG on user addresses bitfield.h: Fix "type of reg too small for mask" test x86/entry_32: Remove .fixup usage
x86/extable: Extend extable functionality
x86/msr: Remove .fixup usage
x86/futex: Remove .fixup usage
x86/amd: Use IBPB for firmware calls
x86/entry_32: Fix segment exceptions
Piotr Skajewski (1):
ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero
Przemyslaw Patynowski (1):
iavf: Fix handling of dummy receive descriptors
Robert Hancock (1):
i2c: cadence: Change large transfer count reset logic to be unconditional
Sascha Hauer (1):
mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times
Sasha Neftin (2):
e1000e: Enable GPT clock before sending message to CSME Revert "e1000e: Fix possible HW unit hang after an s0ix exit"
Sean Christopherson (1):
KVM: x86: Use __try_cmpxchg_user() to emulate atomic accesses
Sean Wang (4):
Revert "mt76: mt7921: Fix the error handling path of mt7921_pci_probe()" Revert "mt76: mt7921e: fix possible probe failure after reboot"
mt76: mt7921: use physical addr to unify register access
mt76: mt7921e: fix possible probe failure after reboot
Sebastian Andrzej Siewior (1):
batman-adv: Use netif_rx_any_context() any.
Srinivas Neeli (1):
gpio: gpio-xilinx: Fix integer overflow
Steven Rostedt (Google) (1):
tracing: Have event format check not flag %p* on __get_dynamic_array()
Steven Rostedt (VMware) (1):
tracing: Place trace_pid_list logic into abstract functions
Sungjong Seo (1):
exfat: use updated exfat_chain directly during renaming
Suren Baghdasaryan (1):
mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30%
Tariq Toukan (1):
net/tls: Fix race in TLS device down flow
Thomas Gleixner (5):
x86/extable: Tidy up redundant handler functions x86/extable: Get rid of redundant macros
x86/mce: Deduplicate exception handling
x86/extable: Rework the exception table mechanics x86/extable: Provide EX_TYPE_DEFAULT_MCE_SAFE and EX_TYPE_FAULT_MCE_SAFE
Vadim Pasternak (1):
i2c: mlxcpld: Fix register setting for 400KHz frequency
Vincent Whitchurch (1):
um: virtio_uml: Allow probing from devicetree
Vladimir Oltean (1):
pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait context
Wang Cheng (1):
mm/mempolicy: fix uninit-value in mpol_rebind_policy()
Wayne Lin (2):
drm/amd/display: Add option to defer works of hpd_rx_irq drm/amd/display: Fork thread to offload work of hpd_rx_irq
William Dean (1):
pinctrl: ralink: Check for null return of devm_kcalloc
Wong Vee Khee (1):
net: stmmac: remove redunctant disable xPCS EEE call
Wonhyuk Yang (1):
tracing: Fix return value of trace_pid_write()
Xiaoming Ni (1):
sysctl: move some boundary constants from sysctl.c to sysctl_vals
Yuezhang Mo (1):
exfat: fix referencing wrong parent directory information after renaming
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/sysctl/vm.rst +1 -1
@@ -948,7 +948,7 @@ how much memory needs to be free before kswapd goes back to sleep. The unit is in fractions of 10,000. The default value of 10 means the distances between watermarks are 0.1% of the available memory in the -node/system. The maximum value is 1000, or 10% of memory. +node/system. The maximum value is 3000, or 30% of memory. A high rate of threads entering direct reclaim (allocstall) or kswapd going to sleep prematurely (kswapd_low_wmark_hit_quickly) can indicate
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 57 +SUBLEVEL = 58 EXTRAVERSION = NAME = Trick or Treat
arch/alpha/kernel/srmcons.c +1 -1
@@ -59,7 +59,7 @@ srmcons_do_receive_chars(struct tty_port *port) }while ((result.bits.status &1 ) && (++loops <10 ));if (count) -tty_schedule_flip (port); +tty_flip_buffer_push (port);return count; }
arch/riscv/Makefile +1 -0
@@ -75,6 +75,7 @@ ifeq ($(CONFIG_PERF_EVENTS),y) endif KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) +KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax) # GCC versions that support the "-mstrict-align" option default to allowing # unaligned accesses. While unaligned accesses are explicitly allowed in the
arch/um/drivers/virtio_uml.c +69 -12
149 lines not on this page · raw message
arch/x86/entry/entry_32.S +14 -21
@@ -268,19 +268,16 @@ 1: popl %ds 2: popl %es 3: popl %fs - addl $(4 + \pop), %esp /* pop the unused "gs" slot */ +4: addl $(4 + \pop), %esp /* pop the unused "gs" slot */ IRET_FRAME -.pushsection .fixup, "ax" -4: movl $0, (%esp) - jmp 1b -5: movl $0, (%esp) - jmp 2b -6: movl $0, (%esp) - jmp 3b -.popsection - _ASM_EXTABLE(1b, 4b) - _ASM_EXTABLE(2b, 5b) - _ASM_EXTABLE(3b, 6b) + + /* + * There is no _ASM_EXTABLE_TYPE_REG() for ASM, however since this is + * ASM the registers are known and we can trivially hard-code them. + */ + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_POP_ZERO|EX_REG_DS) + _ASM_EXTABLE_TYPE(2b, 3b, EX_TYPE_POP_ZERO|EX_REG_ES) + _ASM_EXTABLE_TYPE(3b, 4b, EX_TYPE_POP_ZERO|EX_REG_FS) .endm .macro RESTORE_ALL_NMI cr3_reg:req pop=0
@@ -923,10 +920,8 @@ SYM_FUNC_START(entry_SYSENTER_32) sti sysexit -.pushsection .fixup, "ax" -2: movl $0, PT_FS(%esp) - jmp 1b -.popsection +2: movl $0, PT_FS(%esp) + jmp 1b _ASM_EXTABLE(1b, 2b) .Lsysenter_fix_flags:
@@ -994,8 +989,7 @@ restore_all_switch_stack: */ iret -.section .fixup, "ax" -SYM_CODE_START(asm_iret_error) +.Lasm_iret_error: pushl $0 # no error code pushl $iret_error
@@ -1012,9 +1006,8 @@ SYM_CODE_START(asm_iret_error) #endif jmp handle_exception -SYM_CODE_END(asm_iret_error) -.previous - _ASM_EXTABLE(.Lirq_return, asm_iret_error) + + _ASM_EXTABLE(.Lirq_return, .Lasm_iret_error) SYM_FUNC_END(entry_INT80_32) .macro FIXUP_ESPFIX_STACK
arch/x86/include/asm/asm.h +56 -29
116 lines not on this page · raw message
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -300,6 +300,7 @@#define X86_FEATURE_RETPOLINE_LFENCE (11*32+13)/* "" Use LFENCE for Spectre variant 2 */ #define X86_FEATURE_RETHUNK (11*32+14)/* "" Use REturn THUNK */ #define X86_FEATURE_UNRET (11*32+15)/* "" AMD BTB untrain return */ +#define X86_FEATURE_USE_IBPB_FW (11*32+16)/* "" Use IBPB during runtime firmware calls */ /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */
arch/x86/include/asm/extable.h +28 -16
68 lines not on this page · raw message
arch/x86/include/asm/extable_fixup_types.h new file +58 -0
58 lines not on this page · raw message
arch/x86/include/asm/fpu/internal.h +2 -2
@@ -126,7 +126,7 @@ extern void save_fpregs_to_fpstate(struct fpu *fpu); #define kernel_insn(insn, output, input...) \ asm volatile("1:" #insn "\n\t" \ "2:\n" \ - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_fprestore) \ + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_FPU_RESTORE) \ : output : input)static inline int fnsave_to_user_sigframe (struct fregs_state __user *fx)
@@ -253,7 +253,7 @@ static inline void fxsave(struct fxregs_state *fx) XRSTORS, X86_FEATURE_XSAVES) \ "\n" \ "3:\n" \ -_ASM_EXTABLE_HANDLE(661b, 3b, ex_handler_fprestore)\ +_ASM_EXTABLE_TYPE(661b, 3b, EX_TYPE_FPU_RESTORE) \ : \ : " D " (st), " m" (*st), " a" (lmask), " d" (hmask) \ : "memory")
arch/x86/include/asm/futex.h +8 -20
@@ -17,13 +17,9 @@ do { \int oldval =0 , ret; \ asmvolatile ("1:\t" insn"\n" \"2:\n" \ -"\t.section .fixup,\"ax\"\n" \ -"3:\tmov\t%3, %1\n" \ -"\tjmp\t2b\n" \ -"\t.previous\n" \ - _ASM_EXTABLE_UA(1b, 3b) \ + _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_EFAULT_REG, %1) \ : "=r" (oldval), "=r" (ret), "+m" (*uaddr) \ - : "i" (-EFAULT), "0" (oparg), "1" (0)); \ + : "0" (oparg), "1" (0)); \if (ret) \ goto label; \ *oval = oldval; \
@@ -39,15 +35,11 @@ do { \"3:\t" LOCK_PREFIX "cmpxchgl %3, %2\n" \"\tjnz\t2b\n" \"4:\n" \ -"\t.section .fixup,\"ax\"\n" \ -"5:\tmov\t%5, %1\n" \ -"\tjmp\t4b\n" \ -"\t.previous\n" \ - _ASM_EXTABLE_UA(1b, 5b) \ -_ASM_EXTABLE_UA (3b ,5b ) \ + _ASM_EXTABLE_TYPE_REG(1b, 4b, EX_TYPE_EFAULT_REG, %1) \ + _ASM_EXTABLE_TYPE_REG(3b, 4b, EX_TYPE_EFAULT_REG, %1) \ : "=&a" (oldval), "=&r" (ret), \ "+m" (*uaddr), "=&r" (tem) \ - : "r" (oparg), "i" (-EFAULT), "1" (0)); \ + : "r" (oparg), "1" (0)); \if (ret) \ goto label; \ *oval = oldval; \
@@ -95,15 +87,11 @@ static inline int futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,if (!user_access_begin (uaddr,sizeof (u32)))return -EFAULT ; asmvolatile ("\n" -"1:\t" LOCK_PREFIX "cmpxchgl %4, %2\n" +"1:\t" LOCK_PREFIX "cmpxchgl %3, %2\n" "2:\n" -"\t.section .fixup, \"ax\"\n" -"3:\tmov %3, %0\n" -"\tjmp 2b\n" -"\t.previous\n" - _ASM_EXTABLE_UA(1b, 3b) + _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_EFAULT_REG, %0) \ : "+r" (ret), "=a" (oldval), "+m" (*uaddr) - : "i" (-EFAULT), "r" (newval), "1" (oldval) + : "r" (newval), "1" (oldval) : "memory" );user_access_end ();
arch/x86/include/asm/insn-eval.h +2 -0
@@ -15,6 +15,8 @@#define INSN_CODE_SEG_OPND_SZ (params) (params & 0xf)#define INSN_CODE_SEG_PARAMS (oper_sz, addr_sz) (oper_sz | (addr_sz << 4)) +int pt_regs_offset (struct pt_regs *regs,int regno); +bool insn_has_rep_prefix (struct insn *insn);void __user *insn_get_addr_ref (struct insn *insn,struct pt_regs *regs);int insn_get_modrm_rm_off (struct insn *insn,struct pt_regs *regs);
arch/x86/include/asm/mshyperv.h +0 -7
@@ -176,13 +176,6 @@ bool hv_vcpu_is_preempted(int vcpu);static inline void hv_apic_init (void ) {}#endif -static inline void hv_set_msi_entry_from_desc (union hv_msi_entry *msi_entry, -struct msi_desc *msi_desc) -{ - msi_entry->address.as_uint32 = msi_desc->msg.address_lo; - msi_entry->data.as_uint32 = msi_desc->msg.data; -} -struct irq_domain *hv_create_pci_msi_domain (void ); int hv_map_ioapic_interrupt(int ioapic_id, bool level, int vcpu, int vector,
arch/x86/include/asm/msr.h +10 -20
@@ -92,7 +92,7 @@ static __always_inline unsigned long long __rdmsr(unsigned int msr) asm volatile("1: rdmsr\n" "2:\n" - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_rdmsr_unsafe) + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR) : EAX_EDX_RET(val, low, high) : "c" (msr));return EAX_EDX_VAL (val, low, high);
@@ -102,7 +102,7 @@ static __always_inline void __wrmsr(unsigned int msr, u32 low, u32 high) { asm volatile("1: wrmsr\n" "2:\n" - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_unsafe) + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR) : : "c" (msr), "a"(low), "d" (high) : "memory"); }
@@ -137,17 +137,11 @@ static inline unsigned long long native_read_msr_safe(unsigned int msr, {DECLARE_ARGS (val, low, high); - asmvolatile ("2: rdmsr ; xor %[err],%[err]\n" -"1:\n\t" -".section .fixup,\"ax\"\n\t" -"3: mov %[fault],%[err]\n\t" -"xorl %%eax, %%eax\n\t" -"xorl %%edx, %%edx\n\t" -"jmp 1b\n\t" -".previous\n\t" - _ASM_EXTABLE(2b, 3b) + asmvolatile ("1: rdmsr ; xor %[err],%[err]\n" +"2:\n\t" + _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_RDMSR_SAFE, %[err]) : [err] "=r" (*err), EAX_EDX_RET(val, low, high) - : "c" (msr), [fault] "i" (-EIO)); + : "c" (msr)); if (tracepoint_enabled(read_msr))do_trace_read_msr (msr,EAX_EDX_VAL (val, low, high), *err);return EAX_EDX_VAL (val, low, high);
@@ -169,15 +163,11 @@ native_write_msr_safe(unsigned int msr, u32 low, u32 high) {int err; - asmvolatile ("2: wrmsr ; xor %[err],%[err]\n" -"1:\n\t" -".section .fixup,\"ax\"\n\t" -"3: mov %[fault],%[err] ; jmp 1b\n\t" -".previous\n\t" - _ASM_EXTABLE(2b, 3b) + asmvolatile ("1: wrmsr ; xor %[err],%[err]\n" +"2:\n\t" + _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_WRMSR_SAFE, %[err]) : [err] "=a" (err) - : "c" (msr), "0" (low), "d" (high), - [fault] "i" (-EIO) + : "c" (msr), "0" (low), "d" (high) : "memory"); if (tracepoint_enabled(write_msr))do_trace_write_msr (msr, ((u64 )high <<32 | low), err);
arch/x86/include/asm/nospec-branch.h +2 -0
@@ -298,6 +298,8 @@ do { \alternative_msr_write (MSR_IA32_SPEC_CTRL , \spec_ctrl_current () |SPEC_CTRL_IBRS , \X86_FEATURE_USE_IBRS_FW ); \ +alternative_msr_write (MSR_IA32_PRED_CMD ,PRED_CMD_IBPB , \ +X86_FEATURE_USE_IBPB_FW ); \ }while (0 ) #define firmware_restrict_branch_speculation_end() \
arch/x86/include/asm/segment.h +1 -1
@@ -339,7 +339,7 @@ static inline void __loadsegment_fs(unsigned short value) "1: movw %0, %%fs \n" "2: \n" - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_clear_fs) + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_CLEAR_FS) : : "rm" (value) : "memory"); }
arch/x86/include/asm/uaccess.h +142 -0
154 lines not on this page · raw message
arch/x86/kernel/alternative.c +3 -1
@@ -554,7 +554,9 @@ void __init_or_module noinline apply_returns(s32 *start, s32 *end) dest = addr + insn.length + insn.immediate.value;if (__static_call_fixup (addr, op, dest) || -WARN_ON_ONCE (dest != &__x86_return_thunk)) +WARN_ONCE (dest != &__x86_return_thunk, +"missing return thunk: %pS-%pS: %*ph" , + addr, dest,5 , addr))continue ; DPRINTK("return thunk at: %pS (%px) len: %d to: %pS",
arch/x86/kernel/cpu/bugs.c +13 -1
@@ -968,6 +968,7 @@ static inline const char *spectre_v2_module_string(void) { return ""; }#define SPECTRE_V2_LFENCE_MSG "WARNING: LFENCE mitigation is not recommended for this CPU, data leaks possible!\n"#define SPECTRE_V2_EIBRS_EBPF_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible via Spectre v2 BHB attacks!\n"#define SPECTRE_V2_EIBRS_LFENCE_EBPF_SMT_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS+LFENCE mitigation and SMT, data leaks possible via Spectre v2 BHB attacks!\n" +#define SPECTRE_V2_IBRS_PERF_MSG "WARNING: IBRS mitigation selected on Enhanced IBRS CPU, this may cause unnecessary performance loss\n"#ifdef CONFIG_BPF_SYSCALL void unpriv_ebpf_notify (int new_state)
@@ -1408,6 +1409,8 @@ static void __init spectre_v2_select_mitigation(void)case SPECTRE_V2_IBRS :setup_force_cpu_cap (X86_FEATURE_KERNEL_IBRS ); +if (boot_cpu_has (X86_FEATURE_IBRS_ENHANCED )) +pr_warn (SPECTRE_V2_IBRS_PERF_MSG );break ;case SPECTRE_V2_LFENCE :
@@ -1509,7 +1512,16 @@ static void __init spectre_v2_select_mitigation(void)* the CPU supports Enhanced IBRS, kernel might un-intentionally not * enable IBRS around firmware calls. */ -if (boot_cpu_has (X86_FEATURE_IBRS ) && !spectre_v2_in_ibrs_mode (mode)) { +if (boot_cpu_has_bug (X86_BUG_RETBLEED ) && + (boot_cpu_data.x86_vendor ==X86_VENDOR_AMD || + boot_cpu_data.x86_vendor ==X86_VENDOR_HYGON )) { + +if (retbleed_cmd !=RETBLEED_CMD_IBPB ) { +setup_force_cpu_cap (X86_FEATURE_USE_IBPB_FW ); +pr_info ("Enabling Speculation Barrier for firmware calls\n" ); + } + + }else if (boot_cpu_has (X86_FEATURE_IBRS ) && !spectre_v2_in_ibrs_mode (mode)) {setup_force_cpu_cap (X86_FEATURE_USE_IBRS_FW );pr_info ("Enabling Restricted Speculation for firmware calls\n" ); }
arch/x86/kernel/cpu/mce/core.c +11 -29
@@ -382,13 +382,16 @@ static int msr_to_offset(u32 msr)return -1 ; } -__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup, -struct pt_regs *regs,int trapnr, -unsigned long error_code, -unsigned long fault_addr) +void ex_handler_msr_mce (struct pt_regs *regs,bool wrmsr) { -pr_emerg ("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n" , - (unsigned int )regs->cx, regs->ip, (void *)regs->ip); +if (wrmsr) { +pr_emerg ("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n" , + (unsigned int )regs->cx, (unsigned int )regs->dx, (unsigned int )regs->ax, + regs->ip, (void *)regs->ip); + }else { +pr_emerg ("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n" , + (unsigned int )regs->cx, regs->ip, (void *)regs->ip); + }show_stack_regs (regs);
@@ -396,8 +399,6 @@ __visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,while (true)cpu_relax (); - -return true; }/* MSR access wrappers used for error injection */
@@ -429,32 +430,13 @@ static noinstr u64 mce_rdmsrl(u32 msr)*/ asm volatile("1: rdmsr\n" "2:\n" - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_rdmsr_fault) + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR_IN_MCE) : EAX_EDX_RET(val, low, high) : "c" (msr));return EAX_EDX_VAL (val, low, high); } -__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup, -struct pt_regs *regs,int trapnr, -unsigned long error_code, -unsigned long fault_addr) -{ -pr_emerg ("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n" , - (unsigned int )regs->cx, (unsigned int )regs->dx, (unsigned int )regs->ax, - regs->ip, (void *)regs->ip); - -show_stack_regs (regs); - -panic ("MCA architectural violation!\n" ); - -while (true) -cpu_relax (); - -return true; -} - static noinstr void mce_wrmsrl(u32 msr, u64 v) {u32 low, high;
@@ -479,7 +461,7 @@ static noinstr void mce_wrmsrl(u32 msr, u64 v)/* See comment in mce_rdmsrl() */ asm volatile("1: wrmsr\n" "2:\n" - _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_fault) + _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR_IN_MCE) : : "c" (msr), "a"(low), "d" (high) : "memory"); }
arch/x86/kernel/cpu/mce/internal.h +0 -10
@@ -186,14 +186,4 @@ extern bool amd_filter_mce(struct mce *m);static inline bool amd_filter_mce (struct mce *m) {return false; };#endif -__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup, -struct pt_regs *regs,int trapnr, -unsigned long error_code, -unsigned long fault_addr); - -__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup, -struct pt_regs *regs,int trapnr, -unsigned long error_code, -unsigned long fault_addr); -#endif /* __X86_MCE_INTERNAL_H__ */
arch/x86/kernel/cpu/mce/severity.c +12 -11
@@ -265,25 +265,26 @@ static bool is_copy_from_user(struct pt_regs *regs)*/ static int error_context (struct mce *m,struct pt_regs *regs) { -enum handler_type t; -if ((m->cs &3 ) ==3 )return IN_USER ;if (!mc_recoverable (m->mcgstatus))return IN_KERNEL ; - t =ex_get_fault_handler_type (m->ip); -if (t ==EX_HANDLER_FAULT ) { - m->kflags |=MCE_IN_KERNEL_RECOV ; -return IN_KERNEL_RECOV ; - } -if (t ==EX_HANDLER_UACCESS && regs &&is_copy_from_user (regs)) { - m->kflags |=MCE_IN_KERNEL_RECOV ; +switch (ex_get_fixup_type (m->ip)) { +case EX_TYPE_UACCESS : +case EX_TYPE_COPY : +if (!regs || !is_copy_from_user (regs)) +return IN_KERNEL ; m->kflags |=MCE_IN_KERNEL_COPYIN ; + fallthrough; +case EX_TYPE_FAULT : +case EX_TYPE_FAULT_MCE_SAFE : +case EX_TYPE_DEFAULT_MCE_SAFE : + m->kflags |=MCE_IN_KERNEL_RECOV ;return IN_KERNEL_RECOV ; +default : +return IN_KERNEL ; } - -return IN_KERNEL ; }static int mce_severity_amd_smca (struct mce *m,enum context err_ctx)
arch/x86/kvm/x86.c +14 -21
@@ -6894,15 +6894,8 @@ static int emulator_write_emulated(struct x86_emulate_ctxt *ctxt, exception, &write_emultor); } -#define CMPXCHG_TYPE (t, ptr, old, new) \ - (cmpxchg((t *)(ptr), *(t *)(old), *(t *)(new)) == *(t *)(old)) - -#ifdef CONFIG_X86_64 -# define CMPXCHG64 (ptr, old, new) CMPXCHG_TYPE(u64, ptr, old, new) -#else -# define CMPXCHG64 (ptr, old, new) \ - (cmpxchg64((u64 *)(ptr), *(u64 *)(old), *(u64 *)(new)) == *(u64 *)(old)) -#endif +#define emulator_try_cmpxchg_user (t, ptr, old, new) \ + (__try_cmpxchg_user((t __user *)(ptr), (t *)(old), *(t *)(new), efault ## t)) static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, unsigned long addr,
@@ -6911,12 +6904,11 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,unsigned int bytes, struct x86_exception *exception) { - struct kvm_host_map map; struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);u64 page_line_mask; +unsigned long hva;gpa_t gpa; -char *kaddr; -bool exchanged; +int r;/* guests cmpxchg8b have to be emulated atomically */ if (bytes >8 || (bytes & (bytes -1 )))
@@ -6940,31 +6932,32 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,if (((gpa + bytes -1 ) & page_line_mask) != (gpa & page_line_mask)) goto emul_write; -if (kvm_vcpu_map (vcpu,gpa_to_gfn (gpa), &map)) + hva =kvm_vcpu_gfn_to_hva (vcpu,gpa_to_gfn (gpa)); +if (kvm_is_error_hva (hva)) goto emul_write; - kaddr = map.hva +offset_in_page (gpa); + hva +=offset_in_page (gpa);switch (bytes) {case 1 : - exchanged =CMPXCHG_TYPE (u8, kaddr, old, new); + r =emulator_try_cmpxchg_user (u8, hva, old, new);break ;case 2 : - exchanged =CMPXCHG_TYPE (u16, kaddr, old, new); + r =emulator_try_cmpxchg_user (u16, hva, old, new);break ;case 4 : - exchanged =CMPXCHG_TYPE (u32, kaddr, old, new); + r =emulator_try_cmpxchg_user (u32, hva, old, new);break ;case 8 : - exchanged =CMPXCHG64 (kaddr, old, new); + r =emulator_try_cmpxchg_user (u64, hva, old, new);break ;default :BUG (); } -kvm_vcpu_unmap (vcpu, &map, true); - -if (!exchanged) +if (r <0 ) + goto emul_write; +if (r)return X86EMUL_CMPXCHG_FAILED ;kvm_page_track_write (vcpu, gpa, new, bytes);
arch/x86/lib/insn-eval.c +47 -24
86 lines not on this page · raw message
arch/x86/mm/extable.c +105 -88
269 lines not on this page · raw message
arch/x86/net/bpf_jit_comp.c +2 -9
@@ -832,9 +832,7 @@ static int emit_atomic(u8 **pprog, u8 atomic_op,return 0 ; } -static bool ex_handler_bpf (const struct exception_table_entry *x, -struct pt_regs *regs,int trapnr, -unsigned long error_code,unsigned long fault_addr) +bool ex_handler_bpf (const struct exception_table_entry *x,struct pt_regs *regs) {u32 reg = x->fixup >>8 ;
@@ -1344,12 +1342,7 @@ st: if (is_imm8(insn->off)) } ex->insn = delta; - delta = (u8 *)ex_handler_bpf - (u8 *)&ex->handler; -if (!is_simm32 (delta)) { -pr_err ("extable->handler doesn't fit into 32-bit\n" ); -return -EFAULT ; - } - ex->handler = delta; + ex->data =EX_TYPE_BPF ;if (dst_reg >BPF_REG_9 ) {pr_err ("verifier error\n" );
drivers/accessibility/speakup/spk_ttyio.c +2 -2
@@ -88,7 +88,7 @@ static int spk_ttyio_receive_buf2(struct tty_struct *tty, }if (!ldisc_data->buf_free) -/* ttyio_in will tty_schedule_flip */ +/* ttyio_in will tty_flip_buffer_push */ return 0 ;/* Make sure the consumer has read buf before we have seen
@@ -312,7 +312,7 @@ static unsigned char ttyio_in(struct spk_synth *in_synth, int timeout)mb (); ldisc_data->buf_free = true;/* Let TTY push more characters */ -tty_schedule_flip (tty->port); +tty_flip_buffer_push (tty->port);return rv; }
drivers/bus/mhi/pci_generic.c +79 -0
90 lines not on this page · raw message
drivers/crypto/qat/qat_4xxx/adf_drv.c +0 -7
@@ -52,13 +52,6 @@ static int adf_crypto_dev_config(struct adf_accel_dev *accel_dev)if (ret) goto err; -/* Temporarily set the number of crypto instances to zero to avoid -* registering the crypto algorithms. -* This will be removed when the algorithms will support the -* CRYPTO_TFM_REQ_MAY_BACKLOG flag -*/ - instances =0 ; -for (i =0 ; i < instances; i++) { val = i; bank = i *2 ;
drivers/crypto/qat/qat_common/Makefile +1 -0
@@ -15,6 +15,7 @@ intel_qat-objs := adf_cfg.o \ qat_crypto.o \ qat_algs.o \ qat_asym_algs.o \ + qat_algs_send.o \ qat_uclo.o \ qat_hal.o
drivers/crypto/qat/qat_common/adf_transport.c +11 -0
@@ -8,6 +8,9 @@#include "adf_cfg.h" #include "adf_common_drv.h" +#define ADF_MAX_RING_THRESHOLD 80 +#define ADF_PERCENT (tot, percent) (((tot) * (percent)) / 100) +static inline u32 adf_modulo (u32 data,u32 shift) {u32 div = data >> shift;
@@ -77,6 +80,11 @@ static void adf_disable_ring_irq(struct adf_etr_bank_data *bank, u32 ring) bank->irq_mask); } +bool adf_ring_nearly_full (struct adf_etr_ring_data *ring) +{ +return atomic_read (ring->inflights) > ring->threshold; +} +int adf_send_message (struct adf_etr_ring_data *ring,u32 *msg) {struct adf_hw_csr_ops *csr_ops =GET_CSR_OPS (ring->bank->accel_dev);
@@ -217,6 +225,7 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section,struct adf_etr_bank_data *bank;struct adf_etr_ring_data *ring;char val[ADF_CFG_MAX_VAL_LEN_IN_BYTES ]; +int max_inflights;u32 ring_num;int ret;
@@ -263,6 +272,8 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, ring->ring_size =adf_verify_ring_size (msg_size, num_msgs); ring->head =0 ; ring->tail =0 ; + max_inflights =ADF_MAX_INFLIGHTS (ring->ring_size, ring->msg_size); + ring->threshold =ADF_PERCENT (max_inflights,ADF_MAX_RING_THRESHOLD );atomic_set (ring->inflights,0 ); ret =adf_init_ring (ring);if (ret)
drivers/crypto/qat/qat_common/adf_transport.h +1 -0
@@ -14,6 +14,7 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, const char *ring_name, adf_callback_fn callback, int poll_mode, struct adf_etr_ring_data **ring_ptr); +bool adf_ring_nearly_full (struct adf_etr_ring_data *ring);int adf_send_message (struct adf_etr_ring_data *ring,u32 *msg);void adf_remove_ring (struct adf_etr_ring_data *ring);#endif
drivers/crypto/qat/qat_common/adf_transport_internal.h +1 -0
@@ -22,6 +22,7 @@ struct adf_etr_ring_data {spinlock_t lock;/* protects ring data struct */ u16 head;u16 tail; +u32 threshold;u8 ring_number;u8 ring_size;u8 msg_size;
drivers/crypto/qat/qat_common/qat_algs.c +75 -63
252 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_algs_send.c new file +86 -0
86 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_algs_send.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ +/* Copyright(c) 2022 Intel Corporation */ +#ifndef QAT_ALGS_SEND_H +#define QAT_ALGS_SEND_H + +#include "qat_crypto.h" + +int qat_alg_send_message (struct qat_alg_req *req); +void qat_alg_send_backlog (struct qat_instance_backlog *backlog); + +#endif
drivers/crypto/qat/qat_common/qat_asym_algs.c +149 -155
525 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_crypto.c +3 -7
@@ -136,13 +136,6 @@ int qat_crypto_dev_config(struct adf_accel_dev *accel_dev)if (ret) goto err; -/* Temporarily set the number of crypto instances to zero to avoid -* registering the crypto algorithms. -* This will be removed when the algorithms will support the -* CRYPTO_TFM_REQ_MAY_BACKLOG flag -*/ - instances =0 ; -for (i =0 ; i < instances; i++) { val = i;snprintf (key,sizeof (key),ADF_CY "%d" ADF_RING_ASYM_BANK_NUM , i);
@@ -328,6 +321,9 @@ static int qat_crypto_create_instances(struct adf_accel_dev *accel_dev) &inst->pke_rx);if (ret) goto err; + +INIT_LIST_HEAD (&inst->backlog.list); +spin_lock_init (&inst->backlog.lock); }return 0 ; err:
drivers/crypto/qat/qat_common/qat_crypto.h +39 -0
@@ -9,6 +9,19 @@#include "adf_accel_devices.h" #include "icp_qat_fw_la.h" +struct qat_instance_backlog { +struct list_head list; +spinlock_t lock;/* protects backlog list */ +}; + +struct qat_alg_req { +u32 *fw_req; +struct adf_etr_ring_data *tx_ring; +struct crypto_async_request *base; +struct list_head list; +struct qat_instance_backlog *backlog; +}; +struct qat_crypto_instance {struct adf_etr_ring_data *sym_tx;struct adf_etr_ring_data *sym_rx;
@@ -19,8 +32,29 @@ struct qat_crypto_instance {unsigned long state;int id;atomic_t refctr; +struct qat_instance_backlog backlog; }; +#define QAT_MAX_BUFF_DESC 4 + +struct qat_alg_buf { +u32 len; +u32 resrvd; +u64 addr; +} __packed; + +struct qat_alg_buf_list { +u64 resrvd; +u32 num_bufs; +u32 num_mapped_bufs; +struct qat_alg_buf bufers[]; +} __packed; + +struct qat_alg_fixed_buf_list { +struct qat_alg_buf_list sgl_hdr; +struct qat_alg_buf descriptors[QAT_MAX_BUFF_DESC ]; +} __packed__aligned(64) ; +struct qat_crypto_request_buffs {struct qat_alg_buf_list *bl;dma_addr_t blp;
@@ -28,6 +62,10 @@ struct qat_crypto_request_buffs {dma_addr_t bloutp;size_t sz;size_t sz_out; +bool sgl_src_valid; +bool sgl_dst_valid; +struct qat_alg_fixed_buf_list sgl_src; +struct qat_alg_fixed_buf_list sgl_dst; };struct qat_crypto_request ;
@@ -53,6 +91,7 @@ struct qat_crypto_request {u8 iv[AES_BLOCK_SIZE ]; };bool encryption; +struct qat_alg_req alg_req; };static inline bool adf_hw_dev_has_crypto (struct adf_accel_dev *accel_dev)
drivers/gpio/gpio-pca953x.c +14 -8
@@ -351,6 +351,9 @@ static const struct regmap_config pca953x_i2c_regmap = { .reg_bits = 8, .val_bits = 8, + .use_single_read = true, + .use_single_write = true, + .readable_reg = pca953x_readable_register, .writeable_reg = pca953x_writeable_register, .volatile_reg = pca953x_volatile_register,
@@ -894,15 +897,18 @@ static int pca953x_irq_setup(struct pca953x_chip *chip,static int device_pca95xx_init (struct pca953x_chip *chip,u32 invert) {DECLARE_BITMAP (val,MAX_LINE ); +u8 regaddr;int ret; - ret =regcache_sync_region (chip->regmap, chip->regs->output, - chip->regs->output +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->output,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip) -1 );if (ret) goto out; - ret =regcache_sync_region (chip->regmap, chip->regs->direction, - chip->regs->direction +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->direction,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip) -1 );if (ret) goto out;
@@ -1115,14 +1121,14 @@ static int pca953x_regcache_sync(struct device *dev)* sync these registers first and only then sync the rest. */ regaddr =pca953x_recalc_addr (chip, chip->regs->direction,0 ); - ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip)); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync GPIO dir registers: %d\n" , ret);return ret; } regaddr =pca953x_recalc_addr (chip, chip->regs->output,0 ); - ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip)); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync GPIO out registers: %d\n" , ret);return ret;
@@ -1132,7 +1138,7 @@ static int pca953x_regcache_sync(struct device *dev)if (chip->driver_data &PCA_PCAL ) { regaddr =pca953x_recalc_addr (chip,PCAL953X_IN_LATCH ,0 ); ret =regcache_sync_region (chip->regmap, regaddr, - regaddr +NBANK (chip)); + regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync INT latch registers: %d\n" , ret);
@@ -1141,7 +1147,7 @@ static int pca953x_regcache_sync(struct device *dev) regaddr =pca953x_recalc_addr (chip,PCAL953X_INT_MASK ,0 ); ret =regcache_sync_region (chip->regmap, regaddr, - regaddr +NBANK (chip)); + regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync INT mask registers: %d\n" , ret);
drivers/gpio/gpio-xilinx.c +1 -1
@@ -99,7 +99,7 @@ static inline void xgpio_set_value32(unsigned long *map, int bit, u32 v)const unsigned long offset = (bit %BITS_PER_LONG ) &BIT (5 ); map[index] &= ~(0xFFFFFFFFul << offset); - map[index] |= v << offset; + map[index] |= (unsigned long )v << offset; }static inline int xgpio_regoffset (struct xgpio_instance *chip,int ch)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +403 -43
376 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +96 -1
97 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +17 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/core/dc.c +17 -7
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +56 -33
89 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dc_link.h +5 -4
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/irdma/cm.c +0 -50
50 lines not on this page · raw message
drivers/infiniband/hw/irdma/icrdma_hw.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +22 -6
Lines of this file are not shown. View the raw message.
drivers/net/dsa/sja1105/sja1105_main.c +16 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/emulex/benet/be_cmds.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/emulex/benet/be_cmds.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/emulex/benet/be_ethtool.c +19 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ich8lan.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ich8lan.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/netdev.c +4 -26
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +5 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_txrx.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_regs.h +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/action.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +0 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/uefi.h +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mac80211.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x02_util.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +20 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +15 -15
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/regs.h +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/tx.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pci-hyperv.c +86 -20
106 lines not on this page · raw message
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +45 -52
97 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-mt7620.c +126 -126
252 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-mt7621.c +15 -15
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinctrl-ralink.c new file +351 -0
351 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-ralink.h new file +53 -0
53 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt2880.c deleted +0 -349
349 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt288x.c +10 -10
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinctrl-rt305x.c +22 -22
44 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt3883.c +14 -14
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinmux.h deleted +0 -53
53 lines not on this page · raw message
drivers/power/reset/arm-versatile-reboot.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/megaraid/megaraid_sas_base.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/tty/tty_buffer.c +44 -22
66 lines not on this page · raw message
drivers/usb/host/xhci-dbgcap.c +62 -73
135 lines not on this page · raw message
include/linux/skbuff.h +46 -1
47 lines not on this page · raw message
include/net/bluetooth/bluetooth.h +65 -0
65 lines not on this page · raw message
include/trace/events/skb.h +41 -7
48 lines not on this page · raw message
kernel/events/core.c +31 -14
45 lines not on this page · raw message
kernel/sysctl.c +19 -25
44 lines not on this page · raw message
kernel/trace/pid_list.c new file +160 -0
160 lines not on this page · raw message
kernel/trace/trace.c +31 -53
84 lines not on this page · raw message
kernel/watch_queue.c +37 -16
53 lines not on this page · raw message
net/bluetooth/rfcomm/core.c +43 -7
50 lines not on this page · raw message
net/bluetooth/rfcomm/sock.c +10 -36
46 lines not on this page · raw message
net/ipv4/tcp_input.c +32 -21
53 lines not on this page · raw message
net/ipv4/tcp_ipv4.c +39 -38
77 lines not on this page · raw message
tools/testing/selftests/kvm/rseq_test.c +5 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/mremap_test.c +0 -53
53 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.