diff options
Diffstat (limited to 'meta/recipes-kernel')
89 files changed, 9040 insertions, 1565 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.25.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb index 9784404cff..dec821ea88 100644 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.25.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] = "4eea6f8641ea3e349653a52c7fd33be1132322a5f3dc9f1a6ade886019767320" +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/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_30.bb b/meta/recipes-kernel/kmod/kmod_31.bb index 8eb83efe6d..6ae83a7c66 100644 --- a/meta/recipes-kernel/kmod/kmod_30.bb +++ b/meta/recipes-kernel/kmod/kmod_31.bb @@ -15,18 +15,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ " inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives -SRCREV = "5d46434a63ae0160150a0efdde1914873697e273" +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-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" @@ -35,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/linux-firmware_20220708.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb index 91c32e49d6..13538afede 100644 --- a/meta/recipes-kernel/linux-firmware/linux-firmware_20220708.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,26 +28,33 @@ LICENSE = "\ & Firmware-ene_firmware \ & Firmware-fw_sst_0f28 \ & Firmware-go7007 \ - & Firmware-GPLv2 \ & Firmware-hfi1_firmware \ & 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 \ @@ -53,6 +63,7 @@ LICENSE = "\ & Firmware-radeon \ & Firmware-ralink_a_mediatek_company_firmware \ & Firmware-ralink-firmware \ + & Firmware-rockchip \ & Firmware-rtlwifi_firmware \ & Firmware-imx-sdma_firmware \ & Firmware-siano \ @@ -65,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 \ @@ -80,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 \ @@ -87,28 +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://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 \ @@ -117,6 +138,7 @@ 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 \ @@ -132,7 +154,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ " # WHENCE checksum is defined separately to ease overriding it if # class-devupstream is selected. -WHENCE_CHKSUM = "def08711eb23ba967fb7e1f8cff66178" +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 @@ -142,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" @@ -149,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" @@ -156,27 +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-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" @@ -185,6 +216,7 @@ 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" @@ -209,33 +241,48 @@ SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmw # Pin this to the 20220509 release, override this in local.conf SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae" -SRC_URI[sha256sum] = "0abec827a035c82bdcabdf82aa37ded247bc682ef05861bd409ea6f477bab81d" +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 \ @@ -271,9 +318,11 @@ 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}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \ + ${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}-ath12k ${PN}-qca \ \ ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \ \ @@ -289,37 +338,95 @@ 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 \ ${PN}-ibt-17 \ + ${PN}-ibt-18 \ ${PN}-ibt-20 \ ${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" @@ -327,6 +434,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 \ " @@ -345,20 +455,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" @@ -381,6 +488,10 @@ FILES:${PN}-ath11k = " \ ${nonarch_base_libdir}/firmware/ath11k \ " +FILES:${PN}-ath12k = " \ + ${nonarch_base_libdir}/firmware/ath12k \ +" + FILES:${PN}-qca = " \ ${nonarch_base_libdir}/firmware/qca \ " @@ -388,6 +499,7 @@ FILES:${PN}-qca = " \ RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license" RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license" RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license" +RDEPENDS:${PN}-ath12k += "${PN}-ath10k-license" RDEPENDS:${PN}-qca += "${PN}-ath10k-license" # For ralink @@ -402,17 +514,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" -RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-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}-moxa += "${PN}-moxa-license" # For radeon + LICENSE:${PN}-radeon = "Firmware-radeon" LICENSE:${PN}-radeon-license = "Firmware-radeon" @@ -423,6 +590,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" @@ -520,6 +698,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" @@ -542,6 +766,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" @@ -558,8 +822,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 = " \ @@ -582,10 +849,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" @@ -593,7 +872,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" @@ -624,6 +918,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" @@ -635,6 +939,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 @@ -761,6 +1094,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" @@ -778,18 +1112,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" @@ -833,6 +1195,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" @@ -860,7 +1223,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" @@ -884,6 +1251,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 @@ -910,6 +1278,7 @@ LICENSE:${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware" LICENSE:${PN}-ibt-11-5 = "Firmware-ibt_firmware" LICENSE:${PN}-ibt-12-16 = "Firmware-ibt_firmware" LICENSE:${PN}-ibt-17 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-18 = "Firmware-ibt_firmware" LICENSE:${PN}-ibt-20 = "Firmware-ibt_firmware" LICENSE:${PN}-ibt-misc = "Firmware-ibt_firmware" @@ -919,6 +1288,7 @@ FILES:${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bs FILES:${PN}-ibt-11-5 = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc" FILES:${PN}-ibt-12-16 = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc" FILES:${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc" +FILES:${PN}-ibt-18 = "${nonarch_base_libdir}/firmware/intel/ibt-18-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-18-*.ddc" FILES:${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc" FILES:${PN}-ibt-misc = "${nonarch_base_libdir}/firmware/intel/ibt-*" @@ -927,6 +1297,7 @@ RDEPENDS:${PN}-ibt-hw-37.8 = "${PN}-ibt-license" RDEPENDS:${PN}-ibt-11-5 = "${PN}-ibt-license" RDEPENDS:${PN}-ibt-12-16 = "${PN}-ibt-license" RDEPENDS:${PN}-ibt-17 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-18 = "${PN}-ibt-license" RDEPENDS:${PN}-ibt-20 = "${PN}-ibt-license" RDEPENDS:${PN}-ibt-misc = "${PN}-ibt-license" @@ -939,10 +1310,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" @@ -958,52 +1345,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" @@ -1022,6 +1522,8 @@ LICENSE:${PN} = "\ & Firmware-ca0132 \ & Firmware-cavium \ & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ & Firmware-cw1200 \ & Firmware-dib0700 \ & Firmware-e100 \ @@ -1036,6 +1538,7 @@ LICENSE:${PN} = "\ & Firmware-moxa \ & Firmware-myri10ge_firmware \ & Firmware-nvidia \ + & Firmware-nxp \ & Firmware-OLPC \ & Firmware-ath9k-htc \ & Firmware-phanfw \ @@ -1081,3 +1584,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 71778bb4e3..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") } 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.19.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb index 528e1d3379..d68de6ec7e 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.19.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] = "f91bfe133d2cb1692f705947282e123a" -SRC_URI[sha256sum] = "ff240c579b9ee1affc318917de07394fc1c3bb49dac25ec1287370c2e15005a8" +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 46d706b955..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,106 +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 || : - # 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 || : - - if [ -e $kerneldir/include/generated/.vdso-offsets.h.cmd ] || - [ -e $kerneldir/build/include/generated/.vdso-offsets.h.cmd ] || - [ -e $kerneldir/build/include/generated/.vdso32-offsets.h.cmd ] ; then - 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/.vdso32-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 - # 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.1+ (otherwise we are missing multiple default targets) + cp -a --parents Kbuild $kerneldir/build 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/ + # 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 || : - cp -a --parents tools/include/* $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 $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/ - fi + # 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 [ "${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 tools/include/* $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/ @@ -192,122 +199,160 @@ do_install() { 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 || : - fi - if [ "${ARCH}" = "riscv" ]; then + 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/ - # 5.19+ - cp -a --parents arch/arm/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : + # 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 + # 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 + # 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 || : touch -r $kerneldir/build/.config $kerneldir/build/include/config/auto.conf* 2>/dev/null || : @@ -334,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} @@ -348,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 5a420b7fb2..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.19/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.19+" +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.19.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.19.bb deleted file mode 100644 index e70d20f9f0..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.19.bb +++ /dev/null @@ -1,45 +0,0 @@ -KBRANCH ?= "v5.19/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 ?= "942f6fb5262e8432d6fa982022d953e6a63aec64" -SRCREV_meta ?= "89fdc2046baff988519317cbe838386b6489779f" - -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.19;destsuffix=${KMETA}" - -LINUX_VERSION ?= "5.19" - -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.15.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb index 32c7db2c74..a44a08451a 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb @@ -1,7 +1,10 @@ -KBRANCH ?= "v5.15/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 ?= "13ee019f28013cf8c102a3ffaadfa5e9ae9743e1" -SRCREV_meta ?= "f7f709bf874f85baff9f2fb0ac0341c08399b144" +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.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" -LINUX_VERSION ?= "5.15.59" +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.15.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb deleted file mode 100644 index 8eb138e78b..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb +++ /dev/null @@ -1,30 +0,0 @@ -KBRANCH ?= "v5.15/standard/tiny/base" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "5.15.59" -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 ?= "86c19d4c40f475e09a076d55391fa66d96a1b3ac" -SRCREV_meta ?= "f7f709bf874f85baff9f2fb0ac0341c08399b144" - -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.15;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.19.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb index b0c4d30ef0..db9e252572 100644 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.19.bb +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb @@ -1,11 +1,14 @@ -KBRANCH ?= "v5.19/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.19" +# 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 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_meta ?= "89fdc2046baff988519317cbe838386b6489779f" +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.19;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.15.bb b/meta/recipes-kernel/linux/linux-yocto_5.15.bb deleted file mode 100644 index 083f87727b..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 ?= "c33f2e2ad3fdcc1c9539f80fb51b49f68c544c03" -SRCREV_machine:qemuarm64 ?= "e8a14fadeb24619f20d3caebc01c7f26c49f768a" -SRCREV_machine:qemumips ?= "c5f07eee39e4e03e90de3e71a3f6448fdb73921a" -SRCREV_machine:qemuppc ?= "b5873d3a40b837059a36179174863cb4c7f9e109" -SRCREV_machine:qemuriscv64 ?= "efe20512212b0e85b5f884b1bfc8fbba2b43541a" -SRCREV_machine:qemuriscv32 ?= "efe20512212b0e85b5f884b1bfc8fbba2b43541a" -SRCREV_machine:qemux86 ?= "efe20512212b0e85b5f884b1bfc8fbba2b43541a" -SRCREV_machine:qemux86-64 ?= "efe20512212b0e85b5f884b1bfc8fbba2b43541a" -SRCREV_machine:qemumips64 ?= "a6c0767511eed80395777e42d33fdc8405bff2b4" -SRCREV_machine ?= "efe20512212b0e85b5f884b1bfc8fbba2b43541a" -SRCREV_meta ?= "f7f709bf874f85baff9f2fb0ac0341c08399b144" - -# 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 ?= "d676d6149a2f4b4d66b8ea0a1dfef30a54cf5750" -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.59" - -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_5.19.bb b/meta/recipes-kernel/linux/linux-yocto_5.19.bb deleted file mode 100644 index 2fb6a05b84..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.19.bb +++ /dev/null @@ -1,70 +0,0 @@ -KBRANCH ?= "v5.19/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH:qemuarm ?= "v5.19/standard/arm-versatile-926ejs" -KBRANCH:qemuarm64 ?= "v5.19/standard/qemuarm64" -KBRANCH:qemumips ?= "v5.19/standard/mti-malta32" -KBRANCH:qemuppc ?= "v5.19/standard/qemuppc" -KBRANCH:qemuriscv64 ?= "v5.19/standard/base" -KBRANCH:qemuriscv32 ?= "v5.19/standard/base" -KBRANCH:qemux86 ?= "v5.19/standard/base" -KBRANCH:qemux86-64 ?= "v5.19/standard/base" -KBRANCH:qemumips64 ?= "v5.19/standard/mti-malta64" - -SRCREV_machine:qemuarm ?= "a6ca992258edecafa8bf33cfc5d9e54019ea27b8" -SRCREV_machine:qemuarm64 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemumips ?= "371a5e816aa00f010df12d9fed04dee9f5829cf1" -SRCREV_machine:qemuppc ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemuriscv64 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemuriscv32 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemux86 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemux86-64 ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_machine:qemumips64 ?= "a28b974f928d53d00b06d0d61ae7746336a438f4" -SRCREV_machine ?= "e0e977e1b098d96389f2ab657849456ded9189c9" -SRCREV_meta ?= "89fdc2046baff988519317cbe838386b6489779f" - -# 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 ?= "3d7cb6b04c3f3115719235cc6866b10326de34cd" -PN:class-devupstream = "linux-yocto-upstream" -KBRANCH:class-devupstream = "v5.19/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.19;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.19" - -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-compaction-make-tracepoints-condtional-on-CONFIG_COM.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-compaction-make-tracepoints-condtional-on-CONFIG_COM.patch deleted file mode 100644 index 305ca7cb8b..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-compaction-make-tracepoints-condtional-on-CONFIG_COM.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 417bb00022c813c6dc11bfa652d74f3687df7626 Mon Sep 17 00:00:00 2001 -From: Bruce Ashfield <bruce.ashfield@gmail.com> -Date: Wed, 3 Aug 2022 14:55:56 -0400 -Subject: [PATCH] compaction: make tracepoints condtional on CONFIG_COMPACTION - -When building against a v5.19 mips kernel, the following errors -were triggered: - - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:105:42: note: expected 'struct compact_control *' but argument is of type 'struct compact_control *' - | 105 | TP_PROTO(struct compact_control *cc, - | | ~~~~~~~~~~~~~~~~~~~~~~~~^~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:779:68: note: in definition of macro 'LTTNG_TRACEPOINT_EVENT_CLASS_CODE' - | 779 | static inline size_t __event_get_align__##_name(void *__tp_locvar, _proto) \ - | | ^~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:106:50: note: in expansion of macro 'PARAMS' - | 106 | LTTNG_TRACEPOINT_EVENT_CLASS_CODE(_name, PARAMS(_proto), PARAMS(_args), , , \ - | | ^~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:41:9: note: in expansion of macro 'LTTNG_TRACEPOINT_EVENT_CLASS' - | 41 | LTTNG_TRACEPOINT_EVENT_CLASS(map, \ - | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:42:30: note: in expansion of macro 'PARAMS' - | 42 | PARAMS(proto), \ - | | ^~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:101:1: note: in expansion of macro 'LTTNG_TRACEPOINT_EVENT_MAP' - | 101 | LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, - | | ^~~~~~~~~~~~~~~~~~~~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:105:9: note: in expansion of macro 'TP_PROTO' - | 105 | TP_PROTO(struct compact_control *cc, - | | ^~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:112:57: error: invalid use of undefined type 'struct compact_control' - -... - - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:108:25: warning: 'struct compact_control' declared inside parameter list will not be visible outside of this definition or declaration - | 108 | TP_PROTO(struct compact_control *cc, - | | ^~~~~~~~~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:159:43: note: in definition of macro 'LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP' - | 159 | void __event_template_proto___##_template(_proto); - | | ^~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:45:61: note: in expansion of macro 'PARAMS' - | 45 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(map, name, map, PARAMS(proto), PARAMS(args)) - | | ^~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:104:1: note: in expansion of macro 'LTTNG_TRACEPOINT_EVENT_MAP' - | 104 | LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, - | | ^~~~~~~~~~~~~~~~~~~~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/instrumentation/events/compaction.h:108:9: note: in expansion of macro 'TP_PROTO' - | 108 | TP_PROTO(struct compact_control *cc, - | | ^~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:159:6: error: conflicting types for '__event_template_proto___compaction_migratepages'; have 'void(struct compact_control *, unsigned int)' - | 159 | void __event_template_proto___##_template(_proto); - | | ^~~~~~~~~~~~~~~~~~~~~~~~~ - | lttng-modules-2.13.4/src/probes/../../include/lttng/tracepoint-event-impl.h:45:9: note: in expansion of macro 'LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP' - | 45 | LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(map, name, map, PARAMS(proto), PARAMS(args)) - | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The root cause appears to be that this particular mips kernel does not -have CONFIG_COMPACTION avaiable, and hence we end up with the struct -declaration within this tracepoint, and then conflicting types. - -While putting the conditional around only compaction_migratepages seemed -sufficient to get the build working, it doesn't look like any of the -tracepoints should be valid, so we extend it to all definitions. - -Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2022-August/030246.html] - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - include/instrumentation/events/compaction.h | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h -index ecae39a..155804a 100644 ---- a/include/instrumentation/events/compaction.h -+++ b/include/instrumentation/events/compaction.h -@@ -9,6 +9,8 @@ - #include <linux/types.h> - #include <lttng/kernel-version.h> - -+#ifdef CONFIG_COMPACTION -+ - #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) - - LTTNG_TRACEPOINT_EVENT_CLASS(compaction_isolate_template, -@@ -97,6 +99,7 @@ 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,18,0)) - LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, - -@@ -182,6 +185,8 @@ LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, - ) - #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,16,0)) */ - -+#endif /* CONFIG_COMPACTION */ -+ - #endif /* LTTNG_TRACE_COMPACTION_H */ - - /* This part must be outside protection */ --- -2.25.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-mm-page_alloc-fix-tracepoint-mm_page_alloc_zone_.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-mm-page_alloc-fix-tracepoint-mm_page_alloc_zone_.patch deleted file mode 100644 index 62376806c8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-mm-page_alloc-fix-tracepoint-mm_page_alloc_zone_.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 8d5da4d2a3d7d9173208f4e8dc7a709f0bfc9820 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 8 Jun 2022 12:56:36 -0400 -Subject: [PATCH 1/3] fix: mm/page_alloc: fix tracepoint - mm_page_alloc_zone_locked() (v5.19) - -See upstream commit : - - commit 10e0f7530205799e7e971aba699a7cb3a47456de - Author: Wonhyuk Yang <vvghjk1234@gmail.com> - Date: Thu May 19 14:08:54 2022 -0700 - - mm/page_alloc: fix tracepoint mm_page_alloc_zone_locked() - - Currently, trace point mm_page_alloc_zone_locked() doesn't show correct - information. - - First, when alloc_flag has ALLOC_HARDER/ALLOC_CMA, page can be allocated - from MIGRATE_HIGHATOMIC/MIGRATE_CMA. Nevertheless, tracepoint use - requested migration type not MIGRATE_HIGHATOMIC and MIGRATE_CMA. - - Second, after commit 44042b4498728 ("mm/page_alloc: allow high-order pages - to be stored on the per-cpu lists") percpu-list can store high order - pages. But trace point determine whether it is a refiil of percpu-list by - comparing requested order and 0. - - To handle these problems, make mm_page_alloc_zone_locked() only be called - by __rmqueue_smallest with correct migration type. With a new argument - called percpu_refill, it can show roughly whether it is a refill of - percpu-list. - -Upstream-Status: Backport - -Change-Id: I2e4a57393757f12b9c5a4566c4d1102ee2474a09 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/kmem.h | 45 +++++++++++++++++++++++++++ - 1 file changed, 45 insertions(+) - -diff --git a/include/instrumentation/events/kmem.h b/include/instrumentation/events/kmem.h -index 29c0fb7f..8c19e962 100644 ---- a/include/instrumentation/events/kmem.h -+++ b/include/instrumentation/events/kmem.h -@@ -218,6 +218,50 @@ LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc, kmem_mm_page_alloc, - ) - ) - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,19,0)) -+LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page, -+ -+ TP_PROTO(struct page *page, unsigned int order, int migratetype, -+ int percpu_refill), -+ -+ TP_ARGS(page, order, migratetype, percpu_refill), -+ -+ TP_FIELDS( -+ ctf_integer_hex(struct page *, page, page) -+ ctf_integer(unsigned long, pfn, -+ page ? page_to_pfn(page) : -1UL) -+ ctf_integer(unsigned int, order, order) -+ ctf_integer(int, migratetype, migratetype) -+ ctf_integer(int, percpu_refill, percpu_refill) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_alloc_zone_locked, -+ -+ kmem_mm_page_alloc_zone_locked, -+ -+ TP_PROTO(struct page *page, unsigned int order, int migratetype, -+ int percpu_refill), -+ -+ TP_ARGS(page, order, migratetype, percpu_refill) -+) -+ -+LTTNG_TRACEPOINT_EVENT_MAP(mm_page_pcpu_drain, -+ -+ kmem_mm_page_pcpu_drain, -+ -+ TP_PROTO(struct page *page, unsigned int order, int migratetype), -+ -+ TP_ARGS(page, order, migratetype), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned long, pfn, -+ page ? page_to_pfn(page) : -1UL) -+ ctf_integer(unsigned int, order, order) -+ ctf_integer(int, migratetype, migratetype) -+ ) -+) -+#else - LTTNG_TRACEPOINT_EVENT_CLASS(kmem_mm_page, - - TP_PROTO(struct page *page, unsigned int order, int migratetype), -@@ -250,6 +294,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_mm_page, mm_page_pcpu_drain, - - TP_ARGS(page, order, migratetype) - ) -+#endif - - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,19,2) \ - || LTTNG_KERNEL_RANGE(3,14,36, 3,15,0) \ --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-net-skb-introduce-kfree_skb_reason-v5.15.58.v5.1.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-net-skb-introduce-kfree_skb_reason-v5.15.58.v5.1.patch deleted file mode 100644 index ca6abea9c0..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-net-skb-introduce-kfree_skb_reason-v5.15.58.v5.1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From d8254360c7f2ff9b3f945e9668d89c0b56b9bd91 Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Date: Fri, 29 Jul 2022 15:37:43 -0400 -Subject: [PATCH] fix: net: skb: introduce kfree_skb_reason() (v5.15.58..v5.16) - -See upstream commit : - - commit c504e5c2f9648a1e5c2be01e8c3f59d394192bd3 - Author: Menglong Dong <imagedong@tencent.com> - Date: Sun Jan 9 14:36:26 2022 +0800 - - net: skb: introduce kfree_skb_reason() - - Introduce the interface kfree_skb_reason(), which is able to pass - the reason why the skb is dropped to 'kfree_skb' tracepoint. - - Add the 'reason' field to 'trace_kfree_skb', therefor user can get - more detail information about abnormal skb with 'drop_monitor' or - eBPF. - - All drop reasons are defined in the enum 'skb_drop_reason', and - they will be print as string in 'kfree_skb' tracepoint in format - of 'reason: XXX'. - - ( Maybe the reasons should be defined in a uapi header file, so that - user space can use them? ) - -Upstream-Status: Backport - -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: Ib3c039207739dad10f097cf76474e0822e351273 ---- - include/instrumentation/events/skb.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/include/instrumentation/events/skb.h b/include/instrumentation/events/skb.h -index 237e54ad..186732ea 100644 ---- a/include/instrumentation/events/skb.h -+++ b/include/instrumentation/events/skb.h -@@ -13,7 +13,9 @@ - /* - * Tracepoint for free an sk_buff: - */ --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0)) -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0) \ -+ || LTTNG_KERNEL_RANGE(5,15,58, 5,16,0)) -+ - LTTNG_TRACEPOINT_ENUM(skb_drop_reason, - TP_ENUM_VALUES( - ctf_enum_value("NOT_SPECIFIED", SKB_DROP_REASON_NOT_SPECIFIED) --- -2.17.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-fs-Remove-flags-parameter-from-aops-write_begin-.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-fix-fs-Remove-flags-parameter-from-aops-write_begin-.patch deleted file mode 100644 index 84c97d5f90..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0002-fix-fs-Remove-flags-parameter-from-aops-write_begin-.patch +++ /dev/null @@ -1,76 +0,0 @@ -From b5d1c38665cd69d7d1c94231fe0609da5c8afbc3 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 8 Jun 2022 13:07:59 -0400 -Subject: [PATCH 2/3] fix: fs: Remove flags parameter from aops->write_begin - (v5.19) - -See upstream commit : - - commit 9d6b0cd7579844761ed68926eb3073bab1dca87b - Author: Matthew Wilcox (Oracle) <willy@infradead.org> - Date: Tue Feb 22 14:31:43 2022 -0500 - - fs: Remove flags parameter from aops->write_begin - - There are no more aop flags left, so remove the parameter. - -Upstream-Status: Backport - -Change-Id: I82725b93e13d749f52a631b2ac60df81a5e839f8 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/ext4.h | 30 +++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -diff --git a/include/instrumentation/events/ext4.h b/include/instrumentation/events/ext4.h -index 513762c0..222416ec 100644 ---- a/include/instrumentation/events/ext4.h -+++ b/include/instrumentation/events/ext4.h -@@ -122,6 +122,35 @@ LTTNG_TRACEPOINT_EVENT(ext4_begin_ordered_truncate, - ) - ) - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,19,0)) -+LTTNG_TRACEPOINT_EVENT_CLASS(ext4__write_begin, -+ -+ TP_PROTO(struct inode *inode, loff_t pos, unsigned int len), -+ -+ TP_ARGS(inode, pos, len), -+ -+ TP_FIELDS( -+ ctf_integer(dev_t, dev, inode->i_sb->s_dev) -+ ctf_integer(ino_t, ino, inode->i_ino) -+ ctf_integer(loff_t, pos, pos) -+ ctf_integer(unsigned int, len, len) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(ext4__write_begin, ext4_write_begin, -+ -+ TP_PROTO(struct inode *inode, loff_t pos, unsigned int len), -+ -+ TP_ARGS(inode, pos, len) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(ext4__write_begin, ext4_da_write_begin, -+ -+ TP_PROTO(struct inode *inode, loff_t pos, unsigned int len), -+ -+ TP_ARGS(inode, pos, len) -+) -+#else - LTTNG_TRACEPOINT_EVENT_CLASS(ext4__write_begin, - - TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, -@@ -153,6 +182,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(ext4__write_begin, ext4_da_write_begin, - - TP_ARGS(inode, pos, len, flags) - ) -+#endif - - LTTNG_TRACEPOINT_EVENT_CLASS(ext4__write_end, - TP_PROTO(struct inode *inode, loff_t pos, unsigned int len, --- -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-workqueue-Fix-type-of-cpu-in-trace-event-v5.19.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-fix-workqueue-Fix-type-of-cpu-in-trace-event-v5.19.patch deleted file mode 100644 index 63f9c40d92..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0003-fix-workqueue-Fix-type-of-cpu-in-trace-event-v5.19.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 526f13c844cd29f89bd3e924867d9ddfe3c40ade Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 15 Jun 2022 12:07:16 -0400 -Subject: [PATCH 3/3] fix: workqueue: Fix type of cpu in trace event (v5.19) - -See upstream commit : - - commit 873a400938b31a1e443c4d94b560b78300787540 - Author: Wonhyuk Yang <vvghjk1234@gmail.com> - Date: Wed May 4 11:32:03 2022 +0900 - - workqueue: Fix type of cpu in trace event - - The trace event "workqueue_queue_work" use unsigned int type for - req_cpu, cpu. This casue confusing cpu number like below log. - - $ cat /sys/kernel/debug/tracing/trace - cat-317 [001] ...: workqueue_queue_work: ... req_cpu=8192 cpu=4294967295 - - So, change unsigned type to signed type in the trace event. After - applying this patch, cpu number will be printed as -1 instead of - 4294967295 as folllows. - - $ cat /sys/kernel/debug/tracing/trace - cat-1338 [002] ...: workqueue_queue_work: ... req_cpu=8192 cpu=-1 - -Upstream-Status: Backport - -Change-Id: I478083c350b6ec314d87e9159dc5b342b96daed7 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/instrumentation/events/workqueue.h | 49 ++++++++++++++++++++-- - 1 file changed, 46 insertions(+), 3 deletions(-) - -diff --git a/include/instrumentation/events/workqueue.h b/include/instrumentation/events/workqueue.h -index 023b65a8..5693cf89 100644 ---- a/include/instrumentation/events/workqueue.h -+++ b/include/instrumentation/events/workqueue.h -@@ -28,10 +28,35 @@ LTTNG_TRACEPOINT_EVENT_CLASS(workqueue_work, - ) - ) - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,19,0)) - /** - * workqueue_queue_work - called when a work gets queued - * @req_cpu: the requested cpu -- * @cwq: pointer to struct cpu_workqueue_struct -+ * @pwq: pointer to struct pool_workqueue -+ * @work: pointer to struct work_struct -+ * -+ * This event occurs when a work is queued immediately or once a -+ * delayed work is actually queued on a workqueue (ie: once the delay -+ * has been reached). -+ */ -+LTTNG_TRACEPOINT_EVENT(workqueue_queue_work, -+ -+ TP_PROTO(int req_cpu, struct pool_workqueue *pwq, -+ struct work_struct *work), -+ -+ TP_ARGS(req_cpu, pwq, work), -+ -+ TP_FIELDS( -+ ctf_integer_hex(void *, work, work) -+ ctf_integer_hex(void *, function, work->func) -+ ctf_integer(int, req_cpu, req_cpu) -+ ) -+) -+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) -+/** -+ * workqueue_queue_work - called when a work gets queued -+ * @req_cpu: the requested cpu -+ * @pwq: pointer to struct pool_workqueue - * @work: pointer to struct work_struct - * - * This event occurs when a work is queued immediately or once a -@@ -40,17 +65,34 @@ LTTNG_TRACEPOINT_EVENT_CLASS(workqueue_work, - */ - LTTNG_TRACEPOINT_EVENT(workqueue_queue_work, - --#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) - TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq, - struct work_struct *work), - - TP_ARGS(req_cpu, pwq, work), -+ -+ TP_FIELDS( -+ ctf_integer_hex(void *, work, work) -+ ctf_integer_hex(void *, function, work->func) -+ ctf_integer(unsigned int, req_cpu, req_cpu) -+ ) -+) - #else -+/** -+ * workqueue_queue_work - called when a work gets queued -+ * @req_cpu: the requested cpu -+ * @cwq: pointer to struct cpu_workqueue_struct -+ * @work: pointer to struct work_struct -+ * -+ * This event occurs when a work is queued immediately or once a -+ * delayed work is actually queued on a workqueue (ie: once the delay -+ * has been reached). -+ */ -+LTTNG_TRACEPOINT_EVENT(workqueue_queue_work, -+ - TP_PROTO(unsigned int req_cpu, struct cpu_workqueue_struct *cwq, - struct work_struct *work), - - TP_ARGS(req_cpu, cwq, work), --#endif - - TP_FIELDS( - ctf_integer_hex(void *, work, work) -@@ -58,6 +100,7 @@ LTTNG_TRACEPOINT_EVENT(workqueue_queue_work, - ctf_integer(unsigned int, req_cpu, req_cpu) - ) - ) -+#endif - - /** - * workqueue_activate_work - called when a work gets activated --- -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/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_2.13.4.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb index a81a0e580f..95d5e2d615 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_2.13.4.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb @@ -10,18 +10,16 @@ inherit module include lttng-platforms.inc SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0009-Rename-genhd-wrapper-to-blkdev.patch \ - file://0001-fix-mm-page_alloc-fix-tracepoint-mm_page_alloc_zone_.patch \ - file://0002-fix-fs-Remove-flags-parameter-from-aops-write_begin-.patch \ - file://0003-fix-workqueue-Fix-type-of-cpu-in-trace-event-v5.19.patch \ - file://0001-fix-net-skb-introduce-kfree_skb_reason-v5.15.58.v5.1.patch \ - file://0001-compaction-make-tracepoints-condtional-on-CONFIG_COM.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] = "6159d00e4e1d59546eec8d4a67e1aa39c1084ceb5e5afeb666eab4b8a5b5a9ee" +SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79" export INSTALL_MOD_DIR="kernel/lttng-modules" @@ -42,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.3.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb index cc88bf5b11..dddd3a5004 100644 --- a/meta/recipes-kernel/lttng/lttng-ust_2.13.3.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] = "2cc42f51145050430ac4ab72b32d95fd78d5566ccbe44e14a8fcdd23c0ed8f6f" +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 9afd6714f0..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}" @@ -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 95e7eae9fe..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' \ @@ -244,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 @@ -269,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 @@ -276,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 @@ -292,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 @@ -334,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 = " \ @@ -349,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 0362f2d8fa..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. 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-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-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 072fcb310a..68f5c76428 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap_git.bb @@ -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 2b79aa8fca..c574bcb2ba 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.inc +++ b/meta/recipes-kernel/systemtap/systemtap_git.inc @@ -1,12 +1,17 @@ LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRCREV = "0c335a75a789ff44b514e567d458881e15cc283d" -PV = "4.7" +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-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.06.06.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb index 2eba4f873b..8fde236ab4 100644 --- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2022.06.06.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] = "ac00f97efecce5046ed069d1d93f3365fdf994c7c7854a8fc50831e959537230" +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 |