Linux 5.15.64
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.64 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/ABI/testing/sysfs-devices-system-cpu | 1 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst | 14 Documentation/admin-guide/sysctl/net.rst | 2 Makefile | 2 arch/arm64/kernel/cpu_errata.c | 2 arch/parisc/Kconfig | 21 arch/parisc/kernel/unaligned.c | 2 arch/riscv/include/asm/thread_info.h | 2 arch/riscv/kernel/traps.c | 3 arch/riscv/lib/uaccess.S | 24 arch/s390/kernel/process.c | 22 arch/s390/mm/fault.c | 4 arch/x86/entry/entry_64.S | 8 arch/x86/events/intel/ds.c | 10 arch/x86/events/intel/lbr.c | 8 arch/x86/events/intel/uncore_snb.c | 18 arch/x86/include/asm/cpufeatures.h | 5 arch/x86/include/asm/nospec-branch.h | 92 arch/x86/kernel/cpu/bugs.c | 14 arch/x86/kernel/cpu/common.c | 42 arch/x86/kernel/unwind_orc.c | 15 block/blk-mq.c | 5 drivers/acpi/processor_thermal.c | 2 drivers/android/binder_alloc.c | 31 drivers/base/node.c | 4 drivers/base/topology.c | 28 drivers/block/loop.c | 5 drivers/gpu/drm/nouveau/nouveau_bo.c | 9 drivers/input/serio/i8042-x86ia64io.h | 1251 ++++++---- drivers/md/md.c | 3 drivers/net/bonding/bond_3ad.c | 38 drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c | 2 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 drivers/net/ethernet/intel/ice/ice_xsk.c | 14 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 59 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 12 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 drivers/net/ethernet/moxa/moxart_ether.c | 11 drivers/net/ethernet/pensando/ionic/ionic_lif.c | 109 drivers/net/ethernet/pensando/ionic/ionic_main.c | 4 drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 9 drivers/net/ethernet/sun/cassini.c | 4 drivers/net/ipa/ipa_mem.c | 2 drivers/net/ipvlan/ipvlan_main.c | 2 drivers/net/ipvlan/ipvtap.c | 4 drivers/net/macsec.c | 13 drivers/net/macvlan.c | 2 drivers/net/phy/phy_device.c | 8 drivers/net/usb/r8152.c | 27 drivers/net/usb/smsc95xx.c | 139 - drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c | 5 drivers/nfc/pn533/uart.c | 1 drivers/nvme/target/zns.c | 3 drivers/scsi/qla2xxx/qla_gbl.h | 2 drivers/scsi/qla2xxx/qla_isr.c | 76 drivers/scsi/qla2xxx/qla_os.c | 10 drivers/scsi/storvsc_drv.c | 2 drivers/scsi/ufs/ufshci.h | 6 drivers/video/fbdev/core/fbcon.c | 27 drivers/xen/privcmd.c | 21 fs/btrfs/btrfs_inode.h | 12 fs/btrfs/ctree.h | 29 fs/btrfs/delalloc-space.c | 6 fs/btrfs/dev-replace.c | 5 fs/btrfs/disk-io.c | 2 fs/btrfs/extent_io.c | 18 fs/btrfs/inode.c | 40 fs/btrfs/root-tree.c | 5 fs/btrfs/tree-log.c | 19 fs/btrfs/tree-log.h | 2 fs/btrfs/volumes.c | 5 fs/btrfs/xattr.c | 3 fs/btrfs/zoned.c | 20 fs/btrfs/zoned.h | 1 fs/cifs/smb2ops.c | 12 fs/fs-writeback.c | 12 fs/io_uring.c | 7 fs/namespace.c | 7 fs/nfs/nfs4file.c | 16 fs/ntfs3/xattr.c | 16 fs/proc/task_mmu.c | 7 fs/zonefs/super.c | 3 include/asm-generic/sections.h | 7 include/linux/blkdev.h | 11 include/linux/cpumask.h | 18 include/linux/memcontrol.h | 15 include/linux/mlx5/driver.h | 1 include/linux/netdevice.h | 20 include/linux/netfilter_bridge/ebtables.h | 4 include/net/busy_poll.h | 2 include/net/netfilter/nf_flow_table.h | 3 include/net/netfilter/nf_tables.h | 10 include/net/netfilter/nf_tables_core.h | 9 include/net/tcp.h | 2 kernel/audit_fsnotify.c | 1 kernel/bpf/verifier.c | 10 kernel/cgroup/cgroup.c | 1 kernel/sys_ni.c | 1 lib/ratelimit.c | 12 mm/backing-dev.c | 10 mm/bootmem_info.c | 2 mm/damon/dbgfs.c | 3 mm/mmap.c | 8 mm/page-writeback.c | 6 net/8021q/vlan_dev.c | 6 net/bridge/netfilter/ebtable_broute.c | 8 net/bridge/netfilter/ebtable_filter.c | 8 net/bridge/netfilter/ebtable_nat.c | 8 net/bridge/netfilter/ebtables.c | 8 net/core/bpf_sk_storage.c | 5 net/core/dev.c | 18 net/core/filter.c | 13 net/core/gro_cells.c | 2 net/core/skbuff.c | 2 net/core/sock.c | 18 net/core/sysctl_net_core.c | 15 net/dsa/slave.c | 4 net/hsr/hsr_device.c | 2 net/hsr/hsr_main.c | 2 net/ipv4/devinet.c | 16 net/ipv4/ip_output.c | 2 net/ipv4/ip_sockglue.c | 6 net/ipv4/tcp.c | 12 net/ipv4/tcp_output.c | 2 net/ipv6/addrconf.c | 5 net/ipv6/ipv6_sockglue.c | 4 net/key/af_key.c | 3 net/mptcp/protocol.c | 138 - net/netfilter/ipvs/ip_vs_sync.c | 4 net/netfilter/nf_flow_table_core.c | 15 net/netfilter/nf_flow_table_offload.c | 8 net/netfilter/nf_tables_api.c | 96 net/netfilter/nf_tables_core.c | 55 net/netfilter/nft_bitwise.c | 67 net/netfilter/nft_cmp.c | 140 - net/netfilter/nft_immediate.c | 22 net/netfilter/nft_osf.c | 18 net/netfilter/nft_payload.c | 29 net/netfilter/nft_range.c | 27 net/netfilter/nft_tunnel.c | 1 net/rose/rose_loopback.c | 3 net/rxrpc/call_object.c | 4 net/rxrpc/sendmsg.c | 92 net/sched/sch_generic.c | 2 net/socket.c | 2 net/sunrpc/clnt.c | 2 net/xfrm/espintcp.c | 2 net/xfrm/xfrm_input.c | 2 net/xfrm/xfrm_policy.c | 3 net/xfrm/xfrm_state.c | 1 tools/perf/Makefile.config | 2 tools/perf/builtin-stat.c | 1 154 files changed, 2270 insertions(+), 1315 deletions(-)
Alex Elder (1):
net: ipa: don't assume SMEM is page-aligned
Anand Jain (2):
btrfs: replace: drop assert for suspended replace
btrfs: add info when mount fails due to stale replace target
Antony Antony (1):
xfrm: clone missing x->lastused in xfrm_do_migrate
Arun Easi (1):
scsi: qla2xxx: Fix response queue handler reading stale packets
Aya Levin (1):
net/mlx5e: Fix wrong application of the LRO state
Badari Pulavarty (1):
mm/damon/dbgfs: avoid duplicate context directory creation
Bernard Pidoux (1):
rose: check NULL rose_loopback_neigh->loopback
Brian Foster (1):
s390: fix double free of GS and RI CBs on fork() failure
Chen Lifu (1):
riscv: lib: uaccess: fix CSR_STATUS SR_SUM bit
Chen Zhongjin (1):
x86/unwind/orc: Unwind ftrace trampolines with correct ORC entry
Christian Brauner (1):
ntfs: fix acl handling
Christoph Hellwig (1):
block: add a bdev_max_zone_append_sectors helper
Conor Dooley (1):
riscv: traps: add missing prototype
Daniel Borkmann (1):
bpf: Don't use tnum_range on array range checking for poke descriptors
David Hildenbrand (1):
mm/hugetlb: fix hugetlb not supporting softdirty tracking
David Howells (2):
rxrpc: Fix locking in rxrpc's sendmsg
smb3: missing inode locks in punch hole
Duoming Zhou (1):
nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout
Filipe Manana (3):
btrfs: put initial index value of a directory in a constant
btrfs: pass the dentry to btrfs_log_new_name() instead of the inode
btrfs: fix silent failure when deleting root reference
Florian Westphal (1):
netfilter: ebtables: reject blobs that don't provide all entry points
Gaosheng Cui (1):
audit: fix potential double free on error path from fsnotify_add_inode_mark
Gerald Schaefer (1):
s390/mm: do not trigger write fault when vma does not allow VM_WRITE
Goldwyn Rodrigues (1):
btrfs: check if root is readonly while setting security xattr
Greg Kroah-Hartman (3):
Revert "usbnet: smsc95xx: Fix deadlock on runtime resume"
Revert "usbnet: smsc95xx: Forward PHY interrupts to PHY driver to avoid polling" Linux 5.15.64
Guoqing Jiang (2):
Revert "md-raid: destroy the bitmap after destroying the thread"
md: call __md_stop_writes in md_stop
Hayes Wang (2):
r8152: fix the units of some registers for RTL8156A
r8152: fix the RX FIFO settings when suspending
Heiner Kallweit (1):
net: stmmac: work around sporadic tx issue on link-up
Helge Deller (2):
parisc: Make CONFIG_64BIT available for ARCH=parisc64 only
parisc: Fix exception handler for fldw and fstw instructions
Herbert Xu (1):
af_key: Do not call xfrm_probe_algs in parallel
Ian Rogers (1):
perf stat: Clear evsel->reset_group for each stat run
Jacob Keller (1):
ixgbe: stop resetting SYSTIME in ixgbe_ptp_start_cyclecounter
Jakub Kicinski (2):
wifi: rtlwifi: remove always-true condition pointed out by GCC 12
net: use eth_hw_addr_set() instead of ether_addr_copy()
James Clark (1):
perf python: Fix build when PYTHON_CONFIG is user supplied
Jens Axboe (1):
io_uring: fix issue with io_write() not always undoing sb_start_write()
Jeremy Sowden (1):
netfilter: bitwise: improve error goto labels
Jing-Ting Wu (1):
cgroup: Fix race condition at rebind_subsystems()
Jisheng Zhang (1):
riscv: lib: uaccess: fold fixups into body
Jonathan Toppins (1):
bonding: 802.3ad: fix no transmission of LACPDUs
Juergen Gross (1):
xen/privcmd: fix error exit of privcmd_ioctl_dm_op()
Kan Liang (1):
perf/x86/lbr: Enable the branch type for the Arch LBR by default
Karol Herbst (1):
nouveau: explicitly wait on the fence in nouveau_bo_move_m2mf
Khazhismel Kumykov (1):
writeback: avoid use-after-free after removing device
Kiwoong Kim (1):
scsi: ufs: core: Enable link lost interrupt
Kuniyuki Iwashima (15):
net: Fix data-races around sysctl_[rw]mem_(max|default).
net: Fix data-races around weight_p and dev_weight_[rt]x_bias.
net: Fix data-races around netdev_max_backlog.
net: Fix data-races around netdev_tstamp_prequeue.
ratelimit: Fix data-races in ___ratelimit().
net: Fix data-races around sysctl_optmem_max.
net: Fix a data-race around sysctl_tstamp_allow_data.
net: Fix a data-race around sysctl_net_busy_poll.
net: Fix a data-race around sysctl_net_busy_read.
net: Fix a data-race around netdev_budget.
net: Fix data-races around sysctl_max_skb_frags.
net: Fix a data-race around netdev_budget_usecs.
net: Fix data-races around sysctl_fb_tunnels_only_for_init_net.
net: Fix data-races around sysctl_devconf_inherit_init_net.
net: Fix a data-race around sysctl_somaxconn.
Lai Jiangshan (1):
x86/entry: Move CLD to the start of the idtentry macro
Liam Howlett (1):
binder_alloc: add missing mmap_lock calls when using the VMA
Liu Shixin (1):
bootmem: remove the vmemmap pages from kmemleak in put_page_bootmem
Maciej Fijalkowski (2):
ice: xsk: Force rings to be sized to power of 2
ice: xsk: prohibit usage of non-balanced queue id
Maciej Żenczykowski (1):
net: ipvtap - add __init/__exit annotations to module init/exit funcs
Maor Dickman (1):
net/mlx5e: Fix wrong tc flag used when set hw-tc-offload off
Martin Liška (1):
eth: sun: cassini: remove dead code
Moshe Shemesh (1):
net/mlx5: Avoid false positive lockdep warning by adding lock_class_key
Naohiro Aota (4):
block: add bdev_max_segments() helper
btrfs: zoned: revive max_zone_append_bytes
btrfs: replace BTRFS_MAX_EXTENT_SIZE with fs_info->max_extent_size
btrfs: convert count_max_extents() to use fs_info->max_extent_size
Nikolay Aleksandrov (1):
xfrm: policy: fix metadata dst->dev xmit null pointer dereference
Olga Kornievskaia (1):
NFSv4.2 fix problems with __nfs42_ssc_open
Pablo Neira Ayuso (14):
netfilter: nf_tables: disallow updates of implicit chain
netfilter: nf_tables: make table handle allocation per-netns friendly
netfilter: nft_payload: report ERANGE for too long offset and length
netfilter: nft_payload: do not truncate csum_offset and csum_type
netfilter: nf_tables: do not leave chain stats enabled on error
netfilter: nft_osf: restrict osf to ipv4, ipv6 and inet families
netfilter: nft_tunnel: restrict it to netdev family
netfilter: nf_tables: consolidate rule verdict trace call
netfilter: nft_cmp: optimize comparison for 16-bytes
netfilter: nf_tables: upfront validation of data via nft_data_init()
netfilter: nf_tables: disallow jump to implicit chain from set element
netfilter: nf_tables: disallow binding to already bound chain
netfilter: flowtable: add function to invoke garbage collection immediately
netfilter: flowtable: fix stuck flows on cleanup due to pending work
Paolo Abeni (2):
tcp: expose the tcp_mark_push() and tcp_skb_entail() helpers
mptcp: stop relying on tcp_tx_skb_cache
Pawan Gupta (1):
x86/bugs: Add "unknown" reporting for MMIO Stale Data
Peter Xu (1):
mm/smaps: don't access young/dirty bit if pte unpresent
Peter Zijlstra (2):
x86/nospec: Unwreck the RSB stuffing
x86/nospec: Fix i386 RSB stuffing
Phil Auld (1):
drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist
Qu Wenruo (1):
btrfs: remove unnecessary parameter delalloc_start for writepage_delalloc()
Quanyang Wang (1):
asm-generic: sections: refactor memory_intersects
Quinn Tran (1):
scsi: qla2xxx: edif: Fix dropped IKE message
R Mohamed Shah (1):
ionic: VF initial random MAC address if no assigned mac
Randy Dunlap (1):
kernel/sys_ni: add compat entry for fadvise64_64
Riwen Lu (1):
ACPI: processor: Remove freq Qos request for all CPUs
Sabrina Dubroca (1):
Revert "net: macsec: update SCI upon MAC address change."
Salvatore Bonaccorso (1):
Documentation/ABI: Mention retbleed vulnerability info file for sysfs
Saurabh Sengar (1):
scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq
Sergei Antonov (1):
net: moxa: get rid of asymmetry in DMA mapping/unmapping
Seth Forshee (1):
fs: require CAP_SYS_ADMIN in target namespace for idmapped mounts
Shakeel Butt (1):
Revert "memcg: cleanup racy sum avoidance code"
Shannon Nelson (3):
ionic: widen queue_lock use around lif init and deinit
ionic: clear broken state on generation change
ionic: fix up issues with handling EAGAIN on FW cmds
Shigeru Yoshida (1):
fbdev: fbcon: Properly revert changes when vc_resize() failed
Siddh Raman Pant (1):
loop: Check for overflow while configuring loop
Stephane Eranian (2):
perf/x86/intel/uncore: Fix broken read_counter() for SNB IMC PMU perf/x86/intel/ds: Fix precise store latency handling
Sylwester Dziedziuch (1):
i40e: Fix incorrect address type for IPv6 flow rules
Trond Myklebust (2):
NFS: Don't allocate nfs_fattr on the stack in __nfs42_ssc_open()
SUNRPC: RPC level errors should set task->tk_rpc_status
Vikas Gupta (1):
bnxt_en: fix NQ resource accounting during vf creation on 57500 chips
Vlad Buslov (1):
net/mlx5e: Properly disable vlan strip on non-UL reps
Werner Sembach (4):
Input: i8042 - move __initconst to fix code styling warning
Input: i8042 - merge quirk tables
Input: i8042 - add TUXEDO devices to i8042 quirk tables
Input: i8042 - add additional TUXEDO devices to i8042 quirk tables
Xiaolei Wang (1):
net: phy: Don't WARN for PHY_READY state in mdio_bus_phy_resume()
Xin Xiong (1):
xfrm: fix refcount leak in __xfrm_policy_check()
Yonglong Li (1):
mptcp: Fix crash due to tcp_tsorted_anchor was initialized before release skb
Yu Kuai (1):
blk-mq: fix io hung due to missing commit_rqs
Zenghui Yu (1):
arm64: Fix match_list for erratum 1286807 on Arm Cortex-A76
Zixuan Fu (1):
btrfs: fix possible memory leak in btrfs_get_dev_args_from_path()
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-devices-system-cpu +1 -0
@@ -521,6 +521,7 @@ What: /sys/devices/system/cpu/vulnerabilities /sys/devices/system/cpu/vulnerabilities/tsx_async_abort /sys/devices/system/cpu/vulnerabilities/itlb_multihit /sys/devices/system/cpu/vulnerabilities/mmio_stale_data + /sys/devices/system/cpu/vulnerabilities/retbleed Date: January 2018 Contact: Linux kernel mailing list <[email protected]> Description: Information about CPU vulnerabilities
Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst +14 -0
@@ -230,6 +230,20 @@ The possible values in this file are: * - 'Mitigation: Clear CPU buffers' - The processor is vulnerable and the CPU buffer clearing mitigation is enabled. + * - 'Unknown: No mitigations' + - The processor vulnerability status is unknown because it is + out of Servicing period. Mitigation is not attempted. + +Definitions: +------------ + +Servicing period: The process of providing functional and security updates to +Intel processors or platforms, utilizing the Intel Platform Update (IPU) +process or other similar mechanisms. + +End of Servicing Updates (ESU): ESU is the date at which Intel will no +longer provide Servicing, such as through IPU or other similar update +processes. ESU dates will typically be aligned to end of quarter. If the processor is vulnerable then the following information is appended to the above information:
Documentation/admin-guide/sysctl/net.rst +1 -1
@@ -271,7 +271,7 @@ poll cycle or the number of packets processed reaches netdev_budget. netdev_max_backlog ------------------ -Maximum number of packets, queued on the INPUT side, when the interface +Maximum number of packets, queued on the INPUT side, when the interface receives packets faster than kernel can process them. netdev_rss_key
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 63 +SUBLEVEL = 64 EXTRAVERSION = NAME = Trick or Treat
arch/arm64/kernel/cpu_errata.c +2 -0
@@ -208,6 +208,8 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = { #ifdef CONFIG_ARM64_ERRATUM_1286807 { ERRATA_MIDR_RANGE(MIDR_CORTEX_A76, 0, 0, 3, 0), + }, + { /* Kryo4xx Gold (rcpe to rfpe) => (r0p0 to r3p0) */ ERRATA_MIDR_RANGE(MIDR_QCOM_KRYO_4XX_GOLD, 0xc, 0xe, 0xf, 0xe), },
arch/parisc/Kconfig +6 -15
@@ -142,10 +142,10 @@ menu "Processor type and features" choice prompt "Processor type" - default PA7000 + default PA7000 if "$(ARCH)" = "parisc" config PA7000 - bool "PA7000/PA7100" + bool "PA7000/PA7100" if "$(ARCH)" = "parisc" help This is the processor type of your CPU. This information is used for optimizing purposes. In order to compile a kernel
@@ -156,21 +156,21 @@ config PA7000 which is required on some machines. config PA7100LC - bool "PA7100LC" + bool "PA7100LC" if "$(ARCH)" = "parisc" help Select this option for the PCX-L processor, as used in the 712, 715/64, 715/80, 715/100, 715/100XC, 725/100, 743, 748, D200, D210, D300, D310 and E-class config PA7200 - bool "PA7200" + bool "PA7200" if "$(ARCH)" = "parisc" help Select this option for the PCX-T' processor, as used in the C100, C110, J100, J110, J210XC, D250, D260, D350, D360, K100, K200, K210, K220, K400, K410 and K420 config PA7300LC - bool "PA7300LC" + bool "PA7300LC" if "$(ARCH)" = "parisc" help Select this option for the PCX-L2 processor, as used in the 744, A180, B132L, B160L, B180L, C132L, C160L, C180L,
@@ -220,17 +220,8 @@ config MLONGCALLS Enabling this option will probably slow down your kernel. config 64BIT - bool "64-bit kernel" + def_bool "$(ARCH)" = "parisc64" depends on PA8X00 - help - Enable this if you want to support 64bit kernel on PA-RISC platform. - - At the moment, only people willing to use more than 2GB of RAM, - or having a 64bit-only capable PA-RISC machine should say Y here. - - Since there is no 64bit userland on PA-RISC, there is no point to - enable this option otherwise. The 64bit kernel is significantly bigger - and slower than the 32bit one. choice prompt "Kernel page size"
arch/parisc/kernel/unaligned.c +1 -1
@@ -107,7 +107,7 @@#define R1 (i) (((i)>>21)&0x1f)#define R2 (i) (((i)>>16)&0x1f)#define R3 (i) ((i)&0x1f) -#define FR3 (i) ((((i)<<1)&0x1f)|(((i)>>6)&1)) +#define FR3 (i) ((((i)&0x1f)<<1)|(((i)>>6)&1))#define IM (i,n) (((i)>>1&((1<<(n-1))-1))|((i)&1?((0-1L)<<(n-1)):0))#define IM5_2 (i) IM((i)>>16,5)#define IM5_3 (i) IM((i),5)
arch/riscv/include/asm/thread_info.h +2 -0
@@ -42,6 +42,8 @@#ifndef __ASSEMBLY__ +extern long shadow_stack[SHADOW_OVERFLOW_STACK_SIZE /sizeof (long )]; +#include <asm/processor.h> #include <asm/csr.h>
arch/riscv/kernel/traps.c +2 -1
@@ -20,9 +20,10 @@#include <asm/asm-prototypes.h> #include <asm/bug.h> +#include <asm/csr.h> #include <asm/processor.h> #include <asm/ptrace.h> -#include <asm/csr.h> +#include <asm/thread_info.h> int show_unhandled_signals =1 ;
arch/riscv/lib/uaccess.S +12 -12
@@ -173,6 +173,13 @@ ENTRY(__asm_copy_from_user) csrc CSR_STATUS, t6 li a0, 0 ret + + /* Exception fixup code */ +10: + /* Disable access to user memory */ + csrc CSR_STATUS, t6 + mv a0, t5 + ret ENDPROC(__asm_copy_to_user) ENDPROC(__asm_copy_from_user) EXPORT_SYMBOL(__asm_copy_to_user)
@@ -218,19 +225,12 @@ ENTRY(__clear_user) addi a0, a0, 1 bltu a0, a3, 5b j 3b -ENDPROC(__clear_user) -EXPORT_SYMBOL(__clear_user) - .section .fixup,"ax" - .balign 4 - /* Fixup code for __copy_user(10) and __clear_user(11) */ -10: - /* Disable access to user memory */ - csrs CSR_STATUS, t6 - mv a0, t5 - ret + /* Exception fixup code */ 11: - csrs CSR_STATUS, t6 + /* Disable access to user memory */ + csrc CSR_STATUS, t6 mv a0, a1 ret - .previous +ENDPROC(__clear_user) +EXPORT_SYMBOL(__clear_user)
arch/s390/kernel/process.c +16 -6
@@ -91,6 +91,18 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)memcpy (dst, src, arch_task_struct_size); dst->thread.fpu.regs = dst->thread.fpu.fprs; + +/* +* Don't transfer over the runtime instrumentation or the guarded +* storage control block pointers. These fields are cleared here instead +* of in copy_thread() to avoid premature freeing of associated memory +* on fork() failure. Wait to clear the RI flag because ->stack still +* refers to the source thread. +*/ + dst->thread.ri_cb =NULL ; + dst->thread.gs_cb =NULL ; + dst->thread.gs_bc_cb =NULL ; +return 0 ; }
@@ -149,13 +161,11 @@ int copy_thread(unsigned long clone_flags, unsigned long new_stackp, frame->childregs.flags =0 ;if (new_stackp) frame->childregs.gprs[15 ] = new_stackp; - -/* Don't copy runtime instrumentation info */ - p->thread.ri_cb =NULL ; +/* +* Clear the runtime instrumentation flag after the above childregs +* copy. The CB pointer was already cleared in arch_dup_task_struct(). +*/ frame->childregs.psw.mask &= ~PSW_MASK_RI ; -/* Don't copy guarded storage control block */ - p->thread.gs_cb =NULL ; - p->thread.gs_bc_cb =NULL ;/* Set a new TLS ? */ if (clone_flags &CLONE_SETTLS ) {
arch/s390/mm/fault.c +3 -1
@@ -397,7 +397,9 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) flags =FAULT_FLAG_DEFAULT ;if (user_mode (regs)) flags |=FAULT_FLAG_USER ; -if (access ==VM_WRITE || is_write) +if (is_write) + access =VM_WRITE ; +if (access ==VM_WRITE ) flags |=FAULT_FLAG_WRITE ;mmap_read_lock (mm);
arch/x86/entry/entry_64.S +5 -3
@@ -373,6 +373,7 @@ SYM_CODE_END(xen_error_entry) SYM_CODE_START(\asmsym) UNWIND_HINT_IRET_REGS offset=\has_error_code*8 ASM_CLAC + cld .if \has_error_code == 0 pushq $-1 /* ORIG_RAX: no syscall to restart */
@@ -440,6 +441,7 @@ SYM_CODE_END(\asmsym) SYM_CODE_START(\asmsym) UNWIND_HINT_IRET_REGS ASM_CLAC + cld pushq $-1 /* ORIG_RAX: no syscall to restart */
@@ -495,6 +497,7 @@ SYM_CODE_END(\asmsym) SYM_CODE_START(\asmsym) UNWIND_HINT_IRET_REGS ASM_CLAC + cld /* * If the entry is from userspace, switch stacks and treat it as
@@ -557,6 +560,7 @@ SYM_CODE_END(\asmsym) SYM_CODE_START(\asmsym) UNWIND_HINT_IRET_REGS offset=8 ASM_CLAC + cld /* paranoid_entry returns GS information for paranoid_exit in EBX. */ call paranoid_entry
@@ -876,7 +880,6 @@ SYM_CODE_END(xen_failsafe_callback) */ SYM_CODE_START_LOCAL(paranoid_entry) UNWIND_HINT_FUNC - cld PUSH_AND_CLEAR_REGS save_ret=1 ENCODE_FRAME_POINTER 8
@@ -1012,7 +1015,6 @@ SYM_CODE_END(paranoid_exit) */ SYM_CODE_START_LOCAL(error_entry) UNWIND_HINT_FUNC - cld PUSH_AND_CLEAR_REGS save_ret=1 ENCODE_FRAME_POINTER 8
@@ -1155,6 +1157,7 @@ SYM_CODE_START(asm_exc_nmi) */ ASM_CLAC + cld /* Use %rdx as our temp variable throughout */ pushq %rdx
@@ -1174,7 +1177,6 @@ SYM_CODE_START(asm_exc_nmi) */ swapgs - cld FENCE_SWAPGS_USER_ENTRY SWITCH_TO_KERNEL_CR3 scratch_reg=%rdx movq %rsp, %rdx
arch/x86/events/intel/ds.c +9 -1
@@ -236,6 +236,7 @@ static u64 load_latency_data(u64 status)static u64 store_latency_data (u64 status) {union intel_x86_pebs_dse dse; +union perf_mem_data_src src;u64 val; dse.val = status;
@@ -263,7 +264,14 @@ static u64 store_latency_data(u64 status) val |=P (BLK ,NA ); -return val; +/* +* the pebs_data_source table is only for loads +* so override the mem_op to say STORE instead +*/ + src.val = val; + src.mem_op =P (OP ,STORE ); + +return src.val; }struct pebs_record_core {
arch/x86/events/intel/lbr.c +8 -0
@@ -1114,6 +1114,14 @@ static int intel_pmu_setup_hw_lbr_filter(struct perf_event *event)if (static_cpu_has (X86_FEATURE_ARCH_LBR )) { reg->config = mask; + +/* +* The Arch LBR HW can retrieve the common branch types +* from the LBR_INFO. It doesn't require the high overhead +* SW disassemble. +* Enable the branch type by default for the Arch LBR. +*/ + reg->reg |=X86_BR_TYPE_SAVE ;return 0 ; }
arch/x86/events/intel/uncore_snb.c +17 -1
@@ -788,6 +788,22 @@ int snb_pci2phy_map_init(int devid)return 0 ; } +static u64 snb_uncore_imc_read_counter (struct intel_uncore_box *box,struct perf_event *event) +{ +struct hw_perf_event *hwc = &event->hw; + +/* +* SNB IMC counters are 32-bit and are laid out back to back +* in MMIO space. Therefore we must use a 32-bit accessor function +* using readq() from uncore_mmio_read_counter() causes problems +* because it is reading 64-bit at a time. This is okay for the +* uncore_perf_event_update() function because it drops the upper +* 32-bits but not okay for plain uncore_read_counter() as invoked +* in uncore_pmu_event_start(). +*/ +return (u64 )readl (box->io_addr + hwc->event_base); +} +static struct pmu snb_uncore_imc_pmu = { .task_ctx_nr = perf_invalid_context, .event_init = snb_uncore_imc_event_init,
@@ -807,7 +823,7 @@ static struct intel_uncore_ops snb_uncore_imc_ops = { .disable_event = snb_uncore_imc_disable_event, .enable_event = snb_uncore_imc_enable_event, .hw_config = snb_uncore_imc_hw_config, - .read_counter = uncore_mmio_read_counter, + .read_counter = snb_uncore_imc_read_counter, };static struct intel_uncore_type snb_uncore_imc = {
arch/x86/include/asm/cpufeatures.h +3 -2
@@ -446,7 +446,8 @@#define X86_BUG_ITLB_MULTIHIT X86_BUG(23)/* CPU may incur MCE during certain page attribute changes */ #define X86_BUG_SRBDS X86_BUG(24)/* CPU may leak RNG bits if not mitigated */ #define X86_BUG_MMIO_STALE_DATA X86_BUG(25)/* CPU is affected by Processor MMIO Stale Data vulnerabilities */ -#define X86_BUG_RETBLEED X86_BUG(26)/* CPU is affected by RETBleed */ -#define X86_BUG_EIBRS_PBRSB X86_BUG(27)/* EIBRS is vulnerable to Post Barrier RSB Predictions */ +#define X86_BUG_MMIO_UNKNOWN X86_BUG(26)/* CPU is too old and its MMIO Stale Data status is unknown */ +#define X86_BUG_RETBLEED X86_BUG(27)/* CPU is affected by RETBleed */ +#define X86_BUG_EIBRS_PBRSB X86_BUG(28)/* EIBRS is vulnerable to Post Barrier RSB Predictions */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/nospec-branch.h +51 -41
112 lines not on this page · raw message
arch/x86/kernel/cpu/bugs.c +12 -2
@@ -433,7 +433,8 @@ static void __init mmio_select_mitigation(void)u64 ia32_cap;if (!boot_cpu_has_bug (X86_BUG_MMIO_STALE_DATA ) || -cpu_mitigations_off ()) { +boot_cpu_has_bug (X86_BUG_MMIO_UNKNOWN ) || +cpu_mitigations_off ()) { mmio_mitigation =MMIO_MITIGATION_OFF ;return ; }
@@ -538,6 +539,8 @@ static void __init md_clear_update_mitigation(void)pr_info ("TAA: %s\n" , taa_strings[taa_mitigation]);if (boot_cpu_has_bug (X86_BUG_MMIO_STALE_DATA ))pr_info ("MMIO Stale Data: %s\n" , mmio_strings[mmio_mitigation]); +else if (boot_cpu_has_bug (X86_BUG_MMIO_UNKNOWN )) +pr_info ("MMIO Stale Data: Unknown: No mitigations\n" ); }static void __init md_clear_select_mitigation (void )
@@ -2268,6 +2271,9 @@ static ssize_t tsx_async_abort_show_state(char *buf)static ssize_t mmio_stale_data_show_state (char *buf) { +if (boot_cpu_has_bug (X86_BUG_MMIO_UNKNOWN )) +return sysfs_emit (buf,"Unknown: No mitigations\n" ); +if (mmio_mitigation ==MMIO_MITIGATION_OFF )return sysfs_emit (buf,"%s\n" , mmio_strings[mmio_mitigation]);
@@ -2414,6 +2420,7 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attrreturn srbds_show_state (buf);case X86_BUG_MMIO_STALE_DATA : +case X86_BUG_MMIO_UNKNOWN :return mmio_stale_data_show_state (buf);case X86_BUG_RETBLEED :
@@ -2473,7 +2480,10 @@ ssize_t cpu_show_srbds(struct device *dev, struct device_attribute *attr, char *ssize_t cpu_show_mmio_stale_data (struct device *dev,struct device_attribute *attr,char *buf) { -return cpu_show_common (dev, attr, buf,X86_BUG_MMIO_STALE_DATA ); +if (boot_cpu_has_bug (X86_BUG_MMIO_UNKNOWN )) +return cpu_show_common (dev, attr, buf,X86_BUG_MMIO_UNKNOWN ); +else +return cpu_show_common (dev, attr, buf,X86_BUG_MMIO_STALE_DATA ); }ssize_t cpu_show_retbleed (struct device *dev,struct device_attribute *attr,char *buf)
arch/x86/kernel/cpu/common.c +27 -15
77 lines not on this page · raw message
arch/x86/kernel/unwind_orc.c +10 -5
@@ -93,22 +93,27 @@ static struct orc_entry *orc_find(unsigned long ip);static struct orc_entry *orc_ftrace_find (unsigned long ip) {struct ftrace_ops *ops; -unsigned long caller; +unsigned long tramp_addr, offset; ops =ftrace_ops_trampoline (ip);if (!ops)return NULL ; +/* Set tramp_addr to the start of the code copied by the trampoline */ if (ops->flags &FTRACE_OPS_FL_SAVE_REGS ) - caller = (unsigned long )ftrace_regs_call; + tramp_addr = (unsigned long )ftrace_regs_caller;else - caller = (unsigned long )ftrace_call; + tramp_addr = (unsigned long )ftrace_caller; + +/* Now place tramp_addr to the location within the trampoline ip is at */ + offset = ip - ops->trampoline; + tramp_addr += offset;/* Prevent unlikely recursion */ -if (ip == caller) +if (ip == tramp_addr)return NULL ; -return orc_find (caller); +return orc_find (tramp_addr); }#else static struct orc_entry *orc_ftrace_find (unsigned long ip)
block/blk-mq.c +3 -2
@@ -1400,7 +1400,8 @@ bool blk_mq_dispatch_rq_list(struct blk_mq_hw_ctx *hctx, struct list_head *list,/* If we didn't flush the entire list, we could have told the driver * there was more coming, but that turned out to be a lie. */ -if ((!list_empty (list) || errors) && q->mq_ops->commit_rqs && queued) +if ((!list_empty (list) || errors || needs_resource || + ret ==BLK_STS_DEV_RESOURCE ) && q->mq_ops->commit_rqs && queued) q->mq_ops->commit_rqs (hctx);/* * Any items that need requeuing? Stuff them into hctx->dispatch,
@@ -2111,6 +2112,7 @@ void blk_mq_try_issue_list_directly(struct blk_mq_hw_ctx *hctx,list_del_init (&rq->queuelist); ret =blk_mq_request_issue_directly (rq,list_empty (list));if (ret !=BLK_STS_OK ) { + errors++;if (ret ==BLK_STS_RESOURCE || ret ==BLK_STS_DEV_RESOURCE ) { blk_mq_request_bypass_insert(rq, false,
@@ -2118,7 +2120,6 @@ void blk_mq_try_issue_list_directly(struct blk_mq_hw_ctx *hctx,break ; }blk_mq_end_request (rq, ret); - errors++; }else queued++; }
drivers/acpi/processor_thermal.c +1 -1
@@ -144,7 +144,7 @@ void acpi_thermal_cpufreq_exit(struct cpufreq_policy *policy)unsigned int cpu;for_each_cpu (cpu, policy->related_cpus) { -struct acpi_processor *pr =per_cpu (processors, policy->cpu); +struct acpi_processor *pr =per_cpu (processors, cpu);if (pr)freq_qos_remove_request (&pr->thermal_req);
drivers/android/binder_alloc.c +21 -10
@@ -395,12 +395,15 @@ static struct binder_buffer *binder_alloc_new_buf_locked(size_t size, data_offsets_size;int ret; +mmap_read_lock (alloc->vma_vm_mm);if (!binder_alloc_get_vma (alloc)) { +mmap_read_unlock (alloc->vma_vm_mm);binder_alloc_debug (BINDER_DEBUG_USER_ERROR ,"%d: binder_alloc_buf, no vma\n" , alloc->pid);return ERR_PTR (-ESRCH ); } +mmap_read_unlock (alloc->vma_vm_mm); data_offsets_size =ALIGN (data_size,sizeof (void *)) +ALIGN (offsets_size,sizeof (void *));
@@ -922,17 +925,25 @@ void binder_alloc_print_pages(struct seq_file *m,* Make sure the binder_alloc is fully initialized, otherwise we might * read inconsistent state. */ -if (binder_alloc_get_vma (alloc) !=NULL ) { -for (i =0 ; i < alloc->buffer_size /PAGE_SIZE ; i++) { - page = &alloc->pages[i]; -if (!page->page_ptr) - free++; -else if (list_empty (&page->lru)) - active++; -else - lru++; - } + +mmap_read_lock (alloc->vma_vm_mm); +if (binder_alloc_get_vma (alloc) ==NULL ) { +mmap_read_unlock (alloc->vma_vm_mm); + goto uninitialized; } + +mmap_read_unlock (alloc->vma_vm_mm); +for (i =0 ; i < alloc->buffer_size /PAGE_SIZE ; i++) { + page = &alloc->pages[i]; +if (!page->page_ptr) + free++; +else if (list_empty (&page->lru)) + active++; +else + lru++; + } + +uninitialized:mutex_unlock (&alloc->mutex);seq_printf (m," pages: %d:%d:%d\n" , active, lru, free);seq_printf (m," pages high watermark: %zu\n" , alloc->pages_high);
drivers/base/node.c +2 -2
@@ -45,7 +45,7 @@ static inline ssize_t cpumap_read(struct file *file, struct kobject *kobj,return n; } -static BIN_ATTR_RO(cpumap, 0); +static BIN_ATTR_RO(cpumap, CPUMAP_FILE_MAX_BYTES); static inline ssize_t cpulist_read(struct file *file, struct kobject *kobj, struct bin_attribute *attr, char *buf,
@@ -66,7 +66,7 @@ static inline ssize_t cpulist_read(struct file *file, struct kobject *kobj,return n; } -static BIN_ATTR_RO(cpulist, 0); +static BIN_ATTR_RO(cpulist, CPULIST_FILE_MAX_BYTES);/** * struct node_access_nodes - Access class device to hold user visible
drivers/base/topology.c +14 -14
@@ -52,39 +52,39 @@ define_id_show_func(core_id);static DEVICE_ATTR_RO (core_id);define_siblings_read_func (thread_siblings, sibling_cpumask); -static BIN_ATTR_RO(thread_siblings, 0); -static BIN_ATTR_RO(thread_siblings_list, 0); +static BIN_ATTR_RO(thread_siblings, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(thread_siblings_list, CPULIST_FILE_MAX_BYTES);define_siblings_read_func (core_cpus, sibling_cpumask); -static BIN_ATTR_RO(core_cpus, 0); -static BIN_ATTR_RO(core_cpus_list, 0); +static BIN_ATTR_RO(core_cpus, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(core_cpus_list, CPULIST_FILE_MAX_BYTES);define_siblings_read_func (core_siblings, core_cpumask); -static BIN_ATTR_RO(core_siblings, 0); -static BIN_ATTR_RO(core_siblings_list, 0); +static BIN_ATTR_RO(core_siblings, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(core_siblings_list, CPULIST_FILE_MAX_BYTES);define_siblings_read_func (die_cpus, die_cpumask); -static BIN_ATTR_RO(die_cpus, 0); -static BIN_ATTR_RO(die_cpus_list, 0); +static BIN_ATTR_RO(die_cpus, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(die_cpus_list, CPULIST_FILE_MAX_BYTES);define_siblings_read_func (package_cpus, core_cpumask); -static BIN_ATTR_RO(package_cpus, 0); -static BIN_ATTR_RO(package_cpus_list, 0); +static BIN_ATTR_RO(package_cpus, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(package_cpus_list, CPULIST_FILE_MAX_BYTES);#ifdef CONFIG_SCHED_BOOK define_id_show_func (book_id);static DEVICE_ATTR_RO (book_id);define_siblings_read_func (book_siblings, book_cpumask); -static BIN_ATTR_RO(book_siblings, 0); -static BIN_ATTR_RO(book_siblings_list, 0); +static BIN_ATTR_RO(book_siblings, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(book_siblings_list, CPULIST_FILE_MAX_BYTES);#endif #ifdef CONFIG_SCHED_DRAWER define_id_show_func (drawer_id);static DEVICE_ATTR_RO (drawer_id);define_siblings_read_func (drawer_siblings, drawer_cpumask); -static BIN_ATTR_RO(drawer_siblings, 0); -static BIN_ATTR_RO(drawer_siblings_list, 0); +static BIN_ATTR_RO(drawer_siblings, CPUMAP_FILE_MAX_BYTES); +static BIN_ATTR_RO(drawer_siblings_list, CPULIST_FILE_MAX_BYTES);#endif static struct bin_attribute *bin_attrs[] = {
drivers/block/loop.c +5 -0
@@ -1154,6 +1154,11 @@ loop_set_status_from_info(struct loop_device *lo, lo->lo_offset = info->lo_offset; lo->lo_sizelimit = info->lo_sizelimit; + +/* loff_t vars have been assigned __u64 */ +if (lo->lo_offset <0 || lo->lo_sizelimit <0 ) +return -EOVERFLOW ; +memcpy (lo->lo_file_name, info->lo_file_name,LO_NAME_SIZE );memcpy (lo->lo_crypt_name, info->lo_crypt_name,LO_NAME_SIZE ); lo->lo_file_name[LO_NAME_SIZE -1 ] =0 ;
drivers/gpu/drm/nouveau/nouveau_bo.c +9 -0
@@ -820,6 +820,15 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict,if (ret ==0 ) { ret =nouveau_fence_new (chan, false, &fence);if (ret ==0 ) { +/* TODO: figure out a better solution here +* +* wait on the fence here explicitly as going through +* ttm_bo_move_accel_cleanup somehow doesn't seem to do it. +* +* Without this the operation can timeout and we'll fallback to a +* software copy, which might take several minutes to finish. +*/ +nouveau_fence_wait (fence, false, false); ret = ttm_bo_move_accel_cleanup(bo, &fence->base, evict, false,
drivers/input/serio/i8042-x86ia64io.h +765 -486
1,776 lines not on this page · raw message
drivers/md/md.c +2 -1
@@ -6251,11 +6251,11 @@ static void mddev_detach(struct mddev *mddev)static void __md_stop (struct mddev *mddev) {struct md_personality *pers = mddev->pers; +md_bitmap_destroy (mddev);mddev_detach (mddev);/* Ensure ->event_work is done */ if (mddev->event_work.func)flush_workqueue (md_misc_wq); -md_bitmap_destroy (mddev);spin_lock (&mddev->lock); mddev->pers =NULL ;spin_unlock (&mddev->lock);
@@ -6272,6 +6272,7 @@ void md_stop(struct mddev *mddev)/* stop the array and free an attached data structures. * This is called from dm-raid */ +__md_stop_writes (mddev);__md_stop (mddev);bioset_exit (&mddev->bio_set);bioset_exit (&mddev->sync_set);
drivers/net/bonding/bond_3ad.c +16 -22
@@ -2007,30 +2007,24 @@ void bond_3ad_initiate_agg_selection(struct bonding *bond, int timeout)*/ void bond_3ad_initialize (struct bonding *bond,u16 tick_resolution) { -/* check that the bond is not initialized yet */ -if (!MAC_ADDRESS_EQUAL (&(BOND_AD_INFO (bond).system.sys_mac_addr), - bond->dev->dev_addr)) { - -BOND_AD_INFO (bond).aggregator_identifier =0 ; - -BOND_AD_INFO (bond).system.sys_priority = - bond->params.ad_actor_sys_prio; -if (is_zero_ether_addr (bond->params.ad_actor_system)) -BOND_AD_INFO (bond).system.sys_mac_addr = - *((struct mac_addr *)bond->dev->dev_addr); -else -BOND_AD_INFO (bond).system.sys_mac_addr = - *((struct mac_addr *)bond->params.ad_actor_system); +BOND_AD_INFO (bond).aggregator_identifier =0 ; +BOND_AD_INFO (bond).system.sys_priority = + bond->params.ad_actor_sys_prio; +if (is_zero_ether_addr (bond->params.ad_actor_system)) +BOND_AD_INFO (bond).system.sys_mac_addr = + *((struct mac_addr *)bond->dev->dev_addr); +else +BOND_AD_INFO (bond).system.sys_mac_addr = + *((struct mac_addr *)bond->params.ad_actor_system); -/* initialize how many times this module is called in one -* second (should be about every 100ms) -*/ - ad_ticks_per_sec = tick_resolution; +/* initialize how many times this module is called in one +* second (should be about every 100ms) +*/ + ad_ticks_per_sec = tick_resolution; -bond_3ad_initiate_agg_selection (bond, -AD_AGGREGATOR_SELECTION_TIMER * - ad_ticks_per_sec); - } +bond_3ad_initiate_agg_selection (bond, +AD_AGGREGATOR_SELECTION_TIMER * + ad_ticks_per_sec); }/**
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c +1 -1
@@ -623,7 +623,7 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs, bool reset) hw_resc->max_stat_ctxs -=le16_to_cpu (req->min_stat_ctx) * n; hw_resc->max_vnics -=le16_to_cpu (req->min_vnics) * n;if (bp->flags &BNXT_FLAG_CHIP_P5 ) - hw_resc->max_irqs -= vf_msix * n; + hw_resc->max_nqs -= vf_msix; rc = pf->active_vfs; }
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +1 -1
@@ -4385,7 +4385,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi, (struct in6_addr *)&ipv6_full_mask)) new_mask |=I40E_L3_V6_DST_MASK ; else if (ipv6_addr_any((struct in6_addr *) - &usr_ip6_spec->ip6src)) + &usr_ip6_spec->ip6dst)) new_mask &= ~I40E_L3_V6_DST_MASK; else return -EOPNOTSUPP;
drivers/net/ethernet/intel/ice/ice_xsk.c +14 -0
@@ -321,6 +321,19 @@ int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid)bool if_running, pool_present = !!pool;int ret =0 , pool_failure =0 ; +if (qid >= vsi->num_rxq || qid >= vsi->num_txq) { +netdev_err (vsi->netdev,"Please use queue id in scope of combined queues count\n" ); + pool_failure = -EINVAL ; + goto failure; + } + +if (!is_power_of_2 (vsi->rx_rings[qid]->count) || + !is_power_of_2 (vsi->tx_rings[qid]->count)) { +netdev_err (vsi->netdev,"Please align ring sizes to power of 2\n" ); + pool_failure = -EINVAL ; + goto failure; + } + if_running =netif_running (vsi->netdev) &&ice_is_xdp_ena_vsi (vsi);if (if_running) {
@@ -343,6 +356,7 @@ int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid)netdev_err (vsi->netdev,"ice_qp_ena error = %d\n" , ret); } +failure:if (pool_failure) {netdev_err (vsi->netdev,"Could not %sable buffer pool, error = %d\n" , pool_present ?"en" :"dis" , pool_failure);
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +46 -13
83 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +3 -9
@@ -3325,7 +3325,9 @@ static int set_feature_hw_tc(struct net_device *netdev, bool enable)struct mlx5e_priv *priv =netdev_priv (netdev);#if IS_ENABLED (CONFIG_MLX5_CLS_ACT ) -if (!enable &&mlx5e_tc_num_filters (priv,MLX5_TC_FLAG (NIC_OFFLOAD ))) { +int tc_flag =mlx5e_is_uplink_rep (priv) ?MLX5_TC_FLAG (ESW_OFFLOAD ) : +MLX5_TC_FLAG (NIC_OFFLOAD ); +if (!enable &&mlx5e_tc_num_filters (priv, tc_flag)) {netdev_err (netdev,"Active offloaded tc filters, can't turn hw_tc_offload off\n" );return -EINVAL ;
@@ -4350,14 +4352,6 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16/* RQ */ mlx5e_build_rq_params (mdev, params); -/* HW LRO */ -if (MLX5_CAP_ETH (mdev, lro_cap) && - params->rq_wq_type ==MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ ) { -/* No XSK params: checking the availability of striding RQ in general. */ -if (!mlx5e_rx_mpwqe_is_linear_skb (mdev, params,NULL )) - params->packet_merge.type =slow_pci_heuristic (mdev) ? -MLX5E_PACKET_MERGE_NONE :MLX5E_PACKET_MERGE_LRO ; - } params->packet_merge.timeout =mlx5e_choose_lro_timeout (mdev,MLX5E_DEFAULT_LRO_TIMEOUT );/* CQ moderation params */
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +2 -0
@@ -618,6 +618,8 @@ static void mlx5e_build_rep_params(struct net_device *netdev) params->mqprio.num_tc =1 ; params->tunneled_offload_en = false; +if (rep->vport !=MLX5_VPORT_UPLINK ) + params->vlan_strip_disable = true;/* Set an initial non-zero value, so that mlx5e_select_queue won't * divide by zero if called before first activating channels.
drivers/net/ethernet/mellanox/mlx5/core/main.c +4 -0
@@ -1427,7 +1427,9 @@ int mlx5_mdev_init(struct mlx5_core_dev *dev, int profile_idx)memcpy (&dev->profile, &profile[profile_idx],sizeof (dev->profile));INIT_LIST_HEAD (&priv->ctx_list);spin_lock_init (&priv->ctx_lock); +lockdep_register_key (&dev->lock_key);mutex_init (&dev->intf_state_mutex); +lockdep_set_class (&dev->intf_state_mutex, &dev->lock_key);mutex_init (&priv->bfregs.reg_head.lock);mutex_init (&priv->bfregs.wc_head.lock);
@@ -1474,6 +1476,7 @@ int mlx5_mdev_init(struct mlx5_core_dev *dev, int profile_idx)mutex_destroy (&priv->bfregs.wc_head.lock);mutex_destroy (&priv->bfregs.reg_head.lock);mutex_destroy (&dev->intf_state_mutex); +lockdep_unregister_key (&dev->lock_key);return err; }
@@ -1491,6 +1494,7 @@ void mlx5_mdev_uninit(struct mlx5_core_dev *dev)mutex_destroy (&priv->bfregs.wc_head.lock);mutex_destroy (&priv->bfregs.reg_head.lock);mutex_destroy (&dev->intf_state_mutex); +lockdep_unregister_key (&dev->lock_key); }static int probe_one (struct pci_dev *pdev,const struct pci_device_id *id)
drivers/net/ethernet/moxa/moxart_ether.c +6 -5
@@ -74,11 +74,6 @@ static int moxart_set_mac_address(struct net_device *ndev, void *addr)static void moxart_mac_free_memory (struct net_device *ndev) {struct moxart_mac_priv_t *priv =netdev_priv (ndev); -int i; - -for (i =0 ; i <RX_DESC_NUM ; i++) -dma_unmap_single (&priv->pdev->dev, priv->rx_mapping[i], - priv->rx_buf_size,DMA_FROM_DEVICE );if (priv->tx_desc_base) dma_free_coherent(&priv->pdev->dev,
@@ -193,6 +188,7 @@ static int moxart_mac_open(struct net_device *ndev)static int moxart_mac_stop (struct net_device *ndev) {struct moxart_mac_priv_t *priv =netdev_priv (ndev); +int i;napi_disable (&priv->napi);
@@ -204,6 +200,11 @@ static int moxart_mac_stop(struct net_device *ndev)/* disable all functions */ writel (0 , priv->base +REG_MAC_CTRL ); +/* unmap areas mapped in moxart_mac_setup_desc_ring() */ +for (i =0 ; i <RX_DESC_NUM ; i++) +dma_unmap_single (&priv->pdev->dev, priv->rx_mapping[i], + priv->rx_buf_size,DMA_FROM_DEVICE ); +return 0 ; }
drivers/net/ethernet/pensando/ionic/ionic_lif.c +101 -8
163 lines not on this page · raw message
drivers/net/ethernet/pensando/ionic/ionic_main.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/net/usb/smsc95xx.c +58 -81
139 lines not on this page · raw message
drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/scsi/qla2xxx/qla_isr.c +46 -30
76 lines not on this page · raw message
include/linux/netfilter_bridge/ebtables.h +0 -4
Lines of this file are not shown. View the raw message.
net/mptcp/protocol.c +78 -60
138 lines not on this page · raw message
net/netfilter/nf_tables_api.c +54 -42
96 lines not on this page · raw message
net/netfilter/nf_tables_core.c +48 -7
55 lines not on this page · raw message
net/netfilter/nft_bitwise.c +34 -33
67 lines not on this page · raw message
net/netfilter/nft_cmp.c +117 -23
140 lines not on this page · raw message
net/rxrpc/sendmsg.c +54 -38
92 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.