Linux 5.11.13
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.11.13 kernel.
All users of the 5.11 kernel series must upgrade.
The updated 5.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.11.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/arm64/silicon-errata.rst | 3 Makefile | 15 +++- arch/arm/boot/dts/am33xx.dtsi | 3 arch/arm64/Kconfig | 10 ++ arch/arm64/include/asm/cpucaps.h | 3 arch/arm64/kernel/cpu_errata.c | 8 ++ arch/arm64/kernel/cpufeature.c | 5 + arch/ia64/kernel/err_inject.c | 22 +++--- arch/ia64/kernel/mca.c | 2 arch/x86/Makefile | 2 arch/x86/net/bpf_jit_comp.c | 15 +++- arch/x86/net/bpf_jit_comp32.c | 11 ++- drivers/bus/ti-sysc.c | 4 - drivers/gpu/drm/msm/adreno/a5xx_power.c | 2 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 77 ++++++++++++++++++---- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 12 ++- drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c | 2 drivers/gpu/drm/msm/msm_fence.c | 2 drivers/isdn/hardware/mISDN/mISDNipac.c | 2 drivers/net/arcnet/com20020-pci.c | 34 +++++---- drivers/net/can/usb/Kconfig | 1 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 4 - drivers/net/ethernet/marvell/pxa168_eth.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 - drivers/net/ipa/ipa_cmd.c | 50 +++++++++----- drivers/platform/x86/intel-hid.c | 7 ++ drivers/platform/x86/intel_pmc_core.c | 50 ++++++++++---- drivers/platform/x86/intel_pmt_class.c | 2 drivers/platform/x86/thinkpad_acpi.c | 8 ++ drivers/ptp/ptp_qoriq.c | 13 ++- drivers/target/target_core_pscsi.c | 8 ++ fs/block_dev.c | 4 - fs/cifs/file.c | 1 fs/cifs/smb2misc.c | 4 - fs/io_uring.c | 8 +- init/Kconfig | 3 lib/math/div64.c | 1 net/mac80211/aead_api.c | 5 - net/mac80211/aes_gmac.c | 5 - net/mac80211/main.c | 13 +++ net/netfilter/nf_conntrack_proto_gre.c | 3 net/netfilter/nf_tables_api.c | 3 tools/bpf/resolve_btfids/.gitignore | 3 tools/bpf/resolve_btfids/Makefile | 44 ++++++------ tools/testing/kunit/kunit_config.py | 2 tools/testing/selftests/arm64/fp/sve-test.S | 22 ++++-- tools/testing/selftests/vm/Makefile | 4 - 47 files changed, 356 insertions(+), 153 deletions(-)
Alban Bedel (1):
platform/x86: intel-hid: Support Lenovo ThinkPad X1 Tablet Gen 2
Alex Elder (1):
net: ipa: fix init header command validation
Andre Przywara (1):
kselftest/arm64: sve: Do not use non-canonical FFR register value
Arnd Bergmann (1):
x86/build: Turn off -fcf-protection for realmode targets
Chris Chiu (1):
block: clear GD_NEED_PART_SCAN later in bdev_disk_changed
Daniel Phan (1):
mac80211: Check crypto_aead_encrypt for errors
David E. Box (2):
platform/x86: intel_pmt_class: Initial resource to 0 platform/x86: intel_pmc_core: Ignore GBE LTR on Tiger Lake platforms
David Gow (1):
kunit: tool: Fix a python tuple typing error
David S. Miller (1):
math: Export mul_u64_u64_div_u64
Dmitry Baryshkov (1):
drm/msm/dsi_pll_7nm: Fix variable usage for pll_lockdet_rate
Esteve Varela Colominas (1):
platform/x86: thinkpad_acpi: Allow the FnLock LED to change state
Greg Kroah-Hartman (1):
Linux 5.11.13
Jimmy Assarsson (1):
can: kvaser_usb: Add support for USBcan Pro 4xHS
Jiri Olsa (5):
tools/resolve_btfids: Build libbpf and libsubcmd in separate directories tools/resolve_btfids: Check objects before removing tools/resolve_btfids: Set srctree variable unconditionally
kbuild: Add resolve_btfids clean to root clean target
kbuild: Do not clean resolve_btfids if the output does not exist
Jordan Crouse (1):
drm/msm: a6xx: Make sure the SQE microcode is safe
Kalyan Thota (1):
drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
Karthikeyan Kathirvel (1):
mac80211: choose first enabled channel for monitor
Konrad Dybcio (1):
drm/msm/adreno: a5xx_power: Don't apply A540 lm_setup to other GPUs
Ludovic Senecaux (1):
netfilter: conntrack: Fix gre tunneling over ipv6
Mans Rullgard (1):
ARM: dts: am33xx: add aliases for mmc interfaces
Martin Wilck (1):
scsi: target: pscsi: Clean up after failure in pscsi_map_sg()
Masahiro Yamada (1):
init/Kconfig: make COMPILE_TEST depend on HAS_IOMEM
Pablo Neira Ayuso (1):
netfilter: nftables: skip hook overlap logic if flowtable is stale
Pavel Andrianov (1):
net: pxa168_eth: Fix a potential data race in pxa168_eth_remove
Pavel Begunkov (1):
io_uring: fix timeout cancel return code
Piotr Krysiuk (2):
bpf, x86: Validate computation of branch displacements for x86-64 bpf, x86: Validate computation of branch displacements for x86-32
Rich Wiley (1):
arm64: kernel: disable CNP on Carmel
Rob Clark (1):
drm/msm: Ratelimit invalid-fence message
Rong Chen (1):
selftests/vm: fix out-of-tree build
Ronnie Sahlberg (1):
cifs: revalidate mapping when we open files for SMB1 POSIX
Sergei Trofimovich (2):
ia64: mca: allocate early mca with GFP_ATOMIC
ia64: fix format strings for err_inject
Stanislav Fomichev (1):
tools/resolve_btfids: Add /libbpf to .gitignore
Tariq Toukan (1):
net/mlx5e: Enforce minimum value check for ICOSQ size
Tong Zhang (2):
mISDN: fix crash in fritzpci
net: arcnet: com20020 fix error handling
Tony Lindgren (1):
bus: ti-sysc: Fix warning on unbind if reset is not deasserted
Vincent Whitchurch (1):
cifs: Silently ignore unknown oplock break handle
Yangbo Lu (1):
ptp_qoriq: fix overflow in ptp_qoriq_adjfine() u64 calcalation
Yonghong Song (1):
bpf, x86: Use kvmalloc_array instead kmalloc_array in bpf_jit_comp
Greg Kroah-Hartman
maintainerDocumentation/arm64/silicon-errata.rst +3 -0
@@ -130,6 +130,9 @@ stable kernels. | Marvell | ARM-MMU-500 | #582743 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| NVIDIA | Carmel Core | N/A | NVIDIA_CARMEL_CNP_ERRATUM | ++----------------+-----------------+-----------------+-----------------------------+ ++----------------+-----------------+-----------------+-----------------------------+ | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+
Makefile +13 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 11 -SUBLEVEL = 12 +SUBLEVEL = 13 EXTRAVERSION = NAME = 💕 Valentine's Day Edition 💕
@@ -1082,6 +1082,17 @@ ifdef CONFIG_STACK_VALIDATION endif endif +PHONY += resolve_btfids_clean + +resolve_btfids_O = $(abspath $(objtree))/tools/bpf/resolve_btfids + +# tools/bpf/resolve_btfids directory might not exist +# in output directory, skip its clean in that case +resolve_btfids_clean: +ifneq ($(wildcard $(resolve_btfids_O)),) + $(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean +endif + ifdef CONFIG_BPF ifdef CONFIG_DEBUG_INFO_BTF ifeq ($(has_libelf),1)
@@ -1499,7 +1510,7 @@ vmlinuxclean: $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean $(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean) -clean: archclean vmlinuxclean +clean: archclean vmlinuxclean resolve_btfids_clean # mrproper - Delete all generated files, including .config #
arch/arm/boot/dts/am33xx.dtsi +3 -0
@@ -40,6 +40,9 @@ aliases { ethernet1 = &cpsw_emac1; spi0 = &spi0; spi1 = &spi1; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; }; cpus {
arch/arm64/Kconfig +10 -0
@@ -805,6 +805,16 @@ config QCOM_FALKOR_ERRATUM_E1041 If unsure, say Y. +config NVIDIA_CARMEL_CNP_ERRATUM + bool "NVIDIA Carmel CNP: CNP on Carmel semantically different than ARM cores" + default y + help + If CNP is enabled on Carmel cores, non-sharable TLBIs on a core will not + invalidate shared TLB entries installed by a different core, as it would + on standard ARM cores. + + If unsure, say Y. + config SOCIONEXT_SYNQUACER_PREITS bool "Socionext Synquacer: Workaround for GICv3 pre-ITS" default y
arch/arm64/include/asm/cpucaps.h +2 -1
@@ -66,7 +66,8 @@#define ARM64_WORKAROUND_1508412 58#define ARM64_HAS_LDAPR 59#define ARM64_KVM_PROTECTED_MODE 60 +#define ARM64_WORKAROUND_NVIDIA_CARMEL_CNP 61 -#define ARM64_NCAPS 61 +#define ARM64_NCAPS 62#endif /* __ASM_CPUCAPS_H */
arch/arm64/kernel/cpu_errata.c +8 -0
@@ -527,6 +527,14 @@ const struct arm64_cpu_capabilities arm64_errata[] = { 0, 0, 1, 0), }, +#endif +#ifdef CONFIG_NVIDIA_CARMEL_CNP_ERRATUM + { + /* NVIDIA Carmel */ + .desc = "NVIDIA Carmel CNP erratum", + .capability = ARM64_WORKAROUND_NVIDIA_CARMEL_CNP, + ERRATA_MIDR_ALL_VERSIONS(MIDR_NVIDIA_CARMEL), + }, #endif { }
arch/arm64/kernel/cpufeature.c +4 -1
@@ -1270,7 +1270,10 @@ has_useable_cnp(const struct arm64_cpu_capabilities *entry, int scope)* may share TLB entries with a CPU stuck in the crashed * kernel. */ -if (is_kdump_kernel ()) +if (is_kdump_kernel ()) +return false; + +if (cpus_have_const_cap (ARM64_WORKAROUND_NVIDIA_CARMEL_CNP ))return false;return has_cpuid_feature (entry, scope);
arch/ia64/kernel/err_inject.c +11 -11
@@ -59,7 +59,7 @@ show_##name(struct device *dev, struct device_attribute *attr, \ char *buf) \ { \u32 cpu=dev->id; \ -return sprintf (buf,"%lx\n" , name[cpu]); \ +return sprintf (buf,"%llx\n" , name[cpu]); \ }#define store (name) \
@@ -86,9 +86,9 @@ store_call_start(struct device *dev, struct device_attribute *attr,#ifdef ERR_INJ_DEBUG printk (KERN_DEBUG "pal_mc_err_inject for cpu%d:\n" , cpu); -printk (KERN_DEBUG "err_type_info=%lx,\n" , err_type_info[cpu]); -printk (KERN_DEBUG "err_struct_info=%lx,\n" , err_struct_info[cpu]); -printk (KERN_DEBUG "err_data_buffer=%lx, %lx, %lx.\n" , +printk (KERN_DEBUG "err_type_info=%llx,\n" , err_type_info[cpu]); +printk (KERN_DEBUG "err_struct_info=%llx,\n" , err_struct_info[cpu]); +printk (KERN_DEBUG "err_data_buffer=%llx, %llx, %llx.\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3);
@@ -117,8 +117,8 @@ store_call_start(struct device *dev, struct device_attribute *attr,#ifdef ERR_INJ_DEBUG printk (KERN_DEBUG "Returns: status=%d,\n" , (int )status[cpu]); -printk (KERN_DEBUG "capabilities=%lx,\n" , capabilities[cpu]); -printk (KERN_DEBUG "resources=%lx\n" , resources[cpu]); +printk (KERN_DEBUG "capabilities=%llx,\n" , capabilities[cpu]); +printk (KERN_DEBUG "resources=%llx\n" , resources[cpu]);#endif return size; }
@@ -131,7 +131,7 @@ show_virtual_to_phys(struct device *dev, struct device_attribute *attr, char *buf) {unsigned int cpu=dev->id; -return sprintf (buf,"%lx\n" , phys_addr[cpu]); +return sprintf (buf,"%llx\n" , phys_addr[cpu]); } static ssize_t
@@ -145,7 +145,7 @@ store_virtual_to_phys(struct device *dev, struct device_attribute *attr, ret =get_user_pages_fast (virt_addr,1 ,FOLL_WRITE ,NULL );if (ret<=0 ) {#ifdef ERR_INJ_DEBUG -printk ("Virtual address %lx is not existing.\n" ,virt_addr); +printk ("Virtual address %llx is not existing.\n" , virt_addr);#endif return -EINVAL ; }
@@ -163,7 +163,7 @@ show_err_data_buffer(struct device *dev, {unsigned int cpu=dev->id; -return sprintf (buf,"%lx, %lx, %lx\n" , +return sprintf (buf,"%llx, %llx, %llx\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3);
@@ -178,13 +178,13 @@ store_err_data_buffer(struct device *dev,int ret;#ifdef ERR_INJ_DEBUG -printk ("write err_data_buffer=[%lx,%lx,%lx] on cpu%d\n" , +printk ("write err_data_buffer=[%llx,%llx,%llx] on cpu%d\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3, cpu);#endif - ret=sscanf (buf,"%lx, %lx, %lx" , + ret =sscanf (buf,"%llx, %llx, %llx" , &err_data_buffer[cpu].data1, &err_data_buffer[cpu].data2, &err_data_buffer[cpu].data3);
arch/ia64/kernel/mca.c +1 -1
@@ -1822,7 +1822,7 @@ ia64_mca_cpu_init(void *cpu_data) data =mca_bootmem (); first_time =0 ; }else - data = (void *)__get_free_pages (GFP_KERNEL , + data = (void *)__get_free_pages (GFP_ATOMIC ,get_order (sz));if (!data) panic("Could not allocate MCA memory for cpu %d\n",
arch/x86/Makefile +1 -1
@@ -27,7 +27,7 @@ endif REALMODE_CFLAGS := -m16 -g -Os -DDISABLE_BRANCH_PROFILING \ -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \ -fno-strict-aliasing -fomit-frame-pointer -fno-pic \ - -mno-mmx -mno-sse + -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none) REALMODE_CFLAGS += -ffreestanding REALMODE_CFLAGS += -fno-stack-protector
arch/x86/net/bpf_jit_comp.c +12 -3
@@ -1476,7 +1476,16 @@ xadd: if (is_imm8(insn->off)) }if (image) { -if (unlikely (proglen + ilen > oldproglen)) { +/* +* When populating the image, assert that: +* +* i) We do not write beyond the allocated space, and +* ii) addrs[i] did not change from the prior run, in order +* to validate assumptions made for computing branch +* displacements. +*/ +if (unlikely (proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) {pr_err ("bpf_jit: fatal error\n" );return -EFAULT ; }
@@ -2038,7 +2047,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) extra_pass = true; goto skip_init_addrs; } - addrs =kmalloc_array (prog->len +1 ,sizeof (*addrs),GFP_KERNEL ); + addrs =kvmalloc_array (prog->len +1 ,sizeof (*addrs),GFP_KERNEL );if (!addrs) { prog = orig_prog; goto out_addrs;
@@ -2128,7 +2137,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)if (image)bpf_prog_fill_jited_linfo (prog, addrs +1 ); out_addrs: -kfree (addrs); +kvfree (addrs);kfree (jit_data); prog->aux->jit_data =NULL ; }
arch/x86/net/bpf_jit_comp32.c +10 -1
@@ -2278,7 +2278,16 @@ emit_cond_jmp: jmp_cond = get_cond_jmp_opcode(BPF_OP(code), false); }if (image) { -if (unlikely (proglen + ilen > oldproglen)) { +/* +* When populating the image, assert that: +* +* i) We do not write beyond the allocated space, and +* ii) addrs[i] did not change from the prior run, in order +* to validate assumptions made for computing branch +* displacements. +*/ +if (unlikely (proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) {pr_err ("bpf_jit: fatal error\n" );return -EFAULT ; }
drivers/bus/ti-sysc.c +3 -1
@@ -3053,7 +3053,9 @@ static int sysc_remove(struct platform_device *pdev)pm_runtime_put_sync (&pdev->dev);pm_runtime_disable (&pdev->dev); -reset_control_assert (ddata->rsts); + +if (!reset_control_status (ddata->rsts)) +reset_control_assert (ddata->rsts); unprepare:sysc_unprepare (ddata);
drivers/gpu/drm/msm/adreno/a5xx_power.c +1 -1
@@ -304,7 +304,7 @@ int a5xx_power_init(struct msm_gpu *gpu)/* Set up the limits management */ if (adreno_is_a530 (adreno_gpu))a530_lm_setup (gpu); -else +else if (adreno_is_a540 (adreno_gpu))a540_lm_setup (gpu);/* Set up SP/TP power collpase */
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +64 -13
99 lines not on this page · raw message
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +7 -5
@@ -43,6 +43,8 @@#define DPU_DEBUGFS_DIR "msm_dpu"#define DPU_DEBUGFS_HWMASKNAME "hw_log_mask" +#define MIN_IB_BW 400000000ULL/* Min ib vote 400MB */ +static int dpu_kms_hw_init (struct msm_kms *kms);static void _dpu_kms_mmu_destroy (struct dpu_kms *dpu_kms);
@@ -931,6 +933,9 @@ static int dpu_kms_hw_init(struct msm_kms *kms)DPU_DEBUG ("REG_DMA is not defined" ); } +if (of_device_is_compatible (dev->dev->of_node,"qcom,sc7180-mdss" )) +dpu_kms_parse_data_bus_icc_path (dpu_kms); +pm_runtime_get_sync (&dpu_kms->pdev->dev); dpu_kms->core_rev =readl_relaxed (dpu_kms->mmio +0x0 );
@@ -1032,9 +1037,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms)dpu_vbif_init_memtypes (dpu_kms); -if (of_device_is_compatible (dev->dev->of_node,"qcom,sc7180-mdss" )) -dpu_kms_parse_data_bus_icc_path (dpu_kms); -pm_runtime_put_sync (&dpu_kms->pdev->dev);return 0 ;
@@ -1191,10 +1193,10 @@ static int __maybe_unused dpu_runtime_resume(struct device *dev) ddev = dpu_kms->dev; +WARN_ON (!(dpu_kms->num_paths));/* Min vote of BW is required before turning on AXI clk */ for (i =0 ; i < dpu_kms->num_paths; i++) -icc_set_bw (dpu_kms->path[i],0 , - dpu_kms->catalog->perf.min_dram_ib); +icc_set_bw (dpu_kms->path[i],0 ,Bps_to_icc (MIN_IB_BW )); rc =msm_dss_enable_clk (mp->clk_config, mp->num_clk, true);if (rc) {
drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c +1 -1
@@ -325,7 +325,7 @@ static void dsi_pll_commit(struct dsi_pll_7nm *pll)pll_write (base + REG_DSI_7nm_PHY_PLL_FRAC_DIV_START_LOW_1, reg->frac_div_start_low);pll_write (base + REG_DSI_7nm_PHY_PLL_FRAC_DIV_START_MID_1, reg->frac_div_start_mid);pll_write (base + REG_DSI_7nm_PHY_PLL_FRAC_DIV_START_HIGH_1, reg->frac_div_start_high); -pll_write (base + REG_DSI_7nm_PHY_PLL_PLL_LOCKDET_RATE_1,0x40 ); +pll_write (base + REG_DSI_7nm_PHY_PLL_PLL_LOCKDET_RATE_1, reg->pll_lockdet_rate);pll_write (base + REG_DSI_7nm_PHY_PLL_PLL_LOCK_DELAY,0x06 );pll_write (base + REG_DSI_7nm_PHY_PLL_CMODE_1,0x10 );/* TODO: 0x00 for CPHY */ pll_write (base + REG_DSI_7nm_PHY_PLL_CLOCK_INVERTERS, reg->pll_clock_inverters);
drivers/gpu/drm/msm/msm_fence.c +1 -1
@@ -45,7 +45,7 @@ int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence,int ret;if (fence > fctx->last_fence) { -DRM_ERROR ("%s: waiting on invalid fence: %u (of %u)\n" , +DRM_ERROR_RATELIMITED ("%s: waiting on invalid fence: %u (of %u)\n" , fctx->name, fence, fctx->last_fence);return -EINVAL ; }
drivers/isdn/hardware/mISDN/mISDNipac.c +1 -1
@@ -694,7 +694,7 @@ isac_release(struct isac_hw *isac) {if (isac->type &IPAC_TYPE_ISACX )WriteISAC (isac,ISACX_MASK ,0xff ); -else +else if (isac->type !=0 )WriteISAC (isac,ISAC_MASK ,0xff );if (isac->dch.timer.function !=NULL ) {del_timer (&isac->dch.timer);
drivers/net/arcnet/com20020-pci.c +19 -15
@@ -127,6 +127,8 @@ static int com20020pci_probe(struct pci_dev *pdev,int i, ioaddr, ret;struct resource *r; + ret =0 ; +if (pci_enable_device (pdev))return -EIO ;
@@ -139,6 +141,8 @@ static int com20020pci_probe(struct pci_dev *pdev, priv->ci = ci; mm = &ci->misc_map; +pci_set_drvdata (pdev, priv); +INIT_LIST_HEAD (&priv->list_dev);if (mm->size) {
@@ -161,7 +165,7 @@ static int com20020pci_probe(struct pci_dev *pdev, dev =alloc_arcdev (device);if (!dev) { ret = -ENOMEM ; - goto out_port; +break ; } dev->dev_port = i;
@@ -178,7 +182,7 @@ static int com20020pci_probe(struct pci_dev *pdev,pr_err ("IO region %xh-%xh already allocated\n" , ioaddr, ioaddr + cm->size -1 ); ret = -EBUSY ; - goto out_port; + goto err_free_arcdev; }/* Dummy access after Reset
@@ -216,18 +220,18 @@ static int com20020pci_probe(struct pci_dev *pdev,if (arcnet_inb (ioaddr,COM20020_REG_R_STATUS ) ==0xFF ) {pr_err ("IO address %Xh is empty!\n" , ioaddr); ret = -EIO ; - goto out_port; + goto err_free_arcdev; }if (com20020_check (dev)) { ret = -EIO ; - goto out_port; + goto err_free_arcdev; } card =devm_kzalloc (&pdev->dev,sizeof (struct com20020_dev ),GFP_KERNEL );if (!card) { ret = -ENOMEM ; - goto out_port; + goto err_free_arcdev; } card->index = i;
@@ -253,29 +257,29 @@ static int com20020pci_probe(struct pci_dev *pdev, ret =devm_led_classdev_register (&pdev->dev, &card->tx_led);if (ret) - goto out_port; + goto err_free_arcdev; ret =devm_led_classdev_register (&pdev->dev, &card->recon_led);if (ret) - goto out_port; + goto err_free_arcdev;dev_set_drvdata (&dev->dev, card); ret =com20020_found (dev,IRQF_SHARED );if (ret) - goto out_port; + goto err_free_arcdev;devm_arcnet_led_init (dev, dev->dev_id, i);list_add (&card->list, &priv->list_dev); - } +continue ; -pci_set_drvdata (pdev, priv); - -return 0 ; - -out_port: -com20020pci_remove (pdev); +err_free_arcdev: +free_arcdev (dev); +break ; + } +if (ret) +com20020pci_remove (pdev);return ret; }
drivers/net/can/usb/Kconfig +1 -0
@@ -73,6 +73,7 @@ config CAN_KVASER_USB - Kvaser Memorator Pro 5xHS - Kvaser USBcan Light 4xHS - Kvaser USBcan Pro 2xHS v2 + - Kvaser USBcan Pro 4xHS - Kvaser USBcan Pro 5xHS - Kvaser U100 - Kvaser U100P
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +3 -1
@@ -86,8 +86,9 @@#define USB_U100_PRODUCT_ID 273#define USB_U100P_PRODUCT_ID 274#define USB_U100S_PRODUCT_ID 275 +#define USB_USBCAN_PRO_4HS_PRODUCT_ID 276#define USB_HYDRA_PRODUCT_ID_END \ - USB_U100S_PRODUCT_ID + USB_USBCAN_PRO_4HS_PRODUCT_IDstatic inline bool kvaser_is_leaf (const struct usb_device_id *id) {
@@ -193,6 +194,7 @@ static const struct usb_device_id kvaser_usb_table[] = { { USB_DEVICE(KVASER_VENDOR_ID, USB_U100_PRODUCT_ID) }, { USB_DEVICE(KVASER_VENDOR_ID, USB_U100P_PRODUCT_ID) }, { USB_DEVICE(KVASER_VENDOR_ID, USB_U100S_PRODUCT_ID) }, + { USB_DEVICE(KVASER_VENDOR_ID, USB_USBCAN_PRO_4HS_PRODUCT_ID) }, { } };MODULE_DEVICE_TABLE (usb, kvaser_usb_table);
drivers/net/ethernet/marvell/pxa168_eth.c +1 -1
@@ -1544,8 +1544,8 @@ static int pxa168_eth_remove(struct platform_device *pdev)clk_disable_unprepare (pep->clk);mdiobus_unregister (pep->smi_bus);mdiobus_free (pep->smi_bus); -unregister_netdev (dev);cancel_work_sync (&pep->tx_timeout_task); +unregister_netdev (dev);free_netdev (dev);return 0 ; }
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +3 -2
@@ -2317,8 +2317,9 @@ static u8 mlx5e_build_icosq_log_wq_sz(struct mlx5e_params *params, {switch (params->rq_wq_type) {case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ : -return order_base_2 (MLX5E_UMR_WQEBBS ) + -mlx5e_get_rq_log_wq_sz (rqp->rqc); +return max_t (u8,MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE , +order_base_2 (MLX5E_UMR_WQEBBS ) + +mlx5e_get_rq_log_wq_sz (rqp->rqc));default :/* MLX5_WQ_TYPE_CYCLIC */ return MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE ; }
drivers/net/ipa/ipa_cmd.c +33 -17
76 lines not on this page · raw message
drivers/platform/x86/intel-hid.c +7 -0
@@ -90,6 +90,13 @@ static const struct dmi_system_id button_array_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "HP Spectre x2 Detachable"), }, }, + { + .ident = "Lenovo ThinkPad X1 Tablet Gen 2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Tablet Gen 2"), + }, + }, { } };
drivers/platform/x86/intel_pmc_core.c +35 -15
75 lines not on this page · raw message
drivers/platform/x86/intel_pmt_class.c +1 -1
@@ -173,7 +173,7 @@ static int intel_pmt_dev_register(struct intel_pmt_entry *entry,struct intel_pmt_namespace *ns, struct device *parent) { - struct resource res; + struct resource res = {0};struct device *dev;int ret;
drivers/platform/x86/thinkpad_acpi.c +7 -1
@@ -4080,13 +4080,19 @@ static bool hotkey_notify_6xxx(const u32 hkey,case TP_HKEY_EV_KEY_NUMLOCK :case TP_HKEY_EV_KEY_FN : -case TP_HKEY_EV_KEY_FN_ESC :/* key press events, we just ignore them as long as the EC * is still reporting them in the normal keyboard stream */ *send_acpi_ev = false; *ignore_acpi_ev = true;return true; +case TP_HKEY_EV_KEY_FN_ESC : +/* Get the media key status to foce the status LED to update */ +acpi_evalf (hkey_handle,NULL ,"GMKS" ,"v" ); + *send_acpi_ev = false; + *ignore_acpi_ev = true; +return true; +case TP_HKEY_EV_TABLET_CHANGED :tpacpi_input_send_tabletsw ();hotkey_tablet_mode_notify_change ();
drivers/ptp/ptp_qoriq.c +7 -6
@@ -189,15 +189,16 @@ int ptp_qoriq_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) tmr_add = ptp_qoriq->tmr_add; adj = tmr_add; -/* calculate diff as adj*(scaled_ppm/65536)/1000000 -* and round() to the nearest integer +/* +* Calculate diff and round() to the nearest integer +* +* diff = adj * (ppb / 1000000000) +* = adj * scaled_ppm / 65536000000 */ - adj *= scaled_ppm; - diff =div_u64 (adj,8000000 ); - diff = (diff >>13 ) + ((diff >>12 ) &1 ); + diff =mul_u64_u64_div_u64 (adj, scaled_ppm,32768000000 ); + diff =DIV64_U64_ROUND_UP (diff,2 ); tmr_add = neg_adj ? tmr_add - diff : tmr_add + diff; - ptp_qoriq->write (®s->ctrl_regs->tmr_add, tmr_add);return 0 ;
drivers/target/target_core_pscsi.c +8 -0
@@ -939,6 +939,14 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,return 0 ; fail: +if (bio) +bio_put (bio); +while (req->bio) { + bio = req->bio; + req->bio = bio->bi_next; +bio_put (bio); + } + req->biotail =NULL ;return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE ; }
fs/block_dev.c +2 -2
@@ -1240,13 +1240,13 @@ int bdev_disk_changed(struct block_device *bdev, bool invalidate)lockdep_assert_held (&bdev->bd_mutex); -clear_bit (GD_NEED_PART_SCAN , &bdev->bd_disk->state); - rescan: ret =blk_drop_partitions (bdev);if (ret)return ret; +clear_bit (GD_NEED_PART_SCAN , &disk->state); +/* * Historically we only set the capacity to zero for devices that * support partitions (independ of actually having partitions created).
fs/cifs/file.c +1 -0
@@ -165,6 +165,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode, goto posix_open_ret; } }else { +cifs_revalidate_mapping (*pinode);cifs_fattr_to_inode (*pinode, &fattr); }
fs/cifs/smb2misc.c +2 -2
@@ -754,8 +754,8 @@ smb2_is_valid_oplock_break(char *buffer, struct TCP_Server_Info *server) } }spin_unlock (&cifs_tcp_ses_lock); -cifs_dbg (FYI ,"Can not process oplock break for non-existent connection\n" ); -return false; +cifs_dbg (FYI ,"No file id matched, oplock break ignored\n" ); +return true; }void
fs/io_uring.c +4 -4
@@ -1594,7 +1594,7 @@ static void io_queue_async_work(struct io_kiocb *req)io_queue_linked_timeout (link); } -static void io_kill_timeout (struct io_kiocb *req) +static void io_kill_timeout (struct io_kiocb *req,int status) {struct io_timeout_data *io = req->async_data;int ret;
@@ -1604,7 +1604,7 @@ static void io_kill_timeout(struct io_kiocb *req)atomic_set (&req->ctx->cq_timeouts,atomic_read (&req->ctx->cq_timeouts) +1 );list_del_init (&req->timeout.list); -io_cqring_fill_event (req,0 ); +io_cqring_fill_event (req, status);io_put_req_deferred (req,1 ); } }
@@ -1621,7 +1621,7 @@ static bool io_kill_timeouts(struct io_ring_ctx *ctx, struct task_struct *tsk,spin_lock_irq (&ctx->completion_lock);list_for_each_entry_safe (req, tmp, &ctx->timeout_list, timeout.list) {if (io_match_task (req, tsk, files)) { -io_kill_timeout (req); +io_kill_timeout (req, -ECANCELED ); canceled++; } }
@@ -1673,7 +1673,7 @@ static void io_flush_timeouts(struct io_ring_ctx *ctx)break ;list_del_init (&req->timeout.list); -io_kill_timeout (req); +io_kill_timeout (req,0 ); }while (!list_empty (&ctx->timeout_list)); ctx->cq_last_tm_flush = seq;
init/Kconfig +1 -2
@@ -113,8 +113,7 @@ config INIT_ENV_ARG_LIMIT config COMPILE_TEST bool "Compile also drivers which will not load" - depends on !UML && !S390 - default n + depends on HAS_IOMEM help Some drivers can be compiled on a different platform than they are intended to be run on. Despite they cannot be loaded there (or even
lib/math/div64.c +1 -0
@@ -232,4 +232,5 @@ u64 mul_u64_u64_div_u64(u64 a, u64 b, u64 c) return res + div64_u64(a * b, c); } +EXPORT_SYMBOL (mul_u64_u64_div_u64);#endif
net/mac80211/aead_api.c +3 -2
@@ -23,6 +23,7 @@ int aead_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len,struct aead_request *aead_req;int reqsize =sizeof (*aead_req) +crypto_aead_reqsize (tfm);u8 *__aad; +int ret; aead_req =kzalloc (reqsize + aad_len,GFP_ATOMIC );if (!aead_req)
@@ -40,10 +41,10 @@ int aead_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len,aead_request_set_crypt (aead_req, sg, sg, data_len, b_0);aead_request_set_ad (aead_req, sg[0 ].length); -crypto_aead_encrypt (aead_req); + ret =crypto_aead_encrypt (aead_req);kfree_sensitive (aead_req); -return 0 ; +return ret; } int aead_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len,
net/mac80211/aes_gmac.c +3 -2
@@ -22,6 +22,7 @@ int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce,struct aead_request *aead_req;int reqsize =sizeof (*aead_req) +crypto_aead_reqsize (tfm);const __le16 *fc; +int ret;if (data_len <GMAC_MIC_LEN )return -EINVAL ;
@@ -59,10 +60,10 @@ int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce,aead_request_set_crypt (aead_req, sg, sg,0 , iv);aead_request_set_ad (aead_req,GMAC_AAD_LEN + data_len); -crypto_aead_encrypt (aead_req); + ret =crypto_aead_encrypt (aead_req);kfree_sensitive (aead_req); -return 0 ; +return ret; } struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[],
net/mac80211/main.c +12 -1
@@ -970,8 +970,19 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)continue ;if (!dflt_chandef.chan) { +/* +* Assign the first enabled channel to dflt_chandef +* from the list of channels +*/ +for (i =0 ; i < sband->n_channels; i++) +if (!(sband->channels[i].flags & +IEEE80211_CHAN_DISABLED )) +break ; +/* if none found then use the first anyway */ +if (i == sband->n_channels) + i =0 ;cfg80211_chandef_create (&dflt_chandef, - &sband->channels[0 ], + &sband->channels[i],NL80211_CHAN_NO_HT );/* init channel we're on */ if (!local->use_chanctx && !local->_oper_chandef.chan) {
net/netfilter/nf_conntrack_proto_gre.c +0 -3
@@ -218,9 +218,6 @@ int nf_conntrack_gre_packet(struct nf_conn *ct, enum ip_conntrack_info ctinfo, const struct nf_hook_state *state) { -if (state->pf !=NFPROTO_IPV4 ) -return -NF_ACCEPT ; -if (!nf_ct_is_confirmed (ct)) {unsigned int *timeouts =nf_ct_timeout_lookup (ct);
net/netfilter/nf_tables_api.c +3 -0
@@ -6749,6 +6749,9 @@ static int nft_register_flowtable_net_hooks(struct net *net,list_for_each_entry (hook, hook_list, list) {list_for_each_entry (ft, &table->flowtables, list) { +if (!nft_is_active_next (net, ft)) +continue ; +list_for_each_entry (hook2, &ft->hook_list, list) {if (hook->ops.dev == hook2->ops.dev && hook->ops.pf == hook2->ops.pf) {
tools/bpf/resolve_btfids/.gitignore +1 -2
@@ -1,4 +1,3 @@ -/FEATURE-DUMP.libbpf -/bpf_helper_defs.h /fixdep /resolve_btfids +/libbpf/
tools/bpf/resolve_btfids/Makefile +22 -22
85 lines not on this page · raw message
tools/testing/kunit/kunit_config.py +1 -1
@@ -13,7 +13,7 @@ from typing import List, Set CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_(\w+) is not set$' CONFIG_PATTERN = r'^CONFIG_(\w+)=(\S+|".*")$' -KconfigEntryBase = collections.namedtuple('KconfigEntry', ['name', 'value']) +KconfigEntryBase = collections.namedtuple('KconfigEntryBase', ['name', 'value']) class KconfigEntry(KconfigEntryBase):
tools/testing/selftests/arm64/fp/sve-test.S +17 -5
@@ -284,16 +284,28 @@ endfunction // Set up test pattern in the FFR // x0: pid // x2: generation +// +// We need to generate a canonical FFR value, which consists of a number of +// low "1" bits, followed by a number of zeros. This gives us 17 unique values +// per 16 bits of FFR, so we create a 4 bit signature out of the PID and +// generation, and use that as the initial number of ones in the pattern. +// We fill the upper lanes of FFR with zeros. // Beware: corrupts P0. function setup_ffr mov x4, x30 - bl pattern + and w0, w0, #0x3 + bfi w0, w2, #2, #2 + mov w1, #1 + lsl w1, w1, w0 + sub w1, w1, #1 + ldr x0, =ffrref - ldr x1, =scratch - rdvl x2, #1 - lsr x2, x2, #3 - bl memcpy + strh w1, [x0], 2 + rdvl x1, #1 + lsr x1, x1, #3 + sub x1, x1, #2 + bl memclr mov x0, #0 ldr x1, =ffrref
tools/testing/selftests/vm/Makefile +2 -2
@@ -101,7 +101,7 @@ endef ifeq ($(CAN_BUILD_I386),1) $(BINARIES_32): CFLAGS += -m32 $(BINARIES_32): LDLIBS += -lrt -ldl -lm -$(BINARIES_32): %_32: %.c +$(BINARIES_32): $(OUTPUT)/%_32: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@ $(foreach t,$(TARGETS),$(eval $(call gen-target-rule-32,$(t)))) endif
@@ -109,7 +109,7 @@ endif ifeq ($(CAN_BUILD_X86_64),1) $(BINARIES_64): CFLAGS += -m64 $(BINARIES_64): LDLIBS += -lrt -ldl -$(BINARIES_64): %_64: %.c +$(BINARIES_64): $(OUTPUT)/%_64: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@ $(foreach t,$(TARGETS),$(eval $(call gen-target-rule-64,$(t)))) endif