diff options
Diffstat (limited to 'meta/recipes-kernel')
103 files changed, 9440 insertions, 2757 deletions
diff --git a/meta/recipes-kernel/blktrace/blktrace_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb index d00b1bd0be..d4f5bac84f 100644 --- a/meta/recipes-kernel/blktrace/blktrace_git.bb +++ b/meta/recipes-kernel/blktrace/blktrace_git.bb @@ -5,16 +5,16 @@ are three major components: a kernel component, a utility to record the i/o \ trace information for the kernel to user space, and utilities to analyse and \ view the trace information." HOMEPAGE = "http://brick.kernel.dk/snaps/" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833" DEPENDS = "libaio" SRCREV = "366d30b9cdb20345c5d064af850d686da79b89eb" -PV = "1.3.0+git${SRCPV}" +PV = "1.3.0+git" -SRC_URI = "git://git.kernel.dk/blktrace.git" +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 ae2c308911..64a9c2926b 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev.inc +++ b/meta/recipes-kernel/cryptodev/cryptodev.inc @@ -5,12 +5,13 @@ of hardware accelerators. Cryptodev-linux is implemented as a standalone \ module that requires no dependencies other than a stock linux kernel. Its \ API is compatible with OpenBSD's cryptodev userspace API (/dev/crypto)." -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux \ +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.inc b/meta/recipes-kernel/dtc/dtc.inc deleted file mode 100644 index bfdc9f8639..0000000000 --- a/meta/recipes-kernel/dtc/dtc.inc +++ /dev/null @@ -1,28 +0,0 @@ -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." -SECTION = "bootloader" -LICENSE = "GPLv2 | BSD-2-Clause" -DEPENDS = "flex-native bison-native" - -SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git \ - file://make_install.patch \ - file://0001-dtc-Fix-Makefile-to-add-CFLAGS-not-override.patch \ - " - -UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" - -EXTRA_OEMAKE='NO_PYTHON=1 PREFIX="${prefix}" LIBDIR="${libdir}" DESTDIR="${D}"' - -inherit pkgconfig - -S = "${WORKDIR}/git" - -do_install () { - oe_runmake install -} - -PACKAGES =+ "${PN}-misc" -FILES:${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff" - -RDEPENDS:${PN}-misc += "bash diffutils" diff --git a/meta/recipes-kernel/dtc/dtc/0001-dtc-Fix-Makefile-to-add-CFLAGS-not-override.patch b/meta/recipes-kernel/dtc/dtc/0001-dtc-Fix-Makefile-to-add-CFLAGS-not-override.patch deleted file mode 100644 index a2deb12d4b..0000000000 --- a/meta/recipes-kernel/dtc/dtc/0001-dtc-Fix-Makefile-to-add-CFLAGS-not-override.patch +++ /dev/null @@ -1,36 +0,0 @@ -From f0119060ef1b9bd80e2cae487df1e4aedffb0e9b Mon Sep 17 00:00:00 2001 -From: Oleksiy Obitotskyy <oobitots@cisco.com> -Date: Fri, 22 Jan 2021 09:12:48 +0200 -Subject: [PATCH] dtc: Fix Makefile to add CFLAGS not override - -Makefile override CFLAGS not extend them, so some of them -missing. Sources builds out of kernel tree and probably not all -options could be used (?). We need at least -fmacro-prefix-map/ -debug-prefix-map to eliminate absolute path in binaries. - -Upstream-Status: Pending -Signed-off-by: Oleksiy Obitotskyy <oobitots@cisco.com> ---- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 35d936f..b5b13cf 100644 ---- a/Makefile -+++ b/Makefile -@@ -20,10 +20,10 @@ CONFIG_LOCALVERSION = - # See libfdt_internal.h for details - ASSUME_MASK ?= 0 - --CPPFLAGS = -I libfdt -I . -DFDT_ASSUME_MASK=$(ASSUME_MASK) -+CPPFLAGS += -I libfdt -I . -DFDT_ASSUME_MASK=$(ASSUME_MASK) - WARNINGS = -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \ - -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wshadow --CFLAGS = -g -Os $(SHAREDLIB_CFLAGS) -Werror $(WARNINGS) $(EXTRA_CFLAGS) -+CFLAGS += -g -Os $(SHAREDLIB_CFLAGS) -Werror $(WARNINGS) $(EXTRA_CFLAGS) - - BISON = bison - LEX = flex --- -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/make_install.patch b/meta/recipes-kernel/dtc/dtc/make_install.patch deleted file mode 100644 index ea9359e815..0000000000 --- a/meta/recipes-kernel/dtc/dtc/make_install.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e9852b9d206df1e42aa4c8afec55a0f5e099b533 Mon Sep 17 00:00:00 2001 -From: Saul Wold <sgw@linux.intel.com> -Date: Thu, 3 Nov 2011 08:35:47 -0700 -Subject: [PATCH] dtc: Add patch to correctly install shared libraries and - -Upstream-Status: Inappropriate [configuration] - ---- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index d8ebc4f..f5e01be 100644 ---- a/Makefile -+++ b/Makefile -@@ -205,8 +205,8 @@ install-bin: all $(SCRIPTS) - install-lib: all - @$(VECHO) INSTALL-LIB - $(INSTALL) -d $(DESTDIR)$(LIBDIR) -- $(INSTALL_LIB) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR) -- ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname) -+ $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname) -+ ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/$(notdir $(LIBFDT_lib)) - ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT) - $(INSTALL_DATA) $(LIBFDT_archive) $(DESTDIR)$(LIBDIR) - diff --git a/meta/recipes-kernel/dtc/dtc_1.6.1.bb b/meta/recipes-kernel/dtc/dtc_1.6.1.bb deleted file mode 100644 index de9a46d3ef..0000000000 --- a/meta/recipes-kernel/dtc/dtc_1.6.1.bb +++ /dev/null @@ -1,10 +0,0 @@ -require dtc.inc - -LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://libfdt/libfdt.h;beginline=4;endline=7;md5=05bb357cfb75cae7d2b01d2ee8d76407" - -SRCREV = "b6910bec11614980a21e46fbccc35934b671bd81" - -S = "${WORKDIR}/git" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/dtc/dtc_1.7.0.bb b/meta/recipes-kernel/dtc/dtc_1.7.0.bb new file mode 100644 index 0000000000..0702fc16df --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc_1.7.0.bb @@ -0,0 +1,34 @@ +SUMMARY = "Device Tree Compiler" +HOMEPAGE = "https://devicetree.org/" +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://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+)+)" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig + +EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled" + +PACKAGECONFIG ??= "tools" +PACKAGECONFIG[tools] = "-Dtools=true,-Dtools=false,flex-native bison-native" +PACKAGECONFIG[yaml] = "-Dyaml=enabled,-Dyaml=disabled,libyaml" + +PACKAGES =+ "${PN}-misc" +FILES:${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff" +RDEPENDS:${PN}-misc += "${@bb.utils.contains('PACKAGECONFIG', 'tools', 'bash diffutils', '', d)}" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate new file mode 100644 index 0000000000..2aa57851c7 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-doc-validate wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-doc-validate.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema new file mode 100644 index 0000000000..24b89d8619 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-mk-schema wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-mk-schema.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate new file mode 100644 index 0000000000..8a4710a7ed --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-validate wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-validate.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb new file mode 100644 index 0000000000..974fcba876 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb @@ -0,0 +1,17 @@ +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" + +SRC_URI = "file://dt-doc-validate \ + file://dt-mk-schema \ + file://dt-validate" + +do_install() { + install -d ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-doc-validate ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-mk-schema ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-validate ${D}${bindir}/ +} + +BBCLASSEXTEND = "native nativesdk" 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 e967f485c1..8eff00821a 100644 --- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb @@ -3,20 +3,21 @@ DESCRIPTION = "Powerful set of tools or managing Yocto Linux kernel sources \ and configuration data. You can use these tools to make a single configuration \ change, apply multiple patches, or work with your own kernel sources." HOMEPAGE = "https://www.yoctoproject.org/" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501" +LICENSE = "GPL-2.0-only & MIT" +LIC_FILES_CHKSUM = "\ + file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501 \ + file://Kconfiglib/LICENSE.txt;md5=712177a72a3937909543eda3ad1bfb7c \ +" -DEPENDS = "git-native" +DEPENDS += "git-replacement-native" -SRCREV = "d220b063852245fdd16b9731a395ace525f932d6" -PR = "r12" -PV = "0.2+git${SRCPV}" +SRCREV = "7160ebe8b865dd6028aef278efa219433db93f7e" +PV = "0.3+git" inherit native -SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git" +SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master;protocol=https" S = "${WORKDIR}/git" -UPSTREAM_CHECK_COMMITS = "1" do_configure() { : diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch index c2301e711d..ddc1519126 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch @@ -33,20 +33,20 @@ Upstream-Status: Submitted [http://lists.infradead.org/pipermail/kexec/2020-Nove kexec/arch/arm64/kexec-arm64.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) -Index: kexec-tools-2.0.20/kexec/arch/arm64/kexec-arm64.c -=================================================================== ---- kexec-tools-2.0.20.orig/kexec/arch/arm64/kexec-arm64.c -+++ kexec-tools-2.0.20/kexec/arch/arm64/kexec-arm64.c -@@ -428,7 +428,7 @@ static int setup_2nd_dtb(struct dtb *dtb +diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c +index ec6df4b..10238d9 100644 +--- a/kexec/arch/arm64/kexec-arm64.c ++++ b/kexec/arch/arm64/kexec-arm64.c +@@ -503,7 +503,7 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash) int len, range_len; int nodeoffset; int new_size; -- int result, kaslr_seed; -+ int result; +- int i, result, kaslr_seed; ++ int i, result; result = fdt_check_header(dtb->buf); -@@ -499,18 +499,6 @@ static int setup_2nd_dtb(struct dtb *dtb +@@ -576,18 +576,6 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash) return result; } } else { @@ -65,3 +65,6 @@ Index: kexec-tools-2.0.20/kexec/arch/arm64/kexec-arm64.c /* * Invoke the getrandom system call with * GRND_NONBLOCK, to make sure we +-- +2.25.1 + diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-arch-ppc-kexec-ppc.c-correct-double-definition.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-arch-ppc-kexec-ppc.c-correct-double-definition.patch deleted file mode 100644 index 6aeebc3939..0000000000 --- a/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-arch-ppc-kexec-ppc.c-correct-double-definition.patch +++ /dev/null @@ -1,23 +0,0 @@ -From ba2fb5baf6b0a8c882ac32301dd7a8d16de0dcf6 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Sun, 27 Dec 2020 23:39:29 +0100 -Subject: [PATCH] kexec/arch/ppc/kexec-ppc.c: correct double definition error - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - kexec/arch/ppc/kexec-ppc.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/kexec/arch/ppc/kexec-ppc.c b/kexec/arch/ppc/kexec-ppc.c -index 03bec36..5b3e244 100644 ---- a/kexec/arch/ppc/kexec-ppc.c -+++ b/kexec/arch/ppc/kexec-ppc.c -@@ -35,7 +35,6 @@ unsigned long long initrd_base = 0, initrd_size = 0; - unsigned long long ramdisk_base = 0, ramdisk_size = 0; - unsigned int rtas_base, rtas_size; - int max_memory_ranges; --const char *ramdisk; - - /* - * Reads the #address-cells and #size-cells on this platform. 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/0007-kexec-un-break-the-build-on-32-bit-x86.patch b/meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch deleted file mode 100644 index 36b0845f4a..0000000000 --- a/meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch +++ /dev/null @@ -1,43 +0,0 @@ -From bb6a26371d15473b380459ac4404bf330634b585 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 20 Dec 2019 17:21:08 +0100 -Subject: [PATCH] kexec: un-break the build on 32 bit x86 - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - kexec/arch/i386/Makefile | 1 + - kexec/arch/i386/kexec-x86.h | 4 ++++ - 2 files changed, 5 insertions(+) - -diff --git a/kexec/arch/i386/Makefile b/kexec/arch/i386/Makefile -index f486103..5d560be 100644 ---- a/kexec/arch/i386/Makefile -+++ b/kexec/arch/i386/Makefile -@@ -12,6 +12,7 @@ i386_KEXEC_SRCS += kexec/arch/i386/kexec-beoboot-x86.c - i386_KEXEC_SRCS += kexec/arch/i386/kexec-nbi.c - i386_KEXEC_SRCS += kexec/arch/i386/x86-linux-setup.c - i386_KEXEC_SRCS += kexec/arch/i386/crashdump-x86.c -+i386_KEXEC_SRCS += kexec/arch/i386/kexec-mb2-x86.c - - dist += kexec/arch/i386/Makefile $(i386_KEXEC_SRCS) \ - kexec/arch/i386/crashdump-x86.h \ -diff --git a/kexec/arch/i386/kexec-x86.h b/kexec/arch/i386/kexec-x86.h -index 0f941df..c423171 100644 ---- a/kexec/arch/i386/kexec-x86.h -+++ b/kexec/arch/i386/kexec-x86.h -@@ -56,9 +56,13 @@ struct arch_options_t { - }; - - int multiboot_x86_probe(const char *buf, off_t len); -+int multiboot2_x86_probe(const char *buf, off_t len); - int multiboot_x86_load(int argc, char **argv, const char *buf, off_t len, - struct kexec_info *info); -+int multiboot2_x86_load(int argc, char **argv, const char *buf, off_t len, -+ struct kexec_info *info); - void multiboot_x86_usage(void); -+void multiboot2_x86_usage(void); - - int multiboot2_x86_load(int argc, char **argv, const char *buf, off_t len, - struct kexec_info *info); 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.22.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb index 95ff5e6ef8..dec821ea88 100644 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.22.bb +++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb @@ -1,10 +1,9 @@ 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 = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \ file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09" DEPENDS = "zlib xz" @@ -17,12 +16,11 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz file://0002-purgatory-Pass-r-directly-to-linker.patch \ file://0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \ file://0005-Disable-PIE-during-link.patch \ - file://0007-kexec-un-break-the-build-on-32-bit-x86.patch \ file://0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch \ - file://0001-kexec-arch-ppc-kexec-ppc.c-correct-double-definition.patch \ + file://Fix-building-on-x86_64-with-binutils-2.41.patch \ " -SRC_URI[sha256sum] = "40623d4321be2865ef9ea2cd6ec998d31dcf93d0f74353cbd3aa06d8821e3e41" +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 9a172675af..6c0739d64f 100644 --- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb @@ -21,20 +21,29 @@ 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 + mkdir -p "\$3${nonarch_base_libdir}/depmod.d" + 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 - exec env depmod "\$1" "\$2" "\$3" "\$4" +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 "\$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-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb deleted file mode 100644 index 4dd34b1c82..0000000000 --- a/meta/recipes-kernel/kmod/kmod-native_git.bb +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -require kmod.inc - -DEPENDS += "zlib-native" - -inherit native - -do_install:append (){ - for tool in depmod insmod lsmod modinfo modprobe rmmod - do - ln -s kmod ${D}${bindir}/$tool - done -} diff --git a/meta/recipes-kernel/kmod/kmod.inc b/meta/recipes-kernel/kmod/kmod.inc deleted file mode 100644 index c2d550acaf..0000000000 --- a/meta/recipes-kernel/kmod/kmod.inc +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "Tools for managing Linux kernel modules" -DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \ - insert, remove, list, check properties, resolve dependencies and aliases." -HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kmod/" -LICENSE = "GPL-2.0+ & LGPL-2.1+" -LICENSE:libkmod = "LGPL-2.1+" -SECTION = "base" - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://tools/COPYING;md5=751419260aa954499f7abaabaa882bbe \ - " -inherit autotools gtk-doc pkgconfig manpages - -SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1" -# Lookout for PV bump too when SRCREV is changed -PV = "29" - -SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \ - file://depmod-search.conf \ - file://avoid_parallel_tests.patch \ - " - -S = "${WORKDIR}/git" - -EXTRA_OECONF +=" --enable-tools --with-zlib" - -PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" -PACKAGECONFIG[logging] = " --enable-logging,--disable-logging" -PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" -PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz" -PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl" - -GTKDOC_DOCDIR = "${S}/libkmod/docs" 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_git.bb b/meta/recipes-kernel/kmod/kmod_31.bb index eb5d176ded..6ae83a7c66 100644 --- a/meta/recipes-kernel/kmod/kmod_git.bb +++ b/meta/recipes-kernel/kmod/kmod_31.bb @@ -1,9 +1,42 @@ # Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> # Released under the MIT license (see COPYING.MIT for the terms) -require kmod.inc +SUMMARY = "Tools for managing Linux kernel modules" +DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \ + insert, remove, list, check properties, resolve dependencies and aliases." +HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kmod/" +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LICENSE:libkmod = "LGPL-2.1-or-later" +SECTION = "base" + +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tools/COPYING;md5=751419260aa954499f7abaabaa882bbe \ + " +inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives + +SRCREV = "aff617ea871d0568cc491bd116c0be1e857463bb" + +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 openssl" +PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" +PACKAGECONFIG[logging] = " --enable-logging,--disable-logging" +PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" +PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl" +PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz" +PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib" +PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd" -DEPENDS += "zlib" 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" @@ -13,15 +46,15 @@ RREPLACES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod mod RCONFLICTS:libkmod2 += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" # autotools set prefix to /usr, however we want them in /bin and /sbin -EXTRA_OECONF += " --bindir=${base_bindir} --sbindir=${base_sbindir}" +EXTRA_OECONF += "--bindir=${base_bindir} --sbindir=${base_sbindir}" do_install:append () { install -dm755 ${D}${base_bindir} install -dm755 ${D}${base_sbindir} # add symlinks to kmod - lnr ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod + ln -rs ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod for tool in insmod rmmod depmod modinfo modprobe; do - lnr ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool} + ln -rs ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool} done # configuration directories install -dm755 ${D}${nonarch_base_libdir}/depmod.d @@ -31,32 +64,26 @@ do_install:append () { # install depmod.d file for search/ dir install -Dm644 "${WORKDIR}/depmod-search.conf" "${D}${nonarch_base_libdir}/depmod.d/search.conf" -} -do_compile:prepend() { - sed -i 's/ac_pwd=/#ac_pwd=/' config.status ; sed -i "/#ac_pwd=/a\ac_pwd='.'" config.status + # Add .debug to the exclude path for depmod + echo "exclude .debug" > ${D}${nonarch_base_libdir}/depmod.d/exclude.conf } -inherit update-alternatives bash-completion - ALTERNATIVE_PRIORITY = "70" ALTERNATIVE:kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod" +ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod" ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod" ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe" ALTERNATIVE_LINK_NAME[rmmod] = "${base_sbindir}/rmmod" ALTERNATIVE_LINK_NAME[modinfo] = "${base_sbindir}/modinfo" ALTERNATIVE_LINK_NAME[bin-lsmod] = "${base_bindir}/lsmod" - ALTERNATIVE_LINK_NAME[lsmod] = "${base_sbindir}/lsmod" ALTERNATIVE_TARGET[lsmod] = "${base_bindir}/lsmod.${BPN}" -ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod" - PACKAGES =+ "libkmod" - FILES:libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}" FILES:${PN} += "${nonarch_base_libdir}/depmod.d ${nonarch_base_libdir}/modprobe.d" -BBCLASSEXTEND = "nativesdk" +BBCLASSEXTEND = "native nativesdk" 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_20210818.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb index 0249332fca..ff79bb9b33 100644 --- a/meta/recipes-kernel/linux-firmware/linux-firmware_20210818.bb +++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb @@ -12,12 +12,15 @@ LICENSE = "\ & Firmware-amdgpu \ & Firmware-amd-ucode \ & Firmware-amlogic_vdec \ + & Firmware-amphion_vpu \ & Firmware-atheros_firmware \ & Firmware-atmel \ & Firmware-broadcom_bcm43xx \ & Firmware-ca0132 \ & Firmware-cavium \ & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ & Firmware-cw1200 \ & Firmware-cypress \ & Firmware-dib0700 \ @@ -25,27 +28,33 @@ LICENSE = "\ & Firmware-ene_firmware \ & Firmware-fw_sst_0f28 \ & Firmware-go7007 \ - & Firmware-GPLv2 \ & Firmware-hfi1_firmware \ - & Firmware-i2400m \ & Firmware-i915 \ & Firmware-ibt_firmware \ & Firmware-ice \ + & Firmware-ice_enhanced \ & Firmware-it913x \ & Firmware-iwlwifi_firmware \ & Firmware-IntcSST2 \ & Firmware-kaweth \ + & Firmware-linaro \ & Firmware-Lontium \ & Firmware-Marvell \ + & Firmware-mediatek \ + & Firmware-microchip \ & Firmware-moxa \ & Firmware-myri10ge_firmware \ & Firmware-netronome \ & Firmware-nvidia \ + & Firmware-nxp \ + & Firmware-nxp_mc_firmware \ & Firmware-OLPC \ & Firmware-ath9k-htc \ & Firmware-phanfw \ + & Firmware-powervr \ & Firmware-qat \ & Firmware-qcom \ + & Firmware-qcom-yamato \ & Firmware-qla1280 \ & Firmware-qla2xxx \ & Firmware-qualcommAthos_ar3k \ @@ -54,10 +63,10 @@ LICENSE = "\ & Firmware-radeon \ & Firmware-ralink_a_mediatek_company_firmware \ & Firmware-ralink-firmware \ + & Firmware-rockchip \ & Firmware-rtlwifi_firmware \ & Firmware-imx-sdma_firmware \ & Firmware-siano \ - & Firmware-tda7706-firmware \ & Firmware-ti-connectivity \ & Firmware-ti-keystone \ & Firmware-ueagle-atm4-firmware \ @@ -67,14 +76,16 @@ LICENSE = "\ & Firmware-xc5000 \ & Firmware-xc5000c \ & WHENCE \ + & GPL-2.0-or-later \ " LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ - file://LICENSE.amdgpu;md5=d357524f5099e2a3db3c1838921c593f \ - file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \ + file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \ + file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \ file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \ + file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \ file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \ file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \ file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \ @@ -82,6 +93,8 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \ file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \ file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \ + file://LICENSE.cirrus;md5=662ea2c1a8888f7d79ed7f27c27472e1 \ + file://LICENCE.cnm;md5=93b67e6bac7f8fec22b96b8ad0a1a9d0 \ file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \ file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \ file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \ @@ -89,29 +102,34 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \ file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \ file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \ - file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \ - file://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \ file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \ file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \ file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \ + file://LICENSE.ice_enhanced;md5=f305cfc31b64f95f774f9edd9df0224d \ file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \ file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \ file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ + file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \ file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \ file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \ file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \ + file://LICENCE.microchip;md5=db753b00305675dfbf120e3f24a47277 \ file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \ file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \ file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \ file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \ file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \ + file://LICENSE.nxp;md5=cca321ca1524d6a1e4fed87486cd82dc \ + file://LICENSE.nxp_mc_firmware;md5=9dc97e4b279b3858cae8879ae2fe5dd7 \ file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \ file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \ file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \ - file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ + file://LICENSE.powervr;md5=83045ed2a2cda15b4eaff682c98c9533 \ + file://LICENCE.qat_firmware;md5=72de83dfd9b87be7685ed099a39fbea4 \ file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \ + file://LICENSE.qcom_yamato;md5=d0de0eeccaf1843a850bf7a6777eec5c \ file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \ file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \ file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \ @@ -120,10 +138,10 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \ file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \ file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \ + file://LICENCE.rockchip;md5=5fd70190c5ed39734baceada8ecced26 \ file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \ file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \ - file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \ file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \ file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \ file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \ @@ -132,8 +150,11 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ - file://WHENCE;md5=15ad289bf2359e8ecf613f3b04f72fab \ + file://WHENCE;md5=${WHENCE_CHKSUM} \ " +# WHENCE checksum is defined separately to ease overriding it if +# class-devupstream is selected. +WHENCE_CHKSUM = "514da1cd8b363373030f0c16749feb8d" # These are not common licenses, set NO_GENERIC_LICENSE for them # so that the license files will be copied from fetched source @@ -143,6 +164,7 @@ NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu" NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode" NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec" +NO_GENERIC_LICENSE[Firmware-amphion_vpu] = "LICENSE.amphion_vpu" NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware" NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel" NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx" @@ -150,6 +172,8 @@ NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132" NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence" NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium" NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware" +NO_GENERIC_LICENSE[Firmware-cirrus] = "LICENSE.cirrus" +NO_GENERIC_LICENSE[Firmware-cnm] = "LICENCE.cnm" NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200" NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress" NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700" @@ -157,28 +181,33 @@ NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100" NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware" NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28" NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007" -NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2" NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware" -NO_GENERIC_LICENSE[Firmware-i2400m] = "LICENCE.i2400m" NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915" NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware" NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice" +NO_GENERIC_LICENSE[Firmware-ice_enhanced] = "LICENSE.ice_enhanced" NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2" NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x" NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware" NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" +NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro" NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium" NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell" NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek" +NO_GENERIC_LICENSE[Firmware-microchip] = "LICENCE.microchip" NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa" NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware" NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome" NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia" +NO_GENERIC_LICENSE[Firmware-nxp] = "LICENSE.nxp" +NO_GENERIC_LICENSE[Firmware-nxp_mc_firmware] = "LICENSE.nxp_mc_firmware" NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC" NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware" NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw" +NO_GENERIC_LICENSE[Firmware-powervr] = "LICENSE.powervr" NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware" NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom" +NO_GENERIC_LICENSE[Firmware-qcom-yamato] = "LICENSE.qcom_yamato" NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280" NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx" NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k" @@ -187,10 +216,10 @@ NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3" NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon" NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware" NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt" +NO_GENERIC_LICENSE[Firmware-rockchip] = "LICENCE.rockchip" NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt" NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano" NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware" -NO_GENERIC_LICENSE[Firmware-tda7706-firmware] = "LICENCE.tda7706-firmware.txt" NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity" NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone" NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware" @@ -203,35 +232,57 @@ NO_GENERIC_LICENSE[WHENCE] = "WHENCE" PE = "1" -SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz" +SRC_URI = "\ + ${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz \ +" + +BBCLASSEXTEND = "devupstream:target" +SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git;protocol=https;branch=main" +# Pin this to the 20220509 release, override this in local.conf +SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae" -SRC_URI[sha256sum] = "bef3d317c348d962b3a1b95cb4e19ea4f282e18112b2c669cff74f9267ce3893" +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 \ @@ -267,8 +318,10 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-bcm4373 \ ${PN}-bcm43xx \ ${PN}-bcm43xx-hdr \ - ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \ - ${PN}-gplv2-license ${PN}-carl9170 \ + ${PN}-cirrus-license ${PN}-cirrus \ + ${PN}-cnm-license ${PN}-cnm \ + ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ + ${PN}-carl9170 \ ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \ \ ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \ @@ -285,6 +338,7 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-iwlwifi-7265 \ ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \ ${PN}-iwlwifi-9000 \ + ${PN}-iwlwifi-9260 \ ${PN}-iwlwifi-misc \ ${PN}-ibt-license ${PN}-ibt \ ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \ @@ -293,37 +347,101 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-ibt-misc \ ${PN}-i915-license ${PN}-i915 \ ${PN}-ice-license ${PN}-ice \ + ${PN}-ice-enhanced-license ${PN}-ice-enhanced \ ${PN}-adsp-sst-license ${PN}-adsp-sst \ - ${PN}-bnx2-mips \ + ${PN}-bnx2 \ + ${PN}-bnx2x \ ${PN}-liquidio \ + ${PN}-mellanox \ ${PN}-nvidia-license \ ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ ${PN}-nvidia-gpu \ + ${PN}-nxp-license \ + ${PN}-nxp8987-sdio \ + ${PN}-nxp8997-common \ + ${PN}-nxp8997-pcie \ + ${PN}-nxp8997-sdio \ + ${PN}-nxp9098-common \ + ${PN}-nxp9098-pcie \ + ${PN}-nxp9098-sdio \ + ${PN}-nxpiw416-sdio \ + ${PN}-nxpiw612-sdio \ + ${PN}-nxp-mc-license ${PN}-nxp-mc \ ${PN}-netronome-license ${PN}-netronome \ + ${PN}-olpc-license ${PN}-olpc \ + ${PN}-phanfw-license ${PN}-phanfw \ + ${PN}-powervr-license ${PN}-powervr \ + ${PN}-prestera \ ${PN}-qat ${PN}-qat-license \ - ${PN}-qcom-license \ - ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \ + ${PN}-qed \ + ${PN}-qcom-license ${PN}-qcom-yamato-license \ + ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 ${PN}-qcom-venus-6.0 \ ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \ - ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 \ - ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 \ - ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \ - ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \ + ${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-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" 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 \ " +FILES:${PN}-ath3k = " \ + ${nonarch_base_libdir}/firmware/ath3k*fw \ +" FILES:${PN}-ath6k = " \ ${nonarch_base_libdir}/firmware/ath6k \ " @@ -336,23 +454,20 @@ 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" +LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware" LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k" LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k" LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k" @@ -376,7 +491,7 @@ FILES:${PN}-qca = " \ ${nonarch_base_libdir}/firmware/qca \ " -RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license" +RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license" RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license" RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license" RDEPENDS:${PN}-qca += "${PN}-ath10k-license" @@ -393,17 +508,72 @@ FILES:${PN}-ralink = " \ RDEPENDS:${PN}-ralink += "${PN}-ralink-license" # For mediatek MT7601U +LICENSE:${PN}-mt76x-license = "Firmware-ralink_a_mediatek_company_firmware" +FILES:${PN}-mt76x-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" + LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware" -LICENSE:${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware" -FILES:${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" FILES:${PN}-mt7601u = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7601u.bin \ ${nonarch_base_libdir}/firmware/mt7601u.bin \ " +RDEPENDS:${PN}-mt7601u += "${PN}-mt76x-license" + +# For MediaTek Bluetooth USB driver 7650 +LICENSE:${PN}-mt7650 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt7650 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7650.bin \ + ${nonarch_base_libdir}/firmware/mt7650.bin \ +" +RDEPENDS:${PN}-mt7650 += "${PN}-mt76x-license" + +# For MediaTek MT76x2 Wireless MACs +LICENSE:${PN}-mt76x2 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt76x2 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662_rom_patch.bin \ + ${nonarch_base_libdir}/firmware/mt7662_rom_patch.bin \ +" +RDEPENDS:${PN}-mt76x2 += "${PN}-mt76x-license" + +# For MediaTek +LICENSE:${PN}-mediatek = "Firmware-mediatek" +LICENSE:${PN}-mediatek-license = "Firmware-mediatek" + +FILES:${PN}-mediatek = " \ + ${nonarch_base_libdir}/firmware/mediatek/* \ + ${nonarch_base_libdir}/firmware/vpu_d.bin \ + ${nonarch_base_libdir}/firmware/vpu_p.bin \ +" +FILES:${PN}-mediatek-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.mediatek \ +" +RDEPENDS:${PN}-mediatek += "${PN}-mediatek-license" -RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-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" @@ -414,6 +584,17 @@ FILES:${PN}-radeon = " \ RDEPENDS:${PN}-radeon += "${PN}-radeon-license" +# For amdgpu +LICENSE:${PN}-amdgpu = "Firmware-amdgpu" +LICENSE:${PN}-amdgpu-license = "Firmware-amdgpu" + +FILES:${PN}-amdgpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdgpu" +FILES:${PN}-amdgpu = " \ + ${nonarch_base_libdir}/firmware/amdgpu \ +" + +RDEPENDS:${PN}-amdgpu += "${PN}-amdgpu-license" + # For lontium LICENSE:${PN}-lt9611uxc = "Firmware-Lontium" @@ -511,6 +692,52 @@ FILES:${PN}-netronome = " \ RDEPENDS:${PN}-netronome += "${PN}-netronome-license" +# For NXP +LICENSE:${PN}-nxp8987-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp8997-common = "Firmware-nxp" +LICENSE:${PN}-nxp8997-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp8997-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp9098-common = "Firmware-nxp" +LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp-license = "Firmware-nxp" + +FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*" +FILES:${PN}-nxp8997-common = " \ + ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \ + ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \ +" +ALLOW_EMPTY:${PN}-nxp8997-pcie = "1" +ALLOW_EMPTY:${PN}-nxp8997-sdio = "1" +FILES:${PN}-nxp9098-common = "${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin" +ALLOW_EMPTY:${PN}-nxp9098-pcie = "1" +ALLOW_EMPTY:${PN}-nxp9098-sdio = "1" +FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*" +FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se" +FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp" + +RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license" + +# For nxp-mc +LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware" +LICENSE:${PN}-nxp-mc-license = "Firmware-nxp_mc_firmware" + +FILES:${PN}-nxp-mc= "${nonarch_base_libdir}/firmware/dpaa2/mc/*" +FILES:${PN}-nxp-mc-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.nxp_mc_firmware \ +" +RDEPENDS:${PN}-nxp-mc += "${PN}-nxp-mc-license" + # For Nvidia LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia" LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia" @@ -533,6 +760,46 @@ RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license" RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license" RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license" +# For OLPC +LICENSE:${PN}-olpc = "Firmware-OLPC" +LICENSE:${PN}-olpc-license = "Firmware-OLPC" + +FILES:${PN}-olpc = " \ + ${nonarch_base_libdir}/firmware/libertas/lbtf_sdio.bin \ + ${nonarch_base_libdir}/firmware/lbtf_usb.bin \ + ${nonarch_base_libdir}/firmware/libertas/usb8388_olpc.bin \ +" +FILES:${PN}-olpc-license = "${nonarch_base_libdir}/firmware/LICENCE.OLPC" + +RDEPENDS:${PN}-olpc += "${PN}-olpc-license" + +# For phanfw +LICENSE:${PN}-phanfw = "Firmware-phanfw" +LICENSE:${PN}-phanfw-license = "Firmware-phanfw" + +FILES:${PN}-phanfw = "${nonarch_base_libdir}/firmware/phanfw.bin" +FILES:${PN}-phanfw-license = "${nonarch_base_libdir}/firmware/LICENCE.phanfw" + +RDEPENDS:${PN}-phanfw += "${PN}-phanfw-license" + +# For PowerVR +LICENSE:${PN}-powervr = "Firmware-powervr" +LICENSE:${PN}-powervr-license = "Firmware-powervr" + +FILES:${PN}-powervr = "${nonarch_base_libdir}/firmware/powervr" +FILES:${PN}-powervr-license = "${nonarch_base_libdir}/firmware/LICENSE.powervr" + +RDEPENDS:${PN}-powervr += "${PN}-powervr-license" + +# For qla2xxx +LICENSE:${PN}-qla2xxx = "Firmware-qla2xxx" +LICENSE:${PN}-qla2xxx-license = "Firmware-qla2xxx" + +FILES:${PN}-qla2xxx = "${nonarch_base_libdir}/firmware/ql2*" +FILES:${PN}-qla2xxx-license = "${nonarch_base_libdir}/firmware/LICENCE.qla2xxx" + +RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license" + # For RSI RS911x WiFi LICENSE:${PN}-rs9113 = "WHENCE" LICENSE:${PN}-rs9116 = "WHENCE" @@ -549,8 +816,11 @@ LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware" LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl-nic = "WHENCE" LICENSE:${PN}-rtl8168 = "WHENCE" FILES:${PN}-rtl-license = " \ @@ -573,10 +843,22 @@ FILES:${PN}-rtl8723 = " \ " FILES:${PN}-rtl8821 = " \ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin \ +" +FILES:${PN}-rtl8761 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8761*.bin \ " FILES:${PN}-rtl8168 = " \ ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \ " +FILES:${PN}-rtl8822 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8822*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8822*.bin \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8822*.bin \ +" +FILES:${PN}-rtl-nic = " \ + ${nonarch_base_libdir}/firmware/rtl_nic/*.fw \ +" RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license" @@ -584,7 +866,22 @@ RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license" RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license" RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license" +RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license" + +# For TI wl1251 +LICENSE:${PN}-wl1251 = "Firmware-wl1251" +LICENSE:${PN}-wl1251-license = "Firmware-wl1251" + +FILES:${PN}-wl1251 = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-fw.bin \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-nvs.bin \ +" +FILES:${PN}-wl1251-license = "${nonarch_base_libdir}/firmware/LICENCE.wl1251" + +RDEPENDS:${PN}-wl1251 += "${PN}-wl1251-license" # For ti-connectivity LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity" @@ -615,6 +912,16 @@ FILES:${PN}-wl18xx = " \ RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" +# For ti-keystone +LICENSE:${PN}-ti-keystone = "Firmware-ti-keystone" +LICENSE:${PN}-ti-keystone-license = "Firmware-ti-keystone" + +FILES:${PN}-ti-keystone = "${nonarch_base_libdir}/firmware/ti-keystone/*" +FILES:${PN}-ti-keystone-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.ti-keystone \ +" +RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license" + # For vt6656 LICENSE:${PN}-vt6656 = "Firmware-via_vt6656" LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656" @@ -626,6 +933,35 @@ FILES:${PN}-vt6656 = " \ RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license" +# For xc4000 +LICENSE:${PN}-xc4000 = "Firmware-xc4000" +LICENSE:${PN}-xc4000-license = "Firmware-xc4000" + +FILES:${PN}-xc4000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc4000-1.4.1.fw" +FILES:${PN}-xc4000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc4000" + +RDEPENDS:${PN}-xc4000 += "${PN}-xc4000-license" + +# For xc5000 +LICENSE:${PN}-xc5000 = "Firmware-xc5000" +LICENSE:${PN}-xc5000-license = "Firmware-xc5000" + +FILES:${PN}-xc5000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc5000-1.6.114.fw" +FILES:${PN}-xc5000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000" + +RDEPENDS:${PN}-xc5000 += "${PN}-xc5000-license" + +# For xc5000c +LICENSE:${PN}-xc5000c = "Firmware-xc5000c" +LICENSE:${PN}-xc5000c-license = "Firmware-xc5000c" + +FILES:${PN}-xc5000c = " \ + ${nonarch_base_libdir}/firmware/dvb-fe-xc5000c-4.1.30.7.fw \ +" +FILES:${PN}-xc5000c-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000c" + +RDEPENDS:${PN}-xc5000c += "${PN}-xc5000c-license" + # For broadcom # for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u @@ -751,6 +1087,8 @@ FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pc FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \ ${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" @@ -768,18 +1106,46 @@ RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license" LICENSE:${PN}-bcm4373 = "Firmware-cypress" RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license" -# For Broadcom bnx2-mips +# For Broadcom bnx2 # # which is a separate case to the other Broadcom firmwares since its # license is contained in the shared WHENCE file. -LICENSE:${PN}-bnx2-mips = "WHENCE" +LICENSE:${PN}-bnx2 = "WHENCE" LICENSE:${PN}-whence-license = "WHENCE" -FILES:${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw" +FILES:${PN}-bnx2 = " \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-mips*.fw \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-rv2p*.fw \ +" FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE" -RDEPENDS:${PN}-bnx2-mips += "${PN}-whence-license" +RDEPENDS:${PN}-bnx2 += "${PN}-whence-license" +RPROVIDES:${PN}-bnx2 = "${PN}-bnx2-mips" + +LICENSE:${PN}-bnx2x = "WHENCE" + +FILES:${PN}-bnx2x = "${nonarch_base_libdir}/firmware/bnx2x/bnx2x*.fw" + +RDEPENDS:${PN}-bnx2x += "${PN}-whence-license" + +# For cirrus +LICENSE:${PN}-cirrus = "Firmware-cirrus" +LICENSE:${PN}-cirrus-license = "Firmware-cirrus" + +FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*" +FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus" + +RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" + +# For cnm +LICENSE:${PN}-cnm = "Firmware-cnm" +LICENSE:${PN}-cnm-license = "Firmware-cnm" + +FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin" +FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm" + +RDEPENDS:${PN}-cnm += "${PN}-cnm-license" # For imx-sdma LICENSE:${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware" @@ -823,6 +1189,7 @@ LICENSE:${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-9260 = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware" LICENSE:${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware" @@ -850,7 +1217,11 @@ FILES:${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.u FILES:${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode" FILES:${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode" FILES:${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode" -FILES:${PN}-iwlwifi-misc = "${nonarch_base_libdir}/firmware/iwlwifi-*.ucode" +FILES:${PN}-iwlwifi-9260 = "${nonarch_base_libdir}/firmware/iwlwifi-9260-*.ucode" +FILES:${PN}-iwlwifi-misc = " \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.ucode \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.pnvm \ +" RDEPENDS:${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license" @@ -874,6 +1245,7 @@ RDEPENDS:${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-9260 = "${PN}-iwlwifi-license" RDEPENDS:${PN}-iwlwifi-misc = "${PN}-iwlwifi-license" # -iwlwifi-misc is a "catch all" package that includes all the iwlwifi @@ -929,10 +1301,26 @@ FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915" FILES:${PN}-i915 = "${nonarch_base_libdir}/firmware/i915" RDEPENDS:${PN}-i915 = "${PN}-i915-license" +# For ice-enhanced +LICENSE:${PN}-ice-enhanced = "Firmware-ice_enhanced" +LICENSE:${PN}-ice-enhanced-license = "Firmware-ice_enhanced" + +FILES:${PN}-ice-enhanced = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-comms/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-wireless_edge/* \ +" +FILES:${PN}-ice-enhanced-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.ice_enhanced \ +" +RDEPENDS:${PN}-ice-enhanced = "${PN}-ice-enhanced-license" + LICENSE:${PN}-ice = "Firmware-ice" LICENSE:${PN}-ice-license = "Firmware-ice" FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice" -FILES:${PN}-ice = "${nonarch_base_libdir}/firmware/intel/ice" +FILES:${PN}-ice = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-lag/* \ +" RDEPENDS:${PN}-ice = "${PN}-ice-license" FILES:${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst" @@ -948,44 +1336,165 @@ FILES:${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmwar FILES:${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin" RDEPENDS:${PN}-qat = "${PN}-qat-license" +LICENSE:${PN}-qed = "WHENCE" +FILES:${PN}-qed = "${nonarch_base_libdir}/firmware/qed/*" + # For QCOM VPU/GPU and SDM845 LICENSE:${PN}-qcom-license = "Firmware-qcom" +LICENSE:${PN}-qcom-yamato-license = "Firmware-qcom-yamato" +LICENSE:${PN}-qcom-venus-1.8 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-4.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.4 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-6.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-1.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-2.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a2xx = "Firmware-qcom Firmware-qcom-yamato" +LICENSE:${PN}-qcom-adreno-a3xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a4xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a530 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a630 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a650 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a660 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a702 = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "Firmware-qcom & Firmware-linaro" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "Firmware-qcom" + FILES:${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt" +FILES:${PN}-qcom-yamato-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom_yamato" FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*" FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*" FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*" FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*" +FILES:${PN}-qcom-venus-6.0 = "${nonarch_base_libdir}/firmware/qcom/venus-6.0/*" FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*" FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*" -FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.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-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*.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 ${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" @@ -1004,6 +1513,8 @@ LICENSE:${PN} = "\ & Firmware-ca0132 \ & Firmware-cavium \ & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ & Firmware-cw1200 \ & Firmware-dib0700 \ & Firmware-e100 \ @@ -1011,7 +1522,6 @@ LICENSE:${PN} = "\ & Firmware-fw_sst_0f28 \ & Firmware-go7007 \ & Firmware-hfi1_firmware \ - & Firmware-i2400m \ & Firmware-ibt_firmware \ & Firmware-it913x \ & Firmware-IntcSST2 \ @@ -1019,6 +1529,7 @@ LICENSE:${PN} = "\ & Firmware-moxa \ & Firmware-myri10ge_firmware \ & Firmware-nvidia \ + & Firmware-nxp \ & Firmware-OLPC \ & Firmware-ath9k-htc \ & Firmware-phanfw \ @@ -1032,7 +1543,6 @@ LICENSE:${PN} = "\ & Firmware-ralink-firmware \ & Firmware-imx-sdma_firmware \ & Firmware-siano \ - & Firmware-tda7706-firmware \ & Firmware-ti-connectivity \ & Firmware-ti-keystone \ & Firmware-ueagle-atm4-firmware \ @@ -1065,3 +1575,9 @@ python populate_packages:prepend () { # Firmware files are generally not ran on the CPU, so they can be # allarch despite being architecture specific INSANE_SKIP = "arch" + +# Don't warn about already stripped files +INSANE_SKIP:${PN} = "already-stripped" + +# No need to put firmware into the sysroot +SYSROOT_DIRS_IGNORE += "${nonarch_base_libdir}/firmware" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc index 3867d09d08..3a8d32e785 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc @@ -2,7 +2,7 @@ SUMMARY = "Sanitized set of kernel headers for the C library's use" HOMEPAGE = "https://www.kernel.org/" DESCRIPTION = "Designed to maintain an Application Programming Interface (API) stable version of the Linux headers" SECTION = "devel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" ######################################################################### #### PLEASE READ @@ -44,6 +44,8 @@ python __anonymous () { d.setVar("HEADER_FETCH_VER", "4.x") elif major == "5": d.setVar("HEADER_FETCH_VER", "5.x") + elif major == "6": + d.setVar("HEADER_FETCH_VER", "6.x") else: d.setVar("HEADER_FETCH_VER", "2.6") } @@ -103,7 +105,7 @@ do_install_armmultilib () { BBCLASSEXTEND = "nativesdk" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" INHIBIT_DEFAULT_DEPS = "1" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch deleted file mode 100644 index 5b7c1b6e21..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch +++ /dev/null @@ -1,42 +0,0 @@ -From dc221138c809125dc1bbff8506c70cb7bd846368 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 12 Sep 2018 17:08:58 -0700 -Subject: [PATCH] include linux/stddef.h in swab.h uapi header - -swab.h uses __always_inline without including the header where it is -defined, this is exposed by musl based distributions where this macro is -not defined by system C library headers unlike glibc where it is defined -in sys/cdefs.h and that header gets pulled in indirectly via - -features.h -> sys/cdefs.h - -and features.h gets pulled in a lot of headers. Therefore it may work in -cases where features.h is includes but not otherwise. - -Adding linux/stddef.h here ensures that __always_inline is always -defined independent of which C library is used in userspace - -Upstream-Status: Submitted [https://lkml.org/lkml/2018/9/13/78] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Cc: Philippe Ombredanne <pombredanne@nexb.com> -Cc: Kate Stewart <kstewart@linuxfoundation.org> -Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Cc: Thomas Gleixner <tglx@linutronix.de> - ---- - include/uapi/linux/swab.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h -index 7272f85d6..2912fe463 100644 ---- a/include/uapi/linux/swab.h -+++ b/include/uapi/linux/swab.h -@@ -3,6 +3,7 @@ - #define _UAPI_LINUX_SWAB_H - - #include <linux/types.h> -+#include <linux/stddef.h> - #include <linux/compiler.h> - #include <asm/bitsperlong.h> - #include <asm/swab.h> diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch deleted file mode 100644 index a5ded602e5..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 694eba7bb974f6b8bd308804cb24350150108b2b Mon Sep 17 00:00:00 2001 -From: He Zhe <zhe.he@windriver.com> -Date: Wed, 21 Nov 2018 15:12:43 +0800 -Subject: [PATCH] scripts: Use fixed input and output files instead of pipe for here-doc - -There was a bug of "as" in binutils that when it checks if the input file and -output file are the same one, it would not check if they are on the same block -device. The check is introduced by the following commit in v2.31. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -67f846b59b32f3d704c601669409c2584383fea9 - -The here-doc usage in this script creates temporary file in /tmp. When we run in -an environment where /tmp has rarely been used, the newly created temporary file -may have a very low inode number. If the inode number was 6 which is the same as -/dev/null, the as would wrongly think the input file and the output file are the -same and report the following error. - -*** Compiler lacks asm-goto support.. Stop. - -One observed case happened in docker where the /tmp could be so rarely used that -very low number inode may be allocated and triggers the error. - -The fix below for the bug only exists on the master branch of binutils so far -and has not been released from upstream. As the convict is introduced since -v2.31, only v2.31 is affected. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -2a50366ded329bfb39d387253450c9d5302c3503 - -When building linux-libc-headers we need to use "as" in binutils which does not -contain the fix for the moment. To work around the error, we create a fixed -temporary file to contain the program being tested. - -This patch also removes ">/dev/null 2>&1" so we will have more direct error -information in case something else wrong happened. - -Upstream-Status: Inappropriate [A work around for binutils v2.31] - -Signed-off-by: He Zhe <zhe.he@windriver.com> ---- - scripts/gcc-goto.sh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh -index 8b980fb22..d256a9438 100755 ---- a/scripts/gcc-goto.sh -+++ b/scripts/gcc-goto.sh -@@ -3,7 +3,7 @@ - # Test for gcc 'asm goto' support - # Copyright (C) 2010, Jason Baron <jbaron@redhat.com> - --cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null -+cat << "END" > ./input - int main(void) - { - #if defined(__arm__) || defined(__aarch64__) -@@ -20,3 +20,6 @@ entry: - return 0; - } - END -+ -+$@ -x c ./input -fno-PIE -c -o ./output -+rm ./input ./output --- -2.19.1 - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.14.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb index 282c04d79c..d68de6ec7e 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.14.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] = "a082ef5748b813abca0649dab8be5f52" -SRC_URI[sha256sum] = "7e068b5e0d26a62b10e5320b25dce57588cbbc6f781c090442138c9c9c3271b2" +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 d39573965f..fafab475f3 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb @@ -5,7 +5,7 @@ development or external module builds" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" inherit linux-kernel-base @@ -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 - lnr ${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,96 +70,113 @@ do_install() { # now copy in parts from the build that we'll need later ( - cd ${B} + cd ${B} - cp Module.symvers $kerneldir/build - cp System.map* $kerneldir/build - if [ -s Module.markers ]; then - cp Module.markers $kerneldir/build - fi + 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 + 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 + # 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 || : + # 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" ]; then - cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/ - fi - if [ "${ARCH}" = "powerpc" ]; then - cp -a --parents arch/powerpc/kernel/vdso32/vdso32.lds $kerneldir/build 2>/dev/null || : - cp -a --parents arch/powerpc/kernel/vdso64/vdso64.lds $kerneldir/build 2>/dev/null || : - fi - - cp -a include $kerneldir/build/include - - # we don't usually copy generated files, since they can be rebuilt on the target, - # but without this file, we get a forced syncconfig run in v5.8+, which prompts and - # breaks workflows. - cp -a --parents include/generated/autoconf.h $kerneldir/build 2>/dev/null || : - - if [ -e $kerneldir/include/generated/.vdso-offsets.h.cmd ]; then - rm $kerneldir/include/generated/.vdso-offsets.h.cmd - fi + 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/ + 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/ @@ -172,111 +189,169 @@ do_install() { cp -a --parents arch/arm64/tools/gen-cpucaps.awk $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/arm64/tools/cpucaps $kerneldir/build/ 2>/dev/null || : + # 5.19+ + cp -a --parents arch/arm64/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm64/tools/sysreg $kerneldir/build/ 2>/dev/null || : + if [ -e $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk ]; then sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk fi - fi - - if [ "${ARCH}" = "powerpc" ]; then - # 5.0 needs these files, but don't error if they aren't present in the source - cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || : - fi - - # 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/ - - # ARM syscall table tools only exist for kernels v4.10 or later + if [ -e $kerneldir/build/arch/arm64/tools/gen-sysreg.awk ]; then + sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-sysreg.awk + fi + fi + + if [ "${ARCH}" = "powerpc" ]; then + # 5.0 needs these files, but don't error if they aren't present in the source + cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || : + + # v5.19+ + cp -a --parents arch/powerpc/kernel/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + + # v6,1+ + cp -a --parents arch/powerpc/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/head_booke.h $kerneldir/build/ 2>/dev/null || : + fi + if [ "${ARCH}" = "riscv" ]; then + cp -a --parents arch/riscv/kernel/vdso/*gettimeofday.* $kerneldir/build/ + cp -a --parents arch/riscv/kernel/vdso/note.S $kerneldir/build/ + # v6.1+ + cp -a --parents arch/riscv/kernel/asm-offsets.c $kerneldir/build/ + if [ -e arch/riscv/kernel/vdso/gen_vdso_offsets.sh ]; then + cp -a --parents arch/riscv/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/ + fi + cp -a --parents arch/riscv/kernel/vdso/* $kerneldir/build/ 2>/dev/null || : + 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 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 || : + + # ARM syscall table tools only exist for kernels v4.10 or later SYSCALL_TOOLS=$(find arch/arm/tools -name "syscall*") if [ -n "$SYSCALL_TOOLS" ] ; then - cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ + cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ fi cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ 2>/dev/null || : - fi - - if [ -d arch/${ARCH}/include ]; then - cp -a --parents arch/${ARCH}/include $kerneldir/build/ - fi - - cp -a include $kerneldir/build - - cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || : - - cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ - cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ - - # required for generate missing syscalls prepare phase - cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build - cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || : - - if [ "${ARCH}" = "x86" ]; then - # files for 'make prepare' to succeed with kernel-devel - cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || : - cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ - cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ - cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ - - # 4.18 + have unified the purgatory files, so we ignore any errors if - # these files are not present - cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : - - cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ - cp -a --parents arch/x86/boot/string.h $kerneldir/build/ - cp -a --parents arch/x86/boot/string.c $kerneldir/build/ - cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ - - # objtool requires these files - cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || : - fi - - if [ "${ARCH}" = "mips" ]; then - cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ - cp --parents $(find -type f -name "Platform") $kerneldir/build - cp --parents arch/mips/boot/tools/relocs* $kerneldir/build - cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build - cp -a --parents kernel/time/timeconst.bc $kerneldir/build - cp -a --parents kernel/bounds.c $kerneldir/build - cp -a --parents Kbuild $kerneldir/build - cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : - fi + # v6.1+ + cp -a --parents arch/arm/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm/kernel/signal.h $kerneldir/build/ 2>/dev/null || : + fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || : + + cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ + cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ + + # required for generate missing syscalls prepare phase + cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build + cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || : + + if [ "${ARCH}" = "x86" ]; then + # files for 'make prepare' to succeed with kernel-devel + cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ + cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ + + # 4.18 + have unified the purgatory files, so we ignore any errors if + # these files are not present + cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : + + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + cp -a --parents arch/x86/boot/string.c $kerneldir/build/ + cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + + # objtool requires these files + cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || : + + # v6.1+ + cp -a --parents arch/x86/kernel/asm-offsets* $kerneldir/build || : + # for capabilities.h, vmx.h + cp -a --parents arch/x86/kvm/vmx/*.h $kerneldir/build || : + # for lapic.h, hyperv.h .... + cp -a --parents arch/x86/kvm/*.h $kerneldir/build || : + fi + + # moved from arch/mips to all arches for v6.1+ + cp -a --parents kernel/time/timeconst.bc $kerneldir/build 2>/dev/null || : + cp -a --parents kernel/bounds.c $kerneldir/build 2>/dev/null || : + + if [ "${ARCH}" = "mips" ]; then + cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ + cp --parents $(find -type f -name "Platform") $kerneldir/build + cp --parents arch/mips/boot/tools/relocs* $kerneldir/build + cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : + fi + + if [ "${ARCH}" = "loongarch" ]; then + cp -a --parents arch/loongarch/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/loongarch/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*getcpu.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + fi # required to build scripts/selinux/genheaders/genheaders cp -a --parents security/selinux/include/* $kerneldir/build/ - # copy any localversion files - cp -a localversion* $kerneldir/build/ 2>/dev/null || : + # copy any localversion files + cp -a localversion* $kerneldir/build/ 2>/dev/null || : ) # Make sure the Makefile and version.h have a matching timestamp so that # external modules can be built touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h - # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. - cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + # This fixes a warning that the compilers don't match when building a module + # Change: CONFIG_CC_VERSION_TEXT="x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + # #define CONFIG_CC_VERSION_TEXT "x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' "$kerneldir/build/.config" + sed -i 's/#define CONFIG_CC_VERSION_TEXT ".*\(gcc.*\)"/#define CONFIG_CC_VERSION_TEXT "\1"/' $kerneldir/build/include/generated/autoconf.h + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' $kerneldir/build/include/config/auto.conf # make sure these are at least as old as the .config, or rebuilds will trigger touch -r $kerneldir/build/.config $kerneldir/build/include/generated/autoconf.h 2>/dev/null || : @@ -304,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} @@ -318,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 175e660687..2396f46202 100644 --- a/meta/recipes-kernel/linux/linux-dummy.bb +++ b/meta/recipes-kernel/linux/linux-dummy.bb @@ -4,7 +4,7 @@ provider for virtual/kernel to satisfy dependencies for situations \ where you wish to build the kernel externally from the build system." SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe" PROVIDES += "virtual/kernel" @@ -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 005b688778..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 = "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,19 +28,25 @@ 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.15+" +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 +DEPENDS += "libyaml-native" -COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64)" +PACKAGECONFIG ??= "" +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)}" -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" +COMPATIBLE_MACHINE = "^(qemuarmv5|qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv32|qemuriscv64|qemuloongarch64)$" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" # Functionality flags KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" @@ -52,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.14.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb deleted file mode 100644 index 0baffe6f2f..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb +++ /dev/null @@ -1,45 +0,0 @@ -KBRANCH ?= "v5.14/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 ?= "ca5b19aa3996eb1907f546fce7a7fa55053fbead" -SRCREV_meta ?= "884dfea956ec6b166d1f99a295c47338573a974c" - -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.14;destsuffix=${KMETA}" - -LINUX_VERSION ?= "5.14.9" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "1" - -LINUX_KERNEL_TYPE = "preempt-rt" - -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" -KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" -KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb index e35a91d254..a44a08451a 100644 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb +++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb @@ -1,7 +1,10 @@ -KBRANCH ?= "v5.10/standard/preempt-rt/base" +KBRANCH ?= "v6.6/standard/preempt-rt/base" require recipes-kernel/linux/linux-yocto.inc +# CVE exclusions +include recipes-kernel/linux/cve-exclusion_6.6.inc + # Skip processing of this recipe if it is not explicitly specified as the # PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying # to build multiple virtual/kernel providers, e.g. as dependency of @@ -11,29 +14,29 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "42d1c4e85643d634bddd98e5c4d8a9bcc61b3e18" -SRCREV_meta ?= "f8afd84b117f336477846b9e22178ebefb26c08d" +SRCREV_machine ?= "19813826de57a6425518c7b3daf8dd6a04d2321f" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" -LINUX_VERSION ?= "5.10.70" +LINUX_VERSION ?= "6.6.23" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" DEPENDS += "openssl-native util-linux-native" -PV = "${LINUX_VERSION}+git${SRCPV}" +PV = "${LINUX_VERSION}+git" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "1" LINUX_KERNEL_TYPE = "preempt-rt" -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)" +COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)$" -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" # Functionality flags KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" @@ -42,4 +45,4 @@ KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" -KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" +KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb deleted file mode 100644 index c92a149d85..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb +++ /dev/null @@ -1,32 +0,0 @@ -KBRANCH ?= "v5.10/standard/tiny/base" -KBRANCH:qemuarm ?= "v5.10/standard/tiny/arm-versatile-926ejs" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "5.10.70" -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -SRCREV_machine:qemuarm ?= "71ff272be9e9436f27088fbd494da2de613121ea" -SRCREV_machine ?= "4d1eeccd06dd8d310b238d6350cb0f7d937f4427" -SRCREV_meta ?= "f8afd84b117f336477846b9e22178ebefb26c08d" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb deleted file mode 100644 index 5ca45ad894..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb +++ /dev/null @@ -1,32 +0,0 @@ -KBRANCH ?= "v5.14/standard/tiny/base" -KBRANCH:qemuarm ?= "v5.14/standard/tiny/arm-versatile-926ejs" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "5.14.9" -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -SRCREV_machine:qemuarm ?= "66b3eb63900447948655628e141b54ce0dc3a009" -SRCREV_machine ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_meta ?= "884dfea956ec6b166d1f99a295c47338573a974c" - -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.14;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb new file mode 100644 index 0000000000..db9e252572 --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb @@ -0,0 +1,33 @@ +KBRANCH ?= "v6.6/standard/tiny/base" + +LINUX_KERNEL_TYPE = "tiny" +KCONFIG_MODE = "--allnoconfig" + +require recipes-kernel/linux/linux-yocto.inc + +# 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)}" +DEPENDS += "openssl-native util-linux-native" + +KMETA = "kernel-meta" +KCONF_BSP_AUDIT_LEVEL = "2" + +SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" + +PV = "${LINUX_VERSION}+git" + +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)$" + +# Functionality flags +KERNEL_FEATURES = "" + +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 331727d62c..0132fcffb3 100644 --- a/meta/recipes-kernel/linux/linux-yocto.inc +++ b/meta/recipes-kernel/linux/linux-yocto.inc @@ -1,6 +1,6 @@ SUMMARY = "Linux kernel" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" HOMEPAGE = "https://www.yoctoproject.org/" LIC_FILES_CHKSUM ?= "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" @@ -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)}" @@ -57,3 +58,24 @@ 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 ?= "" +# 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) + d.setVar("PKG_CONFIG_DIR", "${STAGING_DIR_NATIVE}${libdir_native}/pkgconfig") + d.setVar("PKG_CONFIG_PATH", "${PKG_CONFIG_DIR}:${STAGING_DATADIR_NATIVE}/pkgconfig") + d.setVar("PKG_CONFIG_LIBDIR", "${PKG_CONFIG_DIR}") + d.setVarFlag("PKG_CONFIG_SYSROOT_DIR", "unexport", "1") + d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") +} diff --git a/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/meta/recipes-kernel/linux/linux-yocto_5.10.bb deleted file mode 100644 index b4ccdb26dc..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.10.bb +++ /dev/null @@ -1,58 +0,0 @@ -KBRANCH ?= "v5.10/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH:qemuarm ?= "v5.10/standard/arm-versatile-926ejs" -KBRANCH:qemuarm64 ?= "v5.10/standard/qemuarm64" -KBRANCH:qemumips ?= "v5.10/standard/mti-malta32" -KBRANCH:qemuppc ?= "v5.10/standard/qemuppc" -KBRANCH:qemuriscv64 ?= "v5.10/standard/base" -KBRANCH:qemuriscv32 ?= "v5.10/standard/base" -KBRANCH:qemux86 ?= "v5.10/standard/base" -KBRANCH:qemux86-64 ?= "v5.10/standard/base" -KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64" - -SRCREV_machine:qemuarm ?= "011882741f10bd0c725139baa383eb5a4d833bca" -SRCREV_machine:qemuarm64 ?= "098464b7c0c3d6f2a5b9226aab3245c3fcfb4797" -SRCREV_machine:qemumips ?= "88494c005ab76864e706097056557b5616da65c6" -SRCREV_machine:qemuppc ?= "a2b9c27f431a20ebfcd4146971c9422f4216aa90" -SRCREV_machine:qemuriscv64 ?= "7dda2a9f69de7f80e572d38236896e97be79f39d" -SRCREV_machine:qemuriscv32 ?= "7dda2a9f69de7f80e572d38236896e97be79f39d" -SRCREV_machine:qemux86 ?= "7dda2a9f69de7f80e572d38236896e97be79f39d" -SRCREV_machine:qemux86-64 ?= "7dda2a9f69de7f80e572d38236896e97be79f39d" -SRCREV_machine:qemumips64 ?= "80da62cff32617711767cd6b01f64f1dc14f94d8" -SRCREV_machine ?= "7dda2a9f69de7f80e572d38236896e97be79f39d" -SRCREV_meta ?= "f8afd84b117f336477846b9e22178ebefb26c08d" - -# remap qemuarm to qemuarma15 for the 5.8 kernel -# KMACHINE:qemuarm ?= "qemuarma15" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.10.70" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" -DEPENDS += "gmp-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)}" diff --git a/meta/recipes-kernel/linux/linux-yocto_5.14.bb b/meta/recipes-kernel/linux/linux-yocto_5.14.bb deleted file mode 100644 index 6a032a1f77..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.14.bb +++ /dev/null @@ -1,68 +0,0 @@ -KBRANCH ?= "v5.14/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH:qemuarm ?= "v5.14/standard/arm-versatile-926ejs" -KBRANCH:qemuarm64 ?= "v5.14/standard/qemuarm64" -KBRANCH:qemumips ?= "v5.14/standard/mti-malta32" -KBRANCH:qemuppc ?= "v5.14/standard/qemuppc" -KBRANCH:qemuriscv64 ?= "v5.14/standard/base" -KBRANCH:qemuriscv32 ?= "v5.14/standard/base" -KBRANCH:qemux86 ?= "v5.14/standard/base" -KBRANCH:qemux86-64 ?= "v5.14/standard/base" -KBRANCH:qemumips64 ?= "v5.14/standard/mti-malta64" - -SRCREV_machine:qemuarm ?= "c3a887f62f231d6b31f0209712014f9cbc7fd77e" -SRCREV_machine:qemuarm64 ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemumips ?= "77174bdf6581bdb93f0f458601364800670f8531" -SRCREV_machine:qemuppc ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemuriscv64 ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemuriscv32 ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemux86 ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemux86-64 ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_machine:qemumips64 ?= "e86c3a6ad2fde78ad03e0b899286bf603756207d" -SRCREV_machine ?= "c4def465fc44a7f5311d9b942d6cdd33cb4804ca" -SRCREV_meta ?= "884dfea956ec6b166d1f99a295c47338573a974c" - -# 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" -DEFAULT_PREFERENCE:class-devupstream = "-1" -SRCREV_machine:class-devupstream ?= "70248e7b378b96f208d5544ee25b808a8ef2ddc2" -PN:class-devupstream = "linux-yocto-upstream" -KBRANCH:class-devupstream = "v5.14/base" - -# remap qemuarm to qemuarma15 for the 5.8 kernel -# KMACHINE:qemuarm ?= "qemuarma15" - -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.14;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.14.9" - -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)}" 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 2aafe81734..d6c75d7580 100644 --- a/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb +++ b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb @@ -2,24 +2,24 @@ SUMMARY = "Babeltrace2 - Trace Format Babel Tower" DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log." HOMEPAGE = "http://babeltrace.org/" BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace" -LICENSE = "MIT & GPLv2 & LGPLv2.1 & BSD-2-Clause" +LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only & BSD-2-Clause" 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" inherit autotools pkgconfig ptest python3targetconfig -EXTRA_OECONF = "--disable-debug-info" +EXTRA_OECONF = "--disable-debug-info --disable-Werror" PACKAGECONFIG ??= "manpages" PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native" @@ -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 9f8b035128..f4d9b5e42a 100644 --- a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb +++ b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb @@ -2,15 +2,15 @@ SUMMARY = "Babeltrace - Trace Format Babel Tower" DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log." HOMEPAGE = "http://babeltrace.org/" BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace" -LICENSE = "MIT & GPLv2 & LGPLv2.1" +LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only" LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa" DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" -SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5 \ +SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5;protocol=https \ file://run-ptest \ " -SRCREV = "054a54ae10b01a271afc4f19496c041b10fb414c" +SRCREV = "91c00f70884887ff5c4849a8e3d47e311a22ba9d" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>1(\.\d+)+)$" S = "${WORKDIR}/git" @@ -21,7 +21,7 @@ EXTRA_OECONF = "--disable-debug-info" ASNEEDED = "" -RDEPENDS:${PN}-ptest += "bash gawk" +RDEPENDS:${PN}-ptest += "bash gawk make" addtask do_patch_ptest_path after do_patch before do_configure do_patch_ptest_path () { diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch new file mode 100644 index 0000000000..9d5fd0de60 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch @@ -0,0 +1,93 @@ +From fec007d9630e010062cf5699a08460f71f46b527 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 08:54:42 -0400 +Subject: [PATCH 1/4] Fix: ASoC snd_doc_dapm on linux 6.9-rc1 + +See upstream commit: + + commit 7df3eb4cdb6bbfa482f51548b9fd47c2723c68ba + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:01 2024 +0100 + + ASoC: trace: add event to snd_soc_dapm trace events + + Add the event value to the snd_soc_dapm_start and snd_soc_dapm_done trace + events to make them more informative. + + Trace before: + + aplay-229 [000] 250.140309: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 250.167531: snd_soc_dapm_done: card=vscn-2046 + aplay-229 [000] 251.169588: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 251.195245: snd_soc_dapm_done: card=vscn-2046 + + Trace after: + + aplay-214 [000] 693.290612: snd_soc_dapm_start: card=vscn-2046 event=1 + aplay-214 [000] 693.315508: snd_soc_dapm_done: card=vscn-2046 event=1 + aplay-214 [000] 694.537349: snd_soc_dapm_start: card=vscn-2046 event=2 + aplay-214 [000] 694.563241: snd_soc_dapm_done: card=vscn-2046 event=2 + +Upstream-Status: Backport [88c4e0fe Fix: ASoC snd_doc_dapm on linux 6.9-rc1] + +Change-Id: If0d33544b8dd1dfb3d12ca9390892190fc0444b0 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 33 +++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/include/instrumentation/events/asoc.h b/include/instrumentation/events/asoc.h +index 21d13a0f..5126d4c1 100644 +--- a/include/instrumentation/events/asoc.h ++++ b/include/instrumentation/events/asoc.h +@@ -51,6 +51,38 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_card, snd_soc_bias_level_done, + + ) + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event), ++ ++ TP_FIELDS( ++ ctf_string(name, card->name) ++ ctf_integer(int, event, event) ++ ) ++) ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_start, ++ ++ asoc_snd_soc_dapm_start, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, ++ ++ asoc_snd_soc_dapm_done, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, + + TP_PROTO(struct snd_soc_card *card), +@@ -81,6 +113,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, + TP_ARGS(card) + + ) ++#endif + + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_widget, + +-- +2.39.2 + diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch deleted file mode 100644 index 4e52e5f122..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch +++ /dev/null @@ -1,394 +0,0 @@ -From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 13 Sep 2021 12:00:38 -0400 -Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug - functions. (v5.15) - -The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13 -and removed in v5.15. - -See upstream commits : - -commit 8c854303ce0e38e5bbedd725ff39da7e235865d8 -Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Tue Aug 3 16:16:21 2021 +0200 - - cpu/hotplug: Remove deprecated CPU-hotplug functions. - - No users in tree use the deprecated CPU-hotplug functions anymore. - - Remove them. - -Introduced in v4.13 : - - commit 8f553c498e1772cccb39a114da4a498d22992758 - Author: Thomas Gleixner <tglx@linutronix.de> - Date: Wed May 24 10:15:12 2017 +0200 - - cpu/hotplug: Provide cpus_read|write_[un]lock() - - The counting 'rwsem' hackery of get|put_online_cpus() is going to be - replaced by percpu rwsem. - - Rename the functions to make it clear that it's locking and not some - refcount style interface. These new functions will be used for the - preparatory patches which make the code ready for the percpu rwsem - conversion. - - Rename all instances in the cpu hotplug code while at it. - -Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb] - -Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/wrapper/cpu.h | 44 +++++++++++++++++++++++ - src/lib/ringbuffer/ring_buffer_backend.c | 8 ++--- - src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++----- - src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++---- - src/lttng-context-perf-counters.c | 11 +++--- - src/lttng-statedump-impl.c | 6 ++-- - 6 files changed, 74 insertions(+), 27 deletions(-) - create mode 100644 include/wrapper/cpu.h - -diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h -new file mode 100644 -index 00000000..cbee1962 ---- /dev/null -+++ b/include/wrapper/cpu.h -@@ -0,0 +1,44 @@ -+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) -+ * -+ * wrapper/cpu.h -+ * -+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com> -+ */ -+ -+#ifndef _LTTNG_WRAPPER_CPU_H -+#define _LTTNG_WRAPPER_CPU_H -+ -+#include <linux/cpu.h> -+#include <lttng/kernel-version.h> -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0)) -+ -+static inline -+void lttng_cpus_read_lock(void) -+{ -+ cpus_read_lock(); -+} -+ -+static inline -+void lttng_cpus_read_unlock(void) -+{ -+ cpus_read_unlock(); -+} -+ -+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ -+ -+static inline -+void lttng_cpus_read_lock(void) -+{ -+ get_online_cpus(); -+} -+ -+static inline -+void lttng_cpus_read_unlock(void) -+{ -+ put_online_cpus(); -+} -+ -+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */ -+ -+#endif /* _LTTNG_WRAPPER_CPU_H */ -diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c -index 26efb2bc..9a339be0 100644 ---- a/src/lib/ringbuffer/ring_buffer_backend.c -+++ b/src/lib/ringbuffer/ring_buffer_backend.c -@@ -12,10 +12,10 @@ - #include <linux/delay.h> - #include <linux/errno.h> - #include <linux/slab.h> --#include <linux/cpu.h> - #include <linux/mm.h> - #include <linux/vmalloc.h> - -+#include <wrapper/cpu.h> - #include <wrapper/mm.h> - #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */ - #include <ringbuffer/config.h> -@@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb, - chanb->cpu_hp_notifier.priority = 5; - register_hotcpu_notifier(&chanb->cpu_hp_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(i) { - ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), - chanb, i); - if (ret) - goto free_bufs; /* cpu hotplug locked */ - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(i) { - ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i), -@@ -485,7 +485,7 @@ free_bufs: - */ - #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ - #ifdef CONFIG_HOTPLUG_CPU -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - unregister_hotcpu_notifier(&chanb->cpu_hp_notifier); - #endif - #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ -diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c -index e9056118..87a575d0 100644 ---- a/src/lib/ringbuffer/ring_buffer_frontend.c -+++ b/src/lib/ringbuffer/ring_buffer_frontend.c -@@ -48,6 +48,7 @@ - #include <ringbuffer/iterator.h> - #include <ringbuffer/nohz.h> - #include <wrapper/atomic.h> -+#include <wrapper/cpu.h> - #include <wrapper/kref.h> - #include <wrapper/percpu-defs.h> - #include <wrapper/timer.h> -@@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel - int cpu; - - #ifdef CONFIG_HOTPLUG_CPU -- get_online_cpus(); -+ lttng_cpus_read_lock(); - chan->cpu_hp_enable = 0; - for_each_online_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, -@@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel - lib_ring_buffer_stop_switch_timer(buf); - lib_ring_buffer_stop_read_timer(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - unregister_cpu_notifier(&chan->cpu_hp_notifier); - #else - for_each_possible_cpu(cpu) { -@@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann - const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); - - lib_ring_buffer_set_quiescent(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - struct lttng_kernel_ring_buffer *buf = chan->backend.buf; - -@@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha - const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); - - lib_ring_buffer_clear_quiescent(buf); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - struct lttng_kernel_ring_buffer *buf = chan->backend.buf; - -@@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne - chan->cpu_hp_notifier.priority = 6; - register_cpu_notifier(&chan->cpu_hp_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, - cpu); -@@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne - spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu)); - } - chan->cpu_hp_enable = 1; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(cpu) { - struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf, -diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c -index 25839af6..60c95ca6 100644 ---- a/src/lib/ringbuffer/ring_buffer_iterator.c -+++ b/src/lib/ringbuffer/ring_buffer_iterator.c -@@ -10,6 +10,7 @@ - */ - - #include <ringbuffer/iterator.h> -+#include <wrapper/cpu.h> - #include <wrapper/file.h> - #include <wrapper/uaccess.h> - #include <linux/jiffies.h> -@@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan) - chan->hp_iter_notifier.priority = 10; - register_cpu_notifier(&chan->hp_iter_notifier); - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - buf = per_cpu_ptr(chan->backend.buf, cpu); - lib_ring_buffer_iterator_init(chan, buf); - } - chan->hp_iter_enable = 1; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #else - for_each_possible_cpu(cpu) { - buf = per_cpu_ptr(chan->backend.buf, cpu); -@@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR); - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - /* Allow CPU hotplug to keep track of opened reader */ - chan->iter.read_open = 1; - for_each_channel_cpu(cpu, chan) { -@@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - goto error; - buf->iter.read_open = 1; - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - buf = channel_get_ring_buffer(config, chan, 0); - ret = lib_ring_buffer_iterator_open(buf); -@@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan) - error: - /* Error should always happen on CPU 0, hence no close is required. */ - CHAN_WARN_ON(chan, cpu != 0); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - return ret; - } - EXPORT_SYMBOL_GPL(channel_iterator_open); -@@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) - int cpu; - - if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) { -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_channel_cpu(cpu, chan) { - buf = channel_get_ring_buffer(config, chan, cpu); - if (buf->iter.read_open) { -@@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan) - } - } - chan->iter.read_open = 0; -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - } else { - buf = channel_get_ring_buffer(config, chan, 0); - lib_ring_buffer_iterator_release(buf); -diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c -index b0227d47..372f05e0 100644 ---- a/src/lttng-context-perf-counters.c -+++ b/src/lttng-context-perf-counters.c -@@ -16,6 +16,7 @@ - #include <lttng/events.h> - #include <lttng/events-internal.h> - #include <ringbuffer/frontend_types.h> -+#include <wrapper/cpu.h> - #include <wrapper/vmalloc.h> - #include <wrapper/perf.h> - #include <lttng/tracer.h> -@@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv) - { - int cpu; - -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) - perf_event_release_kernel(events[cpu]); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #ifdef CONFIG_HOTPLUG_CPU - unregister_cpu_notifier(&perf_field->nb); - #endif -@@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, - perf_field->nb.priority = 0; - register_cpu_notifier(&perf_field->nb); - #endif -- get_online_cpus(); -+ lttng_cpus_read_lock(); - for_each_online_cpu(cpu) { - events[cpu] = wrapper_perf_event_create_kernel_counter(attr, - cpu, NULL, overflow_callback); -@@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type, - goto counter_busy; - } - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - perf_field->hp_enable = 1; - } - #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */ -@@ -351,7 +352,7 @@ counter_error: - if (events[cpu] && !IS_ERR(events[cpu])) - perf_event_release_kernel(events[cpu]); - } -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - #ifdef CONFIG_HOTPLUG_CPU - unregister_cpu_notifier(&perf_field->nb); - #endif -diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c -index 4dfbca0b..2b42783a 100644 ---- a/src/lttng-statedump-impl.c -+++ b/src/lttng-statedump-impl.c -@@ -23,7 +23,6 @@ - #include <linux/file.h> - #include <linux/interrupt.h> - #include <linux/irqnr.h> --#include <linux/cpu.h> - #include <linux/netdevice.h> - #include <linux/inetdevice.h> - #include <linux/mm.h> -@@ -34,6 +33,7 @@ - - #include <lttng/events.h> - #include <lttng/tracer.h> -+#include <wrapper/cpu.h> - #include <wrapper/irqdesc.h> - #include <wrapper/fdtable.h> - #include <wrapper/namespace.h> -@@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) - * is to guarantee that each CPU has been in a state where is was in - * syscall mode (i.e. not in a trap, an IRQ or a soft IRQ). - */ -- get_online_cpus(); -+ lttng_cpus_read_lock(); - atomic_set(&kernel_threads_to_run, num_online_cpus()); - for_each_online_cpu(cpu) { - INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func); -@@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session) - } - /* Wait for all threads to run */ - __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0)); -- put_online_cpus(); -+ lttng_cpus_read_unlock(); - /* Our work is done */ - trace_lttng_statedump_end(session); - return 0; --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch index 76a5787c37..120528bf9c 100644 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch @@ -19,10 +19,10 @@ Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> src/Kbuild | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) -diff --git a/src/Kbuild b/src/Kbuild -index 7137874..04eb5c9 100644 ---- a/src/Kbuild -+++ b/src/Kbuild +Index: lttng-modules-2.13.10/src/Kbuild +=================================================================== +--- lttng-modules-2.13.10.orig/src/Kbuild ++++ lttng-modules-2.13.10/src/Kbuild @@ -2,10 +2,13 @@ ifdef CONFIG_LOCALVERSION # Check if dot-config is included. @@ -38,7 +38,7 @@ index 7137874..04eb5c9 100644 TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/.. lttng_check_linux_version = $(shell pwd)/include/linux/version.h -@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump-impl.o +@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump- obj-$(CONFIG_LTTNG) += probes/ obj-$(CONFIG_LTTNG) += lib/ obj-$(CONFIG_LTTNG) += tests/ diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch new file mode 100644 index 0000000000..6ea10ffc91 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch @@ -0,0 +1,132 @@ +From d8379ec6365a925db33cae94fb6783cdbdb6a922 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 09:40:29 -0400 +Subject: [PATCH 2/4] Fix: ASoC add component to set_bias_level events in linux + 6.9-rc1 + +See upstream commit: + + commit 6ef46a69ec32fe1cf56de67742fcd01af4bf48af + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:00 2024 +0100 + + ASoC: trace: add component to set_bias_level trace events + + The snd_soc_bias_level_start and snd_soc_bias_level_done trace events + currently look like: + + aplay-229 [000] 1250.140778: snd_soc_bias_level_start: card=vscn-2046 val=1 + aplay-229 [000] 1250.140784: snd_soc_bias_level_done: card=vscn-2046 val=1 + aplay-229 [000] 1250.140786: snd_soc_bias_level_start: card=vscn-2046 val=2 + aplay-229 [000] 1250.140788: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.140871: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140951: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140956: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140959: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.140961: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167219: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:1-21 [000] 1250.167222: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167232: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.167440: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:0-11 [000] 1250.167444: snd_soc_bias_level_done: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167497: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167506: snd_soc_bias_level_done: card=vscn-2046 val=3 + + There are clearly multiple calls, one per component, but they cannot be + discriminated from each other. + + Change the ftrace events to also print the component name, to make it clear + which part of the code is involved. This requires changing the passed value + from a struct snd_soc_card, where the DAPM context is not kwown, to a + struct snd_soc_dapm_context where it is obviously known but the a card + pointer is also available. + + With this change, the resulting trace becomes: + + aplay-247 [000] 1436.357332: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357338: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357340: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=2 + aplay-247 [000] 1436.357343: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=2 + kworker/u8:4-215 [000] 1436.357437: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:5-231 [000] 1436.357518: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357523: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357526: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:5-231 [000] 1436.357528: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:4-215 [000] 1436.383217: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:4-215 [000] 1436.383221: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:4-215 [000] 1436.383231: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:5-231 [000] 1436.383468: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:5-231 [000] 1436.383472: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:4-215 [000] 1436.383503: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=3 + kworker/u8:4-215 [000] 1436.383513: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=3 + +Upstream-Status: Backport [303434ab Fix: ASoC add component to set_bias_level events in linux 6.9-rc1] + +Change-Id: I959f1680c002acdf29828b968d3975247f5433d8 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 36 +++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +Index: lttng-modules-2.13.12/include/instrumentation/events/asoc.h +=================================================================== +--- lttng-modules-2.13.12.orig/include/instrumentation/events/asoc.h ++++ lttng-modules-2.13.12/include/instrumentation/events/asoc.h +@@ -10,6 +10,7 @@ + #include <lttng/kernel-version.h> + + #define DAPM_DIRECT "(direct)" ++#define DAPM_COMPONENT_NONE "(none)" + + #ifndef _TRACE_ASOC_DEF + #define _TRACE_ASOC_DEF +@@ -119,6 +120,40 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + ) + #endif + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_context, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val), ++ ++ TP_FIELDS( ++ ctf_string(name, dapm->card->name) ++ ctf_string(component, dapm->component ? dapm->component->name : DAPM_COMPONENT_NONE) ++ ctf_integer(int, val, val) ++ ) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_start, ++ ++ asoc_snd_soc_bias_level_start, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_done, ++ ++ asoc_snd_soc_bias_level_done, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_card, + + TP_PROTO(struct snd_soc_card *card, int val), +@@ -150,6 +185,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + TP_ARGS(card, val) + + ) ++#endif + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch deleted file mode 100644 index 5b5edc5319..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch +++ /dev/null @@ -1,829 +0,0 @@ -From c570be0da77e963d77bac099d468bc0cd5f1bd63 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 13 Sep 2021 14:16:22 -0400 -Subject: [PATCH 2/2] fix: Revert "Makefile: Enable -Wimplicit-fallthrough for - Clang" (v5.15) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Starting with v5.15, "-Wimplicit-fallthrough=5" was added to the build -flags which requires the use of "__attribute__((__fallthrough__))" to -annotate fallthrough case statements. - -See upstream commit by the man himself: - - commit d936eb23874433caa3e3d841cfa16f5434b85dcf - Author: Linus Torvalds <torvalds@linux-foundation.org> - Date: Thu Jul 15 18:05:31 2021 -0700 - - Revert "Makefile: Enable -Wimplicit-fallthrough for Clang" - - This reverts commit b7eb335e26a9c7f258c96b3962c283c379d3ede0. - - It turns out that the problem with the clang -Wimplicit-fallthrough - warning is not about the kernel source code, but about clang itself, and - that the warning is unusable until clang fixes its broken ways. - - In particular, when you enable this warning for clang, you not only get - warnings about implicit fallthroughs. You also get this: - - warning: fallthrough annotation in unreachable code [-Wimplicit-fallthrough] - - which is completely broken becasue it - - (a) doesn't even tell you where the problem is (seriously: no line - numbers, no filename, no nothing). - - (b) is fundamentally broken anyway, because there are perfectly valid - reasons to have a fallthrough statement even if it turns out that - it can perhaps not be reached. - - In the kernel, an example of that second case is code in the scheduler: - - switch (state) { - case cpuset: - if (IS_ENABLED(CONFIG_CPUSETS)) { - cpuset_cpus_allowed_fallback(p); - state = possible; - break; - } - fallthrough; - case possible: - - where if CONFIG_CPUSETS is enabled you actually never hit the - fallthrough case at all. But that in no way makes the fallthrough - wrong. - - So the warning is completely broken, and enabling it for clang is a very - bad idea. - - In the meantime, we can keep the gcc option enabled, and make the gcc - build use - - -Wimplicit-fallthrough=5 - - which means that we will at least continue to require a proper - fallthrough statement, and that gcc won't silently accept the magic - comment versions. Because gcc does this all correctly, and while the odd - "=5" part is kind of obscure, it's documented in [1]: - - "-Wimplicit-fallthrough=5 doesn’t recognize any comments as - fallthrough comments, only attributes disable the warning" - - so if clang ever fixes its bad behavior we can try enabling it there again. - -Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=c190d76e8c7b44d62b3651ab845b765c1b1f8104] - -Change-Id: Iea69849592fb69ac04fb9bb28efcd6b8dce8ba88 -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - include/counter/counter-api.h | 4 +- - include/lttng/events-internal.h | 11 ++- - include/wrapper/compiler_attributes.h | 34 +++++++ - src/lib/counter/counter.c | 13 ++- - src/lttng-abi.c | 91 ++++++++++++------ - src/lttng-bytecode-interpreter.c | 4 +- - src/lttng-bytecode-specialize.c | 5 +- - src/lttng-events.c | 129 +++++++++++++++++--------- - src/lttng-string-utils.c | 3 +- - src/probes/lttng-kretprobes.c | 7 +- - 10 files changed, 215 insertions(+), 86 deletions(-) - create mode 100644 include/wrapper/compiler_attributes.h - -diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h -index fbc65818..c9f2b141 100644 ---- a/include/counter/counter-api.h -+++ b/include/counter/counter-api.h -@@ -15,6 +15,7 @@ - #include <linux/bitops.h> - #include <counter/counter.h> - #include <counter/counter-internal.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/limits.h> - - /* -@@ -256,7 +257,8 @@ static __always_inline int lttng_counter_add(const struct lib_counter_config *co - const size_t *dimension_indexes, int64_t v) - { - switch (config->alloc) { -- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - return __lttng_counter_add_percpu(config, counter, dimension_indexes, v); - case COUNTER_ALLOC_GLOBAL: -diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h -index cd560de8..ca2190c4 100644 ---- a/include/lttng/events-internal.h -+++ b/include/lttng/events-internal.h -@@ -8,6 +8,8 @@ - #ifndef _LTTNG_EVENTS_INTERNAL_H - #define _LTTNG_EVENTS_INTERNAL_H - -+#include <wrapper/compiler_attributes.h> -+ - #include <lttng/events.h> - - struct lttng_syscall_filter; -@@ -561,9 +563,12 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern - if (!type_integer) - return false; - switch (type_integer->size) { -- case 8: /* Fall-through. */ -- case 16: /* Fall-through. */ -- case 32: /* Fall-through. */ -+ case 8: -+ lttng_fallthrough; -+ case 16: -+ lttng_fallthrough; -+ case 32: -+ lttng_fallthrough; - case 64: - break; - default: -diff --git a/include/wrapper/compiler_attributes.h b/include/wrapper/compiler_attributes.h -new file mode 100644 -index 00000000..c2c96e76 ---- /dev/null -+++ b/include/wrapper/compiler_attributes.h -@@ -0,0 +1,34 @@ -+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) -+ * -+ * wrapper/compiler_attributes.h -+ * -+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com> -+ */ -+ -+#ifndef _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H -+#define _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H -+ -+#include <lttng/kernel-version.h> -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,20,0)) -+#include <linux/compiler_attributes.h> -+#endif -+ -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0)) -+ -+/* -+ * Use the kernel provided fallthrough attribute macro. -+ */ -+#define lttng_fallthrough fallthrough -+ -+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */ -+ -+/* -+ * Fallback to the comment for kernels pre 5.15 that don't build with -+ * '-Wimplicit-fallthrough=5'. -+ */ -+#define lttng_fallthrough do {} while (0) /* fallthrough */ -+ -+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */ -+ -+#endif /* _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H */ -diff --git a/src/lib/counter/counter.c b/src/lib/counter/counter.c -index a4500a0e..bf038aac 100644 ---- a/src/lib/counter/counter.c -+++ b/src/lib/counter/counter.c -@@ -11,6 +11,7 @@ - #include <linux/cpumask.h> - #include <counter/counter.h> - #include <counter/counter-internal.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/vmalloc.h> - #include <wrapper/limits.h> - -@@ -324,7 +325,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config, - *underflow = false; - - switch (config->alloc) { -- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - /* Read global counter. */ - ret = lttng_counter_read(config, counter, dimension_indexes, -@@ -342,7 +344,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config, - switch (config->alloc) { - case COUNTER_ALLOC_GLOBAL: - break; -- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU: - //TODO: integrate with CPU hotplug and online cpus - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { -@@ -448,7 +451,8 @@ int lttng_counter_clear(const struct lib_counter_config *config, - int cpu, ret; - - switch (config->alloc) { -- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: - /* Clear global counter. */ - ret = lttng_counter_clear_cpu(config, counter, dimension_indexes, -1); -@@ -462,7 +466,8 @@ int lttng_counter_clear(const struct lib_counter_config *config, - switch (config->alloc) { - case COUNTER_ALLOC_GLOBAL: - break; -- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */ -+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: -+ lttng_fallthrough; - case COUNTER_ALLOC_PER_CPU: - //TODO: integrate with CPU hotplug and online cpus - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { -diff --git a/src/lttng-abi.c b/src/lttng-abi.c -index cc453894..eac1afd1 100644 ---- a/src/lttng-abi.c -+++ b/src/lttng-abi.c -@@ -34,6 +34,7 @@ - #include <ringbuffer/vfs.h> - #include <ringbuffer/backend.h> - #include <ringbuffer/frontend.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/poll.h> - #include <wrapper/file.h> - #include <wrapper/kref.h> -@@ -1332,7 +1333,8 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp, - */ - return -ENOSYS; - } -- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */ -+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH: - { - struct lttng_metadata_stream *stream = filp->private_data; -@@ -1441,7 +1443,8 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp, - */ - return -ENOSYS; - } -- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */ -+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH: - { - struct lttng_metadata_stream *stream = filp->private_data; -@@ -1758,8 +1761,10 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param) - switch (event_param->instrumentation) { - case LTTNG_KERNEL_ABI_SYSCALL: - switch (event_param->u.syscall.entryexit) { -- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */ -- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT: - break; - default: -@@ -1783,20 +1788,26 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param) - switch (event_param->u.kretprobe.entryexit) { - case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT: - break; -- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */ -- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT: -+ lttng_fallthrough; - default: - return -EINVAL; - } - break; - -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - return -EINVAL; - } -@@ -1830,18 +1841,23 @@ int lttng_abi_create_event(struct file *channel_file, - } - - switch (event_param->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - fops = <tng_event_recorder_enabler_fops; - break; -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - fops = <tng_event_recorder_event_fops; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - return -EINVAL; - } -@@ -1867,7 +1883,8 @@ int lttng_abi_create_event(struct file *channel_file, - goto event_error; - - switch (event_param->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - { - struct lttng_event_enabler *event_enabler; -@@ -1887,8 +1904,10 @@ int lttng_abi_create_event(struct file *channel_file, - break; - } - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - { - struct lttng_kernel_event_recorder *event; -@@ -1908,8 +1927,10 @@ int lttng_abi_create_event(struct file *channel_file, - break; - } - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto event_error; -@@ -2043,18 +2064,23 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - } - - switch (event_notifier_param->event.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - fops = <tng_event_notifier_enabler_fops; - break; -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - fops = <tng_event_notifier_event_fops; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto inval_instr; -@@ -2086,7 +2112,8 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - goto event_notifier_error; - - switch (event_notifier_param->event.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - { - struct lttng_event_notifier_enabler *enabler; -@@ -2110,8 +2137,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - break; - } - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - { - struct lttng_kernel_event_notifier *event_notifier; -@@ -2135,8 +2164,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file, - break; - } - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - ret = -EINVAL; - goto event_notifier_error; -diff --git a/src/lttng-bytecode-interpreter.c b/src/lttng-bytecode-interpreter.c -index b46a23b7..a2a932c6 100644 ---- a/src/lttng-bytecode-interpreter.c -+++ b/src/lttng-bytecode-interpreter.c -@@ -7,6 +7,7 @@ - * Copyright (C) 2010-2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - */ - -+#include <wrapper/compiler_attributes.h> - #include <wrapper/uaccess.h> - #include <wrapper/objtool.h> - #include <wrapper/types.h> -@@ -421,7 +422,8 @@ static int dynamic_get_index(struct lttng_kernel_probe_ctx *lttng_probe_ctx, - } - break; - case LOAD_ROOT_CONTEXT: -- case LOAD_ROOT_APP_CONTEXT: /* Fall-through */ -+ lttng_fallthrough; -+ case LOAD_ROOT_APP_CONTEXT: - { - ret = context_get_index(lttng_probe_ctx, - &stack_top->u.ptr, -diff --git a/src/lttng-bytecode-specialize.c b/src/lttng-bytecode-specialize.c -index c4b9d04b..f8b5f19d 100644 ---- a/src/lttng-bytecode-specialize.c -+++ b/src/lttng-bytecode-specialize.c -@@ -8,6 +8,8 @@ - */ - - #include <linux/slab.h> -+#include <wrapper/compiler_attributes.h> -+ - #include <lttng/lttng-bytecode.h> - #include <lttng/align.h> - #include <lttng/events-internal.h> -@@ -271,7 +273,8 @@ static int specialize_get_index(struct bytecode_runtime *runtime, - } - case OBJECT_TYPE_STRUCT: - /* Only generated by the specialize phase. */ -- case OBJECT_TYPE_VARIANT: /* Fall-through */ -+ case OBJECT_TYPE_VARIANT: -+ lttng_fallthrough; - default: - printk(KERN_WARNING "LTTng: bytecode: Unexpected get index type %d", - (int) stack_top->load.object_type); -diff --git a/src/lttng-events.c b/src/lttng-events.c -index e785fe4d..230e3934 100644 ---- a/src/lttng-events.c -+++ b/src/lttng-events.c -@@ -28,6 +28,7 @@ - #include <linux/vmalloc.h> - #include <linux/dmi.h> - -+#include <wrapper/compiler_attributes.h> - #include <wrapper/uuid.h> - #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */ - #include <wrapper/random.h> -@@ -659,12 +660,14 @@ int lttng_event_enable(struct lttng_kernel_event_common *event) - goto end; - } - switch (event->priv->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - ret = -EINVAL; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - WRITE_ONCE(event->enabled, 1); - break; -@@ -673,8 +676,10 @@ int lttng_event_enable(struct lttng_kernel_event_common *event) - ret = lttng_kretprobes_event_enable_state(event, 1); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -719,12 +724,14 @@ int lttng_event_disable(struct lttng_kernel_event_common *event) - goto end; - } - switch (event->priv->instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - ret = -EINVAL; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - WRITE_ONCE(event->enabled, 0); - break; -@@ -733,8 +740,10 @@ int lttng_event_disable(struct lttng_kernel_event_common *event) - ret = lttng_kretprobes_event_enable_state(event, 0); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -873,15 +882,20 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l - event_name = event_desc->event_name; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - event_name = event_param->name; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1093,8 +1107,10 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l - WARN_ON_ONCE(!ret); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1141,15 +1157,20 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create( - event_name = event_desc->event_name; - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - event_name = event_notifier_param->event.name; - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1296,9 +1317,12 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create( - WARN_ON_ONCE(!ret); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - ret = -EINVAL; -@@ -1423,14 +1447,18 @@ void register_event(struct lttng_kernel_event_recorder *event_recorder) - ret = lttng_syscall_filter_enable_event(event_recorder->chan, event_recorder); - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_UPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_KRETPROBE: - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1481,7 +1509,8 @@ int _lttng_event_unregister(struct lttng_kernel_event_recorder *event_recorder) - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1512,14 +1541,18 @@ void register_event_notifier(struct lttng_kernel_event_notifier *event_notifier) - ret = lttng_syscall_filter_enable_event_notifier(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KPROBE: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_UPROBE: - ret = 0; - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1559,9 +1592,12 @@ int _lttng_event_notifier_unregister( - ret = lttng_syscall_filter_disable_event_notifier(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1614,8 +1650,10 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event) - lttng_uprobes_destroy_event_private(event_recorder); - break; - -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -1647,9 +1685,12 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event) - lttng_uprobes_destroy_event_notifier_private(event_notifier); - break; - -- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */ -- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */ -- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_KRETPROBE: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_FUNCTION: -+ lttng_fallthrough; -+ case LTTNG_KERNEL_ABI_NOOP: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -2713,7 +2754,8 @@ void lttng_session_sync_event_enablers(struct lttng_kernel_session *session) - int nr_filters = 0; - - switch (event_recorder_priv->parent.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - /* Enable events */ - list_for_each_entry(enabler_ref, -@@ -2807,7 +2849,8 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group - int nr_filters = 0, nr_captures = 0; - - switch (event_notifier_priv->parent.instrumentation) { -- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */ -+ case LTTNG_KERNEL_ABI_TRACEPOINT: -+ lttng_fallthrough; - case LTTNG_KERNEL_ABI_SYSCALL: - /* Enable event_notifiers */ - list_for_each_entry(enabler_ref, -@@ -3877,7 +3920,7 @@ int print_escaped_ctf_string(struct lttng_kernel_session *session, const char *s - if (ret) - goto error; - /* We still print the current char */ -- /* Fallthrough */ -+ lttng_fallthrough; - default: - ret = lttng_metadata_printf(session, "%c", cur); - break; -diff --git a/src/lttng-string-utils.c b/src/lttng-string-utils.c -index d9447903..65946193 100644 ---- a/src/lttng-string-utils.c -+++ b/src/lttng-string-utils.c -@@ -4,6 +4,7 @@ - */ - - #include <linux/types.h> -+#include <wrapper/compiler_attributes.h> - - #include <lttng/string-utils.h> - -@@ -302,7 +303,7 @@ retry: - p = pattern_get_char_at_cb(p_at, - pattern_get_char_at_cb_data); - -- /* Fall-through. */ -+ lttng_fallthrough; - default: - /* - * Default case which will compare the escaped -diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c -index 0fa6a1bf..1d0a5ecb 100644 ---- a/src/probes/lttng-kretprobes.c -+++ b/src/probes/lttng-kretprobes.c -@@ -14,6 +14,7 @@ - #include <lttng/events.h> - #include <lttng/events-internal.h> - #include <ringbuffer/frontend_types.h> -+#include <wrapper/compiler_attributes.h> - #include <wrapper/vmalloc.h> - #include <wrapper/irqflags.h> - #include <lttng/tracer.h> -@@ -61,7 +62,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, - return 0; - break; - } -- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */ -+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } -@@ -90,7 +92,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi, - chan->ops->event_commit(&ctx); - break; - } -- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */ -+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: -+ lttng_fallthrough; - default: - WARN_ON_ONCE(1); - } --- -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/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_2.13.0.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb index 6dfde8dcad..95d5e2d615 100644 --- a/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb +++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb @@ -2,7 +2,7 @@ SECTION = "devel" SUMMARY = "Linux Trace Toolkit KERNEL MODULE" DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules" HOMEPAGE = "https://lttng.org/" -LICENSE = "LGPLv2.1 & GPLv2 & MIT" +LICENSE = "LGPL-2.1-only & GPL-2.0-only & MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4" inherit module @@ -10,13 +10,16 @@ inherit module include lttng-platforms.inc SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch \ - file://0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.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] = "5ebf2b3cd128b3a1c8afaea1e98d5a6f7f0676fd524fcf72361c34d9dc603356" +SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79" export INSTALL_MOD_DIR="kernel/lttng-modules" @@ -37,11 +40,6 @@ python do_package:prepend() { } BBCLASSEXTEND = "devupstream:target" -LIC_FILES_CHKSUM:class-devupstream = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4" -DEFAULT_PREFERENCE:class-devupstream = "-1" -SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13" - -SRCREV:class-devupstream = "c570be0da77e963d77bac099d468bc0cd5f1bd63" -PV:class-devupstream = "2.13.0+git${SRCPV}" -S:class-devupstream = "${WORKDIR}/git" +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-Tests-race-condition-in-test_event_tracker.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-Tests-race-condition-in-test_event_tracker.patch deleted file mode 100644 index 10020e1ecf..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-Tests-race-condition-in-test_event_tracker.patch +++ /dev/null @@ -1,221 +0,0 @@ -From d3392e4850532c02e53e3c3ff1cc27df7e51c941 Mon Sep 17 00:00:00 2001 -From: Francis Deslauriers <francis.deslauriers@efficios.com> -Date: Tue, 7 Sep 2021 17:10:31 -0400 -Subject: [PATCH 1/2] Fix: Tests: race condition in test_event_tracker -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Background -========== -The `test_event_tracker` file contains test cases when the event -generating app in executed in two distinct steps. Those two steps are -preparation and execution. - 1. the preparation is the launching the app in the background, and - 2. the execution is actually generating the event that should or - should not be traced depending on the test case. - -This is useful to test the tracker feature since we want to ensure that -already running apps are notified properly when changing their tracking -status. - -Issue -===== -The `test_event_vpid_track_untrack` test case suffers from a race -condition that is easy to reproduce on Yocto. - -The issue is that sometimes events are end up the trace when none is -expected. - -This is due to the absence of synchronization point at the launch of the -app which leads to the app being scheduled in-between the track-untrack -calls leading to events being recorded to the trace. - -It's easy to reproduce this issue on my machine by adding a `sleep 5` -between the track and untrack calls and setting the `NR_USEC_WAIT` -variable to 1. - -Fix -=== -Using the testapp `--sync-before-last-event-touch` flag to make the app -create a file when all but the last event are executed. We then have the -app wait until we create a file (`--sync-before-last-event`) to generate -that last event. This way, we are sure no event will be generated when -running the track and untrack commands. - -Notes -===== -- This issue affects other test cases in this file. -- This commit fixes a typo in the test header. -- This commit adds `diag` calls to help tracking to what test the output - relates to when reading the log. - -Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com> -Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> -Change-Id: Ia2b68128dc9a805526f9748f31ec2c2d95566f31 -Upstream-Status: Backport -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - .../tools/tracker/test_event_tracker | 56 ++++++++++++++----- - 1 file changed, 42 insertions(+), 14 deletions(-) - -diff --git a/tests/regression/tools/tracker/test_event_tracker b/tests/regression/tools/tracker/test_event_tracker -index feb3787..cc0f698 100755 ---- a/tests/regression/tools/tracker/test_event_tracker -+++ b/tests/regression/tools/tracker/test_event_tracker -@@ -5,7 +5,7 @@ - # - # SPDX-License-Identifier: GPL-2.0-only - --TEST_DESC="LTTng - Event traker test" -+TEST_DESC="LTTng - Event tracker test" - - CURDIR=$(dirname "$0")/ - TESTDIR="$CURDIR/../../.." -@@ -15,7 +15,7 @@ TESTAPP_KERNEL_NAME="gen-kernel-test-events" - TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" - TESTAPP_KERNEL_BIN="$TESTAPP_PATH/$TESTAPP_KERNEL_NAME/$TESTAPP_KERNEL_NAME" - SESSION_NAME="tracker" --NR_ITER=100 -+NR_ITER=1 - NUM_GLOBAL_TESTS=2 - NUM_UST_TESTS=283 - NUM_KERNEL_TESTS=462 -@@ -30,27 +30,41 @@ SCRIPT_GROUPNAME="$(id -gn)" - - CHILD_PID=-1 - WAIT_PATH= --AFTER_FIRST_PATH= --BEFORE_LAST_PATH= -+TOUCH_BEFORE_LAST_PATH= -+SYNC_BEFORE_LAST_PATH= - - source $TESTDIR/utils/utils.sh - -+# Launch the testapp and execute it up until right before the last event. It is -+# useful to do it in two seperate steps in order to test tracking and -+# untracking on an active app. - function prepare_ust_app - { -- AFTER_FIRST_PATH=$(mktemp --tmpdir -u tmp.${FUNCNAME[0]}_sync_after_first.XXXXXX) -- BEFORE_LAST_PATH=$(mktemp --tmpdir -u tmp.${FUNCNAME[0]}_sync_before_last.XXXXXX) -+ TOUCH_BEFORE_LAST_PATH=$(mktemp --tmpdir -u tmp.${FUNCNAME[0]}_touch_before_last.XXXXXX) -+ SYNC_BEFORE_LAST_PATH=$(mktemp --tmpdir -u tmp.${FUNCNAME[0]}_sync_before_last.XXXXXX) -+ -+ $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ -+ --sync-before-last-event-touch "$TOUCH_BEFORE_LAST_PATH" \ -+ --sync-before-last-event "$SYNC_BEFORE_LAST_PATH" & - -- $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT -a "$AFTER_FIRST_PATH" -b "$BEFORE_LAST_PATH" & - CHILD_PID=$! -+ -+ # Wait for the app to execute all the way to right before the last -+ # event. -+ while [ ! -f "${TOUCH_BEFORE_LAST_PATH}" ]; do -+ sleep 0.5 -+ done - } - -+# Generate the last event. - function trace_ust_app - { -- touch "$BEFORE_LAST_PATH" -- wait -+ # Ask the test app to generate the last event. -+ touch "$SYNC_BEFORE_LAST_PATH" -+ wait "$CHILD_PID" - ok $? "Traced application stopped." -- rm "$BEFORE_LAST_PATH" -- rm "$AFTER_FIRST_PATH" -+ rm "$SYNC_BEFORE_LAST_PATH" -+ rm "$TOUCH_BEFORE_LAST_PATH" - } - - function prepare_kernel_app -@@ -64,7 +78,7 @@ function prepare_kernel_app - function trace_kernel_app - { - touch "$WAIT_PATH" -- wait -+ wait "$CHILD_PID" - ok $? "Traced application stopped." - rm "$WAIT_PATH" - } -@@ -78,6 +92,8 @@ function test_event_tracker() - local tracker="$4" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -117,6 +133,8 @@ function test_event_vpid_tracker() - local wildcard="$3" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -160,6 +178,8 @@ function test_event_pid_tracker() - local wildcard="$3" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -203,6 +223,8 @@ function test_event_tracker_fail() - local wildcard="$2" - local tracker="$3" - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -222,6 +244,8 @@ function test_event_track_untrack() - local tracker="$4" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -262,6 +286,8 @@ function test_event_vpid_track_untrack() - local wildcard="$3" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -302,6 +328,8 @@ function test_event_pid_track_untrack() - local wildcard="$3" - local channel='' - -+ diag "${FUNCNAME[0]} $*" -+ - trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" -@@ -336,9 +364,9 @@ function test_event_pid_track_untrack() - - function test_event_ust_vpid_untrack_snapshot() - { -- local trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) -+ diag "${FUNCNAME[0]} $*" - -- diag "Test_event_ust_vpid_untrack_snapshot" -+ local trace_path=$(mktemp --tmpdir -d tmp.${FUNCNAME[0]}_trace_path.XXXXXX) - - create_lttng_session_ok $SESSION_NAME "$trace_path" "--snapshot" - --- -2.20.1 - 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-src-common-correct-header-location.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-src-common-correct-header-location.patch deleted file mode 100644 index 925b51c3ce..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0001-src-common-correct-header-location.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 790ef313364d1f1efb6f283705bb324eea2979ba Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex@linutronix.de> -Date: Sun, 5 Sep 2021 10:13:08 +0200 -Subject: [PATCH] src/common: correct header location - -sys/unistd.h is not guaranteed to exist, and does not with -e.g. musl C library. - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex@linutronix.de> ---- - src/common/kernel-probe.c | 2 +- - src/common/userspace-probe.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/common/kernel-probe.c b/src/common/kernel-probe.c -index 2beb53f..44100bc 100644 ---- a/src/common/kernel-probe.c -+++ b/src/common/kernel-probe.c -@@ -20,7 +20,7 @@ - #include <lttng/kernel-probe.h> - #include <sys/stat.h> - #include <sys/types.h> --#include <sys/unistd.h> -+#include <unistd.h> - - static - int lttng_kernel_probe_location_address_serialize( -diff --git a/src/common/userspace-probe.c b/src/common/userspace-probe.c -index 67b0ee6..66afc6f 100644 ---- a/src/common/userspace-probe.c -+++ b/src/common/userspace-probe.c -@@ -20,7 +20,7 @@ - #include <lttng/userspace-probe-internal.h> - #include <sys/stat.h> - #include <sys/types.h> --#include <sys/unistd.h> -+#include <unistd.h> - - static - int lttng_userspace_probe_location_function_set_binary_fd_handle( 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/0002-Fix-Tests-race-condition-in-test_ns_contexts_change.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-Tests-race-condition-in-test_ns_contexts_change.patch deleted file mode 100644 index a8d983105a..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-Tests-race-condition-in-test_ns_contexts_change.patch +++ /dev/null @@ -1,46 +0,0 @@ -From d284752e616dfc4c9288be3bb21c04ea78cdd967 Mon Sep 17 00:00:00 2001 -From: Francis Deslauriers <francis.deslauriers@efficios.com> -Date: Wed, 8 Sep 2021 10:16:23 -0400 -Subject: [PATCH 2/2] Fix: Tests: race condition in test_ns_contexts_change -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Issue -===== -The test script doesn't wait for the test application to complete before -stopping the tracing session. The race is that depending on the -scheduling the application is not always done generating events when the -session is stopped. - -Fix -=== -Make the test script wait for the termination of the test app before -stopping the session. - -Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com> -Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> -Change-Id: I29d9b41d2a2ed60a6c42020509c2067442ae332c -Upstream-Status: Backport -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - tests/regression/ust/namespaces/test_ns_contexts_change | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/tests/regression/ust/namespaces/test_ns_contexts_change b/tests/regression/ust/namespaces/test_ns_contexts_change -index c0af15e..8a4b62c 100755 ---- a/tests/regression/ust/namespaces/test_ns_contexts_change -+++ b/tests/regression/ust/namespaces/test_ns_contexts_change -@@ -79,6 +79,9 @@ function test_ns() - - touch "$file_sync_before_last" - -+ # Wait for the test app to generate all expected events and exit. -+ wait $app_pid -+ - # stop and destroy - stop_lttng_tracing_ok "$session_name" - destroy_lttng_session_ok "$session_name" --- -2.20.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/disable-tests.patch b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch new file mode 100644 index 0000000000..3a77ea2e43 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch @@ -0,0 +1,34 @@ +Upstream-Status: Inappropriate [need to root cause the test hangs] + +We keep seeing hangs in the tools/notifications tests on x86 and arm for +a variety of distros. Exclude them for now to work out if this is the +only place we see them and give SWAT/triage a break from the stream +of them. + +https://bugzilla.yoctoproject.org/show_bug.cgi?id=14263 + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: lttng-tools-2.13.1/tests/regression/Makefile.am +=================================================================== +--- lttng-tools-2.13.1.orig/tests/regression/Makefile.am ++++ lttng-tools-2.13.1/tests/regression/Makefile.am +@@ -29,18 +29,6 @@ TESTS = tools/base-path/test_ust \ + tools/crash/test_crash \ + tools/regen-metadata/test_ust \ + tools/regen-statedump/test_ust \ +- tools/notification/test_notification_ust_error \ +- tools/notification/test_notification_ust_buffer_usage \ +- tools/notification/test_notification_ust_capture \ +- tools/notification/test_notification_ust_event_rule_condition_exclusion \ +- tools/notification/test_notification_kernel_error \ +- tools/notification/test_notification_kernel_buffer_usage \ +- tools/notification/test_notification_kernel_capture \ +- tools/notification/test_notification_kernel_instrumentation \ +- tools/notification/test_notification_kernel_syscall \ +- tools/notification/test_notification_notifier_discarded_count \ +- tools/notification/test_notification_kernel_userspace_probe \ +- tools/notification/test_notification_multi_app \ + tools/rotation/test_ust \ + tools/rotation/test_kernel \ + tools/rotation/test_save_load_mi \ 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.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb index 1491aff618..174dec036e 100644 --- a/meta/recipes-kernel/lttng/lttng-tools_2.13.0.bb +++ b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb @@ -5,7 +5,7 @@ to extract program execution details from the Linux operating system \ and interpret them." HOMEPAGE = "https://github.com/lttng/lttng-tools" -LICENSE = "GPLv2 & LGPLv2.1" +LICENSE = "GPL-2.0-only & LGPL-2.1-only" LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \ file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \ file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95" @@ -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,13 +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://0001-src-common-correct-header-location.patch \ - file://0001-Fix-Tests-race-condition-in-test_event_tracker.patch \ - file://0002-Fix-Tests-race-condition-in-test_ns_contexts_change.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] = "8dc894f9a7a840e943c1c344345c75f001a9529daa9157f1a0e6175c081c29e6" +SRC_URI[sha256sum] = "ff5f4f00b081dac66092afe8e72b7c790670931cf1c1ee0deaa7f80fbc53883e" inherit autotools ptest pkgconfig useradd python3-dir manpages systemd @@ -86,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" @@ -115,7 +115,7 @@ do_install_ptest () { for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f case $f in - *.so|userspace-probe-elf-binary) + *.so|userspace-probe-elf-*) install -d ${D}${PTEST_PATH}/tests/$d/ ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f # Remove any rpath/runpath to pass QA check. @@ -126,6 +126,7 @@ do_install_ptest () { done chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary + chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so @@ -187,4 +188,10 @@ do_install_ptest () { INHIBIT_PACKAGE_STRIP_FILES = "\ ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \ ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/.libs/userspace-probe-elf-cxx-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/gen-syscall-events \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/.libs/gen-syscall-events \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/gen-syscall-events-callstack \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/.libs/gen-syscall-events-callstack \ " 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 2d61dfa525..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,21 +1,22 @@ -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 Otherwise linking errors are seen on x86-32. -Upstream-Status: Pending +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.0.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb index 7c6a0743e1..dddd3a5004 100644 --- a/meta/recipes-kernel/lttng/lttng-ust_2.13.0.bb +++ b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb @@ -3,7 +3,7 @@ DESCRIPTION = "The LTTng UST 2.x package contains the userspace tracer library t HOMEPAGE = "http://lttng.org/ust" BUGTRACKER = "https://bugs.lttng.org/projects/lttng-ust" -LICENSE = "LGPLv2.1+ & MIT & GPLv2" +LICENSE = "LGPL-2.1-or-later & MIT & GPL-2.0-only" LIC_FILES_CHKSUM = "file://LICENSE;md5=a46577a38ad0c36ff6ff43ccf40c480f" PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ @@ -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] = "54e4c933679cf6a07971dc5861ce57fc4876ab740ab612407b30b5fc85371750" +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 e5a1628898..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 @@ -1,9 +1,9 @@ SUMMARY = "Build tools needed by external modules" HOMEPAGE = "https://www.yoctoproject.org/" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" -inherit kernel-arch +inherit kernel-arch linux-kernel-base inherit pkgconfig PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -13,7 +13,7 @@ S = "${WORKDIR}" do_configure[depends] += "virtual/kernel:do_shared_workdir openssl-native:do_populate_sysroot" do_compile[depends] += "virtual/kernel:do_compile_kernelmodules" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" DEPENDS += "bc-native bison-native" DEPENDS += "gmp-native" @@ -21,13 +21,18 @@ DEPENDS += "gmp-native" EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"" EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}" +KERNEL_LOCALVERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}" +export LOCALVERSION="${KERNEL_LOCALVERSION}" + # Build some host tools under work-shared. CC, LD, and AR are probably # not used, but this is the historical way of invoking "make scripts". # do_configure() { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS for t in prepare scripts_basic scripts; do - oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ + oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t done } diff --git a/meta/recipes-kernel/modutils-initscripts/files/PD.patch b/meta/recipes-kernel/modutils-initscripts/files/PD.patch deleted file mode 100644 index 21ac49cbd8..0000000000 --- a/meta/recipes-kernel/modutils-initscripts/files/PD.patch +++ /dev/null @@ -1,8 +0,0 @@ -Upstream-Status: Inappropriate [licensing] - -Index: modutils-initscripts-1.0/LICENSE -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ modutils-initscripts-1.0/LICENSE 2010-12-06 14:26:03.570339002 -0800 -@@ -0,0 +1 @@ -+Public Domain diff --git a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh index 67e1dcd990..e9aaa66cb7 100755 --- a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh +++ b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh @@ -1,4 +1,8 @@ #!/bin/sh +# +# SPDX-License-Identifier: MIT +# + ### BEGIN INIT INFO # Provides: module-init-tools # Required-Start: diff --git a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb index aa71309126..b630a402ff 100644 --- a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb +++ b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb @@ -1,11 +1,9 @@ SUMMARY = "Initscript for auto-loading kernel modules on boot" SECTION = "base" -LICENSE = "PD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=7bf87fc37976e93ec66ad84fac58c098" -SRC_URI = "file://modutils.sh \ - file://PD.patch" +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 f473272096..11fa917649 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -7,31 +7,37 @@ and software features (software counters, tracepoints) \ as well." HOMEPAGE = "https://perf.wiki.kernel.org/index.php/Main_Page" -LICENSE = "GPLv2" +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" -PACKAGECONFIG:remove:riscv64 = "libunwind" PACKAGECONFIG:remove:riscv32 = "libunwind" DEPENDS = " \ @@ -48,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 @@ -58,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 @@ -70,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} \ @@ -81,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} \ ' @@ -102,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 @@ -112,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 \ @@ -121,18 +142,26 @@ PERF_SRC ?= "Makefile \ tools/perf \ tools/scripts \ scripts/ \ + arch/arm64/tools \ + ${PERF_BPF_EVENT_SRC} \ arch/${ARCH}/Makefile \ " PERF_EXTRA_LDFLAGS = "" -# MIPS N32 +# MIPS N32/N64 PERF_EXTRA_LDFLAGS:mipsarchn32eb = "-m elf32btsmipn32" PERF_EXTRA_LDFLAGS:mipsarchn32el = "-m elf32ltsmipn32" +PERF_EXTRA_LDFLAGS:mipsarchn64eb = "-m elf64btsmip" +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 } @@ -141,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 } @@ -157,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: @@ -202,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' \ @@ -226,6 +263,15 @@ do_configure:prepend () { # reproducible. sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO))),g' \ ${S}/tools/perf/Makefile.config + # The same line is in older releases, but looking explicitly for Python 2 + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON2)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON2))),g' \ + ${S}/tools/perf/Makefile.config + + # likewise with this substitution. Kernels with commit 18f2967418d031a39 + # [perf tools: Use Python devtools for version autodetection rather than runtime] + # need this substitution for reproducibility. + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO))),$(notdir $(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO)))),g' \ + ${S}/tools/perf/Makefile.config # The following line: # srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))), @@ -234,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 @@ -259,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 @@ -266,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 @@ -282,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 @@ -324,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 = " \ @@ -339,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 5ddf0f144f..0a87e553ab 100755 --- a/meta/recipes-kernel/perf/perf/sort-pmuevents.py +++ b/meta/recipes-kernel/perf/perf/sort-pmuevents.py @@ -33,34 +33,40 @@ if os.path.exists(outfile): with open(infile, 'r') as file: data = file.read() -preamble_regex = re.compile( '^(.*?)^struct', re.MULTILINE | re.DOTALL ) +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.*?(\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. entry_dict = {} for struct in re.findall( struct_block_regex, data ): - # print( "struct: %s %s" % (struct[0],struct[1]) ) - entry_dict[struct[1]] = {} - entry_dict[struct[1]]['type'] = struct[0] - entry_dict[struct[1]]['fields'] = {} - for entry in re.findall( field_regex, struct[2] ): + # print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) ) + entry_dict[struct[2]] = {} + entry_dict[struct[2]]['type_prefix'] = struct[0] + entry_dict[struct[2]]['type'] = struct[1] + entry_dict[struct[2]]['fields'] = {} + for entry in re.findall( field_regex, struct[3] ): #print( " entry: %s" % entry ) cpuid = re.search( cpuid_regex, entry ) if cpuid: #print( " cpuid found: %s" % cpuid.group(1) ) - entry_dict[struct[1]]['fields'][cpuid.group(1)] = entry - + entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry + name = re.search( name_regex, entry ) if name: #print( " name found: %s" % name.group(1) ) - entry_dict[struct[1]]['fields'][name.group(1)] = entry - + entry_dict[struct[2]]['fields'][name.group(1)] = entry + + # unmatched entries are most likely array terminators and + # should end up as the last element in the sorted list, which + # is achieved by using '0' as the key + if not cpuid and not name: + entry_dict[struct[2]]['fields']['0'] = entry # created ordered dictionaries from the captured values. These are ordered by # a sorted() iteration of the keys. We don't care about the order we read @@ -72,6 +78,7 @@ for struct in re.findall( struct_block_regex, data ): entry_dict_sorted = OrderedDict() for i in sorted(entry_dict.keys()): entry_dict_sorted[i] = {} + entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix'] entry_dict_sorted[i]['type'] = entry_dict[i]['type'] entry_dict_sorted[i]['fields'] = {} for f in sorted(entry_dict[i]['fields'].keys()): @@ -83,7 +90,7 @@ outf = open( outfile, 'w' ) print( preamble.group(1) ) outf.write( preamble.group(1) ) for d in entry_dict_sorted: - outf.write( "struct %s %s[] = {\n" % (entry_dict_sorted[d]['type'],d) ) + outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) ) for f in entry_dict_sorted[d]['fields']: outf.write( entry_dict_sorted[d]['fields'][f] + '\n' ) diff --git a/meta/recipes-kernel/powertop/powertop_2.14.bb b/meta/recipes-kernel/powertop/powertop_2.15.bb index c176cba388..65c6d0fcd3 100644 --- a/meta/recipes-kernel/powertop/powertop_2.14.bb +++ b/meta/recipes-kernel/powertop/powertop_2.15.bb @@ -2,14 +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" -LICENSE = "GPLv2" +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 \ - file://0001-wakeup_xxx.h-include-limits.h.patch \ -" -SRCREV = "52f022f9bbe6e060fba11701d657a8d9762702ba" +SRC_URI = "git://github.com/fenrus75/powertop;protocol=https;branch=master \ + file://0001-wakeup_xxx.h-include-limits.h.patch \ + " +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-address-ncurses-6.3-failures.patch b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch new file mode 100644 index 0000000000..1decf21593 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch @@ -0,0 +1,61 @@ +From 191f528da19193d713d94ee252e2485efd9af4d3 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Mon, 25 Oct 2021 17:59:24 +0200 +Subject: [PATCH] staprun: address ncurses 6.3 failures + +Upstream-Status: Submitted [by email to smakarov@redhat.com,systemtap@sourceware.org] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + staprun/monitor.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/staprun/monitor.c b/staprun/monitor.c +index 478634c09..f4fbfd686 100644 +--- a/staprun/monitor.c ++++ b/staprun/monitor.c +@@ -448,12 +448,12 @@ void monitor_render(void) + if (active_window == 0) + wattron(status, A_BOLD); + wprintw(status, "\n%*s\t%*s\t%*s\t%*s\t%*s\t%*s\t%s\n", +- width[p_index], HIGHLIGHT("index", p_index, comp_fn_index), +- width[p_state], HIGHLIGHT("state", p_state, comp_fn_index), +- width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index), +- width[p_min], HIGHLIGHT("min", p_min, comp_fn_index), +- width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index), +- width[p_max], HIGHLIGHT("max", p_max, comp_fn_index), ++ (int)width[p_index], HIGHLIGHT("index", p_index, comp_fn_index), ++ (int)width[p_state], HIGHLIGHT("state", p_state, comp_fn_index), ++ (int)width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index), ++ (int)width[p_min], HIGHLIGHT("min", p_min, comp_fn_index), ++ (int)width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index), ++ (int)width[p_max], HIGHLIGHT("max", p_max, comp_fn_index), + HIGHLIGHT("name", p_name, comp_fn_index)); + if (active_window == 0) + wattroff(status, A_BOLD); +@@ -466,17 +466,17 @@ void monitor_render(void) + json_object *probe, *field; + probe = json_object_array_get_idx(jso_probe_list, i); + json_object_object_get_ex(probe, "index", &field); +- wprintw(status, "%*s\t", width[p_index], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_index], json_object_get_string(field)); + json_object_object_get_ex(probe, "state", &field); +- wprintw(status, "%*s\t", width[p_state], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_state], json_object_get_string(field)); + json_object_object_get_ex(probe, "hits", &field); +- wprintw(status, "%*s\t", width[p_hits], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_hits], json_object_get_string(field)); + json_object_object_get_ex(probe, "min", &field); +- wprintw(status, "%*s\t", width[p_min], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_min], json_object_get_string(field)); + json_object_object_get_ex(probe, "avg", &field); +- wprintw(status, "%*s\t", width[p_avg], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_avg], json_object_get_string(field)); + json_object_object_get_ex(probe, "max", &field); +- wprintw(status, "%*s\t", width[p_max], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_max], json_object_get_string(field)); + getyx(status, discard, cur_x); + json_object_object_get_ex(probe, "name", &field); + wprintw(status, "%.*s", max_cols-cur_x-1, json_object_get_string(field)); +-- +2.20.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 8f0de5f0f0..68f5c76428 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap_git.bb @@ -6,7 +6,10 @@ HOMEPAGE = "https://sourceware.org/systemtap/" require systemtap_git.inc -SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch" +SRC_URI += " \ + file://0001-improve-reproducibility-for-c-compiling.patch \ + file://0001-staprun-address-ncurses-6.3-failures.patch \ + " DEPENDS = "elfutils" @@ -21,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', 'distutils3-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 b6ff98f0f2..c574bcb2ba 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.inc +++ b/meta/recipes-kernel/systemtap/systemtap_git.inc @@ -1,15 +1,20 @@ -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRCREV = "7f6992539fb22c93c21ac30c94508bf655d496a7" -PV = "4.5" +SRCREV = "e72dc118e563c645d93a1a2d771e8d90e8fec1ae" +PV = "5.0" -SRC_URI = "git://sourceware.org/git/systemtap.git \ +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).*-linux' +COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips|riscv64).*-linux' COMPATIBLE_HOST:libc-musl = 'null' S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.07.14.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb index a396f15c55..8fde236ab4 100644 --- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.07.14.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] = "2e2dd216a5f1a310b849774af63e6309d94c2207c34771a534c47ae18b162742" +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 |