diff options
Diffstat (limited to 'meta/recipes-kernel')
98 files changed, 9063 insertions, 2198 deletions
diff --git a/meta/recipes-kernel/blktrace/blktrace_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb index bba5e04504..d4f5bac84f 100644 --- a/meta/recipes-kernel/blktrace/blktrace_git.bb +++ b/meta/recipes-kernel/blktrace/blktrace_git.bb @@ -12,9 +12,9 @@ DEPENDS = "libaio" SRCREV = "366d30b9cdb20345c5d064af850d686da79b89eb" -PV = "1.3.0+git${SRCPV}" +PV = "1.3.0+git" -SRC_URI = "git://git.kernel.dk/blktrace.git;branch=master" +SRC_URI = "git://git.kernel.dk/blktrace.git;branch=master;protocol=https" S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb index d5ea9d8529..d5ea9d8529 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb index 5192cf03ed..5192cf03ed 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb index c541478796..458ad8ecf2 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb @@ -5,14 +5,13 @@ SUMMARY = "A test suite for /dev/crypto device driver" DEPENDS += "openssl" SRC_URI += " \ -file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \ -file://0001-tests-Makefile-do-not-use-Werror.patch \ -" + file://0001-tests-Makefile-do-not-use-Werror.patch \ + " EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"' do_compile() { - oe_runmake testprogs + oe_runmake tests } do_install() { diff --git a/meta/recipes-kernel/cryptodev/cryptodev.inc b/meta/recipes-kernel/cryptodev/cryptodev.inc index ef342a157c..64a9c2926b 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev.inc +++ b/meta/recipes-kernel/cryptodev/cryptodev.inc @@ -10,7 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \ " -SRCREV = "e0c25e289d6baf1d83c2b9cb523d3bc237d0c0c9" +SRCREV = "bb8bc7cf60d2c0b097c8b3b0e807f805b577a53f" +PV = "1.13+git${SRCPV}" S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch b/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch deleted file mode 100644 index 84fd27e681..0000000000 --- a/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 1980a8f4779a955e73285e7a0d86549b69bea5c8 Mon Sep 17 00:00:00 2001 -From: Yu Zongchun <b40527@freescale.com> -Date: Sun, 28 Apr 2013 14:39:22 +0800 -Subject: [PATCH] Add the compile and install rules for cryptodev tests folder - -This is required to install the cryptodev tests folder to rootfs - -Signed-off-by: Yu Zongchun <b40527@freescale.com> - -Upstream-Status: Pending - ---- - Makefile | 6 ++++++ - tests/Makefile | 8 ++++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -Index: git/Makefile -=================================================================== ---- git.orig/Makefile -+++ git/Makefile -@@ -35,6 +35,9 @@ modules_install: - $(MAKE) $(KERNEL_MAKE_OPTS) modules_install - install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h - -+install_tests: -+ make -C tests install DESTDIR=$(PREFIX) -+ - clean: - $(MAKE) $(KERNEL_MAKE_OPTS) clean - rm -f $(hostprogs) *~ -@@ -43,6 +46,9 @@ clean: - check: - CFLAGS=$(CRYPTODEV_CFLAGS) KERNEL_DIR=$(KERNEL_DIR) $(MAKE) -C tests check - -+testprogs: -+ KERNEL_DIR=$(KERNEL_DIR) make -C tests testprogs -+ - CPOPTS = - ifneq ($(SHOW_TYPES),) - CPOPTS += --show-types -Index: git/tests/Makefile -=================================================================== ---- git.orig/tests/Makefile -+++ git/tests/Makefile -@@ -23,6 +23,12 @@ bindir = $(execprefix)/bin - - all: $(hostprogs) - -+install: -+ install -d $(DESTDIR)/usr/bin/tests_cryptodev -+ for bin in $(hostprogs); do \ -+ install -m 755 $${bin} $(DESTDIR)/usr/bin/tests_cryptodev/; \ -+ done -+ - check: $(hostprogs) - ./cipher - ./hmac -@@ -38,6 +44,8 @@ install: - install -m 755 $$prog $(DESTDIR)/$(bindir); \ - done - -+testprogs: $(hostprogs) -+ - clean: - rm -f *.o *~ $(hostprogs) - diff --git a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch b/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch index 885b5823e4..c7fdef4da4 100644 --- a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch +++ b/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch @@ -1,4 +1,4 @@ -From 8a884f55bd1527baa82fab68c186ba546273860c Mon Sep 17 00:00:00 2001 +From 66d85d3f26e21cf7c38b27de0dcc42376f5d853e Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko <denys@ti.com> Date: Sun, 6 Apr 2014 19:51:39 -0400 Subject: [PATCH] Disable installing header file provided by another package @@ -6,19 +6,20 @@ Subject: [PATCH] Disable installing header file provided by another package Signed-off-by: Denys Dmytriyenko <denys@ti.com> Upstream-Status: Inappropriate [ OE specific ] + --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile -index 5a080e0..bf02396 100644 +index d83aee6..c8d8ae5 100644 --- a/Makefile +++ b/Makefile -@@ -33,7 +33,6 @@ install: modules_install +@@ -36,7 +36,6 @@ install: modules_install modules_install: $(MAKE) $(KERNEL_MAKE_OPTS) modules_install - install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h - clean: - $(MAKE) $(KERNEL_MAKE_OPTS) clean + install_tests: tests + $(MAKE) -C tests install DESTDIR=$(PREFIX) diff --git a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch index 347a4aef0f..3285548a57 100644 --- a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch +++ b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch @@ -1,4 +1,4 @@ -From e2c2895d52761ddc6384a31364236dd13f677c34 Mon Sep 17 00:00:00 2001 +From 47438e53e1156db0916c0f4683a24fe4d82152f2 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex@linutronix.de> Date: Fri, 10 Sep 2021 10:44:42 +0200 Subject: [PATCH] tests/Makefile: do not use -Werror @@ -8,6 +8,7 @@ Reported at https://github.com/cryptodev-linux/cryptodev-linux/issues/67 Upstream-Status: Inappropriate [upstream needs to update the code] Signed-off-by: Alexander Kanavin <alex@linutronix.de> + --- tests/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch b/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch deleted file mode 100644 index 4c3e34b1ff..0000000000 --- a/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch +++ /dev/null @@ -1,40 +0,0 @@ -Fix the build of fdtdump with mingw. - -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From ae0ce1fa7f4d679b5f8df1fc0e797246e43547fe Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com> -Date: Wed, 25 Aug 2021 16:13:50 +0400 -Subject: [PATCH] fdtdump: fix -Werror=int-to-pointer-cast -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -With mingw64-gcc, the compiler complains with various warnings: -error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] - -Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Message-Id: <20210825121350.213551-1-marcandre.lureau@redhat.com> -Acked-by: Rob Herring <robh@kernel.org> -Signed-off-by: David Gibson <david@gibson.dropbear.id.au> ---- - fdtdump.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fdtdump.c b/fdtdump.c -index d9fb374..483f367 100644 ---- a/fdtdump.c -+++ b/fdtdump.c -@@ -21,7 +21,7 @@ - #define MAX_VERSION 17 - - #define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) --#define PALIGN(p, a) ((void *)(ALIGN((unsigned long)(p), (a)))) -+#define PALIGN(p, a) ((void *)(ALIGN((uintptr_t)(p), (a)))) - #define GET_CELL(p) (p += 4, *((const fdt32_t *)(p-4))) - - static const char *tagname(uint32_t tag) --- -2.25.1 - diff --git a/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch b/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch new file mode 100644 index 0000000000..79a3b92b44 --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch @@ -0,0 +1,29 @@ +From 9153522103bd4ed7e3299c4d073f66bb37cb2d42 Mon Sep 17 00:00:00 2001 +From: Nikolay Letov <letov.nikolay@gmail.com> +Date: Wed, 22 Feb 2023 13:36:07 +0300 +Subject: [PATCH 1/2] meson.build: bump version to 1.7.0 + +[This was botched in the actual 1.7.0 release :( - David Gibson] + +Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=64a907f08b9bedd89833c1eee674148cff2343c6] + +Signed-off-by: Nikolay Letov <letov.nikolay@gmail.com> +Signed-off-by: Peter Marko <peter.marko@siemens.com> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 78251eb..d88cd9f 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('dtc', 'c', +- version: '1.6.0', ++ version: '1.7.0', + license: ['GPL2+', 'BSD-2'], + default_options: 'werror=true', + ) +-- +2.30.2 + diff --git a/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch b/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch new file mode 100644 index 0000000000..0284905913 --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch @@ -0,0 +1,38 @@ +From 4415b0baece3c4351a6d3637c2754abbefd4795d Mon Sep 17 00:00:00 2001 +From: Peter Marko <peter.marko@siemens.com> +Date: Sat, 16 Dec 2023 18:58:31 +0100 +Subject: [PATCH 2/2] meson: allow building from shallow clones + +When building from shallow clone, tag is not available +and version defaults to git hash. +Problem is that some builds check DTC version and fail the comparison. +Example is https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git +Which fails to build with following error: +dtc version too old (039a994), you need at least version 1.4.4 + +Drop --always from git describe command, see +https://github.com/mesonbuild/meson/blob/1.3.0/mesonbuild/utils/universal.py#L773 +This will make it more closer to build via Makefile. + +Upstream-Status: Submitted [https://github.com/dgibson/dtc/pull/122] + +Signed-off-by: Peter Marko <peter.marko@siemens.com> +--- + meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/meson.build b/meson.build +index 78251eb..fc0c92a 100644 +--- a/meson.build ++++ b/meson.build +@@ -56,6 +56,7 @@ py = py.find_installation(required: get_option('python')) + swig = find_program('swig', required: get_option('python')) + + version_gen_h = vcs_tag( ++ command: ['git', 'describe', '--dirty=+'], + input: 'version_gen.h.in', + output: 'version_gen.h', + ) +-- +2.30.2 + diff --git a/meta/recipes-kernel/dtc/dtc_1.6.1.bb b/meta/recipes-kernel/dtc/dtc_1.7.0.bb index 2a6ac089a3..0702fc16df 100644 --- a/meta/recipes-kernel/dtc/dtc_1.6.1.bb +++ b/meta/recipes-kernel/dtc/dtc_1.7.0.bb @@ -1,15 +1,19 @@ SUMMARY = "Device Tree Compiler" HOMEPAGE = "https://devicetree.org/" -DESCRIPTION = "The Device Tree Compiler is a tool used to manipulate the Open-Firmware-like device tree used by PowerPC kernels." +DESCRIPTION = "The Device Tree Compiler is a toolchain for working with device tree source and binary files." SECTION = "bootloader" LICENSE = "GPL-2.0-only | BSD-2-Clause" LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://libfdt/libfdt.h;beginline=4;endline=7;md5=05bb357cfb75cae7d2b01d2ee8d76407" - -SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=master \ - file://0001-fdtdump-fix-Werror-int-to-pointer-cast.patch" -SRCREV = "b6910bec11614980a21e46fbccc35934b671bd81" + file://BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927 \ + file://README.license;md5=a1eb22e37f09df5b5511b8a278992d0e" + +SRC_URI = " \ + git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=main;protocol=https \ + file://0001-meson.build-bump-version-to-1.7.0.patch \ + file://0002-meson-allow-building-from-shallow-clones.patch \ +" +SRCREV = "039a99414e778332d8f9c04cbd3072e1dcc62798" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb index c869274d09..974fcba876 100644 --- a/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb @@ -1,4 +1,4 @@ -DESCRIPTION = "Wrapper for tooling for devicetree validation using YAML and jsonschema" +SUMMARY = "Wrapper for tooling for devicetree validation using YAML and jsonschema" HOMEPAGE = "https://yoctoproject.org" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb index 11613ab3b6..8eff00821a 100644 --- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb @@ -9,14 +9,14 @@ LIC_FILES_CHKSUM = "\ file://Kconfiglib/LICENSE.txt;md5=712177a72a3937909543eda3ad1bfb7c \ " -DEPENDS = "git-native" +DEPENDS += "git-replacement-native" -SRCREV = "f70b1d52f4706a263ae22e2c61039ccd875e97b6" -PV = "0.3+git${SRCPV}" +SRCREV = "7160ebe8b865dd6028aef278efa219433db93f7e" +PV = "0.3+git" inherit native -SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master" +SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master;protocol=https" S = "${WORKDIR}/git" do_configure() { diff --git a/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch b/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch index 363d5da4ae..a537ac2f0b 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch @@ -1,4 +1,4 @@ -From a04bcf8f683c1a5a7d015920124457ad56fb7cf0 Mon Sep 17 00:00:00 2001 +From e5bc9fbd6029057a4e3815a5326af5bd83a450e6 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Sep 2015 07:59:45 +0000 Subject: [PATCH] purgatory: Pass -r directly to linker @@ -10,15 +10,16 @@ unfiltered Signed-off-by: Khem Raj <raj.khem@gmail.com> Upstream-Status: Pending + --- purgatory/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purgatory/Makefile b/purgatory/Makefile -index 2dd6c47..416e6b9 100644 +index 4d2d071..6673423 100644 --- a/purgatory/Makefile +++ b/purgatory/Makefile -@@ -60,7 +60,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ +@@ -61,7 +61,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ -I$(shell $(CC) -print-file-name=include) $(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\ -Wl,--no-undefined -nostartfiles -nostdlib \ diff --git a/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch b/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch index 832fe67716..e874a8b4f1 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch @@ -1,4 +1,4 @@ -From 55e583d20651e829afbbc8dba0f8ec3017cda2d5 Mon Sep 17 00:00:00 2001 +From b62c1da8f8e641397add10367ee9c4cfdedb1cc0 Mon Sep 17 00:00:00 2001 From: Haiqing Bai <Haiqing.Bai@windriver.com> Date: Mon, 9 Jan 2017 15:26:29 +0800 Subject: [PATCH] kexec: ARM: Fix add_buffer_phys_virt() align issue @@ -12,15 +12,16 @@ Upstream-Status: Pending Suggested-By:fredrik.markstrom@gmail.com Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com> + --- kexec/arch/arm/crashdump-arm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c -index daa4788..3f72b38 100644 +index 1ec1826..cc20f63 100644 --- a/kexec/arch/arm/crashdump-arm.c +++ b/kexec/arch/arm/crashdump-arm.c -@@ -240,6 +240,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -242,6 +242,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) void *buf; int err; int last_ranges; @@ -28,7 +29,7 @@ index daa4788..3f72b38 100644 /* * First fetch all the memory (RAM) ranges that we are going to pass to -@@ -281,6 +282,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -283,6 +284,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) /* for support LPAE enabled kernel*/ elf_info.class = ELFCLASS64; @@ -36,7 +37,7 @@ index daa4788..3f72b38 100644 err = crash_create_elf64_headers(info, &elf_info, usablemem_rgns.ranges, -@@ -302,8 +304,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -304,8 +306,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) * 1MB) so that available memory passed in kernel command line will be * aligned to 1MB. This is because kernel create_mapping() wants memory * regions to be aligned to SECTION_SIZE. diff --git a/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch b/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch index 7a4b8548ca..6a21744ac1 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch @@ -1,4 +1,4 @@ -From c54488ad5fd657e0f154d76d7456d9080be24836 Mon Sep 17 00:00:00 2001 +From 494888bcc3bbf070dfce1b2686ee34c8619aa33d Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 10 Jun 2017 11:18:49 -0700 Subject: [PATCH] Disable PIE during link @@ -9,15 +9,16 @@ just need to match it with linker flags Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> + --- purgatory/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purgatory/Makefile b/purgatory/Makefile -index 416e6b9..f00edb4 100644 +index 6673423..a7405ea 100644 --- a/purgatory/Makefile +++ b/purgatory/Makefile -@@ -59,7 +59,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ +@@ -60,7 +60,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ -Iinclude \ -I$(shell $(CC) -print-file-name=include) $(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\ diff --git a/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch b/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch new file mode 100644 index 0000000000..4894f044fc --- /dev/null +++ b/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch @@ -0,0 +1,95 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Michel Lind <salimma@fedoraproject.org> +Date: Tue, 30 Jan 2024 04:14:31 -0600 +Subject: [PATCH] Fix building on x86_64 with binutils 2.41 + +Newer versions of the GNU assembler (observed with binutils 2.41) will +complain about the ".arch i386" in files assembled with "as --64", +with the message "Error: 64bit mode not supported on 'i386'". + +Fix by moving ".arch i386" below the relevant ".code32" directive, so +that the assembler is no longer expecting 64-bit instructions to be used +by the time that the ".arch i386" directive is encountered. + +Based on similar iPXE fix: +https://github.com/ipxe/ipxe/commit/6ca597eee + +Signed-off-by: Michel Lind <michel@michel-slm.name> +Signed-off-by: Simon Horman <horms@kernel.org> + +Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?h=main&id=328de8e00e298f00d7ba6b25dc3950147e9642e6] +Signed-off-by: Yoann Congal <yoann.congal@smile.fr> +--- + purgatory/arch/i386/entry32-16-debug.S | 2 +- + purgatory/arch/i386/entry32-16.S | 2 +- + purgatory/arch/i386/entry32.S | 2 +- + purgatory/arch/i386/setup-x86.S | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/purgatory/arch/i386/entry32-16-debug.S b/purgatory/arch/i386/entry32-16-debug.S +index 5167944..12e1164 100644 +--- a/purgatory/arch/i386/entry32-16-debug.S ++++ b/purgatory/arch/i386/entry32-16-debug.S +@@ -25,10 +25,10 @@ + .globl entry16_debug_pre32 + .globl entry16_debug_first32 + .globl entry16_debug_old_first32 +- .arch i386 + .balign 16 + entry16_debug: + .code32 ++ .arch i386 + /* Compute where I am running at (assumes esp valid) */ + call 1f + 1: popl %ebx +diff --git a/purgatory/arch/i386/entry32-16.S b/purgatory/arch/i386/entry32-16.S +index c051aab..eace095 100644 +--- a/purgatory/arch/i386/entry32-16.S ++++ b/purgatory/arch/i386/entry32-16.S +@@ -20,10 +20,10 @@ + #undef i386 + .text + .globl entry16, entry16_regs +- .arch i386 + .balign 16 + entry16: + .code32 ++ .arch i386 + /* Compute where I am running at (assumes esp valid) */ + call 1f + 1: popl %ebx +diff --git a/purgatory/arch/i386/entry32.S b/purgatory/arch/i386/entry32.S +index f7a494f..8ce9e31 100644 +--- a/purgatory/arch/i386/entry32.S ++++ b/purgatory/arch/i386/entry32.S +@@ -20,10 +20,10 @@ + #undef i386 + + .text +- .arch i386 + .globl entry32, entry32_regs + entry32: + .code32 ++ .arch i386 + + /* Setup a gdt that should that is generally usefully */ + lgdt %cs:gdt +diff --git a/purgatory/arch/i386/setup-x86.S b/purgatory/arch/i386/setup-x86.S +index 201bb2c..a212eed 100644 +--- a/purgatory/arch/i386/setup-x86.S ++++ b/purgatory/arch/i386/setup-x86.S +@@ -21,10 +21,10 @@ + #undef i386 + + .text +- .arch i386 + .globl purgatory_start + purgatory_start: + .code32 ++ .arch i386 + + /* Load a gdt so I know what the segment registers are */ + lgdt %cs:gdt +-- +2.39.2 + diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.24.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb index fdad40ed6a..dec821ea88 100644 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.24.bb +++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb @@ -1,7 +1,6 @@ SUMMARY = "Kexec fast reboot tools" DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel" -AUTHOR = "Eric Biederman" HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/" SECTION = "kernel/userland" LICENSE = "GPL-2.0-only" @@ -18,9 +17,10 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz file://0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \ file://0005-Disable-PIE-during-link.patch \ file://0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch \ + file://Fix-building-on-x86_64-with-binutils-2.41.patch \ " -SRC_URI[sha256sum] = "1ff9137327aeac3b2ab922a71bc6eb4655571a0ff77c071cb92783a9a59d4d26" +SRC_URI[sha256sum] = "f33d2660b3e38d25a127e87097978e0f7a9a73ab5151a29eb80974d169ff6a29" inherit autotools update-rc.d systemd diff --git a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb index 303026ad78..6c0739d64f 100644 --- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb @@ -21,13 +21,17 @@ do_install() { #!/bin/sh # Expected to be called as: depmodwrapper -a KERNEL_VERSION if [ "\$1" != "-a" -o "\$2" != "-b" ]; then - echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2 + echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION [KERNEL_PACKAGE_NAME]" >&2 exit 1 fi +kernelpkgname="kernel" +# If no KERNEL_PACKAGE_NAME, assume "kernel". +[ -z "\$5" ] || kernelpkgname="\$5" + kernelabi="" -if [ -r "${PKGDATA_DIR}/kernel-depmod/kernel-abiversion" ]; then - kernelabi=\$(cat "${PKGDATA_DIR}/kernel-depmod/kernel-abiversion") +if [ -r "${PKGDATA_DIR}/\${kernelpkgname}-depmod/\${kernelpkgname}-abiversion" ]; then + kernelabi=\$(cat "${PKGDATA_DIR}/\${kernelpkgname}-depmod/\${kernelpkgname}-abiversion") fi if [ ! -e "\$3${nonarch_base_libdir}/depmod.d/exclude.conf" ]; then @@ -35,11 +39,11 @@ if [ ! -e "\$3${nonarch_base_libdir}/depmod.d/exclude.conf" ]; then echo "exclude .debug" > "\$3${nonarch_base_libdir}/depmod.d/exclude.conf" fi -if [ ! -r ${PKGDATA_DIR}/kernel-depmod/System.map-\$4 ] || [ "\$kernelabi" != "\$4" ]; then - echo "Unable to read: ${PKGDATA_DIR}/kernel-depmod/System.map-\$4" >&2 +if [ ! -r ${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4 ] || [ "\$kernelabi" != "\$4" ]; then + echo "Unable to read: ${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4" >&2 exec env depmod -C "\$3${nonarch_base_libdir}/depmod.d" "\$1" "\$2" "\$3" "\$4" else - exec env depmod -C "\$3${nonarch_base_libdir}/depmod.d" "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/kernel-depmod/System.map-\$4" "\$4" + exec env depmod -C "\$3${nonarch_base_libdir}/depmod.d" "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4" "\$4" fi EOF chmod +x ${D}${bindir_crossscripts}/depmodwrapper diff --git a/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch b/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch new file mode 100644 index 0000000000..6a7f9ded4f --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch @@ -0,0 +1,136 @@ +From 721ed6040c7aa47070faf6378c433089e178bd43 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sat, 9 Dec 2023 17:35:59 -0800 +Subject: [PATCH] Use portable implementation for basename API + +musl has removed the non-prototype declaration of basename from +string.h [1] which now results in build errors with clang-17+ compiler + +Implement GNU basename behavior using strchr which is portable across libcs + +Fixes +../git/tools/kmod.c:71:19: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] +71 | "Commands:\n", basename(argv[0])); +| ^ + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Upstream-Status: Submitted [https://github.com/kmod-project/kmod/pull/32] + +Suggested-by: Rich Felker + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libkmod/libkmod-config.c | 2 +- + shared/util.c | 4 ++-- + shared/util.h | 7 +++++++ + testsuite/testsuite.c | 2 +- + tools/depmod.c | 2 +- + tools/kmod.c | 4 ++-- + 6 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c +index e83621b..8aa555a 100644 +--- a/libkmod/libkmod-config.c ++++ b/libkmod/libkmod-config.c +@@ -794,7 +794,7 @@ static int conf_files_insert_sorted(struct kmod_ctx *ctx, + bool is_single = false; + + if (name == NULL) { +- name = basename(path); ++ name = gnu_basename(path); + is_single = true; + } + +diff --git a/shared/util.c b/shared/util.c +index e2bab83..0e16670 100644 +--- a/shared/util.c ++++ b/shared/util.c +@@ -172,9 +172,9 @@ char *modname_normalize(const char *modname, char buf[static PATH_MAX], size_t * + + char *path_to_modname(const char *path, char buf[static PATH_MAX], size_t *len) + { +- char *modname; ++ const char *modname; + +- modname = basename(path); ++ modname = gnu_basename(path); + if (modname == NULL || modname[0] == '\0') + return NULL; + +diff --git a/shared/util.h b/shared/util.h +index c4a3916..073dc5a 100644 +--- a/shared/util.h ++++ b/shared/util.h +@@ -5,6 +5,7 @@ + #include <stdbool.h> + #include <stdlib.h> + #include <stdio.h> ++#include <string.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <time.h> +@@ -76,6 +77,12 @@ do { \ + __p->__v = (val); \ + } while(0) + ++static _always_inline_ const char *gnu_basename(const char *s) ++{ ++ const char *p = strrchr(s, '/'); ++ return p ? p+1 : s; ++} ++ + static _always_inline_ unsigned int ALIGN_POWER2(unsigned int u) + { + return 1 << ((sizeof(u) * 8) - __builtin_clz(u - 1)); +diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c +index 318343a..aafc987 100644 +--- a/testsuite/testsuite.c ++++ b/testsuite/testsuite.c +@@ -70,7 +70,7 @@ static void help(void) + + printf("Usage:\n" + "\t%s [options] <test>\n" +- "Options:\n", basename(progname)); ++ "Options:\n", gnu_basename(progname)); + + for (itr = options, itr_short = options_short; + itr->name != NULL; itr++, itr_short++) +diff --git a/tools/depmod.c b/tools/depmod.c +index 43fc354..cfb15b1 100644 +--- a/tools/depmod.c ++++ b/tools/depmod.c +@@ -762,7 +762,7 @@ static int cfg_files_insert_sorted(struct cfg_file ***p_files, size_t *p_n_files + if (name != NULL) + namelen = strlen(name); + else { +- name = basename(dir); ++ name = gnu_basename(dir); + namelen = strlen(name); + dirlen -= namelen + 1; + } +diff --git a/tools/kmod.c b/tools/kmod.c +index 55689c0..df91e5c 100644 +--- a/tools/kmod.c ++++ b/tools/kmod.c +@@ -68,7 +68,7 @@ static int kmod_help(int argc, char *argv[]) + "Options:\n" + "\t-V, --version show version\n" + "\t-h, --help show this help\n\n" +- "Commands:\n", basename(argv[0])); ++ "Commands:\n", gnu_basename(argv[0])); + + for (i = 0; i < ARRAY_SIZE(kmod_cmds); i++) { + if (kmod_cmds[i]->help != NULL) { +@@ -156,7 +156,7 @@ static int handle_kmod_compat_commands(int argc, char *argv[]) + const char *cmd; + size_t i; + +- cmd = basename(argv[0]); ++ cmd = gnu_basename(argv[0]); + + for (i = 0; i < ARRAY_SIZE(kmod_compat_cmds); i++) { + if (streq(kmod_compat_cmds[i]->name, cmd)) +-- +2.43.0 + diff --git a/meta/recipes-kernel/kmod/kmod/0001-depmod-Add-support-for-excluding-a-directory.patch b/meta/recipes-kernel/kmod/kmod/0001-depmod-Add-support-for-excluding-a-directory.patch deleted file mode 100644 index ea0570af2b..0000000000 --- a/meta/recipes-kernel/kmod/kmod/0001-depmod-Add-support-for-excluding-a-directory.patch +++ /dev/null @@ -1,172 +0,0 @@ -From f50e2d67575ac5f256fb853ca9d29aeac92d9a57 Mon Sep 17 00:00:00 2001 -From: Saul Wold <saul.wold@windriver.com> -Date: Thu, 31 Mar 2022 14:56:28 -0700 -Subject: [PATCH] depmod: Add support for excluding a directory - -This adds support to depmod to enable a new exclude directive in -the depmod.d/*.conf configuration file. Currently depmod -already excludes directories named source or build. This change -will allow additional directories like .debug to be excluded also -via a new exclude directive. - -depmod.d/exclude.conf example: -exclude .debug - -Upstream-Status: Accepted - -Signed-off-by: Saul Wold <saul.wold@windriver.com> -[ Fix warnings and make should_exclude_dir() return bool ] -Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> ---- - man/depmod.d.xml | 14 ++++++++++ - tools/depmod.c | 66 +++++++++++++++++++++++++++++++++++++++++++++--- - 2 files changed, 76 insertions(+), 4 deletions(-) - -diff --git a/man/depmod.d.xml b/man/depmod.d.xml -index b315e93..76548e9 100644 ---- a/man/depmod.d.xml -+++ b/man/depmod.d.xml -@@ -131,6 +131,20 @@ - </para> - </listitem> - </varlistentry> -+ <varlistentry> -+ <term>exclude <replaceable>excludedir</replaceable> -+ </term> -+ <listitem> -+ <para> -+ This specifies the trailing directories that will be excluded -+ during the search for kernel modules. -+ </para> -+ <para> -+ The <replaceable>excludedir</replaceable> is the trailing directory -+ to exclude -+ </para> -+ </listitem> -+ </varlistentry> - </variablelist> - </refsect1> - -diff --git a/tools/depmod.c b/tools/depmod.c -index 07a35ba..4117dd1 100644 ---- a/tools/depmod.c -+++ b/tools/depmod.c -@@ -458,6 +458,11 @@ struct cfg_external { - char path[]; - }; - -+struct cfg_exclude { -+ struct cfg_exclude *next; -+ char exclude_dir[]; -+}; -+ - struct cfg { - const char *kversion; - char dirname[PATH_MAX]; -@@ -469,6 +474,7 @@ struct cfg { - struct cfg_override *overrides; - struct cfg_search *searches; - struct cfg_external *externals; -+ struct cfg_exclude *excludes; - }; - - static enum search_type cfg_define_search_type(const char *path) -@@ -580,6 +586,30 @@ static void cfg_external_free(struct cfg_external *ext) - free(ext); - } - -+static int cfg_exclude_add(struct cfg *cfg, const char *path) -+{ -+ struct cfg_exclude *exc; -+ size_t len = strlen(path); -+ -+ exc = malloc(sizeof(struct cfg_exclude) + len + 1); -+ if (exc == NULL) { -+ ERR("exclude add: out of memory\n"); -+ return -ENOMEM; -+ } -+ memcpy(exc->exclude_dir, path, len + 1); -+ -+ DBG("exclude add: %s\n", path); -+ -+ exc->next = cfg->excludes; -+ cfg->excludes = exc; -+ return 0; -+} -+ -+static void cfg_exclude_free(struct cfg_exclude *exc) -+{ -+ free(exc); -+} -+ - static int cfg_kernel_matches(const struct cfg *cfg, const char *pattern) - { - regex_t re; -@@ -657,6 +687,11 @@ static int cfg_file_parse(struct cfg *cfg, const char *filename) - } - - cfg_external_add(cfg, dir); -+ } else if (streq(cmd, "exclude")) { -+ const char *sp; -+ while ((sp = strtok_r(NULL, "\t ", &saveptr)) != NULL) { -+ cfg_exclude_add(cfg, sp); -+ } - } else if (streq(cmd, "include") - || streq(cmd, "make_map_files")) { - INF("%s:%u: command %s not implemented yet\n", -@@ -857,6 +892,12 @@ static void cfg_free(struct cfg *cfg) - cfg->externals = cfg->externals->next; - cfg_external_free(tmp); - } -+ -+ while (cfg->excludes) { -+ struct cfg_exclude *tmp = cfg->excludes; -+ cfg->excludes = cfg->excludes->next; -+ cfg_exclude_free(tmp); -+ } - } - - -@@ -1229,6 +1270,25 @@ add: - return 0; - } - -+static bool should_exclude_dir(const struct cfg *cfg, const char *name) -+{ -+ struct cfg_exclude *exc; -+ -+ if (name[0] == '.' && (name[1] == '\0' || -+ (name[1] == '.' && name[2] == '\0'))) -+ return true; -+ -+ if (streq(name, "build") || streq(name, "source")) -+ return true; -+ -+ for (exc = cfg->excludes; exc != NULL; exc = exc->next) { -+ if (streq(name, exc->exclude_dir)) -+ return true; -+ } -+ -+ return false; -+} -+ - static int depmod_modules_search_dir(struct depmod *depmod, DIR *d, size_t baselen, struct scratchbuf *s_path) - { - struct dirent *de; -@@ -1240,11 +1300,9 @@ static int depmod_modules_search_dir(struct depmod *depmod, DIR *d, size_t basel - size_t namelen; - uint8_t is_dir; - -- if (name[0] == '.' && (name[1] == '\0' || -- (name[1] == '.' && name[2] == '\0'))) -- continue; -- if (streq(name, "build") || streq(name, "source")) -+ if (should_exclude_dir(depmod->cfg, name)) - continue; -+ - namelen = strlen(name); - if (scratchbuf_alloc(s_path, baselen + namelen + 2) < 0) { - err = -ENOMEM; --- -2.31.1 - diff --git a/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch b/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch new file mode 100644 index 0000000000..a34ea466e8 --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch @@ -0,0 +1,33 @@ +From dd59095f70f774f6d1e767010e25b35ef6db4c4b Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Fri, 8 Dec 2023 22:35:45 +0000 +Subject: [PATCH] configure: set docdir in GTK_DOC_CHECK + +By passing --docdir in the GTK_DOC_CHECK arguments (to match +autogen.sh) autoreconf will work out of the box. + +Without this autoreconf fails due to the documentation not being in +./docs, the default location. + +Upstream-Status: Submitted [https://lore.kernel.org/linux-modules/20231208224511.1363066-1-ross.burton@arm.com/T/#u] +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index de01e08..67696c4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -255,7 +255,7 @@ AS_IF([test "x$enable_coverage" = "xyes"], [ + AM_CONDITIONAL([ENABLE_COVERAGE], [test "x$enable_coverage" = "xyes"]) + + m4_ifdef([GTK_DOC_CHECK], [ +-GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat]) ++GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat --docdir libkmod/docs]) + ], [ + AM_CONDITIONAL([ENABLE_GTK_DOC], false)]) + +-- +2.34.1 + diff --git a/meta/recipes-kernel/kmod/kmod/ptest.patch b/meta/recipes-kernel/kmod/kmod/ptest.patch deleted file mode 100644 index 831dbcb909..0000000000 --- a/meta/recipes-kernel/kmod/kmod/ptest.patch +++ /dev/null @@ -1,25 +0,0 @@ -Add 'install-ptest' rule. - -Signed-off-by: Tudor Florea <tudor.florea@enea.com> -Upstream-Status: Pending - -diff -ruN a/Makefile.am b/Makefile.am ---- a/Makefile.am 2013-07-12 17:11:05.278331557 +0200 -+++ b/Makefile.am 2013-07-12 17:14:27.033788016 +0200 -@@ -204,6 +204,16 @@ - - distclean-local: $(DISTCLEAN_LOCAL_HOOKS) - -+install-ptest: -+ @$(MKDIR_P) $(DESTDIR)/testsuite -+ @for file in $(TESTSUITE); do \ -+ install $$file $(DESTDIR)/testsuite; \ -+ done; -+ @sed -e 's/^Makefile/_Makefile/' < Makefile > $(DESTDIR)/Makefile -+ @$(MKDIR_P) $(DESTDIR)/tools -+ @cp $(noinst_SCRIPTS) $(noinst_PROGRAMS) $(DESTDIR)/tools -+ @cp -r testsuite/rootfs testsuite/.libs $(DESTDIR)/testsuite -+ - # ------------------------------------------------------------------------------ - # custom release helpers - # ------------------------------------------------------------------------------ diff --git a/meta/recipes-kernel/kmod/kmod_29.bb b/meta/recipes-kernel/kmod/kmod_31.bb index 32dc49c126..6ae83a7c66 100644 --- a/meta/recipes-kernel/kmod/kmod_29.bb +++ b/meta/recipes-kernel/kmod/kmod_31.bb @@ -15,19 +15,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ " inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives -SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1" +SRCREV = "aff617ea871d0568cc491bd116c0be1e857463bb" -SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master \ +SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master;protocol=https \ file://depmod-search.conf \ file://avoid_parallel_tests.patch \ - file://0001-depmod-Add-support-for-excluding-a-directory.patch \ + file://0001-Use-portable-implementation-for-basename-API.patch \ + file://gtkdocdir.patch \ " S = "${WORKDIR}/git" EXTRA_OECONF += "--enable-tools" -PACKAGECONFIG ??= "zlib xz" +PACKAGECONFIG ??= "zlib xz openssl" PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" PACKAGECONFIG[logging] = " --enable-logging,--disable-logging" PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" @@ -36,8 +37,6 @@ PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz" PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib" PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd" -GTKDOC_DOCDIR = "${S}/libkmod/docs" - PROVIDES += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" RPROVIDES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" RCONFLICTS:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" diff --git a/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch b/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch new file mode 100644 index 0000000000..c723c236c0 --- /dev/null +++ b/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch @@ -0,0 +1,45 @@ +From 7f88c9ba5f27276e844252500a9f0ba2b350b919 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Sun, 27 Aug 2023 20:57:44 +0100 +Subject: [PATCH] Fixes for the Meson build of libtraceevent: + +- Make the plugin directory the same as the Makefiles +- Install the plugins as modules not static and versioned shared libraries + +Upstream-Status: Submitted [https://lore.kernel.org/linux-trace-devel/20240311111140.1789879-1-alex@linutronix.de/T/#u] +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + meson.build | 2 +- + plugins/meson.build | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 40ce38c..1eb7912 100644 +--- a/meson.build ++++ b/meson.build +@@ -25,7 +25,7 @@ htmldir = join_paths(prefixdir, get_option('htmldir')) + libdir = join_paths(prefixdir, get_option('libdir')) + plugindir = get_option('plugindir') + if plugindir == '' +- plugindir = join_paths(libdir, 'libtraceevent/plugins') ++ plugindir = join_paths(libdir, 'traceevent/plugins') + endif + + add_project_arguments( +diff --git a/plugins/meson.build b/plugins/meson.build +index 74ad664..4919be4 100644 +--- a/plugins/meson.build ++++ b/plugins/meson.build +@@ -19,11 +19,10 @@ plugins = [ + + pdeps = [] + foreach plugin : plugins +- pdeps += library( ++ pdeps += shared_module( + plugin.replace('.c', ''), + plugin, + name_prefix: '', +- version: library_version, + dependencies: [libtraceevent_dep], + include_directories: [incdir], + install: true, diff --git a/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb b/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb new file mode 100644 index 0000000000..d4ace54884 --- /dev/null +++ b/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb @@ -0,0 +1,23 @@ +# Copyright (C) 2022 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "API to access the kernel tracefs directory" +HOMEPAGE = "https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/" +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=e6a75371ba4d16749254a51215d13f97 \ + file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd" +SECTION = "libs" + +SRCREV = "6f6d5802f31992e7527a4c32b43a32fda6bf6bdf" +SRC_URI = "git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git;branch=${BPN};protocol=https \ + file://meson.patch" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig + +EXTRA_OEMESON = "-Ddoc=false" + +PACKAGES += "${PN}-plugins" + +FILES:${PN}-plugins += "${libdir}/traceevent/plugins" diff --git a/meta/recipes-kernel/linux-firmware/files/0001-Makefile-replace-mkdir-by-install.patch b/meta/recipes-kernel/linux-firmware/files/0001-Makefile-replace-mkdir-by-install.patch deleted file mode 100644 index b1ac5a16ab..0000000000 --- a/meta/recipes-kernel/linux-firmware/files/0001-Makefile-replace-mkdir-by-install.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 71514e74f35f2b51ca24062573d6d913525b30db Mon Sep 17 00:00:00 2001 -From: Konrad Weihmann <kweihmann@outlook.com> -Date: Mon, 9 May 2022 12:57:57 +0200 -Subject: [PATCH] Makefile: replace mkdir by install - -mkdir -p creates paths that are bound to user's settings and therefore -can lead to different file mode bits of the base paths accross different -machines. -Use install instead, as this tool is not prone to such behavior. - -Signed-off-by: Konrad Weihmann <kweihmann@outlook.com> -Upstream-Status: Submitted [https://lore.kernel.org/linux-firmware/PR2PR09MB310088EA719E6D7CA5C268F1A8C69@PR2PR09MB3100.eurprd09.prod.outlook.com/] ---- - Makefile | 2 +- - carl9170fw/toolchain/Makefile | 4 ++-- - copy-firmware.sh | 6 +++--- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/Makefile b/Makefile -index e1c362f..83a0ec6 100644 ---- a/Makefile -+++ b/Makefile -@@ -9,5 +9,5 @@ check: - @./check_whence.py - - install: -- mkdir -p $(DESTDIR)$(FIRMWAREDIR) -+ install -d $(DESTDIR)$(FIRMWAREDIR) - ./copy-firmware.sh $(DESTDIR)$(FIRMWAREDIR) -diff --git a/carl9170fw/toolchain/Makefile b/carl9170fw/toolchain/Makefile -index 2b25ffe..aaea8e8 100644 ---- a/carl9170fw/toolchain/Makefile -+++ b/carl9170fw/toolchain/Makefile -@@ -46,14 +46,14 @@ src/gcc-$(GCC_VER): src/$(GCC_TAR) src/newlib-$(NEWLIB_VER) - ln -s $(BASEDIR)/src/newlib-$(NEWLIB_VER)/libgloss $@ - - binutils: src/binutils-$(BINUTILS_VER) -- mkdir -p build/binutils -+ install -d build/binutils - cd build/binutils; \ - $(BASEDIR)/$</configure --target=sh-elf --prefix=$(BASEDIR)/inst; \ - $(MAKE) -j3; \ - $(MAKE) install - - gcc: src/gcc-$(GCC_VER) binutils -- mkdir -p build/gcc -+ install -d build/gcc - cd build/gcc; \ - $(BASEDIR)/$</configure --target=sh-elf --prefix=$(BASEDIR)/inst -enable-languages=c --without-pkgversion --with-newlib; \ - $(MAKE) -j3; \ -diff --git a/copy-firmware.sh b/copy-firmware.sh -index 9b46b63..bbacb92 100755 ---- a/copy-firmware.sh -+++ b/copy-firmware.sh -@@ -34,7 +34,7 @@ done - grep '^File:' WHENCE | sed -e's/^File: *//g' -e's/"//g' | while read f; do - test -f "$f" || continue - $verbose "copying file $f" -- mkdir -p $destdir/$(dirname "$f") -+ install -d $destdir/$(dirname "$f") - cp -d "$f" $destdir/"$f" - done - -@@ -42,7 +42,7 @@ grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g' | while read f d; d - if test -L "$f"; then - test -f "$destdir/$f" && continue - $verbose "copying link $f" -- mkdir -p $destdir/$(dirname "$f") -+ install -d $destdir/$(dirname "$f") - cp -d "$f" $destdir/"$f" - - if test "x$d" != "x"; then -@@ -63,7 +63,7 @@ grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g' | while read f d; d - fi - else - $verbose "creating link $f -> $d" -- mkdir -p $destdir/$(dirname "$f") -+ install -d $destdir/$(dirname "$f") - ln -sf "$d" "$destdir/$f" - fi - done --- -2.25.1 - diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20220509.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb index 6e328e5726..ff79bb9b33 100644 --- a/meta/recipes-kernel/linux-firmware/linux-firmware_20220509.bb +++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb @@ -12,12 +12,15 @@ LICENSE = "\ & Firmware-amdgpu \ & Firmware-amd-ucode \ & Firmware-amlogic_vdec \ + & Firmware-amphion_vpu \ & Firmware-atheros_firmware \ & Firmware-atmel \ & Firmware-broadcom_bcm43xx \ & Firmware-ca0132 \ & Firmware-cavium \ & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ & Firmware-cw1200 \ & Firmware-cypress \ & Firmware-dib0700 \ @@ -25,27 +28,33 @@ LICENSE = "\ & Firmware-ene_firmware \ & Firmware-fw_sst_0f28 \ & Firmware-go7007 \ - & Firmware-GPLv2 \ & Firmware-hfi1_firmware \ - & Firmware-i2400m \ & Firmware-i915 \ & Firmware-ibt_firmware \ & Firmware-ice \ + & Firmware-ice_enhanced \ & Firmware-it913x \ & Firmware-iwlwifi_firmware \ & Firmware-IntcSST2 \ & Firmware-kaweth \ + & Firmware-linaro \ & Firmware-Lontium \ & Firmware-Marvell \ + & Firmware-mediatek \ + & Firmware-microchip \ & Firmware-moxa \ & Firmware-myri10ge_firmware \ & Firmware-netronome \ & Firmware-nvidia \ + & Firmware-nxp \ + & Firmware-nxp_mc_firmware \ & Firmware-OLPC \ & Firmware-ath9k-htc \ & Firmware-phanfw \ + & Firmware-powervr \ & Firmware-qat \ & Firmware-qcom \ + & Firmware-qcom-yamato \ & Firmware-qla1280 \ & Firmware-qla2xxx \ & Firmware-qualcommAthos_ar3k \ @@ -54,10 +63,10 @@ LICENSE = "\ & Firmware-radeon \ & Firmware-ralink_a_mediatek_company_firmware \ & Firmware-ralink-firmware \ + & Firmware-rockchip \ & Firmware-rtlwifi_firmware \ & Firmware-imx-sdma_firmware \ & Firmware-siano \ - & Firmware-tda7706-firmware \ & Firmware-ti-connectivity \ & Firmware-ti-keystone \ & Firmware-ueagle-atm4-firmware \ @@ -67,14 +76,16 @@ LICENSE = "\ & Firmware-xc5000 \ & Firmware-xc5000c \ & WHENCE \ + & GPL-2.0-or-later \ " LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ - file://LICENSE.amdgpu;md5=44c1166d052226cb2d6c8d7400090203 \ - file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \ + file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \ + file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \ file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \ + file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \ file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \ file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \ file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \ @@ -82,6 +93,8 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \ file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \ file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \ + file://LICENSE.cirrus;md5=662ea2c1a8888f7d79ed7f27c27472e1 \ + file://LICENCE.cnm;md5=93b67e6bac7f8fec22b96b8ad0a1a9d0 \ file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \ file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \ file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \ @@ -89,29 +102,34 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \ file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \ file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \ - file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \ - file://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \ file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \ file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \ file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \ + file://LICENSE.ice_enhanced;md5=f305cfc31b64f95f774f9edd9df0224d \ file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \ file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \ file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ + file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \ file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \ file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \ file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \ + file://LICENCE.microchip;md5=db753b00305675dfbf120e3f24a47277 \ file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \ file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \ file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \ file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \ file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \ + file://LICENSE.nxp;md5=cca321ca1524d6a1e4fed87486cd82dc \ + file://LICENSE.nxp_mc_firmware;md5=9dc97e4b279b3858cae8879ae2fe5dd7 \ file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \ file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \ file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \ - file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ + file://LICENSE.powervr;md5=83045ed2a2cda15b4eaff682c98c9533 \ + file://LICENCE.qat_firmware;md5=72de83dfd9b87be7685ed099a39fbea4 \ file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \ + file://LICENSE.qcom_yamato;md5=d0de0eeccaf1843a850bf7a6777eec5c \ file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \ file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \ file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \ @@ -120,10 +138,10 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \ file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \ file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \ + file://LICENCE.rockchip;md5=5fd70190c5ed39734baceada8ecced26 \ file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \ file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \ - file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \ file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \ file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \ file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \ @@ -132,8 +150,11 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ - file://WHENCE;md5=d3eb82686904888f8bbbe8d865371404 \ + file://WHENCE;md5=${WHENCE_CHKSUM} \ " +# WHENCE checksum is defined separately to ease overriding it if +# class-devupstream is selected. +WHENCE_CHKSUM = "514da1cd8b363373030f0c16749feb8d" # These are not common licenses, set NO_GENERIC_LICENSE for them # so that the license files will be copied from fetched source @@ -143,6 +164,7 @@ NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu" NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode" NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec" +NO_GENERIC_LICENSE[Firmware-amphion_vpu] = "LICENSE.amphion_vpu" NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware" NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel" NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx" @@ -150,6 +172,8 @@ NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132" NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence" NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium" NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware" +NO_GENERIC_LICENSE[Firmware-cirrus] = "LICENSE.cirrus" +NO_GENERIC_LICENSE[Firmware-cnm] = "LICENCE.cnm" NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200" NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress" NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700" @@ -157,28 +181,33 @@ NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100" NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware" NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28" NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007" -NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2" NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware" -NO_GENERIC_LICENSE[Firmware-i2400m] = "LICENCE.i2400m" NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915" NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware" NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice" +NO_GENERIC_LICENSE[Firmware-ice_enhanced] = "LICENSE.ice_enhanced" NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2" NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x" NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware" NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" +NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro" NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium" NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell" NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek" +NO_GENERIC_LICENSE[Firmware-microchip] = "LICENCE.microchip" NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa" NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware" NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome" NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia" +NO_GENERIC_LICENSE[Firmware-nxp] = "LICENSE.nxp" +NO_GENERIC_LICENSE[Firmware-nxp_mc_firmware] = "LICENSE.nxp_mc_firmware" NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC" NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware" NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw" +NO_GENERIC_LICENSE[Firmware-powervr] = "LICENSE.powervr" NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware" NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom" +NO_GENERIC_LICENSE[Firmware-qcom-yamato] = "LICENSE.qcom_yamato" NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280" NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx" NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k" @@ -187,10 +216,10 @@ NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3" NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon" NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware" NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt" +NO_GENERIC_LICENSE[Firmware-rockchip] = "LICENCE.rockchip" NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt" NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano" NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware" -NO_GENERIC_LICENSE[Firmware-tda7706-firmware] = "LICENCE.tda7706-firmware.txt" NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity" NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone" NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware" @@ -205,36 +234,55 @@ PE = "1" SRC_URI = "\ ${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz \ - file://0001-Makefile-replace-mkdir-by-install.patch \ " -SRC_URI[sha256sum] = "376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e" +BBCLASSEXTEND = "devupstream:target" +SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git;protocol=https;branch=main" +# Pin this to the 20220509 release, override this in local.conf +SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae" + +SRC_URI[sha256sum] = "b2327a54ad1897c828008caf63af5ee15469ba723a5016be58f2b44f07bd4b94" inherit allarch CLEANBROKEN = "1" +# Use PACKAGECONFIG_CONFARGS to set the Makefile target +PACKAGECONFIG ??= "" +# Enabling dedup will turn duplicate firmware files into links +PACKAGECONFIG[deduplicate] = "install,install-nodedup,rdfind-native" + do_compile() { : } do_install() { - oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install - cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/ + oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' ${PACKAGECONFIG_CONFARGS} + cp LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/ } -PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ - ${PN}-mt7601u-license ${PN}-mt7601u \ +PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ + ${PN}-cw1200-license ${PN}-cw1200 \ + ${PN}-ralink-license ${PN}-ralink \ + ${PN}-mt76x-license ${PN}-mt7601u ${PN}-mt7650 ${PN}-mt76x2 \ ${PN}-radeon-license ${PN}-radeon \ + ${PN}-amdgpu-license ${PN}-amdgpu \ ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \ + ${PN}-mediatek-license ${PN}-mediatek \ + ${PN}-microchip-license ${PN}-microchip \ + ${PN}-moxa-license ${PN}-moxa \ ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \ ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \ + ${PN}-ti-keystone-license ${PN}-ti-keystone \ ${PN}-vt6656-license ${PN}-vt6656 \ ${PN}-rs9113 ${PN}-rs9116 \ ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ + ${PN}-rtl8761 \ ${PN}-rtl8168 \ + ${PN}-rtl8822 \ + ${PN}-rtl-nic \ ${PN}-cypress-license \ ${PN}-broadcom-license \ ${PN}-bcm-0bb4-0306 \ @@ -270,8 +318,10 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-bcm4373 \ ${PN}-bcm43xx \ ${PN}-bcm43xx-hdr \ - ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ - ${PN}-gplv2-license ${PN}-carl9170 \ + ${PN}-cirrus-license ${PN}-cirrus \ + ${PN}-cnm-license ${PN}-cnm \ + ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ + ${PN}-carl9170 \ ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \ \ ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \ @@ -288,6 +338,7 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-iwlwifi-7265 \ ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \ ${PN}-iwlwifi-9000 \ + ${PN}-iwlwifi-9260 \ ${PN}-iwlwifi-misc \ ${PN}-ibt-license ${PN}-ibt \ ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \ @@ -296,29 +347,85 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-ibt-misc \ ${PN}-i915-license ${PN}-i915 \ ${PN}-ice-license ${PN}-ice \ + ${PN}-ice-enhanced-license ${PN}-ice-enhanced \ ${PN}-adsp-sst-license ${PN}-adsp-sst \ - ${PN}-bnx2-mips \ + ${PN}-bnx2 \ + ${PN}-bnx2x \ ${PN}-liquidio \ + ${PN}-mellanox \ ${PN}-nvidia-license \ ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ ${PN}-nvidia-gpu \ + ${PN}-nxp-license \ + ${PN}-nxp8987-sdio \ + ${PN}-nxp8997-common \ + ${PN}-nxp8997-pcie \ + ${PN}-nxp8997-sdio \ + ${PN}-nxp9098-common \ + ${PN}-nxp9098-pcie \ + ${PN}-nxp9098-sdio \ + ${PN}-nxpiw416-sdio \ + ${PN}-nxpiw612-sdio \ + ${PN}-nxp-mc-license ${PN}-nxp-mc \ ${PN}-netronome-license ${PN}-netronome \ + ${PN}-olpc-license ${PN}-olpc \ + ${PN}-phanfw-license ${PN}-phanfw \ + ${PN}-powervr-license ${PN}-powervr \ + ${PN}-prestera \ ${PN}-qat ${PN}-qat-license \ - ${PN}-qcom-license \ - ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \ + ${PN}-qed \ + ${PN}-qcom-license ${PN}-qcom-yamato-license \ + ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 ${PN}-qcom-venus-6.0 \ ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \ ${PN}-qcom-adreno-a2xx ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a4xx ${PN}-qcom-adreno-a530 \ - ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 \ - ${PN}-qcom-apq8096-audio ${PN}-qcom-apq8096-modem \ - ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \ - ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \ + ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 ${PN}-qcom-adreno-a702 \ + ${PN}-qcom-apq8016-modem ${PN}-qcom-apq8016-wifi \ + ${PN}-qcom-apq8096-adreno ${PN}-qcom-apq8096-audio ${PN}-qcom-apq8096-modem \ + ${PN}-qcom-qcm2290-adreno ${PN}-qcom-qcm2290-audio ${PN}-qcom-qcm2290-modem ${PN}-qcom-qcm2290-wifi \ + ${PN}-qcom-qrb4210-adreno ${PN}-qcom-qrb4210-audio ${PN}-qcom-qrb4210-compute \ + ${PN}-qcom-qrb4210-modem ${PN}-qcom-qrb4210-wifi \ + ${PN}-qcom-sc8280xp-lenovo-x13s-compat \ + ${PN}-qcom-sc8280xp-lenovo-x13s-audio \ + ${PN}-qcom-sc8280xp-lenovo-x13s-adreno \ + ${PN}-qcom-sc8280xp-lenovo-x13s-compute \ + ${PN}-qcom-sc8280xp-lenovo-x13s-sensors \ + ${PN}-qcom-sdm845-adreno ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \ + ${PN}-qcom-sdm845-thundercomm-db845c-sensors \ + ${PN}-qcom-sm8250-adreno ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \ + ${PN}-qcom-sm8250-thundercomm-rb5-sensors \ + ${PN}-qla2xxx ${PN}-qla2xxx-license \ + ${PN}-rockchip-license ${PN}-rockchip-dptx \ ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \ ${PN}-lt9611uxc ${PN}-lontium-license \ ${PN}-whence-license \ + ${PN}-wl1251-license ${PN}-wl1251 \ + ${PN}-xc4000-license ${PN}-xc4000 \ + ${PN}-xc5000-license ${PN}-xc5000 \ + ${PN}-xc5000c-license ${PN}-xc5000c \ ${PN}-license \ " +# For Amphion VPU +LICENSE:${PN}-amphion-vpu = "Firmware-amphion_vpu" +LICENSE:${PN}-amphion-vpu-license = "Firmware-amphion_vpu" + +FILES:${PN}-amphion-vpu = "${nonarch_base_libdir}/firmware/amphion/*" +FILES:${PN}-amphion-vpu-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.amphion_vpu \ +" +RDEPENDS:${PN}-amphion-vpu += "${PN}-amphion-vpu-license" + +# For cw1200 +LICENSE:${PN}-cw1200 = "Firmware-cw1200" +LICENSE:${PN}-cw1200-license = "Firmware-cw1200" + +FILES:${PN}-cw1200 = "${nonarch_base_libdir}/firmware/wsm_22.bin" +FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200" + +RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license" + # For atheros +LICENSE:${PN}-ar5523 = "Firmware-atheros_firmware" LICENSE:${PN}-ar9170 = "Firmware-atheros_firmware" LICENSE:${PN}-ath3k = "Firmware-atheros_firmware" LICENSE:${PN}-ath6k = "Firmware-atheros_firmware" @@ -326,6 +433,9 @@ LICENSE:${PN}-ath9k = "Firmware-atheros_firmware" LICENSE:${PN}-atheros-license = "Firmware-atheros_firmware" FILES:${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware" +FILES:${PN}-ar5523 = " \ + ${nonarch_base_libdir}/firmware/ar5523.bin \ +" FILES:${PN}-ar9170 = " \ ${nonarch_base_libdir}/firmware/ar9170*.fw \ " @@ -344,20 +454,17 @@ FILES:${PN}-ath9k = " \ ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \ " +RDEPENDS:${PN}-ar5523 += "${PN}-atheros-license" RDEPENDS:${PN}-ar9170 += "${PN}-atheros-license" RDEPENDS:${PN}-ath6k += "${PN}-atheros-license" RDEPENDS:${PN}-ath9k += "${PN}-atheros-license" # For carl9170 -LICENSE:${PN}-carl9170 = "Firmware-GPLv2" -LICENSE:${PN}-gplv2-license = "Firmware-GPLv2" -FILES:${PN}-gplv2-license = "${nonarch_base_libdir}/firmware/GPL-2" FILES:${PN}-carl9170 = " \ ${nonarch_base_libdir}/firmware/carl9170*.fw \ " - -RDEPENDS:${PN}-carl9170 += "${PN}-gplv2-license" +LICENSE:${PN}-carl9170 = "GPL-2.0-or-later" # For QualCommAthos LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware" @@ -401,17 +508,72 @@ FILES:${PN}-ralink = " \ RDEPENDS:${PN}-ralink += "${PN}-ralink-license" # For mediatek MT7601U +LICENSE:${PN}-mt76x-license = "Firmware-ralink_a_mediatek_company_firmware" +FILES:${PN}-mt76x-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" + LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware" -LICENSE:${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware" -FILES:${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" FILES:${PN}-mt7601u = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7601u.bin \ ${nonarch_base_libdir}/firmware/mt7601u.bin \ " +RDEPENDS:${PN}-mt7601u += "${PN}-mt76x-license" + +# For MediaTek Bluetooth USB driver 7650 +LICENSE:${PN}-mt7650 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt7650 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7650.bin \ + ${nonarch_base_libdir}/firmware/mt7650.bin \ +" +RDEPENDS:${PN}-mt7650 += "${PN}-mt76x-license" + +# For MediaTek MT76x2 Wireless MACs +LICENSE:${PN}-mt76x2 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt76x2 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662_rom_patch.bin \ + ${nonarch_base_libdir}/firmware/mt7662_rom_patch.bin \ +" +RDEPENDS:${PN}-mt76x2 += "${PN}-mt76x-license" + +# For MediaTek +LICENSE:${PN}-mediatek = "Firmware-mediatek" +LICENSE:${PN}-mediatek-license = "Firmware-mediatek" + +FILES:${PN}-mediatek = " \ + ${nonarch_base_libdir}/firmware/mediatek/* \ + ${nonarch_base_libdir}/firmware/vpu_d.bin \ + ${nonarch_base_libdir}/firmware/vpu_p.bin \ +" +FILES:${PN}-mediatek-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.mediatek \ +" +RDEPENDS:${PN}-mediatek += "${PN}-mediatek-license" + +# For Microchip +LICENSE:${PN}-microchip = "Firmware-microchip" +LICENSE:${PN}-microchip-license = "Firmware-microchip" + +FILES:${PN}-microchip = "${nonarch_base_libdir}/firmware/microchip/*" +FILES:${PN}-microchip-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.microchip \ +" +RDEPENDS:${PN}-microchip += "${PN}-microchip-license" + +# For MOXA +LICENSE:${PN}-moxa = "Firmware-moxa" +LICENSE:${PN}-moxa-license = "Firmware-moxa" + +FILES:${PN}-moxa = "${nonarch_base_libdir}/firmware/moxa" +FILES:${PN}-moxa-license = "${nonarch_base_libdir}/firmware/LICENCE.moxa" -RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-license" +RDEPENDS:${PN}-moxa += "${PN}-moxa-license" # For radeon + LICENSE:${PN}-radeon = "Firmware-radeon" LICENSE:${PN}-radeon-license = "Firmware-radeon" @@ -422,6 +584,17 @@ FILES:${PN}-radeon = " \ RDEPENDS:${PN}-radeon += "${PN}-radeon-license" +# For amdgpu +LICENSE:${PN}-amdgpu = "Firmware-amdgpu" +LICENSE:${PN}-amdgpu-license = "Firmware-amdgpu" + +FILES:${PN}-amdgpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdgpu" +FILES:${PN}-amdgpu = " \ + ${nonarch_base_libdir}/firmware/amdgpu \ +" + +RDEPENDS:${PN}-amdgpu += "${PN}-amdgpu-license" + # For lontium LICENSE:${PN}-lt9611uxc = "Firmware-Lontium" @@ -519,6 +692,52 @@ FILES:${PN}-netronome = " \ RDEPENDS:${PN}-netronome += "${PN}-netronome-license" +# For NXP +LICENSE:${PN}-nxp8987-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp8997-common = "Firmware-nxp" +LICENSE:${PN}-nxp8997-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp8997-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp9098-common = "Firmware-nxp" +LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp-license = "Firmware-nxp" + +FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*" +FILES:${PN}-nxp8997-common = " \ + ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \ + ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \ +" +ALLOW_EMPTY:${PN}-nxp8997-pcie = "1" +ALLOW_EMPTY:${PN}-nxp8997-sdio = "1" +FILES:${PN}-nxp9098-common = "${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin" +ALLOW_EMPTY:${PN}-nxp9098-pcie = "1" +ALLOW_EMPTY:${PN}-nxp9098-sdio = "1" +FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*" +FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se" +FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp" + +RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license" + +# For nxp-mc +LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware" +LICENSE:${PN}-nxp-mc-license = "Firmware-nxp_mc_firmware" + +FILES:${PN}-nxp-mc= "${nonarch_base_libdir}/firmware/dpaa2/mc/*" +FILES:${PN}-nxp-mc-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.nxp_mc_firmware \ +" +RDEPENDS:${PN}-nxp-mc += "${PN}-nxp-mc-license" + # For Nvidia LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia" LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia" @@ -541,6 +760,46 @@ RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license" RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license" RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license" +# For OLPC +LICENSE:${PN}-olpc = "Firmware-OLPC" +LICENSE:${PN}-olpc-license = "Firmware-OLPC" + +FILES:${PN}-olpc = " \ + ${nonarch_base_libdir}/firmware/libertas/lbtf_sdio.bin \ + ${nonarch_base_libdir}/firmware/lbtf_usb.bin \ + ${nonarch_base_libdir}/firmware/libertas/usb8388_olpc.bin \ +" +FILES:${PN}-olpc-license = "${nonarch_base_libdir}/firmware/LICENCE.OLPC" + +RDEPENDS:${PN}-olpc += "${PN}-olpc-license" + +# For phanfw +LICENSE:${PN}-phanfw = "Firmware-phanfw" +LICENSE:${PN}-phanfw-license = "Firmware-phanfw" + +FILES:${PN}-phanfw = "${nonarch_base_libdir}/firmware/phanfw.bin" +FILES:${PN}-phanfw-license = "${nonarch_base_libdir}/firmware/LICENCE.phanfw" + +RDEPENDS:${PN}-phanfw += "${PN}-phanfw-license" + +# For PowerVR +LICENSE:${PN}-powervr = "Firmware-powervr" +LICENSE:${PN}-powervr-license = "Firmware-powervr" + +FILES:${PN}-powervr = "${nonarch_base_libdir}/firmware/powervr" +FILES:${PN}-powervr-license = "${nonarch_base_libdir}/firmware/LICENSE.powervr" + +RDEPENDS:${PN}-powervr += "${PN}-powervr-license" + +# For qla2xxx +LICENSE:${PN}-qla2xxx = "Firmware-qla2xxx" +LICENSE:${PN}-qla2xxx-license = "Firmware-qla2xxx" + +FILES:${PN}-qla2xxx = "${nonarch_base_libdir}/firmware/ql2*" +FILES:${PN}-qla2xxx-license = "${nonarch_base_libdir}/firmware/LICENCE.qla2xxx" + +RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license" + # For RSI RS911x WiFi LICENSE:${PN}-rs9113 = "WHENCE" LICENSE:${PN}-rs9116 = "WHENCE" @@ -557,8 +816,11 @@ LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl-nic = "WHENCE" LICENSE:${PN}-rtl8168 = "WHENCE" FILES:${PN}-rtl-license = " \ @@ -581,10 +843,22 @@ FILES:${PN}-rtl8723 = " \ " FILES:${PN}-rtl8821 = " \ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin \ +" +FILES:${PN}-rtl8761 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8761*.bin \ " FILES:${PN}-rtl8168 = " \ ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \ " +FILES:${PN}-rtl8822 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8822*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8822*.bin \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8822*.bin \ +" +FILES:${PN}-rtl-nic = " \ + ${nonarch_base_libdir}/firmware/rtl_nic/*.fw \ +" RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license" @@ -592,7 +866,22 @@ RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license" RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license" +RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license" + +# For TI wl1251 +LICENSE:${PN}-wl1251 = "Firmware-wl1251" +LICENSE:${PN}-wl1251-license = "Firmware-wl1251" + +FILES:${PN}-wl1251 = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-fw.bin \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-nvs.bin \ +" +FILES:${PN}-wl1251-license = "${nonarch_base_libdir}/firmware/LICENCE.wl1251" + +RDEPENDS:${PN}-wl1251 += "${PN}-wl1251-license" # For ti-connectivity LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity" @@ -623,6 +912,16 @@ FILES:${PN}-wl18xx = " \ RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" +# For ti-keystone +LICENSE:${PN}-ti-keystone = "Firmware-ti-keystone" +LICENSE:${PN}-ti-keystone-license = "Firmware-ti-keystone" + +FILES:${PN}-ti-keystone = "${nonarch_base_libdir}/firmware/ti-keystone/*" +FILES:${PN}-ti-keystone-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.ti-keystone \ +" +RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license" + # For vt6656 LICENSE:${PN}-vt6656 = "Firmware-via_vt6656" LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656" @@ -634,6 +933,35 @@ FILES:${PN}-vt6656 = " \ RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license" +# For xc4000 +LICENSE:${PN}-xc4000 = "Firmware-xc4000" +LICENSE:${PN}-xc4000-license = "Firmware-xc4000" + +FILES:${PN}-xc4000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc4000-1.4.1.fw" +FILES:${PN}-xc4000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc4000" + +RDEPENDS:${PN}-xc4000 += "${PN}-xc4000-license" + +# For xc5000 +LICENSE:${PN}-xc5000 = "Firmware-xc5000" +LICENSE:${PN}-xc5000-license = "Firmware-xc5000" + +FILES:${PN}-xc5000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc5000-1.6.114.fw" +FILES:${PN}-xc5000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000" + +RDEPENDS:${PN}-xc5000 += "${PN}-xc5000-license" + +# For xc5000c +LICENSE:${PN}-xc5000c = "Firmware-xc5000c" +LICENSE:${PN}-xc5000c-license = "Firmware-xc5000c" + +FILES:${PN}-xc5000c = " \ + ${nonarch_base_libdir}/firmware/dvb-fe-xc5000c-4.1.30.7.fw \ +" +FILES:${PN}-xc5000c-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000c" + +RDEPENDS:${PN}-xc5000c += "${PN}-xc5000c-license" + # For broadcom # for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u @@ -760,6 +1088,7 @@ FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bi ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \ ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.clm_blob \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.clm_blob \ " LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress" @@ -777,18 +1106,46 @@ RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license" LICENSE:${PN}-bcm4373 = "Firmware-cypress" RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license" -# For Broadcom bnx2-mips +# For Broadcom bnx2 # # which is a separate case to the other Broadcom firmwares since its # license is contained in the shared WHENCE file. -LICENSE:${PN}-bnx2-mips = "WHENCE" +LICENSE:${PN}-bnx2 = "WHENCE" LICENSE:${PN}-whence-license = "WHENCE" -FILES:${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw" +FILES:${PN}-bnx2 = " \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-mips*.fw \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-rv2p*.fw \ +" FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE" -RDEPENDS:${PN}-bnx2-mips += "${PN}-whence-license" +RDEPENDS:${PN}-bnx2 += "${PN}-whence-license" +RPROVIDES:${PN}-bnx2 = "${PN}-bnx2-mips" + +LICENSE:${PN}-bnx2x = "WHENCE" + +FILES:${PN}-bnx2x = "${nonarch_base_libdir}/firmware/bnx2x/bnx2x*.fw" + +RDEPENDS:${PN}-bnx2x += "${PN}-whence-license" + +# For cirrus +LICENSE:${PN}-cirrus = "Firmware-cirrus" +LICENSE:${PN}-cirrus-license = "Firmware-cirrus" + +FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*" +FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus" + +RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" + +# For cnm +LICENSE:${PN}-cnm = "Firmware-cnm" +LICENSE:${PN}-cnm-license = "Firmware-cnm" + +FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin" +FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm" + +RDEPENDS:${PN}-cnm += "${PN}-cnm-license" # For imx-sdma LICENSE:${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware" @@ -832,6 +1189,7 @@ LICENSE:${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-9260 = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware" @@ -859,7 +1217,11 @@ FILES:${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.u FILES:${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode" FILES:${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode" FILES:${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode" -FILES:${PN}-iwlwifi-misc = "${nonarch_base_libdir}/firmware/iwlwifi-*.ucode" +FILES:${PN}-iwlwifi-9260 = "${nonarch_base_libdir}/firmware/iwlwifi-9260-*.ucode" +FILES:${PN}-iwlwifi-misc = " \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.ucode \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.pnvm \ +" RDEPENDS:${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license" @@ -883,6 +1245,7 @@ RDEPENDS:${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-9260 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-misc = "${PN}-iwlwifi-license" # -iwlwifi-misc is a "catch all" package that includes all the iwlwifi @@ -938,10 +1301,26 @@ FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915" FILES:${PN}-i915 = "${nonarch_base_libdir}/firmware/i915" RDEPENDS:${PN}-i915 = "${PN}-i915-license" +# For ice-enhanced +LICENSE:${PN}-ice-enhanced = "Firmware-ice_enhanced" +LICENSE:${PN}-ice-enhanced-license = "Firmware-ice_enhanced" + +FILES:${PN}-ice-enhanced = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-comms/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-wireless_edge/* \ +" +FILES:${PN}-ice-enhanced-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.ice_enhanced \ +" +RDEPENDS:${PN}-ice-enhanced = "${PN}-ice-enhanced-license" + LICENSE:${PN}-ice = "Firmware-ice" LICENSE:${PN}-ice-license = "Firmware-ice" FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice" -FILES:${PN}-ice = "${nonarch_base_libdir}/firmware/intel/ice" +FILES:${PN}-ice = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-lag/* \ +" RDEPENDS:${PN}-ice = "${PN}-ice-license" FILES:${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst" @@ -957,52 +1336,165 @@ FILES:${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmwar FILES:${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin" RDEPENDS:${PN}-qat = "${PN}-qat-license" +LICENSE:${PN}-qed = "WHENCE" +FILES:${PN}-qed = "${nonarch_base_libdir}/firmware/qed/*" + # For QCOM VPU/GPU and SDM845 LICENSE:${PN}-qcom-license = "Firmware-qcom" +LICENSE:${PN}-qcom-yamato-license = "Firmware-qcom-yamato" +LICENSE:${PN}-qcom-venus-1.8 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-4.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.4 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-6.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-1.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-2.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a2xx = "Firmware-qcom Firmware-qcom-yamato" +LICENSE:${PN}-qcom-adreno-a3xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a4xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a530 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a630 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a650 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a660 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a702 = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "Firmware-qcom & Firmware-linaro" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "Firmware-qcom" + FILES:${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt" +FILES:${PN}-qcom-yamato-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom_yamato" FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*" FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*" FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*" FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*" +FILES:${PN}-qcom-venus-6.0 = "${nonarch_base_libdir}/firmware/qcom/venus-6.0/*" FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*" FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*" -FILES:${PN}-qcom-adreno-a2xx = "${nonarch_base_libdir}/firmware/qcom/leia_*.fw" +FILES:${PN}-qcom-adreno-a2xx = "${nonarch_base_libdir}/firmware/qcom/leia_*.fw ${nonarch_base_libdir}/firmware/qcom/yamato_*.fw" FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a3*_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw" FILES:${PN}-qcom-adreno-a4xx = "${nonarch_base_libdir}/firmware/qcom/a4*_*.fw" -FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*" -FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*" -FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.* ${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*" +FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.fw*" +FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.*" +FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.*" FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*" +FILES:${PN}-qcom-adreno-a702 = "${nonarch_base_libdir}/firmware/qcom/a702*.*" +FILES:${PN}-qcom-apq8016-modem = "${nonarch_base_libdir}/firmware/qcom/apq8016/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/modem.mbn" +FILES:${PN}-qcom-apq8016-wifi = "${nonarch_base_libdir}/firmware/qcom/apq8016/wcnss.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/WCNSS*" +FILES:${PN}-qcom-apq8096-adreno = "${nonarch_base_libdir}/firmware/qcom/apq8096/a530_zap.mbn ${nonarch_base_libdir}/firmware/qcom/a530_zap.mdt" FILES:${PN}-qcom-apq8096-audio = "${nonarch_base_libdir}/firmware/qcom/apq8096/adsp*.*" FILES:${PN}-qcom-apq8096-modem = "${nonarch_base_libdir}/firmware/qcom/apq8096/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8096/modem*.* ${nonarch_base_libdir}/firmware/qcom/apq8096/wlanmdsp.mbn" +FILES:${PN}-qcom-qcm2290-adreno = "${nonarch_base_libdir}/firmware/qcom/qcm2290/a702_zap.mbn" +FILES:${PN}-qcom-qcm2290-audio = "${nonarch_base_libdir}/firmware/qcom/qcm2290/adsp*.*" +FILES:${PN}-qcom-qcm2290-modem = "${nonarch_base_libdir}/firmware/qcom/qcm2290/modem*.*" +FILES:${PN}-qcom-qcm2290-wifi = "${nonarch_base_libdir}/firmware/qcom/qcm2290/wlanmdsp.mbn" +FILES:${PN}-qcom-qrb4210-adreno = "${nonarch_base_libdir}/firmware/qcom/qrb4210/a610_zap.mbn" +FILES:${PN}-qcom-qrb4210-audio = "${nonarch_base_libdir}/firmware/qcom/qrb4210/adsp*.*" +FILES:${PN}-qcom-qrb4210-compute = "${nonarch_base_libdir}/firmware/qcom/qrb4210/cdsp*.*" +FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*" +FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compat = "${nonarch_base_libdir}/firmware/qcom/LENOVO/21BX" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*adsp*.* ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/battmgr.jsn ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/audioreach-tplg.bin ${nonarch_base_libdir}/firmware/qcom/sc8280xp/SC8280XP-LENOVO-X13S-tplg.bin" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*cdsp*.*" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*slpi*.*" +FILES:${PN}-qcom-sdm845-adreno = "${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*" FILES:${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*" FILES:${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*" -FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn" +FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/notice.txt_wlanmdsp" +FILES:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${nonarch_base_libdir}/firmware/qcom/sdm845/Thundercomm/db845c/slpi*.*" +FILES:${PN}-qcom-sm8250-adreno = "${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*" FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*" FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*" +FILES:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${nonarch_base_libdir}/firmware/qcom/sm8250/Thundercomm/RB5/slpi*.*" + RDEPENDS:${PN}-qcom-venus-1.8 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-venus-4.2 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-venus-5.2 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-venus-5.4 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-venus-6.0 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-vpu-1.0 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license" -RDEPENDS:${PN}-qcom-adreno-a2xx = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a2xx = "${PN}-qcom-license ${PN}-qcom-yamato-license" RDEPENDS:${PN}-qcom-adreno-a3xx = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-adreno-a4xx = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-adreno-a530 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-adreno-a630 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-adreno-a650 = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-adreno-a660 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a702 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8016-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8016-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8096-adreno = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-apq8096-audio = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-apq8096-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-adreno = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-sdm845-audio = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-adreno = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license" RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${PN}-qcom-license" + +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +LICENSE:${PN}-liquidui = "Firmware-cavium_liquidio" FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio" +LICENSE:${PN}-mellanox = "WHENCE" +FILES:${PN}-mellanox = "${nonarch_base_libdir}/firmware/mellanox" + +LICENSE:${PN}-prestera = "Firmware-Marvell" +FILES:${PN}-prestera = "${nonarch_base_libdir}/firmware/mrvl/prestera" +RDEPENDS:${PN}-prestera = "${PN}-marvell-license" + +# For Rockchip +LICENSE:${PN}-rockchip-dptx = "Firmware-rockchip" +FILES:${PN}-rockchip-license = "${nonarch_base_libdir}/firmware/LICENCE.rockchip" +FILES:${PN}-rockchip-dptx = "${nonarch_base_libdir}/firmware/rockchip/dptx.bin" +RDEPENDS:${PN}-rockchip-dptx = "${PN}-rockchip-license" + # For Amlogic VDEC LICENSE:${PN}-amlogic-vdec = "Firmware-amlogic_vdec" FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec" @@ -1021,6 +1513,8 @@ LICENSE:${PN} = "\ & Firmware-ca0132 \ & Firmware-cavium \ & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ & Firmware-cw1200 \ & Firmware-dib0700 \ & Firmware-e100 \ @@ -1028,7 +1522,6 @@ LICENSE:${PN} = "\ & Firmware-fw_sst_0f28 \ & Firmware-go7007 \ & Firmware-hfi1_firmware \ - & Firmware-i2400m \ & Firmware-ibt_firmware \ & Firmware-it913x \ & Firmware-IntcSST2 \ @@ -1036,6 +1529,7 @@ LICENSE:${PN} = "\ & Firmware-moxa \ & Firmware-myri10ge_firmware \ & Firmware-nvidia \ + & Firmware-nxp \ & Firmware-OLPC \ & Firmware-ath9k-htc \ & Firmware-phanfw \ @@ -1049,7 +1543,6 @@ LICENSE:${PN} = "\ & Firmware-ralink-firmware \ & Firmware-imx-sdma_firmware \ & Firmware-siano \ - & Firmware-tda7706-firmware \ & Firmware-ti-connectivity \ & Firmware-ti-keystone \ & Firmware-ueagle-atm4-firmware \ @@ -1082,3 +1575,9 @@ python populate_packages:prepend () { # Firmware files are generally not ran on the CPU, so they can be # allarch despite being architecture specific INSANE_SKIP = "arch" + +# Don't warn about already stripped files +INSANE_SKIP:${PN} = "already-stripped" + +# No need to put firmware into the sysroot +SYSROOT_DIRS_IGNORE += "${nonarch_base_libdir}/firmware" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc index 47f09952de..3a8d32e785 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc @@ -44,6 +44,8 @@ python __anonymous () { d.setVar("HEADER_FETCH_VER", "4.x") elif major == "5": d.setVar("HEADER_FETCH_VER", "5.x") + elif major == "6": + d.setVar("HEADER_FETCH_VER", "6.x") else: d.setVar("HEADER_FETCH_VER", "2.6") } @@ -103,7 +105,7 @@ do_install_armmultilib () { BBCLASSEXTEND = "nativesdk" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" INHIBIT_DEFAULT_DEPS = "1" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch deleted file mode 100644 index 5b7c1b6e21..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch +++ /dev/null @@ -1,42 +0,0 @@ -From dc221138c809125dc1bbff8506c70cb7bd846368 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 12 Sep 2018 17:08:58 -0700 -Subject: [PATCH] include linux/stddef.h in swab.h uapi header - -swab.h uses __always_inline without including the header where it is -defined, this is exposed by musl based distributions where this macro is -not defined by system C library headers unlike glibc where it is defined -in sys/cdefs.h and that header gets pulled in indirectly via - -features.h -> sys/cdefs.h - -and features.h gets pulled in a lot of headers. Therefore it may work in -cases where features.h is includes but not otherwise. - -Adding linux/stddef.h here ensures that __always_inline is always -defined independent of which C library is used in userspace - -Upstream-Status: Submitted [https://lkml.org/lkml/2018/9/13/78] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Cc: Philippe Ombredanne <pombredanne@nexb.com> -Cc: Kate Stewart <kstewart@linuxfoundation.org> -Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Cc: Thomas Gleixner <tglx@linutronix.de> - ---- - include/uapi/linux/swab.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h -index 7272f85d6..2912fe463 100644 ---- a/include/uapi/linux/swab.h -+++ b/include/uapi/linux/swab.h -@@ -3,6 +3,7 @@ - #define _UAPI_LINUX_SWAB_H - - #include <linux/types.h> -+#include <linux/stddef.h> - #include <linux/compiler.h> - #include <asm/bitsperlong.h> - #include <asm/swab.h> diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch deleted file mode 100644 index a5ded602e5..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 694eba7bb974f6b8bd308804cb24350150108b2b Mon Sep 17 00:00:00 2001 -From: He Zhe <zhe.he@windriver.com> -Date: Wed, 21 Nov 2018 15:12:43 +0800 -Subject: [PATCH] scripts: Use fixed input and output files instead of pipe for here-doc - -There was a bug of "as" in binutils that when it checks if the input file and -output file are the same one, it would not check if they are on the same block -device. The check is introduced by the following commit in v2.31. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -67f846b59b32f3d704c601669409c2584383fea9 - -The here-doc usage in this script creates temporary file in /tmp. When we run in -an environment where /tmp has rarely been used, the newly created temporary file -may have a very low inode number. If the inode number was 6 which is the same as -/dev/null, the as would wrongly think the input file and the output file are the -same and report the following error. - -*** Compiler lacks asm-goto support.. Stop. - -One observed case happened in docker where the /tmp could be so rarely used that -very low number inode may be allocated and triggers the error. - -The fix below for the bug only exists on the master branch of binutils so far -and has not been released from upstream. As the convict is introduced since -v2.31, only v2.31 is affected. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -2a50366ded329bfb39d387253450c9d5302c3503 - -When building linux-libc-headers we need to use "as" in binutils which does not -contain the fix for the moment. To work around the error, we create a fixed -temporary file to contain the program being tested. - -This patch also removes ">/dev/null 2>&1" so we will have more direct error -information in case something else wrong happened. - -Upstream-Status: Inappropriate [A work around for binutils v2.31] - -Signed-off-by: He Zhe <zhe.he@windriver.com> ---- - scripts/gcc-goto.sh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh -index 8b980fb22..d256a9438 100755 ---- a/scripts/gcc-goto.sh -+++ b/scripts/gcc-goto.sh -@@ -3,7 +3,7 @@ - # Test for gcc 'asm goto' support - # Copyright (C) 2010, Jason Baron <jbaron@redhat.com> - --cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null -+cat << "END" > ./input - int main(void) - { - #if defined(__arm__) || defined(__aarch64__) -@@ -20,3 +20,6 @@ entry: - return 0; - } - END -+ -+$@ -x c ./input -fno-PIE -c -o ./output -+rm ./input ./output --- -2.19.1 - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.16.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb index c64629d094..d68de6ec7e 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.16.bb +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb @@ -4,17 +4,14 @@ SRC_URI:append:libc-musl = "\ file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \ file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \ file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \ - file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \ " -SRC_URI:append = "\ - file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \ +SRC_URI += "\ file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \ " LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -SRC_URI[md5sum] = "e6680ce7c989a3efe58b51e3f3f0bf93" -SRC_URI[sha256sum] = "027d7e8988bb69ac12ee92406c3be1fe13f990b1ca2249e226225cd1573308bb" +SRC_URI[sha256sum] = "d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0" diff --git a/meta/recipes-kernel/linux/cve-exclusion.inc b/meta/recipes-kernel/linux/cve-exclusion.inc new file mode 100644 index 0000000000..7857633943 --- /dev/null +++ b/meta/recipes-kernel/linux/cve-exclusion.inc @@ -0,0 +1,34 @@ +CVE_STATUS[CVE-1999-0656] = "not-applicable-config: specific to ugidd, part of the old user-mode NFS server" + +CVE_STATUS[CVE-2006-2932] = "not-applicable-platform: specific to RHEL" + +CVE_STATUS[CVE-2007-2764] = "not-applicable-platform: specific to Sun/Brocade SilkWorm switches" + +CVE_STATUS[CVE-2007-4998] = "cpe-incorrect: a historic cp bug, no longer an issue as per https://bugzilla.redhat.com/show_bug.cgi?id=356471#c5" + +CVE_STATUS[CVE-2008-2544] = "disputed: not an issue as per https://bugzilla.redhat.com/show_bug.cgi?id=449089#c22" + +CVE_STATUS[CVE-2010-0298] = "fixed-version: 2.6.34 (1871c6)" + +CVE_STATUS[CVE-2014-2648] = "cpe-incorrect: not Linux" + +CVE_STATUS[CVE-2016-0774] = "ignored: result of incomplete backport" + +CVE_STATUS[CVE-2016-3695] = "not-applicable-platform: specific to RHEL with securelevel patches" + +CVE_STATUS[CVE-2016-3699] = "not-applicable-platform: specific to RHEL with securelevel patches" + +CVE_STATUS[CVE-2017-6264] = "not-applicable-platform: Android specific" + +CVE_STATUS[CVE-2017-1000377] = "not-applicable-platform: GRSecurity specific" + +CVE_STATUS[CVE-2018-6559] = "not-applicable-platform: Issue only affects Ubuntu" + +CVE_STATUS[CVE-2020-11935] = "not-applicable-config: Issue only affects aufs, which is not in linux-yocto" + +# Introduced in version v6.1 7b88bda3761b95856cf97822efe8281c8100067b +# Patched in kernel since v6.2 4a625ceee8a0ab0273534cb6b432ce6b331db5ee +# But, the CVE is disputed: +CVE_STATUS[CVE-2023-23005] = "disputed: There are no realistic cases \ +in which a user can cause the alloc_memory_type error case to be reached. \ +See: https://bugzilla.suse.com/show_bug.cgi?id=1208844#c2" diff --git a/meta/recipes-kernel/linux/cve-exclusion_6.6.inc b/meta/recipes-kernel/linux/cve-exclusion_6.6.inc new file mode 100644 index 0000000000..bb9ba49c48 --- /dev/null +++ b/meta/recipes-kernel/linux/cve-exclusion_6.6.inc @@ -0,0 +1,5384 @@ + +# Auto-generated CVE metadata, DO NOT EDIT BY HAND. +# Generated at 2024-03-28 16:40:04.102652+00:00 for version 6.6.23 + +python check_kernel_cve_status_version() { + this_version = "6.6.23" + kernel_version = d.getVar("LINUX_VERSION") + if kernel_version != this_version: + bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) +} +do_cve_check[prefuncs] += "check_kernel_cve_status_version" + +CVE_STATUS[CVE-2003-1604] = "fixed-version: Fixed from version 2.6.12rc2" + +CVE_STATUS[CVE-2004-0230] = "fixed-version: Fixed from version 3.6rc1" + +# CVE-2005-3660 has no known resolution + +CVE_STATUS[CVE-2006-3635] = "fixed-version: Fixed from version 2.6.26rc5" + +CVE_STATUS[CVE-2006-5331] = "fixed-version: Fixed from version 2.6.19rc3" + +CVE_STATUS[CVE-2006-6128] = "fixed-version: Fixed from version 2.6.19rc2" + +# CVE-2007-3719 has no known resolution + +CVE_STATUS[CVE-2007-4774] = "fixed-version: Fixed from version 2.6.12rc2" + +CVE_STATUS[CVE-2007-6761] = "fixed-version: Fixed from version 2.6.24rc6" + +CVE_STATUS[CVE-2007-6762] = "fixed-version: Fixed from version 2.6.20rc5" + +# CVE-2008-2544 has no known resolution + +# CVE-2008-4609 has no known resolution + +CVE_STATUS[CVE-2008-7316] = "fixed-version: Fixed from version 2.6.25rc1" + +CVE_STATUS[CVE-2009-2692] = "fixed-version: Fixed from version 2.6.31rc6" + +CVE_STATUS[CVE-2010-0008] = "fixed-version: Fixed from version 2.6.23rc9" + +CVE_STATUS[CVE-2010-3432] = "fixed-version: Fixed from version 2.6.36rc5" + +# CVE-2010-4563 has no known resolution + +CVE_STATUS[CVE-2010-4648] = "fixed-version: Fixed from version 2.6.37rc6" + +CVE_STATUS[CVE-2010-5313] = "fixed-version: Fixed from version 2.6.38rc1" + +# CVE-2010-5321 has no known resolution + +CVE_STATUS[CVE-2010-5328] = "fixed-version: Fixed from version 2.6.35rc1" + +CVE_STATUS[CVE-2010-5329] = "fixed-version: Fixed from version 2.6.39rc1" + +CVE_STATUS[CVE-2010-5331] = "fixed-version: Fixed from version 2.6.34rc7" + +CVE_STATUS[CVE-2010-5332] = "fixed-version: Fixed from version 2.6.37rc1" + +CVE_STATUS[CVE-2011-4098] = "fixed-version: Fixed from version 3.2rc1" + +CVE_STATUS[CVE-2011-4131] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2011-4915] = "fixed-version: Fixed from version 3.2rc1" + +# CVE-2011-4916 has no known resolution + +# CVE-2011-4917 has no known resolution + +CVE_STATUS[CVE-2011-5321] = "fixed-version: Fixed from version 3.2rc1" + +CVE_STATUS[CVE-2011-5327] = "fixed-version: Fixed from version 3.1rc1" + +CVE_STATUS[CVE-2012-0957] = "fixed-version: Fixed from version 3.7rc2" + +CVE_STATUS[CVE-2012-2119] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2136] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2137] = "fixed-version: Fixed from version 3.5rc2" + +CVE_STATUS[CVE-2012-2313] = "fixed-version: Fixed from version 3.4rc6" + +CVE_STATUS[CVE-2012-2319] = "fixed-version: Fixed from version 3.4rc6" + +CVE_STATUS[CVE-2012-2372] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2012-2375] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2012-2390] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2669] = "fixed-version: Fixed from version 3.5rc4" + +CVE_STATUS[CVE-2012-2744] = "fixed-version: Fixed from version 2.6.34rc1" + +CVE_STATUS[CVE-2012-2745] = "fixed-version: Fixed from version 3.4rc3" + +CVE_STATUS[CVE-2012-3364] = "fixed-version: Fixed from version 3.5rc6" + +CVE_STATUS[CVE-2012-3375] = "fixed-version: Fixed from version 3.4rc5" + +CVE_STATUS[CVE-2012-3400] = "fixed-version: Fixed from version 3.5rc5" + +CVE_STATUS[CVE-2012-3412] = "fixed-version: Fixed from version 3.6rc2" + +CVE_STATUS[CVE-2012-3430] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-3510] = "fixed-version: Fixed from version 2.6.19rc4" + +CVE_STATUS[CVE-2012-3511] = "fixed-version: Fixed from version 3.5rc6" + +CVE_STATUS[CVE-2012-3520] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-3552] = "fixed-version: Fixed from version 3.0rc1" + +# Skipping CVE-2012-4220, no affected_versions + +# Skipping CVE-2012-4221, no affected_versions + +# Skipping CVE-2012-4222, no affected_versions + +CVE_STATUS[CVE-2012-4398] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2012-4444] = "fixed-version: Fixed from version 2.6.36rc4" + +CVE_STATUS[CVE-2012-4461] = "fixed-version: Fixed from version 3.7rc6" + +CVE_STATUS[CVE-2012-4467] = "fixed-version: Fixed from version 3.6rc5" + +CVE_STATUS[CVE-2012-4508] = "fixed-version: Fixed from version 3.7rc3" + +CVE_STATUS[CVE-2012-4530] = "fixed-version: Fixed from version 3.8rc1" + +# CVE-2012-4542 has no known resolution + +CVE_STATUS[CVE-2012-4565] = "fixed-version: Fixed from version 3.7rc4" + +CVE_STATUS[CVE-2012-5374] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2012-5375] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2012-5517] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6536] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6537] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6538] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6539] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6540] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6541] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6542] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6543] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6544] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6545] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6546] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6547] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6548] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6549] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6638] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2012-6647] = "fixed-version: Fixed from version 3.6rc2" + +CVE_STATUS[CVE-2012-6657] = "fixed-version: Fixed from version 3.6" + +CVE_STATUS[CVE-2012-6689] = "fixed-version: Fixed from version 3.6rc5" + +CVE_STATUS[CVE-2012-6701] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-6703] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2012-6704] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-6712] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2013-0160] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-0190] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0216] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0217] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0228] = "fixed-version: Fixed from version 3.8" + +CVE_STATUS[CVE-2013-0231] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0268] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-0290] = "fixed-version: Fixed from version 3.8" + +CVE_STATUS[CVE-2013-0309] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2013-0310] = "fixed-version: Fixed from version 3.5" + +CVE_STATUS[CVE-2013-0311] = "fixed-version: Fixed from version 3.7rc8" + +CVE_STATUS[CVE-2013-0313] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0343] = "fixed-version: Fixed from version 3.11rc7" + +CVE_STATUS[CVE-2013-0349] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-0871] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0913] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-0914] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1059] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-1763] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-1767] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-1772] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2013-1773] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2013-1774] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-1792] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1796] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1797] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1798] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1819] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-1826] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2013-1827] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2013-1828] = "fixed-version: Fixed from version 3.9rc2" + +CVE_STATUS[CVE-2013-1848] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1858] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1860] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1928] = "fixed-version: Fixed from version 3.7rc3" + +CVE_STATUS[CVE-2013-1929] = "fixed-version: Fixed from version 3.9rc6" + +# Skipping CVE-2013-1935, no affected_versions + +CVE_STATUS[CVE-2013-1943] = "fixed-version: Fixed from version 3.0rc1" + +CVE_STATUS[CVE-2013-1956] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1957] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1958] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1959] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-1979] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2015] = "fixed-version: Fixed from version 3.8rc2" + +CVE_STATUS[CVE-2013-2017] = "fixed-version: Fixed from version 2.6.34" + +CVE_STATUS[CVE-2013-2058] = "fixed-version: Fixed from version 3.8rc4" + +CVE_STATUS[CVE-2013-2094] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2128] = "fixed-version: Fixed from version 2.6.34rc4" + +CVE_STATUS[CVE-2013-2140] = "fixed-version: Fixed from version 3.11rc3" + +CVE_STATUS[CVE-2013-2141] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2146] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2147] = "fixed-version: Fixed from version 3.12rc3" + +CVE_STATUS[CVE-2013-2148] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-2164] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2013-2188, no affected_versions + +CVE_STATUS[CVE-2013-2206] = "fixed-version: Fixed from version 3.9rc4" + +# Skipping CVE-2013-2224, no affected_versions + +CVE_STATUS[CVE-2013-2232] = "fixed-version: Fixed from version 3.10" + +CVE_STATUS[CVE-2013-2234] = "fixed-version: Fixed from version 3.10" + +CVE_STATUS[CVE-2013-2237] = "fixed-version: Fixed from version 3.9rc6" + +# Skipping CVE-2013-2239, no affected_versions + +CVE_STATUS[CVE-2013-2546] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2547] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2548] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2596] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2634] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2635] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2636] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2850] = "fixed-version: Fixed from version 3.10rc4" + +CVE_STATUS[CVE-2013-2851] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-2852] = "fixed-version: Fixed from version 3.10rc6" + +CVE_STATUS[CVE-2013-2888] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2889] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2890] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2891] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2892] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2893] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2894] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2895] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2896] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2897] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2898] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2899] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2929] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-2930] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-3076] = "fixed-version: Fixed from version 3.9" + +CVE_STATUS[CVE-2013-3222] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3223] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3224] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3225] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3226] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3227] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3228] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3229] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3230] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3231] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3232] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3233] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3234] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3235] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3236] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3237] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3301] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3302] = "fixed-version: Fixed from version 3.8rc3" + +CVE_STATUS[CVE-2013-4125] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4127] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4129] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4162] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4163] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4205] = "fixed-version: Fixed from version 3.11rc5" + +CVE_STATUS[CVE-2013-4220] = "fixed-version: Fixed from version 3.10rc4" + +CVE_STATUS[CVE-2013-4247] = "fixed-version: Fixed from version 3.10rc5" + +CVE_STATUS[CVE-2013-4254] = "fixed-version: Fixed from version 3.11rc6" + +CVE_STATUS[CVE-2013-4270] = "fixed-version: Fixed from version 3.12rc4" + +CVE_STATUS[CVE-2013-4299] = "fixed-version: Fixed from version 3.12rc6" + +CVE_STATUS[CVE-2013-4300] = "fixed-version: Fixed from version 3.11" + +CVE_STATUS[CVE-2013-4312] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2013-4343] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-4345] = "fixed-version: Fixed from version 3.13rc2" + +CVE_STATUS[CVE-2013-4348] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-4350] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-4387] = "fixed-version: Fixed from version 3.12rc4" + +CVE_STATUS[CVE-2013-4470] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2013-4483] = "fixed-version: Fixed from version 3.10rc1" + +CVE_STATUS[CVE-2013-4511] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4512] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4513] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4514] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4515] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4516] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4563] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-4579] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2013-4587] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-4588] = "fixed-version: Fixed from version 2.6.33rc4" + +CVE_STATUS[CVE-2013-4591] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2013-4592] = "fixed-version: Fixed from version 3.7rc1" + +# Skipping CVE-2013-4737, no affected_versions + +# Skipping CVE-2013-4738, no affected_versions + +# Skipping CVE-2013-4739, no affected_versions + +CVE_STATUS[CVE-2013-5634] = "fixed-version: Fixed from version 3.10rc5" + +CVE_STATUS[CVE-2013-6282] = "fixed-version: Fixed from version 3.6rc6" + +CVE_STATUS[CVE-2013-6367] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6368] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6376] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6378] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6380] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6381] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6382] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6383] = "fixed-version: Fixed from version 3.12" + +# Skipping CVE-2013-6392, no affected_versions + +CVE_STATUS[CVE-2013-6431] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-6432] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6885] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2013-7026] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7027] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2013-7263] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7264] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7265] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7266] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7267] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7268] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7269] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7270] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7271] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7281] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7339] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2013-7348] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7421] = "fixed-version: Fixed from version 3.19rc1" + +# CVE-2013-7445 has no known resolution + +CVE_STATUS[CVE-2013-7446] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2013-7470] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-0038] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-0049] = "fixed-version: Fixed from version 3.14rc5" + +CVE_STATUS[CVE-2014-0055] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-0069] = "fixed-version: Fixed from version 3.14rc4" + +CVE_STATUS[CVE-2014-0077] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-0100] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-0101] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-0102] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-0131] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-0155] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-0181] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-0196] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-0203] = "fixed-version: Fixed from version 2.6.33rc5" + +CVE_STATUS[CVE-2014-0205] = "fixed-version: Fixed from version 2.6.37rc1" + +CVE_STATUS[CVE-2014-0206] = "fixed-version: Fixed from version 3.16rc3" + +# Skipping CVE-2014-0972, no affected_versions + +CVE_STATUS[CVE-2014-1438] = "fixed-version: Fixed from version 3.13" + +CVE_STATUS[CVE-2014-1444] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-1445] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-1446] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2014-1690] = "fixed-version: Fixed from version 3.13rc8" + +CVE_STATUS[CVE-2014-1737] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-1738] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-1739] = "fixed-version: Fixed from version 3.15rc6" + +CVE_STATUS[CVE-2014-1874] = "fixed-version: Fixed from version 3.14rc2" + +CVE_STATUS[CVE-2014-2038] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-2039] = "fixed-version: Fixed from version 3.14rc3" + +CVE_STATUS[CVE-2014-2309] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-2523] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-2568] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-2580] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2672] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2673] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2678] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2706] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2739] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2851] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-2889] = "fixed-version: Fixed from version 3.2rc7" + +CVE_STATUS[CVE-2014-3122] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-3144] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-3145] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-3153] = "fixed-version: Fixed from version 3.15" + +CVE_STATUS[CVE-2014-3180] = "fixed-version: Fixed from version 3.17rc4" + +CVE_STATUS[CVE-2014-3181] = "fixed-version: Fixed from version 3.17rc3" + +CVE_STATUS[CVE-2014-3182] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3183] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3184] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3185] = "fixed-version: Fixed from version 3.17rc3" + +CVE_STATUS[CVE-2014-3186] = "fixed-version: Fixed from version 3.17rc3" + +# Skipping CVE-2014-3519, no affected_versions + +CVE_STATUS[CVE-2014-3534] = "fixed-version: Fixed from version 3.16rc7" + +CVE_STATUS[CVE-2014-3535] = "fixed-version: Fixed from version 2.6.36rc1" + +CVE_STATUS[CVE-2014-3601] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3610] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3611] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3631] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-3645] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2014-3646] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3647] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3673] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3687] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3688] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3690] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3917] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-3940] = "fixed-version: Fixed from version 3.15" + +CVE_STATUS[CVE-2014-4014] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-4027] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-4157] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-4171] = "fixed-version: Fixed from version 3.16rc3" + +# Skipping CVE-2014-4322, no affected_versions + +# Skipping CVE-2014-4323, no affected_versions + +CVE_STATUS[CVE-2014-4508] = "fixed-version: Fixed from version 3.16rc3" + +CVE_STATUS[CVE-2014-4608] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-4611] = "fixed-version: Fixed from version 3.16rc3" + +CVE_STATUS[CVE-2014-4652] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4653] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4654] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4655] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4656] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4667] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-4699] = "fixed-version: Fixed from version 3.16rc4" + +CVE_STATUS[CVE-2014-4943] = "fixed-version: Fixed from version 3.16rc6" + +CVE_STATUS[CVE-2014-5045] = "fixed-version: Fixed from version 3.16rc7" + +CVE_STATUS[CVE-2014-5077] = "fixed-version: Fixed from version 3.16" + +CVE_STATUS[CVE-2014-5206] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2014-5207] = "fixed-version: Fixed from version 3.17rc1" + +# Skipping CVE-2014-5332, no affected_versions + +CVE_STATUS[CVE-2014-5471] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-5472] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-6410] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6416] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6417] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6418] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-7145] = "fixed-version: Fixed from version 3.17rc2" + +# Skipping CVE-2014-7207, no affected_versions + +CVE_STATUS[CVE-2014-7283] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-7284] = "fixed-version: Fixed from version 3.15rc7" + +CVE_STATUS[CVE-2014-7822] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-7825] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-7826] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-7841] = "fixed-version: Fixed from version 3.18rc5" + +CVE_STATUS[CVE-2014-7842] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-7843] = "fixed-version: Fixed from version 3.18rc5" + +CVE_STATUS[CVE-2014-7970] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-7975] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8086] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-8133] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8134] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8159] = "fixed-version: Fixed from version 4.0rc7" + +CVE_STATUS[CVE-2014-8160] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8171] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2014-8172] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2014-8173] = "fixed-version: Fixed from version 3.13rc5" + +# Skipping CVE-2014-8181, no affected_versions + +CVE_STATUS[CVE-2014-8369] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8480] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8481] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8559] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8709] = "fixed-version: Fixed from version 3.14rc3" + +CVE_STATUS[CVE-2014-8884] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8989] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9090] = "fixed-version: Fixed from version 3.18rc6" + +CVE_STATUS[CVE-2014-9322] = "fixed-version: Fixed from version 3.18rc6" + +CVE_STATUS[CVE-2014-9419] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9420] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9428] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9529] = "fixed-version: Fixed from version 3.19rc4" + +CVE_STATUS[CVE-2014-9584] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9585] = "fixed-version: Fixed from version 3.19rc4" + +CVE_STATUS[CVE-2014-9644] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9683] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9710] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9715] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-9717] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2014-9728] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9729] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9730] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9731] = "fixed-version: Fixed from version 3.19rc3" + +# Skipping CVE-2014-9777, no affected_versions + +# Skipping CVE-2014-9778, no affected_versions + +# Skipping CVE-2014-9779, no affected_versions + +# Skipping CVE-2014-9780, no affected_versions + +# Skipping CVE-2014-9781, no affected_versions + +# Skipping CVE-2014-9782, no affected_versions + +# Skipping CVE-2014-9783, no affected_versions + +# Skipping CVE-2014-9784, no affected_versions + +# Skipping CVE-2014-9785, no affected_versions + +# Skipping CVE-2014-9786, no affected_versions + +# Skipping CVE-2014-9787, no affected_versions + +# Skipping CVE-2014-9788, no affected_versions + +# Skipping CVE-2014-9789, no affected_versions + +CVE_STATUS[CVE-2014-9803] = "fixed-version: Fixed from version 3.16rc1" + +# Skipping CVE-2014-9863, no affected_versions + +# Skipping CVE-2014-9864, no affected_versions + +# Skipping CVE-2014-9865, no affected_versions + +# Skipping CVE-2014-9866, no affected_versions + +# Skipping CVE-2014-9867, no affected_versions + +# Skipping CVE-2014-9868, no affected_versions + +# Skipping CVE-2014-9869, no affected_versions + +CVE_STATUS[CVE-2014-9870] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2014-9871, no affected_versions + +# Skipping CVE-2014-9872, no affected_versions + +# Skipping CVE-2014-9873, no affected_versions + +# Skipping CVE-2014-9874, no affected_versions + +# Skipping CVE-2014-9875, no affected_versions + +# Skipping CVE-2014-9876, no affected_versions + +# Skipping CVE-2014-9877, no affected_versions + +# Skipping CVE-2014-9878, no affected_versions + +# Skipping CVE-2014-9879, no affected_versions + +# Skipping CVE-2014-9880, no affected_versions + +# Skipping CVE-2014-9881, no affected_versions + +# Skipping CVE-2014-9882, no affected_versions + +# Skipping CVE-2014-9883, no affected_versions + +# Skipping CVE-2014-9884, no affected_versions + +# Skipping CVE-2014-9885, no affected_versions + +# Skipping CVE-2014-9886, no affected_versions + +# Skipping CVE-2014-9887, no affected_versions + +CVE_STATUS[CVE-2014-9888] = "fixed-version: Fixed from version 3.13rc1" + +# Skipping CVE-2014-9889, no affected_versions + +# Skipping CVE-2014-9890, no affected_versions + +# Skipping CVE-2014-9891, no affected_versions + +# Skipping CVE-2014-9892, no affected_versions + +# Skipping CVE-2014-9893, no affected_versions + +# Skipping CVE-2014-9894, no affected_versions + +CVE_STATUS[CVE-2014-9895] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2014-9896, no affected_versions + +# Skipping CVE-2014-9897, no affected_versions + +# Skipping CVE-2014-9898, no affected_versions + +# Skipping CVE-2014-9899, no affected_versions + +# Skipping CVE-2014-9900, no affected_versions + +CVE_STATUS[CVE-2014-9903] = "fixed-version: Fixed from version 3.14rc4" + +CVE_STATUS[CVE-2014-9904] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2014-9914] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-9922] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-9940] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2015-0239] = "fixed-version: Fixed from version 3.19rc6" + +CVE_STATUS[CVE-2015-0274] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2015-0275] = "fixed-version: Fixed from version 4.1rc1" + +# Skipping CVE-2015-0777, no affected_versions + +# Skipping CVE-2015-1328, no affected_versions + +CVE_STATUS[CVE-2015-1333] = "fixed-version: Fixed from version 4.2rc5" + +CVE_STATUS[CVE-2015-1339] = "fixed-version: Fixed from version 4.4rc5" + +CVE_STATUS[CVE-2015-1350] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2015-1420] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-1421] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-1465] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-1573] = "fixed-version: Fixed from version 3.19rc5" + +CVE_STATUS[CVE-2015-1593] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-1805] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2015-2041] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-2042] = "fixed-version: Fixed from version 3.19" + +CVE_STATUS[CVE-2015-2150] = "fixed-version: Fixed from version 4.0rc4" + +CVE_STATUS[CVE-2015-2666] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-2672] = "fixed-version: Fixed from version 4.0rc3" + +CVE_STATUS[CVE-2015-2686] = "fixed-version: Fixed from version 4.0rc6" + +CVE_STATUS[CVE-2015-2830] = "fixed-version: Fixed from version 4.0rc3" + +# CVE-2015-2877 has no known resolution + +CVE_STATUS[CVE-2015-2922] = "fixed-version: Fixed from version 4.0rc7" + +CVE_STATUS[CVE-2015-2925] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-3212] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-3214] = "fixed-version: Fixed from version 2.6.33rc8" + +CVE_STATUS[CVE-2015-3288] = "fixed-version: Fixed from version 4.2rc2" + +CVE_STATUS[CVE-2015-3290] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-3291] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-3331] = "fixed-version: Fixed from version 4.0rc5" + +# Skipping CVE-2015-3332, no affected_versions + +CVE_STATUS[CVE-2015-3339] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-3636] = "fixed-version: Fixed from version 4.1rc2" + +CVE_STATUS[CVE-2015-4001] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4002] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4003] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4004] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-4036] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-4167] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-4170] = "fixed-version: Fixed from version 3.13rc5" + +CVE_STATUS[CVE-2015-4176] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4177] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4178] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4692] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-4700] = "fixed-version: Fixed from version 4.1rc6" + +CVE_STATUS[CVE-2015-5156] = "fixed-version: Fixed from version 4.2rc7" + +CVE_STATUS[CVE-2015-5157] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-5257] = "fixed-version: Fixed from version 4.3rc3" + +CVE_STATUS[CVE-2015-5283] = "fixed-version: Fixed from version 4.3rc3" + +CVE_STATUS[CVE-2015-5307] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-5327] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-5364] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-5366] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-5697] = "fixed-version: Fixed from version 4.2rc6" + +CVE_STATUS[CVE-2015-5706] = "fixed-version: Fixed from version 4.1rc3" + +CVE_STATUS[CVE-2015-5707] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-6252] = "fixed-version: Fixed from version 4.2rc5" + +CVE_STATUS[CVE-2015-6526] = "fixed-version: Fixed from version 4.1rc1" + +# CVE-2015-6619 has no known resolution + +# CVE-2015-6646 has no known resolution + +CVE_STATUS[CVE-2015-6937] = "fixed-version: Fixed from version 4.3rc1" + +# Skipping CVE-2015-7312, no affected_versions + +CVE_STATUS[CVE-2015-7509] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2015-7513] = "fixed-version: Fixed from version 4.4rc7" + +CVE_STATUS[CVE-2015-7515] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-7550] = "fixed-version: Fixed from version 4.4rc8" + +# Skipping CVE-2015-7553, no affected_versions + +CVE_STATUS[CVE-2015-7566] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2015-7613] = "fixed-version: Fixed from version 4.3rc4" + +CVE_STATUS[CVE-2015-7799] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7833] = "fixed-version: Fixed from version 4.6rc6" + +# Skipping CVE-2015-7837, no affected_versions + +CVE_STATUS[CVE-2015-7872] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2015-7884] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7885] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7990] = "fixed-version: Fixed from version 4.4rc4" + +# Skipping CVE-2015-8019, no affected_versions + +CVE_STATUS[CVE-2015-8104] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8215] = "fixed-version: Fixed from version 4.0rc3" + +CVE_STATUS[CVE-2015-8324] = "fixed-version: Fixed from version 2.6.34rc1" + +CVE_STATUS[CVE-2015-8374] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8539] = "fixed-version: Fixed from version 4.4rc3" + +CVE_STATUS[CVE-2015-8543] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8550] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8551] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8552] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8553] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8569] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8575] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8660] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2015-8709] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2015-8746] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-8767] = "fixed-version: Fixed from version 4.3rc4" + +CVE_STATUS[CVE-2015-8785] = "fixed-version: Fixed from version 4.4rc5" + +CVE_STATUS[CVE-2015-8787] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8812] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8816] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8830] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-8839] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8844] = "fixed-version: Fixed from version 4.4rc3" + +CVE_STATUS[CVE-2015-8845] = "fixed-version: Fixed from version 4.4rc3" + +# Skipping CVE-2015-8937, no affected_versions + +# Skipping CVE-2015-8938, no affected_versions + +# Skipping CVE-2015-8939, no affected_versions + +# Skipping CVE-2015-8940, no affected_versions + +# Skipping CVE-2015-8941, no affected_versions + +# Skipping CVE-2015-8942, no affected_versions + +# Skipping CVE-2015-8943, no affected_versions + +# Skipping CVE-2015-8944, no affected_versions + +CVE_STATUS[CVE-2015-8950] = "fixed-version: Fixed from version 4.1rc2" + +CVE_STATUS[CVE-2015-8952] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2015-8953] = "fixed-version: Fixed from version 4.3" + +CVE_STATUS[CVE-2015-8955] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-8956] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-8961] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8962] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8963] = "fixed-version: Fixed from version 4.4" + +CVE_STATUS[CVE-2015-8964] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8966] = "fixed-version: Fixed from version 4.4rc8" + +CVE_STATUS[CVE-2015-8967] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-8970] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-9004] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-9016] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-9289] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2016-0617] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-0723] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2016-0728] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-0758] = "fixed-version: Fixed from version 4.6" + +# Skipping CVE-2016-0774, no affected_versions + +CVE_STATUS[CVE-2016-0821] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2016-0823] = "fixed-version: Fixed from version 4.0rc5" + +CVE_STATUS[CVE-2016-10044] = "fixed-version: Fixed from version 4.8rc7" + +CVE_STATUS[CVE-2016-10088] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10147] = "fixed-version: Fixed from version 4.9" + +CVE_STATUS[CVE-2016-10150] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-10153] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10154] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10200] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-10208] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10229] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-10318] = "fixed-version: Fixed from version 4.8rc6" + +CVE_STATUS[CVE-2016-10723] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2016-10741] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10764] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10905] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-10906] = "fixed-version: Fixed from version 4.5rc6" + +CVE_STATUS[CVE-2016-10907] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-1237] = "fixed-version: Fixed from version 4.7rc5" + +CVE_STATUS[CVE-2016-1575] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-1576] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-1583] = "fixed-version: Fixed from version 4.7rc3" + +CVE_STATUS[CVE-2016-2053] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2016-2069] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2070] = "fixed-version: Fixed from version 4.4" + +CVE_STATUS[CVE-2016-2085] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2117] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-2143] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-2184] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2185] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2186] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2187] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-2188] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2016-2383] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2384] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2543] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2544] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2545] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2546] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2547] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2548] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2549] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2550] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2782] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2016-2847] = "fixed-version: Fixed from version 4.5rc1" + +# Skipping CVE-2016-2853, no affected_versions + +# Skipping CVE-2016-2854, no affected_versions + +CVE_STATUS[CVE-2016-3044] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-3070] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2016-3134] = "fixed-version: Fixed from version 4.6rc2" + +CVE_STATUS[CVE-2016-3135] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3136] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3137] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3138] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3139] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2016-3140] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3156] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3157] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3672] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3689] = "fixed-version: Fixed from version 4.6rc1" + +# Skipping CVE-2016-3695, no affected_versions + +# Skipping CVE-2016-3699, no affected_versions + +# Skipping CVE-2016-3707, no affected_versions + +CVE_STATUS[CVE-2016-3713] = "fixed-version: Fixed from version 4.7rc1" + +# CVE-2016-3775 has no known resolution + +# CVE-2016-3802 has no known resolution + +# CVE-2016-3803 has no known resolution + +CVE_STATUS[CVE-2016-3841] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2016-3857] = "fixed-version: Fixed from version 4.8rc2" + +CVE_STATUS[CVE-2016-3951] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-3955] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3961] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-4440] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4470] = "fixed-version: Fixed from version 4.7rc4" + +CVE_STATUS[CVE-2016-4482] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4485] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4486] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4557] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4558] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-4565] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4568] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4569] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4578] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4580] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4581] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-4794] = "fixed-version: Fixed from version 4.7rc4" + +CVE_STATUS[CVE-2016-4805] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-4913] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4951] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4997] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4998] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-5195] = "fixed-version: Fixed from version 4.9rc2" + +CVE_STATUS[CVE-2016-5243] = "fixed-version: Fixed from version 4.7rc3" + +CVE_STATUS[CVE-2016-5244] = "fixed-version: Fixed from version 4.7rc3" + +# Skipping CVE-2016-5340, no affected_versions + +# Skipping CVE-2016-5342, no affected_versions + +# Skipping CVE-2016-5343, no affected_versions + +# Skipping CVE-2016-5344, no affected_versions + +CVE_STATUS[CVE-2016-5400] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-5412] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-5696] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-5728] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-5828] = "fixed-version: Fixed from version 4.7rc6" + +CVE_STATUS[CVE-2016-5829] = "fixed-version: Fixed from version 4.7rc5" + +# CVE-2016-5870 has no known resolution + +CVE_STATUS[CVE-2016-6130] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-6136] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-6156] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-6162] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-6187] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-6197] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-6198] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-6213] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-6327] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-6480] = "fixed-version: Fixed from version 4.8rc3" + +CVE_STATUS[CVE-2016-6516] = "fixed-version: Fixed from version 4.8rc1" + +# Skipping CVE-2016-6753, no affected_versions + +CVE_STATUS[CVE-2016-6786] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2016-6787] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2016-6828] = "fixed-version: Fixed from version 4.8rc5" + +CVE_STATUS[CVE-2016-7039] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-7042] = "fixed-version: Fixed from version 4.9rc3" + +CVE_STATUS[CVE-2016-7097] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-7117] = "fixed-version: Fixed from version 4.6rc1" + +# Skipping CVE-2016-7118, no affected_versions + +CVE_STATUS[CVE-2016-7425] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-7910] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-7911] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-7912] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-7913] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-7914] = "fixed-version: Fixed from version 4.6rc4" + +CVE_STATUS[CVE-2016-7915] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-7916] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-7917] = "fixed-version: Fixed from version 4.5rc6" + +CVE_STATUS[CVE-2016-8399] = "fixed-version: Fixed from version 4.9" + +# Skipping CVE-2016-8401, no affected_versions + +# Skipping CVE-2016-8402, no affected_versions + +# Skipping CVE-2016-8403, no affected_versions + +# Skipping CVE-2016-8404, no affected_versions + +CVE_STATUS[CVE-2016-8405] = "fixed-version: Fixed from version 4.10rc6" + +# Skipping CVE-2016-8406, no affected_versions + +# Skipping CVE-2016-8407, no affected_versions + +CVE_STATUS[CVE-2016-8630] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-8632] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-8633] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-8636] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2016-8645] = "fixed-version: Fixed from version 4.9rc6" + +CVE_STATUS[CVE-2016-8646] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2016-8650] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-8655] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-8658] = "fixed-version: Fixed from version 4.8rc7" + +# CVE-2016-8660 has no known resolution + +CVE_STATUS[CVE-2016-8666] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9083] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9084] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9120] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9178] = "fixed-version: Fixed from version 4.8rc7" + +CVE_STATUS[CVE-2016-9191] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2016-9313] = "fixed-version: Fixed from version 4.9rc3" + +CVE_STATUS[CVE-2016-9555] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9576] = "fixed-version: Fixed from version 4.9" + +CVE_STATUS[CVE-2016-9588] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-9604] = "fixed-version: Fixed from version 4.11rc8" + +# Skipping CVE-2016-9644, no affected_versions + +CVE_STATUS[CVE-2016-9685] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9754] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9755] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-9756] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-9777] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-9793] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-9794] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9806] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9919] = "fixed-version: Fixed from version 4.9rc8" + +# Skipping CVE-2017-0403, no affected_versions + +# Skipping CVE-2017-0404, no affected_versions + +# Skipping CVE-2017-0426, no affected_versions + +# Skipping CVE-2017-0427, no affected_versions + +# CVE-2017-0507 has no known resolution + +# CVE-2017-0508 has no known resolution + +# Skipping CVE-2017-0510, no affected_versions + +# Skipping CVE-2017-0528, no affected_versions + +# Skipping CVE-2017-0537, no affected_versions + +# CVE-2017-0564 has no known resolution + +CVE_STATUS[CVE-2017-0605] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-0627] = "fixed-version: Fixed from version 4.14rc1" + +# CVE-2017-0630 has no known resolution + +# CVE-2017-0749 has no known resolution + +CVE_STATUS[CVE-2017-0750] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2017-0786] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-0861] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-1000] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000111] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000112] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000251] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-1000252] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-1000253] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2017-1000255] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-1000363] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-1000364] = "fixed-version: Fixed from version 4.12rc6" + +CVE_STATUS[CVE-2017-1000365] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-1000370] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-1000371] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-1000379] = "fixed-version: Fixed from version 4.12rc6" + +CVE_STATUS[CVE-2017-1000380] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-1000405] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-1000407] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-1000410] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-10661] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-10662] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-10663] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-10810] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-10911] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-11089] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-11176] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-11472] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-11473] = "fixed-version: Fixed from version 4.13rc2" + +CVE_STATUS[CVE-2017-11600] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-12134] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-12146] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-12153] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2017-12154] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-12168] = "fixed-version: Fixed from version 4.9rc6" + +CVE_STATUS[CVE-2017-12188] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-12190] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-12192] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-12193] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-12762] = "fixed-version: Fixed from version 4.13rc4" + +CVE_STATUS[CVE-2017-13080] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-13166] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-13167] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2017-13168] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2017-13215] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2017-13216] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-13220] = "fixed-version: Fixed from version 3.19rc3" + +# CVE-2017-13221 has no known resolution + +# CVE-2017-13222 has no known resolution + +CVE_STATUS[CVE-2017-13305] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-13686] = "fixed-version: Fixed from version 4.13rc7" + +# CVE-2017-13693 has no known resolution + +# CVE-2017-13694 has no known resolution + +CVE_STATUS[CVE-2017-13695] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2017-13715] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2017-14051] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14106] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-14140] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-14156] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14340] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14489] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-14497] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-14954] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-14991] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2017-15102] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2017-15115] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-15116] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2017-15121] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2017-15126] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-15127] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-15128] = "fixed-version: Fixed from version 4.14rc8" + +CVE_STATUS[CVE-2017-15129] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-15265] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-15274] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-15299] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-15306] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-15537] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-15649] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-15868] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2017-15951] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16525] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16526] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16527] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16528] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-16529] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16530] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16531] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16532] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16533] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16534] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16535] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16536] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16537] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16538] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-16643] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-16644] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-16645] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16646] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16647] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16648] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16649] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16650] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16911] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16912] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16913] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16914] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16939] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-16994] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16995] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-16996] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17052] = "fixed-version: Fixed from version 4.13rc7" + +CVE_STATUS[CVE-2017-17053] = "fixed-version: Fixed from version 4.13rc7" + +CVE_STATUS[CVE-2017-17448] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17449] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17450] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17558] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17712] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17741] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17805] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17806] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17807] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-17852] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17853] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17854] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17855] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17856] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17857] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17862] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-17863] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17864] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17975] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2017-18017] = "fixed-version: Fixed from version 4.11rc7" + +CVE_STATUS[CVE-2017-18075] = "fixed-version: Fixed from version 4.15rc7" + +CVE_STATUS[CVE-2017-18079] = "fixed-version: Fixed from version 4.13rc1" + +# CVE-2017-18169 has no known resolution + +CVE_STATUS[CVE-2017-18174] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2017-18193] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18200] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-18202] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-18203] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18204] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18208] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-18216] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18218] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18221] = "fixed-version: Fixed from version 4.12rc4" + +CVE_STATUS[CVE-2017-18222] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-18224] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18232] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-18241] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18249] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-18255] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18257] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18261] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-18270] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-18344] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-18360] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-18379] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-18509] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18549] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18550] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18551] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2017-18552] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18595] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2017-2583] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-2584] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-2596] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-2618] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-2634] = "fixed-version: Fixed from version 2.6.25rc1" + +CVE_STATUS[CVE-2017-2636] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-2647] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2017-2671] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-5123] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-5546] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5547] = "fixed-version: Fixed from version 4.10rc5" + +CVE_STATUS[CVE-2017-5548] = "fixed-version: Fixed from version 4.10rc5" + +CVE_STATUS[CVE-2017-5549] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5550] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5551] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5576] = "fixed-version: Fixed from version 4.10rc6" + +CVE_STATUS[CVE-2017-5577] = "fixed-version: Fixed from version 4.10rc6" + +CVE_STATUS[CVE-2017-5669] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-5715] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-5753] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-5754] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-5897] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-5967] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-5970] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-5972] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2017-5986] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-6001] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-6074] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6214] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-6345] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6346] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6347] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-6348] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6353] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-6874] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-6951] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2017-7184] = "fixed-version: Fixed from version 4.11rc5" + +CVE_STATUS[CVE-2017-7187] = "fixed-version: Fixed from version 4.11rc5" + +CVE_STATUS[CVE-2017-7261] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7273] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-7277] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-7294] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7308] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7346] = "fixed-version: Fixed from version 4.12rc5" + +# CVE-2017-7369 has no known resolution + +CVE_STATUS[CVE-2017-7374] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-7472] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-7477] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7482] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-7487] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-7495] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2017-7518] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-7533] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-7541] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-7542] = "fixed-version: Fixed from version 4.13rc2" + +CVE_STATUS[CVE-2017-7558] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-7616] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7618] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-7645] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7889] = "fixed-version: Fixed from version 4.11rc7" + +CVE_STATUS[CVE-2017-7895] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7979] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-8061] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-8062] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-8063] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8064] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8065] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8066] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8067] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8068] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8069] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8070] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8071] = "fixed-version: Fixed from version 4.10rc7" + +CVE_STATUS[CVE-2017-8072] = "fixed-version: Fixed from version 4.10rc7" + +CVE_STATUS[CVE-2017-8106] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2017-8240] = "fixed-version: Fixed from version 3.19rc6" + +# CVE-2017-8242 has no known resolution + +# CVE-2017-8244 has no known resolution + +# CVE-2017-8245 has no known resolution + +# CVE-2017-8246 has no known resolution + +CVE_STATUS[CVE-2017-8797] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-8824] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-8831] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-8890] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-8924] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-8925] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-9059] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-9074] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9075] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9076] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9077] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9150] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-9211] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-9242] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-9605] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-9725] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2017-9984] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-9985] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-9986] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2018-1000004] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-1000026] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-1000028] = "fixed-version: Fixed from version 4.15" + +CVE_STATUS[CVE-2018-1000199] = "fixed-version: Fixed from version 4.16" + +CVE_STATUS[CVE-2018-1000200] = "fixed-version: Fixed from version 4.17rc5" + +CVE_STATUS[CVE-2018-1000204] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-10021] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-10074] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-10087] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-10124] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-10322] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-10323] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-1065] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-1066] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-10675] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2018-1068] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-10840] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-10853] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-1087] = "fixed-version: Fixed from version 4.16rc7" + +# CVE-2018-10872 has no known resolution + +CVE_STATUS[CVE-2018-10876] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10877] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10878] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10879] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10880] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10881] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10882] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10883] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10901] = "fixed-version: Fixed from version 2.6.36rc1" + +CVE_STATUS[CVE-2018-10902] = "fixed-version: Fixed from version 4.18rc6" + +CVE_STATUS[CVE-2018-1091] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2018-1092] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-1093] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-10938] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2018-1094] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-10940] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-1095] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-1108] = "fixed-version: Fixed from version 4.17rc2" + +CVE_STATUS[CVE-2018-1118] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-1120] = "fixed-version: Fixed from version 4.17rc6" + +# CVE-2018-1121 has no known resolution + +CVE_STATUS[CVE-2018-11232] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-1128] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-1129] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-1130] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-11412] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-11506] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-11508] = "fixed-version: Fixed from version 4.17rc5" + +# CVE-2018-11987 has no known resolution + +CVE_STATUS[CVE-2018-12126] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12127] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12130] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12207] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2018-12232] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-12233] = "fixed-version: Fixed from version 4.18rc2" + +CVE_STATUS[CVE-2018-12633] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-12714] = "fixed-version: Fixed from version 4.18rc2" + +CVE_STATUS[CVE-2018-12896] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-12904] = "fixed-version: Fixed from version 4.18rc1" + +# CVE-2018-12928 has no known resolution + +# CVE-2018-12929 has no known resolution + +# CVE-2018-12930 has no known resolution + +# CVE-2018-12931 has no known resolution + +CVE_STATUS[CVE-2018-13053] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13093] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-13094] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-13095] = "fixed-version: Fixed from version 4.18rc3" + +CVE_STATUS[CVE-2018-13096] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13097] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13098] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13099] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13100] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13405] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-13406] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-14609] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14610] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14611] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14612] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14613] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14614] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14615] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14616] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14617] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14619] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2018-14625] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-14633] = "fixed-version: Fixed from version 4.19rc6" + +CVE_STATUS[CVE-2018-14634] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-14641] = "fixed-version: Fixed from version 4.19rc4" + +CVE_STATUS[CVE-2018-14646] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-14656] = "fixed-version: Fixed from version 4.19rc2" + +CVE_STATUS[CVE-2018-14678] = "fixed-version: Fixed from version 4.18rc8" + +CVE_STATUS[CVE-2018-14734] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-15471] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-15572] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-15594] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-16276] = "fixed-version: Fixed from version 4.18rc5" + +CVE_STATUS[CVE-2018-16597] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2018-16658] = "fixed-version: Fixed from version 4.19rc2" + +CVE_STATUS[CVE-2018-16862] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-16871] = "fixed-version: Fixed from version 4.20rc3" + +CVE_STATUS[CVE-2018-16880] = "fixed-version: Fixed from version 5.0rc5" + +CVE_STATUS[CVE-2018-16882] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2018-16884] = "fixed-version: Fixed from version 5.0rc1" + +# CVE-2018-16885 has no known resolution + +CVE_STATUS[CVE-2018-17182] = "fixed-version: Fixed from version 4.19rc4" + +CVE_STATUS[CVE-2018-17972] = "fixed-version: Fixed from version 4.19rc7" + +# CVE-2018-17977 has no known resolution + +CVE_STATUS[CVE-2018-18021] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-18281] = "fixed-version: Fixed from version 4.19" + +CVE_STATUS[CVE-2018-18386] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2018-18397] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-18445] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-18559] = "fixed-version: Fixed from version 4.15rc2" + +# CVE-2018-18653 has no known resolution + +CVE_STATUS[CVE-2018-18690] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-18710] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-18955] = "fixed-version: Fixed from version 4.20rc2" + +CVE_STATUS[CVE-2018-19406] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-19407] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-19824] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-19854] = "fixed-version: Fixed from version 4.20rc3" + +CVE_STATUS[CVE-2018-19985] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2018-20169] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-20449] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-20509] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2018-20510] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-20511] = "fixed-version: Fixed from version 4.19rc5" + +CVE_STATUS[CVE-2018-20669] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2018-20784] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2018-20836] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-20854] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-20855] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-20856] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-20961] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-20976] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-21008] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-25015] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-25020] = "fixed-version: Fixed from version 4.17rc7" + +# CVE-2018-3574 has no known resolution + +CVE_STATUS[CVE-2018-3620] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-3639] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-3646] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-3665] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2018-3693] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-5332] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5333] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5344] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5390] = "fixed-version: Fixed from version 4.18rc7" + +CVE_STATUS[CVE-2018-5391] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-5703] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-5750] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-5803] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-5814] = "fixed-version: Fixed from version 4.17rc6" + +CVE_STATUS[CVE-2018-5848] = "fixed-version: Fixed from version 4.16rc1" + +# Skipping CVE-2018-5856, no affected_versions + +CVE_STATUS[CVE-2018-5873] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2018-5953] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-5995] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-6412] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-6554] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-6555] = "fixed-version: Fixed from version 4.17rc1" + +# CVE-2018-6559 has no known resolution + +CVE_STATUS[CVE-2018-6927] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-7191] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2018-7273] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-7480] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-7492] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2018-7566] = "fixed-version: Fixed from version 4.16rc2" + +CVE_STATUS[CVE-2018-7740] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-7754] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-7755] = "fixed-version: Fixed from version 4.19rc5" + +CVE_STATUS[CVE-2018-7757] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-7995] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-8043] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-8087] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-8781] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-8822] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-8897] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-9363] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-9385] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-9415] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-9422] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2018-9465] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2018-9516] = "fixed-version: Fixed from version 4.18rc5" + +CVE_STATUS[CVE-2018-9517] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2018-9518] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-9568] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2019-0136] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-0145] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0146] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0147] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0148] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0149] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-0154] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-0155] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-10124] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-10125] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-10126] = "fixed-version: Fixed from version 5.2rc6" + +# CVE-2019-10140 has no known resolution + +CVE_STATUS[CVE-2019-10142] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-10207] = "fixed-version: Fixed from version 5.3rc3" + +CVE_STATUS[CVE-2019-10220] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-10638] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-10639] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11085] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-11091] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-11135] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-11190] = "fixed-version: Fixed from version 4.8rc5" + +CVE_STATUS[CVE-2019-11191] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-1125] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-11477] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11478] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11479] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11486] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11487] = "fixed-version: Fixed from version 5.1rc5" + +CVE_STATUS[CVE-2019-11599] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-11683] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-11810] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-11811] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-11815] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11833] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-11884] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-12378] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12379] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12380] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12381] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12382] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12454] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12455] = "fixed-version: Fixed from version 5.3rc1" + +# CVE-2019-12456 has no known resolution + +CVE_STATUS[CVE-2019-12614] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12615] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-12817] = "fixed-version: Fixed from version 5.2rc7" + +CVE_STATUS[CVE-2019-12818] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-12819] = "fixed-version: Fixed from version 5.0rc8" + +CVE_STATUS[CVE-2019-12881] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2019-12984] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-13233] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-13272] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-13631] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-13648] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-14283] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-14284] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-14615] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2019-14763] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2019-14814] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14815] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14816] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14821] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-14835] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14895] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-14896] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2019-14897] = "fixed-version: Fixed from version 5.5" + +# CVE-2019-14898 has no known resolution + +CVE_STATUS[CVE-2019-14901] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-15030] = "fixed-version: Fixed from version 5.3rc8" + +CVE_STATUS[CVE-2019-15031] = "fixed-version: Fixed from version 5.3rc8" + +CVE_STATUS[CVE-2019-15090] = "fixed-version: Fixed from version 5.2rc2" + +CVE_STATUS[CVE-2019-15098] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-15099] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-15117] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-15118] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-15211] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15212] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15213] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15214] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15215] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15216] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-15217] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15218] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15219] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15220] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15221] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-15222] = "fixed-version: Fixed from version 5.3rc3" + +CVE_STATUS[CVE-2019-15223] = "fixed-version: Fixed from version 5.2rc3" + +# CVE-2019-15239 has no known resolution + +# CVE-2019-15290 has no known resolution + +CVE_STATUS[CVE-2019-15291] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-15292] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15504] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-15505] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-15538] = "fixed-version: Fixed from version 5.3rc6" + +CVE_STATUS[CVE-2019-15666] = "fixed-version: Fixed from version 5.1" + +# CVE-2019-15791 has no known resolution + +# CVE-2019-15792 has no known resolution + +# CVE-2019-15793 has no known resolution + +CVE_STATUS[CVE-2019-15794] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2019-15807] = "fixed-version: Fixed from version 5.2rc3" + +# CVE-2019-15902 has no known resolution + +CVE_STATUS[CVE-2019-15916] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15917] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15918] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15919] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15920] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15921] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-15922] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15923] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15924] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15925] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15926] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15927] = "fixed-version: Fixed from version 5.0rc2" + +# CVE-2019-16089 has no known resolution + +CVE_STATUS[CVE-2019-16229] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16230] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16231] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-16232] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16233] = "fixed-version: Fixed from version 5.4rc5" + +CVE_STATUS[CVE-2019-16234] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-16413] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-16714] = "fixed-version: Fixed from version 5.3rc7" + +CVE_STATUS[CVE-2019-16746] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-16921] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2019-16994] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-16995] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-17052] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17053] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17054] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17055] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17056] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17075] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-17133] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-17351] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-17666] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18198] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-18282] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18660] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18675] = "fixed-version: Fixed from version 4.17rc5" + +# CVE-2019-18680 has no known resolution + +CVE_STATUS[CVE-2019-18683] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18786] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18805] = "fixed-version: Fixed from version 5.1rc7" + +CVE_STATUS[CVE-2019-18806] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18807] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18808] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18809] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18810] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18811] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-18812] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-18813] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18814] = "fixed-version: Fixed from version 5.7rc7" + +CVE_STATUS[CVE-2019-18885] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-19036] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19037] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-19039] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2019-19043] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19044] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19045] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19046] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19047] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19048] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19049] = "fixed-version: Fixed from version 5.4rc5" + +CVE_STATUS[CVE-2019-19050] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19051] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19052] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19053] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19054] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19055] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19056] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19057] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19058] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19059] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19060] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19061] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19062] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19063] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19064] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19065] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19066] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19067] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19068] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19069] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19070] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19071] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19072] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19073] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19074] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19075] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19076] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19077] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19078] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19079] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-19080] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19081] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19082] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19083] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19227] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-19241] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19252] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19318] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19319] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19332] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19338] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19377] = "fixed-version: Fixed from version 5.7rc1" + +# CVE-2019-19378 has no known resolution + +CVE_STATUS[CVE-2019-19447] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19448] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2019-19449] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2019-19462] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2019-19523] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19524] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-19525] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19526] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19527] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19528] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19529] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19530] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-19531] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19532] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19533] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19534] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19535] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19536] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19537] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-19543] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19602] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19767] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19768] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2019-19769] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2019-19770] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2019-19807] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19813] = "fixed-version: Fixed from version 5.2rc1" + +# CVE-2019-19814 has no known resolution + +CVE_STATUS[CVE-2019-19815] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-19816] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19922] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19927] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-19947] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-19965] = "fixed-version: Fixed from version 5.5rc2" + +CVE_STATUS[CVE-2019-19966] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-1999] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20054] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20095] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-20096] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-2024] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2019-2025] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2019-20422] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-2054] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2019-20636] = "fixed-version: Fixed from version 5.5rc6" + +# CVE-2019-20794 has no known resolution + +CVE_STATUS[CVE-2019-20806] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-20810] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2019-20811] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20812] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-20908] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-20934] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-2101] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-2181] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-2182] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2019-2213] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-2214] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-2215] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2019-25044] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-25045] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-3016] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2019-3459] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-3460] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-3701] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-3819] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-3837] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2019-3846] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-3874] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-3882] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-3887] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-3892] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-3896] = "fixed-version: Fixed from version 2.6.35rc1" + +CVE_STATUS[CVE-2019-3900] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-3901] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2019-5108] = "fixed-version: Fixed from version 5.3" + +# Skipping CVE-2019-5489, no affected_versions + +CVE_STATUS[CVE-2019-6133] = "fixed-version: Fixed from version 5.0rc2" + +CVE_STATUS[CVE-2019-6974] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7221] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7222] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7308] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-8912] = "fixed-version: Fixed from version 5.0rc8" + +CVE_STATUS[CVE-2019-8956] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-8980] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9003] = "fixed-version: Fixed from version 5.0rc4" + +CVE_STATUS[CVE-2019-9162] = "fixed-version: Fixed from version 5.0rc7" + +CVE_STATUS[CVE-2019-9213] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-9245] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2019-9444] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2019-9445] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9453] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-9454] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2019-9455] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2019-9456] = "fixed-version: Fixed from version 4.16rc6" + +CVE_STATUS[CVE-2019-9457] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2019-9458] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2019-9466] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9500] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9503] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9506] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-9857] = "fixed-version: Fixed from version 5.1rc2" + +CVE_STATUS[CVE-2020-0009] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-0030] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2020-0041] = "fixed-version: Fixed from version 5.5rc2" + +CVE_STATUS[CVE-2020-0066] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2020-0067] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-0110] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-0255] = "fixed-version: Fixed from version 5.7rc4" + +CVE_STATUS[CVE-2020-0305] = "fixed-version: Fixed from version 5.5rc6" + +# CVE-2020-0347 has no known resolution + +CVE_STATUS[CVE-2020-0404] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-0423] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-0427] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-0429] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2020-0430] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2020-0431] = "fixed-version: Fixed from version 5.5rc6" + +CVE_STATUS[CVE-2020-0432] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-0433] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2020-0435] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2020-0444] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-0465] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-0466] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-0543] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10135] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10690] = "fixed-version: Fixed from version 5.5rc5" + +# CVE-2020-10708 has no known resolution + +CVE_STATUS[CVE-2020-10711] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-10720] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2020-10732] = "fixed-version: Fixed from version 5.7" + +CVE_STATUS[CVE-2020-10742] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2020-10751] = "fixed-version: Fixed from version 5.7rc4" + +CVE_STATUS[CVE-2020-10757] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10766] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10767] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10768] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10769] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2020-10773] = "fixed-version: Fixed from version 5.4rc6" + +# CVE-2020-10774 has no known resolution + +CVE_STATUS[CVE-2020-10781] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2020-10942] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-11494] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11565] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11608] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11609] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11668] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11669] = "fixed-version: Fixed from version 5.2rc1" + +# CVE-2020-11725 has no known resolution + +CVE_STATUS[CVE-2020-11884] = "fixed-version: Fixed from version 5.7rc4" + +# CVE-2020-11935 has no known resolution + +CVE_STATUS[CVE-2020-12114] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2020-12351] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-12352] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-12362] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12363] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12364] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12464] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-12465] = "fixed-version: Fixed from version 5.6rc6" + +CVE_STATUS[CVE-2020-12652] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2020-12653] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-12654] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-12655] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12656] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-12657] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12659] = "fixed-version: Fixed from version 5.7rc2" + +CVE_STATUS[CVE-2020-12768] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-12769] = "fixed-version: Fixed from version 5.5rc6" + +CVE_STATUS[CVE-2020-12770] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-12771] = "fixed-version: Fixed from version 5.8rc2" + +CVE_STATUS[CVE-2020-12826] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12888] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-12912] = "fixed-version: Fixed from version 5.10rc4" + +CVE_STATUS[CVE-2020-13143] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-13974] = "fixed-version: Fixed from version 5.8rc1" + +# CVE-2020-14304 has no known resolution + +CVE_STATUS[CVE-2020-14305] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2020-14314] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-14331] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-14351] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-14353] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2020-14356] = "fixed-version: Fixed from version 5.8rc5" + +CVE_STATUS[CVE-2020-14381] = "fixed-version: Fixed from version 5.6rc6" + +CVE_STATUS[CVE-2020-14385] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-14386] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-14390] = "fixed-version: Fixed from version 5.9rc6" + +CVE_STATUS[CVE-2020-14416] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2020-15393] = "fixed-version: Fixed from version 5.8rc3" + +CVE_STATUS[CVE-2020-15436] = "fixed-version: Fixed from version 5.8rc2" + +CVE_STATUS[CVE-2020-15437] = "fixed-version: Fixed from version 5.8rc7" + +CVE_STATUS[CVE-2020-15780] = "fixed-version: Fixed from version 5.8rc3" + +# CVE-2020-15802 has no known resolution + +CVE_STATUS[CVE-2020-15852] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2020-16119] = "fixed-version: Fixed from version 5.15rc2" + +CVE_STATUS[CVE-2020-16120] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-16166] = "fixed-version: Fixed from version 5.8" + +CVE_STATUS[CVE-2020-1749] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-24394] = "fixed-version: Fixed from version 5.8rc4" + +CVE_STATUS[CVE-2020-24490] = "fixed-version: Fixed from version 5.8" + +# CVE-2020-24502 has no known resolution + +# CVE-2020-24503 has no known resolution + +CVE_STATUS[CVE-2020-24504] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-24586] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-24587] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-24588] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-25211] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25212] = "fixed-version: Fixed from version 5.9rc1" + +# CVE-2020-25220 has no known resolution + +CVE_STATUS[CVE-2020-25221] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25284] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-25285] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25639] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-25641] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25643] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25645] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25656] = "fixed-version: Fixed from version 5.10rc2" + +# CVE-2020-25661 has no known resolution + +# CVE-2020-25662 has no known resolution + +CVE_STATUS[CVE-2020-25668] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-25669] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-25670] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25671] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25672] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25673] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25704] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-25705] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-26088] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-26139] = "fixed-version: Fixed from version 5.13rc4" + +# CVE-2020-26140 has no known resolution + +CVE_STATUS[CVE-2020-26141] = "fixed-version: Fixed from version 5.13rc4" + +# CVE-2020-26142 has no known resolution + +# CVE-2020-26143 has no known resolution + +CVE_STATUS[CVE-2020-26145] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-26147] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-26541] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2020-26555] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2020-26556 has no known resolution + +# CVE-2020-26557 has no known resolution + +CVE_STATUS[CVE-2020-26558] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2020-26559 has no known resolution + +# CVE-2020-26560 has no known resolution + +CVE_STATUS[CVE-2020-27066] = "fixed-version: Fixed from version 5.6" + +CVE_STATUS[CVE-2020-27067] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2020-27068] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-27152] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27170] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2020-27171] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2020-27194] = "fixed-version: Fixed from version 5.9" + +CVE_STATUS[CVE-2020-2732] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-27418] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-27673] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27675] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27777] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27784] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27786] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-27815] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-27820] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2020-27825] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27830] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-27835] = "fixed-version: Fixed from version 5.10rc6" + +CVE_STATUS[CVE-2020-28097] = "fixed-version: Fixed from version 5.9rc6" + +CVE_STATUS[CVE-2020-28374] = "fixed-version: Fixed from version 5.11rc4" + +CVE_STATUS[CVE-2020-28588] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-28915] = "fixed-version: Fixed from version 5.9" + +CVE_STATUS[CVE-2020-28941] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-28974] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-29368] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-29369] = "fixed-version: Fixed from version 5.8rc7" + +CVE_STATUS[CVE-2020-29370] = "fixed-version: Fixed from version 5.6rc7" + +CVE_STATUS[CVE-2020-29371] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-29372] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-29373] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-29374] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-29534] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-29568] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-29569] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-29660] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-29661] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-35499] = "fixed-version: Fixed from version 5.11rc1" + +# CVE-2020-35501 has no known resolution + +CVE_STATUS[CVE-2020-35508] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-35513] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2020-35519] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-36158] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-36310] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-36311] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-36312] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-36313] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-36322] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-36385] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-36386] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-36387] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-36516] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2020-36557] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-36558] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-36691] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-36694] = "fixed-version: Fixed from version 5.10" + +CVE_STATUS[CVE-2020-36766] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-3702] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-4788] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-7053] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2020-8428] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2020-8647] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-8648] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-8649] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-8694] = "fixed-version: Fixed from version 5.10rc4" + +# CVE-2020-8832 has no known resolution + +CVE_STATUS[CVE-2020-8834] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2020-8835] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-8992] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-9383] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-9391] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2021-0129] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-0342] = "fixed-version: Fixed from version 5.8rc1" + +# CVE-2021-0399 has no known resolution + +CVE_STATUS[CVE-2021-0447] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2021-0448] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2021-0512] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-0605] = "fixed-version: Fixed from version 5.8" + +# CVE-2021-0606 has no known resolution + +# CVE-2021-0695 has no known resolution + +CVE_STATUS[CVE-2021-0707] = "fixed-version: Fixed from version 5.11rc3" + +CVE_STATUS[CVE-2021-0920] = "fixed-version: Fixed from version 5.14rc4" + +# CVE-2021-0924 has no known resolution + +CVE_STATUS[CVE-2021-0929] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2021-0935] = "fixed-version: Fixed from version 4.16rc7" + +# CVE-2021-0936 has no known resolution + +CVE_STATUS[CVE-2021-0937] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-0938] = "fixed-version: Fixed from version 5.10rc4" + +CVE_STATUS[CVE-2021-0941] = "fixed-version: Fixed from version 5.12rc1" + +# CVE-2021-0961 has no known resolution + +CVE_STATUS[CVE-2021-1048] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2021-20177] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2021-20194] = "fixed-version: Fixed from version 5.10rc1" + +# CVE-2021-20219 has no known resolution + +CVE_STATUS[CVE-2021-20226] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2021-20239] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2021-20261] = "fixed-version: Fixed from version 4.5rc5" + +CVE_STATUS[CVE-2021-20265] = "fixed-version: Fixed from version 4.5rc3" + +CVE_STATUS[CVE-2021-20268] = "fixed-version: Fixed from version 5.11rc5" + +CVE_STATUS[CVE-2021-20292] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2021-20317] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2021-20320] = "fixed-version: Fixed from version 5.15rc3" + +CVE_STATUS[CVE-2021-20321] = "fixed-version: Fixed from version 5.15rc5" + +CVE_STATUS[CVE-2021-20322] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-21781] = "fixed-version: Fixed from version 5.11rc7" + +CVE_STATUS[CVE-2021-22543] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-22555] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-22600] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-23133] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-23134] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-26401] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2021-26708] = "fixed-version: Fixed from version 5.11rc7" + +CVE_STATUS[CVE-2021-26930] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-26931] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-26932] = "fixed-version: Fixed from version 5.12rc1" + +# CVE-2021-26934 has no known resolution + +CVE_STATUS[CVE-2021-27363] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-27364] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-27365] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28038] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28039] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28375] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-28660] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-28688] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-28691] = "fixed-version: Fixed from version 5.13rc6" + +CVE_STATUS[CVE-2021-28711] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28712] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28713] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28714] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28715] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28950] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28951] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28952] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28964] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28971] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28972] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-29154] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2021-29155] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-29264] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-29265] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-29266] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-29646] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29647] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29648] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29649] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29650] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29657] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-30002] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-30178] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-31440] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-3178] = "fixed-version: Fixed from version 5.11rc5" + +CVE_STATUS[CVE-2021-31829] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-31916] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-32078] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-32399] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-32606] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-33033] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-33034] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-33061] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2021-33098] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-33135] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2021-33200] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3347] = "fixed-version: Fixed from version 5.11rc6" + +CVE_STATUS[CVE-2021-3348] = "fixed-version: Fixed from version 5.11rc6" + +CVE_STATUS[CVE-2021-33624] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-33630] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2021-33631] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2021-33655] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2021-33656] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-33909] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3411] = "fixed-version: Fixed from version 5.10" + +CVE_STATUS[CVE-2021-3428] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2021-3444] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-34556] = "fixed-version: Fixed from version 5.14rc4" + +CVE_STATUS[CVE-2021-34693] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-3483] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-34866] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-3489] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3490] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3491] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2021-3492 has no known resolution + +CVE_STATUS[CVE-2021-3493] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2021-34981] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3501] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-35039] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-3506] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2021-3542 has no known resolution + +CVE_STATUS[CVE-2021-3543] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-35477] = "fixed-version: Fixed from version 5.14rc4" + +CVE_STATUS[CVE-2021-3564] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3573] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3587] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3600] = "fixed-version: Fixed from version 5.11" + +CVE_STATUS[CVE-2021-3609] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3612] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-3635] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2021-3640] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-3653] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-3655] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3656] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-3659] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2021-3669] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3679] = "fixed-version: Fixed from version 5.14rc3" + +# CVE-2021-3714 has no known resolution + +CVE_STATUS[CVE-2021-3715] = "fixed-version: Fixed from version 5.6" + +CVE_STATUS[CVE-2021-37159] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3732] = "fixed-version: Fixed from version 5.14rc6" + +CVE_STATUS[CVE-2021-3736] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3739] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3743] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-3744] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-3752] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-3753] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-37576] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3759] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3760] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3764] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-3772] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-38160] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38166] = "fixed-version: Fixed from version 5.14rc6" + +CVE_STATUS[CVE-2021-38198] = "fixed-version: Fixed from version 5.13rc6" + +CVE_STATUS[CVE-2021-38199] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38200] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38201] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38202] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38203] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2021-38204] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-38205] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38206] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38207] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38208] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-38209] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-38300] = "fixed-version: Fixed from version 5.15rc4" + +# CVE-2021-3847 has no known resolution + +# CVE-2021-3864 has no known resolution + +# CVE-2021-3892 has no known resolution + +CVE_STATUS[CVE-2021-3894] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3896] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3923] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-39633] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-39634] = "fixed-version: Fixed from version 5.9rc8" + +CVE_STATUS[CVE-2021-39636] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2021-39648] = "fixed-version: Fixed from version 5.11rc3" + +CVE_STATUS[CVE-2021-39656] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-39657] = "fixed-version: Fixed from version 5.11rc4" + +CVE_STATUS[CVE-2021-39685] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2021-39686] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-39698] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2021-39711] = "fixed-version: Fixed from version 4.18rc6" + +CVE_STATUS[CVE-2021-39713] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2021-39714] = "fixed-version: Fixed from version 4.12rc1" + +# CVE-2021-39800 has no known resolution + +# CVE-2021-39801 has no known resolution + +# CVE-2021-39802 has no known resolution + +CVE_STATUS[CVE-2021-4001] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4002] = "fixed-version: Fixed from version 5.16rc3" + +CVE_STATUS[CVE-2021-4023] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-4028] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-4032] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4037] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-40490] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-4083] = "fixed-version: Fixed from version 5.16rc4" + +CVE_STATUS[CVE-2021-4090] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4093] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4095] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-41073] = "fixed-version: Fixed from version 5.15rc2" + +CVE_STATUS[CVE-2021-4135] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-4148] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-4149] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-4150] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4154] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2021-4155] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-4157] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-4159] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2021-41864] = "fixed-version: Fixed from version 5.15rc5" + +CVE_STATUS[CVE-2021-4197] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-42008] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-4202] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4203] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-4204] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-4218] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2021-42252] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-42327] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-42739] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-43056] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-43057] = "fixed-version: Fixed from version 5.15rc3" + +CVE_STATUS[CVE-2021-43267] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-43389] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-43975] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-43976] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-44733] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-44879] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-45095] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45100] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-45402] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45469] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-45480] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45485] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-45486] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-45868] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-46283] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2022-0001] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0002] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0168] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-0171] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-0185] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0264] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2022-0286] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2022-0322] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2022-0330] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-0382] = "fixed-version: Fixed from version 5.16" + +# CVE-2022-0400 has no known resolution + +CVE_STATUS[CVE-2022-0433] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0435] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0480] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-0487] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0492] = "fixed-version: Fixed from version 5.17rc3" + +CVE_STATUS[CVE-2022-0494] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-0500] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0516] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0617] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-0644] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2022-0646] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-0742] = "fixed-version: Fixed from version 5.17rc7" + +CVE_STATUS[CVE-2022-0812] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2022-0847] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-0850] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2022-0854] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0995] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0998] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-1011] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-1012] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1015] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1016] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1043] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2022-1048] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1055] = "fixed-version: Fixed from version 5.17rc3" + +# CVE-2022-1116 has no known resolution + +CVE_STATUS[CVE-2022-1158] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1184] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1195] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2022-1198] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-1199] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-1204] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1205] = "fixed-version: Fixed from version 5.18rc1" + +# CVE-2022-1247 has no known resolution + +CVE_STATUS[CVE-2022-1263] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2022-1280] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-1353] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-1419] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2022-1462] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-1508] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-1516] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1651] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1652] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1671] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1678] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2022-1679] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-1729] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-1734] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1786] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-1789] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-1836] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-1852] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1882] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-1943] = "fixed-version: Fixed from version 5.18rc7" + +CVE_STATUS[CVE-2022-1966] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1972] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1973] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1974] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1975] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1976] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1998] = "fixed-version: Fixed from version 5.17rc3" + +CVE_STATUS[CVE-2022-20008] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-20132] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2022-20141] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-20148] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2022-20153] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2022-20154] = "fixed-version: Fixed from version 5.16rc8" + +CVE_STATUS[CVE-2022-20158] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20166] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2022-20368] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20369] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-20409] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20421] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-20422] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-20423] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20424] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20565] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2022-20566] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-20567] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2022-20568] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20572] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-2078] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-21123] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21125] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21166] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21385] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2022-21499] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-21505] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-2153] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2196] = "fixed-version: Fixed from version 6.2rc1" + +# CVE-2022-2209 has no known resolution + +CVE_STATUS[CVE-2022-22942] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-23036] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23037] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23038] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23039] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23040] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23041] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23042] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-2308] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-2318] = "fixed-version: Fixed from version 5.19rc5" + +CVE_STATUS[CVE-2022-23222] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-2327] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-2380] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-23816] = "fixed-version: Fixed from version 5.19rc7" + +# CVE-2022-23825 has no known resolution + +CVE_STATUS[CVE-2022-23960] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-24122] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-24448] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-24958] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-24959] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-2503] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-25258] = "fixed-version: Fixed from version 5.17rc4" + +# CVE-2022-25265 has no known resolution + +CVE_STATUS[CVE-2022-25375] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-25636] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-2585] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2586] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2588] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2590] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-2602] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-26365] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-26373] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2639] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-26490] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-2663] = "fixed-version: Fixed from version 6.0rc5" + +# CVE-2022-26878 has no known resolution + +CVE_STATUS[CVE-2022-26966] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-27223] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-27666] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-27672] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-2785] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-27950] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-28356] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28388] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28389] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28390] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2873] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-28796] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28893] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-2905] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-29156] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-2938] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-29581] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-29582] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-2959] = "fixed-version: Fixed from version 5.19rc1" + +# CVE-2022-2961 has no known resolution + +CVE_STATUS[CVE-2022-2964] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-2977] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2978] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-29900] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-29901] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-2991] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-29968] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3028] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-30594] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3061] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3077] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3078] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3103] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-3104] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3105] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2022-3106] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2022-3107] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-3108] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-3110] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3111] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3112] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3113] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3114] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3115] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3169] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3170] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-3176] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-3202] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-32250] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-32296] = "fixed-version: Fixed from version 5.18rc6" + +# CVE-2022-3238 has no known resolution + +CVE_STATUS[CVE-2022-3239] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-32981] = "fixed-version: Fixed from version 5.19rc2" + +CVE_STATUS[CVE-2022-3303] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-3344] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2022-33740] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33741] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33742] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33743] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33744] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33981] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3424] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3435] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-34494] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-34495] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-34918] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-3521] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3522] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3523] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3524] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3526] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2022-3531] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3532] = "fixed-version: Fixed from version 6.2rc1" + +# CVE-2022-3533 has no known resolution + +CVE_STATUS[CVE-2022-3534] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3535] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3541] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3542] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3543] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-3544 has no known resolution + +CVE_STATUS[CVE-2022-3545] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3564] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-3565] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3566] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3567] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3577] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3586] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-3594] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3595] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-3606 has no known resolution + +CVE_STATUS[CVE-2022-36123] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-3619] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-3621] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3623] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3624] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3625] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3628] = "fixed-version: Fixed from version 6.1rc5" + +CVE_STATUS[CVE-2022-36280] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3629] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3630] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3633] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3635] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3636] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3640] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-36402] = "fixed-version: Fixed from version 6.5" + +# CVE-2022-3642 has no known resolution + +CVE_STATUS[CVE-2022-3643] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-3646] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3649] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-36879] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-36946] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-3707] = "fixed-version: Fixed from version 6.2rc3" + +# CVE-2022-38096 has no known resolution + +CVE_STATUS[CVE-2022-38457] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-3903] = "fixed-version: Fixed from version 6.1rc2" + +CVE_STATUS[CVE-2022-3910] = "fixed-version: Fixed from version 6.0rc6" + +CVE_STATUS[CVE-2022-39188] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-39189] = "fixed-version: Fixed from version 5.19rc2" + +CVE_STATUS[CVE-2022-39190] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-3977] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-39842] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2022-40133] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-40307] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-40476] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2022-40768] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-4095] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-40982] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2022-41218] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-41222] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2022-4127] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-4128] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-4129] = "fixed-version: Fixed from version 6.1rc6" + +CVE_STATUS[CVE-2022-4139] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-41674] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-41848 has no known resolution + +CVE_STATUS[CVE-2022-41849] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-41850] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-41858] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-42328] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-42329] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-42432] = "fixed-version: Fixed from version 6.0rc7" + +CVE_STATUS[CVE-2022-4269] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2022-42703] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-42719] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42720] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42721] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42722] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42895] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-42896] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-43750] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-4378] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-4379] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-4382] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2022-43945] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-44032] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-44033] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-44034] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2022-4543 has no known resolution + +CVE_STATUS[CVE-2022-45869] = "fixed-version: Fixed from version 6.1rc7" + +# CVE-2022-45884 has no known resolution + +# CVE-2022-45885 has no known resolution + +CVE_STATUS[CVE-2022-45886] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45887] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45888] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-45919] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45934] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-4662] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-4696] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-4744] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2022-47518] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47519] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47520] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47521] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47929] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-47938] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47939] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47940] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-47941] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47942] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47943] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47946] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2022-4842] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48423] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48424] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48425] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-48502] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48619] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-0030] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2023-0045] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-0047] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2023-0122] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2023-0160] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-0179] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-0210] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0240] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2023-0266] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0386] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-0394] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0458] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-0459] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-0461] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-0468] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-0469] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-0590] = "fixed-version: Fixed from version 6.1rc2" + +CVE_STATUS[CVE-2023-0597] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-0615] = "fixed-version: Fixed from version 6.1rc3" + +CVE_STATUS[CVE-2023-1032] = "fixed-version: Fixed from version 6.3rc2" + +CVE_STATUS[CVE-2023-1073] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-1074] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-1075] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-1076] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1077] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1078] = "fixed-version: Fixed from version 6.2rc8" + +CVE_STATUS[CVE-2023-1079] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1095] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-1118] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1192] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-1193] = "fixed-version: Fixed from version 6.3rc6" + +CVE_STATUS[CVE-2023-1194] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-1195] = "fixed-version: Fixed from version 6.1rc3" + +CVE_STATUS[CVE-2023-1206] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-1249] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-1252] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2023-1281] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-1295] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2023-1380] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-1382] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-1390] = "fixed-version: Fixed from version 5.11rc4" + +# CVE-2023-1476 has no known resolution + +CVE_STATUS[CVE-2023-1513] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-1582] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2023-1583] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1611] = "fixed-version: Fixed from version 6.3rc5" + +CVE_STATUS[CVE-2023-1637] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2023-1652] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-1670] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1829] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1838] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-1855] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-1859] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-1872] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2023-1989] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1990] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-1998] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2002] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-2006] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-2007] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-2008] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2023-2019] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-20569] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-20588] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-20593] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-20928] = "fixed-version: Fixed from version 6.0rc1" + +# CVE-2023-20937 has no known resolution + +CVE_STATUS[CVE-2023-20938] = "fixed-version: Fixed from version 5.18rc5" + +# CVE-2023-20941 has no known resolution + +CVE_STATUS[CVE-2023-21102] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-21106] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-2124] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-21255] = "fixed-version: Fixed from version 6.4rc4" + +CVE_STATUS[CVE-2023-21264] = "fixed-version: Fixed from version 6.4rc5" + +# CVE-2023-21400 has no known resolution + +CVE_STATUS[CVE-2023-2156] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2162] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-2163] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2166] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2023-2176] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2177] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2023-2194] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-2235] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-2236] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-2248] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2269] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-22995] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-22996] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-22997] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-22998] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-22999] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23000] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23001] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23002] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23003] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2023-23004] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-23005] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-23006] = "fixed-version: Fixed from version 5.16rc8" + +# CVE-2023-23039 has no known resolution + +CVE_STATUS[CVE-2023-23454] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-23455] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-23559] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-23586] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2023-2430] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-2483] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-25012] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2513] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-25775] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-2598] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2023-26242 has no known resolution + +# CVE-2023-2640 has no known resolution + +CVE_STATUS[CVE-2023-26544] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-26545] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-26605] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-26606] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-26607] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2023-28327] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2023-28328] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-28410] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-28464] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-28466] = "fixed-version: Fixed from version 6.3rc2" + +CVE_STATUS[CVE-2023-2860] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2023-28772] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2023-28866] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-2898] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-2985] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-3006] = "fixed-version: Fixed from version 6.1rc1" + +# Skipping CVE-2023-3022, no affected_versions + +CVE_STATUS[CVE-2023-30456] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-30772] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-3090] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-3106] = "fixed-version: Fixed from version 4.8rc7" + +# Skipping CVE-2023-3108, no affected_versions + +# CVE-2023-31081 has no known resolution + +# CVE-2023-31082 has no known resolution + +CVE_STATUS[CVE-2023-31083] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-31084] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-31085] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2023-3111] = "fixed-version: Fixed from version 6.0rc2" + +CVE_STATUS[CVE-2023-3117] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-31248] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3141] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-31436] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-3159] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2023-3161] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-3212] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-3220] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-32233] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32247] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32248] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32250] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32252] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32254] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32257] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32258] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32269] = "fixed-version: Fixed from version 6.2rc7" + +# CVE-2023-32629 has no known resolution + +CVE_STATUS[CVE-2023-3268] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3269] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-3312] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3317] = "fixed-version: Fixed from version 6.3rc6" + +CVE_STATUS[CVE-2023-33203] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-33250] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-33288] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-3338] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2023-3355] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-3357] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-3358] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-3359] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-3389] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-3390] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-33951] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-33952] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2023-3397 has no known resolution + +CVE_STATUS[CVE-2023-34255] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-34256] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-34319] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-34324] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-3439] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2023-35001] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3567] = "fixed-version: Fixed from version 6.2rc7" + +# CVE-2023-35693 has no known resolution + +CVE_STATUS[CVE-2023-35788] = "fixed-version: Fixed from version 6.4rc5" + +CVE_STATUS[CVE-2023-35823] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35824] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35826] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35827] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-35828] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35829] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3609] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-3610] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3611] = "fixed-version: Fixed from version 6.5rc2" + +# CVE-2023-3640 has no known resolution + +CVE_STATUS[CVE-2023-37453] = "fixed-version: Fixed from version 6.6rc1" + +# CVE-2023-37454 has no known resolution + +CVE_STATUS[CVE-2023-3772] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-3773] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-3776] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3777] = "fixed-version: Fixed from version 6.5rc3" + +CVE_STATUS[CVE-2023-3812] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2023-38409] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-38426] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38427] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38428] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38429] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38430] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38431] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38432] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3863] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-3865] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3866] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3867] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-39189] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39191] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-39192] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39193] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39194] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-39197] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-39198] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-4004] = "fixed-version: Fixed from version 6.5rc3" + +# CVE-2023-4010 has no known resolution + +CVE_STATUS[CVE-2023-4015] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-40283] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-40791] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4128] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4132] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4133] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-4134] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4147] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-4155] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4194] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4206] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4207] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4208] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4244] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-4273] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-42752] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-42753] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-42754] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-42755] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-42756] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-4385] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-4387] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-4389] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2023-4394] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2023-44466] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-4459] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-4563] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4569] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-45862] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-45863] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-45871] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-45898] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-4610] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-4611] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-4622] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4623] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-46343] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-46813] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-46838] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-46862] = "fixed-version: Fixed from version 6.6" + +# CVE-2023-47233 has no known resolution + +CVE_STATUS[CVE-2023-4732] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2023-4881] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-4921] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-50431] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-5090] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-51042] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-51043] = "fixed-version: Fixed from version 6.5rc3" + +CVE_STATUS[CVE-2023-5158] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2023-51779] = "cpe-stable-backport: Backported in 6.6.9" + +CVE_STATUS[CVE-2023-5178] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-51780] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-51781] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-51782] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-5197] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-52340] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-52429] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2023-52433] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-52434] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-52435] = "cpe-stable-backport: Backported in 6.6.11" + +CVE_STATUS[CVE-2023-52436] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52438] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52439] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52440] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-52441] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-52442] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-52443] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52444] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52445] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52446] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52447] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52448] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52449] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52450] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52451] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52452] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52453] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52454] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52455] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52456] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52457] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52458] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52459] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52460] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-52461] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-52462] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52463] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52464] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-5345] = "fixed-version: Fixed from version 6.6rc4" + +CVE_STATUS[CVE-2023-5633] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-5717] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-5972] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-6039] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-6040] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-6111] = "cpe-stable-backport: Backported in 6.6.3" + +CVE_STATUS[CVE-2023-6121] = "cpe-stable-backport: Backported in 6.6.4" + +CVE_STATUS[CVE-2023-6176] = "fixed-version: Fixed from version 6.6rc2" + +CVE_STATUS[CVE-2023-6200] = "cpe-stable-backport: Backported in 6.6.9" + +# CVE-2023-6238 has no known resolution + +# CVE-2023-6240 has no known resolution + +# CVE-2023-6270 has no known resolution + +# CVE-2023-6356 has no known resolution + +CVE_STATUS[CVE-2023-6531] = "cpe-stable-backport: Backported in 6.6.7" + +# CVE-2023-6535 has no known resolution + +# CVE-2023-6536 has no known resolution + +CVE_STATUS[CVE-2023-6546] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-6560] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2023-6606] = "cpe-stable-backport: Backported in 6.6.9" + +CVE_STATUS[CVE-2023-6610] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-6622] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6679] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-6817] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6915] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-6931] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6932] = "cpe-stable-backport: Backported in 6.6.5" + +# CVE-2023-7042 has no known resolution + +CVE_STATUS[CVE-2023-7192] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2024-0193] = "cpe-stable-backport: Backported in 6.6.10" + +CVE_STATUS[CVE-2024-0340] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2024-0443] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2024-0562] = "fixed-version: Fixed from version 6.0rc3" + +# CVE-2024-0564 has no known resolution + +CVE_STATUS[CVE-2024-0565] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2024-0582] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2024-0584] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2024-0607] = "cpe-stable-backport: Backported in 6.6.3" + +CVE_STATUS[CVE-2024-0639] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2024-0641] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2024-0646] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2024-0775] = "fixed-version: Fixed from version 6.4rc2" + +# CVE-2024-0841 has no known resolution + +CVE_STATUS[CVE-2024-1085] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-1086] = "cpe-stable-backport: Backported in 6.6.15" + +CVE_STATUS[CVE-2024-1151] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-1312] = "fixed-version: Fixed from version 6.5rc4" + +# CVE-2024-21803 has no known resolution + +# CVE-2024-22099 has no known resolution + +# CVE-2024-22386 has no known resolution + +CVE_STATUS[CVE-2024-22705] = "cpe-stable-backport: Backported in 6.6.10" + +# CVE-2024-23196 has no known resolution + +# CVE-2024-23307 has no known resolution + +# CVE-2024-23848 has no known resolution + +CVE_STATUS[CVE-2024-23849] = "cpe-stable-backport: Backported in 6.6.15" + +CVE_STATUS[CVE-2024-23850] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-23851] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-24855] = "fixed-version: Fixed from version 6.5rc2" + +# CVE-2024-24857 has no known resolution + +# CVE-2024-24858 has no known resolution + +# CVE-2024-24859 has no known resolution + +CVE_STATUS[CVE-2024-24860] = "cpe-stable-backport: Backported in 6.6.14" + +# CVE-2024-24861 has no known resolution + +# CVE-2024-24864 has no known resolution + +# CVE-2024-25739 has no known resolution + +# CVE-2024-25740 has no known resolution + +# CVE-2024-25741 has no known resolution + +CVE_STATUS[CVE-2024-25744] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2024-26581] = "cpe-stable-backport: Backported in 6.6.17" + +CVE_STATUS[CVE-2024-26582] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26583] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26584] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26585] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26586] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26587] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26588] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26589] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26590] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26591] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26592] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26593] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26594] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26595] = "cpe-stable-backport: Backported in 6.6.14" + +# CVE-2024-26596 needs backporting (fixed from 6.8rc1) + +CVE_STATUS[CVE-2024-26597] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26598] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26599] = "cpe-stable-backport: Backported in 6.6.14" + diff --git a/meta/recipes-kernel/linux/generate-cve-exclusions.py b/meta/recipes-kernel/linux/generate-cve-exclusions.py new file mode 100755 index 0000000000..aa9195aab4 --- /dev/null +++ b/meta/recipes-kernel/linux/generate-cve-exclusions.py @@ -0,0 +1,98 @@ +#! /usr/bin/env python3 + +# Generate granular CVE status metadata for a specific version of the kernel +# using data from linuxkernelcves.com. +# +# SPDX-License-Identifier: GPL-2.0-only + +import argparse +import datetime +import json +import pathlib +import re + +from packaging.version import Version + + +def parse_version(s): + """ + Parse the version string and either return a packaging.version.Version, or + None if the string was unset or "unk". + """ + if s and s != "unk": + # packaging.version.Version doesn't approve of versions like v5.12-rc1-dontuse + s = s.replace("-dontuse", "") + return Version(s) + return None + + +def main(argp=None): + parser = argparse.ArgumentParser() + parser.add_argument("datadir", type=pathlib.Path, help="Path to a clone of https://github.com/nluedtke/linux_kernel_cves") + parser.add_argument("version", type=Version, help="Kernel version number to generate data for, such as 6.1.38") + + args = parser.parse_args(argp) + datadir = args.datadir + version = args.version + base_version = f"{version.major}.{version.minor}" + + with open(datadir / "data" / "kernel_cves.json", "r") as f: + cve_data = json.load(f) + + with open(datadir / "data" / "stream_fixes.json", "r") as f: + stream_data = json.load(f) + + print(f""" +# Auto-generated CVE metadata, DO NOT EDIT BY HAND. +# Generated at {datetime.datetime.now(datetime.timezone.utc)} for version {version} + +python check_kernel_cve_status_version() {{ + this_version = "{version}" + kernel_version = d.getVar("LINUX_VERSION") + if kernel_version != this_version: + bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) +}} +do_cve_check[prefuncs] += "check_kernel_cve_status_version" +""") + + for cve, data in cve_data.items(): + if "affected_versions" not in data: + print(f"# Skipping {cve}, no affected_versions") + print() + continue + + affected = data["affected_versions"] + first_affected, fixed = re.search(r"(.+) to (.+)", affected).groups() + first_affected = parse_version(first_affected) + fixed = parse_version(fixed) + + if not fixed: + print(f"# {cve} has no known resolution") + elif first_affected and version < first_affected: + print(f'CVE_STATUS[{cve}] = "fixed-version: only affects {first_affected} onwards"') + elif fixed <= version: + print( + f'CVE_STATUS[{cve}] = "fixed-version: Fixed from version {fixed}"' + ) + else: + if cve in stream_data: + backport_data = stream_data[cve] + if base_version in backport_data: + backport_ver = Version(backport_data[base_version]["fixed_version"]) + if backport_ver <= version: + print( + f'CVE_STATUS[{cve}] = "cpe-stable-backport: Backported in {backport_ver}"' + ) + else: + # TODO print a note that the kernel needs bumping + print(f"# {cve} needs backporting (fixed from {backport_ver})") + else: + print(f"# {cve} needs backporting (fixed from {fixed})") + else: + print(f"# {cve} needs backporting (fixed from {fixed})") + + print() + + +if __name__ == "__main__": + main() diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb index 9654488a54..fafab475f3 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb @@ -47,21 +47,21 @@ do_install() { # create a /usr/src/kernel symlink to /lib/modules/<version>/source mkdir -p ${D}/usr/src ( - cd ${D}/usr/src - ln -rs ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + cd ${D}/usr/src + ln -rs ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel ) # for on target purposes, we unify build and source ( - cd $kerneldir - ln -s build source + cd $kerneldir + ln -s build source ) # first copy everything ( - cd ${S} - cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build - cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build + cd ${S} + cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build + cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build ) # then drop all but the needed Makefiles/Kconfig files @@ -70,100 +70,113 @@ do_install() { # now copy in parts from the build that we'll need later ( - cd ${B} - - if [ -s Module.symvers ]; then - cp Module.symvers $kerneldir/build - fi - cp System.map* $kerneldir/build - if [ -s Module.markers ]; then - cp Module.markers $kerneldir/build - fi - - cp -a .config $kerneldir/build - - # This scripts copy blow up QA, so for now, we require a more - # complex 'make scripts' to restore these, versus copying them - # here. Left as a reference to indicate that we know the scripts must - # be dealt with. - # cp -a scripts $kerneldir/build - - # although module.lds can be regenerated on target via 'make modules_prepare' - # there are several places where 'makes scripts prepare' is done, and that won't - # regenerate the file. So we copy it onto the target as a migration to using - # modules_prepare - cp -a --parents scripts/module.lds $kerneldir/build/ 2>/dev/null || : + cd ${B} + + if [ -s Module.symvers ]; then + cp Module.symvers $kerneldir/build + fi + cp System.map* $kerneldir/build + if [ -s Module.markers ]; then + cp Module.markers $kerneldir/build + fi + + cp -a .config $kerneldir/build + + # This scripts copy blow up QA, so for now, we require a more + # complex 'make scripts' to restore these, versus copying them + # here. Left as a reference to indicate that we know the scripts must + # be dealt with. + # cp -a scripts $kerneldir/build + + # although module.lds can be regenerated on target via 'make modules_prepare' + # there are several places where 'makes scripts prepare' is done, and that won't + # regenerate the file. So we copy it onto the target as a migration to using + # modules_prepare + cp -a --parents scripts/module.lds $kerneldir/build/ 2>/dev/null || : if [ -d arch/${ARCH}/scripts ]; then - cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} - fi - if [ -f arch/${ARCH}/*lds ]; then - cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} - fi - - rm -f $kerneldir/build/scripts/*.o - rm -f $kerneldir/build/scripts/*/*.o - - if [ "${ARCH}" = "powerpc" ]; then - if [ -e arch/powerpc/lib/crtsavres.S ] || - [ -e arch/powerpc/lib/crtsavres.o ]; then - cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ - fi - fi - - if [ "${ARCH}" = "arm64" -o "${ARCH}" = "riscv" ]; then + cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} + fi + if [ -f arch/${ARCH}/*lds ]; then + cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} + fi + + rm -f $kerneldir/build/scripts/*.o + rm -f $kerneldir/build/scripts/*/*.o + + if [ "${ARCH}" = "powerpc" ]; then + if [ -e arch/powerpc/lib/crtsavres.S ] || + [ -e arch/powerpc/lib/crtsavres.o ]; then + cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ + fi + fi + + if [ "${ARCH}" = "arm64" -o "${ARCH}" = "riscv" ]; then if [ -e arch/${ARCH}/kernel/vdso/vdso.lds ]; then - cp -a --parents arch/${ARCH}/kernel/vdso/vdso.lds $kerneldir/build/ + cp -a --parents arch/${ARCH}/kernel/vdso/vdso.lds $kerneldir/build/ fi - fi - if [ "${ARCH}" = "powerpc" ]; then - cp -a --parents arch/powerpc/kernel/vdso32/vdso32.lds $kerneldir/build 2>/dev/null || : - cp -a --parents arch/powerpc/kernel/vdso64/vdso64.lds $kerneldir/build 2>/dev/null || : - fi - - cp -a include $kerneldir/build/include - - # we don't usually copy generated files, since they can be rebuilt on the target, - # but without this file, we get a forced syncconfig run in v5.8+, which prompts and - # breaks workflows. - cp -a --parents include/generated/autoconf.h $kerneldir/build 2>/dev/null || : - - if [ -e $kerneldir/include/generated/.vdso-offsets.h.cmd ]; then - rm $kerneldir/include/generated/.vdso-offsets.h.cmd - fi + fi + if [ "${ARCH}" = "powerpc" ]; then + cp -a --parents arch/powerpc/kernel/vdso32/vdso32.lds $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso64/vdso64.lds $kerneldir/build 2>/dev/null || : + # v5.19+ + cp -a --parents arch/powerpc/kernel/vdso/vdso*.lds $kerneldir/build 2>/dev/null || : + fi + + cp -a include $kerneldir/build/include + + # we don't usually copy generated files, since they can be rebuilt on the target, + # but without this file, we get a forced syncconfig run in v5.8+, which prompts and + # breaks workflows. + cp -a --parents include/generated/autoconf.h $kerneldir/build 2>/dev/null || : + + rm -f $kerneldir/include/generated/.vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.compat_vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.vdso32-offsets.h.cmd ) # now grab the chunks from the source tree that we need ( - cd ${S} + cd ${S} + + cp -a scripts $kerneldir/build - cp -a scripts $kerneldir/build + # for v6.1+ (otherwise we are missing multiple default targets) + cp -a --parents Kbuild $kerneldir/build 2>/dev/null || : - # if our build dir had objtool, it will also be rebuilt on target, so - # we copy what is required for that build - if [ -f ${B}/tools/objtool/objtool ]; then - # these are a few files associated with objtool, since we'll need to - # rebuild it - cp -a --parents tools/build/Build.include $kerneldir/build/ - cp -a --parents tools/build/Build $kerneldir/build/ - cp -a --parents tools/build/fixdep.c $kerneldir/build/ - cp -a --parents tools/scripts/utilities.mak $kerneldir/build/ + # For v6.6+ the debian packing is moved out to seperate rules file + # Remove as we else would ned to RDEPEND on make + rm $kerneldir/build/scripts/package/debian/rules 2>/dev/null || : - # extra files, just in case - cp -a --parents tools/objtool/* $kerneldir/build/ - cp -a --parents tools/lib/* $kerneldir/build/ - cp -a --parents tools/lib/subcmd/* $kerneldir/build/ + # if our build dir had objtool, it will also be rebuilt on target, so + # we copy what is required for that build + if [ -f ${B}/tools/objtool/objtool ]; then + # these are a few files associated with objtool, since we'll need to + # rebuild it + cp -a --parents tools/build/Build.include $kerneldir/build/ + cp -a --parents tools/build/Build $kerneldir/build/ + cp -a --parents tools/build/fixdep.c $kerneldir/build/ + cp -a --parents tools/scripts/utilities.mak $kerneldir/build/ - cp -a --parents tools/include/* $kerneldir/build/ + # extra files, just in case + cp -a --parents tools/objtool/* $kerneldir/build/ + cp -a --parents tools/lib/* $kerneldir/build/ + cp -a --parents tools/lib/subcmd/* $kerneldir/build/ - cp -a --parents $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/ - fi + cp -a --parents tools/include/* $kerneldir/build/ - if [ "${ARCH}" = "arm64" ]; then - # arch/arm64/include/asm/xen references arch/arm - cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ - # arch/arm64/include/asm/opcodes.h references arch/arm - cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ + cp -a --parents $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/ + fi + + if [ "${ARCH}" = "arm64" ]; then + # arch/arm64/include/asm/xen references arch/arm + cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ + # arch/arm64/include/asm/opcodes.h references arch/arm + cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ + + # v6.1+ + cp -a --parents arch/arm64/kernel/asm-offsets.c $kerneldir/build/ cp -a --parents arch/arm64/kernel/vdso/*gettimeofday.* $kerneldir/build/ cp -a --parents arch/arm64/kernel/vdso/sigreturn.S $kerneldir/build/ @@ -176,119 +189,169 @@ do_install() { cp -a --parents arch/arm64/tools/gen-cpucaps.awk $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/arm64/tools/cpucaps $kerneldir/build/ 2>/dev/null || : + # 5.19+ + cp -a --parents arch/arm64/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm64/tools/sysreg $kerneldir/build/ 2>/dev/null || : + if [ -e $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk ]; then sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk fi - fi - - if [ "${ARCH}" = "powerpc" ]; then - # 5.0 needs these files, but don't error if they aren't present in the source - cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || : - fi - if [ "${ARCH}" = "riscv" ]; then + if [ -e $kerneldir/build/arch/arm64/tools/gen-sysreg.awk ]; then + sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-sysreg.awk + fi + fi + + if [ "${ARCH}" = "powerpc" ]; then + # 5.0 needs these files, but don't error if they aren't present in the source + cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || : + + # v5.19+ + cp -a --parents arch/powerpc/kernel/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + + # v6,1+ + cp -a --parents arch/powerpc/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/head_booke.h $kerneldir/build/ 2>/dev/null || : + fi + if [ "${ARCH}" = "riscv" ]; then cp -a --parents arch/riscv/kernel/vdso/*gettimeofday.* $kerneldir/build/ cp -a --parents arch/riscv/kernel/vdso/note.S $kerneldir/build/ + # v6.1+ + cp -a --parents arch/riscv/kernel/asm-offsets.c $kerneldir/build/ if [ -e arch/riscv/kernel/vdso/gen_vdso_offsets.sh ]; then cp -a --parents arch/riscv/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/ fi - cp -a --parents arch/riscv/kernel/vdso/* $kerneldir/build/ 2>/dev/null || : - fi + cp -a --parents arch/riscv/kernel/vdso/* $kerneldir/build/ 2>/dev/null || : + if [ -e arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh ]; then + cp -a --parents arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh $kerneldir/build/ + fi + cp -a --parents arch/riscv/kernel/compat_vdso/* $kerneldir/build/ 2>/dev/null || : + fi - # include the machine specific headers for ARM variants, if available. - if [ "${ARCH}" = "arm" ]; then - cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ + # include the machine specific headers for ARM variants, if available. + if [ "${ARCH}" = "arm" ]; then + cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ - # include a few files for 'make prepare' - cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/ - cp -a --parents arch/arm/tools/mach-types $kerneldir/build/ + # include a few files for 'make prepare' + cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/ + cp -a --parents arch/arm/tools/mach-types $kerneldir/build/ - # ARM syscall table tools only exist for kernels v4.10 or later + # 5.19+ + cp -a --parents arch/arm/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : + + # ARM syscall table tools only exist for kernels v4.10 or later SYSCALL_TOOLS=$(find arch/arm/tools -name "syscall*") if [ -n "$SYSCALL_TOOLS" ] ; then - cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ + cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ fi cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ 2>/dev/null || : - fi - - if [ -d arch/${ARCH}/include ]; then - cp -a --parents arch/${ARCH}/include $kerneldir/build/ - fi - - cp -a include $kerneldir/build - - cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || : - - cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ - cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ - - # required for generate missing syscalls prepare phase - cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build - cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || : - - if [ "${ARCH}" = "x86" ]; then - # files for 'make prepare' to succeed with kernel-devel - cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ - cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ - - # 4.18 + have unified the purgatory files, so we ignore any errors if - # these files are not present - cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : - - cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ - cp -a --parents arch/x86/boot/string.h $kerneldir/build/ - cp -a --parents arch/x86/boot/string.c $kerneldir/build/ - cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ - - # objtool requires these files - cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || : - fi - - if [ "${ARCH}" = "mips" ]; then - cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ - cp --parents $(find -type f -name "Platform") $kerneldir/build - cp --parents arch/mips/boot/tools/relocs* $kerneldir/build - cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build - cp -a --parents kernel/time/timeconst.bc $kerneldir/build - cp -a --parents kernel/bounds.c $kerneldir/build - cp -a --parents Kbuild $kerneldir/build - cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : - fi + # v6.1+ + cp -a --parents arch/arm/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm/kernel/signal.h $kerneldir/build/ 2>/dev/null || : + fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || : + + cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ + cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ + + # required for generate missing syscalls prepare phase + cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build + cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || : + + if [ "${ARCH}" = "x86" ]; then + # files for 'make prepare' to succeed with kernel-devel + cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ + cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ + + # 4.18 + have unified the purgatory files, so we ignore any errors if + # these files are not present + cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : + + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + cp -a --parents arch/x86/boot/string.c $kerneldir/build/ + cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + + # objtool requires these files + cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || : + + # v6.1+ + cp -a --parents arch/x86/kernel/asm-offsets* $kerneldir/build || : + # for capabilities.h, vmx.h + cp -a --parents arch/x86/kvm/vmx/*.h $kerneldir/build || : + # for lapic.h, hyperv.h .... + cp -a --parents arch/x86/kvm/*.h $kerneldir/build || : + fi + + # moved from arch/mips to all arches for v6.1+ + cp -a --parents kernel/time/timeconst.bc $kerneldir/build 2>/dev/null || : + cp -a --parents kernel/bounds.c $kerneldir/build 2>/dev/null || : + + if [ "${ARCH}" = "mips" ]; then + cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ + cp --parents $(find -type f -name "Platform") $kerneldir/build + cp --parents arch/mips/boot/tools/relocs* $kerneldir/build + cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : + fi + + if [ "${ARCH}" = "loongarch" ]; then + cp -a --parents arch/loongarch/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/loongarch/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*getcpu.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + fi # required to build scripts/selinux/genheaders/genheaders cp -a --parents security/selinux/include/* $kerneldir/build/ - # copy any localversion files - cp -a localversion* $kerneldir/build/ 2>/dev/null || : + # copy any localversion files + cp -a localversion* $kerneldir/build/ 2>/dev/null || : ) # Make sure the Makefile and version.h have a matching timestamp so that # external modules can be built touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h - # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. - cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + # This fixes a warning that the compilers don't match when building a module + # Change: CONFIG_CC_VERSION_TEXT="x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + # #define CONFIG_CC_VERSION_TEXT "x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' "$kerneldir/build/.config" + sed -i 's/#define CONFIG_CC_VERSION_TEXT ".*\(gcc.*\)"/#define CONFIG_CC_VERSION_TEXT "\1"/' $kerneldir/build/include/generated/autoconf.h + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' $kerneldir/build/include/config/auto.conf # make sure these are at least as old as the .config, or rebuilds will trigger touch -r $kerneldir/build/.config $kerneldir/build/include/generated/autoconf.h 2>/dev/null || : @@ -316,9 +379,9 @@ do_install() { # left as /usr/bin/python rootfs assembly will fail, since we only have python3 # in the RDEPENDS (and the python3 package does not include /usr/bin/python) for ss in $(find $kerneldir/build/scripts -type f -name '*'); do - sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "$ss" - sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "$ss" - sed -i 's,/usr/bin/python,/usr/bin/env python3,' "$ss" + sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "$ss" + sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "$ss" + sed -i 's,/usr/bin/python,/usr/bin/env python3,' "$ss" done chown -R root:root ${D} @@ -330,14 +393,14 @@ do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock" FILES:${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" FILES:${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" -RDEPENDS:${PN} = "bc python3 flex bison ${TCLIBC}-utils" +RDEPENDS:${PN} = "bc python3-core flex bison ${TCLIBC}-utils gawk" # 4.15+ needs these next two RDEPENDS RDEPENDS:${PN} += "openssl-dev util-linux" # and x86 needs a bit more for 4.15+ RDEPENDS:${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-dev', '', d)}" +# powerpc needs elfutils on 6.3+ +RDEPENDS:${PN} += "${@bb.utils.contains('ARCH', 'powerpc', 'elfutils-dev', '', d)}" # 5.8+ needs gcc-plugins libmpc-dev RDEPENDS:${PN} += "gcc-plugins libmpc-dev" -# 5.13+ needs awk for arm64 -RDEPENDS:${PN}:append:aarch64 = " gawk" # 5.13+ needs grep for powerpc RDEPENDS:${PN}:append:powerpc = " grep" diff --git a/meta/recipes-kernel/linux/linux-dummy.bb b/meta/recipes-kernel/linux/linux-dummy.bb index 7c46f80d8d..2396f46202 100644 --- a/meta/recipes-kernel/linux/linux-dummy.bb +++ b/meta/recipes-kernel/linux/linux-dummy.bb @@ -28,7 +28,6 @@ INHIBIT_DEFAULT_DEPS = "1" COMPATIBLE_HOST = ".*-linux" -PR = "r1" SRC_URI = "file://COPYING.GPL" S = "${WORKDIR}" diff --git a/meta/recipes-kernel/linux/linux-yocto-dev.bb b/meta/recipes-kernel/linux/linux-yocto-dev.bb index d35632071b..d5cba42a5c 100644 --- a/meta/recipes-kernel/linux/linux-yocto-dev.bb +++ b/meta/recipes-kernel/linux/linux-yocto-dev.bb @@ -10,17 +10,15 @@ inherit kernel require recipes-kernel/linux/linux-yocto.inc -# for ncurses tests -inherit pkgconfig # provide this .inc to set specific revisions include recipes-kernel/linux/linux-yocto-dev-revisions.inc -KBRANCH = "v5.18/standard/base" +KBRANCH = "v6.9/standard/base" KMETA = "kernel-meta" -SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA}" +SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA};protocol=https" # Set default SRCREVs. Both the machine and meta SRCREVs are statically set # to the korg v3.7 tag, and hence prevent network access during parsing. If @@ -30,16 +28,12 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}' SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}' -LINUX_VERSION ?= "5.18+" +LINUX_VERSION ?= "6.9" LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}" -PV = "${LINUX_VERSION}+git${SRCPV}" +PV = "${LINUX_VERSION}+git" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" -DEPENDS += "gmp-native libmpc-native" - # yaml and dtschema are required for 5.16+ device tree validation, libyaml is checked # via pkgconfig, so must always be present, but we can wrap the others to make them # conditional @@ -50,9 +44,9 @@ PACKAGECONFIG[dt-validation] = ",,python3-dtschema-native" # we need the wrappers if validation isn't in the packageconfig DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'dt-validation', '', 'python3-dtschema-wrapper-native', d)}" -COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv32|qemuriscv64)" +COMPATIBLE_MACHINE = "^(qemuarmv5|qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv32|qemuriscv64|qemuloongarch64)$" -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" # Functionality flags KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" @@ -62,6 +56,6 @@ KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" KERNEL_VERSION_SANITY_SKIP = "1" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb deleted file mode 100644 index afcc715918..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb +++ /dev/null @@ -1,45 +0,0 @@ -KBRANCH ?= "v5.15/standard/preempt-rt/base" - -require recipes-kernel/linux/linux-yocto.inc - -# Skip processing of this recipe if it is not explicitly specified as the -# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying -# to build multiple virtual/kernel providers, e.g. as dependency of -# core-image-rt-sdk, core-image-rt. -python () { - if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt": - raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") -} - -SRCREV_machine ?= "2b74bd6a3a2341f079f914171bc92eadc8a7deaa" -SRCREV_meta ?= "fcf48627ea549df12be5d651521fc97a01b1986c" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}" - -LINUX_VERSION ?= "5.15.36" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "1" - -LINUX_KERNEL_TYPE = "preempt-rt" - -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" -KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" -KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb index 4c55a27abf..a44a08451a 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb @@ -1,7 +1,10 @@ -KBRANCH ?= "v5.10/standard/preempt-rt/base" +KBRANCH ?= "v6.6/standard/preempt-rt/base" require recipes-kernel/linux/linux-yocto.inc +# CVE exclusions +include recipes-kernel/linux/cve-exclusion_6.6.inc + # Skip processing of this recipe if it is not explicitly specified as the # PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying # to build multiple virtual/kernel providers, e.g. as dependency of @@ -11,29 +14,29 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "bd6e7290bc766ef13e42a1e37f75e6e708b4e317" -SRCREV_meta ?= "19e7547dd6617760d6094b7a42da1a718b5a96ee" +SRCREV_machine ?= "19813826de57a6425518c7b3daf8dd6a04d2321f" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" -LINUX_VERSION ?= "5.10.112" +LINUX_VERSION ?= "6.6.23" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" DEPENDS += "openssl-native util-linux-native" -PV = "${LINUX_VERSION}+git${SRCPV}" +PV = "${LINUX_VERSION}+git" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "1" LINUX_KERNEL_TYPE = "preempt-rt" -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)" +COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)$" -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" # Functionality flags KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" @@ -42,4 +45,4 @@ KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" +KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb deleted file mode 100644 index 42d5c105b7..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb +++ /dev/null @@ -1,32 +0,0 @@ -KBRANCH ?= "v5.10/standard/tiny/base" -KBRANCH:qemuarm ?= "v5.10/standard/tiny/arm-versatile-926ejs" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "5.10.112" -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -SRCREV_machine:qemuarm ?= "ab911ca906ec6d1551ba12373d4133ccaf7f83cc" -SRCREV_machine ?= "aadc46b05e5c77328bd3461578c770af3efa8944" -SRCREV_meta ?= "19e7547dd6617760d6094b7a42da1a718b5a96ee" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb index 9a708804c1..db9e252572 100644 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb @@ -1,11 +1,14 @@ -KBRANCH ?= "v5.15/standard/tiny/base" +KBRANCH ?= "v6.6/standard/tiny/base" LINUX_KERNEL_TYPE = "tiny" KCONFIG_MODE = "--allnoconfig" require recipes-kernel/linux/linux-yocto.inc -LINUX_VERSION ?= "5.15.36" +# CVE exclusions +include recipes-kernel/linux/cve-exclusion_6.6.inc + +LINUX_VERSION ?= "6.6.23" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" @@ -14,17 +17,17 @@ DEPENDS += "openssl-native util-linux-native" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine ?= "9107fb1e04c2da3d84e1967aeb7f5bc190423d5b" -SRCREV_meta ?= "fcf48627ea549df12be5d651521fc97a01b1986c" +SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" -PV = "${LINUX_VERSION}+git${SRCPV}" +PV = "${LINUX_VERSION}+git" -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}" +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5" +COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5)$" # Functionality flags KERNEL_FEATURES = "" -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc index cabc8f4975..0132fcffb3 100644 --- a/meta/recipes-kernel/linux/linux-yocto.inc +++ b/meta/recipes-kernel/linux/linux-yocto.inc @@ -31,8 +31,9 @@ DEPENDS:append:arc = " libgcc" KERNEL_CC:append:arc = " ${TOOLCHAIN_OPTIONS}" KERNEL_LD:append:arc = " ${TOOLCHAIN_OPTIONS}" -KERNEL_FEATURES:append:qemuall=" features/debug/printk.scc" +KERNEL_FEATURES:append:qemuall=" features/debug/printk.scc features/taskstats/taskstats.scc" +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'cfg/efi.scc', '', d)}" KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}" KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', 'cfg/fs/vfat.scc', '', d)}" @@ -46,7 +47,6 @@ LINUX_VERSION_EXTENSION ??= "-yocto-${LINUX_KERNEL_TYPE}" # Pick up shared functions inherit kernel inherit kernel-yocto -inherit pkgconfig B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build" @@ -59,8 +59,17 @@ do_install:append(){ # enable kernel-sample for oeqa/runtime/cases's ksample.py test KERNEL_FEATURES:append:qemuall=" features/kernel-sample/kernel-sample.scc" -KERNEL_DEBUG_OPTIONS ?= "stack" -KERNEL_EXTRA_ARGS:append:x86-64 = "${@bb.utils.contains('KERNEL_DEBUG_OPTIONS', 'stack', 'HOST_LIBELF_LIBS="-L${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig/../../../usr/lib/ -lelf"', '', d)}" +KERNEL_DEBUG ?= "" +# These used to be version specific, but are now common dependencies. New +# tools / dependencies will continue to be added in version specific recipes. +DEPENDS += '${@bb.utils.contains_any("ARCH", [ "x86", "arm64", "powerpc" ], "elfutils-native", "", d)}' +DEPENDS += "openssl-native util-linux-native" +DEPENDS += "gmp-native libmpc-native" + +# Some options depend on CONFIG_PAHOLE_VERSION, so need to make pahole-native available before do_kernel_configme +do_kernel_configme[depends] += '${@bb.utils.contains("KERNEL_DEBUG", "True", "pahole-native:do_populate_sysroot", "", d)}' + +EXTRA_OEMAKE += '${@bb.utils.contains("KERNEL_DEBUG", "True", "", "PAHOLE=false", d)}' do_devshell:prepend() { # setup native pkg-config variables (kconfig scripts call pkg-config directly, cannot generically be overriden to pkg-config-native) diff --git a/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/meta/recipes-kernel/linux/linux-yocto_5.10.bb deleted file mode 100644 index 3d3dad99b5..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.10.bb +++ /dev/null @@ -1,58 +0,0 @@ -KBRANCH ?= "v5.10/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH:qemuarm ?= "v5.10/standard/arm-versatile-926ejs" -KBRANCH:qemuarm64 ?= "v5.10/standard/qemuarm64" -KBRANCH:qemumips ?= "v5.10/standard/mti-malta32" -KBRANCH:qemuppc ?= "v5.10/standard/qemuppc" -KBRANCH:qemuriscv64 ?= "v5.10/standard/base" -KBRANCH:qemuriscv32 ?= "v5.10/standard/base" -KBRANCH:qemux86 ?= "v5.10/standard/base" -KBRANCH:qemux86-64 ?= "v5.10/standard/base" -KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64" - -SRCREV_machine:qemuarm ?= "1c2e2b55a9d13e749131d812797fa0ddbb56fde2" -SRCREV_machine:qemuarm64 ?= "9d22ba94a0b4466ead91f24b138fd8e5814dad21" -SRCREV_machine:qemumips ?= "c8f392c534a331f6ee6d40c8b1ff428fc3599f7f" -SRCREV_machine:qemuppc ?= "498fcdc5dc2f0b99001e50da239976430eacf676" -SRCREV_machine:qemuriscv64 ?= "6cf7dea05bd756513cf58c5ced8c6bf1d1f23c15" -SRCREV_machine:qemuriscv32 ?= "6cf7dea05bd756513cf58c5ced8c6bf1d1f23c15" -SRCREV_machine:qemux86 ?= "6cf7dea05bd756513cf58c5ced8c6bf1d1f23c15" -SRCREV_machine:qemux86-64 ?= "6cf7dea05bd756513cf58c5ced8c6bf1d1f23c15" -SRCREV_machine:qemumips64 ?= "a005c07acd278c86ddab4cd8bc7a1bfae4638414" -SRCREV_machine ?= "6cf7dea05bd756513cf58c5ced8c6bf1d1f23c15" -SRCREV_meta ?= "19e7547dd6617760d6094b7a42da1a718b5a96ee" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.10.112" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" -DEPENDS += "gmp-native libmpc-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "1" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" - -COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc" -KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" -KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc" -KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc" -KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc" -KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" -KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto_5.15.bb b/meta/recipes-kernel/linux/linux-yocto_5.15.bb deleted file mode 100644 index 0aef531659..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.15.bb +++ /dev/null @@ -1,70 +0,0 @@ -KBRANCH ?= "v5.15/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH:qemuarm ?= "v5.15/standard/arm-versatile-926ejs" -KBRANCH:qemuarm64 ?= "v5.15/standard/qemuarm64" -KBRANCH:qemumips ?= "v5.15/standard/mti-malta32" -KBRANCH:qemuppc ?= "v5.15/standard/qemuppc" -KBRANCH:qemuriscv64 ?= "v5.15/standard/base" -KBRANCH:qemuriscv32 ?= "v5.15/standard/base" -KBRANCH:qemux86 ?= "v5.15/standard/base" -KBRANCH:qemux86-64 ?= "v5.15/standard/base" -KBRANCH:qemumips64 ?= "v5.15/standard/mti-malta64" - -SRCREV_machine:qemuarm ?= "b5b62e5ba72e2ed669bbb53dd5707e27d777257e" -SRCREV_machine:qemuarm64 ?= "3f298fc00a40ed4f32805aba757c22c855f654b9" -SRCREV_machine:qemumips ?= "6d50f4ff023b65e226fd2e65feaa583d8b177ae3" -SRCREV_machine:qemuppc ?= "e51976427997a0b6f81e013ca6588e32c33cfeb0" -SRCREV_machine:qemuriscv64 ?= "ebfb1822e9f9726d8c587fc0f60cfed43fa0873e" -SRCREV_machine:qemuriscv32 ?= "ebfb1822e9f9726d8c587fc0f60cfed43fa0873e" -SRCREV_machine:qemux86 ?= "ebfb1822e9f9726d8c587fc0f60cfed43fa0873e" -SRCREV_machine:qemux86-64 ?= "ebfb1822e9f9726d8c587fc0f60cfed43fa0873e" -SRCREV_machine:qemumips64 ?= "1822ceafc13337881a81edeb7093b0c095d9efca" -SRCREV_machine ?= "ebfb1822e9f9726d8c587fc0f60cfed43fa0873e" -SRCREV_meta ?= "fcf48627ea549df12be5d651521fc97a01b1986c" - -# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll -# get the <version>/base branch, which is pure upstream -stable, and the same -# meta SRCREV as the linux-yocto-standard builds. Select your version using the -# normal PREFERRED_VERSION settings. -BBCLASSEXTEND = "devupstream:target" -SRCREV_machine:class-devupstream ?= "45451e8015a91de5d1a512c3e3d7373bbcb58fb0" -PN:class-devupstream = "linux-yocto-upstream" -KBRANCH:class-devupstream = "v5.15/base" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.15.36" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" -DEPENDS += "gmp-native libmpc-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "1" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" - -COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc" -KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" -KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" -KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" -KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc" -KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc" -KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc" - -INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel" - diff --git a/meta/recipes-kernel/linux/linux-yocto_6.6.bb b/meta/recipes-kernel/linux/linux-yocto_6.6.bb new file mode 100644 index 0000000000..43696db59b --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto_6.6.bb @@ -0,0 +1,72 @@ +KBRANCH ?= "v6.6/standard/base" + +require recipes-kernel/linux/linux-yocto.inc + +# CVE exclusions +include recipes-kernel/linux/cve-exclusion.inc +include recipes-kernel/linux/cve-exclusion_6.6.inc + +# board specific branches +KBRANCH:qemuarm ?= "v6.6/standard/arm-versatile-926ejs" +KBRANCH:qemuarm64 ?= "v6.6/standard/qemuarm64" +KBRANCH:qemumips ?= "v6.6/standard/mti-malta32" +KBRANCH:qemuppc ?= "v6.6/standard/qemuppc" +KBRANCH:qemuriscv64 ?= "v6.6/standard/base" +KBRANCH:qemuriscv32 ?= "v6.6/standard/base" +KBRANCH:qemux86 ?= "v6.6/standard/base" +KBRANCH:qemux86-64 ?= "v6.6/standard/base" +KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" +KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" + +SRCREV_machine:qemuarm ?= "ceb94a85299b59d8840ed7ed392b1d3e4c727678" +SRCREV_machine:qemuarm64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuloongarch64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemumips ?= "c79ffc89f8909f60de52005ef258db9752634eda" +SRCREV_machine:qemuppc ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuriscv64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuriscv32 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemux86 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemux86-64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemumips64 ?= "b0a73fa83073c8d7d7bc917bcbeac88d296ebe38" +SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" + +# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll +# get the <version>/base branch, which is pure upstream -stable, and the same +# meta SRCREV as the linux-yocto-standard builds. Select your version using the +# normal PREFERRED_VERSION settings. +BBCLASSEXTEND = "devupstream:target" +SRCREV_machine:class-devupstream ?= "5c7587f69194bc9fc714953ab4c7203e6e68885b" +PN:class-devupstream = "linux-yocto-upstream" +KBRANCH:class-devupstream = "v6.6/base" + +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH};protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" +LINUX_VERSION ?= "6.6.23" + +PV = "${LINUX_VERSION}+git" + +KMETA = "kernel-meta" +KCONF_BSP_AUDIT_LEVEL = "1" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" + +COMPATIBLE_MACHINE = "^(qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32|qemuloongarch64)$" + +# Functionality flags +KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc" +KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" +KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc cfg/net/mdio.scc" +KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc features/nf_tables/nft_test.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" +KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc" + +INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel" + diff --git a/meta/recipes-kernel/lttng/babeltrace2/run-ptest b/meta/recipes-kernel/lttng/babeltrace2/run-ptest index 72fe223436..71a9c81bfb 100755 --- a/meta/recipes-kernel/lttng/babeltrace2/run-ptest +++ b/meta/recipes-kernel/lttng/babeltrace2/run-ptest @@ -6,4 +6,14 @@ # test plan to raise ERRORs; this is just noise. makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD GREP=grep SED=sed PYTHON=python3" -exec make -C tests -k -s $makeargs $target 2>/dev/null +exec 2> error.log +make -C tests -k -s $makeargs $target +exitcode=$? +if [ -e error.log ]; then + cat error.log +fi +if [ -e tests/test-suite.log ]; then + cat tests/test-suite.log +fi + +exit $exitcode
\ No newline at end of file diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb index b48f07ea0d..d6c75d7580 100644 --- a/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb +++ b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb @@ -7,12 +7,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a458c13f18385b7bc5069a6d7b176e" DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" -SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0 \ +SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0;protocol=https \ file://run-ptest \ file://0001-tests-do-not-run-test-applications-from-.libs.patch \ file://0001-Make-manpages-multilib-identical.patch \ " -SRCREV = "23e8cf4e6fdc1d0b230e964dafac08a57e6228e6" +SRCREV = "0a6632f77801f3218a288604c646f8a39cb0d2c4" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$" S = "${WORKDIR}/git" @@ -28,8 +28,10 @@ FILES:${PN}-staticdev += "${libdir}/babeltrace2/plugins/*.a" FILES:${PN} += "${libdir}/babeltrace2/plugins/*.so" ASNEEDED = "" +LDFLAGS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld ptest', ' -fuse-ld=bfd ', '', d)}" -RDEPENDS:${PN}-ptest += "bash gawk python3" +# coreutils since we need full mktemp +RDEPENDS:${PN}-ptest += "bash gawk python3 make grep coreutils findutils" do_compile_ptest () { make -C tests all diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb index 19601e7d1b..f4d9b5e42a 100644 --- a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb +++ b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb @@ -7,10 +7,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa" DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" -SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5 \ +SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5;protocol=https \ file://run-ptest \ " -SRCREV = "054a54ae10b01a271afc4f19496c041b10fb414c" +SRCREV = "91c00f70884887ff5c4849a8e3d47e311a22ba9d" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>1(\.\d+)+)$" S = "${WORKDIR}/git" @@ -21,7 +21,7 @@ EXTRA_OECONF = "--disable-debug-info" ASNEEDED = "" -RDEPENDS:${PN}-ptest += "bash gawk" +RDEPENDS:${PN}-ptest += "bash gawk make" addtask do_patch_ptest_path after do_patch before do_configure do_patch_ptest_path () { diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch new file mode 100644 index 0000000000..9d5fd0de60 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch @@ -0,0 +1,93 @@ +From fec007d9630e010062cf5699a08460f71f46b527 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 08:54:42 -0400 +Subject: [PATCH 1/4] Fix: ASoC snd_doc_dapm on linux 6.9-rc1 + +See upstream commit: + + commit 7df3eb4cdb6bbfa482f51548b9fd47c2723c68ba + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:01 2024 +0100 + + ASoC: trace: add event to snd_soc_dapm trace events + + Add the event value to the snd_soc_dapm_start and snd_soc_dapm_done trace + events to make them more informative. + + Trace before: + + aplay-229 [000] 250.140309: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 250.167531: snd_soc_dapm_done: card=vscn-2046 + aplay-229 [000] 251.169588: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 251.195245: snd_soc_dapm_done: card=vscn-2046 + + Trace after: + + aplay-214 [000] 693.290612: snd_soc_dapm_start: card=vscn-2046 event=1 + aplay-214 [000] 693.315508: snd_soc_dapm_done: card=vscn-2046 event=1 + aplay-214 [000] 694.537349: snd_soc_dapm_start: card=vscn-2046 event=2 + aplay-214 [000] 694.563241: snd_soc_dapm_done: card=vscn-2046 event=2 + +Upstream-Status: Backport [88c4e0fe Fix: ASoC snd_doc_dapm on linux 6.9-rc1] + +Change-Id: If0d33544b8dd1dfb3d12ca9390892190fc0444b0 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 33 +++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/include/instrumentation/events/asoc.h b/include/instrumentation/events/asoc.h +index 21d13a0f..5126d4c1 100644 +--- a/include/instrumentation/events/asoc.h ++++ b/include/instrumentation/events/asoc.h +@@ -51,6 +51,38 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_card, snd_soc_bias_level_done, + + ) + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event), ++ ++ TP_FIELDS( ++ ctf_string(name, card->name) ++ ctf_integer(int, event, event) ++ ) ++) ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_start, ++ ++ asoc_snd_soc_dapm_start, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, ++ ++ asoc_snd_soc_dapm_done, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, + + TP_PROTO(struct snd_soc_card *card), +@@ -81,6 +113,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, + TP_ARGS(card) + + ) ++#endif + + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_widget, + +-- +2.39.2 + diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch deleted file mode 100644 index e988f7a3d5..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-compaction-migratepages-event-name.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c312bda00d2dc10ce5f6c1189acbefee5c6c8c6c Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Date: Tue, 29 Mar 2022 16:34:07 -0400 -Subject: [PATCH 01/10] Fix: compaction migratepages event name - -The commit "fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)" - -Triggers this warning: - - LTTng: event provider mismatch: The event name needs to start with provider name + _ + one or more letter, provider: compaction, event name: mm_compaction_migratepages - -Upstream-Status: Backport - -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: I01c7485af765084dafb33bf33ae392e60bfbf1e7 ---- - include/instrumentation/events/compaction.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h -index 340e41f5..15964537 100644 ---- a/include/instrumentation/events/compaction.h -+++ b/include/instrumentation/events/compaction.h -@@ -98,7 +98,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template, - #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ - - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) --LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages, -+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, -+ -+ compaction_migratepages, - - TP_PROTO(unsigned long nr_all, - unsigned int nr_succeeded), --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch index 76a5787c37..120528bf9c 100644 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch @@ -19,10 +19,10 @@ Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> src/Kbuild | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) -diff --git a/src/Kbuild b/src/Kbuild -index 7137874..04eb5c9 100644 ---- a/src/Kbuild -+++ b/src/Kbuild +Index: lttng-modules-2.13.10/src/Kbuild +=================================================================== +--- lttng-modules-2.13.10.orig/src/Kbuild ++++ lttng-modules-2.13.10/src/Kbuild @@ -2,10 +2,13 @@ ifdef CONFIG_LOCALVERSION # Check if dot-config is included. @@ -38,7 +38,7 @@ index 7137874..04eb5c9 100644 TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/.. lttng_check_linux_version = $(shell pwd)/include/linux/version.h -@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump-impl.o +@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump- obj-$(CONFIG_LTTNG) += probes/ obj-$(CONFIG_LTTNG) += lib/ obj-$(CONFIG_LTTNG) += tests/ diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch new file mode 100644 index 0000000000..6ea10ffc91 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch @@ -0,0 +1,132 @@ +From d8379ec6365a925db33cae94fb6783cdbdb6a922 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 09:40:29 -0400 +Subject: [PATCH 2/4] Fix: ASoC add component to set_bias_level events in linux + 6.9-rc1 + +See upstream commit: + + commit 6ef46a69ec32fe1cf56de67742fcd01af4bf48af + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:00 2024 +0100 + + ASoC: trace: add component to set_bias_level trace events + + The snd_soc_bias_level_start and snd_soc_bias_level_done trace events + currently look like: + + aplay-229 [000] 1250.140778: snd_soc_bias_level_start: card=vscn-2046 val=1 + aplay-229 [000] 1250.140784: snd_soc_bias_level_done: card=vscn-2046 val=1 + aplay-229 [000] 1250.140786: snd_soc_bias_level_start: card=vscn-2046 val=2 + aplay-229 [000] 1250.140788: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.140871: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140951: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140956: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140959: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.140961: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167219: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:1-21 [000] 1250.167222: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167232: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.167440: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:0-11 [000] 1250.167444: snd_soc_bias_level_done: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167497: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167506: snd_soc_bias_level_done: card=vscn-2046 val=3 + + There are clearly multiple calls, one per component, but they cannot be + discriminated from each other. + + Change the ftrace events to also print the component name, to make it clear + which part of the code is involved. This requires changing the passed value + from a struct snd_soc_card, where the DAPM context is not kwown, to a + struct snd_soc_dapm_context where it is obviously known but the a card + pointer is also available. + + With this change, the resulting trace becomes: + + aplay-247 [000] 1436.357332: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357338: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357340: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=2 + aplay-247 [000] 1436.357343: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=2 + kworker/u8:4-215 [000] 1436.357437: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:5-231 [000] 1436.357518: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357523: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357526: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:5-231 [000] 1436.357528: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:4-215 [000] 1436.383217: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:4-215 [000] 1436.383221: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:4-215 [000] 1436.383231: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:5-231 [000] 1436.383468: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:5-231 [000] 1436.383472: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:4-215 [000] 1436.383503: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=3 + kworker/u8:4-215 [000] 1436.383513: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=3 + +Upstream-Status: Backport [303434ab Fix: ASoC add component to set_bias_level events in linux 6.9-rc1] + +Change-Id: I959f1680c002acdf29828b968d3975247f5433d8 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 36 +++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +Index: lttng-modules-2.13.12/include/instrumentation/events/asoc.h +=================================================================== +--- lttng-modules-2.13.12.orig/include/instrumentation/events/asoc.h ++++ lttng-modules-2.13.12/include/instrumentation/events/asoc.h +@@ -10,6 +10,7 @@ + #include <lttng/kernel-version.h> + + #define DAPM_DIRECT "(direct)" ++#define DAPM_COMPONENT_NONE "(none)" + + #ifndef _TRACE_ASOC_DEF + #define _TRACE_ASOC_DEF +@@ -119,6 +120,40 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + ) + #endif + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_context, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val), ++ ++ TP_FIELDS( ++ ctf_string(name, dapm->card->name) ++ ctf_string(component, dapm->component ? dapm->component->name : DAPM_COMPONENT_NONE) ++ ctf_integer(int, val, val) ++ ) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_start, ++ ++ asoc_snd_soc_bias_level_start, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_done, ++ ++ asoc_snd_soc_bias_level_done, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_card, + + TP_PROTO(struct snd_soc_card *card, int val), +@@ -150,6 +185,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + TP_ARGS(card, val) + + ) ++#endif + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch deleted file mode 100644 index 00367eebf8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch +++ /dev/null @@ -1,48 +0,0 @@ -From a7eb2e3d0a4beb1ee80b132927641dd05ef2d542 Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Date: Mon, 4 Apr 2022 15:49:32 -0400 -Subject: [PATCH 02/10] Fix: tracepoint event: allow same provider and event - name - -Using the same name for the provider (TRACE_SYSTEM) and event name -causes a compilation error because the same identifiers are emitted -twice. - -Fix this by prefixing the provider identifier with -"__provider_event_desc___". - -Upstream-Status: Backport - -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: I8cdf8f859e35b8bd5c19737860d12f1ed546dfc2 ---- - include/lttng/tracepoint-event-impl.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/include/lttng/tracepoint-event-impl.h b/include/lttng/tracepoint-event-impl.h -index 38b1dc43..dcb22247 100644 ---- a/include/lttng/tracepoint-event-impl.h -+++ b/include/lttng/tracepoint-event-impl.h -@@ -1255,7 +1255,7 @@ static const struct lttng_kernel_event_desc __event_desc___##_map = { \ - #define TP_ID1(_token, _system) _token##_system - #define TP_ID(_token, _system) TP_ID1(_token, _system) - --static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE_SYSTEM)[] = { -+static const struct lttng_kernel_event_desc * const TP_ID(__provider_event_desc___, TRACE_SYSTEM)[] = { - #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) - }; - -@@ -1274,8 +1274,8 @@ static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE - /* non-const because list head will be modified when registered. */ - static __used struct lttng_kernel_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = { - .provider_name = __stringify(TRACE_SYSTEM), -- .event_desc = TP_ID(__event_desc___, TRACE_SYSTEM), -- .nr_events = ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)), -+ .event_desc = TP_ID(__provider_event_desc___, TRACE_SYSTEM), -+ .nr_events = ARRAY_SIZE(TP_ID(__provider_event_desc___, TRACE_SYSTEM)), - .head = { NULL, NULL }, - .lazy_init_head = { NULL, NULL }, - .lazy = 0, --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch new file mode 100644 index 0000000000..66c48ebe8f --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch @@ -0,0 +1,81 @@ +From f4a6415f8d5fa447868d1fdc7119e0a328966379 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 10:30:32 -0400 +Subject: [PATCH 3/4] Fix: mm_compaction_migratepages changed in linux 6.9-rc1 + +See upstream commit: + + commit ab755bf4249b992fc2140d615ab0a686d50765b4 + Author: Baolin Wang <baolin.wang@linux.alibaba.com> + Date: Tue Feb 20 14:16:31 2024 +0800 + + mm: compaction: update the cc->nr_migratepages when allocating or freeing the freepages + + Currently we will use 'cc->nr_freepages >= cc->nr_migratepages' comparison + to ensure that enough freepages are isolated in isolate_freepages(), + however it just decreases the cc->nr_freepages without updating + cc->nr_migratepages in compaction_alloc(), which will waste more CPU + cycles and cause too many freepages to be isolated. + + So we should also update the cc->nr_migratepages when allocating or + freeing the freepages to avoid isolating excess freepages. And I can see + fewer free pages are scanned and isolated when running thpcompact on my + Arm64 server: + + k6.7 k6.7_patched + Ops Compaction pages isolated 120692036.00 118160797.00 + Ops Compaction migrate scanned 131210329.00 154093268.00 + Ops Compaction free scanned 1090587971.00 1080632536.00 + Ops Compact scan efficiency 12.03 14.26 + + Moreover, I did not see an obvious latency improvements, this is likely + because isolating freepages is not the bottleneck in the thpcompact test + case. + + k6.7 k6.7_patched + Amean fault-both-1 1089.76 ( 0.00%) 1080.16 * 0.88%* + Amean fault-both-3 1616.48 ( 0.00%) 1636.65 * -1.25%* + Amean fault-both-5 2266.66 ( 0.00%) 2219.20 * 2.09%* + Amean fault-both-7 2909.84 ( 0.00%) 2801.90 * 3.71%* + Amean fault-both-12 4861.26 ( 0.00%) 4733.25 * 2.63%* + Amean fault-both-18 7351.11 ( 0.00%) 6950.51 * 5.45%* + Amean fault-both-24 9059.30 ( 0.00%) 9159.99 * -1.11%* + Amean fault-both-30 10685.68 ( 0.00%) 11399.02 * -6.68%* + +Upstream-Status: Backport [175fe77c Fix: mm_compaction_migratepages changed in linux 6.9-rc1] + +Change-Id: I103a43fd1b549360b3fc978fd409b7c17ef3e192 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/compaction.h | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +Index: lttng-modules-2.13.12/include/instrumentation/events/compaction.h +=================================================================== +--- lttng-modules-2.13.12.orig/include/instrumentation/events/compaction.h ++++ lttng-modules-2.13.12/include/instrumentation/events/compaction.h +@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(comp + + #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \ ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, ++ ++ compaction_migratepages, ++ ++ TP_PROTO(unsigned int nr_migratepages, ++ unsigned int nr_succeeded), ++ ++ TP_ARGS(nr_migratepages, nr_succeeded), ++ ++ TP_FIELDS( ++ ctf_integer(unsigned long, nr_migrated, nr_succeeded) ++ ctf_integer(unsigned long, nr_failed, nr_migratepages - nr_succeeded) ++ ) ++) ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \ + LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0)) + LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, + diff --git a/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch deleted file mode 100644 index afe514de82..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 8e52fd71e693619f7a58de2692e59f0c826e9988 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 13:52:57 -0400 -Subject: [PATCH 03/10] fix: sched/tracing: Don't re-read p->state when - emitting sched_switch event (v5.18) - -See upstream commit : - - commit fa2c3254d7cfff5f7a916ab928a562d1165f17bb - Author: Valentin Schneider <valentin.schneider@arm.com> - Date: Thu Jan 20 16:25:19 2022 +0000 - - sched/tracing: Don't re-read p->state when emitting sched_switch event - - As of commit - - c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") - - the following sequence becomes possible: - - p->__state = TASK_INTERRUPTIBLE; - __schedule() - deactivate_task(p); - ttwu() - READ !p->on_rq - p->__state=TASK_WAKING - trace_sched_switch() - __trace_sched_switch_state() - task_state_index() - return 0; - - TASK_WAKING isn't in TASK_REPORT, so the task appears as TASK_RUNNING in - the trace event. - - Prevent this by pushing the value read from __schedule() down the trace - event. - -Upstream-Status: Backport - -Change-Id: I46743cd006be4b4d573cae2d77df7d6d16744d04 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/sched.h | 88 +++++++++++++++++++++++--- - 1 file changed, 78 insertions(+), 10 deletions(-) - -diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h -index 91953a6f..339bec94 100644 ---- a/include/instrumentation/events/sched.h -+++ b/include/instrumentation/events/sched.h -@@ -20,7 +20,37 @@ - #ifndef _TRACE_SCHED_DEF_ - #define _TRACE_SCHED_DEF_ - --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+ -+static inline long __trace_sched_switch_state(bool preempt, -+ unsigned int prev_state, -+ struct task_struct *p) -+{ -+ unsigned int state; -+ -+#ifdef CONFIG_SCHED_DEBUG -+ BUG_ON(p != current); -+#endif /* CONFIG_SCHED_DEBUG */ -+ -+ /* -+ * Preemption ignores task state, therefore preempted tasks are always -+ * RUNNING (we will not have dequeued if state != RUNNING). -+ */ -+ if (preempt) -+ return TASK_REPORT_MAX; -+ -+ /* -+ * task_state_index() uses fls() and returns a value from 0-8 range. -+ * Decrement it by 1 (except TASK_RUNNING state i.e 0) before using -+ * it for left shift operation to get the correct task->state -+ * mapping. -+ */ -+ state = __task_state_index(prev_state, p->exit_state); -+ -+ return state ? (1 << (state - 1)) : state; -+} -+ -+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0)) - - static inline long __trace_sched_switch_state(bool preempt, struct task_struct *p) - { -@@ -321,43 +351,81 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new, - /* - * Tracepoint for task switches, performed by the scheduler: - */ -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) - LTTNG_TRACEPOINT_EVENT(sched_switch, - --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) - TP_PROTO(bool preempt, -- struct task_struct *prev, -- struct task_struct *next), -+ unsigned int prev_state, -+ struct task_struct *prev, -+ struct task_struct *next), - -- TP_ARGS(preempt, prev, next), -+ TP_ARGS(preempt, prev_state, prev, next), -+ -+ TP_FIELDS( -+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) -+ ctf_integer(pid_t, prev_tid, prev->pid) -+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) -+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM -+ ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev)) - #else -- TP_PROTO(struct task_struct *prev, -+ ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev)) -+#endif -+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) -+ ctf_integer(pid_t, next_tid, next->pid) -+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) -+ ) -+) -+ -+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) -+ -+LTTNG_TRACEPOINT_EVENT(sched_switch, -+ -+ TP_PROTO(bool preempt, -+ struct task_struct *prev, - struct task_struct *next), - -- TP_ARGS(prev, next), --#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) */ -+ TP_ARGS(preempt, prev, next), - - TP_FIELDS( - ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) - ctf_integer(pid_t, prev_tid, prev->pid) - ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) - #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM - ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev)) - #else - ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev)) - #endif -+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) -+ ctf_integer(pid_t, next_tid, next->pid) -+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) -+ ) -+) -+ - #else -+ -+LTTNG_TRACEPOINT_EVENT(sched_switch, -+ -+ TP_PROTO(struct task_struct *prev, -+ struct task_struct *next), -+ -+ TP_ARGS(prev, next), -+ -+ TP_FIELDS( -+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN) -+ ctf_integer(pid_t, prev_tid, prev->pid) -+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) - #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM - ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(prev)) - #else - ctf_integer(long, prev_state, __trace_sched_switch_state(prev)) --#endif - #endif - ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) - ctf_integer(pid_t, next_tid, next->pid) - ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO) - ) - ) -+#endif - - /* - * Tracepoint for a task being migrated: --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch new file mode 100644 index 0000000000..59ef4f9313 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch @@ -0,0 +1,57 @@ +From 217bc2e4685050dddce9bdd2557b64f6b8c16622 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 10:53:46 -0400 +Subject: [PATCH 4/4] Fix: dev_base_lock removed in linux 6.9-rc1 + +See upstream commit: + + commit 1b3ef46cb7f2618cc0b507393220a69810f6da12 + Author: Eric Dumazet <edumazet@google.com> + Date: Tue Feb 13 06:32:45 2024 +0000 + + net: remove dev_base_lock + + dev_base_lock is not needed anymore, all remaining users also hold RTNL. + +Upstream-Status: Backport [52eb2ee9 Fix: dev_base_lock removed in linux 6.9-rc1] + +Change-Id: I6b07e6eed07fd398302ca14d23162ed24d74df15 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + src/lttng-statedump-impl.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +Index: lttng-modules-2.13.12/src/lttng-statedump-impl.c +=================================================================== +--- lttng-modules-2.13.12.orig/src/lttng-statedump-impl.c ++++ lttng-modules-2.13.12/src/lttng-statedump-impl.c +@@ -392,6 +392,20 @@ void lttng_enumerate_device(struct lttng + } + } + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++static ++int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) ++{ ++ struct net_device *dev; ++ ++ rtnl_lock(); ++ for_each_netdev(&init_net, dev) ++ lttng_enumerate_device(session, dev); ++ rtnl_unlock(); ++ ++ return 0; ++} ++#else + static + int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) + { +@@ -404,6 +418,7 @@ int lttng_enumerate_network_ip_interface + + return 0; + } ++#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) */ + #else /* CONFIG_INET */ + static inline + int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) diff --git a/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch b/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch deleted file mode 100644 index 9248ffe4ff..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0004-fix-block-remove-genhd.h-v5.18.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 868e0b6db59159197c2cec3550fa4ad5e6572bc5 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 13:54:59 -0400 -Subject: [PATCH 04/10] fix: block: remove genhd.h (v5.18) - -See upstream commit : - - commit 322cbb50de711814c42fb088f6d31901502c711a - Author: Christoph Hellwig <hch@lst.de> - Date: Mon Jan 24 10:39:13 2022 +0100 - - block: remove genhd.h - - There is no good reason to keep genhd.h separate from the main blkdev.h - header that includes it. So fold the contents of genhd.h into blkdev.h - and remove genhd.h entirely. - -Upstream-Status: Backport - -Change-Id: I7cf2aaa3a4c133320b95f2edde49f790f9515dbd -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/wrapper/genhd.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/include/wrapper/genhd.h b/include/wrapper/genhd.h -index 3c6dbcbe..4a59b68e 100644 ---- a/include/wrapper/genhd.h -+++ b/include/wrapper/genhd.h -@@ -12,7 +12,11 @@ - #ifndef _LTTNG_WRAPPER_GENHD_H - #define _LTTNG_WRAPPER_GENHD_H - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+#include <linux/blkdev.h> -+#else - #include <linux/genhd.h> -+#endif - - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) - #define LTTNG_GENHD_FL_HIDDEN GENHD_FL_HIDDEN --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch b/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch deleted file mode 100644 index 0751827613..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 2bc7cb7193124d20aa4e1b5dbad0410bfb97a470 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 14:12:13 -0400 -Subject: [PATCH 05/10] fix: scsi: block: Remove REQ_OP_WRITE_SAME support - (v5.18) - -See upstream commit : - - commit 73bd66d9c834220579c881a3eb020fd8917075d8 - Author: Christoph Hellwig <hch@lst.de> - Date: Wed Feb 9 09:28:28 2022 +0100 - - scsi: block: Remove REQ_OP_WRITE_SAME support - - No more users of REQ_OP_WRITE_SAME or drivers implementing it are left, - so remove the infrastructure. - -Upstream-Status: Backport - -Change-Id: Ifbff71f79f8b590436fc7cb79f82d90c6e033d84 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/block.h | 32 ++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - -diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h -index 3e1104d7..050a59a2 100644 ---- a/include/instrumentation/events/block.h -+++ b/include/instrumentation/events/block.h -@@ -66,6 +66,37 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, - #define lttng_bio_op(bio) bio_op(bio) - #define lttng_bio_rw(bio) ((bio)->bi_opf) - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM -+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ -+ ctf_enum(block_rq_type, type, rwbs, \ -+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ -+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ -+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ -+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ -+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ -+ ( 0 )))))) \ -+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ -+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ -+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ -+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ -+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) -+#else -+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ -+ ctf_integer(type, rwbs, \ -+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ -+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ -+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ -+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ -+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ -+ ( 0 )))))) \ -+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ -+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ -+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ -+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ -+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) -+#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ -+#else - #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM - #define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ - ctf_enum(block_rq_type, type, rwbs, \ -@@ -95,6 +126,7 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, - | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ - | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) - #endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ -+#endif - - #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0)) - --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch b/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch deleted file mode 100644 index 9c2f70d4af..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0006-fix-random-remove-unused-tracepoints-v5.18.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 369d82bb1746447514c877088d7c5fd0f39140f8 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 14:33:42 -0400 -Subject: [PATCH 06/10] fix: random: remove unused tracepoints (v5.18) - -See upstream commit : - - commit 14c174633f349cb41ea90c2c0aaddac157012f74 - Author: Jason A. Donenfeld <Jason@zx2c4.com> - Date: Thu Feb 10 16:40:44 2022 +0100 - - random: remove unused tracepoints - - These explicit tracepoints aren't really used and show sign of aging. - It's work to keep these up to date, and before I attempted to keep them - up to date, they weren't up to date, which indicates that they're not - really used. These days there are better ways of introspecting anyway. - -Upstream-Status: Backport - -Change-Id: I3b8c3e2732e7efdd76ce63204ac53a48784d0df6 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - src/probes/Kbuild | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/probes/Kbuild b/src/probes/Kbuild -index e26b4359..8d6ff0f2 100644 ---- a/src/probes/Kbuild -+++ b/src/probes/Kbuild -@@ -187,8 +187,11 @@ ifneq ($(CONFIG_FRAME_WARN),0) - CFLAGS_lttng-probe-printk.o += -Wframe-larger-than=2200 - endif - -+# Introduced in v3.6, remove in v5.18 - obj-$(CONFIG_LTTNG) += $(shell \ -- if [ $(VERSION) -ge 4 \ -+ if [ \( ! \( $(VERSION) -ge 6 -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) \) \ -+ -a \ -+ $(VERSION) -ge 4 \ - -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 6 \) \ - -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 5 -a $(SUBLEVEL) -ge 2 \) \ - -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 4 -a $(SUBLEVEL) -ge 9 \) \ --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch b/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch deleted file mode 100644 index effd37ffe1..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 3c46ddc134621dba65030263aa321dd6bdae3ba3 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 15:02:10 -0400 -Subject: [PATCH 07/10] fix: kprobes: Use rethook for kretprobe if possible - (v5.18) - -See upstream commit : - - commit 73f9b911faa74ac5107879de05c9489c419f41bb - Author: Masami Hiramatsu <mhiramat@kernel.org> - Date: Sat Mar 26 11:27:05 2022 +0900 - - kprobes: Use rethook for kretprobe if possible - - Use rethook for kretprobe function return hooking if the arch sets - CONFIG_HAVE_RETHOOK=y. In this case, CONFIG_KRETPROBE_ON_RETHOOK is - set to 'y' automatically, and the kretprobe internal data fields - switches to use rethook. If not, it continues to use kretprobe - specific function return hooks. - -Upstream-Status: Backport - -Change-Id: I2b7670dc04e4769c1e3c372582ad2f555f6d7a66 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/wrapper/kprobes.h | 17 +++++++++++++++++ - src/probes/lttng-kretprobes.c | 2 +- - 2 files changed, 18 insertions(+), 1 deletion(-) - -diff --git a/include/wrapper/kprobes.h b/include/wrapper/kprobes.h -index b546d615..51d32b7c 100644 ---- a/include/wrapper/kprobes.h -+++ b/include/wrapper/kprobes.h -@@ -29,4 +29,21 @@ struct kretprobe *lttng_get_kretprobe(struct kretprobe_instance *ri) - - #endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) */ - -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+static inline -+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri) -+{ -+ return get_kretprobe_retaddr(ri); -+} -+ -+#else -+ -+static inline -+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri) -+{ -+ return (unsigned long) ri->ret_addr; -+} -+#endif -+ - #endif /* _LTTNG_WRAPPER_KPROBES_H */ -diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c -index 5cb2e953..565df739 100644 ---- a/src/probes/lttng-kretprobes.c -+++ b/src/probes/lttng-kretprobes.c -@@ -81,7 +81,7 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, - int ret; - - payload.ip = (unsigned long) lttng_get_kretprobe(krpi)->kp.addr; -- payload.parent_ip = (unsigned long) krpi->ret_addr; -+ payload.parent_ip = lttng_get_kretprobe_retaddr(krpi); - - lib_ring_buffer_ctx_init(&ctx, event_recorder, sizeof(payload), - lttng_alignof(payload), <tng_probe_ctx); --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch b/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch deleted file mode 100644 index 13c504b859..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch +++ /dev/null @@ -1,44 +0,0 @@ -From e8d2f286b5b208ac8870d0a9c167b170e96169b3 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 15:08:48 -0400 -Subject: [PATCH 08/10] fix: scsi: core: Remove <scsi/scsi_request.h> (v5.18) - -See upstream commit : - - commit 26440303310591e29121964ede0048583cb3126d - Author: Christoph Hellwig <hch@lst.de> - Date: Thu Feb 24 18:55:52 2022 +0100 - - scsi: core: Remove <scsi/scsi_request.h> - - This header is empty now except for an include of <linux/blk-mq.h>, so - remove it. - -Upstream-Status: Backport - -Change-Id: Ic8ee3352f1e8bddfcd44c31be9b788db82f183aa -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/block.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h -index 050a59a2..882e6e08 100644 ---- a/include/instrumentation/events/block.h -+++ b/include/instrumentation/events/block.h -@@ -11,9 +11,9 @@ - #include <linux/trace_seq.h> - #include <lttng/kernel-version.h> - --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) -+#if LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) - #include <scsi/scsi_request.h> --#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ -+#endif /* LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) */ - - #ifndef _TRACE_BLOCK_DEF_ - #define _TRACE_BLOCK_DEF_ --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch b/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch deleted file mode 100644 index 90fec9dc58..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0009-Rename-genhd-wrapper-to-blkdev.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 82fbf9d383ff9069808fb0f5f75c660098dbae52 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Tue, 5 Apr 2022 14:57:41 -0400 -Subject: [PATCH 09/10] Rename genhd wrapper to blkdev - -The genhd.h header was folded into blkdev.h in v5.18, rename our wrapper -to follow upstream. - -Upstream-Status: Backport - -Change-Id: I4ec94fb94d11712dd20f0680aea1de77fbfa9d17 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/wrapper/{genhd.h => blkdev.h} | 10 +++++----- - src/lttng-statedump-impl.c | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) - rename include/wrapper/{genhd.h => blkdev.h} (93%) - -diff --git a/include/wrapper/genhd.h b/include/wrapper/blkdev.h -similarity index 93% -rename from include/wrapper/genhd.h -rename to include/wrapper/blkdev.h -index 4a59b68e..0d5ad90f 100644 ---- a/include/wrapper/genhd.h -+++ b/include/wrapper/blkdev.h -@@ -1,6 +1,6 @@ - /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) - * -- * wrapper/genhd.h -+ * wrapper/blkdev.h - * - * wrapper around block layer functions and data structures. Using - * KALLSYMS to get its address when available, else we need to have a -@@ -9,8 +9,8 @@ - * Copyright (C) 2011-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - */ - --#ifndef _LTTNG_WRAPPER_GENHD_H --#define _LTTNG_WRAPPER_GENHD_H -+#ifndef _LTTNG_WRAPPER_BLKDEV_H -+#define _LTTNG_WRAPPER_BLKDEV_H - - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) - #include <linux/blkdev.h> -@@ -45,7 +45,7 @@ struct class *wrapper_get_block_class(void) - /* - * Canary function to check for 'block_class' at compile time. - * -- * From 'include/linux/genhd.h': -+ * From 'include/linux/blkdev.h': - * - * extern struct class block_class; - */ -@@ -104,4 +104,4 @@ struct device_type *wrapper_get_disk_type(void) - - #endif - --#endif /* _LTTNG_WRAPPER_GENHD_H */ -+#endif /* _LTTNG_WRAPPER_BLKDEV_H */ -diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c -index 4d7b2921..0e753090 100644 ---- a/src/lttng-statedump-impl.c -+++ b/src/lttng-statedump-impl.c -@@ -41,7 +41,7 @@ - #include <wrapper/namespace.h> - #include <wrapper/irq.h> - #include <wrapper/tracepoint.h> --#include <wrapper/genhd.h> -+#include <wrapper/blkdev.h> - #include <wrapper/file.h> - #include <wrapper/fdtable.h> - #include <wrapper/sched.h> --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch b/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch deleted file mode 100644 index 892d3f0d23..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch +++ /dev/null @@ -1,106 +0,0 @@ -From f9208dc00756dfa0a2f191799722030bdf3f793d Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 4 Apr 2022 15:14:01 -0400 -Subject: [PATCH 10/10] fix: mm: compaction: cleanup the compaction trace - events (v5.18) - -See upstream commit : - - commit abd4349ff9b8d242376b67711254221f64f447c7 - Author: Baolin Wang <baolin.wang@linux.alibaba.com> - Date: Tue Mar 22 14:45:56 2022 -0700 - - mm: compaction: cleanup the compaction trace events - - As Steven suggested [1], we should access the pointers from the trace - event to avoid dereferencing them to the tracepoint function when the - tracepoint is disabled. - - [1] https://lkml.org/lkml/2021/11/3/409 - -Upstream-Status: Backport - -Change-Id: I6c08250df8596e8dbc76780ae5d95c899c12e6fe -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/compaction.h | 17 ++++++++++++++++- - src/probes/Kbuild | 17 ++++++++++++++++- - src/probes/lttng-probe-compaction.c | 5 +++++ - 3 files changed, 37 insertions(+), 2 deletions(-) - -diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h -index 15964537..ecae39a8 100644 ---- a/include/instrumentation/events/compaction.h -+++ b/include/instrumentation/events/compaction.h -@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template, - - #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ - --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, -+ -+ compaction_migratepages, -+ -+ TP_PROTO(struct compact_control *cc, -+ unsigned int nr_succeeded), -+ -+ TP_ARGS(cc, nr_succeeded), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned long, nr_migrated, nr_succeeded) -+ ctf_integer(unsigned long, nr_failed, cc->nr_migratepages - nr_succeeded) -+ ) -+) -+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) - LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, - - compaction_migratepages, -diff --git a/src/probes/Kbuild b/src/probes/Kbuild -index 8d6ff0f2..54784477 100644 ---- a/src/probes/Kbuild -+++ b/src/probes/Kbuild -@@ -167,7 +167,22 @@ ifneq ($(CONFIG_BTRFS_FS),) - endif # $(wildcard $(btrfs_dep)) - endif # CONFIG_BTRFS_FS - --obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o -+# A dependency on internal header 'mm/internal.h' was introduced in v5.18 -+compaction_dep = $(srctree)/mm/internal.h -+compaction_dep_wildcard = $(wildcard $(compaction_dep)) -+compaction_dep_check = $(shell \ -+if [ \( $(VERSION) -ge 6 \ -+ -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) -a \ -+ -z "$(compaction_dep_wildcard)" ] ; then \ -+ echo "warn" ; \ -+else \ -+ echo "ok" ; \ -+fi ;) -+ifeq ($(compaction_dep_check),ok) -+ obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o -+else -+ $(warning Files $(compaction_dep) not found. Probe "compaction" is disabled. Use full kernel source tree to enable it.) -+endif # $(wildcard $(compaction_dep)) - - ifneq ($(CONFIG_EXT4_FS),) - ext4_dep = $(srctree)/fs/ext4/*.h -diff --git a/src/probes/lttng-probe-compaction.c b/src/probes/lttng-probe-compaction.c -index f8ddf384..ffaf45f0 100644 ---- a/src/probes/lttng-probe-compaction.c -+++ b/src/probes/lttng-probe-compaction.c -@@ -10,6 +10,11 @@ - - #include <linux/module.h> - #include <lttng/tracer.h> -+#include <lttng/kernel-version.h> -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)) -+#include "../mm/internal.h" -+#endif - - /* - * Create the tracepoint static inlines from the kernel to validate that our --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.3.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb index 2b00534e53..95d5e2d615 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_2.13.3.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb @@ -10,22 +10,16 @@ inherit module include lttng-platforms.inc SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0001-Fix-compaction-migratepages-event-name.patch \ - file://0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch \ - file://0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch \ - file://0004-fix-block-remove-genhd.h-v5.18.patch \ - file://0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch \ - file://0006-fix-random-remove-unused-tracepoints-v5.18.patch \ - file://0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch \ - file://0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch \ - file://0009-Rename-genhd-wrapper-to-blkdev.patch \ - file://0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch \ - " + file://0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch \ + file://0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch \ + file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \ + file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \ + " # Use :append here so that the patch is applied also when using devupstream SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch" -SRC_URI[sha256sum] = "7cf1acbb50b84116acc9b4281b81dcc2643d6018bbd1e8514ad1270239896c4b" +SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79" export INSTALL_MOD_DIR="kernel/lttng-modules" @@ -46,6 +40,6 @@ python do_package:prepend() { } BBCLASSEXTEND = "devupstream:target" -SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13" +SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13;protocol=https" SRCREV:class-devupstream = "7584cfc04914cb0842a986e9808686858b9c8630" SRCREV_FORMAT ?= "lttng_git" diff --git a/meta/recipes-kernel/lttng/lttng-platforms.inc b/meta/recipes-kernel/lttng/lttng-platforms.inc index 933c65d85d..900e36df82 100644 --- a/meta/recipes-kernel/lttng/lttng-platforms.inc +++ b/meta/recipes-kernel/lttng/lttng-platforms.inc @@ -15,3 +15,7 @@ LTTNGUST:arc = "" COMPATIBLE_HOST:arc:pn-lttng-ust = "null" +# Whether the platform supports lttng-tools +# lttng-tools requires SYS_ppoll and SYS_pselect6 which are not supported on riscv32. +# It's also turned off for riscv32 in meta-riscv. See https://github.com/riscv/meta-riscv/blob/master/conf/layer.conf +COMPATIBLE_HOST:riscv32:pn-lttng-tools = "null" diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch new file mode 100644 index 0000000000..3286dfb5c1 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch @@ -0,0 +1,56 @@ +From 6b45c5f80d20e7bbf3d98c1fa17d2cf8716af3bb Mon Sep 17 00:00:00 2001 +From: Xiangyu Chen <xiangyu.chen@windriver.com> +Date: Mon, 25 Mar 2024 18:20:14 +0800 +Subject: [PATCH] Fix: rotation-destroy-flush: fix session daemon abort if no + kernel module present + +Testing rotation-destroy-flush when no lttng kernel modules present, it would +be failed with error message: + + Error: Unable to load required module lttng-ring-buffer-client-discard + not ok 1 - Start session daemon + Failed test 'Start session daemon' + not ok 2 - Create session rotation_destroy_flush in -o /tmp/tmp.test_rot ... + ... + +This because test script that sets the LTTNG_ABORT_ON_ERROR environment +variable. It's this environment variable that causes the sessiond to handle the +kernel module loading failure as an abort rather than a warning. + +Using "check_skip_kernel_test" to detect whether the kernel module fails to +load is expected or not. If the failure is expected, the script won't set that +environment variable any more. + +Fixes: 3a174400 +("tests:add check_skip_kernel_test to check root user and lttng kernel modules") + +Upstream-Status: Submitted [https://review.lttng.org/c/lttng-tools/+/12155] + +Change-Id: I371e9ba717613e2940186f710cf3cccd35baed6c +Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> +--- + .../ust/rotation-destroy-flush/test_rotation_destroy_flush | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +index 669bcbc43..64161768f 100755 +--- a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush ++++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +@@ -23,11 +23,11 @@ SIZE_LIMIT=$PAGE_SIZE + NR_ITER=10 + NUM_TESTS=$((15*$NR_ITER)) + +-# Ensure the daemons invoke abort on error. +-export LTTNG_ABORT_ON_ERROR=1 +- + source $TESTDIR/utils/utils.sh + ++# Ensure the daemons invoke abort on error. ++check_skip_kernel_test || export LTTNG_ABORT_ON_ERROR=1 ++ + # MUST set TESTDIR before calling those functions + function run_app() + { +-- +2.25.1 + diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch new file mode 100644 index 0000000000..4e21d1e9f1 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch @@ -0,0 +1,74 @@ +From 74b3844737b03492756b4f896c938b504b069f14 Mon Sep 17 00:00:00 2001 +From: Jérémie Galarneau <jeremie.galarneau@efficios.com> +Date: Tue, 17 Jan 2023 16:57:35 -0500 +Subject: [PATCH] compat: off64_t is not defined by musl + +This helps compile with latest musl, where off64_t is not defined unless +_LARGEFILE64_SOURCE is defined. On glibc, _LARGEFILE64_SOURCE is defined +if _GNU_SOURCE is defined, so the problem is only seen with musl. + +Since the project uses AC_SYS_LARGEFILE, which from the autoconf doc: +"arrange for 64-bit file offsets, known as large-file support." + +As such, it is safe to assume off_t is 64-bit wide. This is checked by a +static_assert to catch any platform where autoconf would let a 32-bit +off_t slip. + +Upstream-Status: Submitted [https://review.lttng.org/c/lttng-tools/+/9268] +Reported-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> +Change-Id: If2c6007a8c85bc3f3065002af8a7538b882fb4a8 +--- + +--- a/src/common/compat/compat-fcntl.c ++++ b/src/common/compat/compat-fcntl.c +@@ -8,14 +8,17 @@ + #define _LGPL_SOURCE + #include <common/compat/fcntl.h> + #include <common/macros.h> ++#include <common/bug.h> ++#include <stdint.h> + #include <unistd.h> + + #ifdef __linux__ + + LTTNG_HIDDEN +-int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, ++int compat_sync_file_range(int fd, off_t offset, off_t nbytes, + unsigned int flags) + { ++ LTTNG_BUILD_BUG_ON(sizeof(off_t) != sizeof(int64_t)); + #ifdef HAVE_SYNC_FILE_RANGE + return sync_file_range(fd, offset, nbytes, flags); + #else +--- a/src/common/compat/fcntl.h ++++ b/src/common/compat/fcntl.h +@@ -13,16 +13,12 @@ + + #include <common/compat/errno.h> + +-#if (defined(__CYGWIN__)) +-typedef long long off64_t; +-#endif +- + #if (defined(__FreeBSD__) || defined(__sun__)) + typedef off64_t loff_t; + #endif + + #ifdef __linux__ +-extern int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, ++extern int compat_sync_file_range(int fd, off_t offset, off_t nbytes, + unsigned int flags); + #define lttng_sync_file_range(fd, offset, nbytes, flags) \ + compat_sync_file_range(fd, offset, nbytes, flags) +@@ -37,8 +33,8 @@ extern int compat_sync_file_range(int fd + #define SYNC_FILE_RANGE_WAIT_BEFORE 0 + #define SYNC_FILE_RANGE_WRITE 0 + +-static inline int lttng_sync_file_range(int fd, off64_t offset, +- off64_t nbytes, unsigned int flags) ++static inline int lttng_sync_file_range(int fd, off_t offset, ++ off_t nbytes, unsigned int flags) + { + return -ENOSYS; + } diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch new file mode 100644 index 0000000000..2671a1908e --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch @@ -0,0 +1,1246 @@ +From cf558f802b259a33605fe0ede4d74ae2ff6be699 Mon Sep 17 00:00:00 2001 +From: Xiangyu Chen <xiangyu.chen@windriver.com> +Date: Mon, 12 Feb 2024 09:23:54 -0500 +Subject: [PATCH] tests: add check_skip_kernel_test to check root user and + lttng kernel modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The current tests will run both userspace and kernel testing. Some of +use cases only use lttng for one kind of tracing on an embedded +device (e.g. userspace), so in this scenario, the kernel modules might +not install to target rootfs, the test cases would be fail and exit. + +Add LTTNG_TOOLS_DISABLE_KERNEL_TESTS to skip the lttng kernel features +test, this flag can be set via "make": + + make check LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1 + +When this flag was set, all kernel related testcases would be marked as +SKIP in result. + +Since the the LTTNG_TOOLS_DISABLE_KERNEL_TESTS was checked in function +check_skip_kernel_test, lots of testcases also need to check root +permission, so merging the root permission checking into +check_skip_kernel_test. + +Upstream-Status: Backport from +[https://git.lttng.org/?p=lttng-tools.git;a=commit;h=3a1744008331a0604479d3d7461f77056fad3a64] + +Change-Id: I49a1f642a9869c21a69e0186c296fd917bd7b525 +Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> +--- + tests/destructive/metadata-regeneration | 8 +---- + tests/perf/test_perf_raw.in | 8 +---- + tests/regression/kernel/test_all_events | 8 +---- + tests/regression/kernel/test_callstack | 8 +---- + tests/regression/kernel/test_channel | 8 +---- + tests/regression/kernel/test_clock_override | 8 +---- + tests/regression/kernel/test_event_basic | 8 +---- + tests/regression/kernel/test_kernel_function | 8 +---- + tests/regression/kernel/test_lttng_logger | 8 +---- + tests/regression/kernel/test_ns_contexts | 8 +---- + .../regression/kernel/test_ns_contexts_change | 9 +---- + .../kernel/test_rotation_destroy_flush | 8 +---- + .../regression/kernel/test_select_poll_epoll | 8 +---- + tests/regression/kernel/test_syscall | 8 +---- + tests/regression/kernel/test_userspace_probe | 8 +---- + tests/regression/tools/clear/test_kernel | 8 +---- + .../tools/filtering/test_invalid_filter | 8 +---- + .../tools/filtering/test_unsupported_op | 8 +---- + .../tools/filtering/test_valid_filter | 8 +---- + tests/regression/tools/health/test_health.sh | 10 ++---- + tests/regression/tools/health/test_thread_ok | 9 +---- + tests/regression/tools/live/test_kernel | 10 +++--- + tests/regression/tools/live/test_lttng_kernel | 8 +---- + tests/regression/tools/metadata/test_kernel | 8 +---- + .../test_notification_kernel_buffer_usage | 36 +++++++++---------- + .../test_notification_kernel_capture | 23 ++++++------ + .../test_notification_kernel_error | 23 ++++++------ + .../test_notification_kernel_instrumentation | 23 ++++++------ + .../test_notification_kernel_syscall | 19 +++++----- + .../test_notification_kernel_userspace_probe | 20 +++++------ + .../notification/test_notification_multi_app | 14 +++----- + ...test_notification_notifier_discarded_count | 9 +++-- + .../tools/regen-metadata/test_kernel | 8 +---- + .../tools/regen-statedump/test_kernel | 8 +---- + tests/regression/tools/rotation/test_kernel | 8 +---- + tests/regression/tools/snapshots/test_kernel | 8 +---- + .../tools/snapshots/test_kernel_streaming | 8 +---- + .../streaming/test_high_throughput_limits | 8 +---- + tests/regression/tools/streaming/test_kernel | 8 +---- + .../tools/tracker/test_event_tracker | 8 +---- + .../tools/trigger/test_add_trigger_cli | 12 ++----- + .../tools/trigger/test_list_triggers_cli | 26 +++++--------- + .../tools/wildcard/test_event_wildcard | 8 +---- + .../test_relayd_working_directory | 4 +-- + .../ust/namespaces/test_ns_contexts_change | 7 +--- + tests/regression/ust/test_event_perf | 8 +---- + tests/utils/utils.sh | 35 ++++++++++++++++++ + 47 files changed, 166 insertions(+), 363 deletions(-) + +diff --git a/tests/destructive/metadata-regeneration b/tests/destructive/metadata-regeneration +index b81e7af32..36b130d17 100755 +--- a/tests/destructive/metadata-regeneration ++++ b/tests/destructive/metadata-regeneration +@@ -185,19 +185,13 @@ function test_ust_streaming () + rm -f ${file_sync_before_last} + } + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + if ! destructive_tests_enabled ; then + echo 'You need to set the LTTNG_ENABLE_DESTRUCTIVE_TESTS to "will-break-my-system" as argument to run this test' + echo 'Moreover, please make sure that ntp is not running while executing this test' + exit 0 + fi + +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + start_lttng_relayd "-o $TRACE_PATH" + start_lttng_sessiond +diff --git a/tests/perf/test_perf_raw.in b/tests/perf/test_perf_raw.in +index f293ccd71..d35529a87 100644 +--- a/tests/perf/test_perf_raw.in ++++ b/tests/perf/test_perf_raw.in +@@ -137,12 +137,6 @@ function test_kernel_raw() + rm -rf $TRACE_PATH + } + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +@@ -154,7 +148,7 @@ have_libpfm + + test_ust_raw + +-skip $isroot "Root access is needed for kernel testing, skipping." 9 || ++check_skip_kernel_test 9 || + { + modprobe lttng-test + test_kernel_raw +diff --git a/tests/regression/kernel/test_all_events b/tests/regression/kernel/test_all_events +index 2e20888df..044f9b65f 100755 +--- a/tests/regression/kernel/test_all_events ++++ b/tests/regression/kernel/test_all_events +@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_callstack b/tests/regression/kernel/test_callstack +index a4477fd7c..d8d6b5e0f 100755 +--- a/tests/regression/kernel/test_callstack ++++ b/tests/regression/kernel/test_callstack +@@ -134,13 +134,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_channel b/tests/regression/kernel/test_channel +index 9cc74c4e8..4c377bd2a 100755 +--- a/tests/regression/kernel/test_channel ++++ b/tests/regression/kernel/test_channel +@@ -47,13 +47,7 @@ function test_channel_buffer_too_large() + plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + start_lttng_sessiond + +diff --git a/tests/regression/kernel/test_clock_override b/tests/regression/kernel/test_clock_override +index 72892898b..48a3f926a 100755 +--- a/tests/regression/kernel/test_clock_override ++++ b/tests/regression/kernel/test_clock_override +@@ -172,13 +172,7 @@ TESTS=( + TEST_COUNT=${#TESTS[@]} + i=0 + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + trap signal_cleanup SIGTERM SIGINT +diff --git a/tests/regression/kernel/test_event_basic b/tests/regression/kernel/test_event_basic +index ac9ec0549..387e2f733 100755 +--- a/tests/regression/kernel/test_event_basic ++++ b/tests/regression/kernel/test_event_basic +@@ -73,13 +73,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_kernel_function b/tests/regression/kernel/test_kernel_function +index b1d5491fc..ea16cdeef 100755 +--- a/tests/regression/kernel/test_kernel_function ++++ b/tests/regression/kernel/test_kernel_function +@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + start_lttng_sessiond_notap + validate_lttng_modules_present +diff --git a/tests/regression/kernel/test_lttng_logger b/tests/regression/kernel/test_lttng_logger +index b8f7ded82..00eaae823 100755 +--- a/tests/regression/kernel/test_lttng_logger ++++ b/tests/regression/kernel/test_lttng_logger +@@ -110,13 +110,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_ns_contexts b/tests/regression/kernel/test_ns_contexts +index 0c8718d78..59e2568f6 100755 +--- a/tests/regression/kernel/test_ns_contexts ++++ b/tests/regression/kernel/test_ns_contexts +@@ -108,13 +108,7 @@ plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + + +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 +- ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/kernel/test_ns_contexts_change b/tests/regression/kernel/test_ns_contexts_change +index 42a61276b..3f5e4eeab 100755 +--- a/tests/regression/kernel/test_ns_contexts_change ++++ b/tests/regression/kernel/test_ns_contexts_change +@@ -162,14 +162,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +- +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 +- ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/kernel/test_rotation_destroy_flush b/tests/regression/kernel/test_rotation_destroy_flush +index cb773d7df..0af514b49 100755 +--- a/tests/regression/kernel/test_rotation_destroy_flush ++++ b/tests/regression/kernel/test_rotation_destroy_flush +@@ -120,13 +120,7 @@ TESTS=( + TEST_COUNT=${#TESTS[@]} + i=0 + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + trap signal_cleanup SIGTERM SIGINT +diff --git a/tests/regression/kernel/test_select_poll_epoll b/tests/regression/kernel/test_select_poll_epoll +index d8245a0e7..20f0ef0ae 100755 +--- a/tests/regression/kernel/test_select_poll_epoll ++++ b/tests/regression/kernel/test_select_poll_epoll +@@ -374,13 +374,7 @@ if test $? != 0; then + exit 0 + fi + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/kernel/test_syscall b/tests/regression/kernel/test_syscall +index 401a18a8d..219d94703 100755 +--- a/tests/regression/kernel/test_syscall ++++ b/tests/regression/kernel/test_syscall +@@ -664,13 +664,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_userspace_probe b/tests/regression/kernel/test_userspace_probe +index 1091ee65e..5d984d666 100755 +--- a/tests/regression/kernel/test_userspace_probe ++++ b/tests/regression/kernel/test_userspace_probe +@@ -815,13 +815,7 @@ fi + plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/tools/clear/test_kernel b/tests/regression/tools/clear/test_kernel +index 06fb1c368..48250a742 100755 +--- a/tests/regression/tools/clear/test_kernel ++++ b/tests/regression/tools/clear/test_kernel +@@ -536,12 +536,6 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + streaming_tests=(test_kernel_streaming + test_kernel_streaming_rotate_clear + test_kernel_streaming_clear_rotate +@@ -563,7 +557,7 @@ snapshot_tests=(test_kernel_streaming_snapshot + test_kernel_local_snapshot + ) + +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel streaming tests." || + { + trap signal_cleanup SIGTERM SIGINT + +diff --git a/tests/regression/tools/filtering/test_invalid_filter b/tests/regression/tools/filtering/test_invalid_filter +index 7d9e524d9..8435e5546 100755 +--- a/tests/regression/tools/filtering/test_invalid_filter ++++ b/tests/regression/tools/filtering/test_invalid_filter +@@ -168,13 +168,7 @@ done + + test_bytecode_limit -u + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel invalid filter tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel invalid filter tests." || + { + diag "Test kernel filters" + i=0 +diff --git a/tests/regression/tools/filtering/test_unsupported_op b/tests/regression/tools/filtering/test_unsupported_op +index 299247a3c..91eb86d21 100755 +--- a/tests/regression/tools/filtering/test_unsupported_op ++++ b/tests/regression/tools/filtering/test_unsupported_op +@@ -103,13 +103,7 @@ while [ "$i" -lt "$OP_COUNT" ]; do + let "i++" + done + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel unsupported filter operations tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test $NUM_KERNEL_TESTS "Skipping kernel unsupported filter operations tests." || + { + diag "Test kernel unsupported filter operations" + +diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter +index e76ffa25f..1ba7c79bb 100755 +--- a/tests/regression/tools/filtering/test_valid_filter ++++ b/tests/regression/tools/filtering/test_valid_filter +@@ -1452,13 +1452,7 @@ KERNEL_FILTERS=( + + IFS=$OLDIFS + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel valid filter tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel valid filter tests." || + { + diag "Test kernel valid filters" + +diff --git a/tests/regression/tools/health/test_health.sh b/tests/regression/tools/health/test_health.sh +index b3d6419d2..68716e6b9 100644 +--- a/tests/regression/tools/health/test_health.sh ++++ b/tests/regression/tools/health/test_health.sh +@@ -82,7 +82,7 @@ function test_health + diag "With UST consumer daemons" + enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME + +- skip $isroot "Root access is needed. Skipping kernel consumer health check test." "1" || ++ check_skip_kernel_test "1" "Skipping kernel consumer health check test." || + { + diag "With kernel consumer daemon" + lttng_enable_kernel_event $SESSION_NAME $KERNEL_EVENT_NAME $CHANNEL_NAME +@@ -113,7 +113,7 @@ function test_health + + + if [ ${test_needs_root} -eq 1 ]; then +- skip ${isroot} "Root access needed for test \"${test_thread_name}\"." "1" || ++ check_skip_kernel_test "1" "Skipping \"${test_thread_name}\"." || + { + report_errors "${test_thread_error_string}" "${test_relayd}" + } +@@ -276,12 +276,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_health_stderr_path.XXXXXX) + TRACE_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX) + HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX) + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + THREAD_COUNT=${#THREAD[@]} + i=0 + while [ "$i" -lt "$THREAD_COUNT" ]; do +diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok +index e84adb611..e5e23543f 100755 +--- a/tests/regression/tools/health/test_thread_ok ++++ b/tests/regression/tools/health/test_thread_ok +@@ -67,7 +67,7 @@ function test_thread_ok + $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} + report_errors + +- skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || ++ check_skip_kernel_test "5" "Skipping kernel consumer health check test." || + { + diag "With kernel consumer daemon" + create_lttng_session_no_output $SESSION_NAME +@@ -115,13 +115,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_thread_ok_stderr_path.XXXXXX) + TRACE_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX) + HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX) + +-# The manage kernel thread is only spawned if we are root +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + test_thread_ok + + rm -rf ${HEALTH_PATH} +diff --git a/tests/regression/tools/live/test_kernel b/tests/regression/tools/live/test_kernel +index b622b5214..fdaa09f0d 100755 +--- a/tests/regression/tools/live/test_kernel ++++ b/tests/regression/tools/live/test_kernel +@@ -39,13 +39,11 @@ function clean_live_tracing() + rm -rf $TRACE_PATH + } + +-# Need root access for kernel tracing. +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- plan_skip_all "Root access is needed. Skipping all tests." ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." + exit 0 +-fi ++} + + modprobe lttng-test + +diff --git a/tests/regression/tools/live/test_lttng_kernel b/tests/regression/tools/live/test_lttng_kernel +index a23d9373a..1b933648f 100755 +--- a/tests/regression/tools/live/test_lttng_kernel ++++ b/tests/regression/tools/live/test_lttng_kernel +@@ -45,13 +45,7 @@ function clean_live_tracing() + } + + # Need root access for kernel tracing. +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + modprobe lttng-test + +diff --git a/tests/regression/tools/metadata/test_kernel b/tests/regression/tools/metadata/test_kernel +index 57cace6ea..26e95d93a 100755 +--- a/tests/regression/tools/metadata/test_kernel ++++ b/tests/regression/tools/metadata/test_kernel +@@ -91,13 +91,7 @@ plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel metadata tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel metadata tests." || + { + validate_lttng_modules_present + modprobe lttng-test +diff --git a/tests/regression/tools/notification/test_notification_kernel_buffer_usage b/tests/regression/tools/notification/test_notification_kernel_buffer_usage +index 76e69a77e..8fdaabb3e 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_buffer_usage ++++ b/tests/regression/tools/notification/test_notification_kernel_buffer_usage +@@ -60,29 +60,27 @@ function test_buffer_usage_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- +- validate_lttng_modules_present +- ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ rm -rf "$TEST_TMPDIR" ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- # Used on sessiond launch. +- LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \ +- CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \ +- LD_PRELOAD=${TESTPOINT}" +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_buffer_usage_notification ++# Used on sessiond launch. ++LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \ ++ CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \ ++ LD_PRELOAD=${TESTPOINT}" ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_buffer_usage_notification + +- rm -rf "${consumerd_pipe[@]}" 2> /dev/null +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + ++rm -rf "${consumerd_pipe[@]}" 2> /dev/null + rm -rf "$TEST_TMPDIR" +diff --git a/tests/regression/tools/notification/test_notification_kernel_capture b/tests/regression/tools/notification/test_notification_kernel_capture +index 88f123d3d..0f8a2bc6f 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_capture ++++ b/tests/regression/tools/notification/test_notification_kernel_capture +@@ -31,22 +31,21 @@ function test_basic_error_path + } + + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_basic_error_path ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_basic_error_path + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_error b/tests/regression/tools/notification/test_notification_kernel_error +index 80fe6e5b5..b757ec2b4 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_error ++++ b/tests/regression/tools/notification/test_notification_kernel_error +@@ -30,23 +30,22 @@ function test_basic_error_path + wait $APP_PID 2> /dev/null + } + ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++validate_lttng_modules_present + +- modprobe lttng-test ++modprobe lttng-test + +- start_lttng_sessiond_notap ++start_lttng_sessiond_notap + +- test_basic_error_path ++test_basic_error_path + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++stop_lttng_sessiond_notap ++rmmod lttng-test + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_instrumentation b/tests/regression/tools/notification/test_notification_kernel_instrumentation +index 90545a541..705f7703d 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_instrumentation ++++ b/tests/regression/tools/notification/test_notification_kernel_instrumentation +@@ -28,22 +28,21 @@ function test_kernel_instrumentation_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_kernel_instrumentation_notification ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_kernel_instrumentation_notification + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_syscall b/tests/regression/tools/notification/test_notification_kernel_syscall +index d273cb55d..7fa235388 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_syscall ++++ b/tests/regression/tools/notification/test_notification_kernel_syscall +@@ -31,19 +31,18 @@ function test_kernel_syscall_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- start_lttng_sessiond_notap ++validate_lttng_modules_present + +- test_kernel_syscall_notification ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap ++test_kernel_syscall_notification + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_userspace_probe b/tests/regression/tools/notification/test_notification_kernel_userspace_probe +index 8ef8d708d..abddd9be7 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_userspace_probe ++++ b/tests/regression/tools/notification/test_notification_kernel_userspace_probe +@@ -29,18 +29,18 @@ function test_kernel_userspace_probe_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} ++ ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++start_lttng_sessiond_notap + +- test_kernel_userspace_probe_notification ++test_kernel_userspace_probe_notification + +- stop_lttng_sessiond_notap +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app +index d8b639225..61891b56f 100755 +--- a/tests/regression/tools/notification/test_notification_multi_app ++++ b/tests/regression/tools/notification/test_notification_multi_app +@@ -411,22 +411,18 @@ function test_on_register_evaluation () + rm -rf "$output_dir" + } + +- + TESTS=( + test_multi_app_ust + test_on_register_evaluation_ust + ) + +-if [ "$(id -u)" == "0" ]; then ++check_skip_kernel_test "$NUM_TEST_KERNEL" "Skipping kernel multi-app notification tests." || { + validate_lttng_modules_present + TESTS+=( +- test_multi_app_kernel +- test_on_register_evaluation_kernel +-) +-else +- skip 0 "Root access is needed. Skipping all kernel multi-app notification tests." $NUM_TEST_KERNEL +-fi +- ++ test_multi_app_kernel ++ test_on_register_evaluation_kernel ++ ) ++} + + for fct_test in ${TESTS[@]}; + do +diff --git a/tests/regression/tools/notification/test_notification_notifier_discarded_count b/tests/regression/tools/notification/test_notification_notifier_discarded_count +index c9235393e..a6c31a728 100755 +--- a/tests/regression/tools/notification/test_notification_notifier_discarded_count ++++ b/tests/regression/tools/notification/test_notification_notifier_discarded_count +@@ -391,7 +391,8 @@ function test_ust_notifier_discarded_regardless_trigger_owner + test_ust_notifier_discarded_count + test_ust_notifier_discarded_count_max_bucket + +-if [ "$(id -u)" == "0" ]; then ++check_skip_kernel_test "$KERNEL_NUM_TESTS" "Skipping kernel notification tests." || ++{ + + validate_lttng_modules_present + +@@ -413,9 +414,7 @@ if [ "$(id -u)" == "0" ]; then + modprobe --remove lttng-test + + rm -rf "${sessiond_pipe[@]}" 2> /dev/null +-else +- # Kernel tests are skipped. +- skip 0 "Root access is needed. Skipping all kernel notification tests." $KERNEL_NUM_TESTS +-fi ++ ++} + + rm -rf "$TEST_TMPDIR" +diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel +index 49eea32a7..555a4e2ce 100755 +--- a/tests/regression/tools/regen-metadata/test_kernel ++++ b/tests/regression/tools/regen-metadata/test_kernel +@@ -99,13 +99,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel +index 8a261355d..bbbac3942 100755 +--- a/tests/regression/tools/regen-statedump/test_kernel ++++ b/tests/regression/tools/regen-statedump/test_kernel +@@ -39,13 +39,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/tools/rotation/test_kernel b/tests/regression/tools/rotation/test_kernel +index f5f1f5553..efe3fd359 100755 +--- a/tests/regression/tools/rotation/test_kernel ++++ b/tests/regression/tools/rotation/test_kernel +@@ -82,13 +82,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel +index abb243563..d91876867 100755 +--- a/tests/regression/tools/snapshots/test_kernel ++++ b/tests/regression/tools/snapshots/test_kernel +@@ -217,13 +217,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel snapshot tests" $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + + validate_lttng_modules_present +diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming +index 0c92dc710..dd965afee 100755 +--- a/tests/regression/tools/snapshots/test_kernel_streaming ++++ b/tests/regression/tools/snapshots/test_kernel_streaming +@@ -145,13 +145,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits +index 2b9e3ad39..c55d51098 100755 +--- a/tests/regression/tools/streaming/test_high_throughput_limits ++++ b/tests/regression/tools/streaming/test_high_throughput_limits +@@ -170,13 +170,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed to set bandwith limits. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + + # Catch sigint and try to cleanup limits +diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel +index 33334229f..113eea7bf 100755 +--- a/tests/regression/tools/streaming/test_kernel ++++ b/tests/regression/tools/streaming/test_kernel +@@ -47,13 +47,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/tracker/test_event_tracker b/tests/regression/tools/tracker/test_event_tracker +index cc0f698d2..de0c79d36 100755 +--- a/tests/regression/tools/tracker/test_event_tracker ++++ b/tests/regression/tools/tracker/test_event_tracker +@@ -466,13 +466,7 @@ test_event_track_untrack ust 0 "${EVENT_NAME}" "--pid --all" # backward compat + test_event_tracker ust 1 "${EVENT_NAME}" "--pid --all" # backward compat + test_event_pid_tracker ust 1 "${EVENT_NAME}" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel tracker tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel tracker tests." || + { + diag "Test kernel tracker" + +diff --git a/tests/regression/tools/trigger/test_add_trigger_cli b/tests/regression/tools/trigger/test_add_trigger_cli +index 98ecf6272..d1763aa2e 100755 +--- a/tests/regression/tools/trigger/test_add_trigger_cli ++++ b/tests/regression/tools/trigger/test_add_trigger_cli +@@ -34,12 +34,6 @@ tmp_stdout=$(mktemp --tmpdir -t test_parse_cli_trigger_stdout.XXXXXX) + tmp_stderr=$(mktemp --tmpdir -t test_parse_cli_trigger_stderr.XXXXXX) + uprobe_elf_binary="${TESTDIR}/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary" + +-if [ "$(id -u)" == "0" ]; then +- ist_root=1 +-else +- ist_root=0 +-fi +- + function test_success () + { + local test_name="$1" +@@ -223,7 +217,7 @@ test_success "--exclude-name two" "trigger5" \ + --condition event-rule-matches --type=user --name='jean-*' --exclude-name jean-chretien -x jean-charest \ + --action notify + +-skip $ist_root "non-root user: skipping kprobe tests" 18 || { ++check_skip_kernel_test 18 "Skipping kprobe tests." || { + i=0 + + for type in kprobe kernel:kprobe; do +@@ -262,7 +256,7 @@ skip $ist_root "non-root user: skipping kprobe tests" 18 || { + done + } + +-skip $ist_root "non-root user: skipping uprobe tests" 6 || { ++check_skip_kernel_test 6 "Skipping uprobe tests." || { + test_success "--condition event-rule-matches uprobe" "uprobe-trigger-0" \ + --name="uprobe-trigger-0" \ + --condition event-rule-matches --type=kernel:uprobe --location=${uprobe_elf_binary}:test_function --event-name=ma-probe \ +@@ -274,7 +268,7 @@ skip $ist_root "non-root user: skipping uprobe tests" 6 || { + --action notify + } + +-skip $ist_root "non-root user: skipping syscall tests" 30 || { ++check_skip_kernel_test 30 "Skipping syscall tests." || { + test_success "--condition event-rule-matches one syscall" "syscall-trigger-0" \ + --name="syscall-trigger-0" \ + --condition event-rule-matches --type=syscall --name=open \ +diff --git a/tests/regression/tools/trigger/test_list_triggers_cli b/tests/regression/tools/trigger/test_list_triggers_cli +index a04018013..02c3de3e9 100755 +--- a/tests/regression/tools/trigger/test_list_triggers_cli ++++ b/tests/regression/tools/trigger/test_list_triggers_cli +@@ -36,22 +36,12 @@ uprobe_sdt_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-sdt-binar + register_some_triggers_bin=$(realpath "${CURDIR}/utils/register-some-triggers") + + uid=$(id --user) +-gid=$(id --group) + +-if [ "$uid" == "0" ]; then +- ist_root=1 +- ls "$uprobe_sdt_binary" >/dev/null 2>&1 +- if test $? == 0; then +- hast_sdt_binary=1 +- else +- hast_sdt_binary=0 +- fi +-else +- ist_root=0 +- hast_sdt_binary=0 ++sdt_binary_present=0 ++if [ -f "$uprobe_sdt_binary" ]; then ++ sdt_binary_present=1 + fi + +- + test_top_level_options () + { + diag "Listing top level options" +@@ -2695,10 +2685,12 @@ start_lttng_sessiond_notap + + test_top_level_options + test_event_rule_matches_tracepoint +-skip $ist_root "non-root user: skipping kprobe tests" 13 || test_event_rule_matches_probe +-skip $ist_root "non-root user: skipping uprobe tests" 9 || test_event_rule_matches_userspace_probe_elf +-skip $(($ist_root && $hast_sdt_binary)) "skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt +-skip $ist_root "non-root user: skipping syscall tests" 17 || test_event_rule_matches_syscall ++check_skip_kernel_test 48 "Skipping kprobe, uprobe, SDT and syscall tests." || { ++ test_event_rule_matches_probe ++ test_event_rule_matches_userspace_probe_elf ++ skip $sdt_binary_present "No SDT binary. Skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt ++ test_event_rule_matches_syscall ++} + test_session_consumed_size_condition + test_buffer_usage_conditions + test_session_rotation_conditions +diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard +index f69baffc4..14d9bb88a 100755 +--- a/tests/regression/tools/wildcard/test_event_wildcard ++++ b/tests/regression/tools/wildcard/test_event_wildcard +@@ -124,13 +124,7 @@ test_event_wildcard ust 1 'tp*tptest' + test_event_wildcard ust 1 'tp**tptest' + test_event_wildcard ust 1 'tp*test' + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel wildcard tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel wildcard tests." || + { + diag "Test kernel wildcards" + +diff --git a/tests/regression/tools/working-directory/test_relayd_working_directory b/tests/regression/tools/working-directory/test_relayd_working_directory +index c7e784cca..6bd1e504a 100755 +--- a/tests/regression/tools/working-directory/test_relayd_working_directory ++++ b/tests/regression/tools/working-directory/test_relayd_working_directory +@@ -145,9 +145,9 @@ function test_relayd_debug_permission() + diag "Test lttng-relayd change working directory on non writable directory" + + if [ "$(id -u)" == "0" ]; then +- is_user=0 ++ is_user=0 + else +- is_user=1 ++ is_user=1 + fi + + skip $is_user "Skipping permission debug output test; operation can't fail as root" 6 || +diff --git a/tests/regression/ust/namespaces/test_ns_contexts_change b/tests/regression/ust/namespaces/test_ns_contexts_change +index 8a4b62ce3..622241f7b 100755 +--- a/tests/regression/ust/namespaces/test_ns_contexts_change ++++ b/tests/regression/ust/namespaces/test_ns_contexts_change +@@ -101,12 +101,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf +index 33aab2981..178959a19 100755 +--- a/tests/regression/ust/test_event_perf ++++ b/tests/regression/ust/test_event_perf +@@ -119,17 +119,11 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + start_lttng_sessiond + + test_parsing_raw + +-skip $isroot "Root access is needed. Skipping UST perf tests." 8 || ++check_skip_kernel_test 8 "Skipping UST perf tests." || + { + test_event_basic + } +diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh +index faa87e783..da0e0569d 100644 +--- a/tests/utils/utils.sh ++++ b/tests/utils/utils.sh +@@ -318,6 +318,41 @@ function conf_proc_count() + echo + } + ++# Usage: ++# check_skip_kernel_test [NB_TESTS] [SKIP_MESSAGE] ++# Return 0 if LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set or the current user is not a root user ++# If NB_TESTS is set, call skip() to skip number of tests. ++# If NB_TESTS is empty, just output a reason with diag. ++# An optional message can be added. ++ ++function check_skip_kernel_test () ++{ ++ local num_tests="$1" ++ local skip_message="$2" ++ ++ # Check for skip test kernel flag ++ if [ "$LTTNG_TOOLS_DISABLE_KERNEL_TESTS" == "1" ]; then ++ if ! test -z "$num_tests"; then ++ skip 0 "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}" "$num_tests" ++ else ++ diag "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}" ++ fi ++ return 0 ++ fi ++ ++ # Check if we are running as root ++ if [ "$(id -u)" != "0" ]; then ++ if ! test -z "$num_tests"; then ++ skip 0 "Root access is needed for kernel testing.${skip_message+ }${skip_message}" "$num_tests" ++ else ++ diag "Root access is needed for kernel testing.${skip_message+ }${skip_message}" ++ fi ++ return 0 ++ fi ++ ++ return 1 ++} ++ + # Check if base lttng-modules are present. + # Bail out on failure + function validate_lttng_modules_present () +-- +2.25.1 + diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch index 2d08b08879..2f95889c4b 100644 --- a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch @@ -1,4 +1,4 @@ -From ab238c213fac190972f55e73cf3e0bb1c7846eb8 Mon Sep 17 00:00:00 2001 +From 2237748af00467ad8250a7ccd944200f811db69a Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Thu, 12 Dec 2019 16:52:07 +0100 Subject: [PATCH] tests: do not strip a helper library @@ -10,10 +10,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am -index 03f5d5a..d12c343 100644 +index 836f13e..e19a554 100644 --- a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am +++ b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am -@@ -12,7 +12,7 @@ userspace_probe_elf_binary_LDADD = libfoo.la +@@ -14,7 +14,7 @@ userspace_probe_elf_binary_LDADD = libfoo.la libfoo.strip: libfoo.la $(OBJCOPY) --strip-all .libs/libfoo.so @@ -22,6 +22,3 @@ index 03f5d5a..d12c343 100644 @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ for script in $(EXTRA_DIST); do \ cp -f $(srcdir)/$$script $(builddir); \ --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/determinism.patch b/meta/recipes-kernel/lttng/lttng-tools/determinism.patch deleted file mode 100644 index b2ab880bd6..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/determinism.patch +++ /dev/null @@ -1,64 +0,0 @@ -This is a bit ugly. Specifing abs_builddir as an RPATH is plain wrong when -cross compiling. Sadly, removing the rpath makes libtool/automake do -weird things and breaks the build as shared libs are no longer generated. - -We already try and delete the RPATH at do_install with chrpath however -that does leave the path in the string table so it doesn't help us -with reproducibility. - -Instead, hack in a bogus but harmless path, then delete it later in -our do_install. Ultimately we may want to pass a specific path to use -to configure if we really do need to set an RPATH at all. It is unclear -to me whether the tests need that or not. - -Fixes reproducibility issues for lttng-tools. - -Upstream-Status: Pending [needs discussion with upstream about the correct solution] -RP 2021/3/1 - -Index: lttng-tools-2.12.2/tests/regression/ust/ust-dl/Makefile.am -=================================================================== ---- lttng-tools-2.12.2.orig/tests/regression/ust/ust-dl/Makefile.am -+++ lttng-tools-2.12.2/tests/regression/ust/ust-dl/Makefile.am -@@ -27,16 +27,16 @@ noinst_LTLIBRARIES = libzzz.la libbar.la - - libzzz_la_SOURCES = libzzz.c libzzz.h - libzzz_la_LDFLAGS = -module -shared -avoid-version \ -- -rpath $(abs_builddir) -+ -rpath /usr/lib - - libbar_la_SOURCES = libbar.c libbar.h - libbar_la_LDFLAGS = -module -shared -avoid-version \ -- -rpath $(abs_builddir) -+ -rpath /usr/lib - libbar_la_LIBADD = libzzz.la - - libfoo_la_SOURCES = libfoo.c libfoo.h - libfoo_la_LDFLAGS = -module -shared -avoid-version \ -- -rpath $(abs_builddir) -+ -rpath /usr/lib - libfoo_la_LIBADD = libbar.la - - CLEANFILES = libfoo.so libfoo.so.debug libbar.so libbar.so.debug \ -@@ -44,7 +44,7 @@ CLEANFILES = libfoo.so libfoo.so.debug l - - libtp_la_SOURCES = libbar-tp.h libbar-tp.c libfoo-tp.h libfoo-tp.c \ - libzzz-tp.h libzzz-tp.c --libtp_la_LDFLAGS = -module -shared -rpath $(abs_builddir) -+libtp_la_LDFLAGS = -module -shared -rpath /usr/lib - - # Extract debug symbols - libfoo.so.debug: libfoo.la -Index: lttng-tools-2.12.2/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am -=================================================================== ---- lttng-tools-2.12.2.orig/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am -+++ lttng-tools-2.12.2/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am -@@ -5,7 +5,7 @@ AM_CFLAGS += -O0 - noinst_LTLIBRARIES = libfoo.la - - libfoo_la_SOURCES = foo.c foo.h --libfoo_la_LDFLAGS = -shared -module -avoid-version -rpath $(abs_builddir)/.libs/ -+libfoo_la_LDFLAGS = -shared -module -avoid-version -rpath /usr/lib - - noinst_PROGRAMS = userspace-probe-elf-binary - userspace_probe_elf_binary_SOURCES = userspace-probe-elf-binary.c diff --git a/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/meta/recipes-kernel/lttng/lttng-tools/run-ptest index c4dbe50f21..39d93e2bbf 100755 --- a/meta/recipes-kernel/lttng/lttng-tools/run-ptest +++ b/meta/recipes-kernel/lttng/lttng-tools/run-ptest @@ -1,7 +1,45 @@ #!/bin/sh # Without --ignore-exit, the tap harness causes any FAILs within a # test plan to raise ERRORs; this is just noise. + +#Detecting whether current system has lttng kernel modules +LTTNG_KMOD_PATH=/lib/modules/$(uname -r)/kernel/lttng-modules/lttng-tracer.ko +function validate_lttng_modules_present() +{ + # Check for loadable modules. + if [ -f "$LTTNG_KMOD_PATH" ]; then + return 0 + fi + + # Check for builtin modules. + ls /proc/lttng > /dev/null 2>&1 + if [ $? -eq 0 ]; then + return 0 + fi + + return 1 +} + export LD_LIBRARY_PATH=FIXMEPTESTPATH/tests/utils/testapp/userspace-probe-elf-binary/.libs -makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD" -make -k -t all >/dev/null 2>&1 -exec make -k -s $makeargs check 2>/dev/null | sed -e 's#/tmp/tmp\...........#/tmp/tmp.XXXXXXXXXX#g' +makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=FIXMEPTESTPATH top_builddir=FIXMEPTESTPATH" + +#If current system doesn't have lttng kernel modules, disable lttng kernel related tests. +validate_lttng_modules_present || { + makeargs="$makeargs LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1" +} + +make -k -t all >error.log 2>&1 +# Can specify a test e.g.: +# -C tests/regression/ check TESTS='kernel/test_callstack' +make -k -s $makeargs check 2>error.log | sed -e 's#/tmp/tmp\...........#/tmp/tmp.XXXXXXXXXX#g' +exitcode=$? +if [ -e error.log ]; then + cat error.log +fi +if [ -e tests/unit/test-suite.log ]; then + cat tests/unit/test-suite.log +fi +if [ -e tests/regression/test-suite.log ]; then + cat tests/regression/test-suite.log +fi +exit $exitcode diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.13.7.bb b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb index 1a972ec836..174dec036e 100644 --- a/meta/recipes-kernel/lttng/lttng-tools_2.13.7.bb +++ b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb @@ -15,7 +15,7 @@ include lttng-platforms.inc DEPENDS = "liburcu popt libxml2 util-linux bison-native" RDEPENDS:${PN} = "libgcc" RRECOMMENDS:${PN} += "${LTTNGMODULES}" -RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep" +RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep binutils" RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils" RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils" # babelstats.pl wants getopt-long @@ -35,11 +35,13 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ file://0001-tests-do-not-strip-a-helper-library.patch \ file://run-ptest \ file://lttng-sessiond.service \ - file://determinism.patch \ file://disable-tests.patch \ + file://0001-compat-Define-off64_t-as-off_t-on-linux.patch \ + file://0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch \ + file://0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch \ " -SRC_URI[sha256sum] = "d17a02e8f178a7cf3403e3c9edfb90ad3a1628e20aa0b5131408ae47f722f08d" +SRC_URI[sha256sum] = "ff5f4f00b081dac66092afe8e72b7c790670931cf1c1ee0deaa7f80fbc53883e" inherit autotools ptest pkgconfig useradd python3-dir manpages systemd @@ -84,7 +86,7 @@ do_install_ptest () { done # Patch in the correct path for the custom libraries a helper executable needs - sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!' "${D}${PTEST_PATH}/run-ptest" + sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!g' "${D}${PTEST_PATH}/run-ptest" # Prevent 'make check' from recursing into non-test subdirectories. sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile" diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch index cbbf1df812..6aca8f85fa 100644 --- a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch @@ -1,4 +1,4 @@ -From 06279f50e924d1d55b43eb3b299f6633ecb1f7a4 Mon Sep 17 00:00:00 2001 +From 7d053804ab3823d40ae10d90f4efc49dbfb4cb66 Mon Sep 17 00:00:00 2001 From: Changqing Li <changqing.li@windriver.com> Date: Wed, 22 Sep 2021 16:33:10 +0800 Subject: [PATCH] Makefile.am: update rpath link @@ -13,15 +13,16 @@ ld: warning: liblttng-ust-tracepoint.so.1, needed by ../../../src/lib/lttng-ust/ Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/61] Signed-off-by: Changqing Li <changqing.li@windriver.com> + --- doc/examples/Makefile.am | 2 +- - 1 file changed, 1 insertions(+), 1 deletions(-) + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am -index 8ee0564..20d246c 100644 +index 57782cc..d46caa6 100644 --- a/doc/examples/Makefile.am +++ b/doc/examples/Makefile.am -@@ -142,7 +142,7 @@ all-local: +@@ -167,7 +167,7 @@ all-local: CFLAGS='$(CFLAGS)' \ AM_CFLAGS='$(AM_CFLAGS)' \ LDFLAGS="$(LDFLAGS)" \ @@ -30,6 +31,3 @@ index 8ee0564..20d246c 100644 LTTNG_GEN_TP_PATH="$$rel_src_subdir$(top_srcdir)/tools/" \ AM_V_P="$(AM_V_P)" \ AM_V_at="$(AM_V_at)" \ --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch index d3c451fd2b..e85dbdb439 100644 --- a/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch @@ -1,4 +1,4 @@ -From 2058584b7e87d6bd9d1765577766e0df7752232c Mon Sep 17 00:00:00 2001 +From 27402453f25fbdb5a9fb1a1b88d1c4d9852187d2 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex@linutronix.de> Date: Sun, 5 Sep 2021 10:44:19 +0200 Subject: [PATCH] lttng-ust-common: link with liburcu explicitly @@ -7,15 +7,16 @@ Otherwise linking errors are seen on x86-32. Upstream-Status: Submitted [by email to lttng-dev, Francis, Jonathan] Signed-off-by: Alexander Kanavin <alex@linutronix.de> + --- src/lib/lttng-ust-common/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/lttng-ust-common/Makefile.am b/src/lib/lttng-ust-common/Makefile.am -index caeea2b..30febf0 100644 +index 1ccc290..6531fa0 100644 --- a/src/lib/lttng-ust-common/Makefile.am +++ b/src/lib/lttng-ust-common/Makefile.am -@@ -15,6 +15,7 @@ liblttng_ust_common_la_SOURCES = \ +@@ -16,6 +16,7 @@ liblttng_ust_common_la_SOURCES = \ liblttng_ust_common_la_LIBADD = \ $(top_builddir)/src/common/libcommon.la \ diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch index fd9b6ea7ff..7c49583e0d 100644 --- a/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch @@ -1,6 +1,6 @@ -From dd1fdc841d069dbd4e284f430a88af79de951124 Mon Sep 17 00:00:00 2001 -From: Robert Yang <liezhi.yang@windriver.com> -Date: Thu, 26 Sep 2019 17:54:00 +0800 +From f65efd963e52de51d35e2e03fb773f33dd64f565 Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Tue, 20 Feb 2024 12:19:06 +0000 Subject: [PATCH] python-lttngust/Makefile.am: Add --install-lib to setup.py Otherwise it may install to /usr/lib, but should be /usr/lib64 when cross @@ -15,15 +15,15 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python-lttngust/Makefile.am b/src/python-lttngust/Makefile.am -index f95482d..f76d95b 100644 +index d53e21d..283901e 100644 --- a/src/python-lttngust/Makefile.am +++ b/src/python-lttngust/Makefile.am -@@ -32,7 +32,7 @@ install-exec-local: build-python-bindings.stamp +@@ -45,7 +45,7 @@ install-exec-local: build-python-bindings.stamp if [ "$(DESTDIR)" != "" ]; then \ opts="$$opts --root=$(DESTDIR)"; \ fi; \ -- $(PYTHON) $(builddir)/setup.py install $$opts; -+ $(PYTHON) $(builddir)/setup.py install $$opts --install-lib=$(pythondir); +- $(PYTHON) $(builddir)/setup.py install $(PY_INSTALL_OPTS) $$opts; ++ $(PYTHON) $(builddir)/setup.py install $(PY_INSTALL_OPTS) $$opts --install-lib=$(pythondir); clean-local: rm -rf $(builddir)/build diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.13.2.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb index 516d90a196..dddd3a5004 100644 --- a/meta/recipes-kernel/lttng/lttng-ust_2.13.2.bb +++ b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb @@ -34,7 +34,7 @@ SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \ file://0001-Makefile.am-update-rpath-link.patch \ " -SRC_URI[sha256sum] = "08679a1dfc2c9428885273861628aa5d828972f389a38bb08fdce39adee589b7" +SRC_URI[sha256sum] = "d4ef98dab9a37ad4f524ccafdfd50af4f266039b528dd5afabce78e49024d937" CVE_PRODUCT = "ust" diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb index 0e420a25d9..a91680d497 100644 --- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://www.yoctoproject.org/" LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" -inherit kernel-arch +inherit kernel-arch linux-kernel-base inherit pkgconfig PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -13,7 +13,7 @@ S = "${WORKDIR}" do_configure[depends] += "virtual/kernel:do_shared_workdir openssl-native:do_populate_sysroot" do_compile[depends] += "virtual/kernel:do_compile_kernelmodules" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" DEPENDS += "bc-native bison-native" DEPENDS += "gmp-native" @@ -21,13 +21,18 @@ DEPENDS += "gmp-native" EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"" EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}" +KERNEL_LOCALVERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}" +export LOCALVERSION="${KERNEL_LOCALVERSION}" + # Build some host tools under work-shared. CC, LD, and AR are probably # not used, but this is the historical way of invoking "make scripts". # do_configure() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS for t in prepare scripts_basic scripts; do - oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ + oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t done } diff --git a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb index 8f4fdd76bf..b630a402ff 100644 --- a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb +++ b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb @@ -4,7 +4,6 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://modutils.sh;beginline=3;endline=3;md5=b2dccaa94b3629a08bfb4f983cad6f89" SRC_URI = "file://modutils.sh" -PR = "r7" S = "${WORKDIR}" diff --git a/meta/recipes-kernel/perf/perf-perl.inc b/meta/recipes-kernel/perf/perf-perl.inc index ae77319b20..491f54c328 100644 --- a/meta/recipes-kernel/perf/perf-perl.inc +++ b/meta/recipes-kernel/perf/perf-perl.inc @@ -2,6 +2,10 @@ inherit perlnative cpan-base # Env var which tells perl if it should use host (no) or target (yes) settings export PERLCONFIGTARGET = "${@is_target(d)}" -export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}/CORE" -export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}" -export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}" +export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}/${@get_perl_arch(d)}/CORE" +export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}" +export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}/${@get_perl_arch(d)}" + +# The perl symbols CPPSTDIN and CPPRUN embed the sysroot into the +# binaries, work needed to remove this +INSANE_SKIP:${PN}-dbg += "buildpaths" diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index adefc44eaa..11fa917649 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -9,25 +9,32 @@ HOMEPAGE = "https://perf.wiki.kernel.org/index.php/Main_Page" LICENSE = "GPL-2.0-only" -PR = "r9" -PACKAGECONFIG ??= "scripting tui libunwind" +PACKAGECONFIG ??= "python tui libunwind libtraceevent" PACKAGECONFIG[dwarf] = ",NO_DWARF=1" -PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python3" +PACKAGECONFIG[perl] = ",NO_LIBPERL=1,perl" +PACKAGECONFIG[python] = ",NO_LIBPYTHON=1,python3 python3-setuptools-native" # gui support was added with kernel 3.6.35 # since 3.10 libnewt was replaced by slang # to cover a wide range of kernel we add both dependencies PACKAGECONFIG[tui] = ",NO_NEWT=1,libnewt slang" PACKAGECONFIG[libunwind] = ",NO_LIBUNWIND=1 NO_LIBDW_DWARF_UNWIND=1,libunwind" PACKAGECONFIG[libnuma] = ",NO_LIBNUMA=1" +PACKAGECONFIG[bfd] = ",NO_LIBBFD=1" PACKAGECONFIG[systemtap] = ",NO_SDT=1,systemtap" PACKAGECONFIG[jvmti] = ",NO_JVMTI=1" # libaudit support would need scripting to be enabled PACKAGECONFIG[audit] = ",NO_LIBAUDIT=1,audit" PACKAGECONFIG[manpages] = ",,xmlto-native asciidoc-native" PACKAGECONFIG[cap] = ",,libcap" +PACKAGECONFIG[libtraceevent] = ",NO_LIBTRACEEVENT=1,libtraceevent" +# jevents requires host python for generating a .c file, but is +# unrelated to the python item. +PACKAGECONFIG[jevents] = ",NO_JEVENTS=1,python3-native" # Arm CoreSight PACKAGECONFIG[coresight] = "CORESIGHT=1,,opencsd" +PACKAGECONFIG[pfm4] = ",NO_LIBPFM4=1,libpfm4" +PACKAGECONFIG[babeltrace] = ",NO_LIBBABELTRACE=1,babeltrace" # libunwind is not yet ported for some architectures PACKAGECONFIG:remove:arc = "libunwind" @@ -47,7 +54,7 @@ PROVIDES = "virtual/perf" inherit linux-kernel-base kernel-arch manpages # needed for building the tools/perf Python bindings -inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3targetconfig', '', d)} +inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)} inherit python3-dir export PYTHON_SITEPACKAGES_DIR @@ -57,7 +64,7 @@ export WERROR = "0" do_populate_lic[depends] += "virtual/kernel:do_shared_workdir" # needed for building the tools/perf Perl binding -include ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perf-perl.inc', '', d)} +include ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'perf-perl.inc', '', d)} inherit kernelsrc @@ -69,8 +76,18 @@ SPDX_S = "${S}/tools/perf" # supported kernel. LDFLAGS="-ldl -lutil" +# Perf's build system adds its own optimization flags for most TUs, +# overriding the flags included here. But for some, perf does not add +# any -O option, so ensure the distro's chosen optimization gets used +# for those. Since ${SELECTED_OPTIMIZATION} always includes +# ${DEBUG_FLAGS} which in turn includes ${DEBUG_PREFIX_MAP}, this also +# ensures perf is built with appropriate -f*-prefix-map options, +# avoiding the 'buildpaths' QA warning. +TARGET_CC_ARCH += "${SELECTED_OPTIMIZATION}" + EXTRA_OEMAKE = '\ V=1 \ + VF=1 \ -C ${S}/tools/perf \ O=${B} \ CROSS_COMPILE=${TARGET_PREFIX} \ @@ -80,12 +97,13 @@ EXTRA_OEMAKE = '\ LDSHARED="${CC} -shared" \ AR="${AR}" \ LD="${LD}" \ - EXTRA_CFLAGS="-ldw" \ - YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \ + EXTRA_CFLAGS="-ldw -I${S}" \ + YFLAGS='-y --file-prefix-map=${WORKDIR}=${TARGET_DBGSRC_DIR}' \ EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \ perfexecdir=${libexecdir} \ NO_GTK2=1 \ ${PACKAGECONFIG_CONFARGS} \ + PKG_CONFIG=pkg-config \ TMPDIR="${B}" \ LIBUNWIND_DIR=${STAGING_EXECPREFIXDIR} \ ' @@ -101,7 +119,7 @@ EXTRA_OEMAKE += "\ 'sharedir=${@os.path.relpath(datadir, prefix)}' \ 'mandir=${@os.path.relpath(mandir, prefix)}' \ 'infodir=${@os.path.relpath(infodir, prefix)}' \ - ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'PYTHON=python3 PYTHON_CONFIG=python3-config', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'python', 'PYTHON=python3 PYTHON_CONFIG=python3-config', '', d)} \ " # During do_configure, we might run a 'make clean'. That often breaks @@ -111,6 +129,10 @@ EXTRA_OEMAKE += "\ # honour a JOBS variable. EXTRA_OEMAKE:append:task-configure = " JOBS=1" +# the architectures that need this file can be found in +# tools/include/uapi/asm/bpf_perf_event.h +# We are only listing supported arches at the moment +PERF_BPF_EVENT_SRC ?= '${@bb.utils.contains_any("ARCH", [ "riscv", "arm64" ], "arch/${ARCH}/include/uapi/asm/bpf_perf_event.h", "", d)}' PERF_SRC ?= "Makefile \ tools/arch \ tools/build \ @@ -120,6 +142,8 @@ PERF_SRC ?= "Makefile \ tools/perf \ tools/scripts \ scripts/ \ + arch/arm64/tools \ + ${PERF_BPF_EVENT_SRC} \ arch/${ARCH}/Makefile \ " @@ -134,6 +158,10 @@ PERF_EXTRA_LDFLAGS:mipsarchn64el = "-m elf64ltsmip" do_compile() { # Linux kernel build system is expected to do the right thing unset CFLAGS + test -e ${S}/tools/lib/traceevent/plugins/Makefile && \ + sed -i -e 's|\$(libdir)/traceevent/plugins|\$(libdir)/traceevent_${KERNEL_VERSION}/plugins|g' ${S}/tools/lib/traceevent/plugins/Makefile + test -e ${S}/tools/perf/Makefile.config && \ + sed -i -e 's|\$(libdir)/traceevent/plugins|\$(libdir)/traceevent_${KERNEL_VERSION}/plugins|g' ${S}/tools/perf/Makefile.config oe_runmake all } @@ -142,8 +170,11 @@ do_install() { unset CFLAGS oe_runmake install # we are checking for this make target to be compatible with older perf versions - if ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'true', 'false', d)} && grep -q install-python_ext ${S}/tools/perf/Makefile*; then + if ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)} && grep -q install-python_ext ${S}/tools/perf/Makefile*; then oe_runmake DESTDIR=${D} install-python_ext + if [ -e ${D}${libdir}/python*/site-packages/perf-*/SOURCES.txt ]; then + sed -i -e 's#${WORKDIR}##g' ${D}${libdir}/python*/site-packages/perf-*/SOURCES.txt + fi fi } @@ -158,7 +189,8 @@ python copy_perf_source_from_kernel() { src = oe.path.join(src_dir, s) dest = oe.path.join(dest_dir, s) if not os.path.exists(src): - bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src) + bb.warn("Path does not exist: %s. Maybe PERF_SRC lists more files than what your kernel version provides and needs." % src) + continue if os.path.isdir(src): oe.path.copyhardlinktree(src, dest) else: @@ -203,14 +235,18 @@ do_configure:prepend () { if [ -e "${S}/tools/perf/Makefile.perf" ]; then sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \ ${S}/tools/perf/Makefile.perf - sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \ + # Variant with linux-yocto-specific patch + sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='\$(DESTDIR)',g" \ + ${S}/tools/perf/Makefile.perf + # Variant for mainline Linux + sed -i -e "s,root='/\$(DESTDIR_SQ)',prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='/\$(DESTDIR_SQ)',g" \ ${S}/tools/perf/Makefile.perf # backport https://github.com/torvalds/linux/commit/e4ffd066ff440a57097e9140fa9e16ceef905de8 sed -i -e 's,\($(Q)$(SHELL) .$(arch_errno_tbl).\) $(CC) $(arch_errno_hdr_dir),\1 $(firstword $(CC)) $(arch_errno_hdr_dir),g' \ ${S}/tools/perf/Makefile.perf fi sed -i -e "s,--root='/\$(DESTDIR_SQ)',--prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \ - ${S}/tools/perf/Makefile* + ${S}/tools/perf/Makefile if [ -e "${S}/tools/build/Makefile.build" ]; then sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \ @@ -227,6 +263,15 @@ do_configure:prepend () { # reproducible. sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO))),g' \ ${S}/tools/perf/Makefile.config + # The same line is in older releases, but looking explicitly for Python 2 + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON2)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON2))),g' \ + ${S}/tools/perf/Makefile.config + + # likewise with this substitution. Kernels with commit 18f2967418d031a39 + # [perf tools: Use Python devtools for version autodetection rather than runtime] + # need this substitution for reproducibility. + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO))),$(notdir $(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO)))),g' \ + ${S}/tools/perf/Makefile.config # The following line: # srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))), @@ -235,6 +280,9 @@ do_configure:prepend () { # change the Makefile line to remove everything before 'tools/perf' sed -i -e "s%srcdir_SQ = \$(subst ','\\\'',\$(srcdir))%srcdir_SQ = \$(patsubst \%tools/perf,tools/perf,\$(subst ','\\\'',\$(srcdir)))%g" \ ${S}/tools/perf/Makefile.config + # Avoid hardcoded path to python-native + sed -i -e 's#\(PYTHON_WORD := \)$(call shell-wordify,$(PYTHON))#\1 python3#g' \ + ${S}/tools/perf/Makefile.config fi if [ -e "${S}/tools/perf/tests/Build" ]; then # OUTPUT is the full path, we have python on the path so we remove it from the @@ -260,6 +308,20 @@ do_configure:prepend () { sed -i -e "s,$target,$replacement1$replacement2$replacement3,g" \ "${S}/tools/perf/pmu-events/Build" fi + if [ -e "${S}/tools/perf/pmu-events/jevents.py" ]; then + sed -i -e "s#os.scandir(path)#sorted(os.scandir(path), key=lambda e: e.name)#g" \ + "${S}/tools/perf/pmu-events/jevents.py" + fi + if [ -e "${S}/tools/perf/arch/arm64/Makefile" ]; then + sed -i 's,sysdef := $(srctree)/,sysdef := ,' ${S}/tools/perf/arch/arm64/Makefile + sed -i 's,$(incpath) $(sysdef),$(incpath) $(srctree)/$(sysdef) $(sysdef),' ${S}/tools/perf/arch/arm64/Makefile + fi + if [ -e "${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl" ]; then + if ! grep -q input_rel ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl; then + sed -i 's,input=$4,input=$4\ninput_rel=$5,' ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl + fi + sed -i 's,#include \\"\$input\\",#include \\"\$input_rel\\",' ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl + fi # end reproducibility substitutions # We need to ensure the --sysroot option in CC is preserved @@ -267,6 +329,7 @@ do_configure:prepend () { sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/perf/Makefile.perf sed -i 's,AR = $(CROSS_COMPILE)ar,#AR,' ${S}/tools/perf/Makefile.perf sed -i 's,LD = $(CROSS_COMPILE)ld,#LD,' ${S}/tools/perf/Makefile.perf + sed -i 's,PKG_CONFIG = $(CROSS_COMPILE)pkg-config,#PKG_CONFIG,' ${S}/tools/perf/Makefile.perf fi if [ -e "${S}/tools/lib/api/Makefile" ]; then sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/lib/api/Makefile @@ -283,6 +346,9 @@ do_configure:prepend () { if [ -e "${S}/tools/build/Makefile.feature" ]; then sed -i 's,CFLAGS=,CC="\$(CC)" CFLAGS=,' ${S}/tools/build/Makefile.feature fi + # The libperl feature check produces fatal warnings due to -Werror being + # used, silence enough errors that the check passes. + sed -i 's/\(FLAGS_PERL_EMBED=.*\)/\1 -Wno-error=unused-function -Wno-error=attributes/' ${S}/tools/build/feature/Makefile # 3.17-rc1+ has a include issue for arm/powerpc. Temporarily sed in the appropriate include if [ -e "${S}/tools/perf/arch/$ARCH/util/skip-callchain-idx.c" ]; then @@ -325,13 +391,14 @@ RDEPENDS:${PN} += "elfutils bash" RDEPENDS:${PN}-archive =+ "bash" RDEPENDS:${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}" RDEPENDS:${PN}-perl =+ "bash perl perl-modules" -RDEPENDS:${PN}-tests =+ "python3 bash" - -RSUGGESTS_SCRIPTING = "${@bb.utils.contains('PACKAGECONFIG', 'scripting', '${PN}-perl ${PN}-python', '',d)}" -RSUGGESTS:${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}" +RDEPENDS:${PN}-tests =+ "python3 bash perl" +RSUGGESTS:${PN} += "${PN}-archive ${PN}-tests \ + ${@bb.utils.contains('PACKAGECONFIG', 'perl', '${PN}-perl', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'python', '${PN}-python', '', d)} \ + " FILES_SOLIBSDEV = "" -FILES:${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent ${libdir}/libperf-jvmti.so" +FILES:${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent* ${libdir}/libperf-jvmti.so" FILES:${PN}-archive = "${libdir}/perf/perf-core/perf-archive" FILES:${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests" FILES:${PN}-python = " \ @@ -340,6 +407,16 @@ FILES:${PN}-python = " \ " FILES:${PN}-perl = "${libexecdir}/perf-core/scripts/perl" - -INHIBIT_PACKAGE_DEBUG_SPLIT="1" DEBUG_OPTIMIZATION:append = " -Wno-error=maybe-uninitialized" + +PACKAGESPLITFUNCS =+ "perf_fix_sources" + +perf_fix_sources () { + for f in util/parse-events-flex.h util/parse-events-flex.c util/pmu-flex.c \ + util/pmu-flex.h util/expr-flex.h util/expr-flex.c; do + f=${PKGD}${TARGET_DBGSRC_DIR}/$f + if [ -e $f ]; then + sed -i -e 's#${S}/##g' $f + fi + done +} diff --git a/meta/recipes-kernel/perf/perf/sort-pmuevents.py b/meta/recipes-kernel/perf/perf/sort-pmuevents.py index 09ba3328a7..0a87e553ab 100755 --- a/meta/recipes-kernel/perf/perf/sort-pmuevents.py +++ b/meta/recipes-kernel/perf/perf/sort-pmuevents.py @@ -36,10 +36,10 @@ with open(infile, 'r') as file: preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL ) preamble = re.search( preamble_regex, data ) -struct_block_regex = re.compile( '^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL ) -field_regex = re.compile( '{.*?},', re.MULTILINE | re.DOTALL ) -cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL ) -name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL ) +struct_block_regex = re.compile(r'^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL ) +field_regex = re.compile(r'{.*?},', re.MULTILINE | re.DOTALL ) +cpuid_regex = re.compile(r'\.cpuid = (.*?),', re.MULTILINE | re.DOTALL ) +name_regex = re.compile(r'\.name = (.*?),', re.MULTILINE | re.DOTALL ) # create a dictionary structure to store all the structs, their # types and then their fields. @@ -62,7 +62,10 @@ for struct in re.findall( struct_block_regex, data ): #print( " name found: %s" % name.group(1) ) entry_dict[struct[2]]['fields'][name.group(1)] = entry - if not entry_dict[struct[2]]['fields']: + # unmatched entries are most likely array terminators and + # should end up as the last element in the sorted list, which + # is achieved by using '0' as the key + if not cpuid and not name: entry_dict[struct[2]]['fields']['0'] = entry # created ordered dictionaries from the captured values. These are ordered by diff --git a/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch b/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch deleted file mode 100644 index 84b05ac971..0000000000 --- a/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 76d3f0851520bc8488e432f423941f1e72cc7405 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex@linutronix.de> -Date: Mon, 25 Oct 2021 17:47:23 +0200 -Subject: [PATCH] src: fix compatibility with ncurses 6.3 - -Upstream-Status: Submitted [https://github.com/fenrus75/powertop/pull/92] -Signed-off-by: Alexander Kanavin <alex@linutronix.de> ---- - src/devices/devfreq.cpp | 2 +- - src/display.cpp | 2 +- - src/lib.cpp | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/devices/devfreq.cpp b/src/devices/devfreq.cpp -index 0509d0f..b194ac4 100644 ---- a/src/devices/devfreq.cpp -+++ b/src/devices/devfreq.cpp -@@ -297,7 +297,7 @@ void display_devfreq_devices(void) - df->fill_freq_utilization(j, buf); - strcat(fline, buf); - strcat(fline, "\n"); -- wprintw(win, fline); -+ wprintw(win, "%s", fline); - } - wprintw(win, "\n"); - } -diff --git a/src/display.cpp b/src/display.cpp -index 7131144..cc03919 100644 ---- a/src/display.cpp -+++ b/src/display.cpp -@@ -125,7 +125,7 @@ void show_tab(unsigned int tab) - - c = bottom_lines[tab_names[tab]].c_str(); - if (c && strlen(c) > 0) -- mvwprintw(bottom_line, 0,0, c); -+ mvwprintw(bottom_line, 0,0, "%s", c); - else - mvwprintw(bottom_line, 0, 0, - "<ESC> %s | <TAB> / <Shift + TAB> %s | ", _("Exit"), -diff --git a/src/lib.cpp b/src/lib.cpp -index 5e48f37..5cd1c4a 100644 ---- a/src/lib.cpp -+++ b/src/lib.cpp -@@ -583,7 +583,7 @@ void ui_notify_user_ncurses(const char *frmt, ...) - * buffer */ - vsnprintf(notify, UI_NOTIFY_BUFF_SZ - 1, frmt, list); - va_end(list); -- mvprintw(1, 0, notify); -+ mvprintw(1, 0, "%s", notify); - attroff(COLOR_PAIR(1)); - } - diff --git a/meta/recipes-kernel/powertop/powertop_2.14.bb b/meta/recipes-kernel/powertop/powertop_2.15.bb index a2f30040b5..65c6d0fcd3 100644 --- a/meta/recipes-kernel/powertop/powertop_2.14.bb +++ b/meta/recipes-kernel/powertop/powertop_2.15.bb @@ -2,15 +2,14 @@ SUMMARY = "Power usage tool" DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management." HOMEPAGE = "https://01.org/powertop/" BUGTRACKER = "https://app.devzing.com/powertopbugs/bugzilla" -DEPENDS = "ncurses libnl pciutils autoconf-archive" +DEPENDS = "ncurses libnl pciutils autoconf-archive-native" LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e" SRC_URI = "git://github.com/fenrus75/powertop;protocol=https;branch=master \ file://0001-wakeup_xxx.h-include-limits.h.patch \ - file://0001-src-fix-compatibility-with-ncurses-6.3.patch \ " -SRCREV = "52f022f9bbe6e060fba11701d657a8d9762702ba" +SRCREV = "d51ad395436d4d1dcc3ca46e1519ffeb475bf651" S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/systemtap/systemtap-native_git.bb b/meta/recipes-kernel/systemtap/systemtap-native_git.bb index 19cc1cf0f0..2690b259c8 100644 --- a/meta/recipes-kernel/systemtap/systemtap-native_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap-native_git.bb @@ -1,6 +1,6 @@ require systemtap_git.bb -inherit native +inherit_defer native addtask addto_recipe_sysroot after do_populate_sysroot before do_build diff --git a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb deleted file mode 100644 index 2181e45a8d..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "UProbes kernel module for SystemTap" -HOMEPAGE = "https://sourceware.org/systemtap/" -require systemtap_git.inc - -DEPENDS = "systemtap virtual/kernel" - -# On systems without CONFIG_UTRACE, this package is empty. -ALLOW_EMPTY:${PN} = "1" - -inherit module-base gettext - -FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemtap:" - -FILES:${PN} += "${datadir}/systemtap/runtime/uprobes" - -# Compile and install the uprobes kernel module on machines with utrace -# support. Note that staprun expects it in the systemtap/runtime directory, -# not in /lib/modules. -do_compile() { - if grep -q "CONFIG_UTRACE=y" ${STAGING_KERNEL_BUILDDIR}/.config - then - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP - oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - -C ${STAGING_KERNEL_DIR} scripts - oe_runmake KDIR=${STAGING_KERNEL_DIR} \ - M="${S}/runtime/uprobes/" \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - -C "${S}/runtime/uprobes/" - fi -} - -do_install() { - if [ -e "${S}/runtime/uprobes/uprobes.ko" ] - then - install -d ${D}${datadir}/systemtap/runtime/uprobes/ - install -m 0644 ${S}/runtime/uprobes/uprobes.ko ${D}${datadir}/systemtap/runtime/uprobes/ - fi -} diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch new file mode 100644 index 0000000000..2d46a3962d --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch @@ -0,0 +1,40 @@ +From 5a01e28bd806326b2143e3e6bb28d4780c5d879d Mon Sep 17 00:00:00 2001 +From: Victor Kamensky <victor.kamensky7@gmail.com> +Date: Sun, 3 Dec 2023 18:40:05 -0800 +Subject: [PATCH] Makefile.am: remove runtime/linux/uprobes and + runtime/linux/uprobes2 install + +"PR30434 continuation: Removed old uprobes, uprobes2 implementation, +uprobes-inc.h & any mentions of CONFIG_UTRACE." commit removed uprobes, +and uprobes2 sources and directories, but Makefile.am still tries to +install them. In fact after failing to 'cd' into runtime/linux/uprobes +directory it copies top level *.[ch] files into +${prefix}/share/systemtap/runtime/linux/uprobes directory. + +The issue was caught by OpenEmbedded project do_package_qa checks. + +Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com> + +Upstream-Status: Submitted [https://sourceware.org/pipermail/systemtap/2023q4/027880.html] +--- + Makefile.am | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 5737c6b20..2ba896088 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -277,10 +277,6 @@ endif + do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/softfloat/$$f; done) + (cd $(srcdir)/runtime/linux; for f in *.[ch]; \ + do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/$$f; done) +- (cd $(srcdir)/runtime/linux/uprobes; for f in Makefile *.[ch]; \ +- do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes/$$f; done) +- (cd $(srcdir)/runtime/linux/uprobes2; for f in *.[ch]; \ +- do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes2/$$f; done) + (cd $(srcdir)/tapset; find . \( -name '*.stp' -o -name '*.stpm' -o -name README \) -print \ + | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/tapset/$$f; done) + (cd $(srcdir)/testsuite/systemtap.examples; find . -type f -print \ +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch b/meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch deleted file mode 100644 index 0801cb57ec..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch +++ /dev/null @@ -1,45 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From b0422e9e5a539164af75cddcaeb01bceca56bf12 Mon Sep 17 00:00:00 2001 -From: "Frank Ch. Eigler" <fche@redhat.com> -Date: Thu, 13 Jan 2022 18:33:15 -0500 -Subject: [PATCH] PR28778: gcc warning tweak for sprintf precision parameter - -A precision=-1 sentinel value got interpreted as UINT_MAX in a -context, leading to diagnostics like: - -/usr/share/systemtap/runtime/vsprintf.c:341:23: error: 'strnlen' specified bound 4294967295 may exceed maximum object size 2147483647 [-Werror=stringop-overread] - -Adding a clamp_t() around the parameter field to keep it limited to -STP_BUFFER_SIZE (8K by default), which is apprx. the limit for a -single printf. ---- - runtime/vsprintf.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c -index cd31a938b..606f685e8 100644 ---- a/runtime/vsprintf.c -+++ b/runtime/vsprintf.c -@@ -338,7 +338,7 @@ _stp_vsprint_memory(char * str, char * end, const char * ptr, - if (format == 's') { - if ((unsigned long)ptr < PAGE_SIZE) - ptr = "<NULL>"; -- len = strnlen(ptr, precision); -+ len = strnlen(ptr, clamp_t(size_t, precision, 0, STP_BUFFER_SIZE)); - } - else if (precision > 0) - len = precision; -@@ -410,7 +410,7 @@ _stp_vsprint_memory_size(const char * ptr, int width, int precision, - if (format == 's') { - if ((unsigned long)ptr < PAGE_SIZE) - ptr = "<NULL>"; -- len = strnlen(ptr, precision); -+ len = strnlen(ptr, clamp_t(size_t, precision, 0, STP_BUFFER_SIZE)); - } - else if (precision > 0) - len = precision; --- -2.25.1 - diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch b/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch deleted file mode 100644 index 931310db53..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch +++ /dev/null @@ -1,84 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -PR28804: tune default stap -s ## buffer size on small RAM machines - -Insert a forgotten division by num_online_cpu() to adjust downward the -calculated bufsize. Tweak normal defaults back to 128 * 2 * 64K -(16MB) per CPU, as the stap man page indicates. This may need further -tweaking when balancing against staprun consumption performance, but -at least we have the docs lined up with the code at the moment. - -PR28804: tune default stap -s ## buffer size on small RAM machines - -Use si_meminfo to limit default buffer size. Note in the man page -that the "-s ##" parameter is per-CPU. - -diff --git a/man/stap.1.in b/man/stap.1.in -index 55dbc2c93..285a27b34 100644 ---- a/man/stap.1.in -+++ b/man/stap.1.in -@@ -239,8 +239,8 @@ and average amount of time spent in each probe-point. Also shows - the derivation for each probe-point. - .TP - .BI \-s " NUM" --Use NUM megabyte buffers for kernel-to-user data transfer. On a --multiprocessor in bulk mode, this is a per-processor amount. -+Use NUM megabyte buffers for kernel-to-user data transfer per processor. -+The default is 16MB, or less on smaller memory machines. - .TP - .BI \-I " DIR" - Add the given directory to the tapset search directory. See the -diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c -index 18ecccea2..44afff814 100644 ---- a/runtime/transport/transport.c -+++ b/runtime/transport/transport.c -@@ -72,8 +72,11 @@ static inline void _stp_unlock_inode(struct inode *inode); - #include "procfs.c" - #include "control.c" - --static unsigned _stp_nsubbufs = 256; --static unsigned _stp_subbuf_size = 8 * STP_BUFFER_SIZE; /* 64K */ -+/* set default buffer parameters. User may override these via stap -s #, and -+ the runtime may auto-shrink it on low memory machines too. */ -+/* NB: Note default in man/stap.1.in */ -+static unsigned _stp_nsubbufs = 128; -+static unsigned _stp_subbuf_size = 2 * STP_BUFFER_SIZE; /* 2 * 64K */ - - /* module parameters */ - static int _stp_bufsize; -@@ -602,17 +605,30 @@ static int _stp_transport_init(void) - _stp_need_kallsyms_stext = 0; - #endif - -- if (_stp_bufsize) { -- unsigned size = _stp_bufsize * 1024 * 1024; -+ if (_stp_bufsize == 0) { // option not specified? -+ struct sysinfo si; -+ long _stp_bufsize_avail; -+ si_meminfo(&si); -+ _stp_bufsize_avail = (long)((si.freeram + si.bufferram) / 4 / num_online_cpus()) -+ << PAGE_SHIFT; // limit to quarter of free ram total -+ if ((_stp_nsubbufs * _stp_subbuf_size * num_online_cpus()) > _stp_bufsize_avail) { -+ _stp_bufsize = max_t (int, 1, _stp_bufsize_avail / 1024 / 1024); -+ dbug_trans(1, "Shrinking default _stp_bufsize to %d MB/cpu due to low free memory\n", _stp_bufsize); -+ } -+ } -+ -+ if (_stp_bufsize) { // overridden by user or by si_meminfo heuristic? -+ long size = _stp_bufsize * 1024 * 1024; - _stp_subbuf_size = 65536; -+ // bump up subbuf size from 64K to 1M to keep _stp_nsubbufs not too large - while (size / _stp_subbuf_size > 64 && - _stp_subbuf_size < 1024 * 1024) { - _stp_subbuf_size <<= 1; - } - _stp_nsubbufs = size / _stp_subbuf_size; -- dbug_trans(1, "Using %d subbufs of size %d\n", _stp_nsubbufs, _stp_subbuf_size); - } -- -+ dbug_trans(1, "Using %d subbufs of size %d\n", _stp_nsubbufs, _stp_subbuf_size); -+ - ret = _stp_transport_fs_init(THIS_MODULE->name); - if (ret) - goto err0; diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch b/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch new file mode 100644 index 0000000000..e3d94d9312 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch @@ -0,0 +1,40 @@ +From d42139cf9cd26d0c0363fcfe007716baeb8de517 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@gmail.com> +Date: Fri, 22 Dec 2023 19:42:38 +0000 +Subject: [PATCH] bpf-translate.cxx: fix build against upcoming `gcc-14` + (`-Werror=calloc-transposed-args`) + +`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It +detected minor infelicity in `calloc()` API usage in `systemtap`: + + bpf-translate.cxx: In function 'bpf::BPF_Section* bpf::output_probe(BPF_Output&, program&, const std::string&, unsigned int)': + bpf-translate.cxx:5044:39: error: 'void* calloc(size_t, size_t)' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] + 5044 | bpf_insn *buf = (bpf_insn*) calloc (sizeof(bpf_insn), ninsns); + | ^~~~~~~~~~~~~~~~ + bpf-translate.cxx:5044:39: note: earlier argument should specify number of elements, later size of each element + +Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=d42139cf9cd26d0c0363fcfe007716baeb8de517] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + bpf-translate.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/bpf-translate.cxx b/bpf-translate.cxx +index 1a9302463..aa8ef65ce 100644 +--- a/bpf-translate.cxx ++++ b/bpf-translate.cxx +@@ -5041,9 +5041,9 @@ output_probe(BPF_Output &eo, program &prog, + } + } + +- bpf_insn *buf = (bpf_insn*) calloc (sizeof(bpf_insn), ninsns); ++ bpf_insn *buf = (bpf_insn*) calloc (ninsns, sizeof(bpf_insn)); + assert (buf); +- Elf64_Rel *rel = (Elf64_Rel*) calloc (sizeof(Elf64_Rel), nreloc); ++ Elf64_Rel *rel = (Elf64_Rel*) calloc (nreloc, sizeof(Elf64_Rel)); + assert (rel); + + unsigned i = 0, r = 0; +-- +2.43.0 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch b/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch new file mode 100644 index 0000000000..98641826f6 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch @@ -0,0 +1,51 @@ +From 3913ad3e28a19811e1b52338112344a487057e4f Mon Sep 17 00:00:00 2001 +From: Victor Kamensky <victor.kamensky7@gmail.com> +Date: Mon, 18 Dec 2023 03:13:38 +0000 +Subject: [PATCH 1/2] configure.ac: fix broken libdebuginfod library auto + detection + +After 2e67b053e3796ee7cf29a39f9698729b52078406 "configury: rework debuginfod searches" +commit, libdebuginfod.so library auto detection is broken. It was reported by Martin Jansa +on openembedded-core mailing list [1]. + +Currently configure.ac does "AC_DEFINE([HAVE_LIBDEBUGINFOD], [1] ..." as long as +no --without-debuginfod option is passed, regardless PKG_CHECK_MODULES check result. +It seems to be bad copy/paste. Address the issue by moving the AC_DEFINE back to +PKG_CHECK_MODULES action-if-found block. + +To reproduce the issue on FC system, one can do the following +"sudo dnf remove elfutils-debuginfod-client-devel" and then try to build SystemTap +util.cxx will fail to compile because of missing elfutils/debuginfod.h because +config.h will have "#define HAVE_LIBDEBUGINFOD 1", while config.log and configure +output indicates that check for libdebuginfod library failed. + +[1] https://lists.openembedded.org/g/openembedded-core/message/192109?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3Acreated%2C0%2Csystemtap%2C20%2C2%2C0%2C102987514 + +Upstream-Status: Submitted [https://sourceware.org/pipermail/systemtap/2023q4/027914.html] +Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com> +--- + configure.ac | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d9559c5c3..18cd7f84a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -219,12 +219,11 @@ dnl take the user at his or her word + elif test "x$with_debuginfod" != xno; then + dnl check in the system pkgconfig + PKG_CHECK_MODULES([debuginfod], [libdebuginfod >= 0.179], +- [have_debuginfod=1], ++ [have_debuginfod=1 ++ AC_DEFINE([HAVE_LIBDEBUGINFOD], [1], [Define to 1 if debuginfod is enabled.])], + [if test "x$with_debuginfod" = xyes; then + AC_MSG_ERROR(["--with-debuginfod was given, but libdebuginfod is missing or unusable."]) + fi]) +- AC_DEFINE([HAVE_LIBDEBUGINFOD], [1], [Define to 1 if debuginfod is enabled.]) +- AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-gcc12-c-compatibility-re-tweak-for-rhel6-use-functio.patch b/meta/recipes-kernel/systemtap/systemtap/0001-gcc12-c-compatibility-re-tweak-for-rhel6-use-functio.patch deleted file mode 100644 index f885c44460..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/0001-gcc12-c-compatibility-re-tweak-for-rhel6-use-functio.patch +++ /dev/null @@ -1,49 +0,0 @@ -From f199d1982ef8a6c6d5c06c082d057b8793bcc6aa Mon Sep 17 00:00:00 2001 -From: Serhei Makarov <serhei@serhei.io> -Date: Fri, 21 Jan 2022 18:21:46 -0500 -Subject: [PATCH] gcc12 c++ compatibility re-tweak for rhel6: use function - pointer instead of lambdas instead of ptr_fun<> - -Saving 2 lines in ltrim/rtrim is probably not a good reason to drop -compatibility with the RHEL6 system compiler. Actually declaring a -named function and passing the function pointer is compatible with -everything. - -Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=f199d1982ef8a6c6d5c06c082d057b8793bcc6aa] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - util.cxx | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - ---- a/util.cxx -+++ b/util.cxx -@@ -1757,21 +1757,24 @@ flush_to_stream (const string &fname, os - return 1; // Failure - } - -+int -+not_isspace(unsigned char c) -+{ -+ return !std::isspace(c); -+} -+ - // trim from start (in place) - void - ltrim(std::string &s) - { -- s.erase(s.begin(), -- std::find_if(s.begin(), s.end(), -- std::not1(std::ptr_fun<int, int>(std::isspace)))); -+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), not_isspace)); - } - - // trim from end (in place) - void - rtrim(std::string &s) - { -- s.erase(std::find_if(s.rbegin(), s.rend(), -- std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end()); -+ s.erase(std::find_if(s.rbegin(), s.rend(), not_isspace).base(), s.end()); - } - - // trim from both ends (in place) diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch b/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch new file mode 100644 index 0000000000..afdc10a3fe --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch @@ -0,0 +1,23 @@ +From cfc2c1d53924face11e3fab78ded61c359778eb9 Mon Sep 17 00:00:00 2001 +From: "Frank Ch. Eigler" <fche@redhat.com> +Date: Sat, 4 Nov 2023 12:19:59 -0400 +Subject: [PATCH] prerelease datestamp fixes + +Upstream-Status: Backport +--- + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/NEWS b/NEWS +index c7f31e8b7..f0f9056c4 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,4 +1,4 @@ +-* What's new in version 5.0, 2023-11-03 ++* What's new in version 5.0, 2023-11-04 + + - Performance improvements in uprobe registration and module startup. + +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch new file mode 100644 index 0000000000..22578fb3f6 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch @@ -0,0 +1,36 @@ +From 52596f023652114642faba5726c99488529029ce Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@gmail.com> +Date: Thu, 21 Dec 2023 10:00:06 +0000 +Subject: [PATCH] staprun: fix build against upcoming `gcc-14` + (`-Werror=calloc-transposed-args`) + +`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It +detected minor infelicity in `calloc()` API usage in `systemtap`: + + staprun.c: In function 'main': + staprun.c:550:50: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] + 550 | char ** new_argv = calloc(sizeof(char *),argc+2); + | ^~~~ + +Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=52596f023652114642faba5726c99488529029ce] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + staprun/staprun.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/staprun/staprun.c b/staprun/staprun.c +index 8437f3af6..d1b0b221b 100644 +--- a/staprun/staprun.c ++++ b/staprun/staprun.c +@@ -547,7 +547,7 @@ int main(int argc, char **argv) + us to extend argv[], with all the C fun that entails. */ + #ifdef HAVE_OPENAT + if (relay_basedir_fd >= 0) { +- char ** new_argv = calloc(sizeof(char *),argc+2); ++ char ** new_argv = calloc(argc+2, sizeof(char *)); + const int new_Foption_size = 10; /* -FNNNNN */ + char * new_Foption = malloc(new_Foption_size); + int i; +-- +2.43.0 + diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb index ce86d5274d..68f5c76428 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap_git.bb @@ -6,9 +6,9 @@ HOMEPAGE = "https://sourceware.org/systemtap/" require systemtap_git.inc -SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch \ - file://0001-staprun-address-ncurses-6.3-failures.patch \ - file://0001-gcc12-c-compatibility-re-tweak-for-rhel6-use-functio.patch \ +SRC_URI += " \ + file://0001-improve-reproducibility-for-c-compiling.patch \ + file://0001-staprun-address-ncurses-6.3-failures.patch \ " DEPENDS = "elfutils" @@ -24,15 +24,19 @@ STAP_DOCS ?= "--disable-docs --disable-publican --disable-refdocs" EXTRA_OECONF += "${STAP_DOCS} " -PACKAGECONFIG ??= "translator sqlite monitor python3-probes" +PACKAGECONFIG ??= "translator sqlite monitor python3-probes ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" PACKAGECONFIG[translator] = "--enable-translator,--disable-translator,boost,bash" PACKAGECONFIG[libvirt] = "--enable-libvirt,--disable-libvirt,libvirt" PACKAGECONFIG[sqlite] = "--enable-sqlite,--disable-sqlite,sqlite3" PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor,ncurses json-c" PACKAGECONFIG[python3-probes] = "--with-python3-probes,--without-python3-probes,python3-setuptools-native" +PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod" inherit autotools gettext pkgconfig systemd -inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'setuptools3-base', '', d)} +inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'setuptools3-base', '', d)} + +# | ../git/elaborate.cxx:2601:21: error: storing the address of local variable 'sym' in '*s.systemtap_session::symbol_resolver' [-Werror=dangling-pointer=] +CXXFLAGS += "-Wno-dangling-pointer" # exporter comes with python3-probes PACKAGES =+ "${PN}-exporter" diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc index 5b5521b174..c574bcb2ba 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.inc +++ b/meta/recipes-kernel/systemtap/systemtap_git.inc @@ -1,14 +1,17 @@ LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRCREV = "2e9f2f6967e44ce2bf8f34932b5bdd738ece2161" -PV = "4.6" +SRCREV = "e72dc118e563c645d93a1a2d771e8d90e8fec1ae" +PV = "5.0" -SRC_URI = "git://sourceware.org/git/systemtap.git;branch=master \ +SRC_URI = "git://sourceware.org/git/systemtap.git;branch=master;protocol=https \ file://0001-Do-not-let-configure-write-a-python-location-into-th.patch \ file://0001-Install-python-modules-to-correct-library-dir.patch \ file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \ - file://0001-PR28778-gcc-warning-tweak-for-sprintf-precision-para.patch \ - file://0001-PR28804-tune-default-stap-s-buffer-size-on-small-RAM.patch \ + file://0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch \ + file://0001-prerelease-datestamp-fixes.patch \ + file://0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch \ + file://0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch \ + file://0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch \ " COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips|riscv64).*-linux' diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.04.08.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb index cd42039680..8fde236ab4 100644 --- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.04.08.bb +++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb @@ -5,7 +5,7 @@ LICENSE = "ISC" LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" -SRC_URI[sha256sum] = "884ba2e3c1e8b98762b6dc25ff60b5ec75c8d33a39e019b3ed4aa615491460d3" +SRC_URI[sha256sum] = "c8a61c9acf76fa7eb4239e89f640dee3e87098d9f69b4d3518c9c60fc6d20c55" inherit bin_package allarch @@ -13,7 +13,7 @@ do_install() { install -d -m0755 ${D}${nonarch_libdir}/crda install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin - install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem + install -m 0644 wens.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/wens.key.pub.pem install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s |