Linux 5.10.155
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.155 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/virt/kvm/devices/vm.rst | 3 Makefile | 2 arch/arm64/kernel/efi.c | 52 +- arch/mips/kernel/jump_label.c | 2 arch/riscv/include/asm/pgtable.h | 1 arch/riscv/kernel/process.c | 2 arch/riscv/kernel/setup.c | 2 arch/riscv/kernel/vdso/Makefile | 2 arch/riscv/mm/init.c | 15 arch/s390/kvm/kvm-s390.c | 31 + arch/s390/kvm/kvm-s390.h | 3 arch/s390/kvm/priv.c | 15 arch/x86/include/asm/msr-index.h | 8 arch/x86/kernel/cpu/amd.c | 6 arch/x86/kernel/cpu/hygon.c | 4 arch/x86/kvm/svm/svm.c | 10 arch/x86/kvm/x86.c | 2 arch/x86/power/cpu.c | 1 drivers/ata/libata-scsi.c | 3 drivers/dma/at_hdmac.c | 153 ++---- drivers/dma/at_hdmac_regs.h | 10 drivers/dma/mv_xor_v2.c | 1 drivers/dma/pxa_dma.c | 4 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 4 drivers/gpu/drm/vc4/vc4_drv.c | 7 drivers/hid/hid-hyperv.c | 2 drivers/hwspinlock/qcom_hwspinlock.c | 2 drivers/mmc/host/sdhci-cqhci.h | 24 drivers/mmc/host/sdhci-esdhc-imx.c | 89 --- drivers/mmc/host/sdhci-of-arasan.c | 3 drivers/mmc/host/sdhci-tegra.c | 3 drivers/mmc/host/sdhci_am654.c | 7 drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 4 drivers/net/ethernet/aquantia/atlantic/aq_macsec.c | 2 drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c | 18 drivers/net/ethernet/broadcom/Kconfig | 2 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 1 drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 2 drivers/net/ethernet/freescale/fman/mac.c | 9 drivers/net/ethernet/marvell/mv643xx_eth.c | 1 drivers/net/ethernet/marvell/prestera/prestera_rxtx.c | 7 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 11 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c | 14 drivers/net/ethernet/neterion/s2io.c | 29 - drivers/net/ethernet/ni/nixge.c | 1 drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 8 drivers/net/ethernet/ti/cpsw.c | 2 drivers/net/ethernet/tundra/tsi108_eth.c | 5 drivers/net/hamradio/bpqether.c | 2 drivers/net/macsec.c | 23 drivers/net/macvlan.c | 4 drivers/net/phy/mscc/mscc_macsec.c | 1 drivers/net/tun.c | 18 drivers/net/wan/lapbether.c | 2 drivers/phy/st/phy-stm32-usbphyc.c | 2 drivers/platform/x86/hp-wmi.c | 12 fs/btrfs/tests/btrfs-tests.c | 2 fs/fuse/readdir.c | 10 fs/io_uring.c | 3 fs/nilfs2/segment.c | 15 fs/nilfs2/super.c | 2 fs/nilfs2/the_nilfs.c | 2 fs/udf/namei.c | 2 include/asm-generic/vmlinux.lds.h | 2 include/linux/bpf_verifier.h | 23 include/uapi/linux/capability.h | 2 kernel/bpf/verifier.c | 252 +++++----- mm/memremap.c | 1 net/can/af_can.c | 2 net/can/j1939/main.c | 3 net/core/skbuff.c | 36 - net/ipv4/tcp.c | 2 net/ipv4/tcp_bpf.c | 8 net/ipv6/addrlabel.c | 1 net/tipc/netlink_compat.c | 2 net/wireless/reg.c | 12 net/wireless/scan.c | 4 scripts/extract-cert.c | 7 scripts/sign-file.c | 7 sound/hda/hdac_sysfs.c | 4 sound/pci/hda/hda_intel.c | 3 sound/pci/hda/patch_ca0132.c | 1 sound/pci/hda/patch_realtek.c | 1 sound/usb/quirks-table.h | 4 sound/usb/quirks.c | 1 tools/arch/x86/include/asm/msr-index.h | 8 tools/bpf/bpftool/common.c | 3 tools/perf/util/stat-display.c | 2 90 files changed, 611 insertions(+), 473 deletions(-)
Alex Barba (1):
bnxt_en: fix potentially incorrect return value for ndo_rx_flow_steer
Alexander Potapenko (1):
ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to network
Alexei Starovoitov (1):
bpf: Support for pointers beyond pkt_end.
Antoine Tenart (2):
net: phy: mscc: macsec: clear encryption keys when freeing a flow
net: atlantic: macsec: clear encryption keys from the stack
Ard Biesheuvel (1):
arm64: efi: Fix handling of misaligned runtime regions and drop warning
Arend van Spriel (1):
wifi: cfg80211: fix memory leak in query_regdb_file()
Athira Rajeev (1):
perf stat: Fix printing os->prefix in CSV metrics output
Atish Patra (1):
riscv: Separate memory init from paging init
Borislav Petkov (1):
x86/cpu: Restore AMD's DE_CFG MSR after resume
Brian Norris (5):
mmc: cqhci: Provide helper for resetting both SDHCI and CQHCI
mmc: sdhci-of-arasan: Fix SDHCI_RESET_ALL for CQHCI
mmc: sdhci_am654: Fix SDHCI_RESET_ALL for CQHCI
mmc: sdhci-tegra: Fix SDHCI_RESET_ALL for CQHCI
mms: sdhci-esdhc-imx: Fix SDHCI_RESET_ALL for CQHCI
Christophe JAILLET (1):
dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove()
Chuang Wang (1):
net: macvlan: fix memory leaks of macvlan_common_newlink
Claudio Imbrenda (1):
KVM: s390x: fix SCK locking
Conor Dooley (1):
riscv: fix reserved memory setup
Dan Carpenter (1):
phy: stm32: fix an error code in probe
Doug Brown (1):
dmaengine: pxa_dma: use platform_get_irq_optional
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Add Positivo C6300 model quirk
Eric Dumazet (1):
net: tun: call napi_schedule_prep() to ensure we own a napi
Evan Quan (1):
ALSA: hda/hdmi - enable runtime pm for more AMD display audio
Fabio Estevam (1):
mmc: sdhci-esdhc-imx: Convert the driver to DT-only
Gaosheng Cui (1):
capabilities: fix undefined behavior in bit shift for CAP_TO_MASK
Greg Kroah-Hartman (1):
Linux 5.10.155
Jens Axboe (1):
io_uring: kill goto error handling in io_sqpoll_wait_sq()
Jiaxun Yang (1):
MIPS: jump_label: Fix compat branch range check
Jiri Benc (1):
net: gso: fix panic on frag_list with mixed head alloc types
Jisheng Zhang (2):
riscv: process: fix kernel info leakage
riscv: vdso: fix build with llvm
Johannes Berg (1):
wifi: cfg80211: silence a sparse RCU warning
Jorge Lopez (1):
platform/x86: hp_wmi: Fix rfkill causing soft blocked wifi
Jussi Laako (1):
ALSA: usb-audio: Add DSD support for Accuphase DAC-60
Kefeng Wang (1):
riscv: Enable CMA support
Krzysztof Kozlowski (1):
hwspinlock: qcom: correct MMIO max register for newer SoCs
Kumar Kartikeya Dwivedi (1):
bpf: Add helper macro bpf_for_each_reg_in_vstate
Linus Torvalds (1):
cert host tools: Stop complaining about deprecated OpenSSL functions
Lu Wei (1):
tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent
Matthew Auld (1):
drm/i915/dmabuf: fix sg_table handling in map_dma_buf
Michael Chan (1):
bnxt_en: Fix possible crash in bnxt_hwrm_set_coal()
Miklos Szeredi (1):
fuse: fix readdir cache race
Nathan Chancellor (1):
vmlinux.lds.h: Fix placement of '.data..decrypted' section
Nico Boehr (1):
KVM: s390: pv: don't allow userspace to set the clock under PV
Oliver Hartkopp (1):
can: j1939: j1939_send_one(): fix missing CAN header initialization
Pankaj Gupta (1):
mm/memremap.c: map FS_DAX device memory as decrypted
Pu Lehui (1):
bpftool: Fix NULL pointer dereference when pin {PROG, MAP, LINK} without FILE
Rasmus Villemoes (1):
net: stmmac: dwmac-meson8b: fix meson8b_devm_clk_prepare_enable()
Roi Dayan (1):
net/mlx5e: E-Switch, Fix comparing termination table instance
Roy Novich (1):
net/mlx5: Allow async trigger completion execution on single CPU systems
Ryusuke Konishi (2):
nilfs2: fix deadlock in nilfs_count_free_blocks()
nilfs2: fix use-after-free bug of ns_writer on remount
Sabrina Dubroca (4):
macsec: delete new rxsc when offload fails
macsec: fix secy->n_rx_sc accounting
macsec: fix detection of RXSCs when toggling offloading
macsec: clear encryption keys from the stack after setting up offload
Sean Anderson (1):
net: fman: Unregister ethernet device on removal
Shin'ichiro Kawasaki (1):
ata: libata-scsi: fix SYNCHRONIZE CACHE (16) command failure
Takashi Iwai (1):
ALSA: usb-audio: Add quirk entry for M-Audio Micro
Tudor Ambarus (15):
dmaengine: at_hdmac: Fix at_lli struct definition
dmaengine: at_hdmac: Don't start transactions at tx_submit level
dmaengine: at_hdmac: Start transfer for cyclic channels in issue_pending
dmaengine: at_hdmac: Fix premature completion of desc in issue_pending
dmaengine: at_hdmac: Do not call the complete callback on device_terminate_all
dmaengine: at_hdmac: Protect atchan->status with the channel lock
dmaengine: at_hdmac: Fix concurrency problems by removing atc_complete_all()
dmaengine: at_hdmac: Fix concurrency over descriptor
dmaengine: at_hdmac: Free the memset buf without holding the chan lock
dmaengine: at_hdmac: Fix concurrency over the active list
dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware
dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors
dmaengine: at_hdmac: Don't allow CPU to reorder channel enable
dmaengine: at_hdmac: Fix impossible condition
dmaengine: at_hdmac: Check return code of dma_async_device_register
Wang Yufen (2):
bpf, sockmap: Fix the sk->sk_forward_alloc warning of sk_stream_kill_queues
net: tun: Fix memory leaks of napi_get_frags
Xian Wang (1):
ALSA: hda/ca0132: add quirk for EVGA Z390 DARK
Xin Long (1):
tipc: fix the msg->req tlv len check in tipc_nl_compat_name_table_dump_header
Yang Yingliang (1):
HID: hyperv: fix possible memory leak in mousevsc_probe()
Ye Bin (1):
ALSA: hda: fix potential memleak in 'add_widget_node'
Youlin Li (1):
bpf: Fix wrong reg type conversion in release_reference()
Yuan Can (1):
drm/vc4: Fix missing platform_unregister_drivers() call in vc4_drm_register()
YueHaibing (1):
net: broadcom: Fix BCMGENET Kconfig
Zhang Xiaoxu (1):
btrfs: selftests: fix wrong error check in btrfs_free_dummy_root()
ZhangPeng (1):
udf: Fix a slab-out-of-bounds write bug in udf_find_entry()
Zhengchao Shao (12):
net: lapbether: fix issue of dev reference count leakage in lapbeth_device_event()
hamradio: fix issue of dev reference count leakage in bpq_device_event()
can: af_can: fix NULL pointer dereference in can_rx_register()
drivers: net: xgene: disable napi when register irq failed in xgene_enet_open()
net: marvell: prestera: fix memory leak in prestera_rxtx_switch_init()
net: nixge: disable napi when enable interrupts failed in nixge_open()
net: cpsw: disable napi in cpsw_ndo_open()
net: cxgb3_main: disable napi when bind qsets failed in cxgb_up()
cxgb4vf: shut down the adapter when t4vf_update_port_info() failed in cxgb4vf_open()
ethernet: s2io: disable napi when start nic failed in s2io_card_up()
net: mv643xx_eth: disable napi when init rxq or txq failed in mv643xx_eth_open()
ethernet: tundra: free irq when alloc ring failed in tsi108_open()
Greg Kroah-Hartman
maintainerDocumentation/virt/kvm/devices/vm.rst +3 -0
@@ -215,6 +215,7 @@ KVM_S390_VM_TOD_EXT). :Parameters: address of a buffer in user space to store the data (u8) to :Returns: -EFAULT if the given address is not accessible from kernel space; -EINVAL if setting the TOD clock extension to != 0 is not supported + -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) 3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW -----------------------------------
@@ -224,6 +225,7 @@ the POP (u64). :Parameters: address of a buffer in user space to store the data (u64) to :Returns: -EFAULT if the given address is not accessible from kernel space + -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) 3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT -----------------------------------
@@ -237,6 +239,7 @@ it, it is stored as 0 and not allowed to be set to a value != 0. (kvm_s390_vm_tod_clock) to :Returns: -EFAULT if the given address is not accessible from kernel space; -EINVAL if setting the TOD clock extension to != 0 is not supported + -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) 4. GROUP: KVM_S390_VM_CRYPTO ============================
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 154 +SUBLEVEL = 155 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/kernel/efi.c +34 -18
79 lines not on this page · raw message
arch/mips/kernel/jump_label.c +1 -1
@@ -56,7 +56,7 @@ void arch_jump_label_transform(struct jump_entry *e,* The branch offset must fit in the instruction's 26 * bit field. */ -WARN_ON ((offset >=BIT (25 )) || +WARN_ON ((offset >= (long )BIT (25 )) || (offset < -(long )BIT (25 ))); insn.j_format.opcode = bc6_op;
arch/riscv/include/asm/pgtable.h +1 -0
@@ -470,6 +470,7 @@ extern void *dtb_early_va;extern uintptr_t dtb_early_pa;void setup_bootmem (void );void paging_init (void ); +void misc_mem_init (void );#define FIRST_USER_ADDRESS 0
arch/riscv/kernel/process.c +2 -0
@@ -111,6 +111,8 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg, {struct pt_regs *childregs =task_pt_regs (p); +memset (&p->thread.s,0 ,sizeof (p->thread.s)); +/* p->thread holds context to be restored by __switch_to() */ if (unlikely (p->flags &PF_KTHREAD )) {/* Kernel thread */
arch/riscv/kernel/setup.c +2 -0
@@ -96,6 +96,8 @@ void __init setup_arch(char **cmdline_p) else pr_err("No DTB found in kernel mappings\n");#endif +early_init_fdt_scan_reserved_mem (); +misc_mem_init ();#ifdef CONFIG_SWIOTLB swiotlb_init (1 );
arch/riscv/kernel/vdso/Makefile +1 -1
@@ -30,7 +30,7 @@ obj-y += vdso.o vdso-syms.o CPPFLAGS_vdso.lds += -P -C -U$(ARCH) # Disable -pg to prevent insert call site -CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os +CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) # Disable profiling and instrumentation for VDSO code GCOV_PROFILE := n
arch/riscv/mm/init.c +11 -4
@@ -13,6 +13,7 @@#include <linux/of_fdt.h> #include <linux/libfdt.h> #include <linux/set_memory.h> +#include <linux/dma-map-ops.h> #include <asm/fixmap.h> #include <asm/tlbflush.h>
@@ -41,13 +42,14 @@ struct pt_alloc_ops {#endif }; +static phys_addr_t dma32_phys_limit__ro_after_init ; +static void __init zone_sizes_init (void ) {unsigned long max_zone_pfns[MAX_NR_ZONES ] = {0 , };#ifdef CONFIG_ZONE_DMA32 - max_zone_pfns[ZONE_DMA32 ] =PFN_DOWN (min (4UL *SZ_1G , - (unsigned long )PFN_PHYS (max_low_pfn))); + max_zone_pfns[ZONE_DMA32 ] =PFN_DOWN (dma32_phys_limit);#endif max_zone_pfns[ZONE_NORMAL ] = max_low_pfn;
@@ -193,6 +195,7 @@ void __init setup_bootmem(void) max_pfn =PFN_DOWN (dram_end); max_low_pfn = max_pfn; + dma32_phys_limit =min (4UL *SZ_1G , (unsigned long )PFN_PHYS (max_low_pfn));set_max_mapnr (max_low_pfn);#ifdef CONFIG_BLK_DEV_INITRD
@@ -205,7 +208,7 @@ void __init setup_bootmem(void)*/ memblock_reserve (dtb_early_pa,fdt_totalsize (dtb_early_va)); -early_init_fdt_scan_reserved_mem (); +dma_contiguous_reserve (dma32_phys_limit);memblock_allow_resize ();memblock_dump_all (); }
@@ -665,8 +668,12 @@ static void __init resource_init(void)void __init paging_init (void ) {setup_vm_final (); -sparse_init ();setup_zero_page (); +} + +void __init misc_mem_init (void ) +{ +sparse_init ();zone_sizes_init ();resource_init (); }
arch/s390/kvm/kvm-s390.c +26 -5
@@ -1092,6 +1092,8 @@ static int kvm_s390_vm_get_migration(struct kvm *kvm,return 0 ; } +static void __kvm_s390_set_tod_clock (struct kvm *kvm,const struct kvm_s390_vm_tod_clock *gtod); +static int kvm_s390_set_tod_ext (struct kvm *kvm,struct kvm_device_attr *attr) {struct kvm_s390_vm_tod_clock gtod;
@@ -1101,7 +1103,7 @@ static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr)if (!test_kvm_facility (kvm,139 ) && gtod.epoch_idx)return -EINVAL ; -kvm_s390_set_tod_clock (kvm, >od); +__kvm_s390_set_tod_clock (kvm, >od);VM_EVENT (kvm,3 ,"SET: TOD extension: 0x%x, TOD base: 0x%llx" , gtod.epoch_idx, gtod.tod);
@@ -1132,7 +1134,7 @@ static int kvm_s390_set_tod_low(struct kvm *kvm, struct kvm_device_attr *attr) sizeof(gtod.tod)))return -EFAULT ; -kvm_s390_set_tod_clock (kvm, >od); +__kvm_s390_set_tod_clock (kvm, >od);VM_EVENT (kvm,3 ,"SET: TOD base: 0x%llx" , gtod.tod);return 0 ; }
@@ -1144,6 +1146,16 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr)if (attr->flags)return -EINVAL ; +mutex_lock (&kvm->lock); +/* +* For protected guests, the TOD is managed by the ultravisor, so trying +* to change it will never bring the expected results. +*/ +if (kvm_s390_pv_is_protected (kvm)) { + ret = -EOPNOTSUPP ; + goto out_unlock; + } +switch (attr->attr) {case KVM_S390_VM_TOD_EXT : ret =kvm_s390_set_tod_ext (kvm, attr);
@@ -1158,6 +1170,9 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) ret = -ENXIO ;break ; } + +out_unlock: +mutex_unlock (&kvm->lock);return ret; }
@@ -3862,14 +3877,12 @@ static int kvm_s390_handle_requests(struct kvm_vcpu *vcpu)return 0 ; } -void kvm_s390_set_tod_clock (struct kvm *kvm, -const struct kvm_s390_vm_tod_clock *gtod) +static void __kvm_s390_set_tod_clock (struct kvm *kvm,const struct kvm_s390_vm_tod_clock *gtod) {struct kvm_vcpu *vcpu;struct kvm_s390_tod_clock_ext htod;int i; -mutex_lock (&kvm->lock);preempt_disable ();get_tod_clock_ext ((char *)&htod);
@@ -3890,7 +3903,15 @@ void kvm_s390_set_tod_clock(struct kvm *kvm,kvm_s390_vcpu_unblock_all (kvm);preempt_enable (); +} + +int kvm_s390_try_set_tod_clock (struct kvm *kvm,const struct kvm_s390_vm_tod_clock *gtod) +{ +if (!mutex_trylock (&kvm->lock)) +return 0 ; +__kvm_s390_set_tod_clock (kvm, gtod);mutex_unlock (&kvm->lock); +return 1 ; }/**
arch/s390/kvm/kvm-s390.h +1 -2
@@ -326,8 +326,7 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu);int kvm_s390_handle_sigp_pei (struct kvm_vcpu *vcpu);/* implemented in kvm-s390.c */ -void kvm_s390_set_tod_clock (struct kvm *kvm, -const struct kvm_s390_vm_tod_clock *gtod); +int kvm_s390_try_set_tod_clock (struct kvm *kvm,const struct kvm_s390_vm_tod_clock *gtod);long kvm_arch_fault_in_page (struct kvm_vcpu *vcpu,gpa_t gpa,int writable);int kvm_s390_store_status_unloaded (struct kvm_vcpu *vcpu,unsigned long addr);int kvm_s390_vcpu_store_status (struct kvm_vcpu *vcpu,unsigned long addr);
arch/s390/kvm/priv.c +14 -1
@@ -102,7 +102,20 @@ static int handle_set_clock(struct kvm_vcpu *vcpu)return kvm_s390_inject_prog_cond (vcpu, rc);VCPU_EVENT (vcpu,3 ,"SCK: setting guest TOD to 0x%llx" , gtod.tod); -kvm_s390_set_tod_clock (vcpu->kvm, >od); +/* +* To set the TOD clock the kvm lock must be taken, but the vcpu lock +* is already held in handle_set_clock. The usual lock order is the +* opposite. As SCK is deprecated and should not be used in several +* cases, for example when the multiple epoch facility or TOD clock +* steering facility is installed (see Principles of Operation), a +* slow path can be used. If the lock can not be taken via try_lock, +* the instruction will be retried via -EAGAIN at a later point in +* time. +*/ +if (!kvm_s390_try_set_tod_clock (vcpu->kvm, >od)) { +kvm_s390_retry_instr (vcpu); +return -EAGAIN ; + }kvm_s390_set_psw_cc (vcpu,0 );return 0 ;
arch/x86/include/asm/msr-index.h +5 -3
@@ -489,6 +489,11 @@#define MSR_AMD64_CPUID_FN_1 0xc0011004#define MSR_AMD64_LS_CFG 0xc0011020#define MSR_AMD64_DC_CFG 0xc0011022 + +#define MSR_AMD64_DE_CFG 0xc0011029 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE BIT_ULL(MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT) +#define MSR_AMD64_BU_CFG2 0xc001102a#define MSR_AMD64_IBSFETCHCTL 0xc0011030#define MSR_AMD64_IBSFETCHLINAD 0xc0011031
@@ -565,9 +570,6 @@#define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL#define FAM10H_MMIO_CONF_BASE_SHIFT 20#define MSR_FAM10H_NODE_ID 0xc001100c -#define MSR_F10H_DECFG 0xc0011029 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT 1 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE BIT_ULL(MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT)/* K8 MSRs */ #define MSR_K8_TOP_MEM1 0xc001001a
arch/x86/kernel/cpu/amd.c +2 -4
@@ -822,8 +822,6 @@ static void init_amd_gh(struct cpuinfo_x86 *c)set_cpu_bug (c,X86_BUG_AMD_TLB_MMATCH ); } -#define MSR_AMD64_DE_CFG 0xC0011029 -static void init_amd_ln (struct cpuinfo_x86 *c) {/*
@@ -1018,8 +1016,8 @@ static void init_amd(struct cpuinfo_x86 *c)* msr_set_bit() uses the safe accessors, too, even if the MSR * is not present. */ -msr_set_bit (MSR_F10H_DECFG , -MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT ); +msr_set_bit (MSR_AMD64_DE_CFG , +MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT );/* A serializing LFENCE stops RDTSC speculation */ set_cpu_cap (c,X86_FEATURE_LFENCE_RDTSC );
arch/x86/kernel/cpu/hygon.c +2 -2
@@ -342,8 +342,8 @@ static void init_hygon(struct cpuinfo_x86 *c)* msr_set_bit() uses the safe accessors, too, even if the MSR * is not present. */ -msr_set_bit (MSR_F10H_DECFG , -MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT ); +msr_set_bit (MSR_AMD64_DE_CFG , +MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT );/* A serializing LFENCE stops RDTSC speculation */ set_cpu_cap (c,X86_FEATURE_LFENCE_RDTSC );
arch/x86/kvm/svm/svm.c +5 -5
@@ -2475,9 +2475,9 @@ static int svm_get_msr_feature(struct kvm_msr_entry *msr) msr->data =0 ;switch (msr->index) { -case MSR_F10H_DECFG : -if (boot_cpu_has (X86_FEATURE_LFENCE_RDTSC )) - msr->data |=MSR_F10H_DECFG_LFENCE_SERIALIZE ; +case MSR_AMD64_DE_CFG : +if (cpu_feature_enabled (X86_FEATURE_LFENCE_RDTSC )) + msr->data |=MSR_AMD64_DE_CFG_LFENCE_SERIALIZE ;break ;case MSR_IA32_PERF_CAPABILITIES :return 0 ;
@@ -2584,7 +2584,7 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data =0x1E ; }break ; -case MSR_F10H_DECFG : +case MSR_AMD64_DE_CFG : msr_info->data = svm->msr_decfg;break ;default :
@@ -2764,7 +2764,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)case MSR_VM_IGNNE :vcpu_unimpl (vcpu,"unimplemented wrmsr: 0x%x data 0x%llx\n" , ecx, data);break ; -case MSR_F10H_DECFG : { +case MSR_AMD64_DE_CFG : {struct kvm_msr_entry msr_entry; msr_entry.index = msr->index;
arch/x86/kvm/x86.c +1 -1
@@ -1362,7 +1362,7 @@ static const u32 msr_based_features_all[] = {MSR_IA32_VMX_EPT_VPID_CAP ,MSR_IA32_VMX_VMFUNC , -MSR_F10H_DECFG , +MSR_AMD64_DE_CFG ,MSR_IA32_UCODE_REV ,MSR_IA32_ARCH_CAPABILITIES , MSR_IA32_PERF_CAPABILITIES,
arch/x86/power/cpu.c +1 -0
@@ -522,6 +522,7 @@ static void pm_save_spec_msr(void)MSR_TSX_FORCE_ABORT ,MSR_IA32_MCU_OPT_CTRL ,MSR_AMD64_LS_CFG , +MSR_AMD64_DE_CFG , };msr_build_context (spec_msr_id,ARRAY_SIZE (spec_msr_id));
drivers/ata/libata-scsi.c +3 -0
@@ -3303,6 +3303,7 @@ static unsigned int ata_scsiop_maint_in(struct ata_scsi_args *args, u8 *rbuf)case REPORT_LUNS :case REQUEST_SENSE :case SYNCHRONIZE_CACHE : +case SYNCHRONIZE_CACHE_16 :case REZERO_UNIT :case SEEK_6 :case SEEK_10 :
@@ -3969,6 +3970,7 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd)return ata_scsi_write_same_xlat;case SYNCHRONIZE_CACHE : +case SYNCHRONIZE_CACHE_16 :if (ata_try_flush_cache (dev))return ata_scsi_flush_xlat;break ;
@@ -4215,6 +4217,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd)* turning this into a no-op. */ case SYNCHRONIZE_CACHE : +case SYNCHRONIZE_CACHE_16 : fallthrough;/* no-op's, complete with success */
drivers/dma/at_hdmac.c +60 -93
274 lines not on this page · raw message
drivers/dma/at_hdmac_regs.h +5 -5
@@ -164,13 +164,13 @@/* LLI == Linked List Item; aka DMA buffer descriptor */ struct at_lli {/* values that are not changed by hardware */ -dma_addr_t saddr; -dma_addr_t daddr; +u32 saddr; +u32 daddr;/* value that may get written back: */ -u32 ctrla; +u32 ctrla;/* more values that are not changed by hardware */ -u32 ctrlb; -dma_addr_t dscr;/* chain to next lli */ +u32 ctrlb; +u32 dscr;/* chain to next lli */ };/**
drivers/dma/mv_xor_v2.c +1 -0
@@ -899,6 +899,7 @@ static int mv_xor_v2_remove(struct platform_device *pdev)tasklet_kill (&xor_dev->irq_tasklet);clk_disable_unprepare (xor_dev->clk); +clk_disable_unprepare (xor_dev->reg_clk);return 0 ; }
drivers/dma/pxa_dma.c +2 -2
@@ -1249,14 +1249,14 @@ static int pxad_init_phys(struct platform_device *op,return -ENOMEM ;for (i =0 ; i < nb_phy_chans; i++) -if (platform_get_irq (op, i) >0 ) +if (platform_get_irq_optional (op, i) >0 ) nr_irq++;for (i =0 ; i < nb_phy_chans; i++) { phy = &pdev->phys[i]; phy->base = pdev->base; phy->idx = i; - irq =platform_get_irq (op, i); + irq =platform_get_irq_optional (op, i);if ((nr_irq >1 ) && (irq >0 )) ret = devm_request_irq(&op->dev, irq, pxad_chan_handler,
drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c +2 -2
@@ -36,13 +36,13 @@ static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachme goto err_unpin_pages; } - ret =sg_alloc_table (st, obj->mm.pages->nents,GFP_KERNEL ); + ret =sg_alloc_table (st, obj->mm.pages->orig_nents,GFP_KERNEL );if (ret) goto err_free; src = obj->mm.pages->sgl; dst = st->sgl; -for (i =0 ; i < obj->mm.pages->nents; i++) { +for (i =0 ; i < obj->mm.pages->orig_nents; i++) {sg_set_page (dst,sg_page (src), src->length,0 ); dst =sg_next (dst); src =sg_next (src);
drivers/gpu/drm/vc4/vc4_drv.c +6 -1
@@ -404,7 +404,12 @@ static int __init vc4_drm_register(void)if (ret)return ret; -return platform_driver_register (&vc4_platform_driver); + ret =platform_driver_register (&vc4_platform_driver); +if (ret) +platform_unregister_drivers (component_drivers, +ARRAY_SIZE (component_drivers)); + +return ret; } static void __exit vc4_drm_unregister(void)
drivers/hid/hid-hyperv.c +1 -1
@@ -498,7 +498,7 @@ static int mousevsc_probe(struct hv_device *device, ret =hid_add_device (hid_dev);if (ret) - goto probe_err1; + goto probe_err2; ret =hid_parse (hid_dev);
drivers/hwspinlock/qcom_hwspinlock.c +1 -1
@@ -105,7 +105,7 @@ static const struct regmap_config tcsr_mutex_config = { .reg_bits = 32, .reg_stride = 4, .val_bits = 32, - .max_register = 0x40000, + .max_register = 0x20000, .fast_io = true, };
drivers/mmc/host/sdhci-cqhci.h new file +24 -0
@@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* +* Copyright 2022 The Chromium OS Authors +* +* Support that applies to the combination of SDHCI and CQHCI, while not +* expressing a dependency between the two modules. +*/ + +#ifndef __MMC_HOST_SDHCI_CQHCI_H__ +#define __MMC_HOST_SDHCI_CQHCI_H__ + +#include "cqhci.h" +#include "sdhci.h" + +static inline void sdhci_and_cqhci_reset (struct sdhci_host *host,u8 mask) +{ +if ((host->mmc->caps2 &MMC_CAP2_CQE ) && (mask &SDHCI_RESET_ALL ) && + host->mmc->cqe_private) +cqhci_deactivate (host->mmc); + +sdhci_reset (host, mask); +} + +#endif /* __MMC_HOST_SDHCI_CQHCI_H__ */
drivers/mmc/host/sdhci-esdhc-imx.c +3 -86
125 lines not on this page · raw message
drivers/mmc/host/sdhci-of-arasan.c +2 -1
@@ -25,6 +25,7 @@#include <linux/firmware/xlnx-zynqmp.h> #include "cqhci.h" +#include "sdhci-cqhci.h" #include "sdhci-pltfm.h" #define SDHCI_ARASAN_VENDOR_REGISTER 0x78
@@ -359,7 +360,7 @@ static void sdhci_arasan_reset(struct sdhci_host *host, u8 mask)struct sdhci_pltfm_host *pltfm_host =sdhci_priv (host);struct sdhci_arasan_data *sdhci_arasan =sdhci_pltfm_priv (pltfm_host); -sdhci_reset (host, mask); +sdhci_and_cqhci_reset (host, mask);if (sdhci_arasan->quirks &SDHCI_ARASAN_QUIRK_FORCE_CDTEST ) { ctrl =sdhci_readb (host,SDHCI_HOST_CONTROL );
drivers/mmc/host/sdhci-tegra.c +2 -1
@@ -24,6 +24,7 @@#include <linux/gpio/consumer.h> #include <linux/ktime.h> +#include "sdhci-cqhci.h" #include "sdhci-pltfm.h" #include "cqhci.h"
@@ -361,7 +362,7 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask)const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data;u32 misc_ctrl, clk_ctrl, pad_ctrl; -sdhci_reset (host, mask); +sdhci_and_cqhci_reset (host, mask);if (!(mask &SDHCI_RESET_ALL ))return ;
drivers/mmc/host/sdhci_am654.c +4 -3
@@ -15,6 +15,7 @@#include <linux/sys_soc.h> #include "cqhci.h" +#include "sdhci-cqhci.h" #include "sdhci-pltfm.h" /* CTL_CFG Registers */
@@ -378,7 +379,7 @@ static void sdhci_am654_reset(struct sdhci_host *host, u8 mask)struct sdhci_pltfm_host *pltfm_host =sdhci_priv (host);struct sdhci_am654_data *sdhci_am654 =sdhci_pltfm_priv (pltfm_host); -sdhci_reset (host, mask); +sdhci_and_cqhci_reset (host, mask);if (sdhci_am654->quirks &SDHCI_AM654_QUIRK_FORCE_CDTEST ) { ctrl =sdhci_readb (host,SDHCI_HOST_CONTROL );
@@ -464,7 +465,7 @@ static struct sdhci_ops sdhci_am654_ops = { .set_clock = sdhci_am654_set_clock, .write_b = sdhci_am654_write_b, .irq = sdhci_am654_cqhci_irq, - .reset = sdhci_reset, + .reset = sdhci_and_cqhci_reset, };static const struct sdhci_pltfm_data sdhci_am654_pdata = {
@@ -494,7 +495,7 @@ static struct sdhci_ops sdhci_j721e_8bit_ops = { .set_clock = sdhci_am654_set_clock, .write_b = sdhci_am654_write_b, .irq = sdhci_am654_cqhci_irq, - .reset = sdhci_reset, + .reset = sdhci_and_cqhci_reset, };static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = {
drivers/net/ethernet/apm/xgene/xgene_enet_main.c +3 -1
@@ -1004,8 +1004,10 @@ static int xgene_enet_open(struct net_device *ndev)xgene_enet_napi_enable (pdata); ret =xgene_enet_register_irq (ndev); -if (ret) +if (ret) { +xgene_enet_napi_disable (pdata);return ret; + }if (ndev->phydev) {phy_start (ndev->phydev);
drivers/net/ethernet/aquantia/atlantic/aq_macsec.c +2 -0
@@ -585,6 +585,7 @@ static int aq_update_txsa(struct aq_nic_s *nic, const unsigned int sc_idx, ret =aq_mss_set_egress_sakey_record (hw, &key_rec, sa_idx); +memzero_explicit (&key_rec,sizeof (key_rec));return ret; }
@@ -932,6 +933,7 @@ static int aq_update_rxsa(struct aq_nic_s *nic, const unsigned int sc_idx, ret =aq_mss_set_ingress_sakey_record (hw, &sa_key_record, sa_idx); +memzero_explicit (&sa_key_record,sizeof (sa_key_record));return ret; }
drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c +11 -7
@@ -757,6 +757,7 @@ set_ingress_sakey_record(struct aq_hw_s *hw, u16 table_index) {u16 packed_record[18 ]; +int ret;if (table_index >=NUMROWS_INGRESSSAKEYRECORD )return -EINVAL ;
@@ -789,9 +790,12 @@ set_ingress_sakey_record(struct aq_hw_s *hw, packed_record[16 ] = rec->key_len &0x3 ; -return set_raw_ingress_record (hw, packed_record,18 ,2 , -ROWOFFSET_INGRESSSAKEYRECORD + - table_index); + ret =set_raw_ingress_record (hw, packed_record,18 ,2 , +ROWOFFSET_INGRESSSAKEYRECORD + + table_index); + +memzero_explicit (packed_record,sizeof (packed_record)); +return ret; } int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw,
@@ -1739,14 +1743,14 @@ static int set_egress_sakey_record(struct aq_hw_s *hw, ret =set_raw_egress_record (hw, packed_record,8 ,2 ,ROWOFFSET_EGRESSSAKEYRECORD + table_index);if (unlikely (ret)) -return ret; + goto clear_key; ret =set_raw_egress_record (hw, packed_record +8 ,8 ,2 ,ROWOFFSET_EGRESSSAKEYRECORD + table_index -32 ); -if (unlikely (ret)) -return ret; -return 0 ; +clear_key: +memzero_explicit (packed_record,sizeof (packed_record)); +return ret; } int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw,
drivers/net/ethernet/broadcom/Kconfig +1 -1
@@ -69,7 +69,7 @@ config BCMGENET select BCM7XXX_PHY select MDIO_BCM_UNIMAC select DIMLIB - select BROADCOM_PHY if ARCH_BCM2835 + select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL) help This driver supports the built-in Ethernet MACs found in the Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +1 -1
@@ -12008,8 +12008,8 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,rcu_read_lock ();hlist_for_each_entry_rcu (fltr, head, hash) {if (bnxt_fltr_match (fltr, new_fltr)) { + rc = fltr->sw_id;rcu_read_unlock (); - rc =0 ; goto err_free; } }
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
@@ -125,7 +125,7 @@ static int bnxt_set_coalesce(struct net_device *dev, } reset_coalesce: -if (netif_running (dev)) { +if (test_bit (BNXT_STATE_OPEN , &bp->state)) {if (update_stats) { rc =bnxt_close_nic (bp, true, false);if (!rc)
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +1 -0
@@ -1302,6 +1302,7 @@ static int cxgb_up(struct adapter *adap)if (ret <0 ) {CH_ERR (adap,"failed to bind qsets, err %d\n" , ret);t3_intr_disable (adap); +quiesce_rx (adap);free_irq_resources (adap); err = ret; goto out;
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c +1 -1
@@ -858,7 +858,7 @@ static int cxgb4vf_open(struct net_device *dev)*/ err =t4vf_update_port_info (pi);if (err <0 ) -return err; + goto err_unwind;/* * Note that this interface is up and start everything up ...
drivers/net/ethernet/freescale/fman/mac.c +9 -0
@@ -884,12 +884,21 @@ static int mac_probe(struct platform_device *_of_dev)return err; } +static int mac_remove (struct platform_device *pdev) +{ +struct mac_device *mac_dev =platform_get_drvdata (pdev); + +platform_device_unregister (mac_dev->priv->eth_dev); +return 0 ; +} +static struct platform_driver mac_driver = { .driver = { .name =KBUILD_MODNAME , .of_match_table = mac_match, }, .probe = mac_probe, + .remove = mac_remove, };builtin_platform_driver (mac_driver);
drivers/net/ethernet/marvell/mv643xx_eth.c +1 -0
@@ -2471,6 +2471,7 @@ static int mv643xx_eth_open(struct net_device *dev)for (i =0 ; i < mp->rxq_count; i++)rxq_deinit (mp->rxq + i); out: +napi_disable (&mp->napi);free_irq (dev->irq, dev);return err;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c +6 -1
@@ -771,6 +771,7 @@ static netdev_tx_t prestera_sdma_xmit(struct prestera_sdma *sdma,int prestera_rxtx_switch_init (struct prestera_switch *sw) {struct prestera_rxtx *rxtx; +int err; rxtx =kzalloc (sizeof (*rxtx),GFP_KERNEL );if (!rxtx)
@@ -778,7 +779,11 @@ int prestera_rxtx_switch_init(struct prestera_switch *sw) sw->rxtx = rxtx; -return prestera_sdma_switch_init (sw); + err =prestera_sdma_switch_init (sw); +if (err) +kfree (rxtx); + +return err; }void prestera_rxtx_switch_fini (struct prestera_switch *sw)
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +8 -3
@@ -1687,12 +1687,17 @@ void mlx5_cmd_flush(struct mlx5_core_dev *dev)struct mlx5_cmd *cmd = &dev->cmd;int i; -for (i =0 ; i < cmd->max_reg_cmds; i++) -while (down_trylock (&cmd->sem)) +for (i =0 ; i < cmd->max_reg_cmds; i++) { +while (down_trylock (&cmd->sem)) {mlx5_cmd_trigger_completions (dev); +cond_resched (); + } + } -while (down_trylock (&cmd->pages_sem)) +while (down_trylock (&cmd->pages_sem)) {mlx5_cmd_trigger_completions (dev); +cond_resched (); + }/* Unlock cmdif */ up (&cmd->pages_sem);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c +8 -6
@@ -30,9 +30,9 @@ mlx5_eswitch_termtbl_hash(struct mlx5_flow_act *flow_act, sizeof(dest->vport.num), hash); hash =jhash ((const void *)&dest->vport.vhca_id,sizeof (dest->vport.num), hash); -if (dest->vport.pkt_reformat) - hash =jhash (dest->vport.pkt_reformat, -sizeof (*dest->vport.pkt_reformat), +if (flow_act->pkt_reformat) + hash =jhash (flow_act->pkt_reformat, +sizeof (*flow_act->pkt_reformat), hash);return hash; }
@@ -53,9 +53,11 @@ mlx5_eswitch_termtbl_cmp(struct mlx5_flow_act *flow_act1,if (ret)return ret; -return dest1->vport.pkt_reformat && dest2->vport.pkt_reformat ? -memcmp (dest1->vport.pkt_reformat, dest2->vport.pkt_reformat, -sizeof (*dest1->vport.pkt_reformat)) :0 ; +if (flow_act1->pkt_reformat && flow_act2->pkt_reformat) +return memcmp (flow_act1->pkt_reformat, flow_act2->pkt_reformat, +sizeof (*flow_act1->pkt_reformat)); + +return !(flow_act1->pkt_reformat == flow_act2->pkt_reformat); } static int
drivers/net/ethernet/neterion/s2io.c +20 -9
@@ -7114,9 +7114,8 @@ static int s2io_card_up(struct s2io_nic *sp)if (ret) {DBG_PRINT (ERR_DBG ,"%s: Out of memory in Open\n" , dev->name); -s2io_reset (sp); -free_rx_buffers (sp); -return -ENOMEM ; + ret = -ENOMEM ; + goto err_fill_buff; }DBG_PRINT (INFO_DBG ,"Buf in ring:%d is %d:\n" , i, ring->rx_bufs_left);
@@ -7154,18 +7153,16 @@ static int s2io_card_up(struct s2io_nic *sp)/* Enable Rx Traffic and interrupts on the NIC */ if (start_nic (sp)) {DBG_PRINT (ERR_DBG ,"%s: Starting NIC failed\n" , dev->name); -s2io_reset (sp); -free_rx_buffers (sp); -return -ENODEV ; + ret = -ENODEV ; + goto err_out; }/* Add interrupt service routine */ if (s2io_add_isr (sp) !=0 ) {if (sp->config.intr_type ==MSI_X )s2io_rem_isr (sp); -s2io_reset (sp); -free_rx_buffers (sp); -return -ENODEV ; + ret = -ENODEV ; + goto err_out; }timer_setup (&sp->alarm_timer, s2io_alarm_handle,0 );
@@ -7185,6 +7182,20 @@ static int s2io_card_up(struct s2io_nic *sp) }return 0 ; + +err_out: +if (config->napi) { +if (config->intr_type ==MSI_X ) { +for (i =0 ; i < sp->config.rx_ring_num; i++) +napi_disable (&sp->mac_control.rings[i].napi); + }else { +napi_disable (&sp->napi); + } + } +err_fill_buff: +s2io_reset (sp); +free_rx_buffers (sp); +return ret; }/**
drivers/net/ethernet/ni/nixge.c +1 -0
@@ -899,6 +899,7 @@ static int nixge_open(struct net_device *ndev) err_rx_irq:free_irq (priv->tx_irq, ndev); err_tx_irq: +napi_disable (&priv->napi);phy_stop (phy);phy_disconnect (phy);tasklet_kill (&priv->dma_err_tasklet);
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c +3 -5
@@ -261,11 +261,9 @@ static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac,if (ret)return ret; -devm_add_action_or_reset (dwmac->dev, - (void (*)(void *))clk_disable_unprepare, - dwmac->rgmii_tx_clk); - -return 0 ; +return devm_add_action_or_reset (dwmac->dev, + (void (*)(void *))clk_disable_unprepare, + clk); }static int meson8b_init_prg_eth (struct meson8b_dwmac *dwmac)
drivers/net/ethernet/ti/cpsw.c +2 -0
@@ -864,6 +864,8 @@ static int cpsw_ndo_open(struct net_device *ndev) err_cleanup:if (!cpsw->usage_count) { +napi_disable (&cpsw->napi_rx); +napi_disable (&cpsw->napi_tx);cpdma_ctlr_stop (cpsw->dma);cpsw_destroy_xdp_rxqs (cpsw); }
drivers/net/ethernet/tundra/tsi108_eth.c +4 -1
@@ -1302,12 +1302,15 @@ static int tsi108_open(struct net_device *dev) data->rxring =dma_alloc_coherent (&data->pdev->dev, rxring_size, &data->rxdma,GFP_KERNEL ); -if (!data->rxring) +if (!data->rxring) { +free_irq (data->irq_num, dev);return -ENOMEM ; + } data->txring =dma_alloc_coherent (&data->pdev->dev, txring_size, &data->txdma,GFP_KERNEL );if (!data->txring) { +free_irq (data->irq_num, dev);dma_free_coherent (&data->pdev->dev, rxring_size, data->rxring, data->rxdma);return -ENOMEM ;
drivers/net/hamradio/bpqether.c +1 -1
@@ -533,7 +533,7 @@ static int bpq_device_event(struct notifier_block *this,if (!net_eq (dev_net (dev), &init_net))return NOTIFY_DONE ; -if (!dev_is_ethdev (dev)) +if (!dev_is_ethdev (dev) && !bpq_get_ax25_dev (dev))return NOTIFY_DONE ;switch (event) {
drivers/net/macsec.c +13 -10
@@ -1390,7 +1390,8 @@ static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci)return NULL ; } -static struct macsec_rx_sc *create_rx_sc (struct net_device *dev,sci_t sci) +static struct macsec_rx_sc *create_rx_sc (struct net_device *dev,sci_t sci, +bool active) {struct macsec_rx_sc *rx_sc;struct macsec_dev *macsec;
@@ -1414,7 +1415,7 @@ static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci) } rx_sc->sci = sci; - rx_sc->active = true; + rx_sc->active = active;refcount_set (&rx_sc->refcnt,1 ); secy = &macsec_priv (dev)->secy;
@@ -1823,6 +1824,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) secy->key_len); err =macsec_offload (ops->mdo_add_rxsa, &ctx); +memzero_explicit (ctx.sa.key, secy->key_len);if (err) goto cleanup; }
@@ -1867,7 +1869,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)struct macsec_rx_sc *rx_sc;struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX +1 ];struct macsec_secy *secy; -bool was_active; +bool active = true;int ret;if (!attrs[MACSEC_ATTR_IFINDEX ])
@@ -1889,16 +1891,15 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) secy = &macsec_priv (dev)->secy; sci =nla_get_sci (tb_rxsc[MACSEC_RXSC_ATTR_SCI ]); - rx_sc =create_rx_sc (dev, sci); +if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE ]) + active =nla_get_u8 (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE ]); + + rx_sc =create_rx_sc (dev, sci, active);if (IS_ERR (rx_sc)) {rtnl_unlock ();return PTR_ERR (rx_sc); } - was_active = rx_sc->active; -if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE ]) - rx_sc->active = !!nla_get_u8 (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE ]); -if (macsec_is_offloaded (netdev_priv (dev))) {const struct macsec_ops *ops;struct macsec_context ctx;
@@ -1922,7 +1923,8 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)return 0 ; cleanup: - rx_sc->active = was_active; +del_rx_sc (secy, sci); +free_rx_sc (rx_sc);rtnl_unlock ();return ret; }
@@ -2065,6 +2067,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) secy->key_len); err =macsec_offload (ops->mdo_add_txsa, &ctx); +memzero_explicit (ctx.sa.key, secy->key_len);if (err) goto cleanup; }
@@ -2561,7 +2564,7 @@ static bool macsec_is_configured(struct macsec_dev *macsec)struct macsec_tx_sc *tx_sc = &secy->tx_sc;int i; -if (secy->n_rx_sc >0 ) +if (secy->rx_sc)return true;for (i =0 ; i <MACSEC_NUM_AN ; i++)
drivers/net/macvlan.c +3 -1
@@ -1509,8 +1509,10 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,/* the macvlan port may be freed by macvlan_uninit when fail to register. * so we destroy the macvlan port only when it's valid. */ -if (create &&macvlan_port_get_rtnl (lowerdev)) +if (create &&macvlan_port_get_rtnl (lowerdev)) { +macvlan_flush_sources (port, vlan);macvlan_port_destroy (port->dev); + }return err; }EXPORT_SYMBOL_GPL (macvlan_common_newlink);
drivers/net/phy/mscc/mscc_macsec.c +1 -0
@@ -632,6 +632,7 @@ static void vsc8584_macsec_free_flow(struct vsc8531_private *priv,list_del (&flow->list);clear_bit (flow->index, bitmap); +memzero_explicit (flow->key,sizeof (flow->key));kfree (flow); }
drivers/net/tun.c +13 -5
@@ -1986,17 +1986,25 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, skb_headlen(skb));if (unlikely (headlen >skb_headlen (skb))) { +WARN_ON_ONCE (1 ); + err = -ENOMEM ;this_cpu_inc (tun->pcpu_stats->rx_dropped); +napi_busy:napi_free_frags (&tfile->napi);rcu_read_unlock ();mutex_unlock (&tfile->napi_mutex); -WARN_ON (1 ); -return -ENOMEM ; +return err; } -local_bh_disable (); -napi_gro_frags (&tfile->napi); -local_bh_enable (); +if (likely (napi_schedule_prep (&tfile->napi))) { +local_bh_disable (); +napi_gro_frags (&tfile->napi); +napi_complete (&tfile->napi); +local_bh_enable (); + }else { + err = -EBUSY ; + goto napi_busy; + }mutex_unlock (&tfile->napi_mutex); }else if (tfile->napi_enabled) {struct sk_buff_head *queue = &tfile->sk.sk_write_queue;
drivers/net/wan/lapbether.c +1 -1
@@ -403,7 +403,7 @@ static int lapbeth_device_event(struct notifier_block *this,if (dev_net (dev) != &init_net)return NOTIFY_DONE ; -if (!dev_is_ethdev (dev)) +if (!dev_is_ethdev (dev) && !lapbeth_get_x25_dev (dev))return NOTIFY_DONE ;switch (event) {
drivers/phy/st/phy-stm32-usbphyc.c +2 -0
@@ -393,6 +393,8 @@ static int stm32_usbphyc_probe(struct platform_device *pdev) ret =of_property_read_u32 (child,"reg" , &index);if (ret || index > usbphyc->nphys) {dev_err (&phy->dev,"invalid reg property: %d\n" , ret); +if (!ret) + ret = -EINVAL ; goto put_child; }
drivers/platform/x86/hp-wmi.c +10 -2
@@ -900,8 +900,16 @@ static int __init hp_wmi_bios_setup(struct platform_device *device) wwan_rfkill =NULL ; rfkill2_count =0 ; -if (hp_wmi_rfkill_setup (device)) -hp_wmi_rfkill2_setup (device); +/* +* In pre-2009 BIOS, command 1Bh return 0x4 to indicate that +* BIOS no longer controls the power for the wireless +* devices. All features supported by this command will no +* longer be supported. +*/ +if (!hp_wmi_bios_2009_later ()) { +if (hp_wmi_rfkill_setup (device)) +hp_wmi_rfkill2_setup (device); + }thermal_policy_setup (device);
fs/btrfs/tests/btrfs-tests.c +1 -1
@@ -192,7 +192,7 @@ void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info)void btrfs_free_dummy_root (struct btrfs_root *root) { -if (!root) +if (IS_ERR_OR_NULL (root))return ;/* Will be freed by btrfs_free_fs_roots */ if (WARN_ON (test_bit (BTRFS_ROOT_IN_RADIX , &root->state)))
fs/fuse/readdir.c +9 -1
@@ -77,8 +77,10 @@ static void fuse_add_dirent_to_cache(struct file *file, goto unlock; addr =kmap_atomic (page); -if (!offset) +if (!offset) {clear_page (addr); +SetPageUptodate (page); + }memcpy (addr + offset, dirent, reclen);kunmap_atomic (addr); fi->rdc.size = (index <<PAGE_SHIFT ) + offset + reclen;
@@ -516,6 +518,12 @@ static int fuse_readdir_cached(struct file *file, struct dir_context *ctx) page =find_get_page_flags (file->f_mapping, index,FGP_ACCESSED |FGP_LOCK ); +/* Page gone missing, then re-added to cache, but not initialized? */ +if (page && !PageUptodate (page)) { +unlock_page (page); +put_page (page); + page =NULL ; + }spin_lock (&fi->rdc.lock);if (!page) {/*
fs/io_uring.c +1 -2
@@ -9038,7 +9038,7 @@ static int io_sqpoll_wait_sq(struct io_ring_ctx *ctx)if (unlikely (ctx->sqo_dead)) { ret = -EOWNERDEAD ; - goto out; +break ; }if (!io_sqring_full (ctx))
@@ -9048,7 +9048,6 @@ static int io_sqpoll_wait_sq(struct io_ring_ctx *ctx) }while (!signal_pending (current));finish_wait (&ctx->sqo_sq_wait, &wait); -out:return ret; }
fs/nilfs2/segment.c +8 -7
@@ -322,7 +322,7 @@ void nilfs_relax_pressure_in_lock(struct super_block *sb)struct the_nilfs *nilfs = sb->s_fs_info;struct nilfs_sc_info *sci = nilfs->ns_writer; -if (!sci || !sci->sc_flush_request) +if (sb_rdonly (sb) ||unlikely (!sci) || !sci->sc_flush_request)return ;set_bit (NILFS_SC_PRIOR_FLUSH , &sci->sc_flags);
@@ -2248,7 +2248,7 @@ int nilfs_construct_segment(struct super_block *sb)struct nilfs_transaction_info *ti;int err; -if (!sci) +if (sb_rdonly (sb) ||unlikely (!sci))return -EROFS ;/* A call inside transactions causes a deadlock. */
@@ -2287,7 +2287,7 @@ int nilfs_construct_dsync_segment(struct super_block *sb, struct inode *inode,struct nilfs_transaction_info ti;int err =0 ; -if (!sci) +if (sb_rdonly (sb) ||unlikely (!sci))return -EROFS ;nilfs_transaction_lock (sb, &ti,0 );
@@ -2783,11 +2783,12 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root)if (nilfs->ns_writer) {/* -* This happens if the filesystem was remounted -* read/write after nilfs_error degenerated it into a -* read-only mount. +* This happens if the filesystem is made read-only by +* __nilfs_error or nilfs_remount and then remounted +* read/write. In these cases, reuse the existing +* writer. */ -nilfs_detach_log_writer (sb); +return 0 ; } nilfs->ns_writer =nilfs_segctor_new (sb, root);
fs/nilfs2/super.c +0 -2
@@ -1133,8 +1133,6 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data)if ((bool )(*flags &SB_RDONLY ) ==sb_rdonly (sb)) goto out;if (*flags &SB_RDONLY ) { -/* Shutting down log writer */ -nilfs_detach_log_writer (sb); sb->s_flags |=SB_RDONLY ;/*
fs/nilfs2/the_nilfs.c +0 -2
@@ -690,9 +690,7 @@ int nilfs_count_free_blocks(struct the_nilfs *nilfs, sector_t *nblocks) {unsigned long ncleansegs; -down_read (&NILFS_MDT (nilfs->ns_dat)->mi_sem); ncleansegs =nilfs_sufile_get_ncleansegs (nilfs->ns_sufile); -up_read (&NILFS_MDT (nilfs->ns_dat)->mi_sem); *nblocks = (sector_t )ncleansegs * nilfs->ns_blocks_per_segment;return 0 ; }
fs/udf/namei.c +1 -1
@@ -241,7 +241,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir, poffset - lfi); else {if (!copy_name) { - copy_name =kmalloc (UDF_NAME_LEN , + copy_name =kmalloc (UDF_NAME_LEN_CS0 ,GFP_NOFS );if (!copy_name) { fi =ERR_PTR (-ENOMEM );
include/asm-generic/vmlinux.lds.h +1 -1
@@ -328,6 +328,7 @@#define DATA_DATA \ *(.xiptext) \ *(DATA_MAIN) \ + *(.data..decrypted) \ *(.ref.data) \ *(.data..shared_aligned)/* percpu related */ \ MEM_KEEP(init.data*) \
@@ -972,7 +973,6 @@#ifdef CONFIG_AMD_MEM_ENCRYPT #define PERCPU_DECRYPTED_SECTION \ . = ALIGN(PAGE_SIZE); \ - *(.data..decrypted) \ *(.data..percpu..decrypted) \ . = ALIGN(PAGE_SIZE);#else
include/linux/bpf_verifier.h +22 -1
@@ -45,7 +45,7 @@ struct bpf_reg_state {enum bpf_reg_type type;union {/* valid when type == PTR_TO_PACKET */ -u16 range; +int range;/* valid when type == CONST_PTR_TO_MAP | PTR_TO_MAP_VALUE | * PTR_TO_MAP_VALUE_OR_NULL
@@ -290,6 +290,27 @@ struct bpf_verifier_state { iter < frame->allocated_stack /BPF_REG_SIZE ; \ iter++, reg = bpf_get_spilled_reg(iter, frame)) +/* Invoke __expr over regsiters in __vst, setting __state and __reg */ +#define bpf_for_each_reg_in_vstate (__vst, __state, __reg, __expr) \ + ({ \ + struct bpf_verifier_state *___vstate = __vst; \ + int ___i, ___j; \ + for (___i = 0; ___i <= ___vstate->curframe; ___i++) { \ + struct bpf_reg_state *___regs; \ + __state = ___vstate->frame[___i]; \ + ___regs = __state->regs; \ + for (___j = 0; ___j < MAX_BPF_REG; ___j++) { \ + __reg = &___regs[___j]; \ + (void)(__expr); \ + } \ + bpf_for_each_spilled_reg(___j, __state, __reg) { \ + if (!__reg) \ + continue; \ + (void)(__expr); \ + } \ + } \ + }) +/* linked list of verifier states used to prune search */ struct bpf_verifier_state_list {struct bpf_verifier_state state;
include/uapi/linux/capability.h +1 -1
@@ -427,7 +427,7 @@ struct vfs_ns_cap_data {*/ #define CAP_TO_INDEX (x) ((x) >> 5)/* 1 << 5 == bits in __u32 */ -#define CAP_TO_MASK (x) (1 << ((x) & 31))/* mask for indexed __u32 */ +#define CAP_TO_MASK (x) (1U << ((x) & 31))/* mask for indexed __u32 */ #endif /* _UAPI_LINUX_CAPABILITY_H */
kernel/bpf/verifier.c +131 -121
408 lines not on this page · raw message
mm/memremap.c +1 -0
@@ -348,6 +348,7 @@ void *memremap_pages(struct dev_pagemap *pgmap, int nid)WARN (1 ,"File system DAX not supported\n" );return ERR_PTR (-EINVAL ); } + params.pgprot =pgprot_decrypted (params.pgprot);break ;case MEMORY_DEVICE_GENERIC :break ;
net/can/af_can.c +1 -1
@@ -451,7 +451,7 @@ int can_rx_register(struct net *net, struct net_device *dev, canid_t can_id,/* insert new receiver (dev,canid,mask) -> (func,data) */ -if (dev && dev->type !=ARPHRD_CAN ) +if (dev && (dev->type !=ARPHRD_CAN || !can_get_ml_priv (dev)))return -ENODEV ;if (dev && !net_eq (net,dev_net (dev)))
net/can/j1939/main.c +3 -0
@@ -332,6 +332,9 @@ int j1939_send_one(struct j1939_priv *priv, struct sk_buff *skb)/* re-claim the CAN_HDR from the SKB */ cf =skb_push (skb,J1939_CAN_HDR ); +/* initialize header structure */ +memset (cf,0 ,J1939_CAN_HDR ); +/* make it a full can frame again */ skb_put (skb,J1939_CAN_FTR + (8 - dlc));
net/core/skbuff.c +19 -17
@@ -3809,23 +3809,25 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,int i =0 ;int pos; -if (list_skb && !list_skb->head_frag &&skb_headlen (list_skb) && - (skb_shinfo (head_skb)->gso_type &SKB_GSO_DODGY )) { -/* gso_size is untrusted, and we have a frag_list with a linear -* non head_frag head. -* -* (we assume checking the first list_skb member suffices; -* i.e if either of the list_skb members have non head_frag -* head, then the first one has too). -* -* If head_skb's headlen does not fit requested gso_size, it -* means that the frag_list members do NOT terminate on exact -* gso_size boundaries. Hence we cannot perform skb_frag_t page -* sharing. Therefore we must fallback to copying the frag_list -* skbs; we do so by disabling SG. -*/ -if (mss !=GSO_BY_FRAGS && mss !=skb_headlen (head_skb)) - features &= ~NETIF_F_SG ; +if ((skb_shinfo (head_skb)->gso_type &SKB_GSO_DODGY ) && + mss !=GSO_BY_FRAGS && mss !=skb_headlen (head_skb)) { +struct sk_buff *check_skb; + +for (check_skb = list_skb; check_skb; check_skb = check_skb->next) { +if (skb_headlen (check_skb) && !check_skb->head_frag) { +/* gso_size is untrusted, and we have a frag_list with +* a linear non head_frag item. +* +* If head_skb's headlen does not fit requested gso_size, +* it means that the frag_list members do NOT terminate +* on exact gso_size boundaries. Hence we cannot perform +* skb_frag_t page sharing. Therefore we must fallback to +* copying the frag_list skbs; we do so by disabling SG. +*/ + features &= ~NETIF_F_SG ; +break ; + } + } }__skb_push (head_skb, doffset);
net/ipv4/tcp.c +1 -1
@@ -3291,7 +3291,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level, int optname,case TCP_REPAIR_OPTIONS :if (!tp->repair) err = -EINVAL ; -else if (sk->sk_state ==TCP_ESTABLISHED ) +else if (sk->sk_state ==TCP_ESTABLISHED && !tp->bytes_sent) err =tcp_repair_options_est (sk, optval, optlen);else err = -EPERM ;
net/ipv4/tcp_bpf.c +5 -3
@@ -315,7 +315,7 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, {bool cork = false, enospc =sk_msg_full (msg);struct sock *sk_redir; -u32 tosend, delta =0 ; +u32 tosend, origsize, sent, delta =0 ;u32 eval = __SK_NONE;int ret;
@@ -370,10 +370,12 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, cork = true; psock->cork =NULL ; } -sk_msg_return (sk, msg, msg->sg.size); +sk_msg_return (sk, msg, tosend);release_sock (sk); + origsize = msg->sg.size; ret =tcp_bpf_sendmsg_redir (sk_redir, msg, tosend, flags); + sent = origsize - msg->sg.size;if (eval == __SK_REDIRECT)sock_put (sk_redir);
@@ -412,7 +414,7 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, msg->sg.data[msg->sg.start].page_link && msg->sg.data[msg->sg.start].length) {if (eval == __SK_REDIRECT) -sk_mem_charge (sk, msg->sg.size); +sk_mem_charge (sk, tosend - sent); goto more_data; } }
net/ipv6/addrlabel.c +1 -0
@@ -437,6 +437,7 @@ static void ip6addrlbl_putmsg(struct nlmsghdr *nlh, {struct ifaddrlblmsg *ifal =nlmsg_data (nlh); ifal->ifal_family =AF_INET6 ; + ifal->__ifal_reserved =0 ; ifal->ifal_prefixlen = prefixlen; ifal->ifal_flags =0 ; ifal->ifal_index = ifindex;
net/tipc/netlink_compat.c +1 -1
@@ -877,7 +877,7 @@ static int tipc_nl_compat_name_table_dump_header(struct tipc_nl_compat_msg *msg) }; ntq = (struct tipc_name_table_query *)TLV_DATA (msg->req); -if (TLV_GET_DATA_LEN (msg->req) <sizeof (struct tipc_name_table_query )) +if (TLV_GET_DATA_LEN (msg->req) < (int )sizeof (struct tipc_name_table_query ))return -EINVAL ; depth =ntohl (ntq->depth);
net/wireless/reg.c +9 -3
@@ -1064,6 +1064,8 @@ MODULE_FIRMWARE("regulatory.db");static int query_regdb_file (const char *alpha2) { +int err; +ASSERT_RTNL ();if (regdb)
@@ -1073,9 +1075,13 @@ static int query_regdb_file(const char *alpha2)if (!alpha2)return -ENOMEM ; -return request_firmware_nowait (THIS_MODULE , true,"regulatory.db" , - ®_pdev->dev,GFP_KERNEL , - (void *)alpha2, regdb_fw_cb); + err =request_firmware_nowait (THIS_MODULE , true,"regulatory.db" , + ®_pdev->dev,GFP_KERNEL , + (void *)alpha2, regdb_fw_cb); +if (err) +kfree (alpha2); + +return err; }int reg_reload_regdb (void )
net/wireless/scan.c +3 -1
@@ -1669,7 +1669,9 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,if (old ==rcu_access_pointer (known->pub.ies))rcu_assign_pointer (known->pub.ies, new->pub.beacon_ies); -cfg80211_update_hidden_bsses (known, new->pub.beacon_ies, old); +cfg80211_update_hidden_bsses (known, +rcu_access_pointer (new->pub.beacon_ies), + old);if (old)kfree_rcu ((struct cfg80211_bss_ies *)old, rcu_head);
scripts/extract-cert.c +7 -0
@@ -23,6 +23,13 @@#include <openssl/err.h> #include <openssl/engine.h> +/* +* OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. +* +* Remove this if/when that API is no longer used +*/ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#define PKEY_ID_PKCS7 2 static __attribute__((noreturn))
scripts/sign-file.c +7 -0
@@ -29,6 +29,13 @@#include <openssl/err.h> #include <openssl/engine.h> +/* +* OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. +* +* Remove this if/when that API is no longer used +*/ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +/* * Use CMS if we have openssl-1.0.0 or newer available - otherwise we have to * assume that it's not available and its header file is missing and that we
sound/hda/hdac_sysfs.c +3 -1
@@ -346,8 +346,10 @@ static int add_widget_node(struct kobject *parent, hda_nid_t nid,return -ENOMEM ;kobject_init (kobj, &widget_ktype); err =kobject_add (kobj, parent,"%02x" , nid); -if (err <0 ) +if (err <0 ) { +kobject_put (kobj);return err; + } err =sysfs_create_group (kobj, group);if (err <0 ) {kobject_put (kobj);
sound/pci/hda/hda_intel.c +3 -0
@@ -2749,6 +2749,9 @@ static const struct pci_device_id azx_ids[] = { { PCI_DEVICE(0x1002, 0xab28), .driver_data =AZX_DRIVER_ATIHDMI_NS |AZX_DCAPS_PRESET_ATI_HDMI_NS | AZX_DCAPS_PM_RUNTIME }, + { PCI_DEVICE(0x1002, 0xab30), + .driver_data =AZX_DRIVER_ATIHDMI_NS |AZX_DCAPS_PRESET_ATI_HDMI_NS | + AZX_DCAPS_PM_RUNTIME }, { PCI_DEVICE(0x1002, 0xab38), .driver_data =AZX_DRIVER_ATIHDMI_NS |AZX_DCAPS_PRESET_ATI_HDMI_NS | AZX_DCAPS_PM_RUNTIME },
sound/pci/hda/patch_ca0132.c +1 -0
@@ -1272,6 +1272,7 @@ static const struct snd_pci_quirk ca0132_quirks[] = {SND_PCI_QUIRK (0x1458 ,0xA026 ,"Gigabyte G1.Sniper Z97" ,QUIRK_R3DI ),SND_PCI_QUIRK (0x1458 ,0xA036 ,"Gigabyte GA-Z170X-Gaming 7" ,QUIRK_R3DI ),SND_PCI_QUIRK (0x3842 ,0x1038 ,"EVGA X99 Classified" ,QUIRK_R3DI ), +SND_PCI_QUIRK (0x3842 ,0x1055 ,"EVGA Z390 DARK" ,QUIRK_R3DI ),SND_PCI_QUIRK (0x1102 ,0x0013 ,"Recon3D" ,QUIRK_R3D ),SND_PCI_QUIRK (0x1102 ,0x0018 ,"Recon3D" ,QUIRK_R3D ), SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5),
sound/pci/hda/patch_realtek.c +1 -0
@@ -9161,6 +9161,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x17aa ,0x511f ,"Thinkpad" ,ALC298_FIXUP_TPT470_DOCK ),SND_PCI_QUIRK (0x17aa ,0x9e54 ,"LENOVO NB" ,ALC269_FIXUP_LENOVO_EAPD ),SND_PCI_QUIRK (0x1849 ,0x1233 ,"ASRock NUC Box 1100" ,ALC233_FIXUP_NO_AUDIO_JACK ), +SND_PCI_QUIRK (0x1849 ,0xa233 ,"Positivo Master C6300" ,ALC269_FIXUP_HEADSET_MIC ),SND_PCI_QUIRK (0x19e5 ,0x3204 ,"Huawei MACH-WX9" ,ALC256_FIXUP_HUAWEI_MACH_WX9_PINS ),SND_PCI_QUIRK (0x19e5 ,0x320f ,"Huawei WRT-WX9 " ,ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ), SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),
sound/usb/quirks-table.h +4 -0
@@ -2028,6 +2028,10 @@ YAMAHA_DEVICE(0x7010, "UB99"), } } }, +{ +/* M-Audio Micro */ +USB_DEVICE_VENDOR_SPEC (0x0763 ,0x201a ), +}, {USB_DEVICE_VENDOR_SPEC (0x0763 ,0x2030 ), .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
sound/usb/quirks.c +1 -0
@@ -1744,6 +1744,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,/* XMOS based USB DACs */ switch (chip->usb_id) {case USB_ID (0x1511 ,0x0037 ):/* AURALiC VEGA */ +case USB_ID (0x21ed ,0xd75a ):/* Accuphase DAC-60 option card */ case USB_ID (0x2522 ,0x0012 ):/* LH Labs VI DAC Infinity */ case USB_ID (0x2772 ,0x0230 ):/* Pro-Ject Pre Box S2 Digital */ if (fp->altsetting ==2 )
tools/arch/x86/include/asm/msr-index.h +5 -3
@@ -489,6 +489,11 @@#define MSR_AMD64_CPUID_FN_1 0xc0011004#define MSR_AMD64_LS_CFG 0xc0011020#define MSR_AMD64_DC_CFG 0xc0011022 + +#define MSR_AMD64_DE_CFG 0xc0011029 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE BIT_ULL(MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT) +#define MSR_AMD64_BU_CFG2 0xc001102a#define MSR_AMD64_IBSFETCHCTL 0xc0011030#define MSR_AMD64_IBSFETCHLINAD 0xc0011031
@@ -565,9 +570,6 @@#define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL#define FAM10H_MMIO_CONF_BASE_SHIFT 20#define MSR_FAM10H_NODE_ID 0xc001100c -#define MSR_F10H_DECFG 0xc0011029 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT 1 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE BIT_ULL(MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT)/* K8 MSRs */ #define MSR_K8_TOP_MEM1 0xc001001a
tools/bpf/bpftool/common.c +3 -0
@@ -271,6 +271,9 @@ int do_pin_any(int argc, char **argv, int (*get_fd)(int *, char ***))int err;int fd; +if (!REQ_ARGS (3 )) +return -EINVAL ; + fd =get_fd (&argc, &argv);if (fd <0 )return fd;
tools/perf/util/stat-display.c +1 -1
@@ -203,7 +203,7 @@ static void new_line_csv(struct perf_stat_config *config, void *ctx)fputc ('\n' , os->fh);if (os->prefix) -fprintf (os->fh,"%s%s" , os->prefix, config->csv_sep); +fprintf (os->fh,"%s" , os->prefix);aggr_printout (config, os->evsel, os->id, os->nr);for (i =0 ; i < os->nfields; i++)fputs (config->csv_sep, os->fh);