From 96f7973c9bc1293749676e3b72d542edf9e82d39 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 26 Aug 2022 16:53:06 +0200 Subject: [PATCH] update submodule to Ubuntu-5.15.0-48.54 and rebase patches Signed-off-by: Thomas Lamprecht --- ...rides-for-missing-ACS-capabilities-4..patch | 2 +- ...ade-unregister_netdevice-refcount-lea.patch | 4 ++-- ...esce-host-bridge-contiguous-apertures.patch | 2 +- ...CI-Coalesce-host-bridge-contiguous-ap.patch | 2 +- ...erate-split-BTF-type-info-per-default.patch | 2 +- ...cgroup-always-terminate-io.stat-lines.patch | 10 +++++----- ...plefb-Request-memory-region-in-driver.patch | 18 +++++++++++------- ...-mount-option-to-toggle-trunking-disc.patch | 4 ++-- ...r-smm-add-structs-for-KVM-s-smram-lay.patch | 4 ++-- ...r-smm-use-smram-structs-in-the-common.patch | 4 ++-- ...r-smm-use-smram-struct-for-32-bit-smr.patch | 8 ++++---- ...r-smm-use-smram-struct-for-64-bit-smr.patch | 8 ++++---- ...r-smm-preserve-interrupt-shadow-in-SM.patch | 8 ++++---- submodules/ubuntu-jammy | 2 +- 14 files changed, 41 insertions(+), 37 deletions(-) diff --git a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch index 71b0c0a..470f240 100644 --- a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch +++ b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch @@ -55,7 +55,7 @@ Signed-off-by: Thomas Lamprecht 2 files changed, 111 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index f129c3bb1046..27b9903f2c3f 100644 +index efb9e8b66652..b2331a9c08dd 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -3943,6 +3943,15 @@ diff --git a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch index 4dcd0c8..6ba774b 100644 --- a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch +++ b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch @@ -10,10 +10,10 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 804aba2228c2..72bcbef321a8 100644 +index 6111506a4105..564801ce82ba 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -10524,7 +10524,7 @@ static void netdev_wait_allrefs(struct net_device *dev) +@@ -10528,7 +10528,7 @@ static void netdev_wait_allrefs(struct net_device *dev) if (refcnt != 1 && time_after(jiffies, warning_time + netdev_unregister_timeout_secs * HZ)) { diff --git a/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch b/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch index cac0d2b..56dc238 100644 --- a/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch +++ b/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch @@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 4 insertions(+), 46 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index cb70d2605e97..258350f80f6c 100644 +index 4f26c222f5f2..c0abe906b84e 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -20,7 +20,6 @@ diff --git a/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch b/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch index 118131d..ca9001a 100644 --- a/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch +++ b/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch @@ -56,7 +56,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index 258350f80f6c..7ff9fcec365b 100644 +index c0abe906b84e..8b7c58dec9e4 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus) diff --git a/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch b/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch index 6f746cd..5bb4858 100644 --- a/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch +++ b/patches/kernel/0008-do-not-generate-split-BTF-type-info-per-default.patch @@ -14,7 +14,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index 5d5f53f242da..790b372e6fd0 100644 +index ead81fad883c..9d76f3c39735 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -325,7 +325,7 @@ config PAHOLE_HAS_SPLIT_BTF diff --git a/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch b/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch index dc50e88..6ed99cc 100644 --- a/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch +++ b/patches/kernel/0009-blk-cgroup-always-terminate-io.stat-lines.patch @@ -22,7 +22,7 @@ Signed-off-by: Thomas Lamprecht 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c -index 07a2524e6efd..fd09c20a5543 100644 +index ce5858dadca5..aa43ed94deb6 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -887,7 +887,6 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s) @@ -92,10 +92,10 @@ index 10851493940c..21db328c0bcc 100644 static u64 ioc_weight_prfill(struct seq_file *sf, struct blkg_policy_data *pd, diff --git a/block/blk-iolatency.c b/block/blk-iolatency.c -index c0545f9da549..d33460f3d43d 100644 +index ce3847499d85..0bac2c9ebb4a 100644 --- a/block/blk-iolatency.c +++ b/block/blk-iolatency.c -@@ -890,7 +890,7 @@ static int iolatency_print_limit(struct seq_file *sf, void *v) +@@ -902,7 +902,7 @@ static int iolatency_print_limit(struct seq_file *sf, void *v) return 0; } @@ -104,7 +104,7 @@ index c0545f9da549..d33460f3d43d 100644 { struct latency_stat stat; int cpu; -@@ -913,17 +913,16 @@ static bool iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s) +@@ -925,17 +925,16 @@ static bool iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s) (unsigned long long)stat.ps.missed, (unsigned long long)stat.ps.total, iolat->rq_depth.max_depth); @@ -124,7 +124,7 @@ index c0545f9da549..d33460f3d43d 100644 if (iolat->ssd) return iolatency_ssd_stat(iolat, s); -@@ -936,7 +935,6 @@ static bool iolatency_pd_stat(struct blkg_policy_data *pd, struct seq_file *s) +@@ -948,7 +947,6 @@ static bool iolatency_pd_stat(struct blkg_policy_data *pd, struct seq_file *s) else seq_printf(s, " depth=%u avg_lat=%llu win=%llu", iolat->rq_depth.max_depth, avg_lat, cur_win); diff --git a/patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch b/patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch index dde776e..901628c 100644 --- a/patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch +++ b/patches/kernel/0012-fbdev-simplefb-Request-memory-region-in-driver.patch @@ -18,10 +18,10 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c -index b63074fd892e..6885ac0203de 100644 +index a2e3a4690025..8acfb12abfee 100644 --- a/drivers/video/fbdev/simplefb.c +++ b/drivers/video/fbdev/simplefb.c -@@ -66,16 +66,36 @@ static int simplefb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, +@@ -66,7 +66,21 @@ static int simplefb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, return 0; } @@ -44,6 +44,8 @@ index b63074fd892e..6885ac0203de 100644 static void simplefb_clocks_destroy(struct simplefb_par *par); static void simplefb_regulators_destroy(struct simplefb_par *par); +@@ -76,12 +90,18 @@ static void simplefb_regulators_destroy(struct simplefb_par *par); + */ static void simplefb_destroy(struct fb_info *info) { + struct simplefb_par *par = info->par; @@ -53,13 +55,15 @@ index b63074fd892e..6885ac0203de 100644 simplefb_clocks_destroy(info->par); if (info->screen_base) iounmap(info->screen_base); + + framebuffer_release(info); + + if (mem) + release_mem_region(mem->start, resource_size(mem)); } static const struct fb_ops simplefb_ops = { -@@ -169,20 +189,6 @@ static int simplefb_parse_pd(struct platform_device *pdev, +@@ -175,20 +195,6 @@ static int simplefb_parse_pd(struct platform_device *pdev, return 0; } @@ -80,7 +84,7 @@ index b63074fd892e..6885ac0203de 100644 #if defined CONFIG_OF && defined CONFIG_COMMON_CLK /* * Clock handling code. -@@ -405,7 +411,7 @@ static int simplefb_probe(struct platform_device *pdev) +@@ -411,7 +417,7 @@ static int simplefb_probe(struct platform_device *pdev) struct simplefb_params params; struct fb_info *info; struct simplefb_par *par; @@ -89,7 +93,7 @@ index b63074fd892e..6885ac0203de 100644 /* * Generic drivers must not be registered if a framebuffer exists. -@@ -430,15 +436,28 @@ static int simplefb_probe(struct platform_device *pdev) +@@ -436,15 +442,28 @@ static int simplefb_probe(struct platform_device *pdev) if (ret) return ret; @@ -122,7 +126,7 @@ index b63074fd892e..6885ac0203de 100644 platform_set_drvdata(pdev, info); par = info->par; -@@ -495,6 +514,9 @@ static int simplefb_probe(struct platform_device *pdev) +@@ -501,6 +520,9 @@ static int simplefb_probe(struct platform_device *pdev) info->var.xres, info->var.yres, info->var.bits_per_pixel, info->fix.line_length); @@ -132,7 +136,7 @@ index b63074fd892e..6885ac0203de 100644 ret = register_framebuffer(info); if (ret < 0) { dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret); -@@ -513,6 +535,9 @@ static int simplefb_probe(struct platform_device *pdev) +@@ -519,6 +541,9 @@ static int simplefb_probe(struct platform_device *pdev) iounmap(info->screen_base); error_fb_release: framebuffer_release(info); diff --git a/patches/kernel/0013-NFSv4.1-provide-mount-option-to-toggle-trunking-disc.patch b/patches/kernel/0013-NFSv4.1-provide-mount-option-to-toggle-trunking-disc.patch index 91712a5..2048232 100644 --- a/patches/kernel/0013-NFSv4.1-provide-mount-option-to-toggle-trunking-disc.patch +++ b/patches/kernel/0013-NFSv4.1-provide-mount-option-to-toggle-trunking-disc.patch @@ -35,7 +35,7 @@ index 090b16890e3d..f303e96ce165 100644 if (error < 0) return error; diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c -index 0d444a90f513..da5217abc2e5 100644 +index fb3cad38b149..0166370f088e 100644 --- a/fs/nfs/fs_context.c +++ b/fs/nfs/fs_context.c @@ -79,6 +79,7 @@ enum nfs_param { @@ -68,7 +68,7 @@ index 0d444a90f513..da5217abc2e5 100644 if (result.negated) ctx->flags |= NFS_MOUNT_NOAC; diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h -index 9a6e70ccde56..10c347416dd2 100644 +index da9ef0ab9b4b..5336e494703b 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -156,6 +156,7 @@ struct nfs_server { diff --git a/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch b/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch index c7c086f..eb02097 100644 --- a/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch +++ b/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch @@ -267,10 +267,10 @@ index fb09cd22cb7f..0b2bbcce321a 100644 #if defined(CONFIG_X86_32) #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 922fc258c37f..07575e5eb254 100644 +index 604716996c5d..673262228f3e 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -12442,6 +12442,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit); +@@ -12449,6 +12449,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit); static int __init kvm_x86_init(void) { kvm_mmu_x86_module_init(); diff --git a/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch b/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch index af4b038..d3d3557 100644 --- a/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch +++ b/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch @@ -165,7 +165,7 @@ index 417176817d80..a45a43bcc844 100644 struct vcpu_vmx *vmx = to_vmx(vcpu); int ret; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 07575e5eb254..2ebbb441880c 100644 +index 673262228f3e..37edf00584f8 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7312,9 +7312,9 @@ static void emulator_exiting_smm(struct x86_emulate_ctxt *ctxt) @@ -180,7 +180,7 @@ index 07575e5eb254..2ebbb441880c 100644 } static void emulator_triple_fault(struct x86_emulate_ctxt *ctxt) -@@ -9164,25 +9164,25 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9171,25 +9171,25 @@ static void enter_smm(struct kvm_vcpu *vcpu) struct kvm_segment cs, ds; struct desc_ptr dt; unsigned long cr0; diff --git a/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch b/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch index 6985f2d..d57f700 100644 --- a/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch +++ b/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch @@ -145,10 +145,10 @@ index 730c3e2662d6..ad5d2ab9ab84 100644 if (ret != X86EMUL_CONTINUE) goto emulate_shutdown; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 2ebbb441880c..8a6b9bffc770 100644 +index 37edf00584f8..11e62b1f1764 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -9018,22 +9018,18 @@ static u32 enter_smm_get_segment_flags(struct kvm_segment *seg) +@@ -9025,22 +9025,18 @@ static u32 enter_smm_get_segment_flags(struct kvm_segment *seg) return flags; } @@ -179,7 +179,7 @@ index 2ebbb441880c..8a6b9bffc770 100644 } #ifdef CONFIG_X86_64 -@@ -9054,54 +9050,47 @@ static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n) +@@ -9061,54 +9057,47 @@ static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n) } #endif @@ -257,7 +257,7 @@ index 2ebbb441880c..8a6b9bffc770 100644 } #ifdef CONFIG_X86_64 -@@ -9172,7 +9161,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9179,7 +9168,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) enter_smm_save_state_64(vcpu, (char *)&smram); else #endif diff --git a/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch b/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch index d23ff4e..1a06cc2 100644 --- a/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch +++ b/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch @@ -154,10 +154,10 @@ index ad5d2ab9ab84..4eb35a0a33a5 100644 #endif ret = rsm_load_state_32(ctxt, &smram.smram32); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 8a6b9bffc770..d00b82ee6ca4 100644 +index 11e62b1f1764..5c4be3873c0d 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -9033,20 +9033,17 @@ static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu, +@@ -9040,20 +9040,17 @@ static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu, } #ifdef CONFIG_X86_64 @@ -185,7 +185,7 @@ index 8a6b9bffc770..d00b82ee6ca4 100644 } #endif -@@ -9094,57 +9091,51 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9101,57 +9098,51 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat } #ifdef CONFIG_X86_64 @@ -268,7 +268,7 @@ index 8a6b9bffc770..d00b82ee6ca4 100644 } #endif -@@ -9158,7 +9149,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9165,7 +9156,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) memset(smram.bytes, 0, sizeof(smram.bytes)); #ifdef CONFIG_X86_64 if (guest_cpuid_has(vcpu, X86_FEATURE_LM)) diff --git a/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch b/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch index c80b51b..78ae05f 100644 --- a/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch +++ b/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch @@ -128,7 +128,7 @@ index 3b37b3e17379..a64c190abf28 100644 __CHECK_SMRAM64_OFFSET(auto_hlt_restart, 0xFEC9); __CHECK_SMRAM64_OFFSET(reserved2, 0xFECA); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index d00b82ee6ca4..4cefdd83a448 100644 +index 5c4be3873c0d..461c9d815d6c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7299,6 +7299,11 @@ static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked) @@ -151,7 +151,7 @@ index d00b82ee6ca4..4cefdd83a448 100644 .get_hflags = emulator_get_hflags, .exiting_smm = emulator_exiting_smm, .leave_smm = emulator_leave_smm, -@@ -9088,6 +9094,8 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9095,6 +9101,8 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat smram->cr4 = kvm_read_cr4(vcpu); smram->smm_revision = 0x00020000; smram->smbase = vcpu->arch.smbase; @@ -160,7 +160,7 @@ index d00b82ee6ca4..4cefdd83a448 100644 } #ifdef CONFIG_X86_64 -@@ -9136,6 +9144,8 @@ static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9143,6 +9151,8 @@ static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_stat enter_smm_save_seg_64(vcpu, &smram->ds, VCPU_SREG_DS); enter_smm_save_seg_64(vcpu, &smram->fs, VCPU_SREG_FS); enter_smm_save_seg_64(vcpu, &smram->gs, VCPU_SREG_GS); @@ -169,7 +169,7 @@ index d00b82ee6ca4..4cefdd83a448 100644 } #endif -@@ -9172,6 +9182,8 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9179,6 +9189,8 @@ static void enter_smm(struct kvm_vcpu *vcpu) kvm_set_rflags(vcpu, X86_EFLAGS_FIXED); kvm_rip_write(vcpu, 0x8000); diff --git a/submodules/ubuntu-jammy b/submodules/ubuntu-jammy index 4cc5e60..941bdeb 160000 --- a/submodules/ubuntu-jammy +++ b/submodules/ubuntu-jammy @@ -1 +1 @@ -Subproject commit 4cc5e60c9399a10400737bda19312574b5a5c7a2 +Subproject commit 941bdeb5ab2258758fce5f4d06296da98bfa7e82 -- 2.39.2