Linux 5.10.29
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.29 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
------------
Makefile | 15 +++++- arch/arm/boot/dts/am33xx.dtsi | 3 + 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/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/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/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 - 37 files changed, 241 insertions(+), 121 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 (1):
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.10.29
Heiko Carstens (1):
init/Kconfig: make COMPILE_TEST depend on !S390
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
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
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 (1):
mISDN: fix crash in fritzpci
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
maintainerMakefile +13 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 28 +SUBLEVEL = 29 EXTRAVERSION = NAME = Dare mighty things
@@ -1083,6 +1083,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)
@@ -1500,7 +1511,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/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
@@ -34,7 +34,7 @@ M16_CFLAGS := $(call cc-option, -m16, $(CODE16GCC_CFLAGS)) REALMODE_CFLAGS := $(M16_CFLAGS) -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
@@ -3044,7 +3044,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/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);
@@ -929,6 +931,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 );
@@ -1030,9 +1035,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 ;
@@ -1189,10 +1191,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/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
@@ -2326,8 +2326,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
@@ -86,6 +86,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/thinkpad_acpi.c +7 -1
@@ -4079,13 +4079,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
@@ -1404,13 +1404,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
@@ -164,6 +164,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
@@ -745,8 +745,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
@@ -1489,7 +1489,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;
@@ -1499,7 +1499,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 ); } }
@@ -1516,7 +1516,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++; } }
@@ -1568,7 +1568,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
@@ -114,8 +114,7 @@ config INIT_ENV_ARG_LIMIT config COMPILE_TEST bool "Compile also drivers which will not load" - depends on !UML - 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
@@ -230,4 +230,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
@@ -982,8 +982,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
@@ -6573,6 +6573,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
@@ -12,7 +12,7 @@ import re 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
@@ -99,7 +99,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
@@ -107,7 +107,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