diff --git a/debian/bin/genpatch-pfkernel b/debian/bin/genpatch-pfkernel index 183a13f..6d8b882 100755 --- a/debian/bin/genpatch-pfkernel +++ b/debian/bin/genpatch-pfkernel @@ -7,7 +7,7 @@ w=$(git rev-parse --path-format=absolute --show-toplevel) ; : "${w:?}" ; cd "$w" dst='debian/patches/pf-tmp' src='../linux-extras' -branches='amd-pstate cpuidle crypto fixes fuse kbuild smb zstd' +branches='amd-pstate btrfs cpuidle crypto fixes kbuild zstd' if [ -d "${dst}" ] ; then rm -rf "${dst}" ; fi mkdir -p "${dst}" diff --git a/debian/changelog b/debian/changelog index e94d6bf..ca25a19 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +linux (6.14.4-1) sid; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.14.4 + + -- Konstantin Demin <rockdrilla@gmail.com> Fri, 25 Apr 2025 20:05:32 +0300 + linux (6.14.3-1) sid; urgency=medium * New upstream stable update: diff --git a/debian/config/amd64/config.cloud b/debian/config/amd64/config.cloud index e392fac..98360b0 100644 --- a/debian/config/amd64/config.cloud +++ b/debian/config/amd64/config.cloud @@ -1898,11 +1898,6 @@ CONFIG_XEN_VIRTIO=y ## # CONFIG_BFS_FS is not set -## -## file: fs/btrfs/Kconfig -## -# CONFIG_BTRFS_FS is not set - ## ## file: fs/coda/Kconfig ## diff --git a/debian/config/amd64/config.mobile b/debian/config/amd64/config.mobile index e743f92..e97d79b 100644 --- a/debian/config/amd64/config.mobile +++ b/debian/config/amd64/config.mobile @@ -6982,17 +6982,6 @@ CONFIG_BEFS_FS=m ## CONFIG_BFS_FS=m -## -## file: fs/btrfs/Kconfig -## -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set -# CONFIG_BTRFS_DEBUG is not set -# CONFIG_BTRFS_ASSERT is not set -# CONFIG_BTRFS_EXPERIMENTAL is not set -# CONFIG_BTRFS_FS_REF_VERIFY is not set - ## ## file: fs/coda/Kconfig ## @@ -8592,7 +8581,6 @@ CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCM_NET_PHYLIB=m CONFIG_BCM_NET_PHYPTP=m -CONFIG_BLK_CGROUP_PUNT_BIO=y CONFIG_BRCMFMAC_PROTO_BCDC=y CONFIG_BRCMFMAC_PROTO_MSGBUF=y CONFIG_BRCMSMAC_LEDS=y diff --git a/debian/config/amd64/config.vm b/debian/config/amd64/config.vm index 59c3312..1c737c7 100644 --- a/debian/config/amd64/config.vm +++ b/debian/config/amd64/config.vm @@ -3346,17 +3346,6 @@ CONFIG_9P_FS_SECURITY=y ## # CONFIG_BFS_FS is not set -## -## file: fs/btrfs/Kconfig -## -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set -# CONFIG_BTRFS_DEBUG is not set -# CONFIG_BTRFS_ASSERT is not set -# CONFIG_BTRFS_EXPERIMENTAL is not set -# CONFIG_BTRFS_FS_REF_VERIFY is not set - ## ## file: fs/coda/Kconfig ## @@ -4031,7 +4020,6 @@ CONFIG_842_DECOMPRESS=m CONFIG_ASYNC_MEMCPY=m CONFIG_ASYNC_PQ=m CONFIG_ASYNC_RAID6_RECOV=m -CONFIG_BLK_CGROUP_PUNT_BIO=y CONFIG_BLK_DEV_RNBD=y CONFIG_CHECK_SIGNATURE=y CONFIG_CRYPTO_LIB_AESCFB=m diff --git a/debian/config/config b/debian/config/config index d80bba2..3c3bfd1 100644 --- a/debian/config/config +++ b/debian/config/config @@ -1712,6 +1712,11 @@ CONFIG_AUTOFS_FS=m ## # CONFIG_BCACHEFS_FS is not set +## +## file: fs/btrfs/Kconfig +## +# CONFIG_BTRFS_FS is not set + ## ## file: fs/cachefiles/Kconfig ## diff --git a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch index 72b1e24..22ee870 100644 --- a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch +++ b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch @@ -18,7 +18,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk> --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c -@@ -2627,7 +2627,7 @@ module_exit(exit_btrfs_fs) +@@ -2626,7 +2626,7 @@ module_exit(exit_btrfs_fs) MODULE_DESCRIPTION("B-Tree File System (BTRFS)"); MODULE_LICENSE("GPL"); diff --git a/debian/patches/bugfix/all/hfs-hfsplus-fix-slab-out-of-bounds-in-hfs_bnode_read.patch b/debian/patches/bugfix/all/hfs-hfsplus-fix-slab-out-of-bounds-in-hfs_bnode_read.patch deleted file mode 100644 index a7b9115..0000000 --- a/debian/patches/bugfix/all/hfs-hfsplus-fix-slab-out-of-bounds-in-hfs_bnode_read.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: Vasiliy Kovalev <kovalev@altlinux.org> -Date: Sat, 19 Oct 2024 22:13:03 +0300 -Subject: hfs/hfsplus: fix slab-out-of-bounds in hfs_bnode_read_key -Origin: https://git.kernel.org/linus/bb5e07cb927724e0b47be371fa081141cfb14414 - -Syzbot reported an issue in hfs subsystem: - -BUG: KASAN: slab-out-of-bounds in memcpy_from_page include/linux/highmem.h:423 [inline] -BUG: KASAN: slab-out-of-bounds in hfs_bnode_read fs/hfs/bnode.c:35 [inline] -BUG: KASAN: slab-out-of-bounds in hfs_bnode_read_key+0x314/0x450 fs/hfs/bnode.c:70 -Write of size 94 at addr ffff8880123cd100 by task syz-executor237/5102 - -Call Trace: - <TASK> - __dump_stack lib/dump_stack.c:94 [inline] - dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 - print_address_description mm/kasan/report.c:377 [inline] - print_report+0x169/0x550 mm/kasan/report.c:488 - kasan_report+0x143/0x180 mm/kasan/report.c:601 - kasan_check_range+0x282/0x290 mm/kasan/generic.c:189 - __asan_memcpy+0x40/0x70 mm/kasan/shadow.c:106 - memcpy_from_page include/linux/highmem.h:423 [inline] - hfs_bnode_read fs/hfs/bnode.c:35 [inline] - hfs_bnode_read_key+0x314/0x450 fs/hfs/bnode.c:70 - hfs_brec_insert+0x7f3/0xbd0 fs/hfs/brec.c:159 - hfs_cat_create+0x41d/0xa50 fs/hfs/catalog.c:118 - hfs_mkdir+0x6c/0xe0 fs/hfs/dir.c:232 - vfs_mkdir+0x2f9/0x4f0 fs/namei.c:4257 - do_mkdirat+0x264/0x3a0 fs/namei.c:4280 - __do_sys_mkdir fs/namei.c:4300 [inline] - __se_sys_mkdir fs/namei.c:4298 [inline] - __x64_sys_mkdir+0x6c/0x80 fs/namei.c:4298 - do_syscall_x64 arch/x86/entry/common.c:52 [inline] - do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 - entry_SYSCALL_64_after_hwframe+0x77/0x7f -RIP: 0033:0x7fbdd6057a99 - -Add a check for key length in hfs_bnode_read_key to prevent -out-of-bounds memory access. If the key length is invalid, the -key buffer is cleared, improving stability and reliability. - -Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") -Reported-by: syzbot+5f3a973ed3dfb85a6683@syzkaller.appspotmail.com -Closes: https://syzkaller.appspot.com/bug?extid=5f3a973ed3dfb85a6683 -Cc: stable@vger.kernel.org -Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org> -Link: https://lore.kernel.org/20241019191303.24048-1-kovalev@altlinux.org -Reviewed-by: Cengiz Can <cengiz.can@canonical.com> -Signed-off-by: Christian Brauner <brauner@kernel.org> ---- - fs/hfs/bnode.c | 6 ++++++ - fs/hfsplus/bnode.c | 6 ++++++ - 2 files changed, 12 insertions(+) - ---- a/fs/hfs/bnode.c -+++ b/fs/hfs/bnode.c -@@ -67,6 +67,12 @@ void hfs_bnode_read_key(struct hfs_bnode - else - key_len = tree->max_key_len + 1; - -+ if (key_len > sizeof(hfs_btree_key) || key_len < 1) { -+ memset(key, 0, sizeof(hfs_btree_key)); -+ pr_err("hfs: Invalid key length: %d\n", key_len); -+ return; -+ } -+ - hfs_bnode_read(node, key, off, key_len); - } - ---- a/fs/hfsplus/bnode.c -+++ b/fs/hfsplus/bnode.c -@@ -67,6 +67,12 @@ void hfs_bnode_read_key(struct hfs_bnode - else - key_len = tree->max_key_len + 2; - -+ if (key_len > sizeof(hfsplus_btree_key) || key_len < 1) { -+ memset(key, 0, sizeof(hfsplus_btree_key)); -+ pr_err("hfsplus: Invalid key length: %d\n", key_len); -+ return; -+ } -+ - hfs_bnode_read(node, key, off, key_len); - } - diff --git a/debian/patches/bugfix/all/libbpf-use-the-standard-fixdep-build-rule.patch b/debian/patches/bugfix/all/libbpf-use-the-standard-fixdep-build-rule.patch new file mode 100644 index 0000000..340b5c2 --- /dev/null +++ b/debian/patches/bugfix/all/libbpf-use-the-standard-fixdep-build-rule.patch @@ -0,0 +1,41 @@ +From: Ben Hutchings <benh@debian.org> +Date: Sun, 20 Apr 2025 18:50:44 +0200 +Subject: libbpf: Use the standard fixdep build rule + +libbpf's all target depends on the fixdep target defined in +tools/scripts/Makefile.include. However the $(BPF_IN_SHARED) and +$(BPF_IN_STATIC) targets don't use it, but instead rebuild fixdep in +the staticobjs or sharedobjs subdirectory using a different command. + +Change the $(BPF_IN_SHARED) and $(BPF_IN_STATIC) targets to depend on +fixdep and to symlink the executable into the respective output +subdirectory. + +Signed-off-by: Ben Hutchings <benh@debian.org> +--- +--- a/tools/lib/bpf/Makefile ++++ b/tools/lib/bpf/Makefile +@@ -134,7 +134,7 @@ all_cmd: $(CMD_TARGETS) check + $(SHARED_OBJDIR) $(STATIC_OBJDIR): + $(Q)mkdir -p $@ + +-$(BPF_IN_SHARED): force $(BPF_GENERATED) | $(SHARED_OBJDIR) ++$(BPF_IN_SHARED): fixdep force $(BPF_GENERATED) | $(SHARED_OBJDIR) + @(test -f ../../include/uapi/linux/bpf.h -a -f ../../../include/uapi/linux/bpf.h && ( \ + (diff -B ../../include/uapi/linux/bpf.h ../../../include/uapi/linux/bpf.h >/dev/null) || \ + echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'" >&2 )) || true +@@ -144,11 +144,11 @@ $(BPF_IN_SHARED): force $(BPF_GENERATED) + @(test -f ../../include/uapi/linux/if_xdp.h -a -f ../../../include/uapi/linux/if_xdp.h && ( \ + (diff -B ../../include/uapi/linux/if_xdp.h ../../../include/uapi/linux/if_xdp.h >/dev/null) || \ + echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true +- $(SILENT_MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= OUTPUT=$(SHARED_OBJDIR) $(SHARED_OBJDIR)fixdep ++ ln -sf ../fixdep $(SHARED_OBJDIR)/ + $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(SHARED_OBJDIR) CFLAGS="$(CFLAGS) $(SHLIB_FLAGS)" + +-$(BPF_IN_STATIC): force $(BPF_GENERATED) | $(STATIC_OBJDIR) +- $(SILENT_MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= OUTPUT=$(STATIC_OBJDIR) $(STATIC_OBJDIR)fixdep ++$(BPF_IN_STATIC): fixdep force $(BPF_GENERATED) | $(STATIC_OBJDIR) ++ ln -sf ../fixdep $(STATIC_OBJDIR)/ + $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(STATIC_OBJDIR) + + $(BPF_HELPER_DEFS): $(srctree)/tools/include/uapi/linux/bpf.h diff --git a/debian/patches/debian/kernelvariables.patch b/debian/patches/debian/kernelvariables.patch index a317e40..9f5c928 100644 --- a/debian/patches/debian/kernelvariables.patch +++ b/debian/patches/debian/kernelvariables.patch @@ -56,7 +56,7 @@ use of $(ARCH) needs to be moved after this. KCONFIG_CONFIG ?= .config export KCONFIG_CONFIG -@@ -555,6 +525,35 @@ RUSTFLAGS_KERNEL = +@@ -554,6 +524,35 @@ RUSTFLAGS_KERNEL = AFLAGS_KERNEL = LDFLAGS_vmlinux = diff --git a/debian/patches/debian/makefile-make-compiler-version-comparison-optional.patch b/debian/patches/debian/makefile-make-compiler-version-comparison-optional.patch index 5784354..0e6ece7 100644 --- a/debian/patches/debian/makefile-make-compiler-version-comparison-optional.patch +++ b/debian/patches/debian/makefile-make-compiler-version-comparison-optional.patch @@ -20,7 +20,7 @@ is non-empty. --- --- a/Makefile +++ b/Makefile -@@ -1876,7 +1876,7 @@ PHONY += prepare +@@ -1875,7 +1875,7 @@ PHONY += prepare # now expand this into a simple variable to reduce the cost of shell evaluations prepare: CC_VERSION_TEXT := $(CC_VERSION_TEXT) prepare: diff --git a/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch b/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch index 47f6adc..c726cb1 100644 --- a/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch +++ b/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch @@ -30,7 +30,7 @@ this reverts following commit: --- a/tools/objtool/check.c +++ b/tools/objtool/check.c -@@ -4750,10 +4750,14 @@ int check(struct objtool_file *file) +@@ -4751,10 +4751,14 @@ int check(struct objtool_file *file) } out: diff --git a/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch b/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch index 3cd3896..edaec65 100644 --- a/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch +++ b/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch @@ -13,7 +13,7 @@ dependency on CONFIG_ARC and adds RUSTFLAGS. --- a/Makefile +++ b/Makefile -@@ -872,6 +872,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointe +@@ -871,6 +871,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointe ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE KBUILD_CFLAGS += -O2 KBUILD_RUSTFLAGS += -Copt-level=2 diff --git a/debian/patches/mixed-arch/0003-krd-adjust-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3.patch b/debian/patches/mixed-arch/0003-krd-adjust-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3.patch index 4bf6bd0..3e8d9e6 100644 --- a/debian/patches/mixed-arch/0003-krd-adjust-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3.patch +++ b/debian/patches/mixed-arch/0003-krd-adjust-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -880,6 +880,10 @@ KBUILD_CFLAGS += -Os +@@ -879,6 +879,10 @@ KBUILD_CFLAGS += -Os KBUILD_RUSTFLAGS += -Copt-level=s endif diff --git a/debian/patches/mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch b/debian/patches/mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch index 38bebbf..0e324a0 100644 --- a/debian/patches/mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch +++ b/debian/patches/mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch @@ -10,7 +10,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org> --- a/Makefile +++ b/Makefile -@@ -884,6 +884,13 @@ ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE +@@ -883,6 +883,13 @@ ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE KBUILD_CFLAGS += $(call cc-option,-fivopts) endif diff --git a/debian/patches/patchset-pf/fixes/0001-Kunit-to-check-the-longest-symbol-length.patch b/debian/patches/patchset-pf/fixes/0001-Kunit-to-check-the-longest-symbol-length.patch index ad6b37e..7bb83f8 100644 --- a/debian/patches/patchset-pf/fixes/0001-Kunit-to-check-the-longest-symbol-length.patch +++ b/debian/patches/patchset-pf/fixes/0001-Kunit-to-check-the-longest-symbol-length.patch @@ -1,4 +1,4 @@ -From a1eb9a3160dc9e3cee6abdeab8e41c2265a2d7a1 Mon Sep 17 00:00:00 2001 +From 4506de20739ac4726a258faa98609a552184d2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Gonz=C3=A1lez=20Collado?= <sergio.collado@gmail.com> Date: Sun, 2 Mar 2025 23:15:18 +0100 diff --git a/debian/patches/patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patch b/debian/patches/patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patch index 3f4db94..c9e77cf 100644 --- a/debian/patches/patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patch +++ b/debian/patches/patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patch @@ -1,4 +1,4 @@ -From 1ff7499aaa4cec11be79e97c118978fd781073a6 Mon Sep 17 00:00:00 2001 +From b5a4b82efd19d0687a5582a58f6830bf714e34fc Mon Sep 17 00:00:00 2001 From: Nathan Chancellor <nathan@kernel.org> Date: Tue, 18 Mar 2025 15:32:30 -0700 Subject: x86/tools: Drop duplicate unlikely() definition in diff --git a/debian/patches/patchset-pf/fixes/0003-drm-amdgpu-mes11-optimize-MES-pipe-FW-version-fetchi.patch b/debian/patches/patchset-pf/fixes/0003-drm-amdgpu-mes11-optimize-MES-pipe-FW-version-fetchi.patch deleted file mode 100644 index 13854f7..0000000 --- a/debian/patches/patchset-pf/fixes/0003-drm-amdgpu-mes11-optimize-MES-pipe-FW-version-fetchi.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 72096487bfe8ebc52731c264536418c51854d999 Mon Sep 17 00:00:00 2001 -From: Alex Deucher <alexander.deucher@amd.com> -Date: Thu, 27 Mar 2025 17:33:49 -0400 -Subject: drm/amdgpu/mes11: optimize MES pipe FW version fetching - -Don't fetch it again if we already have it. It seems the -don't reliably have the proper value at resume in some -cases. - -Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4083 -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> -Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/issues/121 ---- - drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c -@@ -899,6 +899,10 @@ static void mes_v11_0_get_fw_version(str - { - int pipe; - -+ /* return early if we have already fetched these */ -+ if (adev->mes.sched_version && adev->mes.kiq_version) -+ return; -+ - /* get MES scheduler/KIQ versions */ - mutex_lock(&adev->srbm_mutex); - diff --git a/debian/patches/patchset-pf/fixes/0004-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch b/debian/patches/patchset-pf/fixes/0003-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch similarity index 98% rename from debian/patches/patchset-pf/fixes/0004-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch rename to debian/patches/patchset-pf/fixes/0003-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch index ad43b54..b254ac5 100644 --- a/debian/patches/patchset-pf/fixes/0004-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch +++ b/debian/patches/patchset-pf/fixes/0003-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch @@ -1,4 +1,4 @@ -From a1dfb99dca82ff97b00ce76f8f987ade471875d1 Mon Sep 17 00:00:00 2001 +From 762de1df7e501e019c3ae273c7e5e2d4c04b303c Mon Sep 17 00:00:00 2001 From: Jarkko Sakkinen <jarkko@kernel.org> Date: Mon, 7 Apr 2025 15:28:05 +0300 Subject: tpm: Mask TPM RC in tpm2_start_auth_session() diff --git a/debian/patches/patchset-pf/fixes/0005-ice-mark-ice_write_prof_mask_reg-as-noinline.patch b/debian/patches/patchset-pf/fixes/0004-ice-mark-ice_write_prof_mask_reg-as-noinline.patch similarity index 95% rename from debian/patches/patchset-pf/fixes/0005-ice-mark-ice_write_prof_mask_reg-as-noinline.patch rename to debian/patches/patchset-pf/fixes/0004-ice-mark-ice_write_prof_mask_reg-as-noinline.patch index c7bf539..ef5b39f 100644 --- a/debian/patches/patchset-pf/fixes/0005-ice-mark-ice_write_prof_mask_reg-as-noinline.patch +++ b/debian/patches/patchset-pf/fixes/0004-ice-mark-ice_write_prof_mask_reg-as-noinline.patch @@ -1,4 +1,4 @@ -From 7b594a3c7b41db58884da466607417ca27c08a1d Mon Sep 17 00:00:00 2001 +From e3d18eed972374cfbac1e58cf109209b07c1e27e Mon Sep 17 00:00:00 2001 From: Oleksandr Natalenko <oleksandr@natalenko.name> Date: Tue, 8 Apr 2025 12:02:36 +0200 Subject: ice: mark ice_write_prof_mask_reg() as noinline diff --git a/debian/patches/patchset-pf/fixes/0006-fixes-6.14-update-tpm2_start_auth_session-fix.patch b/debian/patches/patchset-pf/fixes/0005-fixes-6.14-update-tpm2_start_auth_session-fix.patch similarity index 96% rename from debian/patches/patchset-pf/fixes/0006-fixes-6.14-update-tpm2_start_auth_session-fix.patch rename to debian/patches/patchset-pf/fixes/0005-fixes-6.14-update-tpm2_start_auth_session-fix.patch index 6f06257..6143403 100644 --- a/debian/patches/patchset-pf/fixes/0006-fixes-6.14-update-tpm2_start_auth_session-fix.patch +++ b/debian/patches/patchset-pf/fixes/0005-fixes-6.14-update-tpm2_start_auth_session-fix.patch @@ -1,4 +1,4 @@ -From 42a4f494db975d62916c73f5d637aef9be343d70 Mon Sep 17 00:00:00 2001 +From 74c95e079dc8b3c53ade90b2070458c0c69f3fdf Mon Sep 17 00:00:00 2001 From: Oleksandr Natalenko <oleksandr@natalenko.name> Date: Tue, 8 Apr 2025 19:51:44 +0200 Subject: fixes-6.14: update tpm2_start_auth_session() fix diff --git a/debian/patches/patchset-pf/fixes/0009-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch b/debian/patches/patchset-pf/fixes/0006-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch similarity index 96% rename from debian/patches/patchset-pf/fixes/0009-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch rename to debian/patches/patchset-pf/fixes/0006-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch index 6d25616..f736181 100644 --- a/debian/patches/patchset-pf/fixes/0009-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch +++ b/debian/patches/patchset-pf/fixes/0006-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch @@ -1,4 +1,4 @@ -From d3140c22ed2bc3c98dcf251659d78572e154a993 Mon Sep 17 00:00:00 2001 +From e56acee381a8e07edf1920fb58f3166f911b6e5c Mon Sep 17 00:00:00 2001 From: Lingbo Kong <quic_lingbok@quicinc.com> Date: Wed, 26 Feb 2025 19:31:18 +0800 Subject: wifi: ath12k: Abort scan before removing link interface to prevent diff --git a/debian/patches/patchset-pf/fixes/0010-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch b/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch similarity index 95% rename from debian/patches/patchset-pf/fixes/0010-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch rename to debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch index d385168..82c3279 100644 --- a/debian/patches/patchset-pf/fixes/0010-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch +++ b/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch @@ -1,4 +1,4 @@ -From fa165a32074fba27286cc9d2464a647642ad6bc7 Mon Sep 17 00:00:00 2001 +From 8d0e02f81d08c7b1e082028af0f55a22e7e1dfb2 Mon Sep 17 00:00:00 2001 From: Christian Brauner <brauner@kernel.org> Date: Tue, 15 Apr 2025 10:22:04 +0200 Subject: Kconfig: switch CONFIG_SYSFS_SYCALL default to n diff --git a/debian/patches/patchset-pf/fixes/0007-drm-amdgpu-mes12-optimize-MES-pipe-FW-version-fetchi.patch b/debian/patches/patchset-pf/fixes/0007-drm-amdgpu-mes12-optimize-MES-pipe-FW-version-fetchi.patch deleted file mode 100644 index f9d7c1f..0000000 --- a/debian/patches/patchset-pf/fixes/0007-drm-amdgpu-mes12-optimize-MES-pipe-FW-version-fetchi.patch +++ /dev/null @@ -1,47 +0,0 @@ -From f1e8e30bef3757904d9e963f02ef297cd0c33240 Mon Sep 17 00:00:00 2001 -From: Alex Deucher <alexander.deucher@amd.com> -Date: Fri, 28 Mar 2025 09:08:57 -0400 -Subject: drm/amdgpu/mes12: optimize MES pipe FW version fetching - -Don't fetch it again if we already have it. It seems the -registers don't reliably have the value at resume in some -cases. - -Fixes: 785f0f9fe742 ("drm/amdgpu: Add mes v12_0 ip block support (v4)") -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 21 ++++++++++++--------- - 1 file changed, 12 insertions(+), 9 deletions(-) - ---- a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c -@@ -1390,17 +1390,20 @@ static int mes_v12_0_queue_init(struct a - mes_v12_0_queue_init_register(ring); - } - -- /* get MES scheduler/KIQ versions */ -- mutex_lock(&adev->srbm_mutex); -- soc21_grbm_select(adev, 3, pipe, 0, 0); -+ if (((pipe == AMDGPU_MES_SCHED_PIPE) && !adev->mes.sched_version) || -+ ((pipe == AMDGPU_MES_KIQ_PIPE) && !adev->mes.kiq_version)) { -+ /* get MES scheduler/KIQ versions */ -+ mutex_lock(&adev->srbm_mutex); -+ soc21_grbm_select(adev, 3, pipe, 0, 0); - -- if (pipe == AMDGPU_MES_SCHED_PIPE) -- adev->mes.sched_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO); -- else if (pipe == AMDGPU_MES_KIQ_PIPE && adev->enable_mes_kiq) -- adev->mes.kiq_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO); -+ if (pipe == AMDGPU_MES_SCHED_PIPE) -+ adev->mes.sched_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO); -+ else if (pipe == AMDGPU_MES_KIQ_PIPE && adev->enable_mes_kiq) -+ adev->mes.kiq_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO); - -- soc21_grbm_select(adev, 0, 0, 0, 0); -- mutex_unlock(&adev->srbm_mutex); -+ soc21_grbm_select(adev, 0, 0, 0, 0); -+ mutex_unlock(&adev->srbm_mutex); -+ } - - return 0; - } diff --git a/debian/patches/patchset-pf/fixes/0008-sched-eevdf-Fix-se-slice-being-set-to-U64_MAX-and-re.patch b/debian/patches/patchset-pf/fixes/0008-sched-eevdf-Fix-se-slice-being-set-to-U64_MAX-and-re.patch new file mode 100644 index 0000000..e56c907 --- /dev/null +++ b/debian/patches/patchset-pf/fixes/0008-sched-eevdf-Fix-se-slice-being-set-to-U64_MAX-and-re.patch @@ -0,0 +1,80 @@ +From ea3ec10cacc746176a25dbd74c8d168e1c096a62 Mon Sep 17 00:00:00 2001 +From: Omar Sandoval <osandov@fb.com> +Date: Fri, 25 Apr 2025 01:51:24 -0700 +Subject: sched/eevdf: Fix se->slice being set to U64_MAX and resulting crash + +There is a code path in dequeue_entities() that can set the slice of a +sched_entity to U64_MAX, which sometimes results in a crash. + +The offending case is when dequeue_entities() is called to dequeue a +delayed group entity, and then the entity's parent's dequeue is delayed. +In that case: + +1. In the if (entity_is_task(se)) else block at the beginning of + dequeue_entities(), slice is set to + cfs_rq_min_slice(group_cfs_rq(se)). If the entity was delayed, then + it has no queued tasks, so cfs_rq_min_slice() returns U64_MAX. +2. The first for_each_sched_entity() loop dequeues the entity. +3. If the entity was its parent's only child, then the next iteration + tries to dequeue the parent. +4. If the parent's dequeue needs to be delayed, then it breaks from the + first for_each_sched_entity() loop _without updating slice_. +5. The second for_each_sched_entity() loop sets the parent's ->slice to + the saved slice, which is still U64_MAX. + +This throws off subsequent calculations with potentially catastrophic +results. A manifestation we saw in production was: + +6. In update_entity_lag(), se->slice is used to calculate limit, which + ends up as a huge negative number. +7. limit is used in se->vlag = clamp(vlag, -limit, limit). Because limit + is negative, vlag > limit, so se->vlag is set to the same huge + negative number. +8. In place_entity(), se->vlag is scaled, which overflows and results in + another huge (positive or negative) number. +9. The adjusted lag is subtracted from se->vruntime, which increases or + decreases se->vruntime by a huge number. +10. pick_eevdf() calls entity_eligible()/vruntime_eligible(), which + incorrectly returns false because the vruntime is so far from the + other vruntimes on the queue, causing the + (vruntime - cfs_rq->min_vruntime) * load calulation to overflow. +11. Nothing appears to be eligible, so pick_eevdf() returns NULL. +12. pick_next_entity() tries to dereference the return value of + pick_eevdf() and crashes. + +Dumping the cfs_rq states from the core dumps with drgn showed tell-tale +huge vruntime ranges and bogus vlag values, and I also traced se->slice +being set to U64_MAX on live systems (which was usually "benign" since +the rest of the runqueue needed to be in a particular state to crash). + +Fix it in dequeue_entities() by always setting slice from the first +non-empty cfs_rq. + +Fixes: aef6987d8954 ("sched/eevdf: Propagate min_slice up the cgroup hierarchy") +Signed-off-by: Omar Sandoval <osandov@fb.com> +Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> +Link: https://lkml.kernel.org/r/f0c2d1072be229e1bdddc73c0703919a8b00c652.1745570998.git.osandov@fb.com +--- + kernel/sched/fair.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -7096,9 +7096,6 @@ static int dequeue_entities(struct rq *r + h_nr_idle = task_has_idle_policy(p); + if (task_sleep || task_delayed || !se->sched_delayed) + h_nr_runnable = 1; +- } else { +- cfs_rq = group_cfs_rq(se); +- slice = cfs_rq_min_slice(cfs_rq); + } + + for_each_sched_entity(se) { +@@ -7108,6 +7105,7 @@ static int dequeue_entities(struct rq *r + if (p && &p->se == se) + return -1; + ++ slice = cfs_rq_min_slice(cfs_rq); + break; + } + diff --git a/debian/patches/patchset-pf/fixes/0008-wifi-iwlwifi-pcie-set-state-to-no-FW-before-reset-ha.patch b/debian/patches/patchset-pf/fixes/0008-wifi-iwlwifi-pcie-set-state-to-no-FW-before-reset-ha.patch deleted file mode 100644 index 86a86fa..0000000 --- a/debian/patches/patchset-pf/fixes/0008-wifi-iwlwifi-pcie-set-state-to-no-FW-before-reset-ha.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 81c23adad48324b73fe0993f332407c5be050bb5 Mon Sep 17 00:00:00 2001 -From: Johannes Berg <johannes.berg@intel.com> -Date: Thu, 3 Apr 2025 11:04:37 +0000 -Subject: wifi: iwlwifi: pcie: set state to no-FW before reset handshake - -The reset handshake attempts to kill the firmware, and it'll go -into a pretty much dead state once we do that. However, if it -times out, then we'll attempt to dump the firmware to be able -to see why it didn't respond. During this dump, we cannot treat -it as if it was still running, since we just tried to kill it, -otherwise dumping will attempt to send a DBGC stop command. As -this command will time out, we'll go into a reset loop. - -For now, fix this by setting the trans->state to say firmware -isn't running before doing the reset handshake. In the longer -term, we should clean up the way this state is handled. - -It's not entirely clear but it seems likely that this issue was -introduced by my rework of the error handling, prior to that it -would've been synchronous at that point and (I think) not have -attempted to reset since it was already doing down. - -Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219967 -Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219968 -Closes: https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/issues/128 -Fixes: 7391b2a4f7db ("wifi: iwlwifi: rework firmware error handling") -Signed-off-by: Johannes Berg <johannes.berg@intel.com> -Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name> ---- - drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - ---- a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c -+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c -@@ -147,8 +147,14 @@ static void _iwl_trans_pcie_gen2_stop_de - return; - - if (trans->state >= IWL_TRANS_FW_STARTED && -- trans_pcie->fw_reset_handshake) -+ trans_pcie->fw_reset_handshake) { -+ /* -+ * Reset handshake can dump firmware on timeout, but that -+ * should assume that the firmware is already dead. -+ */ -+ trans->state = IWL_TRANS_NO_FW; - iwl_trans_pcie_fw_reset_handshake(trans); -+ } - - trans_pcie->is_down = true; - diff --git a/debian/patches/patchset-pf/fuse/0001-virtiofs-add-filesystem-context-source-name-check.patch b/debian/patches/patchset-pf/fuse/0001-virtiofs-add-filesystem-context-source-name-check.patch deleted file mode 100644 index f1404f6..0000000 --- a/debian/patches/patchset-pf/fuse/0001-virtiofs-add-filesystem-context-source-name-check.patch +++ /dev/null @@ -1,30 +0,0 @@ -From bd6633c0e527dbcf6b52d3b34b49a980b125c866 Mon Sep 17 00:00:00 2001 -From: Xiangsheng Hou <xiangsheng.hou@mediatek.com> -Date: Mon, 7 Apr 2025 19:50:49 +0800 -Subject: virtiofs: add filesystem context source name check - -In certain scenarios, for example, during fuzz testing, the source -name may be NULL, which could lead to a kernel panic. Therefore, an -extra check for the source name should be added. - -Fixes: a62a8ef9d97d ("virtio-fs: add virtiofs filesystem") -Cc: <stable@vger.kernel.org> # all LTS kernels -Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> -Link: https://lore.kernel.org/20250407115111.25535-1-xiangsheng.hou@mediatek.com -Signed-off-by: Christian Brauner <brauner@kernel.org> ---- - fs/fuse/virtio_fs.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/fs/fuse/virtio_fs.c -+++ b/fs/fuse/virtio_fs.c -@@ -1670,6 +1670,9 @@ static int virtio_fs_get_tree(struct fs_ - unsigned int virtqueue_size; - int err = -EIO; - -+ if (!fsc->source) -+ return invalf(fsc, "No source specified"); -+ - /* This gets a reference on virtio_fs object. This ptr gets installed - * in fc->iq->priv. Once fuse_conn is going away, it calls ->put() - * to drop the reference to this object. diff --git a/debian/patches/patchset-pf/smb/0001-ksmbd-Fix-dangling-pointer-in-krb_authenticate.patch b/debian/patches/patchset-pf/smb/0001-ksmbd-Fix-dangling-pointer-in-krb_authenticate.patch deleted file mode 100644 index 0406f97..0000000 --- a/debian/patches/patchset-pf/smb/0001-ksmbd-Fix-dangling-pointer-in-krb_authenticate.patch +++ /dev/null @@ -1,33 +0,0 @@ -From c3eedd3e0d50a748c6c520ba00377aba8150c713 Mon Sep 17 00:00:00 2001 -From: Sean Heelan <seanheelan@gmail.com> -Date: Mon, 7 Apr 2025 11:26:50 +0000 -Subject: ksmbd: Fix dangling pointer in krb_authenticate - -krb_authenticate frees sess->user and does not set the pointer -to NULL. It calls ksmbd_krb5_authenticate to reinitialise -sess->user but that function may return without doing so. If -that happens then smb2_sess_setup, which calls krb_authenticate, -will be accessing free'd memory when it later uses sess->user. - -Cc: stable@vger.kernel.org -Signed-off-by: Sean Heelan <seanheelan@gmail.com> -Acked-by: Namjae Jeon <linkinjeon@kernel.org> -Signed-off-by: Steve French <stfrench@microsoft.com> ---- - fs/smb/server/smb2pdu.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/fs/smb/server/smb2pdu.c -+++ b/fs/smb/server/smb2pdu.c -@@ -1602,8 +1602,10 @@ static int krb5_authenticate(struct ksmb - if (prev_sess_id && prev_sess_id != sess->id) - destroy_previous_session(conn, sess->user, prev_sess_id); - -- if (sess->state == SMB2_SESSION_VALID) -+ if (sess->state == SMB2_SESSION_VALID) { - ksmbd_free_user(sess->user); -+ sess->user = NULL; -+ } - - retval = ksmbd_krb5_authenticate(sess, in_blob, in_len, - out_blob, &out_len); diff --git a/debian/patches/patchset-pf/smb/0002-ksmbd-fix-use-after-free-in-__smb2_lease_break_noti.patch b/debian/patches/patchset-pf/smb/0002-ksmbd-fix-use-after-free-in-__smb2_lease_break_noti.patch deleted file mode 100644 index 47917a7..0000000 --- a/debian/patches/patchset-pf/smb/0002-ksmbd-fix-use-after-free-in-__smb2_lease_break_noti.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 1932e1bb8624ec520da5f61e3f5bbdd16b9f320d Mon Sep 17 00:00:00 2001 -From: Namjae Jeon <linkinjeon@kernel.org> -Date: Fri, 11 Apr 2025 15:19:46 +0900 -Subject: ksmbd: fix use-after-free in __smb2_lease_break_noti() - -Move tcp_transport free to ksmbd_conn_free. If ksmbd connection is -referenced when ksmbd server thread terminates, It will not be freed, -but conn->tcp_transport is freed. __smb2_lease_break_noti can be performed -asynchronously when the connection is disconnected. __smb2_lease_break_noti -calls ksmbd_conn_write, which can cause use-after-free -when conn->ksmbd_transport is already freed. - -Cc: stable@vger.kernel.org -Reported-by: Norbert Szetei <norbert@doyensec.com> -Tested-by: Norbert Szetei <norbert@doyensec.com> -Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> -Signed-off-by: Steve French <stfrench@microsoft.com> ---- - fs/smb/server/connection.c | 4 +++- - fs/smb/server/transport_tcp.c | 14 +++++++++----- - fs/smb/server/transport_tcp.h | 1 + - 3 files changed, 13 insertions(+), 6 deletions(-) - ---- a/fs/smb/server/connection.c -+++ b/fs/smb/server/connection.c -@@ -39,8 +39,10 @@ void ksmbd_conn_free(struct ksmbd_conn * - xa_destroy(&conn->sessions); - kvfree(conn->request_buf); - kfree(conn->preauth_info); -- if (atomic_dec_and_test(&conn->refcnt)) -+ if (atomic_dec_and_test(&conn->refcnt)) { -+ ksmbd_free_transport(conn->transport); - kfree(conn); -+ } - } - - /** ---- a/fs/smb/server/transport_tcp.c -+++ b/fs/smb/server/transport_tcp.c -@@ -93,17 +93,21 @@ static struct tcp_transport *alloc_trans - return t; - } - --static void free_transport(struct tcp_transport *t) -+void ksmbd_free_transport(struct ksmbd_transport *kt) - { -- kernel_sock_shutdown(t->sock, SHUT_RDWR); -- sock_release(t->sock); -- t->sock = NULL; -+ struct tcp_transport *t = TCP_TRANS(kt); - -- ksmbd_conn_free(KSMBD_TRANS(t)->conn); -+ sock_release(t->sock); - kfree(t->iov); - kfree(t); - } - -+static void free_transport(struct tcp_transport *t) -+{ -+ kernel_sock_shutdown(t->sock, SHUT_RDWR); -+ ksmbd_conn_free(KSMBD_TRANS(t)->conn); -+} -+ - /** - * kvec_array_init() - initialize a IO vector segment - * @new: IO vector to be initialized ---- a/fs/smb/server/transport_tcp.h -+++ b/fs/smb/server/transport_tcp.h -@@ -8,6 +8,7 @@ - - int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz); - struct interface *ksmbd_find_netdev_name_iface_list(char *netdev_name); -+void ksmbd_free_transport(struct ksmbd_transport *kt); - int ksmbd_tcp_init(void); - void ksmbd_tcp_destroy(void); - diff --git a/debian/patches/patchset-pf/smb/0003-ksmbd-fix-use-after-free-in-smb_break_all_levII_oplo.patch b/debian/patches/patchset-pf/smb/0003-ksmbd-fix-use-after-free-in-smb_break_all_levII_oplo.patch deleted file mode 100644 index 48a08b8..0000000 --- a/debian/patches/patchset-pf/smb/0003-ksmbd-fix-use-after-free-in-smb_break_all_levII_oplo.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 67437a4c66847a82ab538705b932144d4af28f4b Mon Sep 17 00:00:00 2001 -From: Namjae Jeon <linkinjeon@kernel.org> -Date: Tue, 15 Apr 2025 09:30:21 +0900 -Subject: ksmbd: fix use-after-free in smb_break_all_levII_oplock() - -There is a room in smb_break_all_levII_oplock that can cause racy issues -when unlocking in the middle of the loop. This patch use read lock -to protect whole loop. - -Cc: stable@vger.kernel.org -Reported-by: Norbert Szetei <norbert@doyensec.com> -Tested-by: Norbert Szetei <norbert@doyensec.com> -Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> -Signed-off-by: Steve French <stfrench@microsoft.com> ---- - fs/smb/server/oplock.c | 29 +++++++++-------------------- - fs/smb/server/oplock.h | 1 - - 2 files changed, 9 insertions(+), 21 deletions(-) - ---- a/fs/smb/server/oplock.c -+++ b/fs/smb/server/oplock.c -@@ -129,14 +129,6 @@ static void free_opinfo(struct oplock_in - kfree(opinfo); - } - --static inline void opinfo_free_rcu(struct rcu_head *rcu_head) --{ -- struct oplock_info *opinfo; -- -- opinfo = container_of(rcu_head, struct oplock_info, rcu_head); -- free_opinfo(opinfo); --} -- - struct oplock_info *opinfo_get(struct ksmbd_file *fp) - { - struct oplock_info *opinfo; -@@ -157,8 +149,8 @@ static struct oplock_info *opinfo_get_li - if (list_empty(&ci->m_op_list)) - return NULL; - -- rcu_read_lock(); -- opinfo = list_first_or_null_rcu(&ci->m_op_list, struct oplock_info, -+ down_read(&ci->m_lock); -+ opinfo = list_first_entry(&ci->m_op_list, struct oplock_info, - op_entry); - if (opinfo) { - if (opinfo->conn == NULL || -@@ -171,8 +163,7 @@ static struct oplock_info *opinfo_get_li - } - } - } -- -- rcu_read_unlock(); -+ up_read(&ci->m_lock); - - return opinfo; - } -@@ -185,7 +176,7 @@ void opinfo_put(struct oplock_info *opin - if (!atomic_dec_and_test(&opinfo->refcount)) - return; - -- call_rcu(&opinfo->rcu_head, opinfo_free_rcu); -+ free_opinfo(opinfo); - } - - static void opinfo_add(struct oplock_info *opinfo) -@@ -193,7 +184,7 @@ static void opinfo_add(struct oplock_inf - struct ksmbd_inode *ci = opinfo->o_fp->f_ci; - - down_write(&ci->m_lock); -- list_add_rcu(&opinfo->op_entry, &ci->m_op_list); -+ list_add(&opinfo->op_entry, &ci->m_op_list); - up_write(&ci->m_lock); - } - -@@ -207,7 +198,7 @@ static void opinfo_del(struct oplock_inf - write_unlock(&lease_list_lock); - } - down_write(&ci->m_lock); -- list_del_rcu(&opinfo->op_entry); -+ list_del(&opinfo->op_entry); - up_write(&ci->m_lock); - } - -@@ -1347,8 +1338,8 @@ void smb_break_all_levII_oplock(struct k - ci = fp->f_ci; - op = opinfo_get(fp); - -- rcu_read_lock(); -- list_for_each_entry_rcu(brk_op, &ci->m_op_list, op_entry) { -+ down_read(&ci->m_lock); -+ list_for_each_entry(brk_op, &ci->m_op_list, op_entry) { - if (brk_op->conn == NULL) - continue; - -@@ -1358,7 +1349,6 @@ void smb_break_all_levII_oplock(struct k - if (ksmbd_conn_releasing(brk_op->conn)) - continue; - -- rcu_read_unlock(); - if (brk_op->is_lease && (brk_op->o_lease->state & - (~(SMB2_LEASE_READ_CACHING_LE | - SMB2_LEASE_HANDLE_CACHING_LE)))) { -@@ -1388,9 +1378,8 @@ void smb_break_all_levII_oplock(struct k - oplock_break(brk_op, SMB2_OPLOCK_LEVEL_NONE, NULL); - next: - opinfo_put(brk_op); -- rcu_read_lock(); - } -- rcu_read_unlock(); -+ up_read(&ci->m_lock); - - if (op) - opinfo_put(op); ---- a/fs/smb/server/oplock.h -+++ b/fs/smb/server/oplock.h -@@ -71,7 +71,6 @@ struct oplock_info { - struct list_head lease_entry; - wait_queue_head_t oplock_q; /* Other server threads */ - wait_queue_head_t oplock_brk; /* oplock breaking wait */ -- struct rcu_head rcu_head; - }; - - struct lease_break_info { diff --git a/debian/patches/patchset-pf/smb/0004-ksmbd-fix-the-warning-from-__kernel_write_iter.patch b/debian/patches/patchset-pf/smb/0004-ksmbd-fix-the-warning-from-__kernel_write_iter.patch deleted file mode 100644 index 90a77a9..0000000 --- a/debian/patches/patchset-pf/smb/0004-ksmbd-fix-the-warning-from-__kernel_write_iter.patch +++ /dev/null @@ -1,31 +0,0 @@ -From d9f3fc321672406f959334509a88296187994c5a Mon Sep 17 00:00:00 2001 -From: Namjae Jeon <linkinjeon@kernel.org> -Date: Tue, 15 Apr 2025 09:31:08 +0900 -Subject: ksmbd: fix the warning from __kernel_write_iter - -[ 2110.972290] ------------[ cut here ]------------ -[ 2110.972301] WARNING: CPU: 3 PID: 735 at fs/read_write.c:599 __kernel_write_iter+0x21b/0x280 - -This patch doesn't allow writing to directory. - -Cc: stable@vger.kernel.org -Reported-by: Norbert Szetei <norbert@doyensec.com> -Tested-by: Norbert Szetei <norbert@doyensec.com> -Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> -Signed-off-by: Steve French <stfrench@microsoft.com> ---- - fs/smb/server/vfs.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/fs/smb/server/vfs.c -+++ b/fs/smb/server/vfs.c -@@ -496,7 +496,8 @@ int ksmbd_vfs_write(struct ksmbd_work *w - int err = 0; - - if (work->conn->connection_type) { -- if (!(fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) { -+ if (!(fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE)) || -+ S_ISDIR(file_inode(fp->filp)->i_mode)) { - pr_err("no right to write(%pD)\n", fp->filp); - err = -EACCES; - goto out; diff --git a/debian/patches/patchset-pf/smb/0005-ksmbd-Prevent-integer-overflow-in-calculation-of-dea.patch b/debian/patches/patchset-pf/smb/0005-ksmbd-Prevent-integer-overflow-in-calculation-of-dea.patch deleted file mode 100644 index 9a81d5c..0000000 --- a/debian/patches/patchset-pf/smb/0005-ksmbd-Prevent-integer-overflow-in-calculation-of-dea.patch +++ /dev/null @@ -1,43 +0,0 @@ -From adbf65091f5ac103ae5339bd49549b147906a0c0 Mon Sep 17 00:00:00 2001 -From: Denis Arefev <arefev@swemel.ru> -Date: Wed, 9 Apr 2025 12:04:49 +0300 -Subject: ksmbd: Prevent integer overflow in calculation of deadtime - -The user can set any value for 'deadtime'. This affects the arithmetic -expression 'req->deadtime * SMB_ECHO_INTERVAL', which is subject to -overflow. The added check makes the server behavior more predictable. - -Found by Linux Verification Center (linuxtesting.org) with SVACE. - -Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers") -Cc: stable@vger.kernel.org -Signed-off-by: Denis Arefev <arefev@swemel.ru> -Acked-by: Namjae Jeon <linkinjeon@kernel.org> -Signed-off-by: Steve French <stfrench@microsoft.com> ---- - fs/smb/server/transport_ipc.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - ---- a/fs/smb/server/transport_ipc.c -+++ b/fs/smb/server/transport_ipc.c -@@ -310,7 +310,11 @@ static int ipc_server_config_on_startup( - server_conf.signing = req->signing; - server_conf.tcp_port = req->tcp_port; - server_conf.ipc_timeout = req->ipc_timeout * HZ; -- server_conf.deadtime = req->deadtime * SMB_ECHO_INTERVAL; -+ if (check_mul_overflow(req->deadtime, SMB_ECHO_INTERVAL, -+ &server_conf.deadtime)) { -+ ret = -EINVAL; -+ goto out; -+ } - server_conf.share_fake_fscaps = req->share_fake_fscaps; - ksmbd_init_domain(req->sub_auth); - -@@ -337,6 +341,7 @@ static int ipc_server_config_on_startup( - server_conf.bind_interfaces_only = req->bind_interfaces_only; - ret |= ksmbd_tcp_set_interfaces(KSMBD_STARTUP_CONFIG_INTERFACES(req), - req->ifc_list_sz); -+out: - if (ret) { - pr_err("Server configuration error: %s %s %s\n", - req->netbios_name, req->server_string, diff --git a/debian/patches/patchset-xanmod/net/netfilter/0002-netfilter-add-xt_FLOWOFFLOAD-target.patch b/debian/patches/patchset-xanmod/net/netfilter/0002-netfilter-add-xt_FLOWOFFLOAD-target.patch index 81445dc..14bd561 100644 --- a/debian/patches/patchset-xanmod/net/netfilter/0002-netfilter-add-xt_FLOWOFFLOAD-target.patch +++ b/debian/patches/patchset-xanmod/net/netfilter/0002-netfilter-add-xt_FLOWOFFLOAD-target.patch @@ -98,7 +98,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org> void (*iter)(struct nf_flowtable *flowtable, struct flow_offload *flow, void *data), void *data) -@@ -580,6 +578,7 @@ static void nf_flow_offload_gc_step(stru +@@ -582,6 +580,7 @@ static void nf_flow_offload_gc_step(stru nf_flow_offload_stats(flow_table, flow); } } diff --git a/debian/patches/patchset-xanmod/xanmod/0002-kbuild-Remove-GCC-minimal-function-alignment.patch b/debian/patches/patchset-xanmod/xanmod/0002-kbuild-Remove-GCC-minimal-function-alignment.patch index f6c2efb..82192ef 100644 --- a/debian/patches/patchset-xanmod/xanmod/0002-kbuild-Remove-GCC-minimal-function-alignment.patch +++ b/debian/patches/patchset-xanmod/xanmod/0002-kbuild-Remove-GCC-minimal-function-alignment.patch @@ -12,7 +12,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org> --- a/Makefile +++ b/Makefile -@@ -1056,15 +1056,8 @@ export CC_FLAGS_FPU +@@ -1055,15 +1055,8 @@ export CC_FLAGS_FPU export CC_FLAGS_NO_FPU ifneq ($(CONFIG_FUNCTION_ALIGNMENT),0) diff --git a/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch b/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch new file mode 100644 index 0000000..8fdba05 --- /dev/null +++ b/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch @@ -0,0 +1,327 @@ +--- a/Documentation/ABI/testing/sysfs-devices-system-cpu ++++ b/Documentation/ABI/testing/sysfs-devices-system-cpu +@@ -516,6 +516,7 @@ What: /sys/devices/system/cpu/vulnerabi + /sys/devices/system/cpu/vulnerabilities/mds + /sys/devices/system/cpu/vulnerabilities/meltdown + /sys/devices/system/cpu/vulnerabilities/mmio_stale_data ++ /sys/devices/system/cpu/vulnerabilities/old_microcode + /sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling + /sys/devices/system/cpu/vulnerabilities/retbleed + /sys/devices/system/cpu/vulnerabilities/spec_store_bypass +--- /dev/null ++++ b/Documentation/admin-guide/hw-vuln/old_microcode.rst +@@ -0,0 +1,21 @@ ++.. SPDX-License-Identifier: GPL-2.0 ++ ++============= ++Old Microcode ++============= ++ ++The kernel keeps a table of released microcode. Systems that had ++microcode older than this at boot will say "Vulnerable". This means ++that the system was vulnerable to some known CPU issue. It could be ++security or functional, the kernel does not know or care. ++ ++You should update the CPU microcode to mitigate any exposure. This is ++usually accomplished by updating the files in ++/lib/firmware/intel-ucode/ via normal distribution updates. Intel also ++distributes these files in a github repo: ++ ++ https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git ++ ++Just like all the other hardware vulnerabilities, exposure is ++determined at boot. Runtime microcode updates do not change the status ++of this vulnerability. +--- a/arch/x86/include/asm/cpufeatures.h ++++ b/arch/x86/include/asm/cpufeatures.h +@@ -535,4 +535,6 @@ + #define X86_BUG_RFDS X86_BUG(1*32 + 2) /* "rfds" CPU is vulnerable to Register File Data Sampling */ + #define X86_BUG_BHI X86_BUG(1*32 + 3) /* "bhi" CPU is affected by Branch History Injection */ + #define X86_BUG_IBPB_NO_RET X86_BUG(1*32 + 4) /* "ibpb_no_ret" IBPB omits return target predictions */ ++#define X86_BUG_SPECTRE_V2_USER X86_BUG(1*32 + 5) /* "spectre_v2_user" CPU is affected by Spectre variant 2 attack between user processes */ ++#define X86_BUG_OLD_MICROCODE X86_BUG(1*32 + 6) /* "old_microcode" CPU has old microcode, it is surely vulnerable to something */ + #endif /* _ASM_X86_CPUFEATURES_H */ +--- a/arch/x86/kernel/cpu/bugs.c ++++ b/arch/x86/kernel/cpu/bugs.c +@@ -2806,6 +2806,14 @@ static ssize_t rfds_show_state(char *buf + return sysfs_emit(buf, "%s\n", rfds_strings[rfds_mitigation]); + } + ++static ssize_t old_microcode_show_state(char *buf) ++{ ++ if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) ++ return sysfs_emit(buf, "Unknown: running under hypervisor"); ++ ++ return sysfs_emit(buf, "Vulnerable\n"); ++} ++ + static char *stibp_state(void) + { + if (spectre_v2_in_eibrs_mode(spectre_v2_enabled) && +@@ -2988,6 +2996,9 @@ static ssize_t cpu_show_common(struct de + case X86_BUG_RFDS: + return rfds_show_state(buf); + ++ case X86_BUG_OLD_MICROCODE: ++ return old_microcode_show_state(buf); ++ + default: + break; + } +@@ -3067,6 +3078,11 @@ ssize_t cpu_show_reg_file_data_sampling( + { + return cpu_show_common(dev, attr, buf, X86_BUG_RFDS); + } ++ ++ssize_t cpu_show_old_microcode(struct device *dev, struct device_attribute *attr, char *buf) ++{ ++ return cpu_show_common(dev, attr, buf, X86_BUG_OLD_MICROCODE); ++} + #endif + + void __warn_thunk(void) +--- a/arch/x86/kernel/cpu/common.c ++++ b/arch/x86/kernel/cpu/common.c +@@ -1317,10 +1317,52 @@ static bool __init vulnerable_to_rfds(u6 + return cpu_matches(cpu_vuln_blacklist, RFDS); + } + ++static struct x86_cpu_id cpu_latest_microcode[] = { ++#include "microcode/intel-ucode-defs.h" ++ {} ++}; ++ ++static bool __init cpu_has_old_microcode(void) ++{ ++ const struct x86_cpu_id *m = x86_match_cpu(cpu_latest_microcode); ++ ++ /* Give unknown CPUs a pass: */ ++ if (!m) { ++ /* Intel CPUs should be in the list. Warn if not: */ ++ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) ++ pr_info("x86/CPU: Model not found in latest microcode list\n"); ++ return false; ++ } ++ ++ /* ++ * Hosts usually lie to guests with a super high microcode ++ * version. Just ignore what hosts tell guests: ++ */ ++ if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) ++ return false; ++ ++ /* Consider all debug microcode to be old: */ ++ if (boot_cpu_data.microcode & BIT(31)) ++ return true; ++ ++ /* Give new microocode a pass: */ ++ if (boot_cpu_data.microcode >= m->driver_data) ++ return false; ++ ++ /* Uh oh, too old: */ ++ return true; ++} ++ + static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) + { + u64 x86_arch_cap_msr = x86_read_arch_cap_msr(); + ++ if (cpu_has_old_microcode()) { ++ pr_warn("x86/CPU: Running old microcode\n"); ++ setup_force_cpu_bug(X86_BUG_OLD_MICROCODE); ++ add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK); ++ } ++ + /* Set ITLB_MULTIHIT bug if cpu is not in the whitelist and not mitigated */ + if (!cpu_matches(cpu_vuln_whitelist, NO_ITLB_MULTIHIT) && + !(x86_arch_cap_msr & ARCH_CAP_PSCHANGE_MC_NO)) +--- /dev/null ++++ b/arch/x86/kernel/cpu/microcode/intel-ucode-defs.h +@@ -0,0 +1,150 @@ ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x03, .steppings = 0x0004, .driver_data = 0x2 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0001, .driver_data = 0x45 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0002, .driver_data = 0x40 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0004, .driver_data = 0x2c }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0008, .driver_data = 0x10 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0001, .driver_data = 0xa }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0020, .driver_data = 0x3 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0400, .driver_data = 0xd }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x2000, .driver_data = 0x7 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0002, .driver_data = 0x14 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0004, .driver_data = 0x38 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0008, .driver_data = 0x2e }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0002, .driver_data = 0x11 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0008, .driver_data = 0x8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0040, .driver_data = 0xc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0400, .driver_data = 0x5 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x09, .steppings = 0x0020, .driver_data = 0x47 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0a, .steppings = 0x0001, .driver_data = 0x3 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0a, .steppings = 0x0002, .driver_data = 0x1 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0b, .steppings = 0x0002, .driver_data = 0x1d }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0b, .steppings = 0x0010, .driver_data = 0x2 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0d, .steppings = 0x0040, .driver_data = 0x18 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0e, .steppings = 0x0100, .driver_data = 0x39 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0e, .steppings = 0x1000, .driver_data = 0x59 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0004, .driver_data = 0x5d }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0040, .driver_data = 0xd2 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0080, .driver_data = 0x6b }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0400, .driver_data = 0x95 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0800, .driver_data = 0xbc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x2000, .driver_data = 0xa4 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x16, .steppings = 0x0002, .driver_data = 0x44 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0040, .driver_data = 0x60f }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0080, .driver_data = 0x70a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0400, .driver_data = 0xa0b }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1a, .steppings = 0x0010, .driver_data = 0x12 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1a, .steppings = 0x0020, .driver_data = 0x1d }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1c, .steppings = 0x0004, .driver_data = 0x219 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1c, .steppings = 0x0400, .driver_data = 0x107 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1d, .steppings = 0x0002, .driver_data = 0x29 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1e, .steppings = 0x0020, .driver_data = 0xa }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x25, .steppings = 0x0004, .driver_data = 0x11 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x25, .steppings = 0x0020, .driver_data = 0x7 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x26, .steppings = 0x0002, .driver_data = 0x105 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2a, .steppings = 0x0080, .driver_data = 0x2f }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2c, .steppings = 0x0004, .driver_data = 0x1f }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2d, .steppings = 0x0040, .driver_data = 0x621 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2d, .steppings = 0x0080, .driver_data = 0x71a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2e, .steppings = 0x0040, .driver_data = 0xd }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2f, .steppings = 0x0004, .driver_data = 0x3b }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x37, .steppings = 0x0100, .driver_data = 0x838 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x37, .steppings = 0x0200, .driver_data = 0x90d }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3a, .steppings = 0x0200, .driver_data = 0x21 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3c, .steppings = 0x0008, .driver_data = 0x28 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3d, .steppings = 0x0010, .driver_data = 0x2f }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0010, .driver_data = 0x42e }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0040, .driver_data = 0x600 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0080, .driver_data = 0x715 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3f, .steppings = 0x0004, .driver_data = 0x49 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3f, .steppings = 0x0010, .driver_data = 0x1a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x45, .steppings = 0x0002, .driver_data = 0x26 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x46, .steppings = 0x0002, .driver_data = 0x1c }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x47, .steppings = 0x0002, .driver_data = 0x22 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4c, .steppings = 0x0008, .driver_data = 0x368 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4c, .steppings = 0x0010, .driver_data = 0x411 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4d, .steppings = 0x0100, .driver_data = 0x12d }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4e, .steppings = 0x0008, .driver_data = 0xf0 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0008, .driver_data = 0x1000191 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0010, .driver_data = 0x2007006 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0020, .driver_data = 0x3000010 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0040, .driver_data = 0x4003605 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0080, .driver_data = 0x5003707 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0800, .driver_data = 0x7002904 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0004, .driver_data = 0x1c }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0008, .driver_data = 0x700001c }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0010, .driver_data = 0xf00001a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0020, .driver_data = 0xe000015 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0004, .driver_data = 0x14 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0200, .driver_data = 0x48 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0400, .driver_data = 0x28 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5e, .steppings = 0x0008, .driver_data = 0xf0 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5f, .steppings = 0x0002, .driver_data = 0x3e }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x66, .steppings = 0x0008, .driver_data = 0x2a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6a, .steppings = 0x0020, .driver_data = 0xc0002f0 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6a, .steppings = 0x0040, .driver_data = 0xd0003e7 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6c, .steppings = 0x0002, .driver_data = 0x10002b0 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7a, .steppings = 0x0002, .driver_data = 0x42 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7a, .steppings = 0x0100, .driver_data = 0x24 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7e, .steppings = 0x0020, .driver_data = 0xc6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8a, .steppings = 0x0002, .driver_data = 0x33 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8c, .steppings = 0x0002, .driver_data = 0xb8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8c, .steppings = 0x0004, .driver_data = 0x38 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8d, .steppings = 0x0002, .driver_data = 0x52 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0200, .driver_data = 0xf6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0400, .driver_data = 0xf6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0800, .driver_data = 0xf6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x1000, .driver_data = 0xfc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0100, .driver_data = 0x2c000390 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0080, .driver_data = 0x2b000603 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0040, .driver_data = 0x2c000390 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0020, .driver_data = 0x2c000390 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0010, .driver_data = 0x2c000390 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x96, .steppings = 0x0002, .driver_data = 0x1a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x97, .steppings = 0x0004, .driver_data = 0x37 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x97, .steppings = 0x0020, .driver_data = 0x37 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbf, .steppings = 0x0004, .driver_data = 0x37 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbf, .steppings = 0x0020, .driver_data = 0x37 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9a, .steppings = 0x0008, .driver_data = 0x435 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9a, .steppings = 0x0010, .driver_data = 0x435 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9c, .steppings = 0x0001, .driver_data = 0x24000026 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0200, .driver_data = 0xf8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0400, .driver_data = 0xf8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0800, .driver_data = 0xf6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x1000, .driver_data = 0xf8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x2000, .driver_data = 0x100 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0004, .driver_data = 0xfc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0008, .driver_data = 0xfc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0020, .driver_data = 0xfc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa6, .steppings = 0x0001, .driver_data = 0xfe }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa6, .steppings = 0x0002, .driver_data = 0xfc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa7, .steppings = 0x0002, .driver_data = 0x62 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xaa, .steppings = 0x0010, .driver_data = 0x20 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xb7, .steppings = 0x0002, .driver_data = 0x12b }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0004, .driver_data = 0x4123 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0008, .driver_data = 0x4123 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0100, .driver_data = 0x4123 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbe, .steppings = 0x0001, .driver_data = 0x1a }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xcf, .steppings = 0x0004, .driver_data = 0x21000283 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xcf, .steppings = 0x0002, .driver_data = 0x21000283 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x00, .steppings = 0x0080, .driver_data = 0x12 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x00, .steppings = 0x0400, .driver_data = 0x15 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x01, .steppings = 0x0004, .driver_data = 0x2e }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0010, .driver_data = 0x21 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0020, .driver_data = 0x2c }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0040, .driver_data = 0x10 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0080, .driver_data = 0x39 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0200, .driver_data = 0x2f }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0004, .driver_data = 0xa }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0008, .driver_data = 0xc }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0010, .driver_data = 0x17 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0002, .driver_data = 0x17 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0008, .driver_data = 0x5 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0010, .driver_data = 0x6 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0080, .driver_data = 0x3 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0100, .driver_data = 0xe }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0200, .driver_data = 0x3 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0400, .driver_data = 0x4 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0004, .driver_data = 0xf }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0010, .driver_data = 0x4 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0020, .driver_data = 0x8 }, ++{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0100, .driver_data = 0x9 }, +--- a/drivers/base/cpu.c ++++ b/drivers/base/cpu.c +@@ -600,6 +600,7 @@ CPU_SHOW_VULN_FALLBACK(spec_rstack_overf + CPU_SHOW_VULN_FALLBACK(gds); + CPU_SHOW_VULN_FALLBACK(reg_file_data_sampling); + CPU_SHOW_VULN_FALLBACK(ghostwrite); ++CPU_SHOW_VULN_FALLBACK(old_microcode); + + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); + static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); +@@ -616,6 +617,7 @@ static DEVICE_ATTR(spec_rstack_overflow, + static DEVICE_ATTR(gather_data_sampling, 0444, cpu_show_gds, NULL); + static DEVICE_ATTR(reg_file_data_sampling, 0444, cpu_show_reg_file_data_sampling, NULL); + static DEVICE_ATTR(ghostwrite, 0444, cpu_show_ghostwrite, NULL); ++static DEVICE_ATTR(old_microcode, 0444, cpu_show_old_microcode, NULL); + + static struct attribute *cpu_root_vulnerabilities_attrs[] = { + &dev_attr_meltdown.attr, +@@ -633,6 +635,7 @@ static struct attribute *cpu_root_vulner + &dev_attr_gather_data_sampling.attr, + &dev_attr_reg_file_data_sampling.attr, + &dev_attr_ghostwrite.attr, ++ &dev_attr_old_microcode.attr, + NULL + }; + +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h +@@ -78,6 +78,8 @@ extern ssize_t cpu_show_gds(struct devic + extern ssize_t cpu_show_reg_file_data_sampling(struct device *dev, + struct device_attribute *attr, char *buf); + extern ssize_t cpu_show_ghostwrite(struct device *dev, struct device_attribute *attr, char *buf); ++extern ssize_t cpu_show_old_microcode(struct device *dev, ++ struct device_attribute *attr, char *buf); + + extern __printf(4, 5) + struct device *cpu_device_create(struct device *parent, void *drvdata, diff --git a/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch b/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch index 5ff0067..f24fddb 100644 --- a/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch +++ b/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch @@ -90,7 +90,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-3-riel@surriel.com static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p) { u32 gprs[8] = { 0 }; -@@ -1140,6 +1142,10 @@ static void cpu_detect_tlb_amd(struct cp +@@ -1145,6 +1147,10 @@ static void cpu_detect_tlb_amd(struct cp tlb_lli_2m[ENTRIES] = eax & mask; tlb_lli_4m[ENTRIES] = tlb_lli_2m[ENTRIES] >> 1; diff --git a/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch b/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch index 880cf66..3d9270c 100644 --- a/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch +++ b/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch @@ -52,7 +52,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-13-riel@surriel.com /* --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c -@@ -1076,6 +1076,10 @@ static void init_amd(struct cpuinfo_x86 +@@ -1081,6 +1081,10 @@ static void init_amd(struct cpuinfo_x86 /* AMD CPUs don't need fencing after x2APIC/TSC_DEADLINE MSR writes. */ clear_cpu_cap(c, X86_FEATURE_APIC_MSRS_FENCE); diff --git a/debian/patches/patchset-zen/sauce/0004-ZEN-Disable-stack-conservation-for-GCC.patch b/debian/patches/patchset-zen/sauce/0004-ZEN-Disable-stack-conservation-for-GCC.patch index 31f9886..27cb2a6 100644 --- a/debian/patches/patchset-zen/sauce/0004-ZEN-Disable-stack-conservation-for-GCC.patch +++ b/debian/patches/patchset-zen/sauce/0004-ZEN-Disable-stack-conservation-for-GCC.patch @@ -15,7 +15,7 @@ Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com> --- a/Makefile +++ b/Makefile -@@ -1078,11 +1078,6 @@ KBUILD_CFLAGS += -fno-strict-overflow +@@ -1077,11 +1077,6 @@ KBUILD_CFLAGS += -fno-strict-overflow # Make sure -fstack-check isn't enabled (like gentoo apparently did) KBUILD_CFLAGS += -fno-stack-check diff --git a/debian/patches/series b/debian/patches/series index 24f4a74..1632a1b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -69,7 +69,6 @@ features/x86/x86-make-x32-syscall-support-conditional.patch bugfix/all/disable-some-marvell-phys.patch bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch bugfix/all/documentation-use-relative-source-paths-in-abi-documentation.patch -bugfix/all/hfs-hfsplus-fix-slab-out-of-bounds-in-hfs_bnode_read.patch # Miscellaneous features @@ -102,6 +101,7 @@ bugfix/all/perf-tools-support-extra-cxxflags.patch bugfix/all/perf-tools-pass-extra_cflags-through-to-libbpf-build-again.patch bugfix/all/kbuild-bpf-fix-btf-reproducibility.patch bugfix/all/perf-docs-Fix-perf-check-manual-page-built-with-asci.patch +bugfix/all/libbpf-use-the-standard-fixdep-build-rule.patch # ABI maintenance @@ -156,14 +156,6 @@ patchset-pf/cpuidle/0001-cpuidle-Prefer-teo-over-menu-governor.patch patchset-pf/crypto/0001-crypto-x86-aes-xts-make-the-fast-path-64-bit-specifi.patch patchset-pf/crypto/0002-crypto-x86-aes-ctr-rewrite-AESNI-AVX-optimized-CTR-a.patch -patchset-pf/fuse/0001-virtiofs-add-filesystem-context-source-name-check.patch - -patchset-pf/smb/0001-ksmbd-Fix-dangling-pointer-in-krb_authenticate.patch -patchset-pf/smb/0002-ksmbd-fix-use-after-free-in-__smb2_lease_break_noti.patch -patchset-pf/smb/0003-ksmbd-fix-use-after-free-in-smb_break_all_levII_oplo.patch -patchset-pf/smb/0004-ksmbd-fix-the-warning-from-__kernel_write_iter.patch -patchset-pf/smb/0005-ksmbd-Prevent-integer-overflow-in-calculation-of-dea.patch - patchset-pf/zstd/0001-zstd-import-upstream-v1.5.7.patch patchset-pf/zstd/0002-lib-zstd-Refactor-intentional-wrap-around-test.patch @@ -268,14 +260,13 @@ patchset-zen/sauce/0023-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch patchset-pf/fixes/0001-Kunit-to-check-the-longest-symbol-length.patch patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patch -patchset-pf/fixes/0003-drm-amdgpu-mes11-optimize-MES-pipe-FW-version-fetchi.patch -patchset-pf/fixes/0004-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch -patchset-pf/fixes/0005-ice-mark-ice_write_prof_mask_reg-as-noinline.patch -patchset-pf/fixes/0006-fixes-6.14-update-tpm2_start_auth_session-fix.patch -patchset-pf/fixes/0007-drm-amdgpu-mes12-optimize-MES-pipe-FW-version-fetchi.patch -patchset-pf/fixes/0008-wifi-iwlwifi-pcie-set-state-to-no-FW-before-reset-ha.patch -patchset-pf/fixes/0009-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch -patchset-pf/fixes/0010-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch +patchset-pf/fixes/0003-tpm-Mask-TPM-RC-in-tpm2_start_auth_session.patch +patchset-pf/fixes/0004-ice-mark-ice_write_prof_mask_reg-as-noinline.patch +patchset-pf/fixes/0005-fixes-6.14-update-tpm2_start_auth_session-fix.patch +patchset-pf/fixes/0006-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch +patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch +patchset-pf/fixes/0008-sched-eevdf-Fix-se-slice-being-set-to-U64_MAX-and-re.patch patchset-zen/fixes/0001-arch-Kconfig-Default-to-maximum-amount-of-ASLR-bits.patch patchset-zen/fixes/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch +patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch diff --git a/debian/rules.d/tools/bpf/resolve_btfids/Makefile b/debian/rules.d/tools/bpf/resolve_btfids/Makefile index 60014d3..ee2c070 100644 --- a/debian/rules.d/tools/bpf/resolve_btfids/Makefile +++ b/debian/rules.d/tools/bpf/resolve_btfids/Makefile @@ -3,8 +3,14 @@ PROGS = resolve_btfids include $(top_rulesdir)/Makefile.inc resolve_btfids: +# resolve_btfids always uses HOSTCC, HOSTLD, and HOSTAR; we need to +# override these on the command line to make cross-builds work. But +# it also builds fixdep which still needs to be native in a +# cross-build. Set REALHOSTCC and REALHOSTLD variables which will be +# used for fixdep. $(MAKE) -C $(top_srcdir)/tools/bpf/resolve_btfids O=$(CURDIR) \ HOSTCC=$(CC) HOSTCFLAGS='$(CFLAGS) $(CPPFLAGS)' \ HOSTLD=$(CROSS_COMPILE)ld KBUILD_HOSTLDFLAGS='$(LDFLAGS)' \ HOSTAR=$(CROSS_COMPILE)ar \ + REALHOSTCC=gcc REALHOSTLD=ld \ V=1 diff --git a/debian/rules.real b/debian/rules.real index 9c29267..cc70b76 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -162,6 +162,8 @@ endif ifdef COMPAT_GNU_TYPE echo 'override CROSS_COMPILE_COMPAT = $(COMPAT_GNU_TYPE)-' >> '$(DIR)/.kernelvariables' echo 'override CROSS32_COMPILE = $(COMPAT_GNU_TYPE)-' >> '$(DIR)/.kernelvariables' +# These are not exported by default, and kconfig may need to see them + echo 'export CROSS_COMPILE_COMPAT CROSS32_COMPILE' >> '$(DIR)/.kernelvariables' endif echo 'DEBIAN_KERNEL_NO_CC_VERSION_CHECK = y' >> '$(DIR)/.kernelvariables' +$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' listnewconfig @@ -358,17 +360,6 @@ binary_bpf-dev: build_bpf-dev $(dh_binary_pre) $(dh_binary_post) -build_support: - -binary_support: PACKAGE_ROOT = /usr/share/$(PACKAGE_NAME) -binary_support: - $(dh_binary_pre) - dh_installdirs $(PACKAGE_ROOT)/lib/python/debian_linux $(PACKAGE_ROOT)/modules - cp debian/lib/python/debian_linux/*.py $(DESTDIR)$(PACKAGE_ROOT)/lib/python/debian_linux/ - dh_python3 - dh_link $(PACKAGE_ROOT) /usr/src/$(PACKAGE_NAME) - $(dh_binary_post) - setup_image: $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR) build_image: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) diff --git a/debian/templates/main.control.in b/debian/templates/main.control.in index a717523..e69de29 100644 --- a/debian/templates/main.control.in +++ b/debian/templates/main.control.in @@ -1,12 +0,0 @@ -Package: krd-linux-support-@abiname@ -Meta-Rules-Target: support -Build-Profiles: <!pkg.linux.notools> -Architecture: all -Section: devel -Depends: ${python3:Depends}, python3-dacite, python3-jinja2, ${misc:Depends} -Multi-Arch: foreign -Description: Support files for KrD's Linux kernel @upstreamversion@ - This package provides support files for the Linux kernel build, - e.g. scripts to handle ABI information and for generation of - build system meta data. - diff --git a/debian/templates/source.control.in b/debian/templates/source.control.in index bd82891..2683bf0 100644 --- a/debian/templates/source.control.in +++ b/debian/templates/source.control.in @@ -11,7 +11,7 @@ Build-Depends: python3-jinja2:native, # used by debian/rules.real to prepare the source quilt, -# used by debian/rules.real to build linux-perf and linux-support +# used by debian/rules.real to build linux-perf dh-python <!pkg.linux.notools>, Build-Depends-Arch: # used by upstream to build include/generated/timeconst.h